Skip to content

Commit 3de29b9

Browse files
authored
[PWGLF] ResonanceMergeDF - Add derived dataset candidates for Xi1530 study (#10292)
1 parent 7890e04 commit 3de29b9

File tree

2 files changed

+92
-18
lines changed

2 files changed

+92
-18
lines changed

PWGLF/DataModel/LFResonanceTables.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ DECLARE_SOA_COLUMN(IsInAfterAllCuts, isInAfterAllCuts, bool); //! InAfterAllCuts
7272
DECLARE_SOA_COLUMN(ImpactParameter, impactParameter, float); //! ImpactParameter
7373

7474
} // namespace resocollision
75-
DECLARE_SOA_TABLE(ResoCollisions, "AOD", "RESOCOLLISION",
75+
DECLARE_SOA_TABLE(ResoCollisions, "AOD", "RESOCOLLISIONS",
7676
o2::soa::Index<>,
7777
resocollision::CollisionId,
7878
o2::aod::mult::MultNTracksPV,
@@ -90,7 +90,7 @@ DECLARE_SOA_TABLE(ResoCollisions, "AOD", "RESOCOLLISION",
9090
evsel::NumTracksInTimeRange);
9191
using ResoCollision = ResoCollisions::iterator;
9292

93-
DECLARE_SOA_TABLE(ResoMCCollisions, "AOD", "RESOMCCOL",
93+
DECLARE_SOA_TABLE(ResoMCCollisions, "AOD", "RESOMCCOLLISIONS",
9494
o2::soa::Index<>,
9595
resocollision::IsVtxIn10,
9696
resocollision::IsINELgt0,
@@ -100,13 +100,13 @@ DECLARE_SOA_TABLE(ResoMCCollisions, "AOD", "RESOMCCOL",
100100
resocollision::ImpactParameter);
101101
using ResoMCCollision = ResoMCCollisions::iterator;
102102

103-
DECLARE_SOA_TABLE(ResoSpheroCollisions, "AOD", "RESOSPHEROCOLL",
103+
DECLARE_SOA_TABLE(ResoSpheroCollisions, "AOD", "RESOSPHEROCOLLISIONS",
104104
o2::soa::Index<>,
105105
resocollision::CollisionId,
106106
resocollision::Spherocity);
107107
using ResoSpheroCollision = ResoSpheroCollisions::iterator;
108108

109-
DECLARE_SOA_TABLE(ResoEvtPlCollisions, "AOD", "RESOEVTPLCOLL",
109+
DECLARE_SOA_TABLE(ResoEvtPlCollisions, "AOD", "RESOEVTPLCOLLISIONS",
110110
o2::soa::Index<>,
111111
resocollision::CollisionId,
112112
resocollision::EvtPl,
@@ -116,7 +116,7 @@ DECLARE_SOA_TABLE(ResoEvtPlCollisions, "AOD", "RESOEVTPLCOLL",
116116
using ResoEvtPlCollision = ResoEvtPlCollisions::iterator;
117117

118118
// For DF mixing study
119-
DECLARE_SOA_TABLE(ResoCollisionDFs, "AOD", "RESOCOLLISIONDF",
119+
DECLARE_SOA_TABLE(ResoCollisionDFs, "AOD", "RESOCOLLISIONDFS",
120120
o2::soa::Index<>,
121121
// resocollision::CollisionId,
122122
o2::aod::mult::MultNTracksPV,
@@ -253,7 +253,7 @@ DECLARE_SOA_TABLE(ResoTracks, "AOD", "RESOTRACKS",
253253
using ResoTrack = ResoTracks::iterator;
254254

255255
// For DF mixing study
256-
DECLARE_SOA_TABLE(ResoTrackDFs, "AOD", "RESOTRACKDFs",
256+
DECLARE_SOA_TABLE(ResoTrackDFs, "AOD", "RESOTRACKDFS",
257257
o2::soa::Index<>,
258258
resodaughter::ResoCollisionDFId,
259259
// resodaughter::TrackId,

PWGLF/TableProducer/Resonances/resonanceMergeDF.cxx

Lines changed: 86 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,14 @@ struct ResonanceMergeDF {
7474
Configurable<float> nsigmatofPr{"nsigmatofPr", 6., "nsigma value for tof prot"};
7575
Configurable<float> nsigmatofKa{"nsigmatofKa", 6., "nsigma value for tof kaon"};
7676

77+
// Xi1530 candidate cuts
78+
Configurable<int> trackSelection{"trackSelection", 0, "Track selection: 0 -> No Cut, 1 -> kGlobalTrack, 2 -> kGlobalTrackWoDCA"};
79+
Configurable<bool> requireTOF{"requireTOF", false, "Require TOF"};
80+
Configurable<float> applyTOFveto{"applyTOFveto", 999, "Apply TOF veto with value, 999 for passing all"};
81+
Configurable<float> nsigmaPi{"nsigmaPi", 5., "nsigma value for pion"};
82+
Configurable<float> minCent{"minCent", 0., "Minimum centrality"};
83+
Configurable<float> maxCent{"maxCent", 100., "Maximum centrality"};
84+
7785
HistogramRegistry histos{"histos", {}, OutputObjHandlingPolicy::AnalysisObject};
7886

7987
void init(InitContext const&)
@@ -263,12 +271,10 @@ struct ResonanceMergeDF {
263271
if (crejtof && ((std::abs(track.tofNSigmaPr()) > std::abs(track.tofNSigmaEl()) && std::abs(track.tofNSigmaKa()) > std::abs(track.tofNSigmaEl())) || (std::abs(track.tofNSigmaPr()) > std::abs(track.tofNSigmaPi()) && std::abs(track.tofNSigmaKa()) > std::abs(track.tofNSigmaPi()))))
264272
continue;
265273
}
266-
267274
if (std::abs(track.dcaXY()) > cDCAXY)
268275
continue;
269276
if (std::abs(track.dcaZ()) > cDCAZ)
270277
continue;
271-
272278
reso2trksdf(resoCollisionsdf.lastIndex(),
273279
// track.trackId(),
274280
track.pt(),
@@ -310,13 +316,88 @@ struct ResonanceMergeDF {
310316
}
311317
PROCESS_SWITCH(ResonanceMergeDF, processLambdaStarCandidate, "Process for lambda star candidate", false);
312318

313-
void processCascadesCandidate(aod::ResoCollisions::iterator const& collision, aod::ResoCascades const& resocasctracks)
319+
void processXi1530Candidate(aod::ResoCollisions::iterator const& collision, aod::ResoTracks const& tracks, aod::ResoCascades const& resocasctracks)
314320
{
315-
histos.fill(HIST("Event/h1d_ft0_mult_percentile_CASC"), collision.cent());
321+
if (doprocessTrackDataDF)
322+
LOG(fatal) << "Disable processTrackDataDF first!";
323+
if (doprocessLambdaStarCandidate)
324+
LOG(fatal) << "Disable processLambdaStarCandidate first!";
325+
326+
if (collision.cent() < minCent || collision.cent() > maxCent)
327+
return;
316328

317329
resoCollisionsdf(0, collision.posX(), collision.posY(), collision.posZ(), collision.cent(), collision.spherocity(), collision.evtPl(), 0., 0., 0., 0., 0, collision.trackOccupancyInTimeRange());
330+
histos.fill(HIST("Event/h1d_ft0_mult_percentile"), collision.cent());
331+
332+
for (const auto& track : tracks) {
333+
if (trackSelection == 1) {
334+
if (!track.isGlobalTrack())
335+
continue;
336+
} else if (trackSelection == 2) {
337+
if (!track.isGlobalTrackWoDCA())
338+
continue;
339+
}
340+
if (!track.hasTOF()) {
341+
if (requireTOF) {
342+
continue;
343+
}
344+
// TPC selection
345+
if (std::abs(track.tpcNSigmaPi()) > nsigmaPi)
346+
continue;
347+
} else {
348+
if (applyTOFveto > 998 && std::abs(track.tofNSigmaPi()) > applyTOFveto)
349+
continue;
350+
// TPC selection
351+
if (std::abs(track.tpcNSigmaPi()) > nsigmaPi)
352+
continue;
353+
}
354+
355+
if (std::abs(track.dcaXY()) > cDCAXY)
356+
continue;
357+
if (std::abs(track.dcaZ()) > cDCAZ)
358+
continue;
318359

360+
reso2trksdf(resoCollisionsdf.lastIndex(),
361+
// track.trackId(),
362+
track.pt(),
363+
track.px(),
364+
track.py(),
365+
track.pz(),
366+
track.eta(),
367+
track.phi(),
368+
track.sign(),
369+
(uint8_t)track.tpcNClsCrossedRows(),
370+
(uint8_t)track.tpcNClsFound(),
371+
(uint8_t)track.itsNCls(),
372+
track.dcaXY(),
373+
track.dcaZ(),
374+
track.x(),
375+
track.alpha(),
376+
track.hasITS(),
377+
track.hasTPC(),
378+
track.hasTOF(),
379+
track.tpcNSigmaPi(),
380+
track.tpcNSigmaKa(),
381+
track.tpcNSigmaPr(),
382+
track.tpcNSigmaEl(),
383+
track.tofNSigmaPi(),
384+
track.tofNSigmaKa(),
385+
track.tofNSigmaPr(),
386+
track.tofNSigmaEl(),
387+
track.tpcSignal(),
388+
track.passedITSRefit(),
389+
track.passedTPCRefit(),
390+
track.isGlobalTrackWoDCA(),
391+
track.isGlobalTrack(),
392+
track.isPrimaryTrack(),
393+
track.isPVContributor(),
394+
track.tpcCrossedRowsOverFindableCls(),
395+
track.itsChi2NCl(),
396+
track.tpcChi2NCl());
397+
}
398+
// Cascade candidate
319399
for (const auto& track : resocasctracks) {
400+
// TODO: add cascade cuts
320401
reso2cascadesdf(resoCollisionsdf.lastIndex(),
321402
// casc.globalIndex(),
322403
track.pt(),
@@ -360,14 +441,7 @@ struct ResonanceMergeDF {
360441
track.transRadius(), track.cascTransRadius(), track.decayVtxX(), track.decayVtxY(), track.decayVtxZ());
361442
}
362443
}
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);
444+
PROCESS_SWITCH(ResonanceMergeDF, processXi1530Candidate, "Process for Xi(1530) candidate", false);
371445
};
372446

373447
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)

0 commit comments

Comments
 (0)