Skip to content

Commit 0f8ebed

Browse files
Jinhyun ParkJinhyun Park
authored andcommitted
First commit to update treeCreatorToXiPiQa.cxx
1 parent 851162d commit 0f8ebed

1 file changed

Lines changed: 204 additions & 22 deletions

File tree

PWGHF/TableProducer/treeCreatorToXiPiQa.cxx

Lines changed: 204 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);
@@ -303,6 +307,13 @@ DECLARE_SOA_TABLE(HfKfXicFulls, "AOD", "HFKFXICFULL",
303307
full::ResultSelections,
304308
full::FlagMcMatchRec, full::DebugMcRec, full::OriginRec, full::CollisionMatched);
305309

310+
DECLARE_SOA_TABLE(HfCandToXiPiGen, "AOD", "HFCANDTOXIPIGEN",
311+
full::PtCharmBaryon,
312+
full::EtaCharmBaryon,
313+
full::PhiCharmBaryon,
314+
full::YCharmBaryon,
315+
full::FlagMcMatchRec,
316+
full::OriginRec)
306317
} // namespace o2::aod
307318

308319
/// Writes the full information in an output TTree
@@ -311,16 +322,22 @@ struct HfTreeCreatorToXiPiQa {
311322
Produces<o2::aod::HfToXiPiFulls> rowCandidateFull;
312323
Produces<o2::aod::HfToXiPiLites> rowCandidateLite;
313324
Produces<o2::aod::HfKfXicFulls> rowKfCandidate;
325+
Produces<o2::aod::HfCandToXiPiGen> rowCandidateParticles;
314326
Produces<o2::aod::HfToXiPiEvs> rowEv;
315327

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

318332
using MyTrackTable = soa::Join<aod::Tracks, aod::TrackSelection, aod::TracksExtra>;
319333
using MyEventTable = soa::Join<aod::Collisions, aod::EvSels>;
320334
using MyEventTableWithFT0C = soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Cs>;
321335
using MyEventTableWithFT0M = soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Ms>;
322336
using MyEventTableWithNTracksPV = soa::Join<aod::Collisions, aod::EvSels, aod::CentNTPVs>;
337+
using MatchedGenXiPi = soa::Filtered<soa::Join<aod::McParticles, aod::HfXicToXiPiMCGen>>;
323338

339+
Filter filterGenXiPi = nabs(aod::hf_cand_mc_flag::flagMcMatchGen) == static_cast<int8_t>(BIT(genSelection));
340+
324341
void init(InitContext const&)
325342
{
326343
if ((doprocessMcLiteXic0 && doprocessMcLiteOmegac0) || (doprocessMcFullXic0 && doprocessMcFullOmegac0)) {
@@ -783,8 +800,10 @@ struct HfTreeCreatorToXiPiQa {
783800
//*~~~~~~~MC with DCAFitter~~~~~~~~*//
784801
//*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*//
785802

786-
void processMcFullXic0(MyEventTable const& collisions, MyTrackTable const&,
787-
soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi, aod::HfXicToXiPiMCRec> const& candidates)
803+
void processMcFullXic0(MyEventTable const& collisions,
804+
MyTrackTable const&,
805+
soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi, aod::HfXicToXiPiMCRec> const& candidates,
806+
MatchedGenXiPi const& mcParticles)
788807
{
789808
// Filling event properties
790809
rowEv.reserve(collisions.size());
@@ -797,10 +816,25 @@ struct HfTreeCreatorToXiPiQa {
797816
for (const auto& candidate : candidates) {
798817
fillCandidate<DCAFITTER, FULL, false, MyEventTable>(candidate, candidate.flagMcMatchRec(), candidate.debugMcRec(), candidate.originMcRec(), candidate.collisionMatched());
799818
}
819+
820+
// Filling particle properties if requested
821+
if (fillParticle) {
822+
rowCandidateParticles.reserve(mcParticles.size());
823+
for (const auto& particle : mcParticles) {
824+
rowCandidateParticles(particle.pt(),
825+
particle.eta(),
826+
particle.phi(),
827+
RecoDecay::y(particle.pVector(), o2::constants::physics::MassXiC0),
828+
particle.flagMcMatchGen(),
829+
particle.originMcGen());
830+
}
831+
}
800832
}
801833

802-
void processMcFullOmegac0(MyEventTable const& collisions, MyTrackTable const&,
803-
soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi, aod::HfOmegacToXiPiMCRec> const& candidates)
834+
void processMcFullOmegac0(MyEventTable const& collisions,
835+
MyTrackTable const&,
836+
soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi, aod::HfOmegacToXiPiMCRec> const& candidates,
837+
MatchedGenXiPi const& mcParticles)
804838
{
805839
// Filling event properties
806840
rowEv.reserve(collisions.size());
@@ -813,10 +847,25 @@ struct HfTreeCreatorToXiPiQa {
813847
for (const auto& candidate : candidates) {
814848
fillCandidate<DCAFITTER, FULL, false, MyEventTable>(candidate, candidate.flagMcMatchRec(), candidate.debugMcRec(), candidate.originMcRec(), candidate.collisionMatched());
815849
}
850+
851+
// Filling particle properties if requested
852+
if (fillParticle) {
853+
rowCandidateParticles.reserve(mcParticles.size());
854+
for (const auto& particle : mcParticles) {
855+
rowCandidateParticles(particle.pt(),
856+
particle.eta(),
857+
particle.phi(),
858+
RecoDecay::y(particle.pVector(), o2::constants::physics::MassXiC0),
859+
particle.flagMcMatchGen(),
860+
particle.originMcGen());
861+
}
862+
}
816863
}
817864

818-
void processMcLiteXic0(MyEventTable const& collisions, MyTrackTable const&,
819-
soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi, aod::HfXicToXiPiMCRec> const& candidates)
865+
void processMcLiteXic0(MyEventTable const& collisions,
866+
MyTrackTable const&,
867+
soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi, aod::HfXicToXiPiMCRec> const& candidates,
868+
MatchedGenXiPi const& mcParticles)
820869
{
821870
// Filling event properties
822871
rowEv.reserve(collisions.size());
@@ -829,10 +878,25 @@ struct HfTreeCreatorToXiPiQa {
829878
for (const auto& candidate : candidates) {
830879
fillCandidate<DCAFITTER, LITE, false, MyEventTable>(candidate, candidate.flagMcMatchRec(), -7, candidate.originMcRec(), candidate.collisionMatched());
831880
}
881+
882+
// Filling particle properties if requested
883+
if (fillParticle) {
884+
rowCandidateParticles.reserve(mcParticles.size());
885+
for (const auto& particle : mcParticles) {
886+
rowCandidateParticles(particle.pt(),
887+
particle.eta(),
888+
particle.phi(),
889+
RecoDecay::y(particle.pVector(), o2::constants::physics::MassXiC0),
890+
particle.flagMcMatchGen(),
891+
particle.originMcGen());
892+
}
893+
}
832894
}
833895

834-
void processMcLiteXic0WithFT0C(MyEventTableWithFT0C const& collisions, MyTrackTable const&,
835-
soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi, aod::HfXicToXiPiMCRec> const& candidates)
896+
void processMcLiteXic0WithFT0C(MyEventTableWithFT0C const& collisions,
897+
MyTrackTable const&,
898+
soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi, aod::HfXicToXiPiMCRec> const& candidates,
899+
MatchedGenXiPi const& mcParticles)
836900
{
837901
// Filling event properties
838902
rowEv.reserve(collisions.size());
@@ -845,10 +909,25 @@ struct HfTreeCreatorToXiPiQa {
845909
for (const auto& candidate : candidates) {
846910
fillCandidate<DCAFITTER, LITE, true, MyEventTableWithFT0C>(candidate, candidate.flagMcMatchRec(), -7, candidate.originMcRec(), candidate.collisionMatched());
847911
}
912+
913+
// Filling particle properties if requested
914+
if (fillParticle) {
915+
rowCandidateParticles.reserve(mcParticles.size());
916+
for (const auto& particle : mcParticles) {
917+
rowCandidateParticles(particle.pt(),
918+
particle.eta(),
919+
particle.phi(),
920+
RecoDecay::y(particle.pVector(), o2::constants::physics::MassXiC0),
921+
particle.flagMcMatchGen(),
922+
particle.originMcGen());
923+
}
924+
}
848925
}
849926

850-
void processMcLiteXic0WithFT0M(MyEventTableWithFT0M const& collisions, MyTrackTable const&,
851-
soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi, aod::HfXicToXiPiMCRec> const& candidates)
927+
void processMcLiteXic0WithFT0M(MyEventTableWithFT0M const& collisions,
928+
MyTrackTable const&,
929+
soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi, aod::HfXicToXiPiMCRec> const& candidates,
930+
MatchedGenXiPi const& mcParticles)
852931
{
853932
// Filling event properties
854933
rowEv.reserve(collisions.size());
@@ -861,10 +940,25 @@ struct HfTreeCreatorToXiPiQa {
861940
for (const auto& candidate : candidates) {
862941
fillCandidate<DCAFITTER, LITE, true, MyEventTableWithFT0M>(candidate, candidate.flagMcMatchRec(), -7, candidate.originMcRec(), candidate.collisionMatched());
863942
}
943+
944+
// Filling particle properties if requested
945+
if (fillParticle) {
946+
rowCandidateParticles.reserve(mcParticles.size());
947+
for (const auto& particle : mcParticles) {
948+
rowCandidateParticles(particle.pt(),
949+
particle.eta(),
950+
particle.phi(),
951+
RecoDecay::y(particle.pVector(), o2::constants::physics::MassXiC0),
952+
particle.flagMcMatchGen(),
953+
particle.originMcGen());
954+
}
955+
}
864956
}
865957

866-
void processMcLiteXic0WithNTracksPV(MyEventTableWithNTracksPV const& collisions, MyTrackTable const&,
867-
soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi, aod::HfXicToXiPiMCRec> const& candidates)
958+
void processMcLiteXic0WithNTracksPV(MyEventTableWithNTracksPV const& collisions,
959+
MyTrackTable const&,
960+
soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi, aod::HfXicToXiPiMCRec> const& candidates,
961+
MatchedGenXiPi const& mcParticles)
868962
{
869963
// Filling event properties
870964
rowEv.reserve(collisions.size());
@@ -877,10 +971,25 @@ struct HfTreeCreatorToXiPiQa {
877971
for (const auto& candidate : candidates) {
878972
fillCandidate<DCAFITTER, LITE, true, MyEventTableWithNTracksPV>(candidate, candidate.flagMcMatchRec(), -7, candidate.originMcRec(), candidate.collisionMatched());
879973
}
974+
975+
// Filling particle properties if requested
976+
if (fillParticle) {
977+
rowCandidateParticles.reserve(mcParticles.size());
978+
for (const auto& particle : mcParticles) {
979+
rowCandidateParticles(particle.pt(),
980+
particle.eta(),
981+
particle.phi(),
982+
RecoDecay::y(particle.pVector(), o2::constants::physics::MassXiC0),
983+
particle.flagMcMatchGen(),
984+
particle.originMcGen());
985+
}
986+
}
880987
}
881988

882-
void processMcLiteOmegac0(MyEventTable const& collisions, MyTrackTable const&,
883-
soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi, aod::HfOmegacToXiPiMCRec> const& candidates)
989+
void processMcLiteOmegac0(MyEventTable const& collisions,
990+
MyTrackTable const&,
991+
soa::Join<aod::HfCandToXiPi, aod::HfSelToXiPi, aod::HfOmegacToXiPiMCRec> const& candidates,
992+
MatchedGenXiPi const& mcParticles)
884993
{
885994
// Filling event properties
886995
rowEv.reserve(collisions.size());
@@ -893,6 +1002,19 @@ struct HfTreeCreatorToXiPiQa {
8931002
for (const auto& candidate : candidates) {
8941003
fillCandidate<DCAFITTER, LITE, false, MyEventTable>(candidate, candidate.flagMcMatchRec(), -7, candidate.originMcRec(), candidate.collisionMatched());
8951004
}
1005+
1006+
// Filling particle properties if requested
1007+
if (fillParticle) {
1008+
rowCandidateParticles.reserve(mcParticles.size());
1009+
for (const auto& particle : mcParticles) {
1010+
rowCandidateParticles(particle.pt(),
1011+
particle.eta(),
1012+
particle.phi(),
1013+
RecoDecay::y(particle.pVector(), o2::constants::physics::MassXiC0),
1014+
particle.flagMcMatchGen(),
1015+
particle.originMcGen());
1016+
}
1017+
}
8961018
}
8971019

8981020
PROCESS_SWITCH(HfTreeCreatorToXiPiQa, processMcFullXic0, "Process MC with full information for xic0 w/o centrality", false);
@@ -906,8 +1028,10 @@ struct HfTreeCreatorToXiPiQa {
9061028
//*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*//
9071029
//*~~~~~~~MC with KFParticle~~~~~~~~*//
9081030
//*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*//
909-
void processKfMcXic0(MyEventTable const& collisions, MyTrackTable const&,
910-
soa::Join<aod::HfCandToXiPiKf, aod::HfSelToXiPiKf, aod::HfXicToXiPiMCRec> const& candidates)
1031+
void processKfMcXic0(MyEventTable const& collisions,
1032+
MyTrackTable const&,
1033+
soa::Join<aod::HfCandToXiPiKf, aod::HfSelToXiPiKf, aod::HfXicToXiPiMCRec> const& candidates,
1034+
MatchedGenXiPi const& mcParticles)
9111035
{
9121036
// Filling event properties
9131037
rowEv.reserve(collisions.size());
@@ -920,10 +1044,25 @@ struct HfTreeCreatorToXiPiQa {
9201044
for (const auto& candidate : candidates) {
9211045
fillCandidate<KFPARTICLE, FULL, false, MyEventTable>(candidate, candidate.flagMcMatchRec(), candidate.debugMcRec(), candidate.originMcRec(), candidate.collisionMatched());
9221046
}
1047+
1048+
// Filling particle properties if requested
1049+
if (fillParticle) {
1050+
rowCandidateParticles.reserve(mcParticles.size());
1051+
for (const auto& particle : mcParticles) {
1052+
rowCandidateParticles(particle.pt(),
1053+
particle.eta(),
1054+
particle.phi(),
1055+
RecoDecay::y(particle.pVector(), o2::constants::physics::MassXiC0),
1056+
particle.flagMcMatchGen(),
1057+
particle.originMcGen());
1058+
}
1059+
}
9231060
}
9241061

925-
void processKfMcXic0WithFT0C(MyEventTableWithFT0C const& collisions, MyTrackTable const&,
926-
soa::Join<aod::HfCandToXiPiKf, aod::HfSelToXiPiKf, aod::HfXicToXiPiMCRec> const& candidates)
1062+
void processKfMcXic0WithFT0C(MyEventTableWithFT0C const& collisions,
1063+
MyTrackTable const&,
1064+
soa::Join<aod::HfCandToXiPiKf, aod::HfSelToXiPiKf, aod::HfXicToXiPiMCRec> const& candidates,
1065+
MatchedGenXiPi const& mcParticles)
9271066
{
9281067
// Filling event properties
9291068
rowEv.reserve(collisions.size());
@@ -936,10 +1075,25 @@ struct HfTreeCreatorToXiPiQa {
9361075
for (const auto& candidate : candidates) {
9371076
fillCandidate<KFPARTICLE, FULL, true, MyEventTableWithFT0C>(candidate, candidate.flagMcMatchRec(), candidate.debugMcRec(), candidate.originMcRec(), candidate.collisionMatched());
9381077
}
1078+
1079+
// Filling particle properties if requested
1080+
if (fillParticle) {
1081+
rowCandidateParticles.reserve(mcParticles.size());
1082+
for (const auto& particle : mcParticles) {
1083+
rowCandidateParticles(particle.pt(),
1084+
particle.eta(),
1085+
particle.phi(),
1086+
RecoDecay::y(particle.pVector(), o2::constants::physics::MassXiC0),
1087+
particle.flagMcMatchGen(),
1088+
particle.originMcGen());
1089+
}
1090+
}
9391091
}
9401092

941-
void processKfMcXic0WithFT0M(MyEventTableWithFT0M const& collisions, MyTrackTable const&,
942-
soa::Join<aod::HfCandToXiPiKf, aod::HfSelToXiPiKf, aod::HfXicToXiPiMCRec> const& candidates)
1093+
void processKfMcXic0WithFT0M(MyEventTableWithFT0M const& collisions,
1094+
MyTrackTable const&,
1095+
soa::Join<aod::HfCandToXiPiKf, aod::HfSelToXiPiKf, aod::HfXicToXiPiMCRec> const& candidates,
1096+
MatchedGenXiPi const& mcParticles)
9431097
{
9441098
// Filling event properties
9451099
rowEv.reserve(collisions.size());
@@ -952,10 +1106,25 @@ struct HfTreeCreatorToXiPiQa {
9521106
for (const auto& candidate : candidates) {
9531107
fillCandidate<KFPARTICLE, FULL, true, MyEventTableWithFT0M>(candidate, candidate.flagMcMatchRec(), candidate.debugMcRec(), candidate.originMcRec(), candidate.collisionMatched());
9541108
}
1109+
1110+
// Filling particle properties if requested
1111+
if (fillParticle) {
1112+
rowCandidateParticles.reserve(mcParticles.size());
1113+
for (const auto& particle : mcParticles) {
1114+
rowCandidateParticles(particle.pt(),
1115+
particle.eta(),
1116+
particle.phi(),
1117+
RecoDecay::y(particle.pVector(), o2::constants::physics::MassXiC0),
1118+
particle.flagMcMatchGen(),
1119+
particle.originMcGen());
1120+
}
1121+
}
9551122
}
9561123

957-
void processKfMcXic0WithNTracksPV(MyEventTableWithNTracksPV const& collisions, MyTrackTable const&,
958-
soa::Join<aod::HfCandToXiPiKf, aod::HfSelToXiPiKf, aod::HfXicToXiPiMCRec> const& candidates)
1124+
void processKfMcXic0WithNTracksPV(MyEventTableWithNTracksPV const& collisions,
1125+
MyTrackTable const&,
1126+
soa::Join<aod::HfCandToXiPiKf, aod::HfSelToXiPiKf, aod::HfXicToXiPiMCRec> const& candidates,
1127+
MatchedGenXiPi const& mcParticles)
9591128
{
9601129
// Filling event properties
9611130
rowEv.reserve(collisions.size());
@@ -968,6 +1137,19 @@ struct HfTreeCreatorToXiPiQa {
9681137
for (const auto& candidate : candidates) {
9691138
fillCandidate<KFPARTICLE, FULL, true, MyEventTableWithNTracksPV>(candidate, candidate.flagMcMatchRec(), candidate.debugMcRec(), candidate.originMcRec(), candidate.collisionMatched());
9701139
}
1140+
1141+
// Filling particle properties if requested
1142+
if (fillParticle) {
1143+
rowCandidateParticles.reserve(mcParticles.size());
1144+
for (const auto& particle : mcParticles) {
1145+
rowCandidateParticles(particle.pt(),
1146+
particle.eta(),
1147+
particle.phi(),
1148+
RecoDecay::y(particle.pVector(), o2::constants::physics::MassXiC0),
1149+
particle.flagMcMatchGen(),
1150+
particle.originMcGen());
1151+
}
1152+
}
9711153
}
9721154

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

0 commit comments

Comments
 (0)