Skip to content

Commit 6bfe884

Browse files
authored
[PWGLF] ResonanceMergeDF - Add cascade (AliceO2Group#10272)
1 parent e59d9fb commit 6bfe884

File tree

3 files changed

+126
-18
lines changed

3 files changed

+126
-18
lines changed

PWGLF/DataModel/LFResonanceTables.h

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -380,6 +380,55 @@ DECLARE_SOA_TABLE(ResoCascades, "AOD", "RESOCASCADES",
380380
resodaughter::DecayVtxZ);
381381
using ResoCascade = ResoCascades::iterator;
382382

383+
DECLARE_SOA_TABLE(ResoCascadeDFs, "AOD", "RESOCASCADEDFS",
384+
o2::soa::Index<>,
385+
resodaughter::ResoCollisionDFId,
386+
// resodaughter::CascadeId,
387+
resodaughter::Pt,
388+
resodaughter::Px,
389+
resodaughter::Py,
390+
resodaughter::Pz,
391+
resodaughter::Eta,
392+
resodaughter::Phi,
393+
resodaughter::CascadeIndices,
394+
resodaughter::DaughterTPCNSigmaPosPi,
395+
resodaughter::DaughterTPCNSigmaPosKa,
396+
resodaughter::DaughterTPCNSigmaPosPr,
397+
resodaughter::DaughterTPCNSigmaNegPi,
398+
resodaughter::DaughterTPCNSigmaNegKa,
399+
resodaughter::DaughterTPCNSigmaNegPr,
400+
resodaughter::DaughterTPCNSigmaBachPi,
401+
resodaughter::DaughterTPCNSigmaBachKa,
402+
resodaughter::DaughterTPCNSigmaBachPr,
403+
resodaughter::DaughterTOFNSigmaPosPi,
404+
resodaughter::DaughterTOFNSigmaPosKa,
405+
resodaughter::DaughterTOFNSigmaPosPr,
406+
resodaughter::DaughterTOFNSigmaNegPi,
407+
resodaughter::DaughterTOFNSigmaNegKa,
408+
resodaughter::DaughterTOFNSigmaNegPr,
409+
resodaughter::DaughterTOFNSigmaBachPi,
410+
resodaughter::DaughterTOFNSigmaBachKa,
411+
resodaughter::DaughterTOFNSigmaBachPr,
412+
resodaughter::V0CosPA,
413+
resodaughter::CascCosPA,
414+
resodaughter::DaughDCA,
415+
resodaughter::CascDaughDCA,
416+
cascdata::DCAPosToPV,
417+
cascdata::DCANegToPV,
418+
cascdata::DCABachToPV,
419+
v0data::DCAV0ToPV,
420+
cascdata::DCAXYCascToPV,
421+
cascdata::DCAZCascToPV,
422+
cascdata::Sign,
423+
resodaughter::MLambda,
424+
resodaughter::MXi,
425+
resodaughter::TransRadius,
426+
resodaughter::CascTransRadius,
427+
resodaughter::DecayVtxX,
428+
resodaughter::DecayVtxY,
429+
resodaughter::DecayVtxZ);
430+
using ResoCascadeDF = ResoCascadeDFs::iterator;
431+
383432
DECLARE_SOA_TABLE(ResoMCTracks, "AOD", "RESOMCTRACKS",
384433
mcparticle::PdgCode,
385434
resodaughter::MotherId,

PWGLF/TableProducer/Resonances/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ o2physics_add_dpl_workflow(resonance-module-initializer
4040
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2::DetectorsBase
4141
COMPONENT_NAME Analysis)
4242

43-
o2physics_add_dpl_workflow(reso2mergedf
44-
SOURCES LFResonanceMergeDF.cxx
43+
o2physics_add_dpl_workflow(resonance-merge-df
44+
SOURCES resonanceMergeDF.cxx
4545
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2::DetectorsBase
4646
COMPONENT_NAME Analysis)
4747

PWGLF/TableProducer/Resonances/LFResonanceMergeDF.cxx renamed to PWGLF/TableProducer/Resonances/resonanceMergeDF.cxx

Lines changed: 75 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88
// In applying this license CERN does not waive the privileges and immunities
99
// granted to it by virtue of its status as an Intergovernmental Organization
1010
// or submit itself to any jurisdiction.
11-
12-
/// \file LFResonanceInitializer.cxx
13-
/// \brief Initializes variables for the resonance candidate producers
11+
///
12+
/// \file resonanceMergeDF.cxx
13+
/// \brief Merges multiple dataframes into a single dataframe
1414
///
1515
///
1616
/// In typical dataframes (DF), we usually observe a range of 200 to 300 collisions.
@@ -24,7 +24,8 @@
2424
///
2525
/// ///
2626
/// \author Bong-Hwi Lim <[email protected]>
27-
/// Nasir Mehdi Malik
27+
/// Nasir Mehdi Malik <[email protected]>
28+
/// Min-jae Kim <[email protected]>
2829
#include <vector>
2930

3031
#include "Common/DataModel/PIDResponse.h"
@@ -58,7 +59,7 @@ using namespace o2::soa;
5859

5960
/// Initializer for the resonance candidate producers
6061

61-
struct reso2dfmerged {
62+
struct ResonanceMergeDF {
6263
// SliceCache cache;
6364
Configurable<int> nDF{"nDF", 1, "no of combination of collision"};
6465
Configurable<bool> cpidCut{"cpidCut", 0, "pid cut"};
@@ -75,17 +76,16 @@ struct reso2dfmerged {
7576

7677
HistogramRegistry histos{"histos", {}, OutputObjHandlingPolicy::AnalysisObject};
7778

78-
using resoCols = aod::ResoCollisions;
79-
using resoTracks = aod::ResoTracks;
80-
8179
void init(InitContext const&)
8280
{
8381

8482
const AxisSpec axisCent(110, 0, 110, "FT0 (%)");
8583
histos.add("Event/h1d_ft0_mult_percentile", "FT0 (%)", kTH1F, {axisCent});
84+
histos.add("Event/h1d_ft0_mult_percentile_CASC", "FT0 (%)", kTH1F, {axisCent});
8685
}
8786
Produces<aod::ResoCollisionDFs> resoCollisionsdf;
8887
Produces<aod::ResoTrackDFs> reso2trksdf;
88+
Produces<aod::ResoCascadeDFs> reso2cascadesdf;
8989
int df = 0;
9090

9191
std::vector<std::tuple<float, float, float, float, float, float, int>> vecOfTuples;
@@ -97,7 +97,7 @@ struct reso2dfmerged {
9797
float, float, bool, bool,
9898
bool, bool, bool, bool, float, float, float>>>
9999
vecOfVecOfTuples;
100-
void processTrackDataDF(resoCols::iterator const& collision, resoTracks const& tracks)
100+
void processTrackDataDF(aod::ResoCollisions::iterator const& collision, aod::ResoTracks const& tracks)
101101
{
102102

103103
int nCollisions = nDF;
@@ -110,7 +110,7 @@ struct reso2dfmerged {
110110
float, float, bool, bool,
111111
bool, bool, bool, bool, float, float, float>>
112112
innerVector;
113-
for (auto& track : tracks) {
113+
for (const auto& track : tracks) {
114114
if (cpidCut) {
115115
if (!track.hasTOF()) {
116116
if (std::abs(track.tpcNSigmaPr()) > nsigmaPr && std::abs(track.tpcNSigmaKa()) > nsigmaKa)
@@ -175,6 +175,7 @@ struct reso2dfmerged {
175175
vecOfVecOfTuples.push_back(innerVector);
176176
innerVector.clear();
177177
df++;
178+
LOGF(info, "collisions: df = %i", df);
178179
if (df < nCollisions)
179180
return;
180181
df = 0;
@@ -231,10 +232,9 @@ struct reso2dfmerged {
231232
vecOfVecOfTuples.clear(); //
232233
}
233234

234-
PROCESS_SWITCH(reso2dfmerged, processTrackDataDF, "Process for data merged DF", true);
235+
PROCESS_SWITCH(ResonanceMergeDF, processTrackDataDF, "Process for data merged DF", true);
235236

236-
void processLambdaStarCandidate(resoCols::iterator const& collision, resoTracks const&
237-
tracks)
237+
void processLambdaStarCandidate(aod::ResoCollisions::iterator const& collision, aod::ResoTracks const& tracks)
238238
{
239239

240240
if (doprocessTrackDataDF)
@@ -244,7 +244,7 @@ struct reso2dfmerged {
244244

245245
resoCollisionsdf(0, collision.posX(), collision.posY(), collision.posZ(), collision.cent(), collision.spherocity(), collision.evtPl(), 0., 0., 0., 0., 0, collision.trackOccupancyInTimeRange());
246246

247-
for (auto& track : tracks) {
247+
for (const auto& track : tracks) {
248248
if (isPrimary && !track.isPrimaryTrack())
249249
continue;
250250
if (isGlobal && !track.isGlobalTrack())
@@ -308,10 +308,69 @@ struct reso2dfmerged {
308308
track.tpcChi2NCl());
309309
}
310310
}
311-
PROCESS_SWITCH(reso2dfmerged, processLambdaStarCandidate, "Process for lambda star candidate", false);
311+
PROCESS_SWITCH(ResonanceMergeDF, processLambdaStarCandidate, "Process for lambda star candidate", false);
312+
313+
void processCascadesCandidate(aod::ResoCollisions::iterator const& collision, aod::ResoCascades const& resocasctracks)
314+
{
315+
histos.fill(HIST("Event/h1d_ft0_mult_percentile_CASC"), collision.cent());
316+
317+
resoCollisionsdf(0, collision.posX(), collision.posY(), collision.posZ(), collision.cent(), collision.spherocity(), collision.evtPl(), 0., 0., 0., 0., 0, collision.trackOccupancyInTimeRange());
318+
319+
for (const auto& track : resocasctracks) {
320+
reso2cascadesdf(resoCollisionsdf.lastIndex(),
321+
// casc.globalIndex(),
322+
track.pt(),
323+
track.px(),
324+
track.py(),
325+
track.pz(),
326+
track.eta(),
327+
track.phi(),
328+
const_cast<int*>(track.cascadeIndices()),
329+
track.daughterTPCNSigmaPosPi(),
330+
track.daughterTPCNSigmaPosKa(),
331+
track.daughterTPCNSigmaPosPr(),
332+
track.daughterTPCNSigmaNegPi(),
333+
track.daughterTPCNSigmaNegKa(),
334+
track.daughterTPCNSigmaNegPr(),
335+
track.daughterTPCNSigmaBachPi(),
336+
track.daughterTPCNSigmaBachKa(),
337+
track.daughterTPCNSigmaBachPr(),
338+
track.daughterTOFNSigmaPosPi(),
339+
track.daughterTOFNSigmaPosKa(),
340+
track.daughterTOFNSigmaPosPr(),
341+
track.daughterTOFNSigmaNegPi(),
342+
track.daughterTOFNSigmaNegKa(),
343+
track.daughterTOFNSigmaNegPr(),
344+
track.daughterTOFNSigmaBachPi(),
345+
track.daughterTOFNSigmaBachKa(),
346+
track.daughterTOFNSigmaBachPr(),
347+
track.v0CosPA(),
348+
track.cascCosPA(),
349+
track.daughDCA(),
350+
track.cascDaughDCA(),
351+
track.dcapostopv(),
352+
track.dcanegtopv(),
353+
track.dcabachtopv(),
354+
track.dcav0topv(),
355+
track.dcaXYCascToPV(),
356+
track.dcaZCascToPV(),
357+
track.sign(),
358+
track.mLambda(),
359+
track.mXi(),
360+
track.transRadius(), track.cascTransRadius(), track.decayVtxX(), track.decayVtxY(), track.decayVtxZ());
361+
}
362+
}
363+
364+
PROCESS_SWITCH(ResonanceMergeDF, processCascadesCandidate, "Process for Cascade candidate", true);
365+
366+
void processXiStarCandidate(aod::ResoCollisions::iterator const& /*collision*/, aod::ResoTracks const& /*tracks*/)
367+
{
368+
// TODO: Implement Xi star candidate processing
369+
}
370+
PROCESS_SWITCH(ResonanceMergeDF, processXiStarCandidate, "Process for Xi star candidate", false);
312371
};
313372

314373
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
315374
{
316-
return WorkflowSpec{adaptAnalysisTask<reso2dfmerged>(cfgc)};
375+
return WorkflowSpec{adaptAnalysisTask<ResonanceMergeDF>(cfgc)};
317376
}

0 commit comments

Comments
 (0)