Skip to content

Commit f911c1f

Browse files
pnwkwdavidrohr
authored andcommitted
Enable more matched track types in the workflow
1 parent 8c4f4dd commit f911c1f

3 files changed

Lines changed: 78 additions & 117 deletions

File tree

EventVisualisation/Workflow/include/EveWorkflow/EveWorkflowHelper.h

Lines changed: 17 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -61,56 +61,20 @@ struct TracksSet {
6161

6262
class EveWorkflowHelper
6363
{
64-
static constexpr std::array<std::pair<float, float>, GID::NSources> minmaxR{{
65-
{1., 40.}, // ITS
66-
{85., 240.}, // TPC
67-
{-1, -1}, // TRD (never alone)
68-
{-1, -1}, // TOF
69-
{-1, -1}, // PHS
70-
{-1, -1}, // CPV
71-
{-1, -1}, // EMC
72-
{-1, -1}, // HMP
73-
{-1, -1}, // MFT
74-
{-1, -1}, // MCH
75-
{-1, -1}, // MID
76-
{-1, -1}, // ZDC
77-
{-1, -1}, // FT0
78-
{-1, -1}, // VF0
79-
{-1, -1}, // FDD
80-
{1., 240}, // ITSTPC
81-
{85., 405.}, // TPCTOF
82-
{85., 372.}, // TPCTRD
83-
{1., 372.}, // ITSTPCTRD
84-
{1., 405.}, // ITSTPCTOF,
85-
{85., 405.}, // TPCTRDTOF,
86-
{1., 405.}, // ITSTPCTRDTOF, // full barrel track
87-
{-1, -1}, // ITSAB,
88-
}};
89-
static constexpr std::array<std::pair<float, float>, GID::NSources> minmaxZ{{
90-
{-74., 74.}, // ITS
91-
{-260., 260.}, // TPC
92-
{-1, -1}, // TRD (never alone)
93-
{-1, -1}, // TOF
94-
{-1, -1}, // PHS
95-
{-1, -1}, // CPV
96-
{-1, -1}, // EMC
97-
{-1, -1}, // HMP
98-
{-1, -1}, // MFT
99-
{-1, -1}, // MCH
100-
{-1, -1}, // MID
101-
{-1, -1}, // ZDC
102-
{-1, -1}, // FT0
103-
{-1, -1}, // VF0
104-
{-1, -1}, // FDD
105-
{-260., 260.}, // ITSTPC
106-
{-375., 375.}, // TPCTOF
107-
{-375., 375.}, // TPCTRD
108-
{-375., 375.}, // ITSTPCTRD
109-
{-375., 375.}, // ITSTPCTOF,
110-
{-375., 375.}, // TPCTRDTOF,
111-
{-375., 375.}, // ITSTPCTRDTOF, // full barrel track
112-
{-1, -1}, // ITSAB,
113-
}};
64+
struct PropagationRange {
65+
float minR;
66+
float maxR;
67+
float minZ;
68+
float maxZ;
69+
};
70+
71+
static constexpr EveWorkflowHelper::PropagationRange prITS = {1.f, 40.f, -74.f, 74.f};
72+
static constexpr EveWorkflowHelper::PropagationRange prTPC = {85.f, 240.f, -260.f, 260.f};
73+
static constexpr EveWorkflowHelper::PropagationRange prTRD = {-1.f, 372.f, -375.f, 375.f};
74+
static constexpr EveWorkflowHelper::PropagationRange prTOF = {-1.f, 405.f, -375.f, 375.f};
75+
76+
static const std::unordered_map<GID::Source, PropagationRange> propagationRanges;
77+
11478
std::unique_ptr<gpu::TPCFastTransform> mTPCFastTransform;
11579

11680
public:
@@ -147,11 +111,11 @@ class EveWorkflowHelper
147111
void drawMCH(GID gid, float trackTime);
148112
void drawMID(GID gid, float trackTime);
149113
void drawITSTPC(GID gid, float trackTime, GID::Source source = GID::ITSTPC);
150-
void drawITSTPCTOF(GID gid, float trackTime);
151-
void drawITSTPCTRD(GID gid, float trackTime);
114+
void drawITSTPCTOF(GID gid, float trackTime, GID::Source source = GID::ITSTPCTOF);
115+
void drawITSTPCTRD(GID gid, float trackTime, GID::Source source = GID::ITSTPCTRD);
152116
void drawITSTPCTRDTOF(GID gid, float trackTime);
153117
void drawTPCTRDTOF(GID gid, float trackTime);
154-
void drawTPCTRD(GID gid, float trackTime);
118+
void drawTPCTRD(GID gid, float trackTime, GID::Source source = GID::TPCTRD);
155119
void drawTPCTOF(GID gid, float trackTime);
156120
void drawPHOS();
157121
void drawAODBarrel(AODBarrelTrack const& track, float trackTime);

EventVisualisation/Workflow/include/EveWorkflow/O2DPLDisplay.h

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ class TPCFastTransform;
4646
class O2DPLDisplaySpec : public o2::framework::Task
4747
{
4848
public:
49-
static constexpr auto allowedTracks = "ITS,TPC,MFT,MCH,ITS-TPC,ITS-TPC-TOF,TPC-TRD,ITS-TPC-TRD,MID,PHS,EMC";
50-
static constexpr auto allowedClusters = "ITS,TPC,MFT,MCH,TRD,TOF,MID,TRD,PHS,EMC";
49+
static constexpr auto allowedTracks = "ITS,TPC,MFT,MCH,MID,ITS-TPC,TPC-TRD,ITS-TPC-TOF,ITS-TPC-TRD,ITS-TPC-TRD-TOF,PHS,EMC";
50+
static constexpr auto allowedClusters = "ITS,TPC,TRD,TOF,MFT,MCH,MID,PHS,EMC";
5151

5252
O2DPLDisplaySpec(bool useMC, o2::dataformats::GlobalTrackID::mask_t trkMask,
5353
o2::dataformats::GlobalTrackID::mask_t clMask,
@@ -70,19 +70,19 @@ class O2DPLDisplaySpec : public o2::framework::Task
7070
void updateTimeDependentParams(o2::framework::ProcessingContext& pc);
7171

7272
bool mUseMC = false;
73-
bool mEveHostNameMatch; // empty or correct hostname
74-
int mMinITSTracks; // minimum number of ITS tracks to produce a file
75-
int mMinTracks; // minimum number of all tracks to produce a file
76-
bool mFilterITSROF; // don't display tracks outside ITS readout frame
77-
bool mFilterTime; // don't display tracks outside [min, max] range in TF time
78-
bool mRemoveTPCEta; // don't display TPC tracks inside [min, max] eta range
79-
EveWorkflowHelper::Bracket mTimeBracket; // [min, max] range in TF time for the filter
80-
EveWorkflowHelper::Bracket mEtaBracket; // [min, max] eta range for the TPC tracks removal
81-
std::string mJsonPath; // folder where files are stored
82-
std::chrono::milliseconds mTimeInterval; // minimal interval between files in milliseconds
83-
int mNumberOfFiles; // maximum number of files in folder - newer replaces older
84-
int mNumberOfTracks; // maximum number of track in single file (0 means no limit)
85-
bool mTrackSorting; // perform sorting tracks by track time before applying filters
73+
bool mEveHostNameMatch; // empty or correct hostname
74+
int mMinITSTracks; // minimum number of ITS tracks to produce a file
75+
int mMinTracks; // minimum number of all tracks to produce a file
76+
bool mFilterITSROF; // don't display tracks outside ITS readout frame
77+
bool mFilterTime; // don't display tracks outside [min, max] range in TF time
78+
bool mRemoveTPCEta; // don't display TPC tracks inside [min, max] eta range
79+
EveWorkflowHelper::Bracket mTimeBracket; // [min, max] range in TF time for the filter
80+
EveWorkflowHelper::Bracket mEtaBracket; // [min, max] eta range for the TPC tracks removal
81+
std::string mJsonPath; // folder where files are stored
82+
std::chrono::milliseconds mTimeInterval; // minimal interval between files in milliseconds
83+
int mNumberOfFiles; // maximum number of files in folder - newer replaces older
84+
int mNumberOfTracks; // maximum number of track in single file (0 means no limit)
85+
bool mTrackSorting; // perform sorting tracks by track time before applying filters
8686
std::chrono::time_point<std::chrono::high_resolution_clock> mTimeStamp;
8787

8888
o2::dataformats::GlobalTrackID::mask_t mTrkMask;

EventVisualisation/Workflow/src/EveWorkflowHelper.cxx

Lines changed: 46 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
4658
void 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

544554
void 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

Comments
 (0)