Skip to content

Commit 9ca261c

Browse files
Change to a more efficient way of selecting particle tracks
1 parent a5a5073 commit 9ca261c

1 file changed

Lines changed: 54 additions & 49 deletions

File tree

PWGJE/Tasks/jetShape.cxx

Lines changed: 54 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -13,26 +13,27 @@
1313
/// \author Yuto Nishida <yuto.nishida@cern.ch>
1414
/// \brief Task for measuring the dependence of the jet shape function rho(r) on the distance r from the jet axis.
1515

16-
#include "PWGJE/Core/FastJetUtilities.h"
17-
#include "PWGJE/Core/JetDerivedDataUtilities.h"
18-
#include "PWGJE/Core/JetUtilities.h"
19-
#include "PWGJE/DataModel/Jet.h"
16+
#include <string>
17+
#include <vector>
18+
#include <cmath>
19+
20+
#include "Framework/ASoA.h"
21+
#include "Framework/AnalysisDataModel.h"
22+
#include "Framework/AnalysisTask.h"
23+
#include "Framework/HistogramRegistry.h"
2024

2125
#include "Common/Core/RecoDecay.h"
2226
#include "Common/Core/TrackSelection.h"
2327
#include "Common/Core/TrackSelectionDefaults.h"
2428
#include "Common/DataModel/EventSelection.h"
2529
#include "Common/DataModel/TrackSelectionTables.h"
2630

27-
#include "Framework/ASoA.h"
28-
#include "Framework/AnalysisDataModel.h"
29-
#include "Framework/AnalysisTask.h"
30-
#include "Framework/HistogramRegistry.h"
31-
#include "Framework/runDataProcessing.h"
31+
#include "PWGJE/Core/FastJetUtilities.h"
32+
#include "PWGJE/Core/JetUtilities.h"
33+
#include "PWGJE/Core/JetDerivedDataUtilities.h"
34+
#include "PWGJE/DataModel/Jet.h"
3235

33-
#include <cmath>
34-
#include <string>
35-
#include <vector>
36+
#include "Framework/runDataProcessing.h"
3637

3738
using namespace o2;
3839
using namespace o2::framework;
@@ -58,7 +59,7 @@ struct JetShapeTask {
5859
Configurable<float> tpcNSigmaPiMax{"tpcNSigmaPiMax", 3.5f, "Max value of tpcNsigmaPion"};
5960

6061
HistogramRegistry registry{"registry",
61-
{{"tpcTofPi", "tpcTofPi", {HistType::kTHnSparseD, {{35, 0, pMax}, {nBinsNSigma, nSigmaMin, nSigmaMax}, {nBinsDistance, 0, distanceMax}}}},
62+
{{"tpcTofPi", "tpcTofPi", {HistType::kTHnSparseD, {{35, 0, pMax}, {nBinsNSigma, nSigmaMin, nSigmaMax},{nBinsDistance, 0, distanceMax}}}},
6263
{"tpcTofPr", "tpcTofPr", {HistType::kTHnSparseD, {{35, 0, pMax}, {nBinsNSigma, nSigmaMin, nSigmaMax}, {nBinsDistance, 0, distanceMax}}}},
6364
{"tpcTofPiOutOfJet", "tpcTofPiOutOfJet", {HistType::kTH2F, {{35, 0, pMax}, {nBinsNSigma, nSigmaMin, nSigmaMax}}}},
6465
{"tpcTofPrOutOfJet", "tpcTofPrOutOfJet", {HistType::kTH2F, {{35, 0, pMax}, {nBinsNSigma, nSigmaMin, nSigmaMax}}}},
@@ -78,7 +79,7 @@ struct JetShapeTask {
7879
{"trackEta", "trackEta", {HistType::kTH1F, {{100, -1, 1}}}},
7980
{"trackTpcNClsCrossedRows", "trackTpcNClsCrossedRows", {HistType::kTH1F, {{50, 0, 200}}}},
8081
{"trackDcaXY", "trackDcaXY", {HistType::kTH1F, {{40, -10, 10}}}},
81-
{"trackItsChi2NCl", "trackItsChi2NCl", {HistType::kTH1F, {{60, 0, 30}}}},
82+
{"trackItsChi2NCl", "trackItsChi2NCl", {HistType::kTH1F, { {60, 0, 30}}}},
8283
{"trackTpcChi2NCl", "trackTpcChi2NCl", {HistType::kTH1F, {{100, 0, 50}}}},
8384
{"trackTpcNClsFound", "trackTpcNClsFound", {HistType::kTH1F, {{100, 0, 200}}}},
8485
{"trackItsNCls", "trackItsNCls", {HistType::kTH1F, {{10, 0, 10}}}},
@@ -183,6 +184,7 @@ struct JetShapeTask {
183184
void processJetShape(soa::Filtered<soa::Join<aod::JetCollisions, aod::BkgChargedRhos>>::iterator const& collision, aod::JetTracks const& tracks, soa::Join<aod::ChargedJets, aod::ChargedJetConstituents> const& jets)
184185
{
185186

187+
186188
std::vector<float> ptDensity(distanceCategory->size() - 1, 0.f);
187189
std::vector<float> ptDensityBg1(distanceCategory->size() - 1, 0.f);
188190
std::vector<float> ptDensityBg2(distanceCategory->size() - 1, 0.f);
@@ -268,37 +270,39 @@ struct JetShapeTask {
268270

269271
registry.fill(HIST("event/vertexz"), collision.posZ());
270272

273+
std::vector<typename std::decay_t<decltype(tracks)>::iterator> goodTracks;
274+
for (auto it = tracks.begin(); it != tracks.end() ; ++it){
275+
const auto& track = *it;
276+
277+
registry.fill(HIST("trackTpcNClsCrossedRows"), track.tpcNClsCrossedRows());
278+
registry.fill(HIST("trackDcaXY"), track.dcaXY());
279+
registry.fill(HIST("trackItsChi2NCl"), track.itsChi2NCl());
280+
registry.fill(HIST("trackTpcChi2NCl"), track.tpcChi2NCl());
281+
registry.fill(HIST("trackTpcNClsFound"), track.tpcNClsFound());
282+
registry.fill(HIST("trackItsNCls"), track.itsNCls());
283+
registry.fill(HIST("trackEta"),track.eta());
284+
registry.fill(HIST("trackPhi"),track.phi());
285+
286+
if (std::abs(track.eta()) > etaTrUp) continue;
287+
if (track.tpcNClsCrossedRows() < nclcrossTpcMin) continue;
288+
if (std::abs(track.dcaXY()) > dcaxyMax) continue;
289+
if (track.itsChi2NCl() > chi2ItsMax) continue;
290+
if (track.tpcChi2NCl() > chi2TpcMax) continue;
291+
if (track.tpcNClsFound() < nclTpcMin) continue;
292+
if (track.itsNCls() < nclItsMin) continue;
293+
294+
goodTracks.push_back(it);
295+
}
296+
271297
for (auto const& jet : jets) {
272298
if (!isAcceptedJet<aod::JetTracks>(jet)) {
273299
continue;
274300
}
275301

276302
// tracks conditions
277-
for (const auto& track : tracks) {
278-
279-
registry.fill(HIST("trackTpcNClsCrossedRows"), track.tpcNClsCrossedRows());
280-
registry.fill(HIST("trackDcaXY"), track.dcaXY());
281-
registry.fill(HIST("trackItsChi2NCl"), track.itsChi2NCl());
282-
registry.fill(HIST("trackTpcChi2NCl"), track.tpcChi2NCl());
283-
registry.fill(HIST("trackTpcNClsFound"), track.tpcNClsFound());
284-
registry.fill(HIST("trackItsNCls"), track.itsNCls());
285-
registry.fill(HIST("trackEta"), track.eta());
286-
registry.fill(HIST("trackPhi"), track.phi());
287-
288-
if (std::abs(track.eta()) > etaTrUp)
289-
continue;
290-
if (track.tpcNClsCrossedRows() < nclcrossTpcMin)
291-
continue;
292-
if (std::abs(track.dcaXY()) > dcaxyMax)
293-
continue;
294-
if (track.itsChi2NCl() > chi2ItsMax)
295-
continue;
296-
if (track.tpcChi2NCl() > chi2TpcMax)
297-
continue;
298-
if (track.tpcNClsFound() < nclTpcMin)
299-
continue;
300-
if (track.itsNCls() < nclItsMin)
301-
continue;
303+
for (const auto& track_it : goodTracks) {
304+
305+
const auto& track = *track_it;
302306

303307
// PID check
304308
registry.fill(HIST("tofMass"), track.mass());
@@ -333,15 +337,15 @@ struct JetShapeTask {
333337
if (distanceBg1 < jetR || distanceBg2 < jetR) {
334338
registry.fill(HIST("tpcDedxOutOfJet"), track.p(), track.tpcSignal());
335339

336-
if (std::abs(track.tofNSigmaPi()) < nSigmaTofCut) {
340+
if(std::abs(track.tofNSigmaPi()) < nSigmaTofCut){
337341
registry.fill(HIST("tpcTofPiOutOfJet"), track.p(), track.tpcNSigmaPi());
338-
if (track.tpcNSigmaPi() > tpcNSigmaPiMin && track.tpcNSigmaPi() < tpcNSigmaPiMax) {
339-
registry.fill(HIST("pVsPtForPiOutOfJet"), track.p(), track.pt());
340-
}
342+
if(track.tpcNSigmaPi()>tpcNSigmaPiMin && track.tpcNSigmaPi()<tpcNSigmaPiMax){
343+
registry.fill(HIST("pVsPtForPiOutOfJet"), track.p(), track.pt());
344+
}
341345
}
342-
if (std::abs(track.tofNSigmaPr()) < nSigmaTofCut) {
346+
if(std::abs(track.tofNSigmaPr()) < nSigmaTofCut){
343347
registry.fill(HIST("tpcTofPrOutOfJet"), track.p(), track.tpcNSigmaPr());
344-
if (track.tpcNSigmaPr() > tpcNSigmaPrMin && track.tpcNSigmaPr() < tpcNSigmaPrMax) {
348+
if(track.tpcNSigmaPr()>tpcNSigmaPrMin && track.tpcNSigmaPr()<tpcNSigmaPrMax){
345349
registry.fill(HIST("pVsPtForPrOutOfJet"), track.p(), track.pt());
346350
}
347351
}
@@ -351,16 +355,16 @@ struct JetShapeTask {
351355
registry.fill(HIST("tpcDedx"), track.p(), track.tpcSignal(), distance);
352356
registry.fill(HIST("tofBeta"), track.p(), track.beta());
353357

354-
if (std::abs(track.tofNSigmaPr()) < nSigmaTofCut) {
358+
if(std::abs(track.tofNSigmaPr()) < nSigmaTofCut){
355359
registry.fill(HIST("tpcTofPr"), track.p(), track.tpcNSigmaPr(), distance);
356-
if (track.tpcNSigmaPr() > tpcNSigmaPrMin && track.tpcNSigmaPr() < tpcNSigmaPrMax) {
360+
if(track.tpcNSigmaPr()>tpcNSigmaPrMin && track.tpcNSigmaPr()<tpcNSigmaPrMax){
357361
registry.fill(HIST("pVsPtForPr"), track.p(), track.pt(), distance);
358362
}
359363
}
360364

361-
if (std::abs(track.tofNSigmaPi()) < nSigmaTofCut) {
365+
if(std::abs(track.tofNSigmaPi()) < nSigmaTofCut){
362366
registry.fill(HIST("tpcTofPi"), track.p(), track.tpcNSigmaPi(), distance);
363-
if (track.tpcNSigmaPi() > tpcNSigmaPiMin && track.tpcNSigmaPi() < tpcNSigmaPiMax) {
367+
if(track.tpcNSigmaPi()>tpcNSigmaPiMin && track.tpcNSigmaPi()<tpcNSigmaPiMax){
364368
registry.fill(HIST("pVsPtForPi"), track.p(), track.pt(), distance);
365369
}
366370
}
@@ -371,3 +375,4 @@ struct JetShapeTask {
371375
};
372376

373377
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) { return WorkflowSpec{adaptAnalysisTask<JetShapeTask>(cfgc)}; }
378+

0 commit comments

Comments
 (0)