4141#include " PWGUD/Core/UPCTauCentralBarrelHelperRL.h"
4242#include " PWGUD/DataModel/UDTables.h"
4343#include " PWGUD/DataModel/UDIndex.h" // for UDMcParticles2UDTracks table
44+ #include " PWGUD/DataModel/TauEventTables.h"
4445#include " PWGUD/Core/SGSelector.h"
4546
4647// ROOT headers
@@ -52,82 +53,9 @@ using namespace o2::framework;
5253using namespace o2 ::framework::expressions;
5354using namespace o2 ::constants::physics;
5455
55- namespace o2 ::aod
56- {
57- namespace tau_tree
58- {
59- // event info
60- DECLARE_SOA_COLUMN (RunNumber, runNumber, int32_t );
61- DECLARE_SOA_COLUMN (Bc, bc, int );
62- DECLARE_SOA_COLUMN (TotalTracks, totalTracks, int );
63- DECLARE_SOA_COLUMN (NumContrib, numContrib, int );
64- DECLARE_SOA_COLUMN (GlobalNonPVtracks, globalNonPVtracks, int );
65- DECLARE_SOA_COLUMN (PosX, posX, float );
66- DECLARE_SOA_COLUMN (PosY, posY, float );
67- DECLARE_SOA_COLUMN (PosZ, posZ, float );
68- DECLARE_SOA_COLUMN (RecoMode, recoMode, int );
69- DECLARE_SOA_COLUMN (OccupancyInTime, occupancyInTime, int );
70- DECLARE_SOA_COLUMN (HadronicRate, hadronicRate, double );
71- DECLARE_SOA_COLUMN (Trs, trs, int );
72- DECLARE_SOA_COLUMN (Trofs, trofs, int );
73- DECLARE_SOA_COLUMN (Hmpr, hmpr, int );
74- DECLARE_SOA_COLUMN (Tfb, tfb, int );
75- DECLARE_SOA_COLUMN (ItsRofb, itsRofb, int );
76- DECLARE_SOA_COLUMN (Sbp, sbp, int );
77- DECLARE_SOA_COLUMN (ZvtxFT0vsPv, zvtxFT0vsPv, int );
78- DECLARE_SOA_COLUMN (VtxITSTPC, vtxITSTPC, int );
79- // FIT info
80- DECLARE_SOA_COLUMN (TotalFT0AmplitudeA, totalFT0AmplitudeA, float );
81- DECLARE_SOA_COLUMN (TotalFT0AmplitudeC, totalFT0AmplitudeC, float );
82- DECLARE_SOA_COLUMN (TotalFV0AmplitudeA, totalFV0AmplitudeA, float );
83- DECLARE_SOA_COLUMN (EnergyCommonZNA, energyCommonZNA, float );
84- DECLARE_SOA_COLUMN (EnergyCommonZNC, energyCommonZNC, float );
85- DECLARE_SOA_COLUMN (TimeFT0A, timeFT0A, float );
86- DECLARE_SOA_COLUMN (TimeFT0C, timeFT0C, float );
87- DECLARE_SOA_COLUMN (TimeFV0A, timeFV0A, float );
88- DECLARE_SOA_COLUMN (TimeZNA, timeZNA, float );
89- DECLARE_SOA_COLUMN (TimeZNC, timeZNC, float );
90- // tracks
91- DECLARE_SOA_COLUMN (TrkPx, trkPx, float [2 ]);
92- DECLARE_SOA_COLUMN (TrkPy, trkPy, float [2 ]);
93- DECLARE_SOA_COLUMN (TrkPz, trkPz, float [2 ]);
94- DECLARE_SOA_COLUMN (TrkSign, trkSign, int [2 ]);
95- DECLARE_SOA_COLUMN (TrkDCAxy, trkDCAxy, float [2 ]);
96- DECLARE_SOA_COLUMN (TrkDCAz, trkDCAz, float [2 ]);
97- DECLARE_SOA_COLUMN (TrkTimeRes, trkTimeRes, float [2 ]);
98- DECLARE_SOA_COLUMN (Trk1ITSclusterSizes, trk1ITSclusterSizes, uint32_t );
99- DECLARE_SOA_COLUMN (Trk2ITSclusterSizes, trk2ITSclusterSizes, uint32_t );
100- DECLARE_SOA_COLUMN (TrkTPCsignal, trkTPCsignal, float [2 ]);
101- DECLARE_SOA_COLUMN (TrkTPCnSigmaEl, trkTPCnSigmaEl, float [2 ]);
102- DECLARE_SOA_COLUMN (TrkTPCnSigmaMu, trkTPCnSigmaMu, float [2 ]);
103- DECLARE_SOA_COLUMN (TrkTPCnSigmaPi, trkTPCnSigmaPi, float [2 ]);
104- DECLARE_SOA_COLUMN (TrkTPCnSigmaKa, trkTPCnSigmaKa, float [2 ]);
105- DECLARE_SOA_COLUMN (TrkTPCnSigmaPr, trkTPCnSigmaPr, float [2 ]);
106- DECLARE_SOA_COLUMN (TrkTPCinnerParam, trkTPCinnerParam, float [2 ]);
107- DECLARE_SOA_COLUMN (TrkTOFsignal, trkTOFsignal, float [2 ]);
108- DECLARE_SOA_COLUMN (TrkTOFnSigmaEl, trkTOFnSigmaEl, float [2 ]);
109- DECLARE_SOA_COLUMN (TrkTOFnSigmaMu, trkTOFnSigmaMu, float [2 ]);
110- DECLARE_SOA_COLUMN (TrkTOFnSigmaPi, trkTOFnSigmaPi, float [2 ]);
111- DECLARE_SOA_COLUMN (TrkTOFnSigmaKa, trkTOFnSigmaKa, float [2 ]);
112- DECLARE_SOA_COLUMN (TrkTOFnSigmaPr, trkTOFnSigmaPr, float [2 ]);
113- DECLARE_SOA_COLUMN (TrkTOFexpMom, trkTOFexpMom, float [2 ]);
114-
115- } // namespace tau_tree
116- DECLARE_SOA_TABLE (TauTwoTracks, " AOD" , " TAUTWOTRACK" ,
117- tau_tree::RunNumber, tau_tree::Bc, tau_tree::TotalTracks, tau_tree::NumContrib, tau_tree::GlobalNonPVtracks, tau_tree::PosX, tau_tree::PosY, tau_tree::PosZ,
118- tau_tree::RecoMode, tau_tree::OccupancyInTime, tau_tree::HadronicRate,
119- tau_tree::Trs, tau_tree::Trofs, tau_tree::Hmpr, tau_tree::Tfb, tau_tree::ItsRofb, tau_tree::Sbp, tau_tree::ZvtxFT0vsPv, tau_tree::VtxITSTPC,
120- tau_tree::TotalFT0AmplitudeA, tau_tree::TotalFT0AmplitudeC, tau_tree::TotalFV0AmplitudeA, tau_tree::EnergyCommonZNA, tau_tree::EnergyCommonZNC,
121- tau_tree::TimeFT0A, tau_tree::TimeFT0C, tau_tree::TimeFV0A, tau_tree::TimeZNA, tau_tree::TimeZNC,
122- tau_tree::TrkPx, tau_tree::TrkPy, tau_tree::TrkPz, tau_tree::TrkSign, tau_tree::TrkDCAxy, tau_tree::TrkDCAz, tau_tree::TrkTimeRes,
123- tau_tree::Trk1ITSclusterSizes, tau_tree::Trk2ITSclusterSizes,
124- tau_tree::TrkTPCsignal, tau_tree::TrkTPCnSigmaEl, tau_tree::TrkTPCnSigmaMu, tau_tree::TrkTPCnSigmaPi, tau_tree::TrkTPCnSigmaKa, tau_tree::TrkTPCnSigmaPr, tau_tree::TrkTPCinnerParam,
125- tau_tree::TrkTOFsignal, tau_tree::TrkTOFnSigmaEl, tau_tree::TrkTOFnSigmaMu, tau_tree::TrkTOFnSigmaPi, tau_tree::TrkTOFnSigmaKa, tau_tree::TrkTOFnSigmaPr, tau_tree::TrkTOFexpMom);
126-
127- } // namespace o2::aod
128-
12956struct TauEventTableProducer {
13057 Produces<o2::aod::TauTwoTracks> tauTwoTracks;
58+ Produces<o2::aod::TrueTauTwoTracks> trueTauTwoTracks;
13159
13260 // Global varialbes
13361 Service<o2::framework::O2DatabasePDG> pdg;
@@ -199,7 +127,6 @@ struct TauEventTableProducer {
199127 using FullMCSGUDCollision = FullMCSGUDCollisions::iterator;
200128 using UDMcParticlesWithUDTracks = soa::Join<aod::UDMcParticles, aod::UDMcParticlesToUDTracks>;
201129 using UDMcCollisionsWithUDCollisions = soa::Join<aod::UDMcCollisions, aod::UDMcCollisionsToUDCollisions>;
202- using UDMcCollisionsWithUDCollision = UDMcCollisionsWithUDCollisions::iterator;
203130
204131 // init
205132 void init (InitContext&)
@@ -480,18 +407,47 @@ struct TauEventTableProducer {
480407 }
481408 PROCESS_SWITCH (TauEventTableProducer, processDataSG, " Iterate UD tables with measured data created by SG-Candidate-Producer." , false );
482409
483- void processMonteCarlo (UDMcCollisionsWithUDCollision const & mccollision,
484- FullMCSGUDCollisions const &,
485- FullUDTracks const &,
486- UDMcParticlesWithUDTracks const &)
410+ PresliceUnsorted<aod::UDMcParticles> partPerMcCollision = aod::udmcparticle::udMcCollisionId;
411+ PresliceUnsorted<FullMCSGUDCollisions> colPerMcCollision = aod::udcollision::udMcCollisionId;
412+ // PresliceUnsorted<FullUDTracks> trackPerMcParticle = aod::udmctracklabel::udMcParticleId;
413+
414+ void processMonteCarlo (UDMcCollisionsWithUDCollisions const & mccollisions,
415+ FullMCSGUDCollisions const & recolls,
416+ FullUDTracks const & tracks,
417+ aod::UDMcParticles const & parts)
487418 {
488- LOGF (info, " mccollision idx %i" , mccollision.globalIndex ());
489- if (mccollision.has_udcollisions ()) {
490- auto const & collFromMcColl = mccollision.udcollisions_as <FullMCSGUDCollisions>();
491- LOGF (info, " collision size %i " , collFromMcColl.size ());
492- }
419+
420+ for (const auto & mccoll : mccollisions){
421+ if (mccoll.has_udcollisions ()) {
422+ auto const & collFromMcColl = mccoll.udcollisions_as <FullMCSGUDCollisions>();
423+ LOGF (info, " collision size %i " , collFromMcColl.size ());
424+ // auto const& partsFromMcColl = mccoll.udmcparticles_as<aod::UDMcParticles>();
425+ auto const & partsFromMcColl = parts.sliceBy (partPerMcCollision, mccoll.globalIndex ());
426+ LOGF (info, " partsFromMcColl size %i" , partsFromMcColl.size ());
427+ for (const auto & particle : partsFromMcColl) {
428+ if (particle.has_mothers ())
429+ continue ;
430+ LOGF (info, " no mother pdg %i" , particle.pdgCode ());
431+ const auto & daughters = particle.daughters_as <aod::UDMcParticles>();
432+ LOGF (info, " daughters size %i" , daughters.size ());
433+ for (const auto & daughter : daughters){
434+ LOGF (info, " daughters pdg %i" , daughter.pdgCode ());
435+ }
436+ }// particles
437+ // auto const& tracksFromColl = collFromMcColl.udtracks_as<FullUDTracks>();
438+ // LOGF(info, "tracksFromColl size %i", tracksFromColl.size());
439+ }// collisions
440+
441+ // auto colSlice = recolls.sliceBy(colPerMcCollision, mccoll.globalIndex());
442+ // LOGF(info, "collision slice size %i ", colSlice.size());
443+ }// mccollisions
444+
445+
446+ // const auto& mccollision = mccollisions.iteratorAt(0);
447+
493448 }
494449 PROCESS_SWITCH (TauEventTableProducer, processMonteCarlo, " Iterate UD tables with simulated data created by SG-Candidate-Producer." , false );
450+
495451};
496452
497453WorkflowSpec defineDataProcessing (ConfigContext const & cfgc)
0 commit comments