@@ -169,6 +169,8 @@ struct matchingMFT {
169169 fRegistry .add (" MFTMCHMID/primary/correct/hDeltaPhi_Neg" , " #varphi resolution;p_{T}^{gen} (GeV/c);#varphi^{rec} - #varphi^{gen} (rad.)" , kTH2F , {{100 , 0 , 10 }, {400 , -0.2 , +0.2 }}, true );
170170 fRegistry .addClone (" MFTMCHMID/primary/correct/" , " MFTMCHMID/primary/wrong/" );
171171 fRegistry .addClone (" MFTMCHMID/primary/" , " MFTMCHMID/secondary/" );
172+
173+ fRegistry .add (" Generated/primary/hs" , " gen. info;p_{T} (GeV/c);#eta;#varphi (rad.)" , kTHnSparseF , {{100 , 0 .0f , 10 }, {100 , -6 , -1 }, {90 , 0 , 2 .f * M_PI}}, false );
172174 }
173175
174176 bool isSelected (const float pt, const float eta, const float rAtAbsorberEnd, const float pDCA, const float chi2, const uint8_t trackType, const float dcaXY)
@@ -416,6 +418,25 @@ struct matchingMFT {
416418 fRegistry .fill (HIST (" Event/hMultFT0CvsMultNTracksPV" ), collision.multFT0C (), collision.multNTracksPV ());
417419 }
418420
421+ template <typename TMCParticles>
422+ void runGen (TMCParticles const & mcParticles)
423+ {
424+ for (const auto & mcParticle : mcParticles) {
425+ if (std::abs (mcParticle.pdgCode ()) != 13 ) { // select true muon
426+ continue ;
427+ }
428+ if (!(mcParticle.isPhysicalPrimary () || mcParticle.producedByGenerator ())) {
429+ continue ;
430+ }
431+ if (mcParticle.eta () < minEtaGL || maxEtaGL < mcParticle.eta ()) {
432+ continue ;
433+ }
434+
435+ fRegistry .fill (HIST (" Generated/primary/hs" ), mcParticle.pt (), mcParticle.eta (), mcParticle.phi ());
436+
437+ } // end of mc particles
438+ }
439+
419440 SliceCache cache;
420441 PresliceUnsorted<aod::FwdTracks> perMFTTrack = o2::aod::fwdtrack::matchMFTTrackId;
421442 Preslice<aod::FwdTracks> perCollision = o2::aod::fwdtrack::collisionId;
@@ -426,7 +447,7 @@ struct matchingMFT {
426447 Filter collisionFilter_centrality = (cfgCentMin < o2::aod::cent::centFT0M && o2::aod::cent::centFT0M < cfgCentMax) || (cfgCentMin < o2::aod::cent::centFT0A && o2::aod::cent::centFT0A < cfgCentMax) || (cfgCentMin < o2::aod::cent::centFT0C && o2::aod::cent::centFT0C < cfgCentMax);
427448 using FilteredMyCollisions = soa::Filtered<MyCollisions>;
428449
429- void processWithoutFTTCA (FilteredMyCollisions const & collisions, MyFwdTracks const & fwdtracks, MyMFTTracks const & mfttracks, aod::BCsWithTimestamps const &, aod::McParticles const &)
450+ void processWithoutFTTCA (FilteredMyCollisions const & collisions, MyFwdTracks const & fwdtracks, MyMFTTracks const & mfttracks, aod::BCsWithTimestamps const &, aod::McParticles const & mcParticles )
430451 {
431452 for (const auto & collision : collisions) {
432453 const auto & bc = collision.template bc_as <aod::BCsWithTimestamps>();
@@ -450,10 +471,11 @@ struct matchingMFT {
450471 fillHistograms (collision, fwdtrack, fwdtracks, mfttracks);
451472 } // end of fwdtrack loop
452473 } // end of collision loop
474+ runGen (mcParticles);
453475 }
454476 PROCESS_SWITCH (matchingMFT, processWithoutFTTCA, " process without FTTCA" , false );
455477
456- void processWithFTTCA (FilteredMyCollisions const & collisions, MyFwdTracks const & fwdtracks, MyMFTTracks const & mfttracks, aod::BCsWithTimestamps const &, aod::FwdTrackAssoc const & fwdtrackIndices, aod::McParticles const &)
478+ void processWithFTTCA (FilteredMyCollisions const & collisions, MyFwdTracks const & fwdtracks, MyMFTTracks const & mfttracks, aod::BCsWithTimestamps const &, aod::FwdTrackAssoc const & fwdtrackIndices, aod::McParticles const & mcParticles )
457479 {
458480 for (const auto & collision : collisions) {
459481 const auto & bc = collision.template bc_as <aod::BCsWithTimestamps>();
@@ -478,6 +500,7 @@ struct matchingMFT {
478500 fillHistograms (collision, fwdtrack, fwdtracks, mfttracks);
479501 } // end of fwdtrack loop
480502 } // end of collision loop
503+ runGen (mcParticles);
481504 }
482505 PROCESS_SWITCH (matchingMFT, processWithFTTCA, " process with FTTCA" , true );
483506};
0 commit comments