Skip to content

Commit ea2b89e

Browse files
authored
[PWGJE] adding optional phi exclusion zone to jet finders (#17638)
1 parent daf12d1 commit ea2b89e

6 files changed

Lines changed: 57 additions & 8 deletions

File tree

PWGJE/Core/JetFinder.cxx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,11 @@ void JetFinder::setParams()
4848
jetDef.set_jet_algorithm(algorithm);
4949
areaDef = fastjet::AreaDefinition(areaType, ghostAreaSpec);
5050
selJets = fastjet::SelectorPtRange(jetPtMin, jetPtMax) && fastjet::SelectorEtaRange(jetEtaMin, jetEtaMax) && fastjet::SelectorPhiRange(jetPhiMin, jetPhiMax);
51+
52+
if (phiExclusionMin > -998.0) {
53+
// automatically jets around exclusion region
54+
selJets = selJets && (!fastjet::SelectorPhiRange(phiExclusionMin - jetR, phiExclusionMax + jetR));
55+
}
5156
}
5257

5358
/// Performs jet finding

PWGJE/Core/JetFinder.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ class JetFinder
5050

5151
float phiMin = -1. * M_PI;
5252
float phiMax = 2. * M_PI;
53+
float phiExclusionMin = -999.;
54+
float phiExclusionMax = 999.;
5355
float etaMin = -.9;
5456
float etaMax = .9;
5557

PWGJE/JetFinders/jetFinder.h

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
#include <fastjet/PseudoJet.hh>
4141

4242
#include <memory>
43+
#include <stdexcept>
4344
#include <string>
4445
#include <vector>
4546

@@ -71,6 +72,8 @@ struct JetFinderTask {
7172
o2::framework::Configurable<float> trackEtaMax{"trackEtaMax", 0.9, "maximum track eta"};
7273
o2::framework::Configurable<float> trackPhiMin{"trackPhiMin", -999, "minimum track phi"};
7374
o2::framework::Configurable<float> trackPhiMax{"trackPhiMax", 999, "maximum track phi"};
75+
o2::framework::Configurable<float> phiExclusionMin{"phiExclusionMin", -999, "minimum of phi exclusion region which is applied for tracks and for jets (jetR is added to the exclusion region for jets)"};
76+
o2::framework::Configurable<float> phiExclusionMax{"phiExclusionMax", 999, "maximum of phi exclusion region which is applied for tracks and for jets (jetR is added to the exclusion region for jets)"};
7477
o2::framework::Configurable<std::string> trackSelections{"trackSelections", "globalTracks", "set track selections"};
7578
o2::framework::Configurable<std::string> particleSelections{"particleSelections", "PhysicalPrimary", "set particle selections"};
7679

@@ -139,6 +142,15 @@ struct JetFinderTask {
139142
jetFinder.phiMin = -1.0 * M_PI;
140143
jetFinder.phiMax = 2.0 * M_PI;
141144
}
145+
146+
if (phiExclusionMin > -998.0) {
147+
jetFinder.phiExclusionMin = phiExclusionMin;
148+
jetFinder.phiExclusionMax = phiExclusionMax;
149+
if (phiExclusionMin >= phiExclusionMax) {
150+
throw std::runtime_error("Invalid phi exclusion range: require phiExclusionMin < phiExclusionMax when both are set.");
151+
}
152+
}
153+
142154
jetFinder.jetPhiMin = jetPhiMin;
143155
jetFinder.jetPhiMax = jetPhiMax;
144156
if (jetPhiMin < -98.0) {
@@ -184,8 +196,8 @@ struct JetFinderTask {
184196

185197
o2::framework::expressions::Filter collisionFilter = (nabs(o2::aod::jcollision::posZ) < vertexZCut && o2::aod::jcollision::centFT0M >= centralityMin && o2::aod::jcollision::centFT0M < centralityMax && o2::aod::jcollision::trackOccupancyInTimeRange <= trackOccupancyInTimeRangeMax); // should we add a posZ vtx cut here or leave it to analysers?
186198
o2::framework::expressions::Filter mcCollisionFilter = (nabs(o2::aod::jmccollision::posZ) < vertexZCut);
187-
o2::framework::expressions::Filter trackCuts = (o2::aod::jtrack::pt >= trackPtMin && o2::aod::jtrack::pt < trackPtMax && o2::aod::jtrack::eta >= trackEtaMin && o2::aod::jtrack::eta <= trackEtaMax && o2::aod::jtrack::phi >= trackPhiMin && o2::aod::jtrack::phi <= trackPhiMax); // do we need eta cut both here and in globalselection?
188-
o2::framework::expressions::Filter partCuts = (o2::aod::jmcparticle::pt >= trackPtMin && o2::aod::jmcparticle::pt < trackPtMax && o2::aod::jmcparticle::eta >= trackEtaMin && o2::aod::jmcparticle::eta <= trackEtaMax && o2::aod::jmcparticle::phi >= trackPhiMin && o2::aod::jmcparticle::phi <= trackPhiMax);
199+
o2::framework::expressions::Filter trackCuts = (o2::aod::jtrack::pt >= trackPtMin && o2::aod::jtrack::pt < trackPtMax && o2::aod::jtrack::eta >= trackEtaMin && o2::aod::jtrack::eta <= trackEtaMax && o2::aod::jtrack::phi >= trackPhiMin && o2::aod::jtrack::phi <= trackPhiMax && (phiExclusionMin < -998.0 || (o2::aod::jtrack::phi <= phiExclusionMin || o2::aod::jtrack::phi >= phiExclusionMax))); // do we need eta cut both here and in globalselection?
200+
o2::framework::expressions::Filter partCuts = (o2::aod::jmcparticle::pt >= trackPtMin && o2::aod::jmcparticle::pt < trackPtMax && o2::aod::jmcparticle::eta >= trackEtaMin && o2::aod::jmcparticle::eta <= trackEtaMax && o2::aod::jmcparticle::phi >= trackPhiMin && o2::aod::jmcparticle::phi <= trackPhiMax && (phiExclusionMin < -998.0 || (o2::aod::jmcparticle::phi <= phiExclusionMin || o2::aod::jmcparticle::phi >= phiExclusionMax)));
189201
o2::framework::expressions::Filter clusterFilter = (o2::aod::jcluster::eta >= clusterEtaMin && o2::aod::jcluster::eta <= clusterEtaMax && o2::aod::jcluster::phi >= clusterPhiMin && o2::aod::jcluster::phi <= clusterPhiMax && o2::aod::jcluster::energy >= clusterEnergyMin && o2::aod::jcluster::time > clusterTimeMin && o2::aod::jcluster::time < clusterTimeMax && (!clusterRejectExotics || o2::aod::jcluster::isExotic != true));
190202

191203
void processChargedJets(o2::soa::Filtered<o2::aod::JetCollisions>::iterator const& collision,

PWGJE/JetFinders/jetFinderHF.h

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
#include <fastjet/JetDefinition.hh>
4242
#include <fastjet/PseudoJet.hh>
4343

44+
#include <stdexcept>
4445
#include <string>
4546
#include <vector>
4647

@@ -72,6 +73,8 @@ struct JetFinderHFTask {
7273
o2::framework::Configurable<float> trackEtaMax{"trackEtaMax", 0.9, "maximum track eta"};
7374
o2::framework::Configurable<float> trackPhiMin{"trackPhiMin", -999, "minimum track phi"};
7475
o2::framework::Configurable<float> trackPhiMax{"trackPhiMax", 999, "maximum track phi"};
76+
o2::framework::Configurable<float> phiExclusionMin{"phiExclusionMin", -999, "minimum of phi exclusion region which is applied for tracks and for jets (jetR is added to the exclusion region for jets)"};
77+
o2::framework::Configurable<float> phiExclusionMax{"phiExclusionMax", 999, "maximum of phi exclusion region which is applied for tracks and for jets (jetR is added to the exclusion region for jets)"};
7578
o2::framework::Configurable<std::string> trackSelections{"trackSelections", "globalTracks", "set track selections"};
7679
o2::framework::Configurable<std::string> particleSelections{"particleSelections", "PhysicalPrimary", "set particle selections"};
7780

@@ -146,6 +149,13 @@ struct JetFinderHFTask {
146149
jetFinder.phiMin = -1.0 * M_PI;
147150
jetFinder.phiMax = 2.0 * M_PI;
148151
}
152+
if (phiExclusionMin > -998.0) {
153+
jetFinder.phiExclusionMin = phiExclusionMin;
154+
jetFinder.phiExclusionMax = phiExclusionMax;
155+
if (phiExclusionMin >= phiExclusionMax) {
156+
throw std::runtime_error("Invalid phi exclusion range: require phiExclusionMin < phiExclusionMax when both are set.");
157+
}
158+
}
149159
jetFinder.jetPhiMin = jetPhiMin;
150160
jetFinder.jetPhiMax = jetPhiMax;
151161
if (jetPhiMin < -98.0) {
@@ -186,8 +196,8 @@ struct JetFinderHFTask {
186196

187197
o2::framework::expressions::Filter collisionFilter = (nabs(o2::aod::jcollision::posZ) < vertexZCut && o2::aod::jcollision::centFT0M >= centralityMin && o2::aod::jcollision::centFT0M < centralityMax && o2::aod::jcollision::trackOccupancyInTimeRange <= trackOccupancyInTimeRangeMax);
188198
o2::framework::expressions::Filter mcCollisionFilter = (nabs(o2::aod::jmccollision::posZ) < vertexZCut);
189-
o2::framework::expressions::Filter trackCuts = (o2::aod::jtrack::pt >= trackPtMin && o2::aod::jtrack::pt < trackPtMax && o2::aod::jtrack::eta >= trackEtaMin && o2::aod::jtrack::eta <= trackEtaMax && o2::aod::jtrack::phi >= trackPhiMin && o2::aod::jtrack::phi <= trackPhiMax);
190-
o2::framework::expressions::Filter partCuts = (o2::aod::jmcparticle::pt >= trackPtMin && o2::aod::jmcparticle::pt < trackPtMax && o2::aod::jmcparticle::eta >= trackEtaMin && o2::aod::jmcparticle::eta <= trackEtaMax && o2::aod::jmcparticle::phi >= trackPhiMin && o2::aod::jmcparticle::phi <= trackPhiMax);
199+
o2::framework::expressions::Filter trackCuts = (o2::aod::jtrack::pt >= trackPtMin && o2::aod::jtrack::pt < trackPtMax && o2::aod::jtrack::eta >= trackEtaMin && o2::aod::jtrack::eta <= trackEtaMax && o2::aod::jtrack::phi >= trackPhiMin && o2::aod::jtrack::phi <= trackPhiMax && (phiExclusionMin < -998.0 || (o2::aod::jtrack::phi <= phiExclusionMin || o2::aod::jtrack::phi >= phiExclusionMax)));
200+
o2::framework::expressions::Filter partCuts = (o2::aod::jmcparticle::pt >= trackPtMin && o2::aod::jmcparticle::pt < trackPtMax && o2::aod::jmcparticle::eta >= trackEtaMin && o2::aod::jmcparticle::eta <= trackEtaMax && o2::aod::jmcparticle::phi >= trackPhiMin && o2::aod::jmcparticle::phi <= trackPhiMax && (phiExclusionMin < -998.0 || (o2::aod::jmcparticle::phi <= phiExclusionMin || o2::aod::jmcparticle::phi >= phiExclusionMax)));
191201
o2::framework::expressions::Filter clusterFilter = (o2::aod::jcluster::definition == static_cast<int>(clusterDefinition) && o2::aod::jcluster::eta >= clusterEtaMin && o2::aod::jcluster::eta <= clusterEtaMax && o2::aod::jcluster::phi >= clusterPhiMin && o2::aod::jcluster::phi <= clusterPhiMax && o2::aod::jcluster::energy >= clusterEnergyMin && o2::aod::jcluster::time > clusterTimeMin && o2::aod::jcluster::time < clusterTimeMax && (!clusterRejectExotics || o2::aod::jcluster::isExotic != true));
192202
// o2::framework::expressions::Filter candidateCuts = (o2::aod::hfcand::pt >= candPtMin && o2::aod::hfcand::pt < candPtMax && o2::aod::hfcand::y >= candYMin && o2::aod::hfcand::y < candYMax);
193203

PWGJE/JetFinders/jetFinderHFHFBar.h

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
#include <fastjet/JetDefinition.hh>
4242
#include <fastjet/PseudoJet.hh>
4343

44+
#include <stdexcept>
4445
#include <string>
4546
#include <vector>
4647

@@ -72,6 +73,8 @@ struct JetFinderHFHFBarTask {
7273
o2::framework::Configurable<float> trackEtaMax{"trackEtaMax", 0.9, "maximum track eta"};
7374
o2::framework::Configurable<float> trackPhiMin{"trackPhiMin", -999, "minimum track phi"};
7475
o2::framework::Configurable<float> trackPhiMax{"trackPhiMax", 999, "maximum track phi"};
76+
o2::framework::Configurable<float> phiExclusionMin{"phiExclusionMin", -999, "minimum of phi exclusion region which is applied for tracks and for jets (jetR is added to the exclusion region for jets)"};
77+
o2::framework::Configurable<float> phiExclusionMax{"phiExclusionMax", 999, "maximum of phi exclusion region which is applied for tracks and for jets (jetR is added to the exclusion region for jets)"};
7578
o2::framework::Configurable<std::string> trackSelections{"trackSelections", "globalTracks", "set track selections"};
7679
o2::framework::Configurable<std::string> particleSelections{"particleSelections", "PhysicalPrimary", "set particle selections"};
7780

@@ -143,6 +146,13 @@ struct JetFinderHFHFBarTask {
143146
jetFinder.phiMin = -1.0 * M_PI;
144147
jetFinder.phiMax = 2.0 * M_PI;
145148
}
149+
if (phiExclusionMin > -998.0) {
150+
jetFinder.phiExclusionMin = phiExclusionMin;
151+
jetFinder.phiExclusionMax = phiExclusionMax;
152+
if (phiExclusionMin >= phiExclusionMax) {
153+
throw std::runtime_error("Invalid phi exclusion range: require phiExclusionMin < phiExclusionMax when both are set.");
154+
}
155+
}
146156
jetFinder.jetPhiMin = jetPhiMin;
147157
jetFinder.jetPhiMax = jetPhiMax;
148158
if (jetPhiMin < -98.0) {
@@ -184,8 +194,8 @@ struct JetFinderHFHFBarTask {
184194
o2::aod::EMCALClusterDefinition clusterDefinition = o2::aod::emcalcluster::getClusterDefinitionFromString(clusterDefinitionS.value);
185195
o2::framework::expressions::Filter collisionFilter = (nabs(o2::aod::jcollision::posZ) < vertexZCut && o2::aod::jcollision::centFT0M >= centralityMin && o2::aod::jcollision::centFT0M < centralityMax && o2::aod::jcollision::trackOccupancyInTimeRange <= trackOccupancyInTimeRangeMax);
186196
o2::framework::expressions::Filter mcCollisionFilter = (nabs(o2::aod::jmccollision::posZ) < vertexZCut);
187-
o2::framework::expressions::Filter trackCuts = (o2::aod::jtrack::pt >= trackPtMin && o2::aod::jtrack::pt < trackPtMax && o2::aod::jtrack::eta >= trackEtaMin && o2::aod::jtrack::eta <= trackEtaMax && o2::aod::jtrack::phi >= trackPhiMin && o2::aod::jtrack::phi <= trackPhiMax);
188-
o2::framework::expressions::Filter partCuts = (o2::aod::jmcparticle::pt >= trackPtMin && o2::aod::jmcparticle::pt < trackPtMax && o2::aod::jmcparticle::eta >= trackEtaMin && o2::aod::jmcparticle::eta <= trackEtaMax && o2::aod::jmcparticle::phi >= trackPhiMin && o2::aod::jmcparticle::phi <= trackPhiMax);
197+
o2::framework::expressions::Filter trackCuts = (o2::aod::jtrack::pt >= trackPtMin && o2::aod::jtrack::pt < trackPtMax && o2::aod::jtrack::eta >= trackEtaMin && o2::aod::jtrack::eta <= trackEtaMax && o2::aod::jtrack::phi >= trackPhiMin && o2::aod::jtrack::phi <= trackPhiMax && (phiExclusionMin < -998.0 || (o2::aod::jtrack::phi <= phiExclusionMin || o2::aod::jtrack::phi >= phiExclusionMax)));
198+
o2::framework::expressions::Filter partCuts = (o2::aod::jmcparticle::pt >= trackPtMin && o2::aod::jmcparticle::pt < trackPtMax && o2::aod::jmcparticle::eta >= trackEtaMin && o2::aod::jmcparticle::eta <= trackEtaMax && o2::aod::jmcparticle::phi >= trackPhiMin && o2::aod::jmcparticle::phi <= trackPhiMax && (phiExclusionMin < -998.0 || (o2::aod::jmcparticle::phi <= phiExclusionMin || o2::aod::jmcparticle::phi >= phiExclusionMax)));
189199
o2::framework::expressions::Filter clusterFilter = (o2::aod::jcluster::definition == static_cast<int>(clusterDefinition) && o2::aod::jcluster::eta >= clusterEtaMin && o2::aod::jcluster::eta <= clusterEtaMax && o2::aod::jcluster::phi >= clusterPhiMin && o2::aod::jcluster::phi <= clusterPhiMax && o2::aod::jcluster::energy >= clusterEnergyMin && o2::aod::jcluster::time > clusterTimeMin && o2::aod::jcluster::time < clusterTimeMax && (clusterRejectExotics && o2::aod::jcluster::isExotic != true));
190200
// o2::framework::expressions::Filter candidateCuts = (o2::aod::hfcand::pt >= candPtMin && o2::aod::hfcand::pt < candPtMax && o2::aod::hfcand::y >= candYMin && o2::aod::hfcand::y < candYMax);
191201

PWGJE/JetFinders/jetFinderV0.h

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
#include <fastjet/JetDefinition.hh>
3838
#include <fastjet/PseudoJet.hh>
3939

40+
#include <stdexcept>
4041
#include <string>
4142
#include <vector>
4243

@@ -67,6 +68,8 @@ struct JetFinderV0Task {
6768
o2::framework::Configurable<float> trackEtaMax{"trackEtaMax", 0.9, "maximum track eta"};
6869
o2::framework::Configurable<float> trackPhiMin{"trackPhiMin", -999, "minimum track phi"};
6970
o2::framework::Configurable<float> trackPhiMax{"trackPhiMax", 999, "maximum track phi"};
71+
o2::framework::Configurable<float> phiExclusionMin{"phiExclusionMin", -999, "minimum of phi exclusion region which is applied for tracks and for jets (jetR is added to the exclusion region for jets)"};
72+
o2::framework::Configurable<float> phiExclusionMax{"phiExclusionMax", 999, "maximum of phi exclusion region which is applied for tracks and for jets (jetR is added to the exclusion region for jets)"};
7073
o2::framework::Configurable<std::string> trackSelections{"trackSelections", "globalTracks", "set track selections"};
7174
o2::framework::Configurable<std::string> particleSelections{"particleSelections", "PhysicalPrimary", "set particle selections"};
7275

@@ -127,6 +130,13 @@ struct JetFinderV0Task {
127130
jetFinder.phiMin = -1.0 * M_PI;
128131
jetFinder.phiMax = 2.0 * M_PI;
129132
}
133+
if (phiExclusionMin > -998.0) {
134+
jetFinder.phiExclusionMin = phiExclusionMin;
135+
jetFinder.phiExclusionMax = phiExclusionMax;
136+
if (phiExclusionMin >= phiExclusionMax) {
137+
throw std::runtime_error("Invalid phi exclusion range: require phiExclusionMin < phiExclusionMax when both are set.");
138+
}
139+
}
130140
jetFinder.jetPhiMin = jetPhiMin;
131141
jetFinder.jetPhiMax = jetPhiMax;
132142
if (jetPhiMin < -98.0) {
@@ -174,8 +184,8 @@ struct JetFinderV0Task {
174184

175185
o2::framework::expressions::Filter collisionFilter = (nabs(o2::aod::jcollision::posZ) < vertexZCut && o2::aod::jcollision::centFT0M >= centralityMin && o2::aod::jcollision::centFT0M < centralityMax && o2::aod::jcollision::trackOccupancyInTimeRange <= trackOccupancyInTimeRangeMax);
176186
o2::framework::expressions::Filter mcCollisionFilter = (nabs(o2::aod::jmccollision::posZ) < vertexZCut);
177-
o2::framework::expressions::Filter trackCuts = (o2::aod::jtrack::pt >= trackPtMin && o2::aod::jtrack::pt < trackPtMax && o2::aod::jtrack::eta >= trackEtaMin && o2::aod::jtrack::eta <= trackEtaMax && o2::aod::jtrack::phi >= trackPhiMin && o2::aod::jtrack::phi <= trackPhiMax);
178-
o2::framework::expressions::Filter partCuts = (o2::aod::jmcparticle::pt >= trackPtMin && o2::aod::jmcparticle::pt < trackPtMax && o2::aod::jmcparticle::eta >= trackEtaMin && o2::aod::jmcparticle::eta <= trackEtaMax && o2::aod::jmcparticle::phi >= trackPhiMin && o2::aod::jmcparticle::phi <= trackPhiMax);
187+
o2::framework::expressions::Filter trackCuts = (o2::aod::jtrack::pt >= trackPtMin && o2::aod::jtrack::pt < trackPtMax && o2::aod::jtrack::eta >= trackEtaMin && o2::aod::jtrack::eta <= trackEtaMax && o2::aod::jtrack::phi >= trackPhiMin && o2::aod::jtrack::phi <= trackPhiMax && (phiExclusionMin < -998.0 || (o2::aod::jtrack::phi <= phiExclusionMin || o2::aod::jtrack::phi >= phiExclusionMax)));
188+
o2::framework::expressions::Filter partCuts = (o2::aod::jmcparticle::pt >= trackPtMin && o2::aod::jmcparticle::pt < trackPtMax && o2::aod::jmcparticle::eta >= trackEtaMin && o2::aod::jmcparticle::eta <= trackEtaMax && o2::aod::jmcparticle::phi >= trackPhiMin && o2::aod::jmcparticle::phi <= trackPhiMax && (phiExclusionMin < -998.0 || (o2::aod::jmcparticle::phi <= phiExclusionMin || o2::aod::jmcparticle::phi >= phiExclusionMax)));
179189

180190
// function that generalically processes Data and reco level events
181191
template <typename T, typename U, typename V, typename M, typename N>

0 commit comments

Comments
 (0)