@@ -82,6 +82,9 @@ struct TrackEfficiency {
8282 Configurable<float > ptHatMin{" ptHatMin" , 5 , " min pT hat of collisions" };
8383 Configurable<float > ptHatMax{" ptHatMax" , 300 , " max pT hat of collisions" };
8484 Configurable<float > pTHatExponent{" pTHatExponent" , 6.0 , " exponent of the event weight for the calculation of pTHat" };
85+ Configurable<float > pTHatMaxFractionMCD{" pTHatMaxFractionMCD" , 999.0 , " maximum fraction of hard scattering for reconstructed track acceptance in MC" };
86+
87+ Configurable<int > useTrueTrackWeight{" useTrueTrackWeight" , 1 , " test configurable, to be removed" };
8588
8689 std::vector<int > eventSelectionBits;
8790 int trackSelection = -1 ;
@@ -110,6 +113,13 @@ struct TrackEfficiency {
110113 if (!(jetderiveddatautilities::selectTrack (track, trackSelection) && jetderiveddatautilities::selectTrackDcaZ (track, trackDcaZmax))) {
111114 continue ;
112115 }
116+
117+ float simPtRef = 10 .;
118+ float pTHat = simPtRef / (std::pow (weight, 1.0 / pTHatExponent));
119+ if (track.pt () > pTHatMaxFractionMCD * pTHat) {
120+ continue ;
121+ }
122+
113123 registry.fill (HIST (" h2_centrality_track_pt" ), collision.centrality (), track.pt (), weight);
114124 registry.fill (HIST (" h2_centrality_track_eta" ), collision.centrality (), track.eta (), weight);
115125 registry.fill (HIST (" h2_centrality_track_phi" ), collision.centrality (), track.phi (), weight);
@@ -164,8 +174,16 @@ struct TrackEfficiency {
164174 registry.get <TH1>(HIST (" hTrackCutsCounts" ))->GetXaxis ()->SetBinLabel (1 , " allTracksInSelColl" );
165175 registry.get <TH1>(HIST (" hTrackCutsCounts" ))->GetXaxis ()->SetBinLabel (2 , " trackSel" );
166176 registry.get <TH1>(HIST (" hTrackCutsCounts" ))->GetXaxis ()->SetBinLabel (3 , " hasMcParticle" );
167- registry.get <TH1>(HIST (" hTrackCutsCounts" ))->GetXaxis ()->SetBinLabel (4 , " mcPartIsPrimary" );
168- registry.get <TH1>(HIST (" hTrackCutsCounts" ))->GetXaxis ()->SetBinLabel (5 , " etaAcc" ); // not actually applied here but it will give an idea of what will be done in the post processing
177+
178+ if (doprocessEFficiencyPurity) {
179+ registry.get <TH1>(HIST (" hTrackCutsCounts" ))->GetXaxis ()->SetBinLabel (4 , " mcPartIsPrimary" );
180+ registry.get <TH1>(HIST (" hTrackCutsCounts" ))->GetXaxis ()->SetBinLabel (5 , " etaAcc" ); // not actually applied here but it will give an idea of what will be done in the post processing
181+ }
182+ if (doprocessEFficiencyPurityWeighted) {
183+ registry.get <TH1>(HIST (" hTrackCutsCounts" ))->GetXaxis ()->SetBinLabel (4 , " ptHatMaxFraction" );
184+ registry.get <TH1>(HIST (" hTrackCutsCounts" ))->GetXaxis ()->SetBinLabel (5 , " mcPartIsPrimary" );
185+ registry.get <TH1>(HIST (" hTrackCutsCounts" ))->GetXaxis ()->SetBinLabel (6 , " etaAcc" ); // not actually applied here but it will give an idea of what will be done in the post processing
186+ }
169187
170188 AxisSpec ptAxisEff = {nBinsLowPt, 0 ., 10 ., " #it{p}_{T} (GeV/#it{c})" };
171189 AxisSpec ptAxisHighEff = {18 , 10 ., 100 ., " #it{p}_{T} (GeV/#it{c})" };
@@ -478,8 +496,9 @@ struct TrackEfficiency {
478496 }
479497 registry.fill (HIST (" hMcCollCutsCounts" ), 5.5 ); // at least one of the reconstructed collisions associated with this mcCollision is selected with regard to centrality
480498
481- float eventWeight = mcCollision.weight ();
482- float pTHat = 10 . / (std::pow (eventWeight, 1.0 / pTHatExponent));
499+ float simPtRef = 10 .;
500+ float mcCollEventWeight = mcCollision.weight ();
501+ float pTHat = simPtRef / (std::pow (mcCollEventWeight, 1.0 / pTHatExponent));
483502 if (pTHat < ptHatMin || pTHat > ptHatMax) { // only allows mcCollisions with weight in between min and max
484503 return ;
485504 }
@@ -493,16 +512,16 @@ struct TrackEfficiency {
493512 }
494513 registry.fill (HIST (" hMcPartCutsCounts" ), 1.5 ); // isCharged
495514
496- registry.fill (HIST (" h3_particle_pt_particle_eta_particle_phi_mcpart_nonprimary" ), jMcParticle.pt (), jMcParticle.eta (), jMcParticle.phi (), eventWeight );
515+ registry.fill (HIST (" h3_particle_pt_particle_eta_particle_phi_mcpart_nonprimary" ), jMcParticle.pt (), jMcParticle.eta (), jMcParticle.phi (), mcCollEventWeight );
497516
498517 if (checkPrimaryPart && !jMcParticle.isPhysicalPrimary ()) { // global tracks should be mostly primaries
499518 continue ;
500519 }
501520 registry.fill (HIST (" hMcPartCutsCounts" ), 2.5 ); // isPrimary
502521
503- registry.fill (HIST (" h3_particle_pt_particle_eta_particle_phi_mcpartofinterest" ), jMcParticle.pt (), jMcParticle.eta (), jMcParticle.phi (), eventWeight );
522+ registry.fill (HIST (" h3_particle_pt_particle_eta_particle_phi_mcpartofinterest" ), jMcParticle.pt (), jMcParticle.eta (), jMcParticle.phi (), mcCollEventWeight );
504523
505- registry.fill (HIST (" h3_particle_pt_high_particle_eta_particle_phi_mcpartofinterest" ), jMcParticle.pt (), jMcParticle.eta (), jMcParticle.phi (), eventWeight );
524+ registry.fill (HIST (" h3_particle_pt_high_particle_eta_particle_phi_mcpartofinterest" ), jMcParticle.pt (), jMcParticle.eta (), jMcParticle.phi (), mcCollEventWeight );
506525
507526 if ((std::abs (jMcParticle.eta ()) < trackEtaAcceptanceCountQA)) { // removed from actual cuts for now because all the histograms have an eta axis
508527 registry.fill (HIST (" hMcPartCutsCounts" ), 3.5 ); // etaAccept // not actually applied here but it will give an idea of what will be done in the post processing
@@ -532,56 +551,65 @@ struct TrackEfficiency {
532551 registry.fill (HIST (" hTrackCutsCounts" ), 1.5 );
533552
534553 if (!track.has_mcParticle ()) {
535- registry.fill (HIST (" h3_track_pt_track_eta_track_phi_nonassociatedtrack" ), track.pt (), track.eta (), track.phi (), eventWeight);
554+ registry.fill (HIST (" h3_track_pt_track_eta_track_phi_nonassociatedtrack" ), track.pt (), track.eta (), track.phi (), mcCollEventWeight); // weight attribution here not trivial; I use the one of the current mcCollision, but track belongs to no collision; what should be its weight? could be a moot point but algo has complained about invalid index for mcParticle if I put th etrueTrackCollEventWeight before this cut
536555
537- registry.fill (HIST (" h3_track_pt_high_track_eta_track_phi_nonassociatedtrack" ), track.pt (), track.eta (), track.phi (), eventWeight );
556+ registry.fill (HIST (" h3_track_pt_high_track_eta_track_phi_nonassociatedtrack" ), track.pt (), track.eta (), track.phi (), mcCollEventWeight );
538557 continue ;
539558 }
540559 registry.fill (HIST (" hTrackCutsCounts" ), 2.5 );
541560
561+ if (track.pt () > pTHatMaxFractionMCD * pTHat) {
562+ continue ;
563+ }
564+ registry.fill (HIST (" hTrackCutsCounts" ), 3.5 );
565+
566+ auto mcParticle = track.mcParticle_as <JetParticlesWithOriginal>();
567+ auto trueTrackMcCollision = mcParticle.mcCollision_as <aod::JetMcCollisions>();
568+ float trueTrackCollEventWeight = useTrueTrackWeight ? trueTrackMcCollision.weight () : mcCollEventWeight; // test1
569+
542570 auto jMcParticleFromTrack = track.mcParticle_as <JetParticlesWithOriginal>();
543571 if (!jMcParticleFromTrack.isPhysicalPrimary ()) {
544- registry.fill (HIST (" h3_track_pt_track_eta_track_phi_associatedtrack_nonprimary" ), track.pt (), track.eta (), track.phi (), eventWeight );
545- registry.fill (HIST (" h3_particle_pt_particle_eta_particle_phi_associatedtrack_nonprimary" ), jMcParticleFromTrack.pt (), jMcParticleFromTrack.eta (), jMcParticleFromTrack.phi (), eventWeight );
572+ registry.fill (HIST (" h3_track_pt_track_eta_track_phi_associatedtrack_nonprimary" ), track.pt (), track.eta (), track.phi (), trueTrackCollEventWeight );
573+ registry.fill (HIST (" h3_particle_pt_particle_eta_particle_phi_associatedtrack_nonprimary" ), jMcParticleFromTrack.pt (), jMcParticleFromTrack.eta (), jMcParticleFromTrack.phi (), trueTrackCollEventWeight );
546574
547- registry.fill (HIST (" h3_track_pt_high_track_eta_track_phi_associatedtrack_nonprimary" ), track.pt (), track.eta (), track.phi (), eventWeight );
548- registry.fill (HIST (" h3_particle_pt_high_particle_eta_particle_phi_associatedtrack_nonprimary" ), jMcParticleFromTrack.pt (), jMcParticleFromTrack.eta (), jMcParticleFromTrack.phi (), eventWeight );
575+ registry.fill (HIST (" h3_track_pt_high_track_eta_track_phi_associatedtrack_nonprimary" ), track.pt (), track.eta (), track.phi (), trueTrackCollEventWeight );
576+ registry.fill (HIST (" h3_particle_pt_high_particle_eta_particle_phi_associatedtrack_nonprimary" ), jMcParticleFromTrack.pt (), jMcParticleFromTrack.eta (), jMcParticleFromTrack.phi (), trueTrackCollEventWeight );
549577
550578 if (std::find (seenMcParticlesVector.begin (), seenMcParticlesVector.end (), jMcParticleFromTrack.globalIndex ()) != seenMcParticlesVector.end ()) {
551- registry.fill (HIST (" h3_track_pt_track_eta_track_phi_associatedtrack_split_nonprimary" ), track.pt (), track.eta (), track.phi (), eventWeight );
552- registry.fill (HIST (" h3_particle_pt_particle_eta_particle_phi_associatedtrack_split_nonprimary" ), jMcParticleFromTrack.pt (), jMcParticleFromTrack.eta (), jMcParticleFromTrack.phi (), eventWeight );
579+ registry.fill (HIST (" h3_track_pt_track_eta_track_phi_associatedtrack_split_nonprimary" ), track.pt (), track.eta (), track.phi (), trueTrackCollEventWeight );
580+ registry.fill (HIST (" h3_particle_pt_particle_eta_particle_phi_associatedtrack_split_nonprimary" ), jMcParticleFromTrack.pt (), jMcParticleFromTrack.eta (), jMcParticleFromTrack.phi (), trueTrackCollEventWeight );
553581
554- registry.fill (HIST (" h3_track_pt_high_track_eta_track_phi_associatedtrack_split_nonprimary" ), track.pt (), track.eta (), track.phi (), eventWeight );
555- registry.fill (HIST (" h3_particle_pt_high_particle_eta_particle_phi_associatedtrack_split_nonprimary" ), jMcParticleFromTrack.pt (), jMcParticleFromTrack.eta (), jMcParticleFromTrack.phi (), eventWeight );
582+ registry.fill (HIST (" h3_track_pt_high_track_eta_track_phi_associatedtrack_split_nonprimary" ), track.pt (), track.eta (), track.phi (), trueTrackCollEventWeight );
583+ registry.fill (HIST (" h3_particle_pt_high_particle_eta_particle_phi_associatedtrack_split_nonprimary" ), jMcParticleFromTrack.pt (), jMcParticleFromTrack.eta (), jMcParticleFromTrack.phi (), trueTrackCollEventWeight );
556584 } else {
557585 seenMcParticlesVector.push_back (jMcParticleFromTrack.globalIndex ());
558586 }
559587
560588 continue ;
561589 }
562590
563- registry.fill (HIST (" hTrackCutsCounts" ), 3 .5 );
591+ registry.fill (HIST (" hTrackCutsCounts" ), 4 .5 );
564592
565- registry.fill (HIST (" h3_track_pt_track_eta_track_phi_associatedtrack_primary" ), track.pt (), track.eta (), track.phi (), eventWeight );
566- registry.fill (HIST (" h3_particle_pt_particle_eta_particle_phi_associatedtrack_primary" ), jMcParticleFromTrack.pt (), jMcParticleFromTrack.eta (), jMcParticleFromTrack.phi (), eventWeight );
567- registry.fill (HIST (" h2_particle_pt_track_pt_residual_associatedtrack_primary" ), jMcParticleFromTrack.pt (), (jMcParticleFromTrack.pt () - track.pt ()) / jMcParticleFromTrack.pt (), eventWeight );
593+ registry.fill (HIST (" h3_track_pt_track_eta_track_phi_associatedtrack_primary" ), track.pt (), track.eta (), track.phi (), trueTrackCollEventWeight );
594+ registry.fill (HIST (" h3_particle_pt_particle_eta_particle_phi_associatedtrack_primary" ), jMcParticleFromTrack.pt (), jMcParticleFromTrack.eta (), jMcParticleFromTrack.phi (), trueTrackCollEventWeight );
595+ registry.fill (HIST (" h2_particle_pt_track_pt_residual_associatedtrack_primary" ), jMcParticleFromTrack.pt (), (jMcParticleFromTrack.pt () - track.pt ()) / jMcParticleFromTrack.pt (), trueTrackCollEventWeight );
568596
569- registry.fill (HIST (" h3_track_pt_high_track_eta_track_phi_associatedtrack_primary" ), track.pt (), track.eta (), track.phi (), eventWeight );
570- registry.fill (HIST (" h3_particle_pt_high_particle_eta_particle_phi_associatedtrack_primary" ), jMcParticleFromTrack.pt (), jMcParticleFromTrack.eta (), jMcParticleFromTrack.phi (), eventWeight );
571- registry.fill (HIST (" h2_particle_pt_high_track_pt_high_residual_associatedtrack_primary" ), jMcParticleFromTrack.pt (), (jMcParticleFromTrack.pt () - track.pt ()) / jMcParticleFromTrack.pt (), eventWeight );
597+ registry.fill (HIST (" h3_track_pt_high_track_eta_track_phi_associatedtrack_primary" ), track.pt (), track.eta (), track.phi (), trueTrackCollEventWeight );
598+ registry.fill (HIST (" h3_particle_pt_high_particle_eta_particle_phi_associatedtrack_primary" ), jMcParticleFromTrack.pt (), jMcParticleFromTrack.eta (), jMcParticleFromTrack.phi (), trueTrackCollEventWeight );
599+ registry.fill (HIST (" h2_particle_pt_high_track_pt_high_residual_associatedtrack_primary" ), jMcParticleFromTrack.pt (), (jMcParticleFromTrack.pt () - track.pt ()) / jMcParticleFromTrack.pt (), trueTrackCollEventWeight );
572600
573601 if (std::find (seenMcParticlesVector.begin (), seenMcParticlesVector.end (), jMcParticleFromTrack.globalIndex ()) != seenMcParticlesVector.end ()) {
574- registry.fill (HIST (" h3_track_pt_track_eta_track_phi_associatedtrack_split_primary" ), track.pt (), track.eta (), track.phi (), eventWeight );
575- registry.fill (HIST (" h3_particle_pt_particle_eta_particle_phi_associatedtrack_split_primary" ), jMcParticleFromTrack.pt (), jMcParticleFromTrack.eta (), jMcParticleFromTrack.phi (), eventWeight );
602+ registry.fill (HIST (" h3_track_pt_track_eta_track_phi_associatedtrack_split_primary" ), track.pt (), track.eta (), track.phi (), trueTrackCollEventWeight );
603+ registry.fill (HIST (" h3_particle_pt_particle_eta_particle_phi_associatedtrack_split_primary" ), jMcParticleFromTrack.pt (), jMcParticleFromTrack.eta (), jMcParticleFromTrack.phi (), trueTrackCollEventWeight );
576604
577- registry.fill (HIST (" h3_track_pt_high_track_eta_track_phi_associatedtrack_split_primary" ), track.pt (), track.eta (), track.phi (), eventWeight );
578- registry.fill (HIST (" h3_particle_pt_high_particle_eta_particle_phi_associatedtrack_split_primary" ), jMcParticleFromTrack.pt (), jMcParticleFromTrack.eta (), jMcParticleFromTrack.phi (), eventWeight );
605+ registry.fill (HIST (" h3_track_pt_high_track_eta_track_phi_associatedtrack_split_primary" ), track.pt (), track.eta (), track.phi (), trueTrackCollEventWeight );
606+ registry.fill (HIST (" h3_particle_pt_high_particle_eta_particle_phi_associatedtrack_split_primary" ), jMcParticleFromTrack.pt (), jMcParticleFromTrack.eta (), jMcParticleFromTrack.phi (), trueTrackCollEventWeight );
579607 } else {
580608 seenMcParticlesVector.push_back (jMcParticleFromTrack.globalIndex ());
581609 }
582610
583611 if (std::abs (jMcParticleFromTrack.eta ()) < trackEtaAcceptanceCountQA) { // not actually applied here but it will give an idea of what will be done in the post processing
584- registry.fill (HIST (" hTrackCutsCounts" ), 4 .5 );
612+ registry.fill (HIST (" hTrackCutsCounts" ), 5 .5 );
585613 }
586614 }
587615 }
0 commit comments