Skip to content

Commit 084cf40

Browse files
author
Gian Michele Innocenti
committed
Add Xicc tables, and draft of the creator
1 parent d0b5488 commit 084cf40

5 files changed

Lines changed: 361 additions & 3 deletions

File tree

Analysis/Core/include/AnalysisCore/HFSelectorCuts.h

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ enum Code {
2828
kDPlus = 411,
2929
kLambdaCPlus = 4122,
3030
kXiCPlus = 4232,
31+
kXiCCPlusPlus = 4422,
3132
kJpsi = 443
3233
};
3334
} // namespace pdg
@@ -331,6 +332,52 @@ static const std::vector<std::string> pTBinLabels = {
331332
static const std::vector<std::string> cutVarLabels = {"m", "pT p", "pT K", "pT Pi", "DCA", "vertex sigma", "decay length", "cos pointing angle"};
332333
} // namespace hf_cuts_xic_topkpi
333334

335+
namespace hf_cuts_xicc_topkipipi
336+
{
337+
static constexpr int npTBins = 9;
338+
static constexpr int nCutVars = 6;
339+
// default values for the pT bin edges (can be used to configure histogram axis)
340+
// offset by 1 from the bin numbers in cuts array
341+
constexpr double pTBins[npTBins + 1] = {
342+
0,
343+
0.5,
344+
1.0,
345+
2.0,
346+
3.0,
347+
4.0,
348+
5.0,
349+
7.0,
350+
10.0,
351+
15.0,
352+
};
353+
auto pTBins_v = std::vector<double>{pTBins, pTBins + npTBins + 1};
354+
355+
// default values for the cuts
356+
// m CPA d0Xic d0Pi pTXic pTPi
357+
constexpr double cuts[npTBins][nCutVars] = {{0.5, 0.90, 0.001, 0.001, 2.0, 0.3}, /* 0<pt<0.5 */
358+
{0.5, 0.90, 0.001, 0.001, 2.0, 0.3}, /* 0.5<pt<1 */
359+
{0.5, 0.90, 0.001, 0.001, 2.0, 0.3}, /* 1<pt<2 */
360+
{0.5, 0.90, 0.001, 0.001, 2.0, 0.3}, /* 2<pt<3 */
361+
{0.5, 0.90, 0.001, 0.001, 2.0, 0.3}, /* 3<pt<4 */
362+
{0.5, 0.90, 0.001, 0.001, 2.0, 0.3}, /* 4<pt<5 */
363+
{0.5, 0.90, 0.001, 0.001, 2.0, 0.3}, /* 5<pt<7 */
364+
{0.5, 0.90, 0.001, 0.001, 2.0, 0.3}, /* 7<pt<10 */
365+
{0.5, 0.90, 0.001, 0.001, 2.0, 0.3}}; /* 10<pt<15 */
366+
// row labels
367+
static const std::vector<std::string> pTBinLabels = {
368+
"pT bin 0",
369+
"pT bin 1",
370+
"pT bin 2",
371+
"pT bin 3",
372+
"pT bin 4",
373+
"pT bin 5",
374+
"pT bin 6",
375+
"pT bin 7",
376+
"pT bin 8"};
377+
// column labels
378+
static const std::vector<std::string> cutVarLabels = {"m", "CPA", "d0 Xic", "d0 Pi", "pT Xic", "pT Pi"};
379+
} // namespace hf_cuts_xicc_topkipipi
380+
334381
namespace hf_cuts_jpsi_toee
335382
{
336383
static constexpr int npTBins = 9;

Analysis/DataModel/include/AnalysisDataModel/HFCandidateSelectionTables.h

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,16 +42,21 @@ DECLARE_SOA_COLUMN(IsSelJpsiToEE, isSelJpsiToEE, int); //!
4242
} // namespace hf_selcandidate_jpsi
4343
DECLARE_SOA_TABLE(HFSelJpsiToEECandidate, "AOD", "HFSELJPSICAND", //!
4444
hf_selcandidate_jpsi::IsSelJpsiToEE);
45-
} // namespace o2::aod
4645

47-
namespace o2::aod
48-
{
4946
namespace hf_selcandidate_xic
5047
{
5148
DECLARE_SOA_COLUMN(IsSelXicToPKPi, isSelXicToPKPi, int); //!
5249
DECLARE_SOA_COLUMN(IsSelXicToPiKP, isSelXicToPiKP, int); //!
5350
} // namespace hf_selcandidate_xic
5451
DECLARE_SOA_TABLE(HFSelXicToPKPiCandidate, "AOD", "HFSELXICCAND", //!
5552
hf_selcandidate_xic::IsSelXicToPKPi, hf_selcandidate_xic::IsSelXicToPiKP);
53+
54+
namespace hf_selcandidate_xicc
55+
{
56+
DECLARE_SOA_COLUMN(IsSelXiccToPKPiPi, isSelXiccToPKPiPi, int); //!
57+
DECLARE_SOA_COLUMN(IsSelXiccToPiKPPi, isSelXiccToPiKPPi, int); //!
58+
} // namespace hf_selcandidate_xicc
59+
DECLARE_SOA_TABLE(HFSelXiccToPKPiPiCandidate, "AOD", "HFSELXICCCAND", //!
60+
hf_selcandidate_xicc::IsSelXiccToPKPiPi, hf_selcandidate_xicc::IsSelXiccToPiKPPi);
5661
} // namespace o2::aod
5762
#endif // O2_ANALYSIS_HFCANDIDATESELECTIONTABLES_H_

Analysis/DataModel/include/AnalysisDataModel/HFSecondaryVertex.h

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -480,10 +480,37 @@ auto InvMassXicToPiKP(const T& candidate)
480480
{
481481
return InvMassLcpiKp(candidate);
482482
}
483+
484+
// Ξcc±± → p± K∓ π± π±
485+
486+
template <typename T>
487+
auto CtXicc(const T& candidate)
488+
{
489+
return candidate.ct(RecoDecay::getMassPDG(pdg::Code::kXiCCPlusPlus));
490+
}
491+
492+
template <typename T>
493+
auto YXicc(const T& candidate)
494+
{
495+
return candidate.y(RecoDecay::getMassPDG(pdg::Code::kXiCCPlusPlus));
496+
}
497+
498+
template <typename T>
499+
auto EXicc(const T& candidate)
500+
{
501+
return candidate.e(RecoDecay::getMassPDG(pdg::Code::kXiCCPlusPlus));
502+
}
503+
504+
template <typename T>
505+
auto InvMassXiccToXicPi(const T& candidate)
506+
{
507+
return candidate.m(array{RecoDecay::getMassPDG(pdg::Code::kXiCPlus), RecoDecay::getMassPDG(kPiPlus)});
508+
}
483509
} // namespace hf_cand_prong3
484510

485511
// 3-prong decay candidate table
486512
DECLARE_SOA_TABLE(HfCandProng3Base, "AOD", "HFCANDP3BASE", //!
513+
o2::soa::Index<>,
487514
// general columns
488515
HFCAND_COLUMNS,
489516
// 3-prong specific columns
@@ -538,6 +565,70 @@ DECLARE_SOA_TABLE(HfCandProng3MCGen, "AOD", "HFCANDP3MCGEN", //!
538565
hf_cand_prong3::OriginMCGen,
539566
hf_cand_prong3::FlagMCDecayChanGen);
540567

568+
// specific Xicc candidate properties
569+
namespace hf_cand_xicc
570+
{
571+
DECLARE_SOA_INDEX_COLUMN_FULL(Index0, index0, int, HfCandProng3, "_0"); // Xicc index
572+
// MC matching result:
573+
DECLARE_SOA_COLUMN(FlagMCMatchRec, flagMCMatchRec, int8_t); // reconstruction level
574+
DECLARE_SOA_COLUMN(FlagMCMatchGen, flagMCMatchGen, int8_t); // generator level
575+
DECLARE_SOA_COLUMN(OriginMCRec, originMCRec, int8_t); // particle origin, reconstruction level
576+
DECLARE_SOA_COLUMN(OriginMCGen, originMCGen, int8_t); // particle origin, generator level
577+
DECLARE_SOA_COLUMN(FlagMCDecayChanRec, flagMCDecayChanRec, int8_t); // resonant decay channel flag, reconstruction level
578+
DECLARE_SOA_COLUMN(FlagMCDecayChanGen, flagMCDecayChanGen, int8_t); // resonant decay channel flag, generator level
579+
// mapping of decay types
580+
enum DecayType { XiccToXicPi = 0 }; // move this to a dedicated cascade namespace in the future?
581+
} // namespace hf_cand_xicc
582+
583+
// declare dedicated Xicc candidate table
584+
DECLARE_SOA_TABLE(HfCandXiccBase, "AOD", "HFCANDXICCBASE",
585+
// general columns
586+
HFCAND_COLUMNS,
587+
// 2-prong specific columns
588+
hf_cand::PxProng0, hf_cand::PyProng0, hf_cand::PzProng0,
589+
hf_cand::PxProng1, hf_cand::PyProng1, hf_cand::PzProng1,
590+
hf_cand::ImpactParameter0, hf_cand::ImpactParameter1,
591+
hf_cand::ErrorImpactParameter0, hf_cand::ErrorImpactParameter1,
592+
hf_cand_xicc::Index0Id, hf_track_index::Index1Id,
593+
hf_track_index::HFflag,
594+
/* dynamic columns */
595+
hf_cand_prong2::M<hf_cand::PxProng0, hf_cand::PyProng0, hf_cand::PzProng0, hf_cand::PxProng1, hf_cand::PyProng1, hf_cand::PzProng1>,
596+
hf_cand_prong2::M2<hf_cand::PxProng0, hf_cand::PyProng0, hf_cand::PzProng0, hf_cand::PxProng1, hf_cand::PyProng1, hf_cand::PzProng1>,
597+
/* dynamic columns that use candidate momentum components */
598+
hf_cand::Pt<hf_cand_prong2::Px, hf_cand_prong2::Py>,
599+
hf_cand::Pt2<hf_cand_prong2::Px, hf_cand_prong2::Py>,
600+
hf_cand::P<hf_cand_prong2::Px, hf_cand_prong2::Py, hf_cand_prong2::Pz>,
601+
hf_cand::P2<hf_cand_prong2::Px, hf_cand_prong2::Py, hf_cand_prong2::Pz>,
602+
hf_cand::PVector<hf_cand_prong2::Px, hf_cand_prong2::Py, hf_cand_prong2::Pz>,
603+
hf_cand::CPA<collision::PosX, collision::PosY, collision::PosZ, hf_cand::XSecondaryVertex, hf_cand::YSecondaryVertex, hf_cand::ZSecondaryVertex, hf_cand_prong2::Px, hf_cand_prong2::Py, hf_cand_prong2::Pz>,
604+
hf_cand::CPAXY<collision::PosX, collision::PosY, hf_cand::XSecondaryVertex, hf_cand::YSecondaryVertex, hf_cand_prong2::Px, hf_cand_prong2::Py>,
605+
hf_cand::Ct<collision::PosX, collision::PosY, collision::PosZ, hf_cand::XSecondaryVertex, hf_cand::YSecondaryVertex, hf_cand::ZSecondaryVertex, hf_cand_prong2::Px, hf_cand_prong2::Py, hf_cand_prong2::Pz>,
606+
hf_cand::ImpactParameterXY<collision::PosX, collision::PosY, collision::PosZ, hf_cand::XSecondaryVertex, hf_cand::YSecondaryVertex, hf_cand::ZSecondaryVertex, hf_cand_prong2::Px, hf_cand_prong2::Py, hf_cand_prong2::Pz>,
607+
hf_cand_prong2::MaxNormalisedDeltaIP<collision::PosX, collision::PosY, hf_cand::XSecondaryVertex, hf_cand::YSecondaryVertex, hf_cand::ErrorDecayLengthXY, hf_cand_prong2::Px, hf_cand_prong2::Py, hf_cand::ImpactParameter0, hf_cand::ErrorImpactParameter0, hf_cand::ImpactParameter1, hf_cand::ErrorImpactParameter1, hf_cand::PxProng0, hf_cand::PyProng0, hf_cand::PxProng1, hf_cand::PyProng1>,
608+
hf_cand::Eta<hf_cand_prong2::Px, hf_cand_prong2::Py, hf_cand_prong2::Pz>,
609+
hf_cand::Phi<hf_cand_prong2::Px, hf_cand_prong2::Py>,
610+
hf_cand::Y<hf_cand_prong2::Px, hf_cand_prong2::Py, hf_cand_prong2::Pz>,
611+
hf_cand::E<hf_cand_prong2::Px, hf_cand_prong2::Py, hf_cand_prong2::Pz>,
612+
hf_cand::E2<hf_cand_prong2::Px, hf_cand_prong2::Py, hf_cand_prong2::Pz>);
613+
614+
// extended table with expression columns that can be used as arguments of dynamic columns
615+
DECLARE_SOA_EXTENDED_TABLE_USER(HfCandXiccExt, HfCandXiccBase, "HFCANDXICCEXT",
616+
hf_cand_prong2::Px, hf_cand_prong2::Py, hf_cand_prong2::Pz);
617+
618+
using HfCandXicc = HfCandXiccExt;
619+
620+
// table with results of reconstruction level MC matching
621+
DECLARE_SOA_TABLE(HfCandXiccMCRec, "AOD", "HFCANDXICCMCREC", //!
622+
hf_cand_xicc::FlagMCMatchRec,
623+
hf_cand_xicc::OriginMCRec,
624+
hf_cand_xicc::FlagMCDecayChanRec);
625+
626+
// table with results of generator level MC matching
627+
DECLARE_SOA_TABLE(HfCandXiccMCGen, "AOD", "HFCANDXICCMCGEN", //!
628+
hf_cand_xicc::FlagMCMatchGen,
629+
hf_cand_xicc::OriginMCGen,
630+
hf_cand_xicc::FlagMCDecayChanGen);
631+
541632
} // namespace o2::aod
542633

543634
#endif // O2_ANALYSIS_HFSECONDARYVERTEX_H_

Analysis/Tasks/PWGHF/CMakeLists.txt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,11 @@ o2_add_dpl_workflow(hf-candidate-creator-3prong
4343
PUBLIC_LINK_LIBRARIES O2::Framework O2::AnalysisDataModel O2::AnalysisCore O2::DetectorsVertexing ROOT::EG
4444
COMPONENT_NAME Analysis)
4545

46+
o2_add_dpl_workflow(hf-candidate-creator-xicc
47+
SOURCES HFCandidateCreatorXicc.cxx
48+
PUBLIC_LINK_LIBRARIES O2::Framework O2::AnalysisDataModel O2::AnalysisCore O2::DetectorsVertexing ROOT::EG
49+
COMPONENT_NAME Analysis)
50+
4651
o2_add_dpl_workflow(hf-tree-creator-lc-topkpi
4752
SOURCES HFTreeCreatorLcToPKPi.cxx
4853
PUBLIC_LINK_LIBRARIES O2::Framework O2::AnalysisDataModel O2::AnalysisCore O2::DetectorsVertexing ROOT::EG
@@ -73,6 +78,11 @@ o2_add_dpl_workflow(hf-xic-topkpi-candidate-selector
7378
PUBLIC_LINK_LIBRARIES O2::Framework O2::AnalysisDataModel O2::AnalysisCore O2::DetectorsVertexing
7479
COMPONENT_NAME Analysis)
7580

81+
#o2_add_dpl_workflow(hf-xicc-topkpipi-candidate-selector
82+
#SOURCES HFXiccToPKPiPiCandidateSelector.cxx
83+
#PUBLIC_LINK_LIBRARIES O2::Framework O2::AnalysisDataModel O2::AnalysisCore O2::DetectorsVertexing
84+
#COMPONENT_NAME Analysis)
85+
7686
o2_add_dpl_workflow(hf-task-d0
7787
SOURCES taskD0.cxx
7888
PUBLIC_LINK_LIBRARIES O2::Framework O2::AnalysisDataModel O2::AnalysisCore O2::DetectorsVertexing
@@ -103,6 +113,11 @@ o2_add_dpl_workflow(hf-task-xic
103113
PUBLIC_LINK_LIBRARIES O2::Framework O2::AnalysisDataModel O2::AnalysisCore O2::DetectorsVertexing
104114
COMPONENT_NAME Analysis)
105115

116+
#o2_add_dpl_workflow(hf-task-xicc
117+
#SOURCES taskXicc.cxx
118+
#PUBLIC_LINK_LIBRARIES O2::Framework O2::AnalysisDataModel O2::AnalysisCore O2::DetectorsVertexing
119+
#COMPONENT_NAME Analysis)
120+
106121
o2_add_dpl_workflow(hf-task-x
107122
SOURCES taskX.cxx
108123
PUBLIC_LINK_LIBRARIES O2::Framework O2::AnalysisDataModel O2::AnalysisCore O2::DetectorsVertexing

0 commit comments

Comments
 (0)