Skip to content
Merged
115 changes: 102 additions & 13 deletions PWGLF/Tasks/GlobalEventProperties/dndeta-mft-pp.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,8 @@
AxisSpec ZAxis = {301, -30.1, 30.1};
AxisSpec PhiAxis = {629, 0, o2::constants::math::TwoPI, "Rad", "phi axis"};
// AxisSpec EtaAxis = {18, -4.6, -1.};
AxisSpec DCAxyAxis = {100, -1, 10};
AxisSpec DCAxyAxis = {5000, -1, 500};
AxisSpec DCAzAxis = {5000, -251, 250};
AxisSpec CentAxis = {{0, 10, 20, 30, 40, 50, 60, 70, 80, 100}};

static constexpr TrackSelectionFlags::flagtype trackSelectionITS =
Expand Down Expand Up @@ -93,6 +94,8 @@

Configurable<bool> usePhiCut{"usePhiCut", true, "use azimuthal angle cut"};
Configurable<bool> useDCAxyCut{"useDCAxyCut", false, "use DCAxy cut"};
Configurable<bool> useDCAzCut{"useDCAzCut", false, "use DCAz cut"};

Configurable<float> cfgPhiCut{"cfgPhiCut", 0.1f,
"Cut on azimuthal angle of MFT tracks"};
Configurable<float> cfgPhiCut1{"cfgPhiCut1", 0.0f,
Expand All @@ -111,6 +114,7 @@
"Cut on eta1"};
Configurable<float> cfgChi2NDFMax{"cfgChi2NDFMax", 2000.0f, "Max allowed chi2/NDF for MFT tracks"};
Configurable<float> maxDCAxy{"maxDCAxy", 2.0f, "Cut on dcaXY"};
Configurable<float> maxDCAz{"maxDCAz", 2.0f, "Cut on dcaZ"};

HistogramRegistry registry{
"registry",
Expand Down Expand Up @@ -143,11 +147,12 @@
{
if (static_cast<int>(doprocessMult) +
static_cast<int>(doprocessMultReassoc) +
static_cast<int>(doprocessMultReassoc3d) +
static_cast<int>(doprocessCountingCentrality) >
1) {
LOGP(fatal,
"Exactly one process function between processMult, "
"processMultReassoc and processCountingCentrality should be "
"processMultReassoc, processMultReassoc3d and processCountingCentrality should be "
"enabled!");
}
AxisSpec MultAxis = {multBinning, "N_{trk}"};
Expand Down Expand Up @@ -251,7 +256,7 @@
x->SetBinLabel(5, "Selected INEL>0");
}

if (doprocessMultReassoc) {
if (doprocessMultReassoc || doprocessMultReassoc3d) {
registry.add({"Tracks/Control/DeltaZ",
" ; #it{z_{orig}}-#it{z_{reass}}",
{HistType::kTH1F, {ZAxis}}});
Expand Down Expand Up @@ -321,6 +326,9 @@
registry.add({"Tracks/Control/amb/EtaZvtxAmb_gt0",
"; #eta; #it{z}_{vtx} (cm); tracks",
{HistType::kTH2F, {EtaAxis, ZAxis}}}); //
registry.add({"Tracks/Control/amb/DCAxy_amb", " ; DCA_{xy} (cm) ambiguous",
// {HistType::kTH1F,{{100000, 0.5, 100000.0}}}}); //
{HistType::kTH1F, {DCAxyAxis}}}); //

registry.add({"Tracks/Control/nonamb/nonAmbTracksEtaZvtx",
"; #eta; #it{z}_{vtx} (cm); tracks",
Expand All @@ -335,6 +343,9 @@
registry.add({"Tracks/Control/nonamb/EtaZvtxNonAmb_gt0",
"; #eta; #it{z}_{vtx} (cm); tracks",
{HistType::kTH2F, {EtaAxis, ZAxis}}}); //
registry.add({"Tracks/Control/nonamb/DCAxy_nonamb", " ; DCA_{xy}(cm) non-ambiguous",
// {HistType::kTH1F,{{100000, 0.5, 100000.0}}}}); //
{HistType::kTH1F, {{DCAxyAxis}}}}); //

registry.add({"Tracks/Control/woOrp/woOrpTracksEtaZvtx",
"; #eta; #it{z}_{vtx} (cm); tracks",
Expand All @@ -360,6 +371,26 @@
registry.add({"Tracks/Control/woOrp/woOrpVertexCorr",
"; #it{z}_{vtx}^{orig} (cm); #it{z}_{vtx}^{re} (cm)",
{HistType::kTH2F, {ZAxis, ZAxis}}}); //
registry.add({"Tracks/Control/woOrp/DCAxy_woOrp", " ; DCA_{xy}(cm) w/o orphan",
// {HistType::kTH1F,{{100000, 0.5, 100000.0}}}}); //
{HistType::kTH1F, {{DCAxyAxis}}}}); //

if (doprocessMultReassoc3d) {
// DCAz histograms analogous to DCAxy, only for 3D reassociation
registry.add({"Tracks/Control/DCAZ",
" ; DCA_{Z} (cm)",
{HistType::kTH1F, {DCAzAxis}}});
registry.add({"Tracks/Control/amb/DCAz_amb",
" ; DCA_{z} (cm) ambiguous",
{HistType::kTH1F, {DCAzAxis}}});
registry.add({"Tracks/Control/nonamb/DCAz_nonamb",
" ; DCA_{z}(cm) non-ambiguous",
{HistType::kTH1F, {DCAzAxis}}});
registry.add({"Tracks/Control/woOrp/DCAz_woOrp",
" ; DCA_{z}(cm) w/o orphan",
{HistType::kTH1F, {DCAzAxis}}});
}

registry.add({"collisionID", " ; Collision ID",
// {HistType::kTH1F,{{100000, 0.5, 100000.0}}}}); //
{HistType::kTH1F, {{100000, -50000.0, 50000.0}}}}); //
Expand Down Expand Up @@ -487,13 +518,13 @@
"Collect event sample stats", true);

Partition<aod::MFTTracks> sample =
(aod::fwdtrack::eta < -2.8f) && (aod::fwdtrack::eta > -3.2f);

Check failure on line 521 in PWGLF/Tasks/GlobalEventProperties/dndeta-mft-pp.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[magic-number]

Avoid magic numbers in expressions. Assign the value to a clearly named variable or constant.

Partition<aod::Tracks> sampleCentral = (nabs(aod::track::eta) < 1.f);

expressions::Filter atrackFilter =
(aod::fwdtrack::bestCollisionId >= 0) && (aod::fwdtrack::eta < -2.0f) &&

Check failure on line 526 in PWGLF/Tasks/GlobalEventProperties/dndeta-mft-pp.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[magic-number]

Avoid magic numbers in expressions. Assign the value to a clearly named variable or constant.
(aod::fwdtrack::eta > -3.9f) && (nabs(aod::fwdtrack::bestDCAXY) <= 2.f);

Check failure on line 527 in PWGLF/Tasks/GlobalEventProperties/dndeta-mft-pp.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[magic-number]

Avoid magic numbers in expressions. Assign the value to a clearly named variable or constant.

using CollwEv = soa::Join<aod::Collisions, aod::EvSels>;

Expand Down Expand Up @@ -554,7 +585,7 @@
}
registry.fill(HIST("TracksPhiEta"), phi, track.eta());
registry.fill(HIST("TracksPtEta"), track.pt(), track.eta());
if ((track.eta() < -2.0f) && (track.eta() > -3.9f)) {

Check failure on line 588 in PWGLF/Tasks/GlobalEventProperties/dndeta-mft-pp.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[magic-number]

Avoid magic numbers in expressions. Assign the value to a clearly named variable or constant.
registry.fill(HIST("TracksPhiZvtx"), phi, z);
}
}
Expand All @@ -567,10 +598,12 @@

PROCESS_SWITCH(PseudorapidityDensityMFT, processMult,
"Process reco or data info", true);
void processMultReassoc(CollwEv::iterator const& collision,
o2::aod::MFTTracks const&,
soa::SmallGroups<aod::BestCollisionsFwd> const& retracks,
FiCentralTracks const& midtracks, aod::Tracks const&)
// Common implementation for both BestCollisionsFwd and BestCollisionsFwd3d
template <typename RetracksT>
void processMultReassocCommon(CollwEv::iterator const& collision,
o2::aod::MFTTracks const&,
RetracksT const& retracks,
FiCentralTracks const& midtracks, aod::Tracks const&)
{
registry.fill(HIST("EventSelection"), 1.);
auto perCollisionSample = sampleCentral->sliceByCached(
Expand All @@ -588,7 +621,7 @@
float phi = track.phi();
o2::math_utils::bringTo02Pi(phi);
if (usePhiCut) {
if ((phi <= 0.02) || ((phi >= 3.10) && (phi <= 3.23)) || (phi >= 6.21))

Check failure on line 624 in PWGLF/Tasks/GlobalEventProperties/dndeta-mft-pp.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[magic-number]

Avoid magic numbers in expressions. Assign the value to a clearly named variable or constant.
continue;
}
float dcaxy_cut = retrack.bestDCAXY();
Expand All @@ -596,6 +629,13 @@
if (dcaxy_cut > maxDCAxy)
continue;
}
if constexpr (std::is_same_v<RetracksT, soa::SmallGroups<aod::BestCollisionsFwd3d>>) {
float dcaz_cut = retrack.bestDCAZ();
if (useDCAzCut) {
if (dcaz_cut > maxDCAz)
continue;
}
}
if ((cfgnEta1 < track.eta()) && (track.eta() < cfgnEta2) && track.nClusters() >= cfgnCluster && retrack.ambDegree() > 0 && chi2ndf < cfgChi2NDFMax && (phi > cfgPhiCut1 && phi < cfgPhiCut2)) {
registry.fill(HIST("Tracks/2Danalysis/EtaZvtx"), track.eta(), z);
}
Expand Down Expand Up @@ -633,7 +673,7 @@
float phi = track.phi();
o2::math_utils::bringTo02Pi(phi);
if (usePhiCut) {
if ((phi <= 0.02) || ((phi >= 3.10) && (phi <= 3.23)) || (phi >= 6.21))

Check failure on line 676 in PWGLF/Tasks/GlobalEventProperties/dndeta-mft-pp.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[magic-number]

Avoid magic numbers in expressions. Assign the value to a clearly named variable or constant.
continue;
}
float dcaxy_cut = retrack.bestDCAXY();
Expand All @@ -641,6 +681,13 @@
if (dcaxy_cut > maxDCAxy)
continue;
}
if constexpr (std::is_same_v<RetracksT, soa::SmallGroups<aod::BestCollisionsFwd3d>>) {
float dcaz_cut = retrack.bestDCAZ();
if (useDCAzCut) {
if (dcaz_cut > maxDCAz)
continue;
}
}
if ((cfgnEta1 < track.eta()) && (track.eta() < cfgnEta2) && track.nClusters() >= cfgnCluster && retrack.ambDegree() > 0 && chi2ndf < cfgChi2NDFMax && (phi > cfgPhiCut1 && phi < cfgPhiCut2)) {
registry.fill(HIST("Tracks/Control/Chi2NDF"), chi2ndf);
registry.fill(HIST("Tracks/2Danalysis/EtaZvtx_sel8"), track.eta(), z);
Expand All @@ -661,15 +708,23 @@
float phi = track.phi();
float dcaxy_cut = retrack.bestDCAXY();
o2::math_utils::bringTo02Pi(phi);
// Declare dcaz_cut only if needed below.
if ((cfgnEta1 < track.eta()) && (track.eta() < cfgnEta2) && track.nClusters() >= cfgnCluster && chi2ndf < cfgChi2NDFMax && (phi > cfgPhiCut1 && phi < cfgPhiCut2)) {
if (usePhiCut) {
if ((phi <= 0.02) || ((phi >= 3.10) && (phi <= 3.23)) || (phi >= 6.21))

Check failure on line 714 in PWGLF/Tasks/GlobalEventProperties/dndeta-mft-pp.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[magic-number]

Avoid magic numbers in expressions. Assign the value to a clearly named variable or constant.
continue;
}
if (useDCAxyCut) {
if (dcaxy_cut > maxDCAxy)
continue;
}
if constexpr (std::is_same_v<RetracksT, soa::SmallGroups<aod::BestCollisionsFwd3d>>) {
float dcaz_cut = retrack.bestDCAZ();
if (useDCAzCut) {
if (dcaz_cut > maxDCAz)
continue;
}
}
registry.fill(HIST("TracksEtaZvtx"), track.eta(), z);
if (midtracks.size() > 0 && retrack.ambDegree() > 0) {
registry.fill(HIST("Tracks/EtaZvtx_gt0"), track.eta(), z);
Expand All @@ -685,7 +740,7 @@
registry.fill(HIST("Tracks/Control/TrackCount"), 0);
registry.fill(HIST("TracksPhiEta"), phi, track.eta());
registry.fill(HIST("TracksPtEta"), track.pt(), track.eta());
if ((track.eta() < -2.0f) && (track.eta() > -3.9f)) {

Check failure on line 743 in PWGLF/Tasks/GlobalEventProperties/dndeta-mft-pp.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[magic-number]

Avoid magic numbers in expressions. Assign the value to a clearly named variable or constant.
registry.fill(HIST("TracksPhiZvtx"), phi, z);
}
if (track.collisionId() > -1 && retrack.ambDegree() == 1) {
Expand All @@ -701,10 +756,10 @@
registry.fill(HIST("Tracks/Control/ReassignedTracksPhiEta"), phi,
track.eta());
registry.fill(HIST("Tracks/Control/ReassignedVertexCorr"),
track.collision_as<CollwEv>().posZ(), z);
track.template collision_as<CollwEv>().posZ(), z);

registry.fill(HIST("Tracks/Control/DeltaZ"),
track.collision_as<CollwEv>().posZ() -
track.template collision_as<CollwEv>().posZ() -
collision.posZ());
registry.fill(HIST("Tracks/Control/TrackCount"), 1);
}
Expand All @@ -714,13 +769,16 @@
registry.fill(HIST("Tracks/Control/notReassignedTracksPhiEta"), phi,
track.eta());
registry.fill(HIST("Tracks/Control/notReassignedVertexCorr"),
track.collision_as<CollwEv>().posZ(), z);
track.template collision_as<CollwEv>().posZ(), z);
registry.fill(HIST("Tracks/Control/TrackCount"), 2);
}

registry.fill(HIST("Tracks/Control/TrackAmbDegree"),
retrack.ambDegree());
registry.fill(HIST("Tracks/Control/DCAXY"), retrack.bestDCAXY());
if constexpr (std::is_same_v<RetracksT, soa::SmallGroups<aod::BestCollisionsFwd3d>>) {
registry.fill(HIST("Tracks/Control/DCAZ"), retrack.bestDCAZ());
}
int isAmbiguous = 0;

if (retrack.ambDegree() > 1 && retrack.ambDegree() != 0) {
Expand All @@ -734,7 +792,11 @@
registry.fill(HIST("Tracks/Control/amb/AmbTracksPhiEta"), phi,
track.eta());
registry.fill(HIST("Tracks/Control/amb/AmbVertexCorr"),
track.collision_as<CollwEv>().posZ(), z);
track.template collision_as<CollwEv>().posZ(), z);
registry.fill(HIST("Tracks/Control/amb/DCAxy_amb"), retrack.bestDCAXY());
if constexpr (std::is_same_v<RetracksT, soa::SmallGroups<aod::BestCollisionsFwd3d>>) {
registry.fill(HIST("Tracks/Control/amb/DCAz_amb"), retrack.bestDCAZ());
}
registry.fill(HIST("Tracks/Control/TrackCount"), 3);
if (track.collisionId() == retrack.bestCollisionId()) {
registry.fill(HIST("Tracks/Control/TrackCount"), 5);
Expand All @@ -754,7 +816,11 @@
registry.fill(HIST("Tracks/Control/nonamb/nonAmbTracksPhiEta"), phi,
track.eta());
registry.fill(HIST("Tracks/Control/nonamb/nonAmbVertexCorr"),
track.collision_as<CollwEv>().posZ(), z);
track.template collision_as<CollwEv>().posZ(), z);
registry.fill(HIST("Tracks/Control/nonamb/DCAxy_nonamb"), retrack.bestDCAXY());
if constexpr (std::is_same_v<RetracksT, soa::SmallGroups<aod::BestCollisionsFwd3d>>) {
registry.fill(HIST("Tracks/Control/nonamb/DCAz_nonamb"), retrack.bestDCAZ());
}
registry.fill(HIST("Tracks/Control/TrackCount"), 4);
if (track.collisionId() == retrack.bestCollisionId()) {
registry.fill(HIST("Tracks/Control/TrackCount"), 6);
Expand All @@ -772,8 +838,12 @@
registry.fill(HIST("Tracks/Control/woOrp/woOrpTracksPhiEta"), phi,
track.eta());
registry.fill(HIST("Tracks/Control/woOrp/woOrpVertexCorr"),
track.collision_as<CollwEv>().posZ(), z);
track.template collision_as<CollwEv>().posZ(), z);
registry.fill(HIST("Tracks/Control/TrackCount"), 9); // without orphan
registry.fill(HIST("Tracks/Control/woOrp/DCAxy_woOrp"), retrack.bestDCAXY());
if constexpr (std::is_same_v<RetracksT, soa::SmallGroups<aod::BestCollisionsFwd3d>>) {
registry.fill(HIST("Tracks/Control/woOrp/DCAz_woOrp"), retrack.bestDCAZ());
}
}
}
}
Expand All @@ -792,9 +862,28 @@
registry.fill(HIST("EventSelection"), 7);
}
}

void processMultReassoc(CollwEv::iterator const& collision,
o2::aod::MFTTracks const& mft,
soa::SmallGroups<aod::BestCollisionsFwd> const& retracks,
FiCentralTracks const& midtracks, aod::Tracks const& trk)
{
processMultReassocCommon(collision, mft, retracks, midtracks, trk);
}

void processMultReassoc3d(CollwEv::iterator const& collision,
o2::aod::MFTTracks const& mft,
soa::SmallGroups<aod::BestCollisionsFwd3d> const& retracks,
FiCentralTracks const& midtracks, aod::Tracks const& trk)
{
processMultReassocCommon(collision, mft, retracks, midtracks, trk);
}
PROCESS_SWITCH(PseudorapidityDensityMFT, processMultReassoc,
"Process reco or data info", false);

PROCESS_SWITCH(PseudorapidityDensityMFT, processMultReassoc3d,
"Process reco or data info (3d)", false);

using ExColsCent = soa::Join<aod::Collisions, aod::CentFT0Cs, aod::EvSels>;

void processCountingCentrality(ExColsCent::iterator const& collision,
Expand Down Expand Up @@ -844,7 +933,7 @@
(aod::mcparticle::flags &
(uint8_t)o2::aod::mcparticle::enums::PhysicalPrimary) ==
(uint8_t)o2::aod::mcparticle::enums::PhysicalPrimary;
Partition<Particles> mcSample = nabs(aod::mcparticle::eta) < 1.1f;

Check failure on line 936 in PWGLF/Tasks/GlobalEventProperties/dndeta-mft-pp.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[magic-number]

Avoid magic numbers in expressions. Assign the value to a clearly named variable or constant.
Partition<Particles> mcSampleCentral =
nabs(aod::mcparticle::eta) < estimatorEta;

Expand All @@ -866,7 +955,7 @@
if (p != nullptr) {
charge = p->Charge();
}
if (std::abs(charge) < 3.) {

Check failure on line 958 in PWGLF/Tasks/GlobalEventProperties/dndeta-mft-pp.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[magic-number]

Avoid magic numbers in expressions. Assign the value to a clearly named variable or constant.
continue;
}
nCharged++;
Expand Down
Loading