Skip to content

Commit 04168ad

Browse files
slimmer version of the V0 workflow
1 parent 84edbdd commit 04168ad

File tree

1 file changed

+166
-123
lines changed

1 file changed

+166
-123
lines changed

PWGLF/TableProducer/Nuspex/LFTreeCreatorClusterStudies.cxx

Lines changed: 166 additions & 123 deletions
Original file line numberDiff line numberDiff line change
@@ -429,6 +429,153 @@ struct LfTreeCreatorClusterStudies {
429429
return true;
430430
}
431431

432+
uint8_t selectV0MotherHypothesis(float massK0sV0, float massLambdaV0, float massAntiLambdaV0, float alphaAP, const o2::aod::V0& v0)
433+
{
434+
uint8_t v0Bitmask(0);
435+
if (v0.isPhotonV0()) {
436+
SETBIT(v0Bitmask, Photon);
437+
}
438+
if (std::abs(massK0sV0 - o2::constants::physics::MassK0Short) < v0setting_massWindowK0s) {
439+
SETBIT(v0Bitmask, K0s);
440+
}
441+
if ((std::abs(massLambdaV0 - o2::constants::physics::MassLambda0) < v0setting_massWindowLambda) && (alphaAP > 0)) {
442+
SETBIT(v0Bitmask, Lambda);
443+
}
444+
if ((std::abs(massAntiLambdaV0 - o2::constants::physics::MassLambda0) < v0setting_massWindowLambda) && (alphaAP < 0)) {
445+
SETBIT(v0Bitmask, AntiLambda);
446+
}
447+
448+
}
449+
450+
bool selectPidV0Daughters(Candidate & candidatePos, Candidate& candidateNeg, const o2::aod::Track& posTrack,
451+
const o2::aod::Track& negTrack, const std::array<float, 3>& momMother, float qtAP, uint8_t v0Bitmask)
452+
{
453+
if (TESTBIT(v0Bitmask, Lambda)) {
454+
if (qtAP < lambdasetting_qtAPcut)
455+
return false;
456+
if (std::abs(posTrack.tpcNSigmaPr()) > v0setting_nsigmatpcPr || std::abs(negTrack.tpcNSigmaPi()) > v0setting_nsigmatpcPi)
457+
return false;
458+
if (std::hypot(momMother[0], momMother[1], momMother[2]) < lambdasetting_pmin)
459+
return false;
460+
candidatePos.partID = PartID::pr;
461+
candidateNeg.partID = PartID::pi;
462+
candidatePos.tpcNSigma = posTrack.tpcNSigmaPr();
463+
candidateNeg.tpcNSigma = negTrack.tpcNSigmaPi();
464+
m_hAnalysis.fill(HIST("v0_type"), V0Type::Lambda);
465+
466+
} else if (TESTBIT(v0Bitmask, AntiLambda)) {
467+
if (qtAP < lambdasetting_qtAPcut)
468+
return;
469+
if (std::abs(posTrack.tpcNSigmaPi()) > v0setting_nsigmatpcPr || std::abs(negTrack.tpcNSigmaPr()) > v0setting_nsigmatpcPi)
470+
return false;
471+
if (std::hypot(momMother[0], momMother[1], momMother[2]) < lambdasetting_pmin)
472+
return false;
473+
candidatePos.partID = PartID::pi;
474+
candidateNeg.partID = PartID::pr;
475+
candidatePos.tpcNSigma = posTrack.tpcNSigmaPi();
476+
candidateNeg.tpcNSigma = negTrack.tpcNSigmaPr();
477+
m_hAnalysis.fill(HIST("v0_type"), V0Type::AntiLambda);
478+
479+
} else if (TESTBIT(v0Bitmask, K0s)) {
480+
m_hAnalysis.fill(HIST("v0_type"), V0Type::K0s);
481+
return false; // K0s not implemented
482+
483+
} else if (TESTBIT(v0Bitmask, Photon)) {
484+
// require photon conversion to happen in one of the Inner Tracker layers (± 0.5 cm resolution)
485+
m_hAnalysis.fill(HIST("photon_conversion_position"), decayVtx[0], decayVtx[1]);
486+
m_hAnalysis.fill(HIST("photon_radiusV0"), radiusV0);
487+
if (!(radiusV0 > 1.76 && radiusV0 < 4.71))
488+
return false;
489+
if (std::abs(posTrack.tpcNSigmaEl()) > v0setting_nsigmatpcEl || std::abs(negTrack.tpcNSigmaEl()) > v0setting_nsigmatpcEl)
490+
return false;
491+
m_hAnalysis.fill(HIST("photon_conversion_position_layer"), decayVtx[0], decayVtx[1]);
492+
candidatePos.partID = PartID::el;
493+
candidateNeg.partID = PartID::el;
494+
candidatePos.tpcNSigma = posTrack.tpcNSigmaEl();
495+
candidateNeg.tpcNSigma = negTrack.tpcNSigmaEl();
496+
m_hAnalysis.fill(HIST("v0_type"), V0Type::Photon);
497+
498+
} else {
499+
return false;
500+
}
501+
502+
return true;
503+
}
504+
505+
/**
506+
* Fill the histograms for the V0 candidate and return the mass of the V0
507+
*/
508+
float fillHistogramsV0(float massLambdaV0, float massAntiLambdaV0,
509+
const std::array<float, 3>& momMother, const std::array<float, 3>& momPos, const std::array<float, 3>& momNeg,
510+
const Candidate& candidatePos, const Candidate& candidateNeg, float alphaAP, float qtAP, float radiusV0, uint8_t v0Bitmask)
511+
{
512+
float massV0{0.f};
513+
m_hAnalysis.fill(HIST("v0_selections"), V0Selections::kV0DaughterDCAtoPV);
514+
if (TESTBIT(v0Bitmask, Lambda)) {
515+
massV0 = massLambdaV0;
516+
m_hAnalysis.fill(HIST("massLambda"), std::hypot(momMother[0], momMother[1], momMother[2]), massLambdaV0);
517+
m_hAnalysis.fill(HIST("armenteros_plot_lambda"), alphaAP, qtAP);
518+
m_hAnalysis.fill(HIST("nSigmaTPCPr"), candidatePos.p, candidatePos.nsigmaTPC);
519+
m_hAnalysis.fill(HIST("nSigmaITSPr"), candidatePos.p, m_responseITS.nSigmaITS<o2::track::PID::Proton>(candidatePos.itsClusterSize, candidatePos.p, candidatePos.eta));
520+
m_hAnalysis.fill(HIST("nSigmaTPCPi"), candidateNeg.p, candidateNeg.nsigmaTPC);
521+
m_hAnalysis.fill(HIST("nSigmaITSPi"), candidateNeg.p, m_responseITS.nSigmaITS<o2::track::PID::Pion>(candidateNeg.itsClusterSize, candidateNeg.p, candidateNeg.eta));
522+
m_hAnalysis.fill(HIST("pmatchingPr"), candidatePos.pTPC, (candidatePos.pTPC - candidatePos.p) / candidatePos.pTPC);
523+
m_hAnalysis.fill(HIST("pmatchingPi"), -candidateNeg.pTPC, (candidateNeg.pTPC - candidateNeg.p) / candidateNeg.pTPC);
524+
525+
} else if (TESTBIT(v0Bitmask, AntiLambda)) {
526+
massV0 = massAntiLambdaV0;
527+
m_hAnalysis.fill(HIST("massLambda"), std::hypot(momMother[0], momMother[1], momMother[2]) * -1.f, massAntiLambdaV0);
528+
// "signed" pt for antimatter
529+
m_hAnalysis.fill(HIST("armenteros_plot_lambda"), alphaAP, qtAP);
530+
m_hAnalysis.fill(HIST("nSigmaTPCPi"), candidatePos.p, candidatePos.nsigmaTPC);
531+
m_hAnalysis.fill(HIST("nSigmaITSPi"), candidatePos.p, m_responseITS.nSigmaITS<o2::track::PID::Pion>(candidatePos.itsClusterSize, candidatePos.p, candidatePos.eta));
532+
m_hAnalysis.fill(HIST("nSigmaTPCPr"), candidateNeg.p, candidateNeg.nsigmaTPC);
533+
m_hAnalysis.fill(HIST("nSigmaITSPr"), candidateNeg.p, m_responseITS.nSigmaITS<o2::track::PID::Proton>(candidateNeg.itsClusterSize, candidateNeg.p, negTrack.eta));
534+
m_hAnalysis.fill(HIST("pmatchingPi"), candidatePos.pTPC, (candidatePos.pTPC - candidatePos.p) / candidatePos.pTPC);
535+
m_hAnalysis.fill(HIST("pmatchingPr"), -candidateNeg.pTPC, (candidateNeg.pTPC - candidateNeg.p) / candidateNeg.pTPC);
536+
537+
} else if (TESTBIT(v0Bitmask, Photon)) {
538+
massV0 = 0.f;
539+
m_hAnalysis.fill(HIST("nSigmaTPCEl"), candidatePos.p, candidatePos.nsigmaTPC);
540+
m_hAnalysis.fill(HIST("nSigmaTPCEl"), candidateNeg.p, candidateNeg.nsigmaTPC);
541+
m_hAnalysis.fill(HIST("nSigmaITSEl"), candidatePos.p, m_responseITS.nSigmaITS<o2::track::PID::Electron>(candidatePos.itsClusterSize, candidatePos.p, candidatePos.eta));
542+
m_hAnalysis.fill(HIST("nSigmaITSEl"), candidateNeg.p, m_responseITS.nSigmaITS<o2::track::PID::Electron>(candidateNeg.itsClusterSize, candidateNeg.p, candidateNeg.eta));
543+
m_hAnalysis.fill(HIST("armenteros_plot_gamma"), alphaAP, qtAP);
544+
m_hAnalysis.fill(HIST("pmatchingEl"), candidatePos.pTPC, (candidatePos.pTPC - candidatePos.p) / candidatePos.pTPC);
545+
m_hAnalysis.fill(HIST("pmatchingEl"), -candidateNeg.pTPC, (candidateNeg.pTPC - candidateNeg.p) / candidateNeg.pTPC);
546+
}
547+
m_hAnalysis.fill(HIST("radiusV0"), radiusV0);
548+
m_hAnalysis.fill(HIST("armenteros_plot"), alphaAP, qtAP);
549+
550+
return massV0;
551+
}
552+
553+
template <bool isMC = false>
554+
void fillTable(const Candidate& candidate)
555+
{
556+
m_ClusterStudiesTable(
557+
candidate.p, // p
558+
candidate.eta, // eta
559+
candidate.phi, // phi
560+
candidate.itsClusterSize, // itsClsize
561+
static_cast<uint8_t>(candidate.partID)); // partID
562+
if (!setting_smallTable) {
563+
m_ClusterStudiesTableExtra(
564+
candidate.pTPC, // pTPC
565+
candidate.pidInTrk, // pidInTrk
566+
candidate.tpcNSigma, // TpcNSigma
567+
candidate.tofNSigma, // TofNSigma
568+
candidate.tofMass, // TofMass
569+
candidate.cosPAMother, // cosPA
570+
candidate.massMother); // massMother
571+
}
572+
573+
if constexpr (isMC) {
574+
m_ClusterStudiesTableMc(
575+
candidate.pdgCode); // pdgCod
576+
}
577+
}
578+
432579
// =========================================================================================================
433580

434581
template <typename T>
@@ -637,61 +784,22 @@ struct LfTreeCreatorClusterStudies {
637784
m_hAnalysis.fill(HIST("Lambda_vs_K0s"), massK0sV0, massLambdaV0);
638785
// float massPhotonV0 = computeMassMother(o2::constants::physics::MassElectron, o2::constants::physics::MassElectron, momPos, momNeg, momMother);
639786

640-
uint8_t v0Bitmask(0);
641-
if (v0.isPhotonV0()) {
642-
SETBIT(v0Bitmask, Photon);
643-
}
644-
if (std::abs(massK0sV0 - o2::constants::physics::MassK0Short) < v0setting_massWindowK0s) {
645-
SETBIT(v0Bitmask, K0s);
646-
}
647-
if ((std::abs(massLambdaV0 - o2::constants::physics::MassLambda0) < v0setting_massWindowLambda) && (alphaAP > 0)) {
648-
SETBIT(v0Bitmask, Lambda);
649-
}
650-
if ((std::abs(massAntiLambdaV0 - o2::constants::physics::MassLambda0) < v0setting_massWindowLambda) && (alphaAP < 0)) {
651-
SETBIT(v0Bitmask, AntiLambda);
652-
}
787+
uint8_t v0Bitmask = selectV0MotherHypothesis(massK0sV0, massLambdaV0, massAntiLambdaV0, alphaAP, v0);
653788
if (v0Bitmask == 0 || (v0Bitmask & (v0Bitmask - 1)) != 0) {
654789
return;
655790
}
656791
m_hAnalysis.fill(HIST("v0_selections"), V0Selections::kV0PID);
657792

658-
uint8_t partID_pos{0}, partID_neg{0};
659-
if (TESTBIT(v0Bitmask, Lambda)) {
660-
if (qtAP < lambdasetting_qtAPcut)
661-
return;
662-
if (std::abs(posTrack.tpcNSigmaPr()) > v0setting_nsigmatpcPr || std::abs(negTrack.tpcNSigmaPi()) > v0setting_nsigmatpcPi)
663-
return;
664-
if (std::hypot(momMother[0], momMother[1], momMother[2]) < lambdasetting_pmin)
665-
return;
666-
partID_pos = PartID::pr;
667-
partID_neg = PartID::pi;
668-
m_hAnalysis.fill(HIST("v0_type"), V0Type::Lambda);
669-
} else if (TESTBIT(v0Bitmask, AntiLambda)) {
670-
if (qtAP < lambdasetting_qtAPcut)
671-
return;
672-
if (std::abs(posTrack.tpcNSigmaPi()) > v0setting_nsigmatpcPr || std::abs(negTrack.tpcNSigmaPr()) > v0setting_nsigmatpcPi)
673-
return;
674-
if (std::hypot(momMother[0], momMother[1], momMother[2]) < lambdasetting_pmin)
675-
return;
676-
partID_pos = PartID::pi;
677-
partID_neg = PartID::pr;
678-
m_hAnalysis.fill(HIST("v0_type"), V0Type::AntiLambda);
679-
} else if (TESTBIT(v0Bitmask, K0s)) {
680-
m_hAnalysis.fill(HIST("v0_type"), V0Type::K0s);
681-
return; // K0s not implemented
682-
} else if (TESTBIT(v0Bitmask, Photon)) {
683-
// require photon conversion to happen in one of the Inner Tracker layers (± 0.5 cm resolution)
684-
m_hAnalysis.fill(HIST("photon_conversion_position"), decayVtx[0], decayVtx[1]);
685-
m_hAnalysis.fill(HIST("photon_radiusV0"), radiusV0);
686-
if (!(radiusV0 > 1.76 && radiusV0 < 4.71))
687-
return;
688-
if (std::abs(posTrack.tpcNSigmaEl()) > v0setting_nsigmatpcEl || std::abs(negTrack.tpcNSigmaEl()) > v0setting_nsigmatpcEl)
689-
return;
690-
m_hAnalysis.fill(HIST("photon_conversion_position_layer"), decayVtx[0], decayVtx[1]);
691-
partID_pos = PartID::el;
692-
partID_neg = PartID::el;
693-
m_hAnalysis.fill(HIST("v0_type"), V0Type::Photon);
694-
} else {
793+
Candidate candidatePos(std::hypot(momPos[0], momPos[1], momPos[2]) * posTrack.sign(),
794+
RecoDecay::eta(momPos), RecoDecay::phi(momPos), posTrack.itsClusterSizes(),
795+
0, posTrack.tpcInnerParam() * posTrack.sign(), posTrack.pidForTracking(),
796+
-999.f, -999.f, -999.f, cosPA, -999.f, 0);
797+
Candidate candidateNeg(std::hypot(momNeg[0], momNeg[1], momNeg[2]) * negTrack.sign(),
798+
RecoDecay::eta(momNeg), RecoDecay::phi(momNeg), negTrack.itsClusterSizes(),
799+
0, negTrack.tpcInnerParam() * negTrack.sign(), negTrack.pidForTracking(),
800+
-999.f, -999.f, -999.f, cosPA, -999.f, 0);
801+
802+
if (!selectPidV0Daughters(candidatePos, candidateNeg, posTrack, negTrack, momMother, qtAP, v0Bitmask)) {
695803
return;
696804
}
697805

@@ -704,80 +812,14 @@ struct LfTreeCreatorClusterStudies {
704812
return;
705813
}
706814

707-
float massV0{0.f};
708-
m_hAnalysis.fill(HIST("v0_selections"), V0Selections::kV0DaughterDCAtoPV);
709-
if (TESTBIT(v0Bitmask, Lambda)) {
710-
massV0 = massLambdaV0;
711-
m_hAnalysis.fill(HIST("massLambda"), std::hypot(momMother[0], momMother[1], momMother[2]), massLambdaV0);
712-
m_hAnalysis.fill(HIST("armenteros_plot_lambda"), alphaAP, qtAP);
713-
m_hAnalysis.fill(HIST("nSigmaTPCPr"), std::hypot(momPos[0], momPos[1], momPos[2]), posTrack.tpcNSigmaPr());
714-
m_hAnalysis.fill(HIST("nSigmaITSPr"), std::hypot(momPos[0], momPos[1], momPos[2]), m_responseITS.nSigmaITS<o2::track::PID::Proton>(posTrack.itsClusterSizes(), posTrack.p(), posTrack.eta()));
715-
m_hAnalysis.fill(HIST("nSigmaTPCPi"), std::hypot(momNeg[0], momNeg[1], momNeg[2]) * -1.f, negTrack.tpcNSigmaPi());
716-
m_hAnalysis.fill(HIST("nSigmaITSPi"), std::hypot(momNeg[0], momNeg[1], momNeg[2]) * -1.f, m_responseITS.nSigmaITS<o2::track::PID::Pion>(negTrack.itsClusterSizes(), negTrack.p(), negTrack.eta()));
717-
m_hAnalysis.fill(HIST("pmatchingPr"), posTrack.tpcInnerParam(), (posTrack.tpcInnerParam() - posTrack.p()) / posTrack.tpcInnerParam());
718-
m_hAnalysis.fill(HIST("pmatchingPi"), -negTrack.tpcInnerParam(), (negTrack.tpcInnerParam() - negTrack.p()) / negTrack.tpcInnerParam());
719-
720-
} else if (TESTBIT(v0Bitmask, AntiLambda)) {
721-
massV0 = massAntiLambdaV0;
722-
m_hAnalysis.fill(HIST("massLambda"), std::hypot(momMother[0], momMother[1], momMother[2]) * -1.f, massAntiLambdaV0);
723-
// "signed" pt for antimatter
724-
m_hAnalysis.fill(HIST("armenteros_plot_lambda"), alphaAP, qtAP);
725-
m_hAnalysis.fill(HIST("nSigmaTPCPi"), std::hypot(momPos[0], momPos[1], momPos[2]), posTrack.tpcNSigmaPi());
726-
m_hAnalysis.fill(HIST("nSigmaITSPi"), std::hypot(momPos[0], momPos[1], momPos[2]), m_responseITS.nSigmaITS<o2::track::PID::Pion>(posTrack.itsClusterSizes(), posTrack.p(), posTrack.eta()));
727-
m_hAnalysis.fill(HIST("nSigmaTPCPr"), std::hypot(momNeg[0], momNeg[1], momNeg[2]) * -1.f, negTrack.tpcNSigmaPr());
728-
m_hAnalysis.fill(HIST("nSigmaITSPr"), std::hypot(momNeg[0], momNeg[1], momNeg[2]) * -1.f, m_responseITS.nSigmaITS<o2::track::PID::Proton>(negTrack.itsClusterSizes(), negTrack.p(), negTrack.eta()));
729-
m_hAnalysis.fill(HIST("pmatchingPi"), posTrack.tpcInnerParam(), (posTrack.tpcInnerParam() - posTrack.p()) / posTrack.tpcInnerParam());
730-
m_hAnalysis.fill(HIST("pmatchingPr"), -negTrack.tpcInnerParam(), (negTrack.tpcInnerParam() - negTrack.p()) / negTrack.tpcInnerParam());
731-
732-
} else if (TESTBIT(v0Bitmask, Photon)) {
733-
massV0 = 0.f;
734-
m_hAnalysis.fill(HIST("nSigmaTPCEl"), std::hypot(momPos[0], momPos[1], momPos[2]), posTrack.tpcNSigmaEl());
735-
m_hAnalysis.fill(HIST("nSigmaTPCEl"), std::hypot(momNeg[0], momNeg[1], momNeg[2]) * -1.f, negTrack.tpcNSigmaEl());
736-
m_hAnalysis.fill(HIST("nSigmaITSEl"), std::hypot(momPos[0], momPos[1], momPos[2]), m_responseITS.nSigmaITS<o2::track::PID::Electron>(posTrack.itsClusterSizes(), posTrack.p(), posTrack.eta()));
737-
m_hAnalysis.fill(HIST("nSigmaITSEl"), std::hypot(momNeg[0], momNeg[1], momNeg[2]) * -1.f, m_responseITS.nSigmaITS<o2::track::PID::Electron>(negTrack.itsClusterSizes(), negTrack.p(), negTrack.eta()));
738-
m_hAnalysis.fill(HIST("armenteros_plot_gamma"), alphaAP, qtAP);
739-
m_hAnalysis.fill(HIST("pmatchingEl"), posTrack.tpcInnerParam(), (posTrack.tpcInnerParam() - posTrack.p()) / posTrack.tpcInnerParam());
740-
m_hAnalysis.fill(HIST("pmatchingEl"), -negTrack.tpcInnerParam(), (negTrack.tpcInnerParam() - negTrack.p()) / negTrack.tpcInnerParam());
741-
}
742-
m_hAnalysis.fill(HIST("radiusV0"), radiusV0);
743-
m_hAnalysis.fill(HIST("armenteros_plot"), alphaAP, qtAP);
744-
m_v0TrackParCovs.push_back(v0TrackParCov);
815+
float massV0 = fillHistogramsV0(massLambdaV0, massAntiLambdaV0, momMother, momPos, momNeg, candidatePos, candidateNeg, alphaAP, qtAP, radiusV0, v0Bitmask);
816+
candidatePos.massV0 = massV0;
817+
candidateNeg.massV0 = massV0;
745818

746819
if (!setting_fillV0) {
747820
return;
748821
}
749822

750-
m_ClusterStudiesTable(
751-
std::hypot(momPos[0], momPos[1], momPos[2]) * posTrack.sign(), // p_pos
752-
RecoDecay::eta(momPos), // eta_pos
753-
RecoDecay::phi(momPos), // phi_pos
754-
posTrack.itsClusterSizes(), // itsClsize_pos
755-
partID_pos); // partID_pos
756-
m_ClusterStudiesTable(
757-
std::hypot(momNeg[0], momNeg[1], momNeg[2]) * negTrack.sign(), // p_neg
758-
RecoDecay::eta(momNeg), // eta_neg
759-
RecoDecay::phi(momNeg), // phi_neg
760-
negTrack.itsClusterSizes(), // itsClsize_neg
761-
partID_neg); // partID_neg
762-
if (!setting_smallTable) {
763-
m_ClusterStudiesTableExtra(
764-
posTrack.tpcInnerParam() * posTrack.sign(), // pTPC_pos
765-
posTrack.pidForTracking(), // pidInTrk_pos
766-
-999.f, // TpcNSigma_pos
767-
-999.f, // TofNSigma_pos
768-
-999.f, // TofMass_pos
769-
cosPA, // cosPA
770-
massV0); // massV0
771-
m_ClusterStudiesTableExtra(
772-
negTrack.tpcInnerParam() * negTrack.sign(), // pTPC_neg
773-
negTrack.pidForTracking(), // pidInTrk_neg
774-
-999.f, // TpcNSigma_neg
775-
-999.f, // TofNSigma_neg
776-
-999.f, // TofMass_neg
777-
cosPA, // cosPA
778-
massV0); // massV0
779-
}
780-
781823
if constexpr (isMC) { // MC
782824
if (!posTrack.has_mcParticle() || !negTrack.has_mcParticle()) {
783825
return;
@@ -786,12 +828,13 @@ struct LfTreeCreatorClusterStudies {
786828
auto posMcParticle = posTrack.mcParticle();
787829
auto negMcParticle = negTrack.mcParticle();
788830

789-
m_ClusterStudiesTableMc(
790-
posMcParticle.pdgCode()); // pdgCode_pos
791-
m_ClusterStudiesTableMc(
792-
negMcParticle.pdgCode()); // pdgCode_neg
831+
candidatePos.pdgCode = posMcParticle.pdgCode();
832+
candidateNeg.pdgCode = negMcParticle.pdgCode();
793833
}
794834

835+
fillTable<isMC>(candidatePos);
836+
fillTable<isMC>(candidateNeg);
837+
795838
m_hAnalysis.fill(HIST("isPositive"), true);
796839
m_hAnalysis.fill(HIST("isPositive"), false);
797840
}

0 commit comments

Comments
 (0)