Skip to content

Commit 0887d51

Browse files
committed
fill table from a single function
1 parent a434276 commit 0887d51

File tree

1 file changed

+45
-83
lines changed

1 file changed

+45
-83
lines changed

PWGLF/TableProducer/Nuspex/ebyeMaker.cxx

Lines changed: 45 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ using namespace o2;
5454
using namespace o2::framework;
5555
using namespace o2::framework::expressions;
5656

57-
using TracksFull = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksCov, aod::TOFSignal, aod::TOFEvTime>;
5857
using TracksFullPID = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksCov, aod::TOFSignal, aod::TOFEvTime, aod::pidTOFPr>;
5958
using TracksFullIUPID = soa::Join<aod::TracksIU, aod::TracksExtra, aod::TracksCovIU, aod::TOFSignal, aod::TOFEvTime, aod::pidTOFPr>;
6059
using BCsWithRun2Info = soa::Join<aod::BCs, aod::Run2BCInfos, aod::Timestamps>;
@@ -267,7 +266,6 @@ struct EbyeMaker {
267266

268267
HistogramRegistry histos{"histos", {}, OutputObjHandlingPolicy::AnalysisObject};
269268

270-
Preslice<TracksFull> perCollisionTracksFull = o2::aod::track::collisionId;
271269
Preslice<TracksFullPID> perCollisionTracksFullPID = o2::aod::track::collisionId;
272270
Preslice<TracksFullIUPID> perCollisionTracksFullIUPID = o2::aod::track::collisionId;
273271
Preslice<aod::V0s> perCollisionV0 = o2::aod::v0::collisionId;
@@ -427,12 +425,41 @@ struct EbyeMaker {
427425
return static_cast<float>((track.tpcSignal() - expBethe) / expSigma);
428426
}
429427

430-
template <class T>
431-
float getOuterPID(T const& track)
432-
{
433-
if (!(doprocessRun2 || doprocessMcRun2) && track.hasTOF() && track.pt() > antipPtTof)
434-
return track.tofNSigmaPr();
435-
return -999.f;
428+
template <const bool isMc, class T>
429+
void fillTableMiniTrack(CandidateTrack& candidateTrack, T const& tk, float const& nSigmaITS = -999.f){
430+
int selMask = -1;
431+
if ((isMc && candidateTrack.isreco) || !isMc) {
432+
float outerPID = -999.f;
433+
if (!(doprocessRun2 || doprocessMcRun2) && tk.hasTOF() && tk.pt() > antipPtTof) // TODO: remove the process-dependent conditional if all have the tof table
434+
outerPID = tk.tofNSigmaPr();
435+
candidateTrack.itsnsigma = nSigmaITS;
436+
candidateTrack.outerPID = tk.pt() < antipPtTof ? candidateTrack.outerPID : outerPID;
437+
int selMask = getTrackSelMask(candidateTrack);
438+
if (candidateTrack.outerPID < outerPIDMin)
439+
return;
440+
if (isMc && candidateTrack.pdgcodemoth > 0)
441+
selMask |= candidateTrack.pdgcodemoth;
442+
} else if (isMc && candidateTrack.pdgcodemoth > 0) {
443+
selMask = candidateTrack.pdgcodemoth;
444+
}
445+
if (isMc && selMask >= 0) {
446+
mcMiniTrkTable(
447+
miniCollTable.lastIndex(),
448+
candidateTrack.pt,
449+
static_cast<int8_t>(candidateTrack.eta * 100),
450+
selMask,
451+
candidateTrack.outerPID,
452+
candidateTrack.pdgcode > 0 ? candidateTrack.genpt : -candidateTrack.genpt,
453+
static_cast<int8_t>(candidateTrack.geneta * 100),
454+
candidateTrack.isreco);
455+
} else if (!isMc) {
456+
miniTrkTable(
457+
miniCollTable.lastIndex(),
458+
candidateTrack.pt,
459+
static_cast<int8_t>(candidateTrack.eta * 100),
460+
selMask,
461+
candidateTrack.outerPID);
462+
}
436463
}
437464

438465
template <class T>
@@ -523,8 +550,6 @@ struct EbyeMaker {
523550
{
524551
if (doprocessRun3 || doprocessMcRun3)
525552
return tracksAll.sliceBy(perCollisionTracksFullIUPID, collId);
526-
else if (doprocessRun2 || doprocessMcRun2)
527-
return tracksAll.sliceBy(perCollisionTracksFull, collId);
528553
else
529554
return tracksAll.sliceBy(perCollisionTracksFullPID, collId);
530555
}
@@ -915,24 +940,13 @@ struct EbyeMaker {
915940

916941
for (auto& candidateTrack : candidateTracks[0]) { // o2-linter: disable=const-ref-in-for-loop (not a const ref)
917942
auto tk = tracks.rawIteratorAt(candidateTrack.globalIndex);
918-
float outerPID = getOuterPID(tk);
919-
candidateTrack.itsnsigma = -999.f;
920-
candidateTrack.outerPID = tk.pt() < antipPtTof ? candidateTrack.outerPID : outerPID;
921-
int selMask = getTrackSelMask(candidateTrack);
922-
if (candidateTrack.outerPID < outerPIDMin)
923-
continue;
924-
miniTrkTable(
925-
miniCollTable.lastIndex(),
926-
candidateTrack.pt,
927-
static_cast<int8_t>(candidateTrack.eta * 100),
928-
selMask,
929-
candidateTrack.outerPID);
943+
fillTableMiniTrack<false>(candidateTrack, tk);
930944
}
931945
}
932946
}
933947
PROCESS_SWITCH(EbyeMaker, processRun3, "process (Run 3)", false);
934948

935-
void processRun2(soa::Join<aod::Collisions, aod::EvSels, aod::CentRun2V0Ms, aod::CentRun2CL0s, aod::TrackletMults> const& collisions, TracksFull const& tracks, aod::V0s const& V0s, BCsWithRun2Info const&)
949+
void processRun2(soa::Join<aod::Collisions, aod::EvSels, aod::CentRun2V0Ms, aod::CentRun2CL0s, aod::TrackletMults> const& collisions, TracksFullPID const& tracks, aod::V0s const& V0s, BCsWithRun2Info const&)
936950
{
937951
for (const auto& collision : collisions) {
938952
auto bc = collision.bc_as<BCsWithRun2Info>();
@@ -1051,20 +1065,9 @@ struct EbyeMaker {
10511065

10521066
for (auto& candidateTrack : candidateTracks[0]) { // o2-linter: disable=const-ref-in-for-loop (not a const ref)
10531067
auto tk = tracks.rawIteratorAt(candidateTrack.globalIndex);
1054-
float outerPID = getOuterPID(tk);
10551068
auto [itsSignal, nSigmaITS] = getITSSignal(tk, trackExtraRun2);
10561069
histos.fill(HIST("QA/itsSignal"), tk.p(), itsSignal);
1057-
candidateTrack.itsnsigma = nSigmaITS;
1058-
candidateTrack.outerPID = tk.pt() < antipPtTof ? candidateTrack.outerPID : outerPID;
1059-
int selMask = getTrackSelMask(candidateTrack);
1060-
if (candidateTrack.outerPID < outerPIDMin)
1061-
continue;
1062-
miniTrkTable(
1063-
miniCollTable.lastIndex(),
1064-
candidateTrack.pt,
1065-
static_cast<int8_t>(candidateTrack.eta * 100),
1066-
selMask,
1067-
candidateTrack.outerPID);
1070+
fillTableMiniTrack<false>(candidateTrack, tk, nSigmaITS);
10681071
}
10691072
}
10701073
}
@@ -1093,35 +1096,14 @@ struct EbyeMaker {
10931096
miniCollTable(static_cast<int8_t>(collision.posZ() * 10), nChPartGen, nTrackletsColl, centrality, nTracksColl);
10941097

10951098
for (auto& candidateTrack : candidateTracks[0]) { // o2-linter: disable=const-ref-in-for-loop (not a const ref)
1096-
int selMask = -1;
1097-
if (candidateTrack.isreco) {
1098-
auto tk = tracks.rawIteratorAt(candidateTrack.globalIndex);
1099-
float outerPID = getOuterPID(tk);
1100-
candidateTrack.itsnsigma = -999.f;
1101-
candidateTrack.outerPID = tk.pt() < antipPtTof ? candidateTrack.outerPID : outerPID;
1102-
selMask = getTrackSelMask(candidateTrack);
1103-
if (candidateTrack.pdgcodemoth > 0)
1104-
selMask |= candidateTrack.pdgcodemoth;
1105-
} else if (candidateTrack.pdgcodemoth > 0) {
1106-
selMask = candidateTrack.pdgcodemoth;
1107-
}
1108-
if (selMask < 0)
1109-
continue;
1110-
mcMiniTrkTable(
1111-
miniCollTable.lastIndex(),
1112-
candidateTrack.pt,
1113-
static_cast<int8_t>(candidateTrack.eta * 100),
1114-
selMask,
1115-
candidateTrack.outerPID,
1116-
candidateTrack.pdgcode > 0 ? candidateTrack.genpt : -candidateTrack.genpt,
1117-
static_cast<int8_t>(candidateTrack.geneta * 100),
1118-
candidateTrack.isreco);
1099+
auto tk = candidateTrack.isreco ? tracks.rawIteratorAt(candidateTrack.globalIndex) : tracks.rawIteratorAt(0);
1100+
fillTableMiniTrack<true>(candidateTrack, tk);
11191101
}
11201102
}
11211103
}
11221104
PROCESS_SWITCH(EbyeMaker, processMcRun3, "process MC (Run 3)", false);
11231105

1124-
void processMcRun2(soa::Join<aod::Collisions, aod::McCollisionLabels, aod::CentRun2V0Ms> const& collisions, aod::McCollisions const& /*mcCollisions*/, TracksFull const& tracks, aod::V0s const& V0s, aod::McParticles const& mcParticles, aod::McTrackLabels const& mcLab, BCsWithRun2Info const&)
1106+
void processMcRun2(soa::Join<aod::Collisions, aod::McCollisionLabels, aod::CentRun2V0Ms> const& collisions, aod::McCollisions const& /*mcCollisions*/, TracksFullPID const& tracks, aod::V0s const& V0s, aod::McParticles const& mcParticles, aod::McTrackLabels const& mcLab, BCsWithRun2Info const&)
11251107
{
11261108
for (const auto& collision : collisions) {
11271109
auto bc = collision.bc_as<BCsWithRun2Info>();
@@ -1208,31 +1190,11 @@ struct EbyeMaker {
12081190
miniCollTable(static_cast<int8_t>(collision.posZ() * 10), nChPartGen, nTrackletsColl, centrality, nTracksColl);
12091191

12101192
for (auto& candidateTrack : candidateTracks[0]) { // o2-linter: disable=const-ref-in-for-loop (not a const ref)
1211-
int selMask = -1;
1212-
if (candidateTrack.isreco) {
1213-
auto tk = tracks.rawIteratorAt(candidateTrack.globalIndex);
1214-
float outerPID = getOuterPID(tk);
1215-
auto [itsSignal, nSigmaITS] = getITSSignal(tk, trackExtraRun2);
1193+
auto tk = candidateTrack.isreco ? tracks.rawIteratorAt(candidateTrack.globalIndex) : tracks.rawIteratorAt(0);
1194+
auto [itsSignal, nSigmaITS] = getITSSignal(tk, trackExtraRun2);
1195+
if (candidateTrack.isreco)
12161196
histos.fill(HIST("QA/itsSignal"), tk.p(), itsSignal);
1217-
candidateTrack.itsnsigma = nSigmaITS;
1218-
candidateTrack.outerPID = tk.pt() < antipPtTof ? candidateTrack.outerPID : outerPID;
1219-
selMask = getTrackSelMask(candidateTrack);
1220-
if (candidateTrack.pdgcodemoth > 0)
1221-
selMask |= candidateTrack.pdgcodemoth;
1222-
} else if (candidateTrack.pdgcodemoth > 0) {
1223-
selMask = candidateTrack.pdgcodemoth;
1224-
}
1225-
if (selMask < 0)
1226-
continue;
1227-
mcMiniTrkTable(
1228-
miniCollTable.lastIndex(),
1229-
candidateTrack.pt,
1230-
static_cast<int8_t>(candidateTrack.eta * 100),
1231-
selMask,
1232-
candidateTrack.outerPID,
1233-
candidateTrack.pdgcode > 0 ? candidateTrack.genpt : -candidateTrack.genpt,
1234-
static_cast<int8_t>(candidateTrack.geneta * 100),
1235-
candidateTrack.isreco);
1197+
fillTableMiniTrack<true>(candidateTrack, tk, nSigmaITS);
12361198
}
12371199
}
12381200
}

0 commit comments

Comments
 (0)