Skip to content

Commit 055b344

Browse files
jinhyunniJinhyun Parkalibuild
authored
[PWGHF] Update tree creator for Xic0Omegac0 (#16421)
Co-authored-by: Jinhyun Park <jinhyun@Jinhyunui-MacBookPro.local> Co-authored-by: ALICE Action Bot <alibuild@cern.ch>
1 parent 882ebf7 commit 055b344

1 file changed

Lines changed: 166 additions & 22 deletions

File tree

PWGHF/TableProducer/treeCreatorToXiPiQa.cxx

Lines changed: 166 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
/// \author Krista Smith <krista.lizbeth.smith@cern.ch>, Pusan National University
1818

1919
#include "PWGHF/Core/CentralityEstimation.h"
20+
#include "PWGHF/Core/DecayChannelsLegacy.h"
2021
#include "PWGHF/DataModel/CandidateReconstructionTables.h"
2122
#include "PWGHF/DataModel/CandidateSelectionTables.h"
2223

@@ -38,6 +39,7 @@
3839

3940
using namespace o2;
4041
using namespace o2::framework;
42+
using namespace o2::framework::expressions;
4143

4244
// SV Reco method
4345
enum {
@@ -124,6 +126,8 @@ DECLARE_SOA_COLUMN(EtaPiFromCasc, etaPiFromCasc, float);
124126
DECLARE_SOA_COLUMN(EtaPiFromCharmBaryon, etaPiFromCharmBaryon, float);
125127
DECLARE_SOA_COLUMN(EtaCharmBaryon, etaCharmBaryon, float);
126128
DECLARE_SOA_COLUMN(EtaCascade, etaCascade, float);
129+
DECLARE_SOA_COLUMN(PhiCharmBaryon, phiCharmBaryon, float);
130+
DECLARE_SOA_COLUMN(YCharmBaryon, yCharmBaryon, float);
127131
DECLARE_SOA_COLUMN(EtaV0, etaV0, float);
128132
DECLARE_SOA_COLUMN(DcaXYToPvV0Dau0, dcaXYToPvV0Dau0, float);
129133
DECLARE_SOA_COLUMN(DcaXYToPvV0Dau1, dcaXYToPvV0Dau1, float);
@@ -212,6 +216,8 @@ DECLARE_SOA_COLUMN(CascChi2OverNdf, cascChi2OverNdf, float);
212216
DECLARE_SOA_COLUMN(XicChi2OverNdf, xicChi2OverNdf, float);
213217
DECLARE_SOA_COLUMN(MassV0Chi2OverNdf, massV0Chi2OverNdf, float);
214218
DECLARE_SOA_COLUMN(MassCascChi2OverNdf, massCascChi2OverNdf, float);
219+
// MC
220+
DECLARE_SOA_COLUMN(ParticlePdg, particlePdg, int);
215221
} // namespace full
216222

217223
DECLARE_SOA_TABLE(HfToXiPiEvs, "AOD", "HFTOXIPIEV",
@@ -303,6 +309,15 @@ DECLARE_SOA_TABLE(HfKfXicFulls, "AOD", "HFKFXICFULL",
303309
full::ResultSelections,
304310
full::FlagMcMatchRec, full::DebugMcRec, full::OriginRec, full::CollisionMatched);
305311

312+
DECLARE_SOA_TABLE(HfCandToXiPiGen, "AOD", "HFCANDTOXIPIGEN",
313+
full::InvMassCharmBaryon,
314+
full::PtCharmBaryon,
315+
full::EtaCharmBaryon,
316+
full::PhiCharmBaryon,
317+
full::YCharmBaryon,
318+
full::FlagMcMatchRec,
319+
full::OriginRec,
320+
full::ParticlePdg)
306321
} // namespace o2::aod
307322

308323
/// Writes the full information in an output TTree
@@ -311,15 +326,21 @@ struct HfTreeCreatorToXiPiQa {
311326
Produces<o2::aod::HfToXiPiFulls> rowCandidateFull;
312327
Produces<o2::aod::HfToXiPiLites> rowCandidateLite;
313328
Produces<o2::aod::HfKfXicFulls> rowKfCandidate;
329+
Produces<o2::aod::HfCandToXiPiGen> rowCandidateParticles;
314330
Produces<o2::aod::HfToXiPiEvs> rowEv;
315331

316332
Configurable<float> zPvCut{"zPvCut", 10., "Cut on absolute value of primary vertex z coordinate"};
333+
Configurable<int8_t> genSelection{"genSelection", o2::aod::hf_cand_xic0_omegac0::DecayType::XiczeroToXiPi, "Decay channel to be used to match particle information"};
334+
Configurable<bool> fillGenTable{"fillGenTable", true, "Fill generated MC information if requested"};
317335

318336
using MyTrackTable = soa::Join<aod::Tracks, aod::TrackSelection, aod::TracksExtra>;
319337
using MyEventTable = soa::Join<aod::Collisions, aod::EvSels>;
320338
using MyEventTableWithFT0C = soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Cs>;
321339
using MyEventTableWithFT0M = soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Ms>;
322340
using MyEventTableWithNTracksPV = soa::Join<aod::Collisions, aod::EvSels, aod::CentNTPVs>;
341+
using MatchedGenXiPi = soa::Filtered<soa::Join<aod::McParticles, aod::HfXicToXiPiMCGen>>;
342+
343+
Filter filterGenXiPi = nabs(aod::hf_cand_mc_flag::flagMcMatchGen) == static_cast<int8_t>(BIT(genSelection));
323344

324345
void init(InitContext const&)
325346
{
@@ -611,6 +632,19 @@ struct HfTreeCreatorToXiPiQa {
611632
}
612633
}
613634

635+
template <typename T>
636+
void fillParticle(const T& particle, double massCharmBaryon)
637+
{
638+
rowCandidateParticles(RecoDecay::m(particle.pVector(), particle.e()),
639+
particle.pt(),
640+
particle.eta(),
641+
particle.phi(),
642+
RecoDecay::y(particle.pVector(), massCharmBaryon),
643+
particle.flagMcMatchGen(),
644+
particle.originMcGen(),
645+
particle.pdgCode());
646+
}
647+
614648
////////////////////////////////////
615649
// //
616650
// Process functions //
@@ -783,8 +817,10 @@ struct HfTreeCreatorToXiPiQa {
783817
//*~~~~~~~MC with DCAFitter~~~~~~~~*//
784818
//*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*//
785819

786-
void processMcFullXic0(MyEventTable const& collisions, MyTrackTable const&,
787-
soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi, aod::HfXicToXiPiMCRec> const& candidates)
820+
void processMcFullXic0(MyEventTable const& collisions,
821+
MyTrackTable const&,
822+
soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi, aod::HfXicToXiPiMCRec> const& candidates,
823+
MatchedGenXiPi const& mcParticles)
788824
{
789825
// Filling event properties
790826
rowEv.reserve(collisions.size());
@@ -797,10 +833,20 @@ struct HfTreeCreatorToXiPiQa {
797833
for (const auto& candidate : candidates) {
798834
fillCandidate<DCAFITTER, FULL, false, MyEventTable>(candidate, candidate.flagMcMatchRec(), candidate.debugMcRec(), candidate.originMcRec(), candidate.collisionMatched());
799835
}
836+
837+
// Filling particle properties if requested
838+
if (fillGenTable) {
839+
rowCandidateParticles.reserve(mcParticles.size());
840+
for (const auto& particle : mcParticles) {
841+
fillParticle(particle, o2::constants::physics::MassXiC0);
842+
}
843+
}
800844
}
801845

802-
void processMcFullOmegac0(MyEventTable const& collisions, MyTrackTable const&,
803-
soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi, aod::HfOmegacToXiPiMCRec> const& candidates)
846+
void processMcFullOmegac0(MyEventTable const& collisions,
847+
MyTrackTable const&,
848+
soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi, aod::HfOmegacToXiPiMCRec> const& candidates,
849+
MatchedGenXiPi const& mcParticles)
804850
{
805851
// Filling event properties
806852
rowEv.reserve(collisions.size());
@@ -813,10 +859,20 @@ struct HfTreeCreatorToXiPiQa {
813859
for (const auto& candidate : candidates) {
814860
fillCandidate<DCAFITTER, FULL, false, MyEventTable>(candidate, candidate.flagMcMatchRec(), candidate.debugMcRec(), candidate.originMcRec(), candidate.collisionMatched());
815861
}
862+
863+
// Filling particle properties if requested
864+
if (fillGenTable) {
865+
rowCandidateParticles.reserve(mcParticles.size());
866+
for (const auto& particle : mcParticles) {
867+
fillParticle(particle, o2::constants::physics::MassOmegaC0);
868+
}
869+
}
816870
}
817871

818-
void processMcLiteXic0(MyEventTable const& collisions, MyTrackTable const&,
819-
soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi, aod::HfXicToXiPiMCRec> const& candidates)
872+
void processMcLiteXic0(MyEventTable const& collisions,
873+
MyTrackTable const&,
874+
soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi, aod::HfXicToXiPiMCRec> const& candidates,
875+
MatchedGenXiPi const& mcParticles)
820876
{
821877
// Filling event properties
822878
rowEv.reserve(collisions.size());
@@ -829,10 +885,20 @@ struct HfTreeCreatorToXiPiQa {
829885
for (const auto& candidate : candidates) {
830886
fillCandidate<DCAFITTER, LITE, false, MyEventTable>(candidate, candidate.flagMcMatchRec(), -7, candidate.originMcRec(), candidate.collisionMatched());
831887
}
888+
889+
// Filling particle properties if requested
890+
if (fillGenTable) {
891+
rowCandidateParticles.reserve(mcParticles.size());
892+
for (const auto& particle : mcParticles) {
893+
fillParticle(particle, o2::constants::physics::MassXiC0);
894+
}
895+
}
832896
}
833897

834-
void processMcLiteXic0WithFT0C(MyEventTableWithFT0C const& collisions, MyTrackTable const&,
835-
soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi, aod::HfXicToXiPiMCRec> const& candidates)
898+
void processMcLiteXic0WithFT0C(MyEventTableWithFT0C const& collisions,
899+
MyTrackTable const&,
900+
soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi, aod::HfXicToXiPiMCRec> const& candidates,
901+
MatchedGenXiPi const& mcParticles)
836902
{
837903
// Filling event properties
838904
rowEv.reserve(collisions.size());
@@ -845,10 +911,20 @@ struct HfTreeCreatorToXiPiQa {
845911
for (const auto& candidate : candidates) {
846912
fillCandidate<DCAFITTER, LITE, true, MyEventTableWithFT0C>(candidate, candidate.flagMcMatchRec(), -7, candidate.originMcRec(), candidate.collisionMatched());
847913
}
914+
915+
// Filling particle properties if requested
916+
if (fillGenTable) {
917+
rowCandidateParticles.reserve(mcParticles.size());
918+
for (const auto& particle : mcParticles) {
919+
fillParticle(particle, o2::constants::physics::MassXiC0);
920+
}
921+
}
848922
}
849923

850-
void processMcLiteXic0WithFT0M(MyEventTableWithFT0M const& collisions, MyTrackTable const&,
851-
soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi, aod::HfXicToXiPiMCRec> const& candidates)
924+
void processMcLiteXic0WithFT0M(MyEventTableWithFT0M const& collisions,
925+
MyTrackTable const&,
926+
soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi, aod::HfXicToXiPiMCRec> const& candidates,
927+
MatchedGenXiPi const& mcParticles)
852928
{
853929
// Filling event properties
854930
rowEv.reserve(collisions.size());
@@ -861,10 +937,20 @@ struct HfTreeCreatorToXiPiQa {
861937
for (const auto& candidate : candidates) {
862938
fillCandidate<DCAFITTER, LITE, true, MyEventTableWithFT0M>(candidate, candidate.flagMcMatchRec(), -7, candidate.originMcRec(), candidate.collisionMatched());
863939
}
940+
941+
// Filling particle properties if requested
942+
if (fillGenTable) {
943+
rowCandidateParticles.reserve(mcParticles.size());
944+
for (const auto& particle : mcParticles) {
945+
fillParticle(particle, o2::constants::physics::MassXiC0);
946+
}
947+
}
864948
}
865949

866-
void processMcLiteXic0WithNTracksPV(MyEventTableWithNTracksPV const& collisions, MyTrackTable const&,
867-
soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi, aod::HfXicToXiPiMCRec> const& candidates)
950+
void processMcLiteXic0WithNTracksPV(MyEventTableWithNTracksPV const& collisions,
951+
MyTrackTable const&,
952+
soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi, aod::HfXicToXiPiMCRec> const& candidates,
953+
MatchedGenXiPi const& mcParticles)
868954
{
869955
// Filling event properties
870956
rowEv.reserve(collisions.size());
@@ -877,10 +963,20 @@ struct HfTreeCreatorToXiPiQa {
877963
for (const auto& candidate : candidates) {
878964
fillCandidate<DCAFITTER, LITE, true, MyEventTableWithNTracksPV>(candidate, candidate.flagMcMatchRec(), -7, candidate.originMcRec(), candidate.collisionMatched());
879965
}
966+
967+
// Filling particle properties if requested
968+
if (fillGenTable) {
969+
rowCandidateParticles.reserve(mcParticles.size());
970+
for (const auto& particle : mcParticles) {
971+
fillParticle(particle, o2::constants::physics::MassXiC0);
972+
}
973+
}
880974
}
881975

882-
void processMcLiteOmegac0(MyEventTable const& collisions, MyTrackTable const&,
883-
soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi, aod::HfOmegacToXiPiMCRec> const& candidates)
976+
void processMcLiteOmegac0(MyEventTable const& collisions,
977+
MyTrackTable const&,
978+
soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi, aod::HfOmegacToXiPiMCRec> const& candidates,
979+
MatchedGenXiPi const& mcParticles)
884980
{
885981
// Filling event properties
886982
rowEv.reserve(collisions.size());
@@ -893,6 +989,14 @@ struct HfTreeCreatorToXiPiQa {
893989
for (const auto& candidate : candidates) {
894990
fillCandidate<DCAFITTER, LITE, false, MyEventTable>(candidate, candidate.flagMcMatchRec(), -7, candidate.originMcRec(), candidate.collisionMatched());
895991
}
992+
993+
// Filling particle properties if requested
994+
if (fillGenTable) {
995+
rowCandidateParticles.reserve(mcParticles.size());
996+
for (const auto& particle : mcParticles) {
997+
fillParticle(particle, o2::constants::physics::MassOmegaC0);
998+
}
999+
}
8961000
}
8971001

8981002
PROCESS_SWITCH(HfTreeCreatorToXiPiQa, processMcFullXic0, "Process MC with full information for xic0 w/o centrality", false);
@@ -906,8 +1010,10 @@ struct HfTreeCreatorToXiPiQa {
9061010
//*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*//
9071011
//*~~~~~~~MC with KFParticle~~~~~~~~*//
9081012
//*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*//
909-
void processKfMcXic0(MyEventTable const& collisions, MyTrackTable const&,
910-
soa::Join<aod::HfCandToXiPiKf, aod::HfSelToXiPiKf, aod::HfXicToXiPiMCRec> const& candidates)
1013+
void processKfMcXic0(MyEventTable const& collisions,
1014+
MyTrackTable const&,
1015+
soa::Join<aod::HfCandToXiPiKf, aod::HfSelToXiPiKf, aod::HfXicToXiPiMCRec> const& candidates,
1016+
MatchedGenXiPi const& mcParticles)
9111017
{
9121018
// Filling event properties
9131019
rowEv.reserve(collisions.size());
@@ -920,10 +1026,20 @@ struct HfTreeCreatorToXiPiQa {
9201026
for (const auto& candidate : candidates) {
9211027
fillCandidate<KFPARTICLE, FULL, false, MyEventTable>(candidate, candidate.flagMcMatchRec(), candidate.debugMcRec(), candidate.originMcRec(), candidate.collisionMatched());
9221028
}
1029+
1030+
// Filling particle properties if requested
1031+
if (fillGenTable) {
1032+
rowCandidateParticles.reserve(mcParticles.size());
1033+
for (const auto& particle : mcParticles) {
1034+
fillParticle(particle, o2::constants::physics::MassXiC0);
1035+
}
1036+
}
9231037
}
9241038

925-
void processKfMcXic0WithFT0C(MyEventTableWithFT0C const& collisions, MyTrackTable const&,
926-
soa::Join<aod::HfCandToXiPiKf, aod::HfSelToXiPiKf, aod::HfXicToXiPiMCRec> const& candidates)
1039+
void processKfMcXic0WithFT0C(MyEventTableWithFT0C const& collisions,
1040+
MyTrackTable const&,
1041+
soa::Join<aod::HfCandToXiPiKf, aod::HfSelToXiPiKf, aod::HfXicToXiPiMCRec> const& candidates,
1042+
MatchedGenXiPi const& mcParticles)
9271043
{
9281044
// Filling event properties
9291045
rowEv.reserve(collisions.size());
@@ -936,10 +1052,20 @@ struct HfTreeCreatorToXiPiQa {
9361052
for (const auto& candidate : candidates) {
9371053
fillCandidate<KFPARTICLE, FULL, true, MyEventTableWithFT0C>(candidate, candidate.flagMcMatchRec(), candidate.debugMcRec(), candidate.originMcRec(), candidate.collisionMatched());
9381054
}
1055+
1056+
// Filling particle properties if requested
1057+
if (fillGenTable) {
1058+
rowCandidateParticles.reserve(mcParticles.size());
1059+
for (const auto& particle : mcParticles) {
1060+
fillParticle(particle, o2::constants::physics::MassXiC0);
1061+
}
1062+
}
9391063
}
9401064

941-
void processKfMcXic0WithFT0M(MyEventTableWithFT0M const& collisions, MyTrackTable const&,
942-
soa::Join<aod::HfCandToXiPiKf, aod::HfSelToXiPiKf, aod::HfXicToXiPiMCRec> const& candidates)
1065+
void processKfMcXic0WithFT0M(MyEventTableWithFT0M const& collisions,
1066+
MyTrackTable const&,
1067+
soa::Join<aod::HfCandToXiPiKf, aod::HfSelToXiPiKf, aod::HfXicToXiPiMCRec> const& candidates,
1068+
MatchedGenXiPi const& mcParticles)
9431069
{
9441070
// Filling event properties
9451071
rowEv.reserve(collisions.size());
@@ -952,10 +1078,20 @@ struct HfTreeCreatorToXiPiQa {
9521078
for (const auto& candidate : candidates) {
9531079
fillCandidate<KFPARTICLE, FULL, true, MyEventTableWithFT0M>(candidate, candidate.flagMcMatchRec(), candidate.debugMcRec(), candidate.originMcRec(), candidate.collisionMatched());
9541080
}
1081+
1082+
// Filling particle properties if requested
1083+
if (fillGenTable) {
1084+
rowCandidateParticles.reserve(mcParticles.size());
1085+
for (const auto& particle : mcParticles) {
1086+
fillParticle(particle, o2::constants::physics::MassXiC0);
1087+
}
1088+
}
9551089
}
9561090

957-
void processKfMcXic0WithNTracksPV(MyEventTableWithNTracksPV const& collisions, MyTrackTable const&,
958-
soa::Join<aod::HfCandToXiPiKf, aod::HfSelToXiPiKf, aod::HfXicToXiPiMCRec> const& candidates)
1091+
void processKfMcXic0WithNTracksPV(MyEventTableWithNTracksPV const& collisions,
1092+
MyTrackTable const&,
1093+
soa::Join<aod::HfCandToXiPiKf, aod::HfSelToXiPiKf, aod::HfXicToXiPiMCRec> const& candidates,
1094+
MatchedGenXiPi const& mcParticles)
9591095
{
9601096
// Filling event properties
9611097
rowEv.reserve(collisions.size());
@@ -968,6 +1104,14 @@ struct HfTreeCreatorToXiPiQa {
9681104
for (const auto& candidate : candidates) {
9691105
fillCandidate<KFPARTICLE, FULL, true, MyEventTableWithNTracksPV>(candidate, candidate.flagMcMatchRec(), candidate.debugMcRec(), candidate.originMcRec(), candidate.collisionMatched());
9701106
}
1107+
1108+
// Filling particle properties if requested
1109+
if (fillGenTable) {
1110+
rowCandidateParticles.reserve(mcParticles.size());
1111+
for (const auto& particle : mcParticles) {
1112+
fillParticle(particle, o2::constants::physics::MassXiC0);
1113+
}
1114+
}
9711115
}
9721116

9731117
PROCESS_SWITCH(HfTreeCreatorToXiPiQa, processKfMcXic0, "Process MC with information for xic0", false);

0 commit comments

Comments
 (0)