@@ -106,6 +106,7 @@ struct TrackEfficiency {
106106
107107 std::vector<int > eventSelectionBits;
108108 int trackSelection = -1 ;
109+ float pTHatSettingSentinelValue = 999.0 ;
109110
110111 enum AcceptSplitCollisionsOptions {
111112 NonSplitOnly = 0 ,
@@ -425,12 +426,17 @@ struct TrackEfficiency {
425426
426427 registry.add (" h_track_pt_track_dcaxy_mcprimary" , " #it{p}_{T, track} (GeV/#it{c}); primaries dca_{xy}" , {HistType::kTH2F , {ptAxisEff, dcaxyAxis}});
427428 registry.add (" h_track_pt_track_dcaz_mcprimary" , " #it{p}_{T, track} (GeV/#it{c}); primaries dca_{z}" , {HistType::kTH2F , {ptAxisEff, dcazAxis}});
428- registry.add (" h_track_pt_track_dcaxy_mcsecondary" , " #it{p}_{T, track} (GeV/#it{c}); secondaries dca_{xy}" , {HistType::kTH2F , {ptAxisEff, dcaxyAxis}});
429- registry.add (" h_track_pt_track_dcaz_mcsecondary" , " #it{p}_{T, track} (GeV/#it{c}); secondaries dca_{z}" , {HistType::kTH2F , {ptAxisEff, dcazAxis}});
429+ registry.add (" h_track_pt_track_dcaxy_mcsecondarydecay" , " #it{p}_{T, track} (GeV/#it{c}); secondaries dca_{xy}" , {HistType::kTH2F , {ptAxisEff, dcaxyAxis}});
430+ registry.add (" h_track_pt_track_dcaz_mcsecondarydecay" , " #it{p}_{T, track} (GeV/#it{c}); secondaries dca_{z}" , {HistType::kTH2F , {ptAxisEff, dcazAxis}});
431+ registry.add (" h_track_pt_track_dcaxy_mcsecondarymat" , " #it{p}_{T, track} (GeV/#it{c}); secondaries dca_{xy}" , {HistType::kTH2F , {ptAxisEff, dcaxyAxis}});
432+ registry.add (" h_track_pt_track_dcaz_mcsecondarymat" , " #it{p}_{T, track} (GeV/#it{c}); secondaries dca_{z}" , {HistType::kTH2F , {ptAxisEff, dcazAxis}});
433+
430434 registry.add (" h_track_pt_high_track_dcaxy_mcprimary" , " #it{p}_{T, track} (GeV/#it{c}); primaries dca_{xy}" , {HistType::kTH2F , {ptAxisHighEff, dcaxyAxis}});
431435 registry.add (" h_track_pt_high_track_dcaz_mcprimary" , " #it{p}_{T, track} (GeV/#it{c}); primaries dca_{z}" , {HistType::kTH2F , {ptAxisHighEff, dcazAxis}});
432- registry.add (" h_track_pt_high_track_dcaxy_mcsecondary" , " #it{p}_{T, track} (GeV/#it{c}); secondaries dca_{xy}" , {HistType::kTH2F , {ptAxisHighEff, dcaxyAxis}});
433- registry.add (" h_track_pt_high_track_dcaz_mcsecondary" , " #it{p}_{T, track} (GeV/#it{c}); secondaries dca_{z}" , {HistType::kTH2F , {ptAxisHighEff, dcazAxis}});
436+ registry.add (" h_track_pt_high_track_dcaxy_mcsecondarydecay" , " #it{p}_{T, track} (GeV/#it{c}); secondaries dca_{xy}" , {HistType::kTH2F , {ptAxisHighEff, dcaxyAxis}});
437+ registry.add (" h_track_pt_high_track_dcaz_mcsecondarydecay" , " #it{p}_{T, track} (GeV/#it{c}); secondaries dca_{z}" , {HistType::kTH2F , {ptAxisHighEff, dcazAxis}});
438+ registry.add (" h_track_pt_high_track_dcaxy_mcsecondarymat" , " #it{p}_{T, track} (GeV/#it{c}); secondaries dca_{xy}" , {HistType::kTH2F , {ptAxisHighEff, dcaxyAxis}});
439+ registry.add (" h_track_pt_high_track_dcaz_mcsecondarymat" , " #it{p}_{T, track} (GeV/#it{c}); secondaries dca_{z}" , {HistType::kTH2F , {ptAxisHighEff, dcazAxis}});
434440 }
435441 }
436442
@@ -513,7 +519,7 @@ struct TrackEfficiency {
513519 }
514520 registry.fill (HIST (" hMcCollCutsCounts" ), 5.5 ); // at least one of the reconstructed collisions associated with this mcCollision is selected with regard to centrality
515521
516- float pTHat = mcCollision.ptHard () < 999 . 0f ? mcCollision.ptHard () : simPtRef / (std::pow (mcCollision.weight (), 1.0 / pTHatExponent));
522+ float pTHat = mcCollision.ptHard () < pTHatSettingSentinelValue ? mcCollision.ptHard () : simPtRef / (std::pow (mcCollision.weight (), 1.0 / pTHatExponent));
517523 if (pTHat < ptHatMin || pTHat > ptHatMax) { // only allows mcCollisions with weight in between min and max
518524 return ;
519525 }
@@ -856,7 +862,7 @@ struct TrackEfficiency {
856862 return ;
857863 }
858864
859- float pTHat = collision.mcCollision ().ptHard () < 999 . 0f ? collision.mcCollision ().ptHard () : simPtRef / (std::pow (collision.mcCollision ().weight (), 1.0 / pTHatExponent));
865+ float pTHat = collision.mcCollision ().ptHard () < pTHatSettingSentinelValue ? collision.mcCollision ().ptHard () : simPtRef / (std::pow (collision.mcCollision ().weight (), 1.0 / pTHatExponent));
860866 if (pTHat < ptHatMin || pTHat > ptHatMax) { // only allows mcCollisions with weight in between min and max
861867 return ;
862868 }
@@ -885,7 +891,7 @@ struct TrackEfficiency {
885891 return ;
886892 }
887893
888- float pTHat = collision.mcCollision ().ptHard () < 999 . 0f ? collision.mcCollision ().ptHard () : simPtRef / (std::pow (eventWeight, 1.0 / pTHatExponent));
894+ float pTHat = collision.mcCollision ().ptHard () < pTHatSettingSentinelValue ? collision.mcCollision ().ptHard () : simPtRef / (std::pow (eventWeight, 1.0 / pTHatExponent));
889895 if (pTHat < ptHatMin || pTHat > ptHatMax) { // only allows mcCollisions with weight in between min and max
890896 return ;
891897 }
@@ -910,7 +916,7 @@ struct TrackEfficiency {
910916 return ;
911917 }
912918
913- float pTHat = mcCollision.ptHard () < 999 . 0f ? mcCollision.ptHard () : simPtRef / (std::pow (mcCollision.weight (), 1.0 / pTHatExponent));
919+ float pTHat = mcCollision.ptHard () < pTHatSettingSentinelValue ? mcCollision.ptHard () : simPtRef / (std::pow (mcCollision.weight (), 1.0 / pTHatExponent));
914920 if (pTHat < ptHatMin || pTHat > ptHatMax) { // only allows mcCollisions with weight in between min and max
915921 return ;
916922 }
@@ -973,7 +979,7 @@ struct TrackEfficiency {
973979 return ;
974980 }
975981
976- float pTHat = mcCollision.ptHard () < 999 . 0f ? mcCollision.ptHard () : simPtRef / (std::pow (eventWeight, 1.0 / pTHatExponent));
982+ float pTHat = mcCollision.ptHard () < pTHatSettingSentinelValue ? mcCollision.ptHard () : simPtRef / (std::pow (eventWeight, 1.0 / pTHatExponent));
977983 if (pTHat < ptHatMin || pTHat > ptHatMax) { // only allows mcCollisions with weight in between min and max
978984 return ;
979985 }
@@ -1067,7 +1073,7 @@ struct TrackEfficiency {
10671073 registry.fill (HIST (" h_collisions" ), 3.5 );
10681074 registry.fill (HIST (" h2_centrality_collisions" ), centrality, 3.5 );
10691075
1070- float pTHat = collision.mcCollision ().ptHard () < 999 . 0f ? collision.mcCollision ().ptHard () : simPtRef / (std::pow (collision.mcCollision ().weight (), 1.0 / pTHatExponent));
1076+ float pTHat = collision.mcCollision ().ptHard () < pTHatSettingSentinelValue ? collision.mcCollision ().ptHard () : simPtRef / (std::pow (collision.mcCollision ().weight (), 1.0 / pTHatExponent));
10711077 if (pTHat < ptHatMin || pTHat > ptHatMax) { // only allows mcCollisions with weight in between min and max
10721078 return ;
10731079 }
@@ -1104,7 +1110,7 @@ struct TrackEfficiency {
11041110 registry.fill (HIST (" h_collisions" ), 3.5 );
11051111 registry.fill (HIST (" h_collisions_weighted" ), 3.5 , eventWeight);
11061112
1107- float pTHat = collision.mcCollision ().ptHard () < 999 . 0f ? collision.mcCollision ().ptHard () : simPtRef / (std::pow (eventWeight, 1.0 / pTHatExponent));
1113+ float pTHat = collision.mcCollision ().ptHard () < pTHatSettingSentinelValue ? collision.mcCollision ().ptHard () : simPtRef / (std::pow (eventWeight, 1.0 / pTHatExponent));
11081114 if (pTHat < ptHatMin || pTHat > ptHatMax) { // only allows mcCollisions with weight in between min and max
11091115 return ;
11101116 }
@@ -1119,7 +1125,7 @@ struct TrackEfficiency {
11191125 // float centrality = checkCentFT0M ? mcCollision.centFT0M() : mcCollision.centFT0C(); mcCollision.centFT0C() isn't filled at the moment; can be added back when it is
11201126
11211127 float eventWeight = mcCollision.weight ();
1122- float pTHat = mcCollision.ptHard () < 999 . 0f ? mcCollision.ptHard () : simPtRef / (std::pow (eventWeight, 1.0 / pTHatExponent));
1128+ float pTHat = mcCollision.ptHard () < pTHatSettingSentinelValue ? mcCollision.ptHard () : simPtRef / (std::pow (eventWeight, 1.0 / pTHatExponent));
11231129 registry.fill (HIST (" h2_mccollision_pthardfromweight_pthardfromhepmcxsection" ), simPtRef / (std::pow (eventWeight, 1.0 / pTHatExponent)), mcCollision.ptHard ());
11241130
11251131 float centrality = -1 ;
@@ -1191,7 +1197,7 @@ struct TrackEfficiency {
11911197 // float centrality = checkCentFT0M ? mcCollision.centFT0M() : mcCollision.centFT0C(); mcCollision.centFT0C() isn't filled at the moment; can be added back when it is
11921198
11931199 float eventWeight = mcCollision.weight ();
1194- float pTHat = mcCollision.ptHard () < 999 . 0f ? mcCollision.ptHard () : simPtRef / (std::pow (eventWeight, 1.0 / pTHatExponent));
1200+ float pTHat = mcCollision.ptHard () < pTHatSettingSentinelValue ? mcCollision.ptHard () : simPtRef / (std::pow (eventWeight, 1.0 / pTHatExponent));
11951201 registry.fill (HIST (" h2_mccollision_pthardfromweight_pthardfromhepmcxsection" ), simPtRef / (std::pow (eventWeight, 1.0 / pTHatExponent)), mcCollision.ptHard ());
11961202 registry.fill (HIST (" h2_mccollision_pthardfromweight_pthardfromhepmcxsection_weighted" ), simPtRef / (std::pow (eventWeight, 1.0 / pTHatExponent)), mcCollision.ptHard (), eventWeight);
11971203
@@ -1388,6 +1394,7 @@ struct TrackEfficiency {
13881394
13891395 void processItsTpcMatchingMC (soa::Filtered<aod::JetCollisions>::iterator const & collision, soa::Join<aod::JetTracks, aod::JTrackPIs> const & jetTracks, soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksDCA, aod::TrackSelection, aod::McTrackLabels, aod::TrackSelectionExtension> const &, aod::McParticles const &)
13901396 {
1397+ // could be added in future: pions+kaons vs protons distinction; easy in MC but what is the procedure for data?
13911398 if (!jetderiveddatautilities::selectCollision (collision, eventSelectionBits, skipMBGapEvents, applyRCTSelections)) {
13921399 return ;
13931400 }
@@ -1474,11 +1481,18 @@ struct TrackEfficiency {
14741481 registry.fill (HIST (" h_track_pt_high_track_dcaz_mcprimary" ), aodTrack.pt (), aodTrack.dcaZ ());
14751482 }
14761483
1477- if (!aodMcParticleFromTrack.isPhysicalPrimary ()) {
1478- registry.fill (HIST (" h_track_pt_track_dcaxy_mcsecondary" ), aodTrack.pt (), aodTrack.dcaXY ());
1479- registry.fill (HIST (" h_track_pt_track_dcaz_mcsecondary" ), aodTrack.pt (), aodTrack.dcaZ ());
1480- registry.fill (HIST (" h_track_pt_high_track_dcaxy_mcsecondary" ), aodTrack.pt (), aodTrack.dcaXY ());
1481- registry.fill (HIST (" h_track_pt_high_track_dcaz_mcsecondary" ), aodTrack.pt (), aodTrack.dcaZ ());
1484+ if (!aodMcParticleFromTrack.isPhysicalPrimary ()) { // Secondaries (weak decays and material)
1485+ if (aodMcParticleFromTrack.getProcess () == kPDecay ) { // Particles from decay
1486+ registry.fill (HIST (" h_track_pt_track_dcaxy_mcsecondarydecay" ), aodTrack.pt (), aodTrack.dcaXY ());
1487+ registry.fill (HIST (" h_track_pt_track_dcaz_mcsecondarydecay" ), aodTrack.pt (), aodTrack.dcaZ ());
1488+ registry.fill (HIST (" h_track_pt_high_track_dcaxy_mcsecondarydecay" ), aodTrack.pt (), aodTrack.dcaXY ());
1489+ registry.fill (HIST (" h_track_pt_high_track_dcaz_mcsecondarydecay" ), aodTrack.pt (), aodTrack.dcaZ ());
1490+ } else { // Particles from the material
1491+ registry.fill (HIST (" h_track_pt_track_dcaxy_mcsecondarymat" ), aodTrack.pt (), aodTrack.dcaXY ());
1492+ registry.fill (HIST (" h_track_pt_track_dcaz_mcsecondarymat" ), aodTrack.pt (), aodTrack.dcaZ ());
1493+ registry.fill (HIST (" h_track_pt_high_track_dcaxy_mcsecondarymat" ), aodTrack.pt (), aodTrack.dcaXY ());
1494+ registry.fill (HIST (" h_track_pt_high_track_dcaz_mcsecondarymat" ), aodTrack.pt (), aodTrack.dcaZ ());
1495+ }
14821496 }
14831497 }
14841498 }
0 commit comments