212 {
213
214 MsgStream log(
msgSvc(),
"ExtTrackCnv" );
215 log << MSG::DEBUG << "ExtTrackCnv::DataObjectToTObject" << endmsg;
216 StatusCode sc = StatusCode::SUCCESS;
217
219 if ( !extTrackColTds )
220 {
221 log << MSG::ERROR << "Could not downcast to DstExtTrackCol" << endmsg;
222 return StatusCode::FAILURE;
223 }
224
225 DataObject* evt;
227 if ( evt == NULL )
228 {
229 log << MSG::ERROR << "Could not get ReconEvent in TDS " << endmsg;
230 return StatusCode::FAILURE;
231 }
232
233 DstEvent* devtTds = dynamic_cast<DstEvent*>( evt );
234 if ( !devtTds )
235 { log << MSG::ERROR << "ExtTrackCnv:Could not downcast to TDS Dst Event" << endmsg; }
236 IOpaqueAddress* addr;
237
238 m_cnvSvc->getDstCnv()->createRep( evt, addr );
239 TDstEvent* recEvt =
m_cnvSvc->getDstCnv()->getWriteObject();
240
242
243 if ( !m_extTrackCol ) return sc;
244
246
247 DstExtTrackCol::const_iterator extTrackTds;
248
249 for ( extTrackTds = extTrackColTds->begin(); extTrackTds != extTrackColTds->end();
250 extTrackTds++ )
251 {
252
253 Int_t trackId = ( *extTrackTds )->GetTrackId();
254
255 Double_t p1x = ( *extTrackTds )->tof1Position().x();
256 Double_t p1y = ( *extTrackTds )->tof1Position().y();
257 Double_t p1z = ( *extTrackTds )->tof1Position().z();
258 Double_t m1x = ( *extTrackTds )->tof1Momentum().x();
259 Double_t m1y = ( *extTrackTds )->tof1Momentum().y();
260 Double_t m1z = ( *extTrackTds )->tof1Momentum().z();
261
262 TString v1s = ( *extTrackTds )->tof1VolumeName();
263 Int_t v1n = ( *extTrackTds )->tof1VolumeNumber();
264 Double_t tof1 = ( *extTrackTds )->tof1();
265 Double_t tof1p = ( *extTrackTds )->tof1Path();
266 Double_t z1 = ( *extTrackTds )->tof1PosSigmaAlongZ();
267 Double_t t1 = ( *extTrackTds )->tof1PosSigmaAlongT();
268 Double_t x1 = ( *extTrackTds )->tof1PosSigmaAlongX();
269 Double_t y1 = ( *extTrackTds )->tof1PosSigmaAlongY();
270 Double_t e1m[6][6];
271 HepSymMatrix e1mTds = ( *extTrackTds )->tof1ErrorMatrix();
272 for ( int i = 0; i < 6; i++ )
273 for ( int j = 0; j < 6; j++ ) e1m[i][j] = e1mTds[i][j];
274
275
276 Double_t p2x = ( *extTrackTds )->tof2Position().x();
277 Double_t p2y = ( *extTrackTds )->tof2Position().y();
278 Double_t p2z = ( *extTrackTds )->tof2Position().z();
279 Double_t m2x = ( *extTrackTds )->tof2Momentum().x();
280 Double_t m2y = ( *extTrackTds )->tof2Momentum().y();
281 Double_t m2z = ( *extTrackTds )->tof2Momentum().z();
282
283 TString v2s = ( *extTrackTds )->tof2VolumeName();
284 Int_t v2n = ( *extTrackTds )->tof2VolumeNumber();
285 Double_t tof2 = ( *extTrackTds )->tof2();
286 Double_t tof2p = ( *extTrackTds )->tof2Path();
287 Double_t z2 = ( *extTrackTds )->tof2PosSigmaAlongZ();
288 Double_t t2 = ( *extTrackTds )->tof2PosSigmaAlongT();
289 Double_t x2 = ( *extTrackTds )->tof2PosSigmaAlongX();
290 Double_t y2 = ( *extTrackTds )->tof2PosSigmaAlongY();
291 Double_t e2m[6][6];
292 HepSymMatrix e2mTds = ( *extTrackTds )->tof2ErrorMatrix();
293 for ( int i = 0; i < 6; i++ )
294 for ( int j = 0; j < 6; j++ ) e2m[i][j] = e2mTds[i][j];
295
296 Double_t pEx = ( *extTrackTds )->emcPosition().x();
297 Double_t pEy = ( *extTrackTds )->emcPosition().y();
298 Double_t pEz = ( *extTrackTds )->emcPosition().z();
299 Double_t mEx = ( *extTrackTds )->emcMomentum().x();
300 Double_t mEy = ( *extTrackTds )->emcMomentum().y();
301 Double_t mEz = ( *extTrackTds )->emcMomentum().z();
302
303 TString vEs = ( *extTrackTds )->emcVolumeName();
304 Int_t vEn = ( *extTrackTds )->emcVolumeNumber();
305
306 Double_t theta = ( *extTrackTds )->emcPosSigmaAlongTheta();
307 Double_t phi = ( *extTrackTds )->emcPosSigmaAlongPhi();
308
309 Double_t eEm[6][6];
310 HepSymMatrix eEmTds = ( *extTrackTds )->emcErrorMatrix();
311 for ( int i = 0; i < 6; i++ )
312 for ( int j = 0; j < 6; j++ ) eEm[i][j] = eEmTds[i][j];
313 Double_t emcPath = ( *extTrackTds )->emcPath();
314
315
316 Double_t pMx = ( *extTrackTds )->mucPosition().x();
317 Double_t pMy = ( *extTrackTds )->mucPosition().y();
318 Double_t pMz = ( *extTrackTds )->mucPosition().z();
319 Double_t mMx = ( *extTrackTds )->mucMomentum().x();
320 Double_t mMy = ( *extTrackTds )->mucMomentum().y();
321 Double_t mMz = ( *extTrackTds )->mucMomentum().z();
322
323 TString vMs = ( *extTrackTds )->mucVolumeName();
324 Int_t vMn = ( *extTrackTds )->mucVolumeNumber();
325
326 Double_t zM = ( *extTrackTds )->mucPosSigmaAlongZ();
327 Double_t tM = ( *extTrackTds )->mucPosSigmaAlongT();
328 Double_t xM = ( *extTrackTds )->mucPosSigmaAlongX();
329 Double_t yM = ( *extTrackTds )->mucPosSigmaAlongY();
330
331 Double_t eMm[6][6];
332 HepSymMatrix eMmTds = ( *extTrackTds )->mucErrorMatrix();
333 for ( int i = 0; i < 6; i++ )
334 for ( int j = 0; j < 6; j++ ) eMm[i][j] = eMmTds[i][j];
335
336
337
338
339
340 TExtTrack* extTrackRoot = new TExtTrack();
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
370
377
380
383
388
390
397
400
403
408
410
417
420
423
426
433
436
441
443
445 }
446
447 return StatusCode::SUCCESS;
448}
ObjectVector< DstExtTrack > DstExtTrackCol
IDataProviderSvc * m_eds
pointer to eventdataservice
void addExtTrack(TExtTrack *Track)
Add a ExtTrack into the Ext Data collection.
void clearExtTrackCol()
clear the whole array
const TObjArray * getExtTrackCol() const
retrieve the whole TObjArray of Ext Data
void SetTof2MomentumY(const Double_t Tof2MomentumY)
void SetTof2(const Double_t Tof2)
void SetTof1PosSigmaAlongZ(const Double_t Tof1PosSigmaAlongZ)
void SetTof1PosSigmaAlongX(const Double_t Tof1PosSigmaAlongX)
void SetTof2MomentumX(const Double_t Tof2MomentumX)
void SetEmcMomentumY(const Double_t EmcMomentumY)
void SetMucMomentumY(const Double_t MucMomentumY)
void SetMucVolumeName(const TString MucVolumeName)
void SetTof1MomentumX(const Double_t Tof1MomentumX)
void SetEmcVolumeNumber(const Int_t EmcVolumeNumber)
void SetTof1VolumeNumber(const Int_t Tof1VolumeNumber)
void SetTof1PositionY(const Double_t Tof1PositionY)
void SetTof1PosSigmaAlongY(const Double_t Tof1PosSigmaAlongY)
void SetEmcErrorMatrix(const Double_t EmcErrorMatrix[6][6])
void SetEmcPositionX(const Double_t EmcPositionX)
void SetMucVolumeNumber(const Int_t MucVolumeNumber)
void SetMucErrorMatrix(const Double_t MucErrorMatrix[6][6])
void SetTof1PosSigmaAlongT(const Double_t Tof1PosSigmaAlongT)
void SetMucPosSigmaAlongX(const Double_t MucPosSigmaAlongX)
void SetEmcMomentumZ(const Double_t EmcMomentumZ)
void SetTof1Path(const Double_t Tof1Path)
void SetEmcMomentumX(const Double_t EmcMomentumX)
void SetTof2VolumeName(const TString Tof2VolumeName)
void SetTof1(const Double_t Tof1)
void SetTof2PosSigmaAlongY(const Double_t Tof2PosSigmaAlongY)
void SetMucPosSigmaAlongY(const Double_t MucPosSigmaAlongY)
void SetTof2ErrorMatrix(const Double_t Tof2ErrorMatrix[6][6])
void SetMucPositionX(const Double_t MucPositionX)
void SetTof2Path(const Double_t Tof2Path)
void SetTof2PosSigmaAlongZ(const Double_t Tof2PosSigmaAlongZ)
void SetMucPosSigmaAlongT(const Double_t MucPosSigmaAlongT)
void SetMucMomentumZ(const Double_t MucMomentumZ)
void SetTof1PositionZ(const Double_t Tof1PositionZ)
void SetMucPosSigmaAlongZ(const Double_t MucPosSigmaAlongZ)
void SetTof2PosSigmaAlongX(const Double_t Tof2PosSigmaAlongX)
void SetTrackId(const Int_t trackId)
void SetEmcPositionZ(const Double_t EmcPositionZ)
void SetTof2PositionZ(const Double_t Tof2PositionZ)
void SetTof1PositionX(const Double_t Tof1PositionX)
void SetTof2PosSigmaAlongT(const Double_t Tof2PosSigmaAlongT)
void SetTof2VolumeNumber(const Int_t Tof2VolumeNumber)
void SetEmcVolumeName(const TString EmcVolumeName)
void SetTof1MomentumY(const Double_t Tof1MomentumY)
void SetTof2PositionY(const Double_t Tof2PositionY)
void SetMucMomentumX(const Double_t MucMomentumX)
void SetMucPositionZ(const Double_t MucPositionZ)
void SetEmcPath(Double_t path)
void SetTof1ErrorMatrix(const Double_t Tof1ErrorMatrix[6][6])
void SetTof2MomentumZ(const Double_t Tof2MomentumZ)
void SetTof1MomentumZ(const Double_t Tof1MomentumZ)
void SetEmcPosSigmaAlongTheta(const Double_t EmcPosSigmaAlongTheta)
void SetTof2PositionX(const Double_t Tof2PositionX)
void SetTof1VolumeName(const TString Tof1VolumeName)
void SetEmcPositionY(const Double_t EmcPositionY)
void SetMucPositionY(const Double_t MucPositionY)
void SetEmcPosSigmaAlongPhi(const Double_t EmcPosSigmaAlongPhi)
_EXTERN_ std::string Event