Skip to content

Commit 7600157

Browse files
authored
Update to add processReassociation3d and dca information
added processReassociation3d and dca information
1 parent e0237f6 commit 7600157

File tree

1 file changed

+90
-10
lines changed

1 file changed

+90
-10
lines changed

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

Lines changed: 90 additions & 10 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,7 @@ 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"};
9698
Configurable<float> cfgPhiCut{"cfgPhiCut", 0.1f,
9799
"Cut on azimuthal angle of MFT tracks"};
98100
Configurable<float> cfgPhiCut1{"cfgPhiCut1", 0.0f,
@@ -111,6 +113,7 @@ struct PseudorapidityDensityMFT {
111113
"Cut on eta1"};
112114
Configurable<float> cfgChi2NDFMax{"cfgChi2NDFMax", 2000.0f, "Max allowed chi2/NDF for MFT tracks"};
113115
Configurable<float> maxDCAxy{"maxDCAxy", 2.0f, "Cut on dcaXY"};
116+
Configurable<float> maxDCAz{"maxDCAz", 2.0f, "Cut on dcaZ"};
114117

115118
HistogramRegistry registry{
116119
"registry",
@@ -142,13 +145,14 @@ struct PseudorapidityDensityMFT {
142145
void init(InitContext&)
143146
{
144147
if (static_cast<int>(doprocessMult) +
145-
static_cast<int>(doprocessMultReassoc) +
148+
static_cast<int>(doprocessMultReassoc) +
149+
static_cast<int>(doprocessMultReassoc3d) +
146150
static_cast<int>(doprocessCountingCentrality) >
147151
1) {
148152
LOGP(fatal,
149153
"Exactly one process function between processMult, "
150-
"processMultReassoc and processCountingCentrality should be "
151-
"enabled!");
154+
"processMultReassoc, processMultReassoc3d, and processCountingCentrality should be "
155+
"enabled!");
152156
}
153157
AxisSpec MultAxis = {multBinning, "N_{trk}"};
154158
auto hstat = registry.get<TH1>(HIST("EventSelection"));
@@ -251,7 +255,7 @@ struct PseudorapidityDensityMFT {
251255
x->SetBinLabel(5, "Selected INEL>0");
252256
}
253257

254-
if (doprocessMultReassoc) {
258+
if (doprocessMultReassoc || doprocessMultReassoc3d) {
255259
registry.add({"Tracks/Control/DeltaZ",
256260
" ; #it{z_{orig}}-#it{z_{reass}}",
257261
{HistType::kTH1F, {ZAxis}}});
@@ -321,6 +325,8 @@ struct PseudorapidityDensityMFT {
321325
registry.add({"Tracks/Control/amb/EtaZvtxAmb_gt0",
322326
"; #eta; #it{z}_{vtx} (cm); tracks",
323327
{HistType::kTH2F, {EtaAxis, ZAxis}}}); //
328+
registry.add({"Tracks/Control/amb/DCAxy_amb", " ; DCA_{xy} (cm) ambiguous",
329+
{HistType::kTH1F, {DCAxyAxis}}});
324330

325331
registry.add({"Tracks/Control/nonamb/nonAmbTracksEtaZvtx",
326332
"; #eta; #it{z}_{vtx} (cm); tracks",
@@ -335,13 +341,17 @@ struct PseudorapidityDensityMFT {
335341
registry.add({"Tracks/Control/nonamb/EtaZvtxNonAmb_gt0",
336342
"; #eta; #it{z}_{vtx} (cm); tracks",
337343
{HistType::kTH2F, {EtaAxis, ZAxis}}}); //
344+
registry.add({"Tracks/Control/nonamb/DCAxy_nonamb", " ; DCA_{xy}(cm) non-ambiguous",
345+
{HistType::kTH1F, {{DCAxyAxis}}}}); //
338346

339347
registry.add({"Tracks/Control/woOrp/woOrpTracksEtaZvtx",
340348
"; #eta; #it{z}_{vtx} (cm); tracks",
341349
{HistType::kTH2F, {EtaAxis, ZAxis}}}); //
342350
registry.add({"Tracks/Control/woOrp/woOrpEtaZvtx_gt0",
343351
"; #eta; #it{z}_{vtx} (cm); tracks",
344352
{HistType::kTH2F, {EtaAxis, ZAxis}}}); //
353+
registry.add({"Tracks/Control/woOrp/DCAxy_woOrp", " ; DCA_{xy}(cm) w/o orphan",
354+
{HistType::kTH1F, {{DCAxyAxis}}}}); //
345355
registry.add({"Tracks/2Danalysis/EtaZvtx",
346356
"; #eta; #it{z}_{vtx} (cm); tracks",
347357
{HistType::kTH2F, {EtaAxis, ZAxis}}}); //
@@ -360,6 +370,20 @@ struct PseudorapidityDensityMFT {
360370
registry.add({"Tracks/Control/woOrp/woOrpVertexCorr",
361371
"; #it{z}_{vtx}^{orig} (cm); #it{z}_{vtx}^{re} (cm)",
362372
{HistType::kTH2F, {ZAxis, ZAxis}}}); //
373+
if (doprocessMultReassoc3d) {
374+
registry.add({"Tracks/Control/DCAZ",
375+
" ; DCA_{Z} (cm)",
376+
{HistType::kTH1F, {DCAzAxis}}});
377+
registry.add({"Tracks/Control/amb/DCAz_amb",
378+
" ; DCA_{z} (cm) ambiguous",
379+
{HistType::kTH1F, {DCAzAxis}}});
380+
registry.add({"Tracks/Control/nonamb/DCAz_nonamb",
381+
" ; DCA_{z}(cm) non-ambiguous",
382+
{HistType::kTH1F, {DCAzAxis}}});
383+
registry.add({"Tracks/Control/woOrp/DCAz_woOrp",
384+
" ; DCA_{z}(cm) w/o orphan",
385+
{HistType::kTH1F, {DCAzAxis}}});
386+
}
363387
registry.add({"collisionID", " ; Collision ID",
364388
// {HistType::kTH1F,{{100000, 0.5, 100000.0}}}}); //
365389
{HistType::kTH1F, {{100000, -50000.0, 50000.0}}}}); //
@@ -567,10 +591,12 @@ struct PseudorapidityDensityMFT {
567591

568592
PROCESS_SWITCH(PseudorapidityDensityMFT, processMult,
569593
"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&)
594+
// Common implementation for both BestCollisionsFwd and BestCollisionsFwd3d
595+
template <typename RetracksT>
596+
void processMultReassocCommon(CollwEv::iterator const& collision,
597+
o2::aod::MFTTracks const&,
598+
RetracksT const& retracks,
599+
FiCentralTracks const& midtracks, aod::Tracks const&)
574600
{
575601
registry.fill(HIST("EventSelection"), 1.);
576602
auto perCollisionSample = sampleCentral->sliceByCached(
@@ -596,6 +622,13 @@ struct PseudorapidityDensityMFT {
596622
if (dcaxy_cut > maxDCAxy)
597623
continue;
598624
}
625+
if constexpr (std::is_same_v<RetracksT, soa::SmallGroups<aod::BestCollisionsFwd3d>>) {
626+
float dcaz_cut = retrack.bestDCAZ();
627+
if (useDCAzCut) {
628+
if (dcaz_cut > maxDCAz)
629+
continue;
630+
}
631+
}
599632
if ((cfgnEta1 < track.eta()) && (track.eta() < cfgnEta2) && track.nClusters() >= cfgnCluster && retrack.ambDegree() > 0 && chi2ndf < cfgChi2NDFMax && (phi > cfgPhiCut1 && phi < cfgPhiCut2)) {
600633
registry.fill(HIST("Tracks/2Danalysis/EtaZvtx"), track.eta(), z);
601634
}
@@ -641,6 +674,13 @@ struct PseudorapidityDensityMFT {
641674
if (dcaxy_cut > maxDCAxy)
642675
continue;
643676
}
677+
if constexpr (std::is_same_v<RetracksT, soa::SmallGroups<aod::BestCollisionsFwd3d>>) {
678+
float dcaz_cut = retrack.bestDCAZ();
679+
if (useDCAzCut) {
680+
if (dcaz_cut > maxDCAz)
681+
continue;
682+
}
683+
}
644684
if ((cfgnEta1 < track.eta()) && (track.eta() < cfgnEta2) && track.nClusters() >= cfgnCluster && retrack.ambDegree() > 0 && chi2ndf < cfgChi2NDFMax && (phi > cfgPhiCut1 && phi < cfgPhiCut2)) {
645685
registry.fill(HIST("Tracks/Control/Chi2NDF"), chi2ndf);
646686
registry.fill(HIST("Tracks/2Danalysis/EtaZvtx_sel8"), track.eta(), z);
@@ -670,6 +710,14 @@ struct PseudorapidityDensityMFT {
670710
if (dcaxy_cut > maxDCAxy)
671711
continue;
672712
}
713+
if constexpr (std::is_same_v<RetracksT, soa::SmallGroups<aod::BestCollisionsFwd3d>>) {
714+
float dcaz_cut = retrack.bestDCAZ();
715+
if (useDCAzCut) {
716+
if (dcaz_cut > maxDCAz)
717+
continue;
718+
}
719+
}
720+
673721
registry.fill(HIST("TracksEtaZvtx"), track.eta(), z);
674722
if (midtracks.size() > 0 && retrack.ambDegree() > 0) {
675723
registry.fill(HIST("Tracks/EtaZvtx_gt0"), track.eta(), z);
@@ -721,6 +769,9 @@ struct PseudorapidityDensityMFT {
721769
registry.fill(HIST("Tracks/Control/TrackAmbDegree"),
722770
retrack.ambDegree());
723771
registry.fill(HIST("Tracks/Control/DCAXY"), retrack.bestDCAXY());
772+
if constexpr (std::is_same_v<RetracksT, soa::SmallGroups<aod::BestCollisionsFwd3d>>) {
773+
registry.fill(HIST("Tracks/Control/DCAZ"), retrack.bestDCAZ());
774+
}
724775
int isAmbiguous = 0;
725776

726777
if (retrack.ambDegree() > 1 && retrack.ambDegree() != 0) {
@@ -735,6 +786,10 @@ struct PseudorapidityDensityMFT {
735786
track.eta());
736787
registry.fill(HIST("Tracks/Control/amb/AmbVertexCorr"),
737788
track.collision_as<CollwEv>().posZ(), z);
789+
registry.fill(HIST("Tracks/Control/amb/DCAxy_amb"), retrack.bestDCAXY());
790+
if constexpr (std::is_same_v<RetracksT, soa::SmallGroups<aod::BestCollisionsFwd3d>>) {
791+
registry.fill(HIST("Tracks/Control/amb/DCAz_amb"), retrack.bestDCAZ());
792+
}
738793
registry.fill(HIST("Tracks/Control/TrackCount"), 3);
739794
if (track.collisionId() == retrack.bestCollisionId()) {
740795
registry.fill(HIST("Tracks/Control/TrackCount"), 5);
@@ -755,6 +810,10 @@ struct PseudorapidityDensityMFT {
755810
track.eta());
756811
registry.fill(HIST("Tracks/Control/nonamb/nonAmbVertexCorr"),
757812
track.collision_as<CollwEv>().posZ(), z);
813+
registry.fill(HIST("Tracks/Control/nonamb/DCAxy_nonamb"), retrack.bestDCAXY());
814+
if constexpr (std::is_same_v<RetracksT, soa::SmallGroups<aod::BestCollisionsFwd3d>>) {
815+
registry.fill(HIST("Tracks/Control/nonamb/DCAz_nonamb"), retrack.bestDCAZ());
816+
}
758817
registry.fill(HIST("Tracks/Control/TrackCount"), 4);
759818
if (track.collisionId() == retrack.bestCollisionId()) {
760819
registry.fill(HIST("Tracks/Control/TrackCount"), 6);
@@ -774,6 +833,9 @@ struct PseudorapidityDensityMFT {
774833
registry.fill(HIST("Tracks/Control/woOrp/woOrpVertexCorr"),
775834
track.collision_as<CollwEv>().posZ(), z);
776835
registry.fill(HIST("Tracks/Control/TrackCount"), 9); // without orphan
836+
registry.fill(HIST("Tracks/Control/woOrp/DCAxy_woOrp"), retrack.bestDCAXY());
837+
if constexpr (std::is_same_v<RetracksT, soa::SmallGroups<aod::BestCollisionsFwd3d>>) {
838+
registry.fill(HIST("Tracks/Control/woOrp/DCAz_woOrp"), retrack.bestDCAZ());
777839
}
778840
}
779841
}
@@ -792,8 +854,26 @@ struct PseudorapidityDensityMFT {
792854
registry.fill(HIST("EventSelection"), 7);
793855
}
794856
}
857+
void processMultReassoc(CollwEv::iterator const& collision,
858+
o2::aod::MFTTracks const& mft,
859+
soa::SmallGroups<aod::BestCollisionsFwd> const& retracks,
860+
FiCentralTracks const& midtracks, aod::Tracks const& trk)
861+
{
862+
processMultReassocCommon(collision, mft, retracks, midtracks, trk);
863+
}
864+
865+
void processMultReassoc3d(CollwEv::iterator const& collision,
866+
o2::aod::MFTTracks const& mft,
867+
soa::SmallGroups<aod::BestCollisionsFwd3d> const& retracks,
868+
FiCentralTracks const& midtracks, aod::Tracks const& trk)
869+
{
870+
processMultReassocCommon(collision, mft, retracks, midtracks, trk);
871+
}
795872
PROCESS_SWITCH(PseudorapidityDensityMFT, processMultReassoc,
796-
"Process reco or data info", false);
873+
"Process reco or data info", false);
874+
875+
PROCESS_SWITCH(PseudorapidityDensityMFT, processMultReassoc3d,
876+
"Process reco or data info (3d)", false);
797877

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

0 commit comments

Comments
 (0)