Skip to content

Commit 2f3d295

Browse files
authored
[PWGLF] heavyionmultiplicity: DCA cut studies (#16984)
1 parent 5c26e9e commit 2f3d295

1 file changed

Lines changed: 83 additions & 5 deletions

File tree

PWGLF/Tasks/GlobalEventProperties/heavyionMultiplicity.cxx

Lines changed: 83 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
#include "PWGLF/DataModel/LFStrangenessTables.h"
1919

2020
#include "Common/CCDB/EventSelectionParams.h"
21+
#include "Common/Core/TrackSelection.h"
22+
#include "Common/Core/TrackSelectionDefaults.h"
2123
#include "Common/DataModel/Centrality.h"
2224
#include "Common/DataModel/EventSelection.h"
2325
#include "Common/DataModel/McCollisionExtra.h"
@@ -127,8 +129,7 @@ static constexpr TrackSelectionFlags::flagtype TrackSelectionTpc =
127129
TrackSelectionFlags::kTPCNCls |
128130
TrackSelectionFlags::kTPCCrossedRowsOverNCls |
129131
TrackSelectionFlags::kTPCChi2NDF;
130-
static constexpr TrackSelectionFlags::flagtype TrackSelectionDca =
131-
TrackSelectionFlags::kDCAz | TrackSelectionFlags::kDCAxy;
132+
// static constexpr TrackSelectionFlags::flagtype TrackSelectionDca = TrackSelectionFlags::kDCAz | TrackSelectionFlags::kDCAxy;
132133
static constexpr TrackSelectionFlags::flagtype TrackSelectionDcaxyOnly =
133134
TrackSelectionFlags::kDCAxy;
134135

@@ -159,7 +160,7 @@ struct HeavyionMultiplicity {
159160

160161
Configurable<float> etaRange{"etaRange", 1.0f, "Eta range to consider"};
161162
Configurable<float> vtxRange{"vtxRange", 10.0f, "Vertex Z range to consider"};
162-
Configurable<float> dcaZ{"dcaZ", 0.2f, "Custom DCA Z cut (ignored if negative)"};
163+
Configurable<float> dcaZ{"dcaZ", 0.2f, "Custom DCA Z cut"};
163164
Configurable<float> v0radiusK0SCut{"v0radiusK0SCut", 1.2f, "K0S RadiusCut"};
164165
Configurable<float> dcapostopvK0SCut{"dcapostopvK0SCut", 0.05f, "K0S dcapostopvCut"};
165166
Configurable<float> dcanegtopvK0SCut{"dcanegtopvK0SCut", 0.05f, "K0S dcanegtopvCut"};
@@ -218,6 +219,14 @@ struct HeavyionMultiplicity {
218219
Configurable<bool> selectCollidingBCs{"selectCollidingBCs", true, "BC analysis: select colliding BCs"};
219220
Configurable<bool> selectTVX{"selectTVX", true, "BC analysis: select TVX"};
220221
Configurable<bool> selectFV0OrA{"selectFV0OrA", true, "BC analysis: select FV0OrA"};
222+
Configurable<bool> isApplyDCAstandardcuts{"isApplyDCAstandardcuts", true, "Apply DCA standard run 2 cuts"};
223+
Configurable<bool> isApplyDCAcustomcuts{"isApplyDCAcustomcuts", false, "Apply DCA custom cuts"};
224+
Configurable<float> cDcazP0{"cDcazP0", 1.0f, "dcaz parameter0"};
225+
Configurable<float> cDcazP1{"cDcazP1", 1.0f, "dcaz parameter1"};
226+
Configurable<float> cDcazP2{"cDcazP2", 1.0f, "dcaz parameter2"};
227+
Configurable<float> cDcaxyP0{"cDcaxyP0", 1.0f, "dcaxy parameter0"};
228+
Configurable<float> cDcaxyP1{"cDcaxyP1", 1.0f, "dcaxy parameter1"};
229+
Configurable<float> cDcaxyP2{"cDcaxyP2", 1.0f, "dcaxy parameter2"};
221230

222231
void init(InitContext const&)
223232
{
@@ -250,6 +259,18 @@ struct HeavyionMultiplicity {
250259
x->SetBinLabel(9, "ApplyNoHighMultCollInPrevRof");
251260
x->SetBinLabel(10, "INEL > 0");
252261

262+
if (doprocessDCAvsptData) {
263+
histos.add("hdcaxyvspt", "dca to pv in the xy plane", kTH2D, {dcaAxis, axisPt}, false);
264+
histos.add("hdcazvspt", "dca to pv in the z axis", kTH2D, {dcaAxis, axisPt}, false);
265+
}
266+
267+
if (doprocessDCAvsptMC) {
268+
histos.add("hdcaxyvsptMC", "dca to pv in the xy plane MC", kTH2D, {dcaAxis, axisPt}, false);
269+
histos.add("hdcazvsptMC", "dca to pv in the z axis MC", kTH2D, {dcaAxis, axisPt}, false);
270+
histos.add("hdcaxyvsptMCprimary", "dca to pv in the xy plane MC primary particles", kTH2D, {dcaAxis, axisPt}, false);
271+
histos.add("hdcazvsptMCprimary", "dca to pv in the z axis MC primary particles", kTH2D, {dcaAxis, axisPt}, false);
272+
}
273+
253274
if (doprocessData) {
254275
histos.add("hdcaxy", "dca to pv in the xy plane", kTH1D, {dcaAxis}, false);
255276
histos.add("hdcaz", "dca to pv in the z axis", kTH1D, {dcaAxis}, false);
@@ -484,6 +505,12 @@ struct HeavyionMultiplicity {
484505
template <typename CheckTrack>
485506
bool isTrackSelected(CheckTrack const& track)
486507
{
508+
if (isApplyDCAcustomcuts) {
509+
if (std::abs(track.dcaXY()) > cDcaxyP0 + cDcaxyP1 / pow(track.pt(), cDcaxyP2))
510+
return false;
511+
if (std::abs(track.dcaZ()) > cDcazP0 + cDcazP1 / pow(track.pt(), cDcazP2))
512+
return false;
513+
}
487514
if (std::abs(track.eta()) >= etaRange) {
488515
return false;
489516
}
@@ -522,8 +549,57 @@ struct HeavyionMultiplicity {
522549
ncheckbit(aod::track::trackCutFlag, TrackSelectionIts) &&
523550
ifnode(ncheckbit(aod::track::v001::detectorMap, (uint8_t)o2::aod::track::TPC),
524551
ncheckbit(aod::track::trackCutFlag, TrackSelectionTpc), true) &&
525-
ifnode(dcaZ.node() > 0.f, nabs(aod::track::dcaZ) <= dcaZ && ncheckbit(aod::track::trackCutFlag, TrackSelectionDcaxyOnly),
526-
ncheckbit(aod::track::trackCutFlag, TrackSelectionDca));
552+
ifnode(isApplyDCAstandardcuts.node(), nabs(aod::track::dcaZ) <= dcaZ && ncheckbit(aod::track::trackCutFlag, TrackSelectionDcaxyOnly), true);
553+
554+
void processDCAvsptData(CollisionDataTable::iterator const& cols, FilTrackDataTable const& tracks)
555+
{
556+
if (!isEventSelected(cols)) {
557+
return;
558+
}
559+
560+
for (const auto& track : tracks) {
561+
562+
if (!isTrackSelected(track))
563+
continue;
564+
565+
histos.fill(HIST("hdcaxyvspt"), track.dcaXY(), track.pt());
566+
histos.fill(HIST("hdcazvspt"), track.dcaZ(), track.pt());
567+
}
568+
}
569+
570+
void processDCAvsptMC(soa::Join<CollisionMCTrueTable, aod::McCollsExtra>::iterator const& mcCollision, CollisionMCRecTable const& RecCols, TrackMCTrueTable const&, FilTrackMCRecTable const& RecTracks)
571+
{
572+
573+
for (const auto& RecCol : RecCols) {
574+
if (!isEventSelected(RecCol)) {
575+
continue;
576+
}
577+
if (RecCol.globalIndex() != mcCollision.bestCollisionIndex()) {
578+
continue;
579+
}
580+
581+
auto recTracksPart = RecTracks.sliceBy(perCollision, RecCol.globalIndex());
582+
583+
for (const auto& Rectrack : recTracksPart) {
584+
585+
if (!isTrackSelected(Rectrack))
586+
continue;
587+
588+
if (!Rectrack.has_mcParticle())
589+
continue;
590+
591+
histos.fill(HIST("hdcaxyvsptMC"), Rectrack.dcaXY(), Rectrack.pt());
592+
histos.fill(HIST("hdcazvsptMC"), Rectrack.dcaZ(), Rectrack.pt());
593+
594+
auto mcpart = Rectrack.mcParticle();
595+
596+
if (!isGenTrackSelected(mcpart)) {
597+
histos.fill(HIST("hdcaxyvsptMCprimary"), Rectrack.dcaXY(), Rectrack.pt());
598+
histos.fill(HIST("hdcazvsptMCprimary"), Rectrack.dcaZ(), Rectrack.pt());
599+
}
600+
}
601+
}
602+
}
527603

528604
void processData(CollisionDataTable::iterator const& cols, FilTrackDataTable const& tracks)
529605
{
@@ -1033,6 +1109,8 @@ struct HeavyionMultiplicity {
10331109
histos.fill(HIST("BcCentFT0MHist"), multbc.centFT0M());
10341110
}
10351111

1112+
PROCESS_SWITCH(HeavyionMultiplicity, processDCAvsptData, "process DCA data", false);
1113+
PROCESS_SWITCH(HeavyionMultiplicity, processDCAvsptMC, "process DCA MC", false);
10361114
PROCESS_SWITCH(HeavyionMultiplicity, processData, "process data CentFT0C", false);
10371115
PROCESS_SWITCH(HeavyionMultiplicity, processCorrelation, "do correlation study in data", false);
10381116
PROCESS_SWITCH(HeavyionMultiplicity, processMonteCarlo, "process MC CentFT0C", false);

0 commit comments

Comments
 (0)