Skip to content

Commit 55e84d7

Browse files
tutripatalibuild
andauthored
[PWGLF] Update to add processReassociation3d and dca information (#12904)
Co-authored-by: ALICE Action Bot <alibuild@cern.ch>
1 parent ce4ee83 commit 55e84d7

File tree

1 file changed

+102
-13
lines changed

1 file changed

+102
-13
lines changed

PWGLF/Tasks/GlobalEventProperties/dndeta-mft-pp.cxx

Lines changed: 102 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ AxisSpec DeltaZAxis = {61, -6.1, 6.1};
5353
AxisSpec ZAxis = {301, -30.1, 30.1};
5454
AxisSpec PhiAxis = {629, 0, o2::constants::math::TwoPI, "Rad", "phi axis"};
5555
// AxisSpec EtaAxis = {18, -4.6, -1.};
56-
AxisSpec DCAxyAxis = {100, -1, 10};
56+
AxisSpec DCAxyAxis = {5000, -1, 500};
57+
AxisSpec DCAzAxis = {5000, -251, 250};
5758
AxisSpec CentAxis = {{0, 10, 20, 30, 40, 50, 60, 70, 80, 100}};
5859

5960
static constexpr TrackSelectionFlags::flagtype trackSelectionITS =
@@ -93,6 +94,8 @@ struct PseudorapidityDensityMFT {
9394

9495
Configurable<bool> usePhiCut{"usePhiCut", true, "use azimuthal angle cut"};
9596
Configurable<bool> useDCAxyCut{"useDCAxyCut", false, "use DCAxy cut"};
97+
Configurable<bool> useDCAzCut{"useDCAzCut", false, "use DCAz cut"};
98+
9699
Configurable<float> cfgPhiCut{"cfgPhiCut", 0.1f,
97100
"Cut on azimuthal angle of MFT tracks"};
98101
Configurable<float> cfgPhiCut1{"cfgPhiCut1", 0.0f,
@@ -111,6 +114,7 @@ struct PseudorapidityDensityMFT {
111114
"Cut on eta1"};
112115
Configurable<float> cfgChi2NDFMax{"cfgChi2NDFMax", 2000.0f, "Max allowed chi2/NDF for MFT tracks"};
113116
Configurable<float> maxDCAxy{"maxDCAxy", 2.0f, "Cut on dcaXY"};
117+
Configurable<float> maxDCAz{"maxDCAz", 2.0f, "Cut on dcaZ"};
114118

115119
HistogramRegistry registry{
116120
"registry",
@@ -143,11 +147,12 @@ struct PseudorapidityDensityMFT {
143147
{
144148
if (static_cast<int>(doprocessMult) +
145149
static_cast<int>(doprocessMultReassoc) +
150+
static_cast<int>(doprocessMultReassoc3d) +
146151
static_cast<int>(doprocessCountingCentrality) >
147152
1) {
148153
LOGP(fatal,
149154
"Exactly one process function between processMult, "
150-
"processMultReassoc and processCountingCentrality should be "
155+
"processMultReassoc, processMultReassoc3d and processCountingCentrality should be "
151156
"enabled!");
152157
}
153158
AxisSpec MultAxis = {multBinning, "N_{trk}"};
@@ -251,7 +256,7 @@ struct PseudorapidityDensityMFT {
251256
x->SetBinLabel(5, "Selected INEL>0");
252257
}
253258

254-
if (doprocessMultReassoc) {
259+
if (doprocessMultReassoc || doprocessMultReassoc3d) {
255260
registry.add({"Tracks/Control/DeltaZ",
256261
" ; #it{z_{orig}}-#it{z_{reass}}",
257262
{HistType::kTH1F, {ZAxis}}});
@@ -321,6 +326,9 @@ struct PseudorapidityDensityMFT {
321326
registry.add({"Tracks/Control/amb/EtaZvtxAmb_gt0",
322327
"; #eta; #it{z}_{vtx} (cm); tracks",
323328
{HistType::kTH2F, {EtaAxis, ZAxis}}}); //
329+
registry.add({"Tracks/Control/amb/DCAxy_amb", " ; DCA_{xy} (cm) ambiguous",
330+
// {HistType::kTH1F,{{100000, 0.5, 100000.0}}}}); //
331+
{HistType::kTH1F, {DCAxyAxis}}}); //
324332

325333
registry.add({"Tracks/Control/nonamb/nonAmbTracksEtaZvtx",
326334
"; #eta; #it{z}_{vtx} (cm); tracks",
@@ -335,6 +343,9 @@ struct PseudorapidityDensityMFT {
335343
registry.add({"Tracks/Control/nonamb/EtaZvtxNonAmb_gt0",
336344
"; #eta; #it{z}_{vtx} (cm); tracks",
337345
{HistType::kTH2F, {EtaAxis, ZAxis}}}); //
346+
registry.add({"Tracks/Control/nonamb/DCAxy_nonamb", " ; DCA_{xy}(cm) non-ambiguous",
347+
// {HistType::kTH1F,{{100000, 0.5, 100000.0}}}}); //
348+
{HistType::kTH1F, {{DCAxyAxis}}}}); //
338349

339350
registry.add({"Tracks/Control/woOrp/woOrpTracksEtaZvtx",
340351
"; #eta; #it{z}_{vtx} (cm); tracks",
@@ -360,6 +371,26 @@ struct PseudorapidityDensityMFT {
360371
registry.add({"Tracks/Control/woOrp/woOrpVertexCorr",
361372
"; #it{z}_{vtx}^{orig} (cm); #it{z}_{vtx}^{re} (cm)",
362373
{HistType::kTH2F, {ZAxis, ZAxis}}}); //
374+
registry.add({"Tracks/Control/woOrp/DCAxy_woOrp", " ; DCA_{xy}(cm) w/o orphan",
375+
// {HistType::kTH1F,{{100000, 0.5, 100000.0}}}}); //
376+
{HistType::kTH1F, {{DCAxyAxis}}}}); //
377+
378+
if (doprocessMultReassoc3d) {
379+
// DCAz histograms analogous to DCAxy, only for 3D reassociation
380+
registry.add({"Tracks/Control/DCAZ",
381+
" ; DCA_{Z} (cm)",
382+
{HistType::kTH1F, {DCAzAxis}}});
383+
registry.add({"Tracks/Control/amb/DCAz_amb",
384+
" ; DCA_{z} (cm) ambiguous",
385+
{HistType::kTH1F, {DCAzAxis}}});
386+
registry.add({"Tracks/Control/nonamb/DCAz_nonamb",
387+
" ; DCA_{z}(cm) non-ambiguous",
388+
{HistType::kTH1F, {DCAzAxis}}});
389+
registry.add({"Tracks/Control/woOrp/DCAz_woOrp",
390+
" ; DCA_{z}(cm) w/o orphan",
391+
{HistType::kTH1F, {DCAzAxis}}});
392+
}
393+
363394
registry.add({"collisionID", " ; Collision ID",
364395
// {HistType::kTH1F,{{100000, 0.5, 100000.0}}}}); //
365396
{HistType::kTH1F, {{100000, -50000.0, 50000.0}}}}); //
@@ -567,10 +598,12 @@ struct PseudorapidityDensityMFT {
567598

568599
PROCESS_SWITCH(PseudorapidityDensityMFT, processMult,
569600
"Process reco or data info", true);
570-
void processMultReassoc(CollwEv::iterator const& collision,
571-
o2::aod::MFTTracks const&,
572-
soa::SmallGroups<aod::BestCollisionsFwd> const& retracks,
573-
FiCentralTracks const& midtracks, aod::Tracks const&)
601+
// Common implementation for both BestCollisionsFwd and BestCollisionsFwd3d
602+
template <typename RetracksT>
603+
void processMultReassocCommon(CollwEv::iterator const& collision,
604+
o2::aod::MFTTracks const&,
605+
RetracksT const& retracks,
606+
FiCentralTracks const& midtracks, aod::Tracks const&)
574607
{
575608
registry.fill(HIST("EventSelection"), 1.);
576609
auto perCollisionSample = sampleCentral->sliceByCached(
@@ -596,6 +629,13 @@ struct PseudorapidityDensityMFT {
596629
if (dcaxy_cut > maxDCAxy)
597630
continue;
598631
}
632+
if constexpr (std::is_same_v<RetracksT, soa::SmallGroups<aod::BestCollisionsFwd3d>>) {
633+
float dcaz_cut = retrack.bestDCAZ();
634+
if (useDCAzCut) {
635+
if (dcaz_cut > maxDCAz)
636+
continue;
637+
}
638+
}
599639
if ((cfgnEta1 < track.eta()) && (track.eta() < cfgnEta2) && track.nClusters() >= cfgnCluster && retrack.ambDegree() > 0 && chi2ndf < cfgChi2NDFMax && (phi > cfgPhiCut1 && phi < cfgPhiCut2)) {
600640
registry.fill(HIST("Tracks/2Danalysis/EtaZvtx"), track.eta(), z);
601641
}
@@ -641,6 +681,13 @@ struct PseudorapidityDensityMFT {
641681
if (dcaxy_cut > maxDCAxy)
642682
continue;
643683
}
684+
if constexpr (std::is_same_v<RetracksT, soa::SmallGroups<aod::BestCollisionsFwd3d>>) {
685+
float dcaz_cut = retrack.bestDCAZ();
686+
if (useDCAzCut) {
687+
if (dcaz_cut > maxDCAz)
688+
continue;
689+
}
690+
}
644691
if ((cfgnEta1 < track.eta()) && (track.eta() < cfgnEta2) && track.nClusters() >= cfgnCluster && retrack.ambDegree() > 0 && chi2ndf < cfgChi2NDFMax && (phi > cfgPhiCut1 && phi < cfgPhiCut2)) {
645692
registry.fill(HIST("Tracks/Control/Chi2NDF"), chi2ndf);
646693
registry.fill(HIST("Tracks/2Danalysis/EtaZvtx_sel8"), track.eta(), z);
@@ -661,6 +708,7 @@ struct PseudorapidityDensityMFT {
661708
float phi = track.phi();
662709
float dcaxy_cut = retrack.bestDCAXY();
663710
o2::math_utils::bringTo02Pi(phi);
711+
// Declare dcaz_cut only if needed below.
664712
if ((cfgnEta1 < track.eta()) && (track.eta() < cfgnEta2) && track.nClusters() >= cfgnCluster && chi2ndf < cfgChi2NDFMax && (phi > cfgPhiCut1 && phi < cfgPhiCut2)) {
665713
if (usePhiCut) {
666714
if ((phi <= 0.02) || ((phi >= 3.10) && (phi <= 3.23)) || (phi >= 6.21))
@@ -670,6 +718,13 @@ struct PseudorapidityDensityMFT {
670718
if (dcaxy_cut > maxDCAxy)
671719
continue;
672720
}
721+
if constexpr (std::is_same_v<RetracksT, soa::SmallGroups<aod::BestCollisionsFwd3d>>) {
722+
float dcaz_cut = retrack.bestDCAZ();
723+
if (useDCAzCut) {
724+
if (dcaz_cut > maxDCAz)
725+
continue;
726+
}
727+
}
673728
registry.fill(HIST("TracksEtaZvtx"), track.eta(), z);
674729
if (midtracks.size() > 0 && retrack.ambDegree() > 0) {
675730
registry.fill(HIST("Tracks/EtaZvtx_gt0"), track.eta(), z);
@@ -701,10 +756,10 @@ struct PseudorapidityDensityMFT {
701756
registry.fill(HIST("Tracks/Control/ReassignedTracksPhiEta"), phi,
702757
track.eta());
703758
registry.fill(HIST("Tracks/Control/ReassignedVertexCorr"),
704-
track.collision_as<CollwEv>().posZ(), z);
759+
track.template collision_as<CollwEv>().posZ(), z);
705760

706761
registry.fill(HIST("Tracks/Control/DeltaZ"),
707-
track.collision_as<CollwEv>().posZ() -
762+
track.template collision_as<CollwEv>().posZ() -
708763
collision.posZ());
709764
registry.fill(HIST("Tracks/Control/TrackCount"), 1);
710765
}
@@ -714,13 +769,16 @@ struct PseudorapidityDensityMFT {
714769
registry.fill(HIST("Tracks/Control/notReassignedTracksPhiEta"), phi,
715770
track.eta());
716771
registry.fill(HIST("Tracks/Control/notReassignedVertexCorr"),
717-
track.collision_as<CollwEv>().posZ(), z);
772+
track.template collision_as<CollwEv>().posZ(), z);
718773
registry.fill(HIST("Tracks/Control/TrackCount"), 2);
719774
}
720775

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

726784
if (retrack.ambDegree() > 1 && retrack.ambDegree() != 0) {
@@ -734,7 +792,11 @@ struct PseudorapidityDensityMFT {
734792
registry.fill(HIST("Tracks/Control/amb/AmbTracksPhiEta"), phi,
735793
track.eta());
736794
registry.fill(HIST("Tracks/Control/amb/AmbVertexCorr"),
737-
track.collision_as<CollwEv>().posZ(), z);
795+
track.template collision_as<CollwEv>().posZ(), z);
796+
registry.fill(HIST("Tracks/Control/amb/DCAxy_amb"), retrack.bestDCAXY());
797+
if constexpr (std::is_same_v<RetracksT, soa::SmallGroups<aod::BestCollisionsFwd3d>>) {
798+
registry.fill(HIST("Tracks/Control/amb/DCAz_amb"), retrack.bestDCAZ());
799+
}
738800
registry.fill(HIST("Tracks/Control/TrackCount"), 3);
739801
if (track.collisionId() == retrack.bestCollisionId()) {
740802
registry.fill(HIST("Tracks/Control/TrackCount"), 5);
@@ -754,7 +816,11 @@ struct PseudorapidityDensityMFT {
754816
registry.fill(HIST("Tracks/Control/nonamb/nonAmbTracksPhiEta"), phi,
755817
track.eta());
756818
registry.fill(HIST("Tracks/Control/nonamb/nonAmbVertexCorr"),
757-
track.collision_as<CollwEv>().posZ(), z);
819+
track.template collision_as<CollwEv>().posZ(), z);
820+
registry.fill(HIST("Tracks/Control/nonamb/DCAxy_nonamb"), retrack.bestDCAXY());
821+
if constexpr (std::is_same_v<RetracksT, soa::SmallGroups<aod::BestCollisionsFwd3d>>) {
822+
registry.fill(HIST("Tracks/Control/nonamb/DCAz_nonamb"), retrack.bestDCAZ());
823+
}
758824
registry.fill(HIST("Tracks/Control/TrackCount"), 4);
759825
if (track.collisionId() == retrack.bestCollisionId()) {
760826
registry.fill(HIST("Tracks/Control/TrackCount"), 6);
@@ -772,8 +838,12 @@ struct PseudorapidityDensityMFT {
772838
registry.fill(HIST("Tracks/Control/woOrp/woOrpTracksPhiEta"), phi,
773839
track.eta());
774840
registry.fill(HIST("Tracks/Control/woOrp/woOrpVertexCorr"),
775-
track.collision_as<CollwEv>().posZ(), z);
841+
track.template collision_as<CollwEv>().posZ(), z);
776842
registry.fill(HIST("Tracks/Control/TrackCount"), 9); // without orphan
843+
registry.fill(HIST("Tracks/Control/woOrp/DCAxy_woOrp"), retrack.bestDCAXY());
844+
if constexpr (std::is_same_v<RetracksT, soa::SmallGroups<aod::BestCollisionsFwd3d>>) {
845+
registry.fill(HIST("Tracks/Control/woOrp/DCAz_woOrp"), retrack.bestDCAZ());
846+
}
777847
}
778848
}
779849
}
@@ -792,9 +862,28 @@ struct PseudorapidityDensityMFT {
792862
registry.fill(HIST("EventSelection"), 7);
793863
}
794864
}
865+
866+
void processMultReassoc(CollwEv::iterator const& collision,
867+
o2::aod::MFTTracks const& mft,
868+
soa::SmallGroups<aod::BestCollisionsFwd> const& retracks,
869+
FiCentralTracks const& midtracks, aod::Tracks const& trk)
870+
{
871+
processMultReassocCommon(collision, mft, retracks, midtracks, trk);
872+
}
873+
874+
void processMultReassoc3d(CollwEv::iterator const& collision,
875+
o2::aod::MFTTracks const& mft,
876+
soa::SmallGroups<aod::BestCollisionsFwd3d> const& retracks,
877+
FiCentralTracks const& midtracks, aod::Tracks const& trk)
878+
{
879+
processMultReassocCommon(collision, mft, retracks, midtracks, trk);
880+
}
795881
PROCESS_SWITCH(PseudorapidityDensityMFT, processMultReassoc,
796882
"Process reco or data info", false);
797883

884+
PROCESS_SWITCH(PseudorapidityDensityMFT, processMultReassoc3d,
885+
"Process reco or data info (3d)", false);
886+
798887
using ExColsCent = soa::Join<aod::Collisions, aod::CentFT0Cs, aod::EvSels>;
799888

800889
void processCountingCentrality(ExColsCent::iterator const& collision,

0 commit comments

Comments
 (0)