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