219 {
220
221 MsgStream log(
msgSvc(),
"RecExtTrackCnv" );
222 log << MSG::DEBUG << "RecExtTrackCnv::DataObjectToTObject" << endmsg;
223 StatusCode sc = StatusCode::SUCCESS;
224
226 if ( !extTrackColTds )
227 {
228 log << MSG::ERROR << "Could not downcast to RecExtTrackCol" << endmsg;
229 return StatusCode::FAILURE;
230 }
231
232 DataObject* evt;
234 if ( evt == NULL )
235 {
236 log << MSG::ERROR << "Could not get ReconEvent in TDS " << endmsg;
237 return StatusCode::FAILURE;
238 }
239
240 ReconEvent* devtTds = dynamic_cast<ReconEvent*>( evt );
241 if ( !devtTds )
242 { log << MSG::ERROR << "RecExtTrackCnv:Could not downcast to TDS Rec Event" << endmsg; }
243 IOpaqueAddress* addr;
244
245 m_cnvSvc->getRecTrackCnv()->createRep( evt, addr );
246 TRecTrackEvent* recEvt =
m_cnvSvc->getRecTrackCnv()->getWriteObject();
247
249
250 if ( !m_extTrackCol ) return sc;
251
253
254 RecExtTrackCol::const_iterator extTrackTds;
255
256 for ( extTrackTds = extTrackColTds->begin(); extTrackTds != extTrackColTds->end();
257 extTrackTds++ )
258 {
259
260 Int_t trackId = ( *extTrackTds )->GetTrackId();
261 TRecExtTrack* extTrackRoot = new TRecExtTrack;
262
264 for ( int iPart = 0; iPart < 5; iPart++ )
265 {
266
267 Double_t p1x = ( *extTrackTds )->tof1Position( iPart ).x();
268 Double_t p1y = ( *extTrackTds )->tof1Position( iPart ).y();
269 Double_t p1z = ( *extTrackTds )->tof1Position( iPart ).z();
270 Double_t m1x = ( *extTrackTds )->tof1Momentum( iPart ).x();
271 Double_t m1y = ( *extTrackTds )->tof1Momentum( iPart ).y();
272 Double_t m1z = ( *extTrackTds )->tof1Momentum( iPart ).z();
273
274 TString v1s = ( *extTrackTds )->tof1VolumeName( iPart );
275 Int_t v1n = ( *extTrackTds )->tof1VolumeNumber( iPart );
276 Double_t tof1 = ( *extTrackTds )->tof1( iPart );
277 Double_t tof1p = ( *extTrackTds )->tof1Path( iPart );
278 Double_t z1 = ( *extTrackTds )->tof1PosSigmaAlongZ( iPart );
279 Double_t t1 = ( *extTrackTds )->tof1PosSigmaAlongT( iPart );
280 Double_t x1 = ( *extTrackTds )->tof1PosSigmaAlongX( iPart );
281 Double_t y1 = ( *extTrackTds )->tof1PosSigmaAlongY( iPart );
282 Double_t e1m[6][6];
283 HepSymMatrix e1mTds = ( *extTrackTds )->tof1ErrorMatrix( iPart );
284 for ( int i = 0; i < 6; i++ )
285 for ( int j = 0; j < 6; j++ ) e1m[i][j] = e1mTds[i][j];
286
287
288 Double_t p2x = ( *extTrackTds )->tof2Position( iPart ).x();
289 Double_t p2y = ( *extTrackTds )->tof2Position( iPart ).y();
290 Double_t p2z = ( *extTrackTds )->tof2Position( iPart ).z();
291 Double_t m2x = ( *extTrackTds )->tof2Momentum( iPart ).x();
292 Double_t m2y = ( *extTrackTds )->tof2Momentum( iPart ).y();
293 Double_t m2z = ( *extTrackTds )->tof2Momentum( iPart ).z();
294
295 TString v2s = ( *extTrackTds )->tof2VolumeName( iPart );
296 Int_t v2n = ( *extTrackTds )->tof2VolumeNumber( iPart );
297 Double_t tof2 = ( *extTrackTds )->tof2( iPart );
298 Double_t tof2p = ( *extTrackTds )->tof2Path( iPart );
299 Double_t z2 = ( *extTrackTds )->tof2PosSigmaAlongZ( iPart );
300 Double_t t2 = ( *extTrackTds )->tof2PosSigmaAlongT( iPart );
301 Double_t x2 = ( *extTrackTds )->tof2PosSigmaAlongX( iPart );
302 Double_t y2 = ( *extTrackTds )->tof2PosSigmaAlongY( iPart );
303 Double_t e2m[6][6];
304 HepSymMatrix e2mTds = ( *extTrackTds )->tof2ErrorMatrix( iPart );
305 for ( int i = 0; i < 6; i++ )
306 for ( int j = 0; j < 6; j++ ) e2m[i][j] = e2mTds[i][j];
307
308 Double_t pEx = ( *extTrackTds )->emcPosition( iPart ).x();
309 Double_t pEy = ( *extTrackTds )->emcPosition( iPart ).y();
310 Double_t pEz = ( *extTrackTds )->emcPosition( iPart ).z();
311 Double_t mEx = ( *extTrackTds )->emcMomentum( iPart ).x();
312 Double_t mEy = ( *extTrackTds )->emcMomentum( iPart ).y();
313 Double_t mEz = ( *extTrackTds )->emcMomentum( iPart ).z();
314
315 TString vEs = ( *extTrackTds )->emcVolumeName( iPart );
316 Int_t vEn = ( *extTrackTds )->emcVolumeNumber( iPart );
317
318 Double_t theta = ( *extTrackTds )->emcPosSigmaAlongTheta( iPart );
319 Double_t phi = ( *extTrackTds )->emcPosSigmaAlongPhi( iPart );
320
321 Double_t eEm[6][6];
322 HepSymMatrix eEmTds = ( *extTrackTds )->emcErrorMatrix( iPart );
323 for ( int i = 0; i < 6; i++ )
324 for ( int j = 0; j < 6; j++ ) eEm[i][j] = eEmTds[i][j];
325 Double_t emcPath = ( *extTrackTds )->emcPath( iPart );
326
327
328 Double_t pMx = ( *extTrackTds )->mucPosition( iPart ).x();
329 Double_t pMy = ( *extTrackTds )->mucPosition( iPart ).y();
330 Double_t pMz = ( *extTrackTds )->mucPosition( iPart ).z();
331 Double_t mMx = ( *extTrackTds )->mucMomentum( iPart ).x();
332 Double_t mMy = ( *extTrackTds )->mucMomentum( iPart ).y();
333 Double_t mMz = ( *extTrackTds )->mucMomentum( iPart ).z();
334
335 TString vMs = ( *extTrackTds )->mucVolumeName( iPart );
336 Int_t vMn = ( *extTrackTds )->mucVolumeNumber( iPart );
337
338 Double_t zM = ( *extTrackTds )->mucPosSigmaAlongZ( iPart );
339 Double_t tM = ( *extTrackTds )->mucPosSigmaAlongT( iPart );
340 Double_t xM = ( *extTrackTds )->mucPosSigmaAlongX( iPart );
341 Double_t yM = ( *extTrackTds )->mucPosSigmaAlongY( iPart );
342
343 Double_t eMm[6][6];
344 HepSymMatrix eMmTds = ( *extTrackTds )->mucErrorMatrix( iPart );
345 for ( int i = 0; i < 6; i++ )
346 for ( int j = 0; j < 6; j++ ) eMm[i][j] = eMmTds[i][j];
347
348
349 ExtMucHitVec vecHit = ( *extTrackTds )->GetExtMucHitVec( iPart );
350 Int_t size = vecHit.size();
351
352
353
354
355
356
357 extTrackRoot->
SetSize( size, iPart );
358 for ( int i = 0; i < size; i++ )
359 {
360 Double_t px = vecHit[i].GetPosition().x();
361 Double_t py = vecHit[i].GetPosition().y();
362 Double_t pz = vecHit[i].GetPosition().z();
363 Double_t mx = vecHit[i].GetMomentum().x();
364 Double_t my = vecHit[i].GetMomentum().y();
365 Double_t mz = vecHit[i].GetMomentum().z();
366 TString vs = vecHit[i].GetVolumeName();
367 Int_t vn = vecHit[i].GetVolumeNumber();
368 Double_t z = vecHit[i].GetPosSigmaAlongZ();
369 Double_t
t = vecHit[i].GetPosSigmaAlongT();
370 Double_t
x = vecHit[i].GetPosSigmaAlongX();
371 Double_t y = vecHit[i].GetPosSigmaAlongY();
372 Double_t m[6][6];
373 HepSymMatrix mTds = vecHit[i].GetErrorMatrix();
374 for ( int j = 0; j < 6; j++ )
375 for ( int k = 0; k < 6; k++ ) m[j][k] = mTds[j][k];
376
377 extTrackRoot->
SetExtMucHit( px, py, pz, mx, my, mz, vs, vn, z,
t,
x, y, m, iPart );
378 }
379
380
387
390
391 extTrackRoot->
SetTof1( tof1, iPart );
393
398
400
407
410
411 extTrackRoot->
SetTof2( tof2, iPart );
413
418
420
427
430
433
436
443
446
451
453 }
455 }
456
457 return StatusCode::SUCCESS;
458}
vector< ExtMucHit > ExtMucHitVec
ObjectVector< RecExtTrack > RecExtTrackCol
IDataProviderSvc * m_eds
pointer to eventdataservice
void SetTof2VolumeName(const TString Tof2VolumeName, const Int_t i=2)
void SetTof1VolumeNumber(const Int_t Tof1VolumeNumber, const Int_t i=2)
void SetTof2PosSigmaAlongZ(const Double_t Tof2PosSigmaAlongZ, const Int_t i=2)
void SetTof1MomentumZ(const Double_t Tof1MomentumZ, const Int_t i=2)
void SetExtMucHit(Double_t PositionX, Double_t PositionY, Double_t PositionZ, Double_t MomentumX, Double_t MomentumY, Double_t MomentumZ, TString VolumeName, Int_t VolumeNumber, Double_t PosSigmaAlongZ, Double_t PosSigmaAlongT, Double_t PosSigmaAlongX, Double_t PosSigmaAlongY, Double_t ErrorMatrix[6][6], const Int_t k=2)
void SetTof2(const Double_t Tof2, const Int_t i=2)
void SetSize(Int_t size, const Int_t i=2)
void SetEmcVolumeNumber(const Int_t EmcVolumeNumber, const Int_t i=2)
void SetTof1Path(const Double_t Tof1Path, const Int_t i=2)
void SetTof2PosSigmaAlongX(const Double_t Tof2PosSigmaAlongX, const Int_t i=2)
void SetTof1PosSigmaAlongY(const Double_t Tof1PosSigmaAlongY, const Int_t i=2)
void SetEmcMomentumX(const Double_t EmcMomentumX, const Int_t i=2)
void SetTof2MomentumY(const Double_t Tof2MomentumY, const Int_t i=2)
void SetMucPositionZ(const Double_t MucPositionZ, const Int_t i=2)
void SetTof2MomentumX(const Double_t Tof2MomentumX, const Int_t i=2)
void SetMucPositionX(const Double_t MucPositionX, const Int_t i=2)
void SetMucPosSigmaAlongX(const Double_t MucPosSigmaAlongX, const Int_t i=2)
void SetMucVolumeName(const TString MucVolumeName, const Int_t i=2)
void SetTof2PosSigmaAlongY(const Double_t Tof2PosSigmaAlongY, const Int_t i=2)
void SetTof1MomentumX(const Double_t Tof1MomentumX, const Int_t i=2)
void SetTof1PositionZ(const Double_t Tof1PositionZ, const Int_t i=2)
void SetMucPosSigmaAlongY(const Double_t MucPosSigmaAlongY, const Int_t i=2)
void SetEmcMomentumY(const Double_t EmcMomentumY, const Int_t i=2)
void SetTof2ErrorMatrix(const Double_t Tof2ErrorMatrix[6][6], const Int_t k=2)
void SetTof2Path(const Double_t Tof2Path, const Int_t i=2)
void SetMucMomentumY(const Double_t MucMomentumY, const Int_t i=2)
void SetMucPosSigmaAlongT(const Double_t MucPosSigmaAlongT, const Int_t i=2)
void SetTof1(const Double_t Tof1, const Int_t i=2)
void SetMucMomentumZ(const Double_t MucMomentumZ, const Int_t i=2)
void SetEmcErrorMatrix(const Double_t EmcErrorMatrix[6][6], const Int_t k=2)
void SetEmcMomentumZ(const Double_t EmcMomentumZ, const Int_t i=2)
void SetTof1ErrorMatrix(const Double_t Tof1ErrorMatrix[6][6], const Int_t k=2)
void SetTof1PosSigmaAlongX(const Double_t Tof1PosSigmaAlongX, const Int_t i=2)
void SetEmcPosSigmaAlongTheta(const Double_t EmcPosSigmaAlongTheta, const Int_t i=2)
void SetTrackId(const Int_t trackId)
void SetTof2PosSigmaAlongT(const Double_t Tof2PosSigmaAlongT, const Int_t i=2)
void SetTof1PosSigmaAlongT(const Double_t Tof1PosSigmaAlongT, const Int_t i=2)
void SetTof1MomentumY(const Double_t Tof1MomentumY, const Int_t i=2)
void SetEmcPositionX(const Double_t EmcPositionX, const Int_t i=2)
void SetEmcPositionZ(const Double_t EmcPositionZ, const Int_t i=2)
void SetMucPositionY(const Double_t MucPositionY, const Int_t i=2)
void SetTof2MomentumZ(const Double_t Tof2MomentumZ, const Int_t i=2)
void SetMucErrorMatrix(const Double_t MucErrorMatrix[6][6], const Int_t k=2)
void SetEmcVolumeName(const TString EmcVolumeName, const Int_t i=2)
void SetTof2PositionY(const Double_t Tof2PositionY, const Int_t i=2)
void SetTof1PosSigmaAlongZ(const Double_t Tof1PosSigmaAlongZ, const Int_t i=2)
void SetMucPosSigmaAlongZ(const Double_t MucPosSigmaAlongZ, const Int_t i=2)
void SetTof1VolumeName(const TString Tof1VolumeName, const Int_t i=2)
void SetMucMomentumX(const Double_t MucMomentumX, const Int_t i=2)
void SetTof1PositionX(const Double_t Tof1PositionX, const Int_t i=2)
void SetTof2PositionZ(const Double_t Tof2PositionZ, const Int_t i=2)
void SetEmcPosSigmaAlongPhi(const Double_t EmcPosSigmaAlongPhi, const Int_t i=2)
void SetTof2PositionX(const Double_t Tof2PositionX, const Int_t i=2)
void SetEmcPath(Double_t path, const Int_t i=2)
void SetEmcPositionY(const Double_t EmcPositionY, const Int_t i=2)
void SetTof2VolumeNumber(const Int_t Tof2VolumeNumber, const Int_t i=2)
void SetMucVolumeNumber(const Int_t MucVolumeNumber, const Int_t i=2)
void SetTof1PositionY(const Double_t Tof1PositionY, const Int_t i=2)
const TObjArray * getExtTrackCol() const
void addExtTrack(TRecExtTrack *Track)
Add a ExtTrack into the Ext Data collection.
_EXTERN_ std::string Event