Skip to content

Commit 395a0fa

Browse files
committed
[PWGEM/Dilepton] update taggingHFE.cxx for ITSib requirement
1 parent 224139f commit 395a0fa

1 file changed

Lines changed: 66 additions & 13 deletions

File tree

PWGEM/Dilepton/Tasks/taggingHFE.cxx

Lines changed: 66 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -199,8 +199,8 @@ struct taggingHFE {
199199
Configurable<float> cfg_max_chi2its{"cfg_max_chi2its", 36.0, "max chi2/NclsITS"};
200200
Configurable<int> cfg_min_ncluster_its{"cfg_min_ncluster_its", 2, "min ncluster its"};
201201
Configurable<int> cfg_min_ncluster_itsib{"cfg_min_ncluster_itsib", 0, "min ncluster itsib"};
202+
Configurable<int> cfg_itsib_type{"cfg_itsib_type", 0, "0:free, 1:OR, 2:AND between 2 legs, else:free"};
202203
Configurable<float> cfg_min_dcaxy{"cfg_min_dcaxy", 0.1, "min dca XY for v0 legs in cm"};
203-
204204
Configurable<float> cfg_max_alpha_veto{"cfg_max_alpha_veto", 0.95, "max alpha for photon conversion rejection"};
205205
Configurable<float> cfg_max_qt_veto{"cfg_max_qt_veto", 0.01, "max qT for photon conversion rejection"};
206206

@@ -241,6 +241,12 @@ struct taggingHFE {
241241
Configurable<float> cfg_min_dcaxy_v0leg{"cfg_min_dcaxy_v0leg", 0.1, "min dca XY for v0 legs in cm"};
242242
Configurable<float> cfg_min_dcaxy_bachelor{"cfg_min_dcaxy_bachelor", 0.05, "min dca XY for bachelor in cm"};
243243
Configurable<float> cfg_min_dcaxy_v0{"cfg_min_dcaxy_v0", 0.0, "min dca XY for V0 in cm"};
244+
245+
Configurable<int> cfg_itsib_type{"cfg_itsib_type", 0, "0:free, 1:OR, 2:AND between 2 legs, else:free"};
246+
Configurable<int> cfg_min_ncluster_its_v0leg{"cfg_min_ncluster_its_v0leg", 2, "min ncluster its"};
247+
Configurable<int> cfg_min_ncluster_itsib_v0leg{"cfg_min_ncluster_itsib_v0leg", 0, "min ncluster itsib"};
248+
Configurable<int> cfg_min_ncluster_its_bachelor{"cfg_min_ncluster_its_bachelor", 2, "min ncluster its"};
249+
Configurable<int> cfg_min_ncluster_itsib_bachelor{"cfg_min_ncluster_itsib_bachelor", 0, "min ncluster itsib"};
244250
} cascadeCut;
245251

246252
struct : ConfigurableGroup {
@@ -467,9 +473,11 @@ struct taggingHFE {
467473
fRegistry.add("Cascade/hPt", "pT of cascade;p_{T} (GeV/c)", kTH1F, {{100, 0, 10}}, false);
468474
fRegistry.add("Cascade/hYPhi", "rapidity vs. #varphi of cascade;#varphi (rad.);rapidity_{#Lambda}", kTH2F, {{90, 0, 2 * M_PI}, {80, -2, +2}}, false);
469475
fRegistry.add("Cascade/hCosPA", "cosPA;cosine of pointing angle", kTH1F, {{100, 0.9, 1}}, false);
476+
fRegistry.add("Cascade/hLxy", "decay length from PV;L_{xy} (cm)", kTH1F, {{100, 0, 10}}, false);
470477
fRegistry.add("Cascade/hDCA2Legs", "distance between 2 legs at PCA;distance between 2 legs (cm)", kTH1F, {{100, 0, 1}}, false);
471478
fRegistry.add("Cascade/hV0CosPA", "cosPA of V0 in cascade;cosine of pointing angle", kTH1F, {{100, 0.9, 1}}, false);
472479
fRegistry.add("Cascade/hV0DCA2Legs", "distance between 2 legs at PCA of V0 in cascade;distance between 2 legs (cm)", kTH1F, {{100, 0, 1}}, false);
480+
fRegistry.add("Cascade/hV0Lxy", "decay length from PV of V0;L_{xy} (cm)", kTH1F, {{100, 0, 10}}, false);
473481
fRegistry.add("Cascade/hMassLambda", "Lambda mass;m_{p#pi^{-}} (GeV/c^{2})", kTH1F, {{100, 1.08, 1.18}}, false);
474482
fRegistry.add("Cascade/hMassXi", "#Xi mass;m_{#Lambda#pi} (GeV/c^{2})", kTH1F, {{100, 1.27, 1.37}}, false);
475483
fRegistry.add("Cascade/hMassOmega", "#Omega mass;m_{#LambdaK} (GeV/c^{2})", kTH1F, {{100, 1.62, 1.72}}, false);
@@ -768,9 +776,10 @@ struct taggingHFE {
768776
return (cascadeCut.cfg_min_mass_Omega < cascade.mOmega() && cascade.mOmega() < cascadeCut.cfg_max_mass_Omega) && (cascade.mXi() < cascadeCut.cfg_min_mass_Xi_veto || cascadeCut.cfg_max_mass_Xi_veto < cascade.mXi());
769777
}
770778

771-
template <bool isMC = true, typename TTrack>
779+
template <int trackType = 0, bool isMC = true, typename TTrack>
772780
bool isSelectedV0Leg(TTrack const& track)
773781
{
782+
// trackType = 0:v0leg, 1:v0leg in cascade, 2:bachelor of cascade only for ITS requirements
774783
if constexpr (isMC) {
775784
if (!track.has_mcParticle()) {
776785
return false;
@@ -781,15 +790,21 @@ struct taggingHFE {
781790
return false;
782791
}
783792

784-
if (track.itsChi2NCl() > v0Cut.cfg_max_chi2its) {
785-
return false;
786-
}
787-
788-
if (track.itsNCls() < v0Cut.cfg_min_ncluster_its) {
789-
return false;
793+
if constexpr (trackType == 0) {
794+
if (track.itsNCls() < v0Cut.cfg_min_ncluster_its) { // must be 2
795+
return false;
796+
}
797+
} else if constexpr (trackType == 1) {
798+
if (track.itsNCls() < cascadeCut.cfg_min_ncluster_its_v0leg) { // must be 2
799+
return false;
800+
}
801+
} else if constexpr (trackType == 2) {
802+
if (track.itsNCls() < cascadeCut.cfg_min_ncluster_its_bachelor) { // must be 2
803+
return false;
804+
}
790805
}
791806

792-
if (track.itsNClsInnerBarrel() < v0Cut.cfg_min_ncluster_itsib) {
807+
if (track.itsChi2NCl() > v0Cut.cfg_max_chi2its) {
793808
return false;
794809
}
795810

@@ -816,6 +831,35 @@ struct taggingHFE {
816831
return true;
817832
}
818833

834+
template <int typeSV, typename TTrack>
835+
bool checkITSibForV0Legs(TTrack const& t1, TTrack const& t2)
836+
{
837+
// typeSV = 0:v0, 1:cascade
838+
if constexpr (typeSV == 0) { // V0 legs
839+
if (v0Cut.cfg_itsib_type == 0) { // free
840+
return true;
841+
} else if (v0Cut.cfg_itsib_type == 1) { // OR
842+
return t1.itsNClsInnerBarrel() >= v0Cut.cfg_min_ncluster_itsib || t2.itsNClsInnerBarrel() >= v0Cut.cfg_min_ncluster_itsib;
843+
} else if (v0Cut.cfg_itsib_type == 2) { // AND
844+
return t1.itsNClsInnerBarrel() >= v0Cut.cfg_min_ncluster_itsib && t2.itsNClsInnerBarrel() >= v0Cut.cfg_min_ncluster_itsib;
845+
} else {
846+
return true;
847+
}
848+
} else if constexpr (typeSV == 1) { // V0 legs in cascade
849+
if (cascadeCut.cfg_itsib_type == 0) { // free
850+
return true;
851+
} else if (cascadeCut.cfg_itsib_type == 1) { // OR
852+
return t1.itsNClsInnerBarrel() >= cascadeCut.cfg_min_ncluster_itsib_v0leg || t2.itsNClsInnerBarrel() >= cascadeCut.cfg_min_ncluster_itsib_v0leg;
853+
} else if (cascadeCut.cfg_itsib_type == 2) { // AND
854+
return t1.itsNClsInnerBarrel() >= cascadeCut.cfg_min_ncluster_itsib_v0leg && t2.itsNClsInnerBarrel() >= cascadeCut.cfg_min_ncluster_itsib_v0leg;
855+
} else {
856+
return true;
857+
}
858+
} else {
859+
return true;
860+
}
861+
}
862+
819863
template <typename TCollision>
820864
void fillEventHistograms(TCollision const& collision)
821865
{
@@ -879,8 +923,10 @@ struct taggingHFE {
879923
fRegistry.fill(HIST("Cascade/hMassLambda"), cascade.mLambda());
880924
fRegistry.fill(HIST("Cascade/hCosPA"), cascade.casccosPA(collision.posX(), collision.posY(), collision.posZ()));
881925
fRegistry.fill(HIST("Cascade/hDCA2Legs"), cascade.dcacascdaughters());
926+
fRegistry.fill(HIST("Cascade/hLxy"), cascade.cascradius());
882927
fRegistry.fill(HIST("Cascade/hV0CosPA"), cascade.v0cosPA(collision.posX(), collision.posY(), collision.posZ()));
883928
fRegistry.fill(HIST("Cascade/hV0DCA2Legs"), cascade.dcaV0daughters());
929+
fRegistry.fill(HIST("Cascade/hV0Lxy"), cascade.v0radius());
884930

885931
if (cascade.sign() < 0) { // Xi- or Omega-
886932
if (isPionFromXi(collision, bachelor) && isProtonFromLambdaFromXi(collision, pos) && isPionFromLambdaFromXi(collision, neg)) {
@@ -1180,7 +1226,7 @@ struct taggingHFE {
11801226
if (pos.sign() * neg.sign() > 0) {
11811227
continue;
11821228
}
1183-
if (!isSelectedV0Leg(pos) || !isSelectedV0Leg(neg)) {
1229+
if (!isSelectedV0Leg<0, true>(pos) || !isSelectedV0Leg<0, true>(neg)) {
11841230
continue;
11851231
}
11861232

@@ -1257,7 +1303,7 @@ struct taggingHFE {
12571303
continue;
12581304
}
12591305

1260-
if (!isSelectedV0Leg(pos) || !isSelectedV0Leg(neg) || !isSelectedV0Leg(bachelor)) {
1306+
if (!isSelectedV0Leg<1, true>(pos) || !isSelectedV0Leg<1, true>(neg) || !isSelectedV0Leg<2, true>(bachelor)) {
12611307
continue;
12621308
}
12631309

@@ -1517,7 +1563,11 @@ struct taggingHFE {
15171563
for (const auto& v0 : v0s_per_coll) {
15181564
auto pos = v0.template posTrack_as<TTracks>();
15191565
auto neg = v0.template negTrack_as<TTracks>();
1520-
if (!isSelectedV0Leg<isMC>(pos) || !isSelectedV0Leg<isMC>(neg)) {
1566+
if (!isSelectedV0Leg<0, isMC>(pos) || !isSelectedV0Leg<0, isMC>(neg)) {
1567+
continue;
1568+
}
1569+
1570+
if (!checkITSibForV0Legs<0>(pos, neg)) {
15211571
continue;
15221572
}
15231573

@@ -1570,7 +1620,10 @@ struct taggingHFE {
15701620
continue;
15711621
}
15721622

1573-
if (!isSelectedV0Leg<isMC>(pos) || !isSelectedV0Leg<isMC>(neg) || !isSelectedV0Leg<isMC>(bachelor)) {
1623+
if (!isSelectedV0Leg<1, isMC>(pos) || !isSelectedV0Leg<1, isMC>(neg) || !isSelectedV0Leg<2, isMC>(bachelor)) {
1624+
continue;
1625+
}
1626+
if (!checkITSibForV0Legs<1>(pos, neg)) {
15741627
continue;
15751628
}
15761629

0 commit comments

Comments
 (0)