Skip to content

Commit 76a6594

Browse files
authored
PWGHF: Add XicPlus to Xi Pi Pi workflow (#6604)
1 parent 3c4208d commit 76a6594

9 files changed

Lines changed: 2242 additions & 0 deletions

PWGHF/Core/SelectorCuts.h

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -700,6 +700,55 @@ static const std::vector<std::string> labelsPt = {
700700
static const std::vector<std::string> labelsCutVar = {"m", "pT p", "pT K", "pT Pi", "chi2PCA", "decay length", "cos pointing angle", "decLengthXY", "normDecLXY", "ct", "impParXY"};
701701
} // namespace hf_cuts_xic_to_p_k_pi
702702

703+
namespace hf_cuts_xic_to_xi_pi_pi
704+
{
705+
static const int nBinsPt = 10;
706+
static const int nCutVars = 12;
707+
// default values for the pT bin edges (can be used to configure histogram axis)
708+
// offset by 1 from the bin numbers in cuts array
709+
constexpr double binsPt[nBinsPt + 1] = {
710+
0.,
711+
1.,
712+
2.,
713+
3.,
714+
4.,
715+
5.,
716+
6.,
717+
8.,
718+
12.,
719+
24.,
720+
36.};
721+
auto vecBinsPt = std::vector<double>{binsPt, binsPt + nBinsPt + 1};
722+
723+
// default values for the cuts m ptXi ptPi0 ptPi1 chi2PCA dL dLXY cosp cospXY impParXY Xi Pi0 Pi1
724+
constexpr double cuts[nBinsPt][nCutVars] = {{0.4, 0.4, 0.4, 0.4, 1e-5, 0.5, 0.5, 0.9, 0.9, 0.1, 0.1, 0.1}, /* 0 < pT < 1 */
725+
{0.4, 0.4, 0.4, 0.4, 1e-5, 0.5, 0.5, 0.9, 0.9, 0.1, 0.1, 0.1}, /* 1 < pT < 2 */
726+
{0.4, 0.4, 0.4, 0.4, 1e-5, 0.5, 0.5, 0.9, 0.9, 0.1, 0.1, 0.1}, /* 2 < pT < 3 */
727+
{0.4, 0.4, 0.4, 0.4, 1e-5, 0.5, 0.5, 0.9, 0.9, 0.1, 0.1, 0.1}, /* 3 < pT < 4 */
728+
{0.4, 0.4, 0.4, 0.4, 1e-5, 0.5, 0.5, 0.9, 0.9, 0.1, 0.1, 0.1}, /* 4 < pT < 5 */
729+
{0.4, 0.4, 0.4, 0.4, 1e-5, 0.5, 0.5, 0.9, 0.9, 0.1, 0.1, 0.1}, /* 5 < pT < 6 */
730+
{0.4, 0.4, 0.4, 0.4, 1e-5, 0.5, 0.5, 0.9, 0.9, 0.1, 0.1, 0.1}, /* 6 < pT < 8 */
731+
{0.4, 0.4, 0.4, 0.4, 1e-5, 0.5, 0.5, 0.9, 0.9, 0.1, 0.1, 0.1}, /* 8 < pT < 10 */
732+
{0.4, 0.4, 0.4, 0.4, 1e-5, 0.5, 0.5, 0.9, 0.9, 0.1, 0.1, 0.1}, /* 12 < pT < 24 */
733+
{0.4, 0.4, 0.4, 0.4, 1e-5, 0.5, 0.5, 0.9, 0.9, 0.1, 0.1, 0.1}}; /* 24 < pT < 36 */
734+
735+
// row labels
736+
static const std::vector<std::string> labelsPt = {
737+
"pT bin 0",
738+
"pT bin 1",
739+
"pT bin 2",
740+
"pT bin 3",
741+
"pT bin 4",
742+
"pT bin 5",
743+
"pT bin 6",
744+
"pT bin 7",
745+
"pT bin 8",
746+
"pT bin 9"};
747+
748+
// column labels
749+
static const std::vector<std::string> labelsCutVar = {"m", "pT Xi", "pT Pi0", "pT Pi1", "chi2PCA", "max decay length", "max decay length XY", "cos pointing angle", "cos pointing angle XY", "max impParXY Xi", "max impParXY Pi0", "max impParXY Pi1"};
750+
} // namespace hf_cuts_xic_to_xi_pi_pi
751+
703752
namespace hf_cuts_xicc_to_p_k_pi_pi
704753
{
705754
static const int nBinsPt = 10;

PWGHF/D2H/Tasks/CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,11 @@ o2physics_add_dpl_workflow(task-xic
8989
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore
9090
COMPONENT_NAME Analysis)
9191

92+
o2physics_add_dpl_workflow(task-xic-to-xi-pi-pi
93+
SOURCES taskXicToXiPiPi.cxx
94+
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore
95+
COMPONENT_NAME Analysis)
96+
9297
o2physics_add_dpl_workflow(task-xicc
9398
SOURCES taskXicc.cxx
9499
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore

PWGHF/D2H/Tasks/taskXicToXiPiPi.cxx

Lines changed: 353 additions & 0 deletions
Large diffs are not rendered by default.

PWGHF/DataModel/CandidateReconstructionTables.h

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1320,6 +1320,120 @@ DECLARE_SOA_TABLE(HfToOmegaKMCGen, "AOD", "HFTOOMEKMCGEN", //!
13201320
hf_cand_xic0_omegac0::FlagMcMatchGen, hf_cand_xic0_omegac0::DebugGenCharmBar, hf_cand_xic0_omegac0::DebugGenCasc, hf_cand_xic0_omegac0::DebugGenLambda,
13211321
hf_cand_xic0_omegac0::PtCharmBaryonGen, hf_cand_xic0_omegac0::RapidityCharmBaryonGen, hf_cand_xic0_omegac0::OriginGen, hf_cand::IdxBhadMotherPart, o2::soa::Marker<4>);
13221322

1323+
// specific Xic to Xi Pi Pi candidate properties
1324+
namespace hf_cand_xic_to_xi_pi_pi
1325+
{
1326+
DECLARE_SOA_INDEX_COLUMN_FULL(Pi0, pi0, int, Tracks, "_pi0");
1327+
DECLARE_SOA_INDEX_COLUMN_FULL(Pi1, pi1, int, Tracks, "_pi1");
1328+
DECLARE_SOA_COLUMN(XPvErr, xPvErr, float);
1329+
DECLARE_SOA_COLUMN(YPvErr, yPvErr, float);
1330+
DECLARE_SOA_COLUMN(ZPvErr, zPvErr, float);
1331+
DECLARE_SOA_COLUMN(XSvErr, xSvErr, float);
1332+
DECLARE_SOA_COLUMN(YSvErr, ySvErr, float);
1333+
DECLARE_SOA_COLUMN(ZSvErr, zSvErr, float);
1334+
DECLARE_SOA_COLUMN(XDecayVtxXi, xDecayVtxXi, float);
1335+
DECLARE_SOA_COLUMN(YDecayVtxXi, yDecayVtxXi, float);
1336+
DECLARE_SOA_COLUMN(ZDecayVtxXi, zDecayVtxXi, float);
1337+
DECLARE_SOA_COLUMN(XDecayVtxLambda, xDecayVtxLambda, float);
1338+
DECLARE_SOA_COLUMN(YDecayVtxLambda, yDecayVtxLambda, float);
1339+
DECLARE_SOA_COLUMN(ZDecayVtxLambda, zDecayVtxLambda, float);
1340+
DECLARE_SOA_COLUMN(CosPaXi, cosPaXi, float);
1341+
DECLARE_SOA_COLUMN(CosPaXYXi, cosPaXYXi, float);
1342+
DECLARE_SOA_COLUMN(CosPaLambda, cosPaLambda, float);
1343+
DECLARE_SOA_COLUMN(CosPaXYLambda, cosPaXYLambda, float);
1344+
DECLARE_SOA_COLUMN(InvMassXic, invMassXic, float);
1345+
DECLARE_SOA_COLUMN(Sign, sign, float);
1346+
DECLARE_SOA_COLUMN(InvMassXiPi0, invMassXiPi0, float);
1347+
DECLARE_SOA_COLUMN(InvMassXiPi1, invMassXiPi1, float);
1348+
// KF specific columns
1349+
DECLARE_SOA_COLUMN(DcaPi0Pi1, dcaPi0Pi1, float);
1350+
DECLARE_SOA_COLUMN(DcaPi0Xi, dcaPi0Xi, float);
1351+
DECLARE_SOA_COLUMN(DcaPi1Xi, dcaPi1Xi, float);
1352+
// MC matching result:
1353+
DECLARE_SOA_COLUMN(FlagMcMatchRec, flagMcMatchRec, int8_t); // reconstruction level
1354+
DECLARE_SOA_COLUMN(FlagMcMatchGen, flagMcMatchGen, int8_t); // generator level
1355+
DECLARE_SOA_COLUMN(DebugMcRec, debugMcRec, int8_t); // debug flag for mis-association reconstruction level
1356+
DECLARE_SOA_COLUMN(DebugMcGen, debugMcGen, int8_t);
1357+
DECLARE_SOA_COLUMN(OriginRec, originRec, int8_t);
1358+
DECLARE_SOA_COLUMN(OriginGen, originGen, int8_t);
1359+
1360+
// mapping of decay types
1361+
enum DecayType { XicToXiPiPi = 0, // Ξc± → Ξ∓ π± π±
1362+
XicToXiResPiToXiPiPi, // Ξc± → Ξ(1530) π± → Ξ∓ π± π±
1363+
NDecayType };
1364+
} // end of namespace hf_cand_xic_to_xi_pi_pi
1365+
1366+
// declare dedicated Xic to Xi Pi Pi candidate table
1367+
DECLARE_SOA_TABLE(HfCandXicBase, "AOD", "HFCANDXICBASE",
1368+
hf_cand::CollisionId,
1369+
collision::PosX, collision::PosY, collision::PosZ,
1370+
hf_cand_xic_to_xi_pi_pi::XPvErr, hf_cand_xic_to_xi_pi_pi::YPvErr, hf_cand_xic_to_xi_pi_pi::ZPvErr,
1371+
// 3-prong specific columns
1372+
cascdata::CascadeId, hf_cand_xic_to_xi_pi_pi::Pi0Id, hf_cand_xic_to_xi_pi_pi::Pi1Id,
1373+
cascdata::BachelorId, cascdata::PosTrackId, cascdata::NegTrackId,
1374+
hf_cand::XSecondaryVertex, hf_cand::YSecondaryVertex, hf_cand::ZSecondaryVertex,
1375+
hf_cand_xic_to_xi_pi_pi::XSvErr, hf_cand_xic_to_xi_pi_pi::YSvErr, hf_cand_xic_to_xi_pi_pi::ZSvErr,
1376+
hf_cand::ErrorDecayLength, hf_cand::ErrorDecayLengthXY,
1377+
hf_cand::Chi2PCA, hf_cand_xic_to_xi_pi_pi::InvMassXic, hf_cand_xic_to_xi_pi_pi::Sign,
1378+
hf_cand::PxProng0, hf_cand::PyProng0, hf_cand::PzProng0,
1379+
hf_cand::PxProng1, hf_cand::PyProng1, hf_cand::PzProng1,
1380+
hf_cand::PxProng2, hf_cand::PyProng2, hf_cand::PzProng2,
1381+
hf_cand::ImpactParameter0, hf_cand::ImpactParameter1, hf_cand::ImpactParameter2,
1382+
hf_cand::ErrorImpactParameter0, hf_cand::ErrorImpactParameter1, hf_cand::ErrorImpactParameter2,
1383+
// cascade specific columns
1384+
hf_cand_xic_to_xi_pi_pi::XDecayVtxXi, hf_cand_xic_to_xi_pi_pi::YDecayVtxXi, hf_cand_xic_to_xi_pi_pi::ZDecayVtxXi,
1385+
hf_cand_xic_to_xi_pi_pi::XDecayVtxLambda, hf_cand_xic_to_xi_pi_pi::YDecayVtxLambda, hf_cand_xic_to_xi_pi_pi::ZDecayVtxLambda,
1386+
hf_cand_xic_to_xi_pi_pi::CosPaXi, hf_cand_xic_to_xi_pi_pi::CosPaXYXi, hf_cand_xic_to_xi_pi_pi::CosPaLambda, hf_cand_xic_to_xi_pi_pi::CosPaXYLambda,
1387+
hf_cand_xic_to_xi_pi_pi::InvMassXiPi0, hf_cand_xic_to_xi_pi_pi::InvMassXiPi1,
1388+
/* dynamic columns */
1389+
hf_cand::RSecondaryVertex<hf_cand::XSecondaryVertex, hf_cand::YSecondaryVertex>,
1390+
hf_cand::DecayLength<collision::PosX, collision::PosY, collision::PosZ, hf_cand::XSecondaryVertex, hf_cand::YSecondaryVertex, hf_cand::ZSecondaryVertex>,
1391+
hf_cand::DecayLengthXY<collision::PosX, collision::PosY, hf_cand::XSecondaryVertex, hf_cand::YSecondaryVertex>,
1392+
hf_cand::DecayLengthNormalised<collision::PosX, collision::PosY, collision::PosZ, hf_cand::XSecondaryVertex, hf_cand::YSecondaryVertex, hf_cand::ZSecondaryVertex, hf_cand::ErrorDecayLength>,
1393+
hf_cand::DecayLengthXYNormalised<collision::PosX, collision::PosY, hf_cand::XSecondaryVertex, hf_cand::YSecondaryVertex, hf_cand::ErrorDecayLengthXY>,
1394+
hf_cand::ImpactParameterNormalised0<hf_cand::ImpactParameter0, hf_cand::ErrorImpactParameter0>,
1395+
hf_cand::ImpactParameterNormalised1<hf_cand::ImpactParameter1, hf_cand::ErrorImpactParameter1>,
1396+
hf_cand::ImpactParameterNormalised2<hf_cand::ImpactParameter2, hf_cand::ErrorImpactParameter2>,
1397+
/* dynamic columns that use daughter momentum components */
1398+
hf_cand::PtProng0<hf_cand::PxProng0, hf_cand::PyProng0>,
1399+
hf_cand::PtProng1<hf_cand::PxProng1, hf_cand::PyProng1>,
1400+
hf_cand::PtProng2<hf_cand::PxProng2, hf_cand::PyProng2>,
1401+
/* dynamic columns that use candidate momentum components */
1402+
hf_cand::Pt<hf_cand_3prong::Px, hf_cand_3prong::Py>,
1403+
hf_cand::P<hf_cand_3prong::Px, hf_cand_3prong::Py, hf_cand_3prong::Pz>,
1404+
hf_cand::PVector<hf_cand_3prong::Px, hf_cand_3prong::Py, hf_cand_3prong::Pz>,
1405+
hf_cand::CPA<collision::PosX, collision::PosY, collision::PosZ, hf_cand::XSecondaryVertex, hf_cand::YSecondaryVertex, hf_cand::ZSecondaryVertex, hf_cand_3prong::Px, hf_cand_3prong::Py, hf_cand_3prong::Pz>,
1406+
hf_cand::CPAXY<collision::PosX, collision::PosY, hf_cand::XSecondaryVertex, hf_cand::YSecondaryVertex, hf_cand_3prong::Px, hf_cand_3prong::Py>,
1407+
hf_cand::Ct<collision::PosX, collision::PosY, collision::PosZ, hf_cand::XSecondaryVertex, hf_cand::YSecondaryVertex, hf_cand::ZSecondaryVertex, hf_cand_3prong::Px, hf_cand_3prong::Py, hf_cand_3prong::Pz>,
1408+
hf_cand::ImpactParameterXY<collision::PosX, collision::PosY, collision::PosZ, hf_cand::XSecondaryVertex, hf_cand::YSecondaryVertex, hf_cand::ZSecondaryVertex, hf_cand_3prong::Px, hf_cand_3prong::Py, hf_cand_3prong::Pz>,
1409+
hf_cand_3prong::MaxNormalisedDeltaIP<collision::PosX, collision::PosY, hf_cand::XSecondaryVertex, hf_cand::YSecondaryVertex, hf_cand::ErrorDecayLengthXY, hf_cand_3prong::Px, hf_cand_3prong::Py, hf_cand::ImpactParameter0, hf_cand::ErrorImpactParameter0, hf_cand::ImpactParameter1, hf_cand::ErrorImpactParameter1, hf_cand::ImpactParameter2, hf_cand::ErrorImpactParameter2, hf_cand::PxProng0, hf_cand::PyProng0, hf_cand::PxProng1, hf_cand::PyProng1, hf_cand::PxProng2, hf_cand::PyProng2>,
1410+
hf_cand::Eta<hf_cand_3prong::Px, hf_cand_3prong::Py, hf_cand_3prong::Pz>,
1411+
hf_cand::Phi<hf_cand_3prong::Px, hf_cand_3prong::Py>,
1412+
hf_cand::Y<hf_cand_3prong::Px, hf_cand_3prong::Py, hf_cand_3prong::Pz>,
1413+
hf_cand::E<hf_cand_3prong::Px, hf_cand_3prong::Py, hf_cand_3prong::Pz>);
1414+
1415+
// extended table with expression columns that can be used as arguments of dynamic columns
1416+
DECLARE_SOA_EXTENDED_TABLE_USER(HfCandXicExt, HfCandXicBase, "HFCANDXICEXT",
1417+
hf_cand_3prong::Px, hf_cand_3prong::Py, hf_cand_3prong::Pz);
1418+
1419+
using HfCandXic = HfCandXicExt;
1420+
1421+
DECLARE_SOA_TABLE(HfCandXicKF, "AOD", "HFCANDXICKF",
1422+
cascdata::KFCascadeChi2, cascdata::KFV0Chi2,
1423+
hf_cand_xic_to_xi_pi_pi::DcaPi0Pi1, hf_cand_xic_to_xi_pi_pi::DcaPi0Xi, hf_cand_xic_to_xi_pi_pi::DcaPi1Xi);
1424+
1425+
// table with results of reconstruction level MC matching
1426+
DECLARE_SOA_TABLE(HfCandXicMcRec, "AOD", "HFCANDXICMCREC", //!
1427+
hf_cand_xic_to_xi_pi_pi::FlagMcMatchRec,
1428+
hf_cand_xic_to_xi_pi_pi::DebugMcRec,
1429+
hf_cand_xic_to_xi_pi_pi::OriginRec);
1430+
1431+
// table with results of generator level MC matching
1432+
DECLARE_SOA_TABLE(HfCandXicMcGen, "AOD", "HFCANDXICMCGEN", //!
1433+
hf_cand_xic_to_xi_pi_pi::FlagMcMatchGen,
1434+
hf_cand_xic_to_xi_pi_pi::DebugMcGen,
1435+
hf_cand_xic_to_xi_pi_pi::OriginGen);
1436+
13231437
// specific chic candidate properties
13241438
namespace hf_cand_chic
13251439
{

PWGHF/DataModel/CandidateSelectionTables.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -301,16 +301,22 @@ DECLARE_SOA_TABLE(HfSelChicToJpsiGamma, "AOD", "HFSELCHIC", //!
301301

302302
namespace hf_sel_candidate_xic
303303
{
304+
// XicPlus to P K Pi
304305
DECLARE_SOA_COLUMN(IsSelXicToPKPi, isSelXicToPKPi, int); //!
305306
DECLARE_SOA_COLUMN(IsSelXicToPiKP, isSelXicToPiKP, int); //!
306307
DECLARE_SOA_COLUMN(MlProbXicToPKPi, mlProbXicToPKPi, std::vector<float>); //!
307308
DECLARE_SOA_COLUMN(MlProbXicToPiKP, mlProbXicToPiKP, std::vector<float>); //!
309+
// XicPlus to Xi Pi Pi
310+
DECLARE_SOA_COLUMN(IsSelXicToXiPiPi, isSelXicToXiPiPi, int); //!
308311
} // namespace hf_sel_candidate_xic
309312

310313
DECLARE_SOA_TABLE(HfSelXicToPKPi, "AOD", "HFSELXIC", //!
311314
hf_sel_candidate_xic::IsSelXicToPKPi, hf_sel_candidate_xic::IsSelXicToPiKP);
312315
DECLARE_SOA_TABLE(HfMlXicToPKPi, "AOD", "HFMLXIC", //!
313316
hf_sel_candidate_xic::MlProbXicToPKPi, hf_sel_candidate_xic::MlProbXicToPiKP);
317+
// XicPlus to Xi Pi Pi
318+
DECLARE_SOA_TABLE(HfSelXicToXiPiPi, "AOD", "HFSELXICTOXI2PI", //!
319+
hf_sel_candidate_xic::IsSelXicToXiPiPi);
314320

315321
namespace hf_sel_candidate_xicc
316322
{

PWGHF/TableProducer/CMakeLists.txt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,11 @@ o2physics_add_dpl_workflow(candidate-creator-xic0-omegac0
8080
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2::DCAFitter O2Physics::EventFilteringUtils
8181
COMPONENT_NAME Analysis)
8282

83+
o2physics_add_dpl_workflow(candidate-creator-xic-to-xi-pi-pi
84+
SOURCES candidateCreatorXicToXiPiPi.cxx
85+
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2::DCAFitter KFParticle::KFParticle
86+
COMPONENT_NAME Analysis)
87+
8388
o2physics_add_dpl_workflow(candidate-creator-xicc
8489
SOURCES candidateCreatorXicc.cxx
8590
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2::DCAFitter
@@ -162,6 +167,11 @@ o2physics_add_dpl_workflow(candidate-selector-xic-to-p-k-pi
162167
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2Physics::MLCore
163168
COMPONENT_NAME Analysis)
164169

170+
o2physics_add_dpl_workflow(candidate-selector-xic-to-xi-pi-pi
171+
SOURCES candidateSelectorXicToXiPiPi.cxx
172+
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2Physics::MLCore
173+
COMPONENT_NAME Analysis)
174+
165175
o2physics_add_dpl_workflow(candidate-selector-xicc-to-p-k-pi-pi
166176
SOURCES candidateSelectorXiccToPKPiPi.cxx
167177
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore
@@ -239,6 +249,11 @@ o2physics_add_dpl_workflow(tree-creator-xic-to-p-k-pi
239249
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore
240250
COMPONENT_NAME Analysis)
241251

252+
o2physics_add_dpl_workflow(tree-creator-xic-to-xi-pi-pi
253+
SOURCES treeCreatorXicToXiPiPi.cxx
254+
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore
255+
COMPONENT_NAME Analysis)
256+
242257
o2physics_add_dpl_workflow(tree-creator-xicc-to-p-k-pi-pi
243258
SOURCES treeCreatorXiccToPKPiPi.cxx
244259
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore

0 commit comments

Comments
 (0)