Skip to content

Commit 4d77591

Browse files
ThorkjThor Jensenalibuild
authored
[PWGCF] Updated CorrSparse with added histograms and a changed dPhi definition (AliceO2Group#8770)
Co-authored-by: Thor Jensen <[email protected]> Co-authored-by: ALICE Action Bot <[email protected]>
1 parent 52ec9a6 commit 4d77591

File tree

2 files changed

+37
-31
lines changed

2 files changed

+37
-31
lines changed

PWGCF/TwoParticleCorrelations/Tasks/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,8 @@ o2physics_add_dpl_workflow(twopartcorr-per-run-extraqc
4848
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::PWGCFCore O2Physics::AnalysisCCDB
4949
COMPONENT_NAME Analysis)
5050

51-
o2physics_add_dpl_workflow(corrsparses
52-
SOURCES CorrSparse.cxx
51+
o2physics_add_dpl_workflow(corr-sparse
52+
SOURCES corrSparse.cxx
5353
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::PWGCFCore
5454
COMPONENT_NAME Analysis)
5555

PWGCF/TwoParticleCorrelations/Tasks/CorrSparse.cxx renamed to PWGCF/TwoParticleCorrelations/Tasks/corrSparse.cxx

Lines changed: 35 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -9,36 +9,36 @@
99
// granted to it by virtue of its status as an Intergovernmental Organization
1010
// or submit itself to any jurisdiction.
1111

12+
/// \file corrSparse.cxx
13+
/// \brief Provides a sparse with usefull two particle correlation info
14+
/// \author Thor Jensen ([email protected])
15+
1216
#include <vector>
1317
#include "Framework/runDataProcessing.h"
1418
#include "Framework/AnalysisTask.h"
1519
#include "Framework/AnalysisDataModel.h"
1620
#include "Framework/ASoAHelpers.h"
1721
#include "Framework/HistogramRegistry.h"
1822
#include "Framework/RunningWorkflowInfo.h"
19-
#include "Common/Core/RecoDecay.h"
2023
#include "CommonConstants/MathConstants.h"
2124
#include "Common/DataModel/EventSelection.h"
2225
#include "Common/DataModel/TrackSelectionTables.h"
2326
#include "Common/DataModel/Centrality.h"
2427
#include "PWGCF/Core/CorrelationContainer.h"
2528
#include "PWGCF/Core/PairCuts.h"
29+
#include "Common/Core/RecoDecay.h"
2630

2731
using namespace o2;
2832
using namespace o2::framework;
2933
using namespace o2::framework::expressions;
3034

3135
struct CorrSparse {
32-
Configurable<float> cfgZVtxCut = {"zvtxcut", 10.0, "Vertex z cut. Default 10 cm"};
33-
Configurable<float> cfgPtCutMin = {"minpt", 0.2, "Minimum accepted track pT. Default 0.2 GeV"};
34-
Configurable<float> cfgPtCutMax = {"maxpt", 5.0, "Maximum accepted track pT. Default 5.0 GeV"};
35-
Configurable<float> cfgEtaCut = {"etacut", 0.8, "Eta cut. Default 0.8"};
36-
Configurable<float> cfgDCAzCut = {"dcacut", 0.3, "DCA z cut. Default 0.3 cm"};
37-
Configurable<float> cfgDCAxyCut = {"dcacutxy", 0.3, "DCA xy cut. Default 0.2 cm"};
38-
Configurable<float> cfgDCAxySigmaCut = {"dcacutxysigma", 1, "DCA xy sigma cut. Default 0.3"};
39-
Configurable<float> cfgCutChi2prTPCcls = {"chi2cut", 2.5, "Chi2 cut. Default 2.5"};
36+
Configurable<float> cfgZVtxCut = {"cfgZVtxCut", 10.0, "Vertex z cut. Default 10 cm"};
37+
Configurable<float> cfgPtCutMin = {"cfgPtCutMin", 0.2, "Minimum accepted track pT. Default 0.2 GeV"};
38+
Configurable<float> cfgPtCutMax = {"cfgPtCutMax", 5.0, "Maximum accepted track pT. Default 5.0 GeV"};
39+
Configurable<float> cfgEtaCut = {"cfgEtaCut", 0.8, "Eta cut. Default 0.8"};
4040
ConfigurableAxis axisVertex{"axisVertex", {7, -7, 7}, "vertex axis for histograms"};
41-
ConfigurableAxis axisDeltaPhi{"axisDeltaPhi", {72, -constants::math::PIHalf, constants::math::PIHalf * 3}, "delta phi axis for histograms"};
41+
ConfigurableAxis axisDeltaPhi{"axisDeltaPhi", {72, -PIHalf, PIHalf * 3}, "delta phi axis for histograms"};
4242
ConfigurableAxis axisDeltaEta{"axisDeltaEta", {40, -2, 2}, "delta eta axis for histograms"};
4343
ConfigurableAxis axisPtTrigger{"axisPtTrigger", {VARIABLE_WIDTH, 0.5, 1.0, 1.5, 2.0, 3.0, 4.0, 6.0, 10.0}, "pt trigger axis for histograms"};
4444
ConfigurableAxis axisPtAssoc{"axisPtAssoc", {VARIABLE_WIDTH, 0.5, 1.0, 1.5, 2.0, 3.0, 4.0, 6.0, 10.0}, "pt associated axis for histograms"};
@@ -51,10 +51,15 @@ struct CorrSparse {
5151
{
5252
LOGF(info, "Starting init");
5353
registry.add("Yield", "pT vs eta vs Nch", {HistType::kTH3F, {{40, 0, 20, "p_{T}"}, {100, -2, 2, "#eta"}, {100, 0, 100, "Nch"}}}); // check to see total number of tracks
54-
registry.add("etaphi_Trigger", "eta vs phi vs Nch", {HistType::kTH3F, {{100, -2, 2, "#eta"}, {200, 0, 2 * M_PI, "#varphi"}, {100, 0, 100, "Nch"}}});
54+
registry.add("etaphi_Trigger", "eta vs phi vs Nch", {HistType::kTH3F, {{100, -2, 2, "#eta"}, {200, 0, TwoPI, "#varphi"}, {100, 0, 100, "Nch"}}});
5555

56+
// Make histograms to check the distributions after cuts
5657
registry.add("deltaEta_deltaPhi_same", "", {HistType::kTH2D, {axisDeltaPhi, axisDeltaEta}}); // check to see the delta eta and delta phi distribution
5758
registry.add("deltaEta_deltaPhi_mixed", "", {HistType::kTH2D, {axisDeltaPhi, axisDeltaEta}});
59+
registry.add("Phi", "Phi", {HistType::kTH1D, {{72, 0, TwoPI, "Phi"}}});
60+
registry.add("Eta", "Eta", {HistType::kTH1D, {{40, -2, 2, "Eta"}}});
61+
registry.add("pT", "pT", {HistType::kTH1D, {axisPtTrigger}});
62+
registry.add("Nch", "N_{ch}", {HistType::kTH1D, {axisMultiplicity}});
5863

5964
registry.add("Sparse_mixed", "", {HistType::kTHnSparseD, {{axisVertex, axisPtTrigger, axisPtAssoc, axisMultiplicity, axisDeltaPhi, axisDeltaEta}}}); // Make the output sparse
6065
registry.add("Sparse_same", "", {HistType::kTHnSparseD, {{axisVertex, axisPtTrigger, axisPtAssoc, axisMultiplicity, axisDeltaPhi, axisDeltaEta}}});
@@ -63,12 +68,17 @@ struct CorrSparse {
6368
registry.add("eventcount", "bin", {HistType::kTH1F, {{maxMixBin + 2, -2.5, -0.5 + maxMixBin, "bin"}}}); // histogram to see how many events are in the same and mixed event
6469
}
6570

71+
// fill multiple histograms
6672
template <typename TCollision, typename TTracks>
67-
void fillYield(TCollision collision, float centrality, TTracks tracks) // function to fill the yield and etaphi histograms. (This is not needed can be removed)
73+
void fillYield(TCollision collision, float centrality, TTracks tracks) // function to fill the yield and etaphi histograms.
6874
{
69-
for (auto& track1 : tracks) {
75+
registry.fill(HIST("Nch"), tracks.size());
76+
for (auto const& track1 : tracks) {
7077
registry.fill(HIST("Yield"), track1.pt(), track1.eta(), track1.size());
71-
registry.fill(HIST("etaphi_Trigger"), track1.size(), track1.phi(), track1.eta());
78+
registry.fill(HIST("etaphi_Trigger"), track1.eta(), track1.phi(), track1.size());
79+
registry.fill(HIST("Phi"), track1.phi());
80+
registry.fill(HIST("Eta"), track1.eta());
81+
registry.fill(HIST("pT"), track1.pt());
7282
}
7383
}
7484

@@ -94,9 +104,8 @@ struct CorrSparse {
94104
continue;
95105
}
96106

97-
float deltaPhi = track1.phi() - track2.phi();
107+
float deltaPhi = RecoDecay::constrainAngle(track1.phi() - track2.phi(), -PIHalf);
98108
float deltaEta = track1.eta() - track2.eta();
99-
RecoDecay::constrainAngle(deltaPhi, -PIHalf);
100109

101110
// fill the right sparse and histograms
102111
if (system == 1) {
@@ -110,21 +119,18 @@ struct CorrSparse {
110119
}
111120
}
112121

113-
// make the filters and cuts. I was told not to include chi2 since its not needed for run 3 data.
122+
// make the filters and cuts.
114123

115124
Filter collisionFilter = nabs(aod::collision::posZ) < cfgZVtxCut;
116125

117-
Filter trackFilter = (nabs(aod::track::eta) < cfgEtaCut) && (aod::track::pt > cfgPtCutMin) && (aod::track::pt < cfgPtCutMax) && ((requireGlobalTrackInFilter()) || (aod::track::isGlobalTrackSDD == (uint8_t) true))
118-
//&& (aod::track::tpcChi2NCl < cfgCutChi2prTPCcls)
119-
&& (nabs(aod::track::dcaZ) > cfgDCAzCut) && (cfgDCAxySigmaCut * (0.0015f + 0.005f / npow(aod::track::pt, 1.1f)) < nabs(aod::track::dcaXY));
120-
//
126+
Filter trackFilter = (nabs(aod::track::eta) < cfgEtaCut) && (aod::track::pt > cfgPtCutMin) && (aod::track::pt < cfgPtCutMax) && ((requireGlobalTrackInFilter()) || (aod::track::isGlobalTrackSDD == (uint8_t) true));
121127

122128
// define the filtered collisions and tracks
123-
using aodCollisions = soa::Filtered<soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Cs>>;
124-
using aodTracks = soa::Filtered<soa::Join<aod::Tracks, aod::TrackSelection, aod::TracksExtra, aod::TracksDCA>>;
125129

126-
// process for the same event
127-
void processSame(aodCollisions::iterator const& collision, aodTracks const& tracks)
130+
using AodCollisions = soa::Filtered<soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Cs>>;
131+
using AodTracks = soa::Filtered<soa::Join<aod::Tracks, aod::TrackSelection, aod::TracksExtra, aod::TracksDCA>>;
132+
133+
void processSame(AodCollisions::iterator const& collision, AodTracks const& tracks)
128134
{
129135
const auto centrality = collision.centFT0C();
130136

@@ -141,15 +147,15 @@ struct CorrSparse {
141147

142148
ColumnBinningPolicy<aod::collision::PosZ, aod::cent::CentFT0C>
143149
bindingOnVtxAndMult{{vtxBinsEdges, multBinsEdges}, true}; // true is for 'ignore overflows' (true by default)
144-
SameKindPair<aodCollisions,
145-
aodTracks,
150+
SameKindPair<AodCollisions,
151+
AodTracks,
146152
ColumnBinningPolicy<aod::collision::PosZ, aod::cent::CentFT0C>>
147153
pair{bindingOnVtxAndMult, 5, -1, &cache}; // indicates that 5 events should be mixed and under/overflow (-1) to be ignored
148154

149155
// the process for filling the mixed events
150-
void processMixed(aodCollisions& collisions, aodTracks const& tracks)
156+
void processMixed(AodCollisions const& collisions, AodTracks const& tracks)
151157
{
152-
for (auto& [collision1, tracks1, collision2, tracks2] : pair) {
158+
for (auto const& [collision1, tracks1, collision2, tracks2] : pair) {
153159

154160
if (fillCollision(collision1, collision1.centFT0C()) == false) {
155161
continue;

0 commit comments

Comments
 (0)