@@ -214,6 +214,14 @@ auto makeKinkHistSpecMap(const T& confBinningAnalysis)
214214 KINK_HIST_ANALYSIS_MAP (confBinningAnalysis)};
215215}
216216
217+ template <typename T>
218+ auto makeKinkMcHistSpecMap (const T& confBinningAnalysis)
219+ {
220+ return std::map<KinkHist, std::vector<framework::AxisSpec>>{
221+ KINK_HIST_ANALYSIS_MAP (confBinningAnalysis)
222+ KINK_HIST_MC_MAP (confBinningAnalysis)};
223+ }
224+
217225template <typename T1, typename T2>
218226std::map<KinkHist, std::vector<framework::AxisSpec>> makeKinkQaHistSpecMap (T1 const & confBinningAnalysis, T2 const & confBinningQa)
219227{
@@ -295,13 +303,13 @@ class KinkHistManager
295303
296304 mChaDauManager .template init <mode>(registry, ChaDauSpecs, absCharge, chaDauCharge, chaDauPdgCodeAbs);
297305 if constexpr (isFlagSet (mode, modes::Mode::kAnalysis )) {
298- initAnalysis (KinkSpecs);
306+ this -> initAnalysis (KinkSpecs);
299307 }
300308 if constexpr (isFlagSet (mode, modes::Mode::kQa )) {
301- initQa (KinkSpecs);
309+ this -> initQa (KinkSpecs);
302310 }
303311 if constexpr (isFlagSet (mode, modes::Mode::kMc )) {
304- initMc (KinkSpecs);
312+ this -> initMc (KinkSpecs);
305313 }
306314 }
307315
@@ -344,13 +352,13 @@ class KinkHistManager
344352
345353 mChaDauManager .template init <mode>(registry, ChaDauSpecs, absCharge, chaDauCharge, chaDauPdgCodeAbs, ConfChaDauBinningQa);
346354 if constexpr (isFlagSet (mode, modes::Mode::kAnalysis )) {
347- initAnalysis (KinkSpecs);
355+ this -> initAnalysis (KinkSpecs);
348356 }
349357 if constexpr (isFlagSet (mode, modes::Mode::kQa )) {
350- initQa (KinkSpecs);
358+ this -> initQa (KinkSpecs);
351359 }
352360 if constexpr (isFlagSet (mode, modes::Mode::kMc )) {
353- initMc (KinkSpecs);
361+ this -> initMc (KinkSpecs);
354362 }
355363 }
356364
@@ -362,10 +370,10 @@ class KinkHistManager
362370 auto chaDaughter = tracks.rawIteratorAt (kinkCandidate.chaDauId () - tracks.offset ());
363371 mChaDauManager .template fill <mode>(chaDaughter, tracks);
364372 if constexpr (isFlagSet (mode, modes::Mode::kAnalysis )) {
365- fillAnalysis (kinkCandidate);
373+ this -> fillAnalysis (kinkCandidate);
366374 }
367375 if constexpr (isFlagSet (mode, modes::Mode::kQa )) {
368- fillQa (kinkCandidate);
376+ this -> fillQa (kinkCandidate);
369377 }
370378 }
371379
@@ -375,13 +383,13 @@ class KinkHistManager
375383 auto chaDaughter = tracks.rawIteratorAt (kinkCandidate.chaDauId () - tracks.offset ());
376384 mChaDauManager .template fill <mode>(chaDaughter, tracks, mcParticles, mcMothers, mcPartonicMothers);
377385 if constexpr (modes::isFlagSet (mode, modes::Mode::kAnalysis )) {
378- fillAnalysis (kinkCandidate);
386+ this -> fillAnalysis (kinkCandidate);
379387 }
380388 if constexpr (modes::isFlagSet (mode, modes::Mode::kQa )) {
381- fillQa (kinkCandidate);
389+ this -> fillQa (kinkCandidate);
382390 }
383391 if constexpr (modes::isFlagSet (mode, modes::Mode::kMc )) {
384- fillMc (kinkCandidate, mcParticles, mcMothers, mcPartonicMothers);
392+ this -> template fillMc <mode> (kinkCandidate, mcParticles, mcMothers, mcPartonicMothers);
385393 }
386394 }
387395
@@ -513,15 +521,17 @@ class KinkHistManager
513521 }
514522 }
515523
516- template <typename T1, typename T2, typename T3, typename T4>
524+ template <modes::Mode mode, typename T1, typename T2, typename T3, typename T4>
517525 void fillMc (T1 const & kinkCandidate, T2 const & /* mcParticles*/ , T3 const & /* mcMothers*/ , T4 const & /* mcPartonicMothers*/ )
518526 {
519527 // No MC Particle
520528 if (!kinkCandidate.has_fMcParticle ()) {
521529 mHistogramRegistry ->fill (HIST (kinkPrefix) + HIST (McDir) + HIST (getHistName (kPdg , HistTable)), 0 );
522530 mHistogramRegistry ->fill (HIST (kinkPrefix) + HIST (McDir) + HIST (getHistName (kOrigin , HistTable)), static_cast <float >(modes::McOrigin::kNoMcParticle ));
523- if (mPlotOrigins ) {
524- mHistogramRegistry ->fill (HIST (kinkPrefix) + HIST (McDir) + HIST (getHistName (kNoMcParticle , HistTable)), kinkCandidate.pt (), kinkCandidate.kinkAngle ());
531+ if constexpr (modes::isFlagSet (mode, modes::Mode::kQa )) {
532+ if (mPlotOrigins ) {
533+ mHistogramRegistry ->fill (HIST (kinkPrefix) + HIST (McDir) + HIST (getHistName (kNoMcParticle , HistTable)), kinkCandidate.pt (), kinkCandidate.kinkAngle ());
534+ }
525535 }
526536 return ;
527537 }
@@ -559,43 +569,44 @@ class KinkHistManager
559569 mHistogramRegistry ->fill (HIST (kinkPrefix) + HIST (McDir) + HIST (getHistName (kPdgPartonicMother , HistTable)), 0 );
560570 }
561571
562- // Plot origins
563- if (mPlotOrigins ) {
564- // check first if particle is missidentified
565- if (isMissidentified) {
566- // if it is, we fill it as such
567- mHistogramRegistry ->fill (HIST (kinkPrefix) + HIST (McDir) + HIST (getHistName (kMissidentified , HistTable)), kinkCandidate.pt (), kinkCandidate.kinkAngle ());
568- } else {
569- // if not, we fill it acccoridng to its origin
570- switch (static_cast <modes::McOrigin>(mcParticle.origin ())) {
571- case modes::McOrigin::kPhysicalPrimary :
572- mHistogramRegistry ->fill (HIST (kinkPrefix) + HIST (McDir) + HIST (getHistName (kPrimary , HistTable)), kinkCandidate.pt (), kinkCandidate.kinkAngle ());
573- break ;
574- case modes::McOrigin::kFromWrongCollision :
575- mHistogramRegistry ->fill (HIST (kinkPrefix) + HIST (McDir) + HIST (getHistName (kFromWrongCollision , HistTable)), kinkCandidate.pt (), kinkCandidate.kinkAngle ());
576- break ;
577- case modes::McOrigin::kFromMaterial :
578- mHistogramRegistry ->fill (HIST (kinkPrefix) + HIST (McDir) + HIST (getHistName (kFromMaterial , HistTable)), kinkCandidate.pt (), kinkCandidate.kinkAngle ());
579- break ;
580- case modes::McOrigin::kFromSecondaryDecay :
581- if (kinkCandidate.has_fMcMother ()) {
582- auto mother = kinkCandidate.template fMcMother_as <T3>();
583- int motherPdgCode = std::abs (mother.pdgCode ());
584- // Switch on PDG of the mother
585- if (mPlotNSecondaries >= histmanager::kSecondaryPlotLevel1 && motherPdgCode == mPdgCodesSecondaryMother [0 ]) {
586- mHistogramRegistry ->fill (HIST (kinkPrefix) + HIST (McDir) + HIST (getHistName (kSecondary1 , HistTable)), kinkCandidate.pt (), kinkCandidate.kinkAngle ());
587- } else if (mPlotNSecondaries >= histmanager::kSecondaryPlotLevel2 && motherPdgCode == mPdgCodesSecondaryMother [1 ]) {
588- mHistogramRegistry ->fill (HIST (kinkPrefix) + HIST (McDir) + HIST (getHistName (kSecondary2 , HistTable)), kinkCandidate.pt (), kinkCandidate.kinkAngle ());
589- } else if (mPlotNSecondaries >= histmanager::kSecondaryPlotLevel3 && motherPdgCode == mPdgCodesSecondaryMother [2 ]) {
590- mHistogramRegistry ->fill (HIST (kinkPrefix) + HIST (McDir) + HIST (getHistName (kSecondary3 , HistTable)), kinkCandidate.pt (), kinkCandidate.kinkAngle ());
591- } else {
592- mHistogramRegistry ->fill (HIST (kinkPrefix) + HIST (McDir) + HIST (getHistName (kSecondaryOther , HistTable)), kinkCandidate.pt (), kinkCandidate.kinkAngle ());
572+ if constexpr (modes::isFlagSet (mode, modes::Mode::kQa )) {
573+ if (mPlotOrigins ) {
574+ // check first if particle is missidentified
575+ if (isMissidentified) {
576+ // if it is, we fill it as such
577+ mHistogramRegistry ->fill (HIST (kinkPrefix) + HIST (McDir) + HIST (getHistName (kMissidentified , HistTable)), kinkCandidate.pt (), kinkCandidate.kinkAngle ());
578+ } else {
579+ // if not, we fill it acccoridng to its origin
580+ switch (static_cast <modes::McOrigin>(mcParticle.origin ())) {
581+ case modes::McOrigin::kPhysicalPrimary :
582+ mHistogramRegistry ->fill (HIST (kinkPrefix) + HIST (McDir) + HIST (getHistName (kPrimary , HistTable)), kinkCandidate.pt (), kinkCandidate.kinkAngle ());
583+ break ;
584+ case modes::McOrigin::kFromWrongCollision :
585+ mHistogramRegistry ->fill (HIST (kinkPrefix) + HIST (McDir) + HIST (getHistName (kFromWrongCollision , HistTable)), kinkCandidate.pt (), kinkCandidate.kinkAngle ());
586+ break ;
587+ case modes::McOrigin::kFromMaterial :
588+ mHistogramRegistry ->fill (HIST (kinkPrefix) + HIST (McDir) + HIST (getHistName (kFromMaterial , HistTable)), kinkCandidate.pt (), kinkCandidate.kinkAngle ());
589+ break ;
590+ case modes::McOrigin::kFromSecondaryDecay :
591+ if (kinkCandidate.has_fMcMother ()) {
592+ auto mother = kinkCandidate.template fMcMother_as <T3>();
593+ int motherPdgCode = std::abs (mother.pdgCode ());
594+ // Switch on PDG of the mother
595+ if (mPlotNSecondaries >= histmanager::kSecondaryPlotLevel1 && motherPdgCode == mPdgCodesSecondaryMother [0 ]) {
596+ mHistogramRegistry ->fill (HIST (kinkPrefix) + HIST (McDir) + HIST (getHistName (kSecondary1 , HistTable)), kinkCandidate.pt (), kinkCandidate.kinkAngle ());
597+ } else if (mPlotNSecondaries >= histmanager::kSecondaryPlotLevel2 && motherPdgCode == mPdgCodesSecondaryMother [1 ]) {
598+ mHistogramRegistry ->fill (HIST (kinkPrefix) + HIST (McDir) + HIST (getHistName (kSecondary2 , HistTable)), kinkCandidate.pt (), kinkCandidate.kinkAngle ());
599+ } else if (mPlotNSecondaries >= histmanager::kSecondaryPlotLevel3 && motherPdgCode == mPdgCodesSecondaryMother [2 ]) {
600+ mHistogramRegistry ->fill (HIST (kinkPrefix) + HIST (McDir) + HIST (getHistName (kSecondary3 , HistTable)), kinkCandidate.pt (), kinkCandidate.kinkAngle ());
601+ } else {
602+ mHistogramRegistry ->fill (HIST (kinkPrefix) + HIST (McDir) + HIST (getHistName (kSecondaryOther , HistTable)), kinkCandidate.pt (), kinkCandidate.kinkAngle ());
603+ }
593604 }
594- }
595- break ;
596- default :
597- LOG (warn) << " Encounted partilce with unknown origin! " ;
598- break ;
605+ break ;
606+ default :
607+ LOG (warn) << " Encounted partilce with unknown origin! " ;
608+ break ;
609+ }
599610 }
600611 }
601612 }
0 commit comments