@@ -54,7 +54,6 @@ using namespace o2;
5454using namespace o2 ::framework;
5555using namespace o2 ::framework::expressions;
5656
57- using TracksFull = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksCov, aod::TOFSignal, aod::TOFEvTime>;
5857using TracksFullPID = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksCov, aod::TOFSignal, aod::TOFEvTime, aod::pidTOFPr>;
5958using TracksFullIUPID = soa::Join<aod::TracksIU, aod::TracksExtra, aod::TracksCovIU, aod::TOFSignal, aod::TOFEvTime, aod::pidTOFPr>;
6059using 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