Skip to content

Commit c77d98b

Browse files
Adding possibility to store Pr PID in CFtracks
1 parent 00bcf18 commit c77d98b

File tree

2 files changed

+24
-16
lines changed

2 files changed

+24
-16
lines changed

PWGCF/DataModel/CorrelationsDerived.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,12 +70,15 @@ DECLARE_SOA_COLUMN(Pt, pt, float); //! pT (GeV/c)
7070
DECLARE_SOA_COLUMN(Eta, eta, float); //! Pseudorapidity
7171
DECLARE_SOA_COLUMN(Phi, phi, float); //! Phi angle
7272
DECLARE_SOA_COLUMN(Sign, sign, int8_t); //! Sign (positive, negative)
73+
DECLARE_SOA_COLUMN(TPCNsigmaPr, tpcNsigmaPr, float); //! TPC n-sigma for proton
74+
DECLARE_SOA_COLUMN(TOFNsigmaPr, tofNsigmaPr, float); //! TOF n-sigma for proton
7375
} // namespace cftrack
7476
DECLARE_SOA_TABLE(CFTracks, "AOD", "CFTRACK", //! Reduced track table
7577
o2::soa::Index<>,
7678
cftrack::CFCollisionId,
7779
cftrack::Pt, cftrack::Eta, cftrack::Phi,
78-
cftrack::Sign, track::TrackType);
80+
cftrack::Sign, track::TrackType,
81+
cftrack::TPCNsigmaPr, cftrack::TOFNsigmaPr);
7982
DECLARE_SOA_TABLE(CFTrackLabels, "AOD", "CFTRACKLABEL", //! Labels for reduced track table
8083
cftrack::CFMcParticleId);
8184
using CFTrack = CFTracks::iterator;

PWGCF/TableProducer/filterCorrelations.cxx

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,23 @@
88
// In applying this license CERN does not waive the privileges and immunities
99
// granted to it by virtue of its status as an Intergovernmental Organization
1010
// or submit itself to any jurisdiction.
11-
#include <vector>
11+
#include "PWGCF/DataModel/CorrelationsDerived.h"
12+
13+
#include "Common/DataModel/Centrality.h"
14+
#include "Common/DataModel/EventSelection.h"
15+
#include "Common/DataModel/TrackSelectionTables.h"
1216

13-
#include "Framework/runDataProcessing.h"
14-
#include "Framework/AnalysisTask.h"
15-
#include "Framework/AnalysisDataModel.h"
1617
#include "Framework/ASoAHelpers.h"
18+
#include "Framework/AnalysisDataModel.h"
19+
#include "Framework/AnalysisTask.h"
1720
#include "Framework/O2DatabasePDGPlugin.h"
18-
21+
#include "Framework/runDataProcessing.h"
1922
#include "MathUtils/detail/TypeTruncation.h"
2023

21-
#include "PWGCF/DataModel/CorrelationsDerived.h"
22-
#include "Common/DataModel/EventSelection.h"
23-
#include "Common/DataModel/TrackSelectionTables.h"
24-
#include "Common/DataModel/Centrality.h"
25-
2624
#include <TH3F.h>
2725

26+
#include <vector>
27+
2828
using namespace o2;
2929
using namespace o2::framework;
3030
using namespace o2::framework::expressions;
@@ -66,6 +66,7 @@ struct FilterCF {
6666
O2_DEFINE_CONFIGURABLE(cfgCollisionFlags, uint16_t, aod::collision::CollisionFlagsRun2::Run2VertexerTracks, "Request collision flags if non-zero (0 = off, 1 = Run2VertexerTracks)")
6767
O2_DEFINE_CONFIGURABLE(cfgTransientTables, bool, false, "Output transient tables for collision and track IDs to enable successive filtering tasks")
6868
O2_DEFINE_CONFIGURABLE(cfgTrackSelection, int, 0, "Type of track selection (0 = Run 2/3 without systematics | 1 = Run 3 with systematics)")
69+
O2_DEFINE_CONFIGURABLE(cfgStorePid, bool, false, "Store PID information for tracks (TPC and TOF n-sigma for protons)")
6970
O2_DEFINE_CONFIGURABLE(cfgMinMultiplicity, float, -1, "Minimum multiplicity considered for filtering (if value positive)")
7071
O2_DEFINE_CONFIGURABLE(cfgMcSpecialPDGs, std::vector<int>, {}, "Special MC PDG codes to include in the MC primary particle output (additional to charged particles). Empty = charged particles only.") // needed for some neutral particles
7172

@@ -75,7 +76,7 @@ struct FilterCF {
7576

7677
// TODO how to have this in the second task? For now they are copied
7778
Filter trackFilter = (nabs(aod::track::eta) < cfgCutEta) && (aod::track::pt > cfgCutPt);
78-
Filter trackSelection = (requireGlobalTrackInFilter()) || (aod::track::isGlobalTrackSDD == (uint8_t) true);
79+
Filter trackSelection = (requireGlobalTrackInFilter()) || (aod::track::isGlobalTrackSDD == (uint8_t)true);
7980

8081
Filter mcCollisionFilter = nabs(aod::mccollision::posZ) < cfgCutVertex;
8182

@@ -155,7 +156,7 @@ struct FilterCF {
155156
return 0;
156157
}
157158

158-
void processData(soa::Filtered<soa::Join<aod::Collisions, aod::EvSels, aod::CFMultiplicities>>::iterator const& collision, aod::BCsWithTimestamps const&, soa::Filtered<soa::Join<aod::Tracks, aod::TracksExtra, aod::TrackSelection>> const& tracks)
159+
void processData(soa::Filtered<soa::Join<aod::Collisions, aod::EvSels, aod::CFMultiplicities>>::iterator const& collision, aod::BCsWithTimestamps const&, soa::Filtered<soa::Join<aod::Tracks, aod::TracksExtra, aod::TrackSelection, aod::pidTPCPr, aod::pidTOFPr>> const& tracks)
159160
{
160161
if (cfgVerbosity > 0) {
161162
LOGF(info, "processData: Tracks for collision: %d | Vertex: %.1f (%d) | INT7: %d | Multiplicity: %.1f", tracks.size(), collision.posZ(), collision.flags(), collision.sel7(), collision.multiplicity());
@@ -172,7 +173,11 @@ struct FilterCF {
172173
outputCollRefs(collision.globalIndex());
173174

174175
for (auto& track : tracks) {
175-
outputTracks(outputCollisions.lastIndex(), track.pt(), track.eta(), track.phi(), track.sign(), getTrackType(track));
176+
if (cfgStorePid) {
177+
outputTracks(outputCollisions.lastIndex(), track.pt(), track.eta(), track.phi(), track.sign(), getTrackType(track), track.tpcNsigmaPr(), track.tofNsigmaPr());
178+
} else {
179+
outputTracks(outputCollisions.lastIndex(), track.pt(), track.eta(), track.phi(), track.sign(), getTrackType(track), -999.0f, -999.0f);
180+
}
176181
if (cfgTransientTables)
177182
outputTrackRefs(collision.globalIndex(), track.globalIndex());
178183

@@ -287,7 +292,7 @@ struct FilterCF {
287292
}
288293
}
289294
outputTracks(outputCollisions.lastIndex(),
290-
truncateFloatFraction(track.pt()), truncateFloatFraction(track.eta()), truncateFloatFraction(track.phi()), track.sign(), getTrackType(track));
295+
truncateFloatFraction(track.pt()), truncateFloatFraction(track.eta()), truncateFloatFraction(track.phi()), track.sign(), getTrackType(track), -999.0f, -999.0f);
291296
outputTrackLabels(mcParticleId);
292297
if (cfgTransientTables)
293298
outputTrackRefs(collision.globalIndex(), track.globalIndex());
@@ -326,7 +331,7 @@ struct MultiplicitySelector {
326331
O2_DEFINE_CONFIGURABLE(cfgCutEta, float, 0.8f, "Eta range for tracks")
327332

328333
Filter trackFilter = (nabs(aod::track::eta) < cfgCutEta) && (aod::track::pt > cfgCutPt);
329-
Filter trackSelection = (requireGlobalTrackInFilter()) || (aod::track::isGlobalTrackSDD == (uint8_t) true);
334+
Filter trackSelection = (requireGlobalTrackInFilter()) || (aod::track::isGlobalTrackSDD == (uint8_t)true);
330335

331336
void init(InitContext&)
332337
{

0 commit comments

Comments
 (0)