Skip to content

Commit 9541324

Browse files
authored
[PWGEM/PhotonMeson] add an option to require ITS hit to V0 legs (#12150)
1 parent c5a6262 commit 9541324

File tree

2 files changed

+56
-91
lines changed

2 files changed

+56
-91
lines changed

PWGEM/Dilepton/TableProducer/treeCreatorElectronMLDDA.cxx

Lines changed: 51 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,6 @@ struct TreeCreatorElectronMLDDA {
8181
{"V0/hMassK0Short", "V0 mass K0S", {HistType::kTH1F, {{200, 0.4, 0.6}}}},
8282
{"V0/hMassLambda", "V0 mass Lambda", {HistType::kTH1F, {{100, 1.08, 1.18}}}},
8383
{"V0/hMassAntiLambda", "V0 mass AntiLambda", {HistType::kTH1F, {{100, 1.08, 1.18}}}},
84-
{"hMvsPhiV", "m_{ee} vs. #varphi_{V};#varphi_{V} (rad.);m_{ee} (GeV/c^{2})", {HistType::kTH2F, {{90, 0, M_PI}, {100, 0, 0.1}}}},
8584

8685
{"V0/hTPCdEdx_P_El", "TPC dEdx vs. p;p_{in} (GeV/c);TPC dE/dx", {HistType::kTH2F, {{500, 0, 5}, {200, 0, 200}}}},
8786
{"V0/hTPCdEdx_P_Pi", "TPC dEdx vs. p;p_{in} (GeV/c);TPC dE/dx", {HistType::kTH2F, {{500, 0, 5}, {200, 0, 200}}}},
@@ -120,13 +119,11 @@ struct TreeCreatorElectronMLDDA {
120119
Configurable<double> d_bz_input{"d_bz_input", -999, "bz field, -999 is automatic"};
121120
Configurable<int> useMatCorrType{"useMatCorrType", 2, "0: none, 1: TGeo, 2: LUT"};
122121

123-
Configurable<float> downscaling_electron_primary{"downscaling_electron_primary", 1.1, "down scaling factor to store primary electron for validation"};
124122
Configurable<float> downscaling_electron{"downscaling_electron", 0.005, "down scaling factor to store electron"};
125123
Configurable<float> downscaling_pion{"downscaling_pion", 0.001, "down scaling factor to store pion"};
126124
Configurable<float> downscaling_kaon{"downscaling_kaon", 1.1, "down scaling factor to store kaon"};
127125
Configurable<float> downscaling_proton{"downscaling_proton", 0.005, "down scaling factor to store proton"};
128126

129-
Configurable<float> max_p_for_downscaling_electron_primary{"max_p_for_downscaling_electron_primary", 0.0, "max p to apply down scaling factor to store primary electron for validation"};
130127
Configurable<float> max_p_for_downscaling_electron{"max_p_for_downscaling_electron", 2.0, "max p to apply down scaling factor to store electron"};
131128
Configurable<float> max_p_for_downscaling_pion{"max_p_for_downscaling_pion", 2.0, "max p to apply down scaling factor to store pion"};
132129
Configurable<float> max_p_for_downscaling_kaon{"max_p_for_downscaling_kaon", 0.0, "max p to apply down scaling factor to store kaon"};
@@ -169,8 +166,8 @@ struct TreeCreatorElectronMLDDA {
169166
Configurable<int> cfg_min_ncluster_tpc{"cfg_min_ncluster_tpc", 0, "min ncluster tpc"};
170167
Configurable<int> cfg_min_ncluster_its{"cfg_min_ncluster_its", 4, "min ncluster its"};
171168
Configurable<int> cfg_min_ncluster_itsib{"cfg_min_ncluster_itsib", 1, "min ncluster itsib"};
172-
Configurable<float> cfg_max_chi2tpc{"cfg_max_chi2tpc", 5.0, "max chi2/NclsTPC"};
173-
Configurable<float> cfg_max_chi2its{"cfg_max_chi2its", 6.0, "max chi2/NclsITS"};
169+
Configurable<float> cfg_max_chi2tpc{"cfg_max_chi2tpc", 5.0, "max chi2/NclsTPC"}; // comment
170+
Configurable<float> cfg_max_chi2its{"cfg_max_chi2its", 36.0, "max chi2/NclsITS"};
174171
Configurable<float> cfg_max_dcaxy{"cfg_max_dcaxy", 1.0, "max dca XY in cm"};
175172
Configurable<float> cfg_max_dcaz{"cfg_max_dcaz", 1.0, "max dca Z in cm"};
176173
} trackcuts;
@@ -183,8 +180,8 @@ struct TreeCreatorElectronMLDDA {
183180
Configurable<float> cfg_max_mass_photon{"cfg_max_mass_photon", 0.02, "max mass for photon conversion"};
184181
Configurable<float> cfg_min_mass_k0s{"cfg_min_mass_k0s", 0.490, "min mass for K0S"};
185182
Configurable<float> cfg_max_mass_k0s{"cfg_max_mass_k0s", 0.505, "max mass for K0S"};
186-
Configurable<float> cfg_min_mass_lambda{"cfg_min_mass_lambda", 1.113, "min mass for Lambda rejection"};
187-
Configurable<float> cfg_max_mass_lambda{"cfg_max_mass_lambda", 1.118, "max mass for Lambda rejection"};
183+
Configurable<float> cfg_min_mass_lambda{"cfg_min_mass_lambda", 1.113, "min mass for Lambda"};
184+
Configurable<float> cfg_max_mass_lambda{"cfg_max_mass_lambda", 1.118, "max mass for Lambda"};
188185
Configurable<float> cfg_min_cospa{"cfg_min_cospa", 0.9998, "min cospa for v0"};
189186
Configurable<float> cfg_max_dcadau{"cfg_max_dcadau", 0.2, "max distance between 2 legs for v0"};
190187
Configurable<float> cfg_min_cr2findable_ratio_tpc{"cfg_min_cr2findable_ratio_tpc", 0.8, "min. TPC Ncr/Nf ratio"};
@@ -237,8 +234,8 @@ struct TreeCreatorElectronMLDDA {
237234
std::string prefix = "cascadecut_group";
238235
Configurable<float> cfg_min_mass_lambda{"cfg_min_mass_lambda", 1.11, "min mass for lambda in cascade"};
239236
Configurable<float> cfg_max_mass_lambda{"cfg_max_mass_lambda", 1.12, "max mass for lambda in cascade"};
240-
Configurable<float> cfg_min_mass_Xi{"cfg_min_mass_Xi", 1.31, "min mass for Xi"}; // this is for veto.
241-
Configurable<float> cfg_max_mass_Xi{"cfg_max_mass_Xi", 1.33, "max mass for Xi"}; // this is for veto.
237+
Configurable<float> cfg_min_mass_Xi_veto{"cfg_min_mass_Xi_veto", 1.31, "min mass for Xi veto"};
238+
Configurable<float> cfg_max_mass_Xi_veto{"cfg_max_mass_Xi_veto", 1.33, "max mass for Xi veto"};
242239
Configurable<float> cfg_min_mass_Omega{"cfg_min_mass_Omega", 1.669, "min mass for Omega"};
243240
Configurable<float> cfg_max_mass_Omega{"cfg_max_mass_Omega", 1.675, "max mass for Omega"};
244241
Configurable<float> cfg_min_cospa_v0{"cfg_min_cospa_v0", 0.97, "minimum V0 CosPA in cascade"};
@@ -555,7 +552,7 @@ struct TreeCreatorElectronMLDDA {
555552
bool isElectronTight(TTrack const& track)
556553
{
557554
bool is_El_TPC = v0cuts.cfg_min_TPCNsigmaEl_tight < track.tpcNSigmaEl() && track.tpcNSigmaEl() < v0cuts.cfg_max_TPCNsigmaEl_tight;
558-
bool is_El_TOF = track.hasTOF() && (v0cuts.cfg_min_TOFNsigmaEl_tight < track.tofNSigmaEl() && track.tofNSigmaEl() < v0cuts.cfg_max_TOFNsigmaEl_tight); // TOFreq
555+
bool is_El_TOF = track.hasTOF() ? v0cuts.cfg_min_TOFNsigmaEl_tight < track.tofNSigmaEl() && track.tofNSigmaEl() < v0cuts.cfg_max_TOFNsigmaEl_tight : true; // TOFif
559556
return is_El_TPC && is_El_TOF;
560557
}
561558

@@ -576,7 +573,7 @@ struct TreeCreatorElectronMLDDA {
576573
}
577574

578575
template <typename TCollision, typename TTrack>
579-
void fillTrackTable(TCollision const& collision, TTrack const& track, const uint8_t pidlabel, const uint8_t tracktype, const bool isForValidation)
576+
void fillTrackTable(TCollision const& collision, TTrack const& track, const uint8_t pidlabel, const bool isForValidation)
580577
{
581578
if (store_ele_band_only && !isElectron(track)) {
582579
return;
@@ -591,27 +588,21 @@ struct TreeCreatorElectronMLDDA {
591588
// float dcaXY = mDcaInfoCov.getY();
592589
// float dcaZ = mDcaInfoCov.getZ();
593590

594-
if (tracktype == static_cast<uint8_t>(o2::aod::pwgem::dilepton::ml::Track_Type::kPrimary)) {
595-
if (dist01(engine) > downscaling_electron_primary && trackParCov.getP() < max_p_for_downscaling_electron_primary) {
591+
if (pidlabel == static_cast<uint8_t>(o2::aod::pwgem::dilepton::ml::PID_Label::kElectron)) {
592+
if (dist01(engine) > downscaling_electron && trackParCov.getP() < max_p_for_downscaling_electron) {
596593
return;
597594
}
598-
} else { // secondary
599-
if (pidlabel == static_cast<uint8_t>(o2::aod::pwgem::dilepton::ml::PID_Label::kElectron)) {
600-
if (dist01(engine) > downscaling_electron && trackParCov.getP() < max_p_for_downscaling_electron) {
601-
return;
602-
}
603-
} else if (pidlabel == static_cast<uint8_t>(o2::aod::pwgem::dilepton::ml::PID_Label::kPion)) {
604-
if (dist01(engine) > downscaling_pion && trackParCov.getP() < max_p_for_downscaling_pion) {
605-
return;
606-
}
607-
} else if (pidlabel == static_cast<uint8_t>(o2::aod::pwgem::dilepton::ml::PID_Label::kKaon)) {
608-
if (dist01(engine) > downscaling_kaon && trackParCov.getP() < max_p_for_downscaling_kaon) {
609-
return;
610-
}
611-
} else if (pidlabel == static_cast<uint8_t>(o2::aod::pwgem::dilepton::ml::PID_Label::kProton)) {
612-
if (dist01(engine) > downscaling_proton && trackParCov.getP() < max_p_for_downscaling_proton) {
613-
return;
614-
}
595+
} else if (pidlabel == static_cast<uint8_t>(o2::aod::pwgem::dilepton::ml::PID_Label::kPion)) {
596+
if (dist01(engine) > downscaling_pion && trackParCov.getP() < max_p_for_downscaling_pion) {
597+
return;
598+
}
599+
} else if (pidlabel == static_cast<uint8_t>(o2::aod::pwgem::dilepton::ml::PID_Label::kKaon)) {
600+
if (dist01(engine) > downscaling_kaon && trackParCov.getP() < max_p_for_downscaling_kaon) {
601+
return;
602+
}
603+
} else if (pidlabel == static_cast<uint8_t>(o2::aod::pwgem::dilepton::ml::PID_Label::kProton)) {
604+
if (dist01(engine) > downscaling_proton && trackParCov.getP() < max_p_for_downscaling_proton) {
605+
return;
615606
}
616607
}
617608

@@ -772,46 +763,62 @@ struct TreeCreatorElectronMLDDA {
772763
registry.fill(HIST("V0/hCosPA"), v0.v0cosPA());
773764
registry.fill(HIST("V0/hAP"), v0.alpha(), v0.qtarm());
774765

775-
if (isPion(pos) && isPion(neg)) {
766+
if (isPionTight(pos) && isPion(neg)) {
776767
registry.fill(HIST("V0/hMassK0Short"), v0.mK0Short());
777768
if (v0cuts.cfg_min_mass_k0s < v0.mK0Short() && v0.mK0Short() < v0cuts.cfg_max_mass_k0s) {
778769
registry.fill(HIST("V0/hTPCdEdx_P_Pi"), neg.tpcInnerParam(), neg.tpcSignal());
779770
registry.fill(HIST("V0/hTOFbeta_P_Pi"), neg.tpcInnerParam(), neg.beta());
780-
registry.fill(HIST("V0/hTPCdEdx_P_Pi"), pos.tpcInnerParam(), pos.tpcSignal());
781-
registry.fill(HIST("V0/hTOFbeta_P_Pi"), pos.tpcInnerParam(), pos.beta());
782-
fillTrackTable(collision, pos, static_cast<uint8_t>(o2::aod::pwgem::dilepton::ml::PID_Label::kPion), static_cast<uint8_t>(o2::aod::pwgem::dilepton::ml::Track_Type::kSecondary), false);
783-
fillTrackTable(collision, neg, static_cast<uint8_t>(o2::aod::pwgem::dilepton::ml::PID_Label::kPion), static_cast<uint8_t>(o2::aod::pwgem::dilepton::ml::Track_Type::kSecondary), false);
771+
fillTrackTable(collision, neg, static_cast<uint8_t>(o2::aod::pwgem::dilepton::ml::PID_Label::kPion), false);
772+
}
773+
if (isPion(pos) && isPionTight(neg)) {
774+
registry.fill(HIST("V0/hMassK0Short"), v0.mK0Short());
775+
if (v0cuts.cfg_min_mass_k0s < v0.mK0Short() && v0.mK0Short() < v0cuts.cfg_max_mass_k0s) {
776+
registry.fill(HIST("V0/hTPCdEdx_P_Pi"), pos.tpcInnerParam(), pos.tpcSignal());
777+
registry.fill(HIST("V0/hTOFbeta_P_Pi"), pos.tpcInnerParam(), pos.beta());
778+
fillTrackTable(collision, pos, static_cast<uint8_t>(o2::aod::pwgem::dilepton::ml::PID_Label::kPion), false);
779+
}
784780
}
785781
}
782+
786783
if (isProton(pos) && isPionTight(neg)) {
787784
registry.fill(HIST("V0/hMassLambda"), v0.mLambda());
788785
if (v0cuts.cfg_min_mass_lambda < v0.mLambda() && v0.mLambda() < v0cuts.cfg_max_mass_lambda) {
789-
fillTrackTable(collision, pos, static_cast<uint8_t>(o2::aod::pwgem::dilepton::ml::PID_Label::kProton), static_cast<uint8_t>(o2::aod::pwgem::dilepton::ml::Track_Type::kSecondary), false);
786+
fillTrackTable(collision, pos, static_cast<uint8_t>(o2::aod::pwgem::dilepton::ml::PID_Label::kProton), false);
790787
registry.fill(HIST("V0/hTPCdEdx_P_Pr"), pos.tpcInnerParam(), pos.tpcSignal());
791788
registry.fill(HIST("V0/hTOFbeta_P_Pr"), pos.tpcInnerParam(), pos.beta());
792789
}
793790
}
794791
if (isPionTight(pos) && isProton(neg)) {
795792
registry.fill(HIST("V0/hMassAntiLambda"), v0.mAntiLambda());
796793
if (v0cuts.cfg_min_mass_lambda < v0.mAntiLambda() && v0.mAntiLambda() < v0cuts.cfg_max_mass_lambda) {
797-
fillTrackTable(collision, neg, static_cast<uint8_t>(o2::aod::pwgem::dilepton::ml::PID_Label::kProton), static_cast<uint8_t>(o2::aod::pwgem::dilepton::ml::Track_Type::kSecondary), false);
794+
fillTrackTable(collision, neg, static_cast<uint8_t>(o2::aod::pwgem::dilepton::ml::PID_Label::kProton), false);
798795
registry.fill(HIST("V0/hTPCdEdx_P_Pr"), neg.tpcInnerParam(), neg.tpcSignal());
799796
registry.fill(HIST("V0/hTOFbeta_P_Pr"), neg.tpcInnerParam(), neg.beta());
800797
}
801798
}
802-
if (isElectron(pos) && isElectron(neg)) {
799+
800+
if (isElectronTight(pos) && isElectron(neg)) {
803801
registry.fill(HIST("V0/hMassGamma"), v0.mGamma());
804-
registry.fill(HIST("V0/hXY_Gamma"), v0.x(), v0.y());
805802
registry.fill(HIST("V0/hMassGamma_Rxy"), v0.v0radius(), v0.mGamma());
806-
if ((v0cuts.cfg_min_mass_photon < v0.mGamma() && v0.mGamma() < v0cuts.cfg_max_mass_photon)) {
807-
fillTrackTable(collision, pos, static_cast<uint8_t>(o2::aod::pwgem::dilepton::ml::PID_Label::kElectron), static_cast<uint8_t>(o2::aod::pwgem::dilepton::ml::Track_Type::kSecondary), false);
808-
fillTrackTable(collision, neg, static_cast<uint8_t>(o2::aod::pwgem::dilepton::ml::PID_Label::kElectron), static_cast<uint8_t>(o2::aod::pwgem::dilepton::ml::Track_Type::kSecondary), false);
803+
if (v0cuts.cfg_min_mass_photon < v0.mGamma() && v0.mGamma() < v0cuts.cfg_max_mass_photon) {
804+
registry.fill(HIST("V0/hXY_Gamma"), v0.x(), v0.y());
805+
fillTrackTable(collision, neg, static_cast<uint8_t>(o2::aod::pwgem::dilepton::ml::PID_Label::kElectron), false);
809806
registry.fill(HIST("V0/hTPCdEdx_P_El"), neg.tpcInnerParam(), neg.tpcSignal());
810807
registry.fill(HIST("V0/hTOFbeta_P_El"), neg.tpcInnerParam(), neg.beta());
808+
}
809+
}
810+
811+
if (isElectron(pos) && isElectronTight(neg)) {
812+
registry.fill(HIST("V0/hMassGamma"), v0.mGamma());
813+
registry.fill(HIST("V0/hMassGamma_Rxy"), v0.v0radius(), v0.mGamma());
814+
if (v0cuts.cfg_min_mass_photon < v0.mGamma() && v0.mGamma() < v0cuts.cfg_max_mass_photon) {
815+
registry.fill(HIST("V0/hXY_Gamma"), v0.x(), v0.y());
816+
fillTrackTable(collision, pos, static_cast<uint8_t>(o2::aod::pwgem::dilepton::ml::PID_Label::kElectron), false);
811817
registry.fill(HIST("V0/hTPCdEdx_P_El"), pos.tpcInnerParam(), pos.tpcSignal());
812818
registry.fill(HIST("V0/hTOFbeta_P_El"), pos.tpcInnerParam(), pos.beta());
813819
}
814820
}
821+
815822
} // end of v0 loop
816823

817824
auto cascades_coll = cascades.sliceBy(perCollision_cascade, collision.globalIndex());
@@ -884,66 +891,19 @@ struct TreeCreatorElectronMLDDA {
884891
registry.fill(HIST("Cascade/hRxy_Xi"), cascade.mXi(), cascade.cascradius());
885892
registry.fill(HIST("Cascade/hCTau_Xi"), cascade.mXi(), ctauXi);
886893
}
887-
if (!(cascadecuts.cfg_min_mass_Xi < cascade.mXi() && cascade.mXi() < cascadecuts.cfg_max_mass_Xi) && isKaon(bachelor)) { // reject Xi candidates
894+
if (!(cascadecuts.cfg_min_mass_Xi_veto < cascade.mXi() && cascade.mXi() < cascadecuts.cfg_max_mass_Xi_veto) && isKaon(bachelor)) { // reject Xi candidates
888895
registry.fill(HIST("Cascade/hMassOmega"), cascade.mOmega());
889896
registry.fill(HIST("Cascade/hMassPt_Omega"), cascade.mOmega(), cascade.pt());
890897
registry.fill(HIST("Cascade/hRxy_Omega"), cascade.mOmega(), cascade.cascradius());
891898
registry.fill(HIST("Cascade/hCTau_Omega"), cascade.mOmega(), ctauOmega);
892899
if (cascadecuts.cfg_min_mass_Omega < cascade.mOmega() && cascade.mOmega() < cascadecuts.cfg_max_mass_Omega) { // select Omega candidates
893900
registry.fill(HIST("V0/hTPCdEdx_P_Ka"), bachelor.tpcInnerParam(), bachelor.tpcSignal());
894901
registry.fill(HIST("V0/hTOFbeta_P_Ka"), bachelor.tpcInnerParam(), bachelor.beta());
895-
fillTrackTable(collision, bachelor, static_cast<uint8_t>(o2::aod::pwgem::dilepton::ml::PID_Label::kKaon), static_cast<uint8_t>(o2::aod::pwgem::dilepton::ml::Track_Type::kSecondary), false);
902+
fillTrackTable(collision, bachelor, static_cast<uint8_t>(o2::aod::pwgem::dilepton::ml::PID_Label::kKaon), false);
896903
}
897904
}
898905
} // end of cascade loop
899-
900-
if (downscaling_electron_primary > 0.0) {
901-
std::array<float, 3> ppos{0, 0, 0};
902-
std::array<float, 3> pneg{0, 0, 0};
903-
904-
// for electron sample for validation
905-
auto posTracks_per_coll = posTracks->sliceByCached(o2::aod::track::collisionId, collision.globalIndex(), cache);
906-
auto negTracks_per_coll = negTracks->sliceByCached(o2::aod::track::collisionId, collision.globalIndex(), cache);
907-
for (const auto& [pos, neg] : combinations(CombinationsFullIndexPolicy(posTracks_per_coll, negTracks_per_coll))) {
908-
if (!isElectron(pos) || !isElectron(neg)) {
909-
continue;
910-
}
911-
if (!isSelectedTrack(collision, pos) || !isSelectedTrack(collision, neg)) {
912-
continue;
913-
}
914-
915-
auto posParCov = getTrackParCov(pos);
916-
posParCov.setPID(pos.pidForTracking());
917-
mVtx.setPos({collision.posX(), collision.posY(), collision.posZ()});
918-
mVtx.setCov(collision.covXX(), collision.covXY(), collision.covYY(), collision.covXZ(), collision.covYZ(), collision.covZZ());
919-
o2::base::Propagator::Instance()->propagateToDCABxByBz(mVtx, posParCov, 2.f, matCorr, &mDcaInfoCov);
920-
getPxPyPz(posParCov, ppos);
921-
922-
auto negParCov = getTrackParCov(neg);
923-
negParCov.setPID(pos.pidForTracking());
924-
mVtx.setPos({collision.posX(), collision.posY(), collision.posZ()});
925-
mVtx.setCov(collision.covXX(), collision.covXY(), collision.covYY(), collision.covXZ(), collision.covYZ(), collision.covZZ());
926-
o2::base::Propagator::Instance()->propagateToDCABxByBz(mVtx, negParCov, 2.f, matCorr, &mDcaInfoCov);
927-
getPxPyPz(negParCov, pneg);
928-
929-
ROOT::Math::PtEtaPhiMVector v1(negParCov.getPt(), negParCov.getEta(), negParCov.getPhi() > 0.f ? negParCov.getPhi() : negParCov.getPhi() + 2 * M_PI, o2::constants::physics::MassElectron);
930-
ROOT::Math::PtEtaPhiMVector v2(posParCov.getPt(), posParCov.getEta(), posParCov.getPhi() > 0.f ? posParCov.getPhi() : posParCov.getPhi() + 2 * M_PI, o2::constants::physics::MassElectron);
931-
ROOT::Math::PtEtaPhiMVector v12 = v1 + v2;
932-
float phiv = o2::aod::pwgem::dilepton::utils::pairutil::getPhivPair(ppos[0], ppos[1], ppos[2], pneg[0], pneg[1], pneg[2], pos.sign(), neg.sign(), d_bz);
933-
registry.fill(HIST("hMvsPhiV"), phiv, v12.M());
934-
935-
if ((dalitzcuts.cfg_min_mass_ee < v12.M() && v12.M() < dalitzcuts.cfg_max_mass_ee) && (dalitzcuts.cfg_min_phiv_ee < phiv && phiv < dalitzcuts.cfg_max_phiv_ee)) { // ee from pi0 dalitz decay is found.
936-
if (isElectronTight(pos) && isElectron(neg)) {
937-
fillTrackTable(collision, neg, static_cast<uint8_t>(o2::aod::pwgem::dilepton::ml::PID_Label::kElectron), static_cast<int>(o2::aod::pwgem::dilepton::ml::Track_Type::kPrimary), true); // primary electron candidates
938-
}
939-
if (isElectron(pos) && isElectronTight(neg)) {
940-
fillTrackTable(collision, pos, static_cast<uint8_t>(o2::aod::pwgem::dilepton::ml::PID_Label::kElectron), static_cast<int>(o2::aod::pwgem::dilepton::ml::Track_Type::kPrimary), true); // primary electron candidates
941-
}
942-
}
943-
} // end of ULS pair loop
944-
}
945906
} // end of collision loop
946-
947907
stored_trackIds.clear();
948908
stored_trackIds.shrink_to_fit();
949909
} // end of process

PWGEM/PhotonMeson/TableProducer/photonconversionbuilder.cxx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ struct PhotonConversionBuilder {
9292
Configurable<bool> moveTPCTracks{"moveTPCTracks", true, "Move TPC-only tracks under the collision assumption"};
9393
Configurable<bool> disableITSonlyTracks{"disableITSonlyTracks", false, "disable ITSonly tracks in V0 legs"};
9494
Configurable<bool> disableTPConlyTracks{"disableTPConlyTracks", false, "disable TPConly tracks in V0 legs"};
95+
Configurable<bool> requireITShit{"requireITShit", false, "require ITS hit to V0 legs"};
9596

9697
Configurable<float> maxchi2tpc{"maxchi2tpc", 5.0, "max chi2/NclsTPC"}; // default 4.0 + 1.0
9798
Configurable<float> maxchi2its{"maxchi2its", 6.0, "max chi2/NclsITS"}; // default 5.0 + 1.0
@@ -280,6 +281,10 @@ struct PhotonConversionBuilder {
280281
return false;
281282
}
282283

284+
if (requireITShit && !track.hasITS()) {
285+
return false;
286+
}
287+
283288
if (track.x() > maxX) {
284289
return false;
285290
}

0 commit comments

Comments
 (0)