@@ -252,7 +252,6 @@ struct HfTreeCreatorDplusToPiKPi {
252252 Configurable<bool > fillCandidateLiteTable{" fillCandidateLiteTable" , false , " Switch to fill lite table with candidate properties" };
253253 // parameters for production of training samples
254254 Configurable<bool > fillOnlySignal{" fillOnlySignal" , false , " Flag to fill derived tables with signal for ML trainings" };
255- Configurable<bool > fillOnlySignalMl{" fillOnlySignalMl" , false , " Flag to fill derived tables with MC and ML info" };
256255 Configurable<bool > fillOnlyBackground{" fillOnlyBackground" , false , " Flag to fill derived tables with background for ML trainings" };
257256 Configurable<float > downSampleBkgFactor{" downSampleBkgFactor" , 1 ., " Fraction of background candidates to keep for ML trainings" };
258257 Configurable<float > ptMaxForDownSample{" ptMaxForDownSample" , 10 ., " Maximum pt for the application of the downsampling factor" };
@@ -485,87 +484,6 @@ struct HfTreeCreatorDplusToPiKPi {
485484
486485 PROCESS_SWITCH (HfTreeCreatorDplusToPiKPi, processData, " Process data" , true );
487486
488- void processMc (aod::Collisions const & collisions,
489- aod::McCollisions const &,
490- SelectedCandidatesMc const & candidates,
491- MatchedGenCandidatesMc const & particles,
492- SelectedCandidatesMcWithMl const &,
493- TracksWPid const &)
494- {
495- // Filling event properties
496- rowCandidateFullEvents.reserve (collisions.size ());
497- for (const auto & collision : collisions) {
498- fillEvent (collision, 0 , 1 );
499- }
500-
501- // Filling candidate properties
502- if (fillOnlySignal) {
503- if (fillCandidateLiteTable) {
504- rowCandidateLite.reserve (reconstructedCandSig.size ());
505- } else {
506- rowCandidateFull.reserve (reconstructedCandSig.size ());
507- }
508- for (const auto & candidate : reconstructedCandSig) {
509- fillCandidateTable<aod::Collisions, true >(candidate);
510- }
511- } else if (fillOnlySignalMl) {
512- rowCandidateMl.reserve (reconstructedCandSigMl.size ());
513- if (fillCandidateLiteTable) {
514- rowCandidateLite.reserve (reconstructedCandSigMl.size ());
515- } else {
516- rowCandidateFull.reserve (reconstructedCandSigMl.size ());
517- }
518- for (const auto & candidate : reconstructedCandSigMl) {
519- if (downSampleBkgFactor < 1 .) {
520- float pseudoRndm = candidate.ptProng0 () * 1000 . - static_cast <int64_t >(candidate.ptProng0 () * 1000 );
521- if (candidate.pt () < ptMaxForDownSample && pseudoRndm >= downSampleBkgFactor) {
522- continue ;
523- }
524- }
525- fillCandidateTable<aod::Collisions, true , true >(candidate);
526- }
527- } else if (fillOnlyBackground) {
528- if (fillCandidateLiteTable) {
529- rowCandidateLite.reserve (reconstructedCandBkg.size ());
530- } else {
531- rowCandidateFull.reserve (reconstructedCandBkg.size ());
532- }
533- for (const auto & candidate : reconstructedCandBkg) {
534- if (downSampleBkgFactor < 1 .) {
535- float pseudoRndm = candidate.ptProng0 () * 1000 . - static_cast <int64_t >(candidate.ptProng0 () * 1000 );
536- if (candidate.pt () < ptMaxForDownSample && pseudoRndm >= downSampleBkgFactor) {
537- continue ;
538- }
539- }
540- fillCandidateTable<aod::Collisions, true >(candidate);
541- }
542- } else {
543- if (fillCandidateLiteTable) {
544- rowCandidateLite.reserve (candidates.size ());
545- } else {
546- rowCandidateFull.reserve (candidates.size ());
547- }
548- for (const auto & candidate : candidates) {
549- fillCandidateTable<aod::Collisions, true >(candidate);
550- }
551- }
552-
553- // Filling particle properties
554- rowCandidateFullParticles.reserve (particles.size ());
555- for (const auto & particle : particles) {
556- rowCandidateFullParticles (
557- particle.mcCollision ().bcId (),
558- particle.pt (),
559- particle.eta (),
560- particle.phi (),
561- RecoDecay::y (particle.pVector (), o2::constants::physics::MassDPlus),
562- particle.flagMcMatchGen (),
563- particle.originMcGen ());
564- }
565- }
566-
567- PROCESS_SWITCH (HfTreeCreatorDplusToPiKPi, processMc, " Process MC" , false );
568-
569487 void processDataWCent (CollisionsCent const & collisions,
570488 soa::Filtered<soa::Join<aod::HfCand3Prong, aod::HfSelDplusToPiKPi>> const & candidates,
571489 TracksWPid const &)
@@ -595,12 +513,12 @@ struct HfTreeCreatorDplusToPiKPi {
595513
596514 PROCESS_SWITCH (HfTreeCreatorDplusToPiKPi, processDataWCent, " Process data with cent" , false );
597515
598- void processMcWCent (CollisionsCent const & collisions,
599- aod::McCollisions const &,
600- SelectedCandidatesMc const & candidates ,
601- MatchedGenCandidatesMc const & particles ,
602- SelectedCandidatesMcWithMl const &,
603- TracksWPid const &)
516+ template < bool applyMl = false , typename CandType, typename CollType>
517+ void fillMcTables (CollType const & collisions ,
518+ aod::McCollisions const &,
519+ CandType const & candidates ,
520+ MatchedGenCandidatesMc const & particles ,
521+ TracksWPid const &)
604522 {
605523 // Filling event properties
606524 rowCandidateFullEvents.reserve (collisions.size ());
@@ -609,55 +527,19 @@ struct HfTreeCreatorDplusToPiKPi {
609527 }
610528
611529 // Filling candidate properties
612- if (fillOnlySignal) {
613- if (fillCandidateLiteTable) {
614- rowCandidateLite.reserve (reconstructedCandSig.size ());
615- } else {
616- rowCandidateFull.reserve (reconstructedCandSig.size ());
617- }
618- for (const auto & candidate : reconstructedCandSig) {
619- fillCandidateTable<CollisionsCent, true >(candidate);
620- }
621- } else if (fillOnlySignalMl) {
622- rowCandidateMl.reserve (reconstructedCandSigMl.size ());
623- if (fillCandidateLiteTable) {
624- rowCandidateLite.reserve (reconstructedCandSigMl.size ());
625- } else {
626- rowCandidateFull.reserve (reconstructedCandSigMl.size ());
627- }
628- for (const auto & candidate : reconstructedCandSigMl) {
629- if (downSampleBkgFactor < 1 .) {
630- float pseudoRndm = candidate.ptProng0 () * 1000 . - static_cast <int64_t >(candidate.ptProng0 () * 1000 );
631- if (candidate.pt () < ptMaxForDownSample && pseudoRndm >= downSampleBkgFactor) {
632- continue ;
633- }
634- }
635- fillCandidateTable<CollisionsCent, true , true >(candidate);
636- }
637- } else if (fillOnlyBackground) {
638- if (fillCandidateLiteTable) {
639- rowCandidateLite.reserve (reconstructedCandBkg.size ());
640- } else {
641- rowCandidateFull.reserve (reconstructedCandBkg.size ());
642- }
643- for (const auto & candidate : reconstructedCandBkg) {
644- if (downSampleBkgFactor < 1 .) {
645- float pseudoRndm = candidate.ptProng0 () * 1000 . - static_cast <int64_t >(candidate.ptProng0 () * 1000 );
646- if (candidate.pt () < ptMaxForDownSample && pseudoRndm >= downSampleBkgFactor) {
647- continue ;
648- }
649- }
650- fillCandidateTable<CollisionsCent, true >(candidate);
651- }
530+ if (fillCandidateLiteTable) {
531+ rowCandidateLite.reserve (candidates.size ());
652532 } else {
653- if (fillCandidateLiteTable) {
654- rowCandidateLite.reserve (candidates.size ());
655- } else {
656- rowCandidateFull.reserve (candidates.size ());
657- }
658- for (const auto & candidate : candidates) {
659- fillCandidateTable<CollisionsCent, true >(candidate);
533+ rowCandidateFull.reserve (candidates.size ());
534+ }
535+ for (const auto & candidate : candidates) {
536+ if (downSampleBkgFactor < 1 .) {
537+ float pseudoRndm = candidate.ptProng0 () * 1000 . - static_cast <int64_t >(candidate.ptProng0 () * 1000 );
538+ if (candidate.pt () < ptMaxForDownSample && pseudoRndm >= downSampleBkgFactor) {
539+ continue ;
540+ }
660541 }
542+ fillCandidateTable<CollType, true , applyMl>(candidate);
661543 }
662544
663545 // Filling particle properties
@@ -674,7 +556,61 @@ struct HfTreeCreatorDplusToPiKPi {
674556 }
675557 }
676558
559+ void processMc (aod::Collisions const & collisions,
560+ aod::McCollisions const & mccollisions,
561+ SelectedCandidatesMc const & candidates,
562+ MatchedGenCandidatesMc const & particles,
563+ TracksWPid const & tracks)
564+ {
565+ if (fillOnlySignal) {
566+ fillMcTables (collisions, mccollisions, reconstructedCandSig, particles, tracks);
567+ } else if (fillOnlyBackground) {
568+ fillMcTables (collisions, mccollisions, reconstructedCandBkg, particles, tracks);
569+ } else {
570+ fillMcTables (collisions, mccollisions, candidates, particles, tracks);
571+ }
572+ }
573+
574+ PROCESS_SWITCH (HfTreeCreatorDplusToPiKPi, processMc, " Process MC" , false );
575+
576+ void processMcWCent (CollisionsCent const & collisions,
577+ aod::McCollisions const & mccollisions,
578+ SelectedCandidatesMc const & candidates,
579+ MatchedGenCandidatesMc const & particles,
580+ TracksWPid const & tracks)
581+ {
582+ if (fillOnlySignal) {
583+ fillMcTables (collisions, mccollisions, reconstructedCandSig, particles, tracks);
584+ } else if (fillOnlyBackground) {
585+ fillMcTables (collisions, mccollisions, reconstructedCandBkg, particles, tracks);
586+ } else {
587+ fillMcTables (collisions, mccollisions, candidates, particles, tracks);
588+ }
589+ }
590+
677591 PROCESS_SWITCH (HfTreeCreatorDplusToPiKPi, processMcWCent, " Process MC with cent" , false );
592+
593+ void processMcSgnWMl (aod::Collisions const & collisions,
594+ aod::McCollisions const & mccollisions,
595+ SelectedCandidatesMcWithMl const &,
596+ MatchedGenCandidatesMc const & particles,
597+ TracksWPid const & tracks)
598+ {
599+ fillMcTables<true >(collisions, mccollisions, reconstructedCandSigMl, particles, tracks);
600+ }
601+
602+ PROCESS_SWITCH (HfTreeCreatorDplusToPiKPi, processMcSgnWMl, " Process MC signal with ML info" , false );
603+
604+ void processMcSgnWCentMl (CollisionsCent const & collisions,
605+ aod::McCollisions const & mccollisions,
606+ SelectedCandidatesMcWithMl const &,
607+ MatchedGenCandidatesMc const & particles,
608+ TracksWPid const & tracks)
609+ {
610+ fillMcTables<true >(collisions, mccollisions, reconstructedCandSigMl, particles, tracks);
611+ }
612+
613+ PROCESS_SWITCH (HfTreeCreatorDplusToPiKPi, processMcSgnWCentMl, " Process MC signal with cent and ML info" , false );
678614};
679615
680616WorkflowSpec defineDataProcessing (ConfigContext const & cfgc)
0 commit comments