@@ -43,6 +43,18 @@ struct TrackTimeNode {
4343 float trackTime;
4444};
4545
46+ const std::unordered_map<GID ::Source, EveWorkflowHelper::PropagationRange> EveWorkflowHelper::propagationRanges = {
47+ {GID ::ITS , EveWorkflowHelper::prITS},
48+ {GID ::TPC , EveWorkflowHelper::prTPC},
49+ {GID ::ITSTPC , {EveWorkflowHelper::prITS.minR , EveWorkflowHelper::prTPC.maxR , EveWorkflowHelper::prTPC.minZ , EveWorkflowHelper::prTPC.maxZ }},
50+ {GID ::TPCTOF , {EveWorkflowHelper::prTPC.minR , EveWorkflowHelper::prTOF.maxR , EveWorkflowHelper::prTOF.minZ , EveWorkflowHelper::prTOF.maxZ }},
51+ {GID ::TPCTRD , {EveWorkflowHelper::prTPC.minR , EveWorkflowHelper::prTRD.maxR , EveWorkflowHelper::prTRD.minZ , EveWorkflowHelper::prTRD.maxZ }},
52+ {GID ::ITSTPCTRD , {EveWorkflowHelper::prITS.minR , EveWorkflowHelper::prTRD.maxR , EveWorkflowHelper::prTRD.minZ , EveWorkflowHelper::prTRD.maxZ }},
53+ {GID ::ITSTPCTOF , {EveWorkflowHelper::prITS.minR , EveWorkflowHelper::prTOF.maxR , EveWorkflowHelper::prTOF.minZ , EveWorkflowHelper::prTOF.maxZ }},
54+ {GID ::TPCTRDTOF , {EveWorkflowHelper::prTPC.minR , EveWorkflowHelper::prTOF.maxR , EveWorkflowHelper::prTOF.minZ , EveWorkflowHelper::prTOF.maxZ }},
55+ {GID ::ITSTPCTRDTOF , {EveWorkflowHelper::prITS.minR , EveWorkflowHelper::prTOF.maxR , EveWorkflowHelper::prTOF.minZ , EveWorkflowHelper::prTOF.maxZ }},
56+ };
57+
4658void EveWorkflowHelper::selectTracks (const CalibObjectsConst* calib,
4759 GID ::mask_t maskCl, GID ::mask_t maskTrk, GID ::mask_t maskMatch, bool trackSorting)
4860{
@@ -158,6 +170,9 @@ void EveWorkflowHelper::draw()
158170 auto tim = mTrackSet .trackTime [it];
159171 // LOG(info) << "EveWorkflowHelper::draw " << gid.asString();
160172 switch (gid.getSource ()) {
173+ case GID ::ITS :
174+ drawITS (gid, tim);
175+ break ;
161176 case GID ::TPC :
162177 drawTPC (gid, tim);
163178 break ;
@@ -170,27 +185,24 @@ void EveWorkflowHelper::draw()
170185 case GID ::MID :
171186 drawMID (gid, tim);
172187 break ;
173- case GID ::ITS :
174- drawITS (gid, tim);
175- break ;
176188 case GID ::ITSTPC :
177189 drawITSTPC (gid, tim);
178190 break ;
179- case GID ::ITSTPCTOF :
180- drawITSTPCTOF (gid, tim);
191+ case GID ::TPCTOF :
192+ drawTPCTOF (gid, tim);
181193 break ;
182194 case GID ::TPCTRD :
183195 drawTPCTRD (gid, tim);
184196 break ;
185- case GID ::TPCTOF :
186- drawTPCTOF (gid, tim);
197+ case GID ::ITSTPCTRD :
198+ drawITSTPCTRD (gid, tim);
199+ break ;
200+ case GID ::ITSTPCTOF :
201+ drawITSTPCTOF (gid, tim);
187202 break ;
188203 case GID ::TPCTRDTOF :
189204 drawTPCTRDTOF (gid, tim);
190205 break ;
191- case GID ::ITSTPCTRD :
192- drawITSTPCTRD (gid, tim);
193- break ;
194206 case GID ::ITSTPCTRDTOF :
195207 drawITSTPCTRDTOF (gid, tim);
196208 break ;
@@ -283,7 +295,18 @@ void EveWorkflowHelper::addTrackToEvent(const o2::track::TrackPar& tr, GID gid,
283295 .eta = tr.getEta (),
284296 .gid = gid.asString (),
285297 .source = source});
286- auto pnts = getTrackPoints (tr, minmaxR[source].first , minmaxR[source].second , maxStep, minmaxZ[source].first , minmaxZ[source].second );
298+
299+ const auto it = propagationRanges.find (source);
300+
301+ const bool rangeNotFound = (it == propagationRanges.cend ());
302+ if (rangeNotFound) {
303+ LOGF (error, " Track source %s has no defined propagation ranges" );
304+ return ;
305+ }
306+
307+ const auto & prange = it->second ;
308+
309+ auto pnts = getTrackPoints (tr, prange.minR , prange.maxR , maxStep, prange.minZ , prange.maxZ );
287310
288311 for (size_t ip = 0 ; ip < pnts.size (); ip++) {
289312 vTrack->addPolyPoint (pnts[ip][0 ], pnts[ip][1 ], pnts[ip][2 ] + dz);
@@ -345,29 +368,29 @@ void EveWorkflowHelper::drawITSTPC(GID gid, float trackTime, GID::Source source)
345368 drawTPCClusters (track.getRefTPC (), trackTime * mMUS2TPCTimeBins );
346369}
347370
348- void EveWorkflowHelper::drawITSTPCTOF (GID gid, float trackTime)
371+ void EveWorkflowHelper::drawITSTPCTOF (GID gid, float trackTime, GID ::Source source )
349372{
350373 const auto & track = mRecoCont .getITSTPCTOFTrack (gid);
351- addTrackToEvent (track, gid, trackTime, 0 .);
374+ addTrackToEvent (track, gid, trackTime, 0 ., source );
352375 drawITSClusters (track.getRefITS (), trackTime);
353376 drawTPCClusters (track.getRefTPC (), trackTime * mMUS2TPCTimeBins );
354377 drawTOFClusters (gid, trackTime);
355378}
356379
357- void EveWorkflowHelper::drawTPCTRD (GID gid, float trackTime)
380+ void EveWorkflowHelper::drawTPCTRD (GID gid, float trackTime, GID ::Source source )
358381{
359382 // LOG(info) << "EveWorkflowHelper::drawTPCTRD " << gid;
360383 const auto & tpcTrdTrack = mRecoCont .getTPCTRDTrack <o2::trd::TrackTRD>(gid);
361- addTrackToEvent (tpcTrdTrack, gid, trackTime, 0 .);
384+ addTrackToEvent (tpcTrdTrack, gid, trackTime, 0 ., source );
362385 drawTPCClusters (tpcTrdTrack.getRefGlobalTrackId (), trackTime * mMUS2TPCTimeBins );
363386 drawTRDClusters (tpcTrdTrack, trackTime);
364387}
365388
366- void EveWorkflowHelper::drawITSTPCTRD (GID gid, float trackTime)
389+ void EveWorkflowHelper::drawITSTPCTRD (GID gid, float trackTime, GID ::Source source )
367390{
368391 // LOG(info) << "EveWorkflowHelper::drawITSTPCTRD " << gid;
369392 const auto & itsTpcTrdTrack = mRecoCont .getITSTPCTRDTrack <o2::trd::TrackTRD>(gid);
370- drawITSTPC (itsTpcTrdTrack.getRefGlobalTrackId (), trackTime, GID :: ITSTPCTRD );
393+ drawITSTPC (itsTpcTrdTrack.getRefGlobalTrackId (), trackTime, source );
371394 drawTRDClusters (itsTpcTrdTrack, trackTime);
372395}
373396
@@ -376,7 +399,7 @@ void EveWorkflowHelper::drawITSTPCTRDTOF(GID gid, float trackTime)
376399 // LOG(info) << "EveWorkflowHelper::drawITSTPCTRDTOF " << gid;
377400 const auto & match = mRecoCont .getITSTPCTRDTOFMatches ()[gid.getIndex ()];
378401 auto gidITSTPCTRD = match.getTrackRef ();
379- drawITSTPCTRD (gidITSTPCTRD, trackTime);
402+ drawITSTPCTRD (gidITSTPCTRD, trackTime, GID :: ITSTPCTRDTOF );
380403 drawTOFClusters (gid, trackTime);
381404}
382405
@@ -385,7 +408,7 @@ void EveWorkflowHelper::drawTPCTRDTOF(GID gid, float trackTime)
385408 // LOG(info) << "EveWorkflowHelper::drawTPCTRDTOF " << gid;
386409 const auto & match = mRecoCont .getTPCTRDTOFMatches ()[gid.getIndex ()];
387410 auto gidTPCTRD = match.getTrackRef ();
388- drawTPCTRD (gidTPCTRD, trackTime);
411+ drawTPCTRD (gidTPCTRD, trackTime, GID :: TPCTRDTOF );
389412 drawTOFClusters (gid, trackTime);
390413}
391414
@@ -523,42 +546,16 @@ void EveWorkflowHelper::drawTPC(GID gid, float trackTime)
523546 return ;
524547 }
525548
526- auto vTrack = mEvent .addTrack ({.time = static_cast <float >(trackTime),
527- .charge = tr.getCharge (),
528- .PID = tr.getPID (),
529- .startXYZ = {tr.getX (), tr.getY (), tr.getZ ()},
530- .phi = tr.getPhi (),
531- .theta = tr.getTheta (),
532- .eta = tr.getEta (),
533- .gid = gid.asString (),
534- .source = GID ::TPC });
535- auto source = gid.getSource ();
536- auto pnts = getTrackPoints (tr, minmaxR[source].first , minmaxR[source].second , 4 , minmaxZ[source].first , minmaxZ[source].second );
537- float dz = 0.0 ;
538- for (size_t ip = 0 ; ip < pnts.size (); ip++) {
539- vTrack->addPolyPoint (pnts[ip][0 ], pnts[ip][1 ], pnts[ip][2 ] + dz);
540- }
549+ addTrackToEvent (tr, gid, trackTime, 4 .f , GID ::TPC );
550+
541551 drawTPCClusters (gid, trackTime);
542552}
543553
544554void EveWorkflowHelper::drawITS (GID gid, float trackTime)
545555{
546556 const auto & tr = mRecoCont .getITSTrack (gid);
547- auto vTrack = mEvent .addTrack ({.time = static_cast <float >(trackTime),
548- .charge = tr.getCharge (),
549- .PID = tr.getPID (),
550- .startXYZ = {tr.getX (), tr.getY (), tr.getZ ()},
551- .phi = tr.getPhi (),
552- .theta = tr.getTheta (),
553- .eta = tr.getEta (),
554- .gid = gid.asString (),
555- .source = GID ::ITS });
556- auto source = gid.getSource ();
557- auto pnts = getTrackPoints (tr, minmaxR[source].first , minmaxR[source].second , 1.0 , minmaxZ[source].first , minmaxZ[source].second );
558- float dz = 0.0 ;
559- for (size_t ip = 0 ; ip < pnts.size (); ip++) {
560- vTrack->addPolyPoint (pnts[ip][0 ], pnts[ip][1 ], pnts[ip][2 ] + dz);
561- }
557+ addTrackToEvent (tr, gid, trackTime, 1 .f , GID ::ITS );
558+
562559 drawITSClusters (gid, trackTime);
563560}
564561
0 commit comments