Skip to content

Commit aa4fb22

Browse files
[PWGCF] Added ZDC timing cut (#18195)
1 parent bab3448 commit aa4fb22

1 file changed

Lines changed: 85 additions & 28 deletions

File tree

‎PWGCF/Flow/Tasks/flowEventPlane.cxx‎

Lines changed: 85 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -167,12 +167,16 @@ struct SpCalibTableProducer {
167167
Configurable<float> cMaxZVtx{"cMaxZVtx", 10.0, "Max VtxZ cut"};
168168
Configurable<float> cMinCent{"cMinCent", 0., "Minumum Centrality"};
169169
Configurable<float> cMaxCent{"cMaxCent", 100.0, "Maximum Centrality"};
170+
Configurable<int> cCentBins{"cCentBins", 100, "Number of bins in centrality axis"};
170171
Configurable<bool> cSel8Trig{"cSel8Trig", true, "Sel8 (T0A + T0C) Selection Run3"};
171172
Configurable<bool> cPileupReject{"cPileupReject", true, "Pileup rejection"};
172173
Configurable<bool> cZVtxTimeDiff{"cZVtxTimeDiff", true, "z-vtx time diff selection"};
173174
Configurable<bool> cIsGoodITSLayers{"cIsGoodITSLayers", true, "Good ITS Layers All"};
174175
Configurable<float> cMinOccupancy{"cMinOccupancy", 0, "Minimum FT0C Occupancy"};
175176
Configurable<float> cMaxOccupancy{"cMaxOccupancy", 1e6, "Maximum FT0C Occupancy"};
177+
Configurable<bool> capplyTdcCut{"capplyTdcCut", false, "Flag for TDC cut"};
178+
Configurable<float> ctdcZnMin{"ctdcZnMin", -2.5, "Min ZN TDC cut"};
179+
Configurable<float> ctdcZnMax{"ctdcZnMax", 2.5, "Max ZN TDC cut"};
176180

177181
// Histogram Registry.
178182
HistogramRegistry histos{"histos", {}, OutputObjHandlingPolicy::AnalysisObject};
@@ -184,7 +188,7 @@ struct SpCalibTableProducer {
184188
void init(InitContext const&)
185189
{
186190
// Histogram collision
187-
histos.add("hCent", "Centrality", kTH1F, {{100, 0., 100., "FT0C%"}});
191+
histos.add("hCent", "Centrality", kTH1F, {{cCentBins, 0., 100., "FT0C%"}});
188192
histos.add("hVz", "V_{z}", kTH1F, {{100, -10., 10., "V_{z}(cm)"}});
189193
}
190194

@@ -226,6 +230,20 @@ struct SpCalibTableProducer {
226230
return true;
227231
}
228232

233+
template <typename C>
234+
bool selZdcHit(C const& zdc)
235+
{
236+
if (capplyTdcCut) { // a narrow TDC window is set
237+
if ((zdc.timeZNC() <= ctdcZnMin) || (zdc.timeZNC() >= ctdcZnMax)) {
238+
return false;
239+
}
240+
if ((zdc.timeZNA() <= ctdcZnMin) || (zdc.timeZNA() >= ctdcZnMax)) {
241+
return false;
242+
}
243+
}
244+
return true;
245+
}
246+
229247
template <typename B, typename C>
230248
void analyzeCollision(B const& bc, C const& collision)
231249
{
@@ -243,6 +261,10 @@ struct SpCalibTableProducer {
243261
posZ = collision.posZ();
244262

245263
auto zdc = bc.zdc();
264+
if (!selZdcHit(zdc)) {
265+
return;
266+
}
267+
246268
std::vector<float> znaEnergy, zncEnergy;
247269
for (int i = 0; i < kXYAC; ++i) {
248270
znaEnergy.push_back(zdc.energySectorZNA()[i]);
@@ -292,12 +314,18 @@ struct SpectatorPlaneTableProducer {
292314
Configurable<float> cMaxZVtx{"cMaxZVtx", 10.0, "Max VtxZ cut"};
293315
Configurable<float> cMinCent{"cMinCent", 0., "Minumum Centrality"};
294316
Configurable<float> cMaxCent{"cMaxCent", 100.0, "Maximum Centrality"};
317+
Configurable<int> cCentBins{"cCentBins", 100, "Number of bins in centrality axis"};
295318
Configurable<bool> cSel8Trig{"cSel8Trig", true, "Sel8 (T0A + T0C) Selection Run3"};
296319
Configurable<bool> cPileupReject{"cPileupReject", true, "Pileup rejection"};
297320
Configurable<bool> cZVtxTimeDiff{"cZVtxTimeDiff", true, "z-vtx time diff selection"};
298321
Configurable<bool> cIsGoodITSLayers{"cIsGoodITSLayers", true, "Good ITS Layers All"};
299322
Configurable<float> cMinOccupancy{"cMinOccupancy", 0, "Minimum FT0C Occupancy"};
300323
Configurable<float> cMaxOccupancy{"cMaxOccupancy", 1e6, "Maximum FT0C Occupancy"};
324+
Configurable<bool> capplyTdcCut{"capplyTdcCut", false, "Flag for TDC cut"};
325+
Configurable<float> ctdcZnMin{"ctdcZnMin", -2.5, "Min ZN TDC cut"};
326+
Configurable<float> ctdcZnMax{"ctdcZnMax", 2.5, "Max ZN TDC cut"};
327+
328+
ConfigurableAxis axisVarCent{"axisVarCent", {VARIABLE_WIDTH, 0, 5, 10, 15, 20, 25, 30, 35, 40, 50, 60, 70, 80, 100}, "Variable width centrality bins"};
301329

302330
// Coarse binning factor
303331
Configurable<int> cAxisCBF{"cAxisCBF", 10, "Coarse Bin Factor"};
@@ -313,6 +341,7 @@ struct SpectatorPlaneTableProducer {
313341
Configurable<bool> cRecentVxVy{"cRecentVxVy", true, "Vx / Vy recentering"};
314342

315343
// Corrections
344+
316345
Configurable<bool> cLoadCorrection{"cLoadCorrection", true, "Load corrections"};
317346
Configurable<bool> cDoGainCalib{"cDoGainCalib", true, "Gain Calib Flag"};
318347
Configurable<bool> cUseAlphaZDC{"cUseAlphaZDC", true, "Use Alpha ZDC"};
@@ -327,7 +356,6 @@ struct SpectatorPlaneTableProducer {
327356
// Tracks
328357
Configurable<float> cTrackMinPt{"cTrackMinPt", 0.1, "p_{T} minimum"};
329358
Configurable<float> cTrackMaxPt{"cTrackMaxPt", 10.0, "p_{T} maximum"};
330-
Configurable<int> cNEtaBins{"cNEtaBins", 7, "# of eta bins"};
331359
Configurable<float> cTrackEtaCut{"cTrackEtaCut", 0.8, "Pseudorapidity cut"};
332360
Configurable<bool> cTrackGlobal{"cTrackGlobal", true, "Global Track"};
333361
Configurable<float> cTrackDcaXYCut{"cTrackDcaXYCut", 0.1, "DcaXY Cut"};
@@ -389,7 +417,7 @@ struct SpectatorPlaneTableProducer {
389417
// Define axes
390418
const AxisSpec axisZDCEnergy{500, 0, 500, "ZD[AC] Signal"};
391419

392-
const AxisSpec axisCent{100, 0., 100, "FT0C%"};
420+
const AxisSpec axisCent{cCentBins, 0., 100, "FT0C%"};
393421
const AxisSpec axisVx{cAxisVxyBins, cAxisVxMin, cAxisVxMax, "V_{X}(cm)"};
394422
const AxisSpec axisVy{cAxisVxyBins, cAxisVyMin, cAxisVyMax, "V_{Y}(cm)"};
395423
const AxisSpec axisVz{cAxisVzBins, cMinZVtx, cMaxZVtx, "V_{Z}(cm)"};
@@ -468,6 +496,7 @@ struct SpectatorPlaneTableProducer {
468496

469497
// Directed flow QXY vector
470498
histos.add("DF/hQaQc", "X^{A}_{1}X^{C}_{1} + Y^{A}_{1}Y^{C}_{1}", kTProfile, {axisCent});
499+
histos.add("DF/hQaQcVarCent", "X^{A}_{1}X^{C}_{1} + Y^{A}_{1}Y^{C}_{1}", kTProfile, {axisVarCent});
471500
}
472501

473502
// Select collsion
@@ -509,6 +538,20 @@ struct SpectatorPlaneTableProducer {
509538
return true;
510539
}
511540

541+
template <typename C>
542+
bool selZdcHit(C const& zdc)
543+
{
544+
if (capplyTdcCut) { // a narrow TDC window is set
545+
if ((zdc.timeZNC() <= ctdcZnMin) || (zdc.timeZNC() >= ctdcZnMax)) {
546+
return false;
547+
}
548+
if ((zdc.timeZNA() <= ctdcZnMin) || (zdc.timeZNA() >= ctdcZnMax)) {
549+
return false;
550+
}
551+
}
552+
return true;
553+
}
554+
512555
// Load Gain Calibrations and ZDC Q-Vector Recentering Corrections
513556
void loadCorrections()
514557
{
@@ -699,11 +742,18 @@ struct SpectatorPlaneTableProducer {
699742

700743
// Zdc information
701744
auto zdc = bc.zdc();
745+
746+
if (!selZdcHit(zdc)) {
747+
return false;
748+
}
702749
auto znaEnergy = zdc.energySectorZNA();
703750
auto zncEnergy = zdc.energySectorZNC();
704751
auto znaEnergyCommon = zdc.energyCommonZNA();
705752
auto zncEnergyCommon = zdc.energyCommonZNC();
706753

754+
// Change in 3rd tower energy due to spurious peaks
755+
zncEnergy[2] = zncEnergyCommon - zncEnergy[0] - zncEnergy[1] - zncEnergy[3];
756+
707757
// Check energy deposits
708758
if (znaEnergyCommon <= 0 || zncEnergyCommon <= 0 || znaEnergy[0] <= 0 || znaEnergy[1] <= 0 || znaEnergy[2] <= 0 || znaEnergy[3] <= 0 || zncEnergy[0] <= 0 || zncEnergy[1] <= 0 || zncEnergy[2] <= 0 || zncEnergy[3] <= 0) {
709759
return false;
@@ -901,6 +951,7 @@ struct SpectatorPlaneTableProducer {
901951
// Directed flow QXY vector
902952
float qac = (vSP[kXa] * vSP[kXc]) + (vSP[kYa] * vSP[kYc]);
903953
histos.fill(HIST("DF/hQaQc"), cent, qac);
954+
histos.fill(HIST("DF/hQaQcVarCent"), cent, qac);
904955
}
905956

906957
// Fill table
@@ -925,7 +976,9 @@ struct SpectatorPlaneTableProducer {
925976

926977
struct FlowEventPlane {
927978
// Tracks
928-
Configurable<int> cEtaBins{"cEtaBins", 5, "# of eta bins"};
979+
Configurable<int> cEtaBinsCharged{"cEtaBinsCharged", 5, "# of eta bins"};
980+
Configurable<int> cEtaBinsHadrons{"cEtaBinsHadrons", 5, "# of eta bins"};
981+
Configurable<int> cEtaBinsStrange{"cEtaBinsStrange", 5, "# of eta bins"};
929982
Configurable<float> cEtaCut{"cEtaCut", 0.8, "Rapidity cut"};
930983

931984
// Pi,Ka,Pr
@@ -960,6 +1013,8 @@ struct FlowEventPlane {
9601013
Configurable<float> cLambdaMinPt{"cLambdaMinPt", 0.6, "Lambda Min pT"};
9611014
Configurable<float> cLambdaMaxPt{"cLambdaMaxPt", 6.0, "Lambda Max pT"};
9621015

1016+
ConfigurableAxis axisVarCent{"axisVarCent", {VARIABLE_WIDTH, 0, 5, 10, 15, 20, 25, 30, 35, 40, 50, 60, 70, 80, 100}, "Variable width centrality bins"};
1017+
9631018
// Histogram registry: an object to hold your histograms
9641019
HistogramRegistry histos{"histos", {}, OutputObjHandlingPolicy::AnalysisObject};
9651020

@@ -970,13 +1025,15 @@ struct FlowEventPlane {
9701025
void init(InitContext const&)
9711026
{
9721027
// Define axes
973-
const AxisSpec axisCent{100, 0., 100, "FT0C%"};
1028+
// const AxisSpec axisCent{100, 0., 100, "FT0C%"};
9741029

9751030
const AxisSpec axisXYac{600, -6, 6, "Q^{t}Q^{p}"};
9761031
const AxisSpec axisV1{400, -4, 4, "v_{1}"};
9771032

9781033
const AxisSpec axisTrackPt{100, 0., 10., "p_{T} (GeV/#it{c})"};
979-
const AxisSpec axisTrackEta{cEtaBins, -0.8, 0.8, "#eta"};
1034+
const AxisSpec axisTrackEtaCharged{cEtaBinsCharged, -0.8, 0.8, "#etaCharged"};
1035+
const AxisSpec axisTrackEtaHadrons{cEtaBinsHadrons, -0.8, 0.8, "#etaHadrons"};
1036+
const AxisSpec axisTrackEtaStrange{cEtaBinsStrange, -0.8, 0.8, "#etaStrange"};
9801037
const AxisSpec axisTrackDcaXY{60, -0.15, 0.15, "DCA_{XY}"};
9811038
const AxisSpec axisTrackDcaZ{230, -1.15, 1.15, "DCA_{XY}"};
9821039
const AxisSpec axisTrackdEdx{360, 20, 200, "#frac{dE}{dx}"};
@@ -1004,12 +1061,12 @@ struct FlowEventPlane {
10041061
histos.add("TrackQA/hPtDcaXY", "DCA_{XY} vs p_{T}", kTH2F, {axisTrackPt, axisTrackDcaXY});
10051062
histos.add("TrackQA/hPtDcaZ", "DCA_{Z} vs p_{T}", kTH2F, {axisTrackPt, axisTrackDcaZ});
10061063
histos.add("TrackQA/hTrackTPCdEdX", "hTrackTPCdEdX", kTH2F, {axisMomPID, axisdEdx});
1007-
histos.add("DF/hAQu", "u_{x}X^{A}_{1} + u_{y}Y^{A}_{1}", kTProfile2D, {axisCent, axisTrackEta});
1008-
histos.add("DF/hCQu", "u_{x}X^{C}_{1} + u_{y}Y^{C}_{1}", kTProfile2D, {axisCent, axisTrackEta});
1009-
histos.add("DF/hAQuPos", "u_{x}X^{A}_{1} + u_{y}Y^{A}_{1}", kTProfile2D, {axisCent, axisTrackEta});
1010-
histos.add("DF/hCQuPos", "u_{x}X^{C}_{1} + u_{y}Y^{C}_{1}", kTProfile2D, {axisCent, axisTrackEta});
1011-
histos.add("DF/hAQuNeg", "u_{x}X^{A}_{1} + u_{y}Y^{A}_{1}", kTProfile2D, {axisCent, axisTrackEta});
1012-
histos.add("DF/hCQuNeg", "u_{x}X^{C}_{1} + u_{y}Y^{C}_{1}", kTProfile2D, {axisCent, axisTrackEta});
1064+
histos.add("DF/hAQu", "u_{x}X^{A}_{1} + u_{y}Y^{A}_{1}", kTProfile2D, {axisVarCent, axisTrackEtaCharged});
1065+
histos.add("DF/hCQu", "u_{x}X^{C}_{1} + u_{y}Y^{C}_{1}", kTProfile2D, {axisVarCent, axisTrackEtaCharged});
1066+
histos.add("DF/hAQuPos", "u_{x}X^{A}_{1} + u_{y}Y^{A}_{1}", kTProfile2D, {axisVarCent, axisTrackEtaCharged});
1067+
histos.add("DF/hCQuPos", "u_{x}X^{C}_{1} + u_{y}Y^{C}_{1}", kTProfile2D, {axisVarCent, axisTrackEtaCharged});
1068+
histos.add("DF/hAQuNeg", "u_{x}X^{A}_{1} + u_{y}Y^{A}_{1}", kTProfile2D, {axisVarCent, axisTrackEtaCharged});
1069+
histos.add("DF/hCQuNeg", "u_{x}X^{C}_{1} + u_{y}Y^{C}_{1}", kTProfile2D, {axisVarCent, axisTrackEtaCharged});
10131070
}
10141071

10151072
// Identified hadrons
@@ -1018,22 +1075,22 @@ struct FlowEventPlane {
10181075
histos.add("PartId/Pion/hTOFSignal", "#beta_{TOF} vs p_{T}", kTH2F, {axisMomPID, axisTrackTofSignal});
10191076
histos.add("PartId/Pion/hTPCNSigma", "n#sigma_{TPC} vs p_{T}", kTH2F, {axisMomPID, axisTrackNSigma});
10201077
histos.add("PartId/Pion/hTOFNSigma", "n#sigma_{TOF} vs p_{T}", kTH2F, {axisMomPID, axisTrackNSigma});
1021-
histos.add("PartId/Pion/hAQuPos", "PartId/Pion/hAQuPos", kTProfile2D, {axisCent, axisTrackEta});
1022-
histos.add("PartId/Pion/hAQuNeg", "PartId/Pion/hAQuNeg", kTProfile2D, {axisCent, axisTrackEta});
1023-
histos.add("PartId/Pion/hCQuPos", "PartId/Pion/hCQuPos", kTProfile2D, {axisCent, axisTrackEta});
1024-
histos.add("PartId/Pion/hCQuNeg", "PartId/Pion/hCQuNeg", kTProfile2D, {axisCent, axisTrackEta});
1078+
histos.add("PartId/Pion/hAQuPos", "PartId/Pion/hAQuPos", kTProfile2D, {axisVarCent, axisTrackEtaHadrons});
1079+
histos.add("PartId/Pion/hAQuNeg", "PartId/Pion/hAQuNeg", kTProfile2D, {axisVarCent, axisTrackEtaHadrons});
1080+
histos.add("PartId/Pion/hCQuPos", "PartId/Pion/hCQuPos", kTProfile2D, {axisVarCent, axisTrackEtaHadrons});
1081+
histos.add("PartId/Pion/hCQuNeg", "PartId/Pion/hCQuNeg", kTProfile2D, {axisVarCent, axisTrackEtaHadrons});
10251082
histos.addClone("PartId/Pion/", "PartId/Kaon/");
10261083
histos.addClone("PartId/Pion/", "PartId/Proton/");
10271084
}
10281085

10291086
// Resonance
10301087
if (doprocessResoFlow) {
1031-
histos.add("Reso/Phi/hSigCentEtaInvMass", "hUSCentEtaInvMass", kTH3F, {axisCent, axisTrackEta, axisPhiInvMass});
1032-
histos.add("Reso/Phi/hBkgCentEtaInvMass", "hLSCentEtaInvMass", kTH3F, {axisCent, axisTrackEta, axisPhiInvMass});
1033-
histos.add("Reso/Phi/Sig/hQuA", "hPhiQuA", kTProfile3D, {axisCent, axisTrackEta, axisPhiInvMass});
1034-
histos.add("Reso/Phi/Sig/hQuC", "hPhiQuC", kTProfile3D, {axisCent, axisTrackEta, axisPhiInvMass});
1035-
histos.add("Reso/Phi/Bkg/hQuA", "hPhiQuA", kTProfile3D, {axisCent, axisTrackEta, axisPhiInvMass});
1036-
histos.add("Reso/Phi/Bkg/hQuC", "hPhiQuC", kTProfile3D, {axisCent, axisTrackEta, axisPhiInvMass});
1088+
histos.add("Reso/Phi/hBkgCentEtaInvMass", "hLSCentEtaInvMass", kTH3F, {axisVarCent, axisTrackEtaStrange, axisPhiInvMass});
1089+
histos.add("Reso/Phi/hSigCentEtaInvMass", "hUSCentEtaInvMass", kTH3F, {axisVarCent, axisTrackEtaStrange, axisPhiInvMass});
1090+
histos.add("Reso/Phi/Sig/hQuA", "hPhiQuA", kTProfile3D, {axisVarCent, axisTrackEtaStrange, axisPhiInvMass});
1091+
histos.add("Reso/Phi/Sig/hQuC", "hPhiQuC", kTProfile3D, {axisVarCent, axisTrackEtaStrange, axisPhiInvMass});
1092+
histos.add("Reso/Phi/Bkg/hQuA", "hPhiQuA", kTProfile3D, {axisVarCent, axisTrackEtaStrange, axisPhiInvMass});
1093+
histos.add("Reso/Phi/Bkg/hQuC", "hPhiQuC", kTProfile3D, {axisVarCent, axisTrackEtaStrange, axisPhiInvMass});
10371094
}
10381095

10391096
// Lambda
@@ -1053,14 +1110,14 @@ struct FlowEventPlane {
10531110
histos.add("V0/Lambda/QA/hPosNsigPiVsP", "TPC n#sigma Pos Prong", kTH2F, {axisMomPID, axisNsigma});
10541111
histos.add("V0/Lambda/QA/hNegNsigPiVsP", "TPC n#sigma Neg Prong", kTH2F, {axisMomPID, axisNsigma});
10551112
histos.addClone("V0/Lambda/", "V0/K0Short/");
1056-
histos.add("V0/Lambda/hMassVsRap", "hMassVsRap", kTH3F, {axisCent, axisTrackEta, axisLambdaInvMass});
1057-
histos.add("V0/Lambda/Flow/hQuA", "hQuA", kTProfile3D, {axisCent, axisTrackEta, axisLambdaInvMass});
1058-
histos.add("V0/Lambda/Flow/hQuC", "hQuC", kTProfile3D, {axisCent, axisTrackEta, axisLambdaInvMass});
1113+
histos.add("V0/Lambda/hMassVsRap", "hMassVsRap", kTH3F, {axisVarCent, axisTrackEtaStrange, axisLambdaInvMass});
1114+
histos.add("V0/Lambda/Flow/hQuA", "hQuA", kTProfile3D, {axisVarCent, axisTrackEtaStrange, axisLambdaInvMass});
1115+
histos.add("V0/Lambda/Flow/hQuC", "hQuC", kTProfile3D, {axisVarCent, axisTrackEtaStrange, axisLambdaInvMass});
10591116
histos.addClone("V0/Lambda/", "V0/AntiLambda/");
10601117
histos.addClone("V0/Lambda/", "V0/LambdaAntiLambda/");
1061-
histos.add("V0/K0Short/hMassVsRap", "hMassVsRap", kTH3F, {axisCent, axisTrackEta, axisK0ShortInvMass});
1062-
histos.add("V0/K0Short/Flow/hQuA", "hQuA", kTProfile3D, {axisCent, axisTrackEta, axisK0ShortInvMass});
1063-
histos.add("V0/K0Short/Flow/hQuC", "hQuC", kTProfile3D, {axisCent, axisTrackEta, axisK0ShortInvMass});
1118+
histos.add("V0/K0Short/hMassVsRap", "hMassVsRap", kTH3F, {axisVarCent, axisTrackEtaStrange, axisK0ShortInvMass});
1119+
histos.add("V0/K0Short/Flow/hQuA", "hQuA", kTProfile3D, {axisVarCent, axisTrackEtaStrange, axisK0ShortInvMass});
1120+
histos.add("V0/K0Short/Flow/hQuC", "hQuC", kTProfile3D, {axisVarCent, axisTrackEtaStrange, axisK0ShortInvMass});
10641121
}
10651122
}
10661123

0 commit comments

Comments
 (0)