Skip to content

Commit 5baf289

Browse files
committed
[PWGJE] adding optional phi exclusion zone to jet finders
1 parent 4a88bfd commit 5baf289

6 files changed

Lines changed: 63 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 < 999.0 && phiExclusionMax > -999.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+
if (phiExclusionMin != 999.0 && phiExclusionMax != 999.0 && phiExclusionMin >= phiExclusionMax) {
146+
throw std::runtime_error("Invalid phi exclusion range: require phiExclusionMin < phiExclusionMax when both are set.");
147+
}
148+
if (phiExclusionMin < 999.0) {
149+
jetFinder.phiExclusionMin = phiExclusionMin;
150+
}
151+
if (phiExclusionMax > -999.0) {
152+
jetFinder.phiExclusionMax = phiExclusionMax;
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 && (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 && (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: 14 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,15 @@ struct JetFinderHFTask {
146149
jetFinder.phiMin = -1.0 * M_PI;
147150
jetFinder.phiMax = 2.0 * M_PI;
148151
}
152+
if (phiExclusionMin != 999.0 && phiExclusionMax != 999.0 && phiExclusionMin >= phiExclusionMax) {
153+
throw std::runtime_error("Invalid phi exclusion range: require phiExclusionMin < phiExclusionMax when both are set.");
154+
}
155+
if (phiExclusionMin < 999.0) {
156+
jetFinder.phiExclusionMin = phiExclusionMin;
157+
}
158+
if (phiExclusionMax > -999.0) {
159+
jetFinder.phiExclusionMax = phiExclusionMax;
160+
}
149161
jetFinder.jetPhiMin = jetPhiMin;
150162
jetFinder.jetPhiMax = jetPhiMax;
151163
if (jetPhiMin < -98.0) {
@@ -186,8 +198,8 @@ struct JetFinderHFTask {
186198

187199
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);
188200
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);
201+
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 && (o2::aod::jtrack::phi <= phiExclusionMin || o2::aod::jtrack::phi >= phiExclusionMax));
202+
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 && (o2::aod::jmcparticle::phi <= phiExclusionMin || o2::aod::jmcparticle::phi >= phiExclusionMax));
191203
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));
192204
// 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);
193205

PWGJE/JetFinders/jetFinderHFHFBar.h

Lines changed: 14 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,15 @@ struct JetFinderHFHFBarTask {
143146
jetFinder.phiMin = -1.0 * M_PI;
144147
jetFinder.phiMax = 2.0 * M_PI;
145148
}
149+
if (phiExclusionMin != 999.0 && phiExclusionMax != 999.0 && phiExclusionMin >= phiExclusionMax) {
150+
throw std::runtime_error("Invalid phi exclusion range: require phiExclusionMin < phiExclusionMax when both are set.");
151+
}
152+
if (phiExclusionMin < 999.0) {
153+
jetFinder.phiExclusionMin = phiExclusionMin;
154+
}
155+
if (phiExclusionMax > -999.0) {
156+
jetFinder.phiExclusionMax = phiExclusionMax;
157+
}
146158
jetFinder.jetPhiMin = jetPhiMin;
147159
jetFinder.jetPhiMax = jetPhiMax;
148160
if (jetPhiMin < -98.0) {
@@ -184,8 +196,8 @@ struct JetFinderHFHFBarTask {
184196
o2::aod::EMCALClusterDefinition clusterDefinition = o2::aod::emcalcluster::getClusterDefinitionFromString(clusterDefinitionS.value);
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);
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);
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 && (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 && (o2::aod::jmcparticle::phi <= phiExclusionMin || o2::aod::jmcparticle::phi >= phiExclusionMax));
189201
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));
190202
// 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);
191203

PWGJE/JetFinders/jetFinderV0.h

Lines changed: 14 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,15 @@ struct JetFinderV0Task {
127130
jetFinder.phiMin = -1.0 * M_PI;
128131
jetFinder.phiMax = 2.0 * M_PI;
129132
}
133+
if (phiExclusionMin != 999.0 && phiExclusionMax != 999.0 && phiExclusionMin >= phiExclusionMax) {
134+
throw std::runtime_error("Invalid phi exclusion range: require phiExclusionMin < phiExclusionMax when both are set.");
135+
}
136+
if (phiExclusionMin < 999.0) {
137+
jetFinder.phiExclusionMin = phiExclusionMin;
138+
}
139+
if (phiExclusionMax > -999.0) {
140+
jetFinder.phiExclusionMax = phiExclusionMax;
141+
}
130142
jetFinder.jetPhiMin = jetPhiMin;
131143
jetFinder.jetPhiMax = jetPhiMax;
132144
if (jetPhiMin < -98.0) {
@@ -174,8 +186,8 @@ struct JetFinderV0Task {
174186

175187
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);
176188
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);
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 && (o2::aod::jtrack::phi <= phiExclusionMin || o2::aod::jtrack::phi >= phiExclusionMax));
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 && (o2::aod::jmcparticle::phi <= phiExclusionMin || o2::aod::jmcparticle::phi >= phiExclusionMax));
179191

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

0 commit comments

Comments
 (0)