Skip to content

Commit d20f12d

Browse files
committed
implemented trueGap, added checks for RCT and reco mode flags
1 parent a2c01bf commit d20f12d

File tree

1 file changed

+49
-5
lines changed

1 file changed

+49
-5
lines changed

PWGUD/Tasks/upcRhoAnalysis.cxx

Lines changed: 49 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
/// \author Jakub Juracka, jakub.juracka@cern.ch
1616
/// \file upcRhoAnalysis.cxx
1717

18+
#include "PWGUD/Core/SGSelector.h"
1819
#include "PWGUD/Core/UPCTauCentralBarrelHelperRL.h"
1920
#include "PWGUD/DataModel/UDTables.h"
2021

@@ -119,13 +120,29 @@ struct UpcRhoAnalysis {
119120
Produces<o2::aod::RecoTree> recoTree;
120121
Produces<o2::aod::McTree> mcTree;
121122

123+
SGSelector sgSelector;
124+
122125
float pcEtaCut = 0.9; // physics coordination recommendation
126+
123127
Configurable<int> numPions{"numPions", 2, "required number of pions in the event"};
128+
129+
Configurable<bool> cutGapSide{"cutGapSide", true, "apply gap side cut"};
124130
Configurable<int> gapSide{"gapSide", 2, "required gap side"};
131+
Congigurable<bool> useTrueGap{"useTrueGap", false, "use true gap"};
132+
Configurable<float> cutTrueGapSideFV0{"cutTrueGapSideFV0", 180000, "FV0A threshold for SG selector"};
133+
Configurable<float> cutTrueGapSideFT0A{"cutTrueGapSideFT0A", 150., "FT0A threshold for SG selector"};
134+
Configurable<float> cutTrueGapSideFT0C{"cutTrueGapSideFT0C", 50., "FT0C threshold for SG selector"};
135+
Configurable<float> cutTrueGapSideZDC{"cutTrueGapSideZDC", 10000., "ZDC threshold for SG selector. 0 is <1n, 4.2 is <2n, 6.7 is <3n, 9.5 is <4n, 12.5 is <5n"};
136+
125137
Configurable<bool> requireTof{"requireTof", false, "require TOF signal"};
126138
Configurable<bool> onlyGoldenRuns{"onlyGoldenRuns", false, "process only golden runs"};
139+
Configurable<bool> useRecoFlag{"useRecoFlag", false, "use reco flag for event selection"};
140+
Configurable<int> cutRecoFlag{"cutRecoFlag", 1, "0 = std mode, 1 = upc mode"};
141+
Configurable<bool> useRctFlag{"useRctFlag", false, "use RCT flags for event selection"};
142+
Configurable<int> cutRctFlag{"cutRCTflag", 0, "0 = off, 1 = CBT, 2 = CBT+ZDC, 3 = CBThadron, 4 = CBThadron+ZDC"};
127143

128144
Configurable<float> collisionsPosZMaxCut{"collisionsPosZMaxCut", 10.0, "max Z position cut on collisions"};
145+
Configurable<bool> cutNumContribs{"cutNumContribs", true, "cut on number of contributors"};
129146
Configurable<int> collisionsNumContribsMaxCut{"collisionsNumContribsMaxCut", 2, "max number of contributors cut on collisions"};
130147
Configurable<float> znCommonEnergyCut{"znCommonEnergyCut", 0.0, "ZN common energy cut"};
131148
Configurable<float> znTimeCut{"znTimeCut", 2.0, "ZN time cut"};
@@ -151,8 +168,8 @@ struct UpcRhoAnalysis {
151168
ConfigurableAxis pt2Axis{"pt2Axis", {1000, 0.0, 0.1}, "#it{p}_{T}^{2} (GeV^{2}/#it{c}^{2})"};
152169
ConfigurableAxis etaAxis{"etaAxis", {300, -1.5, 1.5}, "#it{#eta}"};
153170
ConfigurableAxis yAxis{"yAxis", {400, -4.0, 4.0}, "#it{y}"};
154-
ConfigurableAxis phiAxis{"phiAxis", {180, 0.0, o2::constants::math::TwoPI}, "#it{#phi}"};
155-
ConfigurableAxis deltaPhiAxis{"deltaPhiAxis", {182, -o2::constants::math::PI, o2::constants::math::PI}, "#Delta#it{#phi}"};
171+
ConfigurableAxis phiAxis{"phiAxis", {180, 0.0, o2::constants::math::TwoPI}, "#it{#phi} (rad)"};
172+
ConfigurableAxis deltaPhiAxis{"deltaPhiAxis", {182, -o2::constants::math::PI, o2::constants::math::PI}, "#Delta#it{#phi} (rad)"};
156173
ConfigurableAxis znCommonEnergyAxis{"znCommonEnergyAxis", {250, -5.0, 20.0}, "ZN common energy (TeV)"};
157174
ConfigurableAxis znTimeAxis{"znTimeAxis", {200, -10.0, 10.0}, "ZN time (ns)"};
158175
ConfigurableAxis runNumberAxis{"runNumberAxis", {1355, 544012.5, 545367.5}, "run number"};
@@ -388,15 +405,42 @@ struct UpcRhoAnalysis {
388405
return true;
389406
}
390407

408+
template <typename C>
409+
bool isGoodRctFlag(const C& collision)
410+
{
411+
switch (cutRCTflag) {
412+
case 1:
413+
return sgSelector.isCBTOk(collision);
414+
case 2:
415+
return sgSelector.isCBTZdcOk(collision);
416+
case 3:
417+
return sgSelector.isCBTHadronOk(collision);
418+
case 4:
419+
return sgSelector.isCBTHadronZdcOk(collision);
420+
default:
421+
return true;
422+
}
423+
}
424+
391425
template <typename C>
392426
bool collisionPassesCuts(const C& collision) // collision cuts
393427
{
394-
if (!collision.vtxITSTPC() || !collision.sbp() || !collision.itsROFb() || !collision.tfb()) // not applied automatically in pass5
428+
if (!collision.vtxITSTPC() || !collision.sbp() || !collision.itsROFb() || !collision.tfb()) // not applied automatically in 2023 Pb-Pb pass5
395429
return false;
430+
396431
if (std::abs(collision.posZ()) > collisionsPosZMaxCut)
397432
return false;
398-
if (collision.numContrib() > collisionsNumContribsMaxCut)
433+
if (cutNumContribs && (collision.numContrib() > collisionsNumContribsMaxCut))
434+
return false;
435+
436+
if (useRctFlag && !isGoodRctFlag(collision)) // check RCT flags
437+
return false;
438+
if (useRecoFlag && (collision.flags() != cutRecoFlag)) // check reconstruction mode
439+
return false;
440+
441+
if (useTrueGap && (collision.gapSide() != sgSelector.trueGap(collision, cutTrueGapSideFV0, cutTrueGapSideFT0A, cutTrueGapSideFT0C, cutTrueGapSideZDC))) // check true gap side
399442
return false;
443+
400444
return true;
401445
}
402446

@@ -852,7 +896,7 @@ struct UpcRhoAnalysis {
852896

853897
void processSGdata(FullUdSgCollision const& collision, FullUdTracks const& tracks)
854898
{
855-
if (collision.gapSide() != gapSide)
899+
if (cutGapSide && collision.gapSide() != gapSide)
856900
return;
857901
processReco(collision, tracks);
858902
}

0 commit comments

Comments
 (0)