Skip to content

Commit 55905da

Browse files
author
Nima Zardoshti
committed
reemoving global variables from jet finder
1 parent b8a8172 commit 55905da

File tree

3 files changed

+46
-84
lines changed

3 files changed

+46
-84
lines changed

PWGJE/TableProducer/jetfinder.cxx

Lines changed: 15 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,6 @@ struct JetFinderTask {
3535
OutputObj<TH1F> hJetEta{"h_jet_eta"};
3636
OutputObj<TH1F> hJetNTracks{"h_jet_ntracks"};
3737

38-
Service<O2DatabasePDG> pdg;
39-
std::string trackSelection;
40-
4138
// event level configurables
4239
Configurable<float> vertexZCut{"vertexZCut", 10.0f, "Accepted z-vertex range"};
4340

@@ -74,16 +71,15 @@ struct JetFinderTask {
7471
Configurable<bool> DoRhoAreaSub{"DoRhoAreaSub", false, "do rho area subtraction"};
7572
Configurable<bool> DoConstSub{"DoConstSub", false, "do constituent subtraction"};
7673

74+
Service<O2DatabasePDG> pdg;
75+
std::string trackSelection;
76+
77+
JetFinder jetFinder;
78+
std::vector<fastjet::PseudoJet> inputParticles;
79+
7780
void init(InitContext const&)
7881
{
79-
// variables passed to the common header
80-
trackEtaMin_ = static_cast<float>(trackEtaMin);
81-
trackEtaMax_ = static_cast<float>(trackEtaMax);
82-
jetRadius_ = static_cast<std::vector<double>>(jetRadius);
83-
DoConstSub_ = static_cast<bool>(DoConstSub);
84-
8582
trackSelection = static_cast<std::string>(trackSelections);
86-
jetTypeParticleLevelCheck = jetTypeParticleLevel;
8783

8884
h2JetPt.setObject(new TH2F("h2_jet_pt", "jet p_{T};p_{T} (GeV/#it{c})",
8985
100, 0., 100., 10, 0.05, 1.05));
@@ -144,9 +140,8 @@ struct JetFinderTask {
144140

145141
LOG(debug) << "Process data charged!";
146142
inputParticles.clear();
147-
using ArgType = std::decay_t<decltype(tracks)>;
148-
analyseTracks<ArgType, typename ArgType::iterator>(tracks, trackSelection);
149-
findJets(collision, jetsTable, constituentsTable, constituentsSubTable);
143+
analyseTracks<JetTracks, JetTracks::iterator>(inputParticles, tracks, trackSelection);
144+
findJets(jetFinder, inputParticles, jetRadius, collision, jetsTable, constituentsTable, constituentsSubTable,DoConstSub);
150145
}
151146

152147
PROCESS_SWITCH(JetFinderTask, processChargedJets, "Data jet finding for charged jets", false);
@@ -159,8 +154,8 @@ struct JetFinderTask {
159154
}
160155
LOG(debug) << "Process data neutral!";
161156
inputParticles.clear();
162-
analyseClusters(&clusters);
163-
findJets(collision, jetsTable, constituentsTable, constituentsSubTable);
157+
analyseClusters(inputParticles, &clusters);
158+
findJets(jetFinder, inputParticles, jetRadius, collision, jetsTable, constituentsTable, constituentsSubTable,DoConstSub);
164159
}
165160
PROCESS_SWITCH(JetFinderTask, processNeutralJets, "Data jet finding for neutral jets", false);
166161

@@ -173,20 +168,18 @@ struct JetFinderTask {
173168
}
174169
LOG(debug) << "Process data full!";
175170
inputParticles.clear();
176-
using ArgType = std::decay_t<decltype(tracks)>;
177-
analyseTracks<ArgType, typename ArgType::iterator>(tracks, trackSelection);
178-
analyseClusters(&clusters);
179-
findJets(collision, jetsTable, constituentsTable, constituentsSubTable);
171+
analyseTracks<JetTracks, JetTracks::iterator>(inputParticles,tracks, trackSelection);
172+
analyseClusters(inputParticles,&clusters);
173+
findJets(jetFinder, inputParticles, jetRadius, collision, jetsTable, constituentsTable, constituentsSubTable,DoConstSub);
180174
}
181175

182176
PROCESS_SWITCH(JetFinderTask, processFullJets, "Data jet finding for full and neutral jets", false);
183177

184178
void processParticleLevelJets(aod::McCollision const& collision, aod::McParticles const& particles)
185179
{
186180
// TODO: MC event selection?
187-
using ArgType = std::decay_t<decltype(particles)>;
188-
analyseParticles<ArgType, typename ArgType::iterator>(particles, pdg->Instance());
189-
findJets(collision, jetsTable, constituentsTable, constituentsSubTable);
181+
analyseParticles<aod::McParticles, aod::McParticles::iterator>(inputParticles, trackEtaMin, trackEtaMax, jetTypeParticleLevel, particles, pdg->Instance());
182+
findJets(jetFinder, inputParticles, jetRadius, collision, jetsTable, constituentsTable, constituentsSubTable,DoConstSub);
190183
}
191184

192185
PROCESS_SWITCH(JetFinderTask, processParticleLevelJets, "Particle level jet finding", false);

PWGJE/TableProducer/jetfinder.h

Lines changed: 15 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -40,24 +40,6 @@
4040
#include "PWGJE/Core/JetFinder.h"
4141
#include "PWGJE/Core/FastJetUtilities.h"
4242

43-
JetFinder jetFinder;
44-
std::vector<fastjet::PseudoJet> jets;
45-
std::vector<fastjet::PseudoJet> inputParticles;
46-
int jetTypeParticleLevelCheck = -1;
47-
48-
bool doHFJetFinding = false;
49-
int candPDG;
50-
int candDecay;
51-
52-
float trackEtaMin_;
53-
float trackEtaMax_;
54-
std::vector<double> jetRadius_;
55-
float candYMin_;
56-
float candYMax_;
57-
float candPtMin_;
58-
float candPtMax_;
59-
bool DoConstSub_;
60-
6143
using JetTracks = soa::Filtered<soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksDCA, aod::TrackSelection>>;
6244
using JetClusters = o2::soa::Filtered<o2::aod::EMCALClusters>;
6345

@@ -91,7 +73,7 @@ bool selectTrack(T const& track, std::string trackSelection)
9173

9274
// function that adds tracks to the fastjet list, removing daughters of 2Prong candidates
9375
template <typename T, typename U>
94-
void analyseTracks(T const& tracks, std::string trackSelection, std::optional<U> const& candidate = std::nullopt)
76+
void analyseTracks(std::vector<fastjet::PseudoJet> &inputParticles, T const& tracks, std::string trackSelection, std::optional<U> const& candidate = std::nullopt)
9577
{
9678
for (auto& track : tracks) {
9779
if (!selectTrack(track, trackSelection)) {
@@ -124,7 +106,7 @@ void analyseTracks(T const& tracks, std::string trackSelection, std::optional<U>
124106

125107
// function that adds clusters to the fastjet list
126108
template <typename T>
127-
void analyseClusters(T const& clusters)
109+
void analyseClusters(std::vector<fastjet::PseudoJet> &inputParticles, T const& clusters)
128110
{
129111
for (auto& cluster : *clusters) {
130112
// add cluster selections
@@ -134,12 +116,12 @@ void analyseClusters(T const& clusters)
134116

135117
// function that takes any generic candidate, performs selections and adds the candidate to the fastjet list
136118
template <typename T>
137-
bool analyseCandidate(T const& candidate)
119+
bool analyseCandidate(std::vector<fastjet::PseudoJet> &inputParticles, int candPDG, float candPtMin, float candPtMax, float candYMin, float candYMax, T const& candidate)
138120
{
139-
if (candidate.y(RecoDecay::getMassPDG(candPDG)) < candYMin_ || candidate.y(RecoDecay::getMassPDG(candPDG)) > candYMax_) {
121+
if (candidate.y(RecoDecay::getMassPDG(candPDG)) < candYMin || candidate.y(RecoDecay::getMassPDG(candPDG)) > candYMax) {
140122
return false;
141123
}
142-
if (candidate.pt() < candPtMin_ || candidate.pt() >= candPtMax_) {
124+
if (candidate.pt() < candPtMin || candidate.pt() >= candPtMax) {
143125
return false;
144126
}
145127
FastJetUtilities::fillTracks(candidate, inputParticles, candidate.globalIndex(), static_cast<int>(JetConstituentStatus::candidateHF), RecoDecay::getMassPDG(candPDG));
@@ -148,23 +130,23 @@ bool analyseCandidate(T const& candidate)
148130

149131
// function that checks the MC status of a candidate and then calls the function to analyseCandidates
150132
template <typename T>
151-
bool analyseCandidateMC(T const& candidate, bool rejectBackgroundMCCandidates)
133+
bool analyseCandidateMC(std::vector<fastjet::PseudoJet> &inputParticles, int candPDG, int candDecay, float candPtMin, float candPtMax, float candYMin, float candYMax, T const& candidate, bool rejectBackgroundMCCandidates)
152134
{
153135
if (rejectBackgroundMCCandidates && !(std::abs(candidate.flagMcMatchRec()) == 1 << candDecay)) {
154136
return false;
155137
}
156-
return analyseCandidate(candidate);
138+
return analyseCandidate(inputParticles, candPDG, candPtMin, candPtMax, candYMin, candYMax, candidate);
157139
}
158140

159141
// function that calls the jet finding and fills the relevant tables
160142
template <typename T, typename U, typename V, typename W>
161-
void findJets(T const& collision, U& jetsTable, V& constituentsTable, W& constituentsSubTable)
143+
void findJets(JetFinder &jetFinder, std::vector<fastjet::PseudoJet> &inputParticles, std::vector<double> jetRadius, T const& collision, U& jetsTable, V& constituentsTable, W& constituentsSubTable, bool DoConstSub, bool doHFJetFinding = false)
162144
{
163145
// auto candidatepT = 0.0;
164-
auto jetRValues = static_cast<std::vector<double>>(jetRadius_);
146+
auto jetRValues = static_cast<std::vector<double>>(jetRadius);
165147
for (auto R : jetRValues) {
166148
jetFinder.jetR = R;
167-
jets.clear();
149+
std::vector<fastjet::PseudoJet> jets;
168150
fastjet::ClusterSequenceArea clusterSeq(jetFinder.findJets(inputParticles, jets));
169151
for (const auto& jet : jets) {
170152
bool isHFJet = false;
@@ -188,7 +170,7 @@ void findJets(T const& collision, U& jetsTable, V& constituentsTable, W& constit
188170
jet.E(), jet.m(), jet.area(), std::round(R * 100));
189171
for (const auto& constituent : sorted_by_pt(jet.constituents())) {
190172
// need to add seperate thing for constituent subtraction
191-
if (DoConstSub_) { // FIXME: needs to be addressed in Haadi's PR
173+
if (DoConstSub) { // FIXME: needs to be addressed in Haadi's PR
192174
constituentsSubTable(jetsTable.lastIndex(), constituent.pt(), constituent.eta(), constituent.phi(),
193175
constituent.E(), constituent.m(), constituent.user_index());
194176
}
@@ -234,23 +216,23 @@ bool checkDaughters(T const& particle, int globalIndex)
234216
}
235217

236218
template <typename T, typename U>
237-
void analyseParticles(T const& particles, TDatabasePDG* pdg, std::optional<U> const& candidate = std::nullopt)
219+
void analyseParticles(std::vector<fastjet::PseudoJet> &inputParticles, float particleEtaMin, float particleEtaMax, int jetTypeParticleLevel, T const& particles, TDatabasePDG* pdg, std::optional<U> const& candidate = std::nullopt)
238220
{
239221
inputParticles.clear();
240222
for (auto& particle : particles) {
241223
// TODO: can we do this through the filter?
242-
if (particle.eta() < trackEtaMin_ || particle.eta() > trackEtaMax_) {
224+
if (particle.eta() < particleEtaMin || particle.eta() > particleEtaMax) {
243225
continue;
244226
}
245227
if (particle.getGenStatusCode() != 1) { // CHECK : Does this include HF hadrons that decay?
246228
continue;
247229
}
248230
auto pdgParticle = pdg->GetParticle(particle.pdgCode());
249231
auto pdgCharge = pdgParticle ? std::abs(pdgParticle->Charge()) : -1.0;
250-
if (jetTypeParticleLevelCheck == static_cast<int>(JetType::charged) && pdgCharge < 3.0) {
232+
if (jetTypeParticleLevel == static_cast<int>(JetType::charged) && pdgCharge < 3.0) {
251233
continue;
252234
}
253-
if (jetTypeParticleLevelCheck == static_cast<int>(JetType::neutral) && pdgCharge != 0.0) {
235+
if (jetTypeParticleLevel == static_cast<int>(JetType::neutral) && pdgCharge != 0.0) {
254236
continue;
255237
}
256238
if (candidate != std::nullopt) {

PWGJE/TableProducer/jetfinderhf.cxx

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

12-
// jet finder task
12+
// jet finder hf task
1313
//
1414
// Authors: Nima Zardoshti, Jochen Klein
1515

@@ -86,20 +86,15 @@ struct JetFinderHFTask {
8686
Service<O2DatabasePDG> pdg;
8787
std::string trackSelection;
8888

89+
JetFinder jetFinder;
90+
std::vector<fastjet::PseudoJet> inputParticles;
91+
92+
int candPDG;
93+
int candDecay;
94+
8995
void init(InitContext const&)
9096
{
91-
// variables passed to the common header
92-
trackEtaMin_ = static_cast<float>(trackEtaMin);
93-
trackEtaMax_ = static_cast<float>(trackEtaMax);
94-
candPtMin_ = static_cast<float>(candPtMin);
95-
candPtMax_ = static_cast<float>(candPtMax);
96-
candYMin_ = static_cast<float>(candYMin);
97-
candYMax_ = static_cast<float>(candYMax);
98-
jetRadius_ = static_cast<std::vector<double>>(jetRadius);
99-
DoConstSub_ = static_cast<bool>(DoConstSub);
100-
10197
trackSelection = static_cast<std::string>(trackSelections);
102-
jetTypeParticleLevelCheck = jetTypeParticleLevel;
10398

10499
h2JetPt.setObject(new TH2F("h2_jet_pt", "jet p_{T};p_{T} (GeV/#it{c})",
105100
100, 0., 100., 10, 0.05, 1.05));
@@ -160,19 +155,14 @@ struct JetFinderHFTask {
160155
candDecay = static_cast<int>(aod::hf_cand_2prong::DecayType::JpsiToMuMu);
161156
}
162157
}
163-
doHFJetFinding = true;
164158
}
165159

166-
using JetParticles2Prong = soa::Filtered<soa::Join<aod::McParticles, aod::HfCand2ProngMcGen>>;
167-
using JetParticles3Prong = soa::Filtered<soa::Join<aod::McParticles, aod::HfCand3ProngMcGen>>;
168-
using JetParticlesBPlus = soa::Filtered<soa::Join<aod::McParticles, aod::HfCandBplusMcGen>>;
169-
170160
o2::aod::EMCALClusterDefinition clusterDefinition = o2::aod::emcalcluster::getClusterDefinitionFromString(clusterDefinitionS.value);
171161
Filter collisionFilter = (nabs(aod::collision::posZ) < vertexZCut);
172162
Filter trackCuts = (aod::track::pt >= trackPtMin && aod::track::pt < trackPtMax && aod::track::eta > trackEtaMin && aod::track::eta < trackEtaMax && aod::track::phi >= trackPhiMin && aod::track::phi <= trackPhiMax);
173163
Filter partCuts = (aod::mcparticle::pt >= trackPtMin && aod::mcparticle::pt < trackPtMax);
174164
Filter clusterFilter = (o2::aod::emcalcluster::definition == static_cast<int>(clusterDefinition) && aod::emcalcluster::eta > clusterEtaMin && aod::emcalcluster::eta < clusterEtaMax && aod::emcalcluster::phi >= clusterPhiMin && aod::emcalcluster::phi <= clusterPhiMax);
175-
// Filter candidateCuts = (aod::hf_cand::Pt >= candPtMin && aod::hf_cand::Pt < candPtMax); FIXME: why wont this work?
165+
//Filter candidateCuts = (aod::hfcand::pt >= candPtMin && aod::hfcand::pt < candPtMax && aod::hfcand::y >= candYMin && aod::hfcand::y < candYMax);
176166
Filter candidateCutsD0 = (aod::hf_sel_candidate_d0::isSelD0 >= selectionFlagD0 || aod::hf_sel_candidate_d0::isSelD0bar >= selectionFlagD0bar);
177167
Filter candidateCutsLc = (aod::hf_sel_candidate_lc::isSelLcToPKPi >= selectionFlagLcToPKPi || aod::hf_sel_candidate_lc::isSelLcToPiKP >= selectionFlagLcToPiPK);
178168
Filter candidateCutsBPlus = (aod::hf_sel_candidate_bplus::isSelBplusToD0Pi >= selectionFlagBPlus);
@@ -187,11 +177,11 @@ struct JetFinderHFTask {
187177

188178
for (auto& candidate : candidates) {
189179
inputParticles.clear();
190-
if (!analyseCandidate(candidate)) {
180+
if (!analyseCandidate(inputParticles, candPDG, candPtMin, candPtMax, candYMin, candYMax, candidate)) {
191181
continue;
192182
}
193-
analyseTracks(tracks, trackSelection, std::optional{candidate});
194-
findJets(collision, jetsTable, constituentsTable, constituentsSubTable);
183+
analyseTracks(inputParticles, tracks, trackSelection, std::optional{candidate});
184+
findJets(jetFinder, inputParticles, jetRadius, collision, jetsTable, constituentsTable, constituentsSubTable , DoConstSub, true);
195185
}
196186
}
197187

@@ -205,11 +195,11 @@ struct JetFinderHFTask {
205195

206196
for (auto& candidate : candidates) {
207197
inputParticles.clear();
208-
if (!analyseCandidateMC(candidate, rejectBackgroundMCCandidates)) {
198+
if (!analyseCandidateMC(inputParticles, candPDG, candDecay, candPtMin, candPtMax, candYMin, candYMax, candidate, rejectBackgroundMCCandidates)) {
209199
continue;
210200
}
211-
analyseTracks(tracks, trackSelection, std::optional{candidate});
212-
findJets(collision, jetsTable, constituentsTable, constituentsSubTable);
201+
analyseTracks(inputParticles, tracks, trackSelection, std::optional{candidate});
202+
findJets(jetFinder, inputParticles, jetRadius, collision, jetsTable, constituentsTable, constituentsSubTable, DoConstSub, true);
213203
}
214204
}
215205

@@ -230,9 +220,9 @@ struct JetFinderHFTask {
230220
}
231221
}
232222
for (auto& candidate : candidates) {
233-
analyseParticles(particles, pdg->Instance(), std::optional{candidate});
223+
analyseParticles(inputParticles, trackEtaMin, trackEtaMax, jetTypeParticleLevel, particles, pdg->Instance(), std::optional{candidate});
234224
FastJetUtilities::fillTracks(candidate, inputParticles, candidate.globalIndex(), static_cast<int>(JetConstituentStatus::candidateHF), RecoDecay::getMassPDG(candidate.pdgCode()));
235-
findJets(collision, jetsTable, constituentsTable, constituentsSubTable);
225+
findJets(jetFinder, inputParticles, jetRadius, collision, jetsTable, constituentsTable, constituentsSubTable, DoConstSub, true);
236226
}
237227
}
238228

@@ -241,7 +231,6 @@ struct JetFinderHFTask {
241231
template <typename T, typename U>
242232
void analyseMCGen2Prong(T const& collision, U const& particles)
243233
{
244-
jets.clear();
245234
inputParticles.clear();
246235
LOG(debug) << "Per Event MCP";
247236
std::vector<JetParticles2Prong::iterator> candidates;
@@ -252,7 +241,6 @@ struct JetFinderHFTask {
252241
template <typename T, typename U>
253242
void analyseMCGen3Prong(T const& collision, U const& particles)
254243
{
255-
jets.clear();
256244
inputParticles.clear();
257245
LOG(debug) << "Per Event MCP";
258246
std::vector<JetParticles3Prong::iterator> candidates;
@@ -262,7 +250,6 @@ struct JetFinderHFTask {
262250
template <typename T, typename U>
263251
void analyseMCGenBPlus(T const& collision, U const& particles)
264252
{
265-
jets.clear();
266253
inputParticles.clear();
267254
LOG(debug) << "Per Event MCP";
268255
std::vector<JetParticlesBPlus::iterator> candidates;

0 commit comments

Comments
 (0)