Skip to content

Commit 7e284ee

Browse files
authored
Fix missing TPC split task in CMakeFile (#5238)
- Replace spectraTPC.cxx with spectraTPC_split in CmakeFile - Uniform pid and spectra tasks - Remove QA from split and tiny tasks - Use common nomenclature pid and spectra tasks
1 parent 9ef93a9 commit 7e284ee

9 files changed

Lines changed: 43 additions & 404 deletions

Analysis/Tasks/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ o2_add_dpl_workflow(pid-tpc
5454
COMPONENT_NAME Analysis)
5555

5656
o2_add_dpl_workflow(pid-tpc-split
57-
SOURCES pidTPC.cxx
57+
SOURCES pidTPC_split.cxx
5858
PUBLIC_LINK_LIBRARIES O2::Framework O2::DetectorsBase O2::AnalysisDataModel O2::AnalysisCore
5959
COMPONENT_NAME Analysis)
6060

Analysis/Tasks/PWGLF/spectraTOF_split.cxx

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,6 @@ struct TOFSpectraTaskSplit {
3636
histos.add(hp[i].data(), Form("%s;#it{p} (GeV/#it{c})", pT[i]), kTH1F, {{100, 0, 20}});
3737
histos.add(hpt[i].data(), Form("%s;#it{p}_{T} (GeV/#it{c})", pT[i]), kTH1F, {{100, 0, 20}});
3838
}
39-
histos.add("electronbeta/hp_El", ";#it{p} (GeV/#it{c})", kTH1F, {{100, 0, 20}});
40-
histos.add("electronbeta/hpt_El", ";#it{p}_{T} (GeV/#it{c})", kTH1F, {{100, 0, 20}});
41-
histos.add("electronbeta/hlength_El", ";Track Length (cm);Tracks", kTH1D, {{100, 0, 1000}});
42-
histos.add("electronbeta/htime_El", ";TOF Time (ns);Tracks", kTH1D, {{1000, 0, 600}});
43-
histos.add("electronbeta/hp_beta_El", ";#it{p} (GeV/#it{c});#beta - #beta_{e};Tracks", kTH2D, {{100, 0, 20}, {100, -0.01, 0.01}});
44-
histos.add("electronbeta/hp_betasigma_El", ";#it{p} (GeV/#it{c});(#beta - #beta_{e})/#sigma;Tracks", kTH2D, {{100, 0, 20}, {100, -5, 5}});
4539
}
4640

4741
template <std::size_t i, typename T>
@@ -64,7 +58,7 @@ struct TOFSpectraTaskSplit {
6458
aod::pidRespTOFEl, aod::pidRespTOFMu, aod::pidRespTOFPi,
6559
aod::pidRespTOFKa, aod::pidRespTOFPr, aod::pidRespTOFDe,
6660
aod::pidRespTOFTr, aod::pidRespTOFHe, aod::pidRespTOFAl,
67-
aod::pidRespTOFbeta, aod::TrackSelection>>;
61+
aod::TrackSelection>>;
6862
void process(TrackCandidates::iterator const& track)
6963
{
7064
histos.fill(HIST("p/Unselected"), track.p());
@@ -79,16 +73,6 @@ struct TOFSpectraTaskSplit {
7973
fillParticleHistos<6>(track, track.tofNSigmaTr());
8074
fillParticleHistos<7>(track, track.tofNSigmaHe());
8175
fillParticleHistos<8>(track, track.tofNSigmaAl());
82-
83-
//
84-
if (TMath::Abs(track.separationbetael() < 1.f)) {
85-
histos.fill(HIST("electronbeta/hp_El"), track.p());
86-
histos.fill(HIST("electronbeta/hpt_El"), track.pt());
87-
histos.fill(HIST("electronbeta/hlength_El"), track.length());
88-
histos.fill(HIST("electronbeta/htime_El"), track.tofSignal() / 1000);
89-
histos.fill(HIST("electronbeta/hp_beta_El"), track.p(), track.diffbetael());
90-
histos.fill(HIST("electronbeta/hp_betasigma_El"), track.p(), track.separationbetael());
91-
}
9276
}
9377
};
9478

Analysis/Tasks/PWGLF/spectraTOF_tiny.cxx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,15 @@ struct TOFSpectraTaskTiny {
5151
Configurable<float> cfgCutVertex{"cfgCutVertex", 10.0f, "Accepted z-vertex range"};
5252
Configurable<float> cfgCutEta{"cfgCutEta", 0.8f, "Eta range for tracks"};
5353
Configurable<float> nsigmacut{"nsigmacut", 3, "Value of the Nsigma cut"};
54+
5455
Filter collisionFilter = nabs(aod::collision::posZ) < cfgCutVertex;
5556
Filter trackFilter = (nabs(aod::track::eta) < cfgCutEta) && (aod::track::isGlobalTrack == (uint8_t) true) && (aod::track::tofSignal > 0.f);
5657
using TrackCandidates = soa::Filtered<soa::Join<aod::Tracks, aod::TracksExtra,
5758
aod::pidRespTOFTEl, aod::pidRespTOFTMu, aod::pidRespTOFTPi,
5859
aod::pidRespTOFTKa, aod::pidRespTOFTPr, aod::pidRespTOFTDe,
5960
aod::pidRespTOFTTr, aod::pidRespTOFTHe, aod::pidRespTOFTAl,
60-
aod::pidRespTOFbeta, aod::TrackSelection>>;
61+
aod::TrackSelection>>;
62+
6163
void process(TrackCandidates::iterator const& track)
6264
{
6365
histos.fill(HIST("p/Unselected"), track.p());
@@ -77,6 +79,6 @@ struct TOFSpectraTaskTiny {
7779

7880
WorkflowSpec defineDataProcessing(ConfigContext const&)
7981
{
80-
WorkflowSpec workflow{adaptAnalysisTask<TOFSpectraTaskTiny>("tofspectra-split-task")};
82+
WorkflowSpec workflow{adaptAnalysisTask<TOFSpectraTaskTiny>("tofspectra-tiny-task")};
8183
return workflow;
8284
}

Analysis/Tasks/PWGLF/spectraTPC_split.cxx

Lines changed: 8 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
// O2 includes
1212
#include "ReconstructionDataFormats/Track.h"
13+
#include "Framework/runDataProcessing.h"
1314
#include "Framework/AnalysisTask.h"
1415
#include "Framework/AnalysisDataModel.h"
1516
#include "Framework/ASoAHelpers.h"
@@ -20,43 +21,8 @@ using namespace o2;
2021
using namespace o2::framework;
2122
using namespace o2::framework::expressions;
2223

23-
void customize(std::vector<o2::framework::ConfigParamSpec>& workflowOptions)
24-
{
25-
std::vector<ConfigParamSpec> options{
26-
{"add-tof-histos", VariantType::Int, 0, {"Generate TPC with TOF histograms"}}};
27-
std::swap(workflowOptions, options);
28-
}
29-
30-
#include "Framework/runDataProcessing.h"
31-
32-
#define CANDIDATE_SELECTION \
33-
Configurable<float> cfgCutVertex{"cfgCutVertex", 10.0f, "Accepted z-vertex range"}; \
34-
Configurable<float> cfgCutEta{"cfgCutEta", 0.8f, "Eta range for tracks"}; \
35-
Filter collisionFilter = nabs(aod::collision::posZ) < cfgCutVertex; \
36-
Filter trackFilter = (nabs(aod::track::eta) < cfgCutEta) && (aod::track::isGlobalTrack == (uint8_t) true);
37-
38-
// FIXME: we should put this function in some common header so it has to be defined only once
39-
template <typename T>
40-
void makelogaxis(T h)
41-
{
42-
const int nbins = h->GetNbinsX();
43-
double binp[nbins + 1];
44-
double max = h->GetXaxis()->GetBinUpEdge(nbins);
45-
double min = h->GetXaxis()->GetBinLowEdge(1);
46-
if (min <= 0) {
47-
min = 0.00001;
48-
}
49-
double lmin = TMath::Log10(min);
50-
double ldelta = (TMath::Log10(max) - lmin) / ((double)nbins);
51-
for (int i = 0; i < nbins; i++) {
52-
binp[i] = TMath::Exp(TMath::Log(10) * (lmin + i * ldelta));
53-
}
54-
binp[nbins] = max + 1;
55-
h->GetXaxis()->Set(nbins, binp);
56-
}
57-
58-
constexpr int Np = 9;
5924
struct TPCSpectraTaskSplit {
25+
static constexpr int Np = 9;
6026
static constexpr const char* pT[Np] = {"e", "#mu", "#pi", "K", "p", "d", "t", "^{3}He", "#alpha"};
6127
static constexpr std::string_view hp[Np] = {"p/El", "p/Mu", "p/Pi", "p/Ka", "p/Pr", "p/De", "p/Tr", "p/He", "p/Al"};
6228
static constexpr std::string_view hpt[Np] = {"pt/El", "pt/Mu", "pt/Pi", "pt/Ka", "pt/Pr", "pt/De", "pt/Tr", "pt/He", "pt/Al"};
@@ -72,11 +38,6 @@ struct TPCSpectraTaskSplit {
7238
}
7339
}
7440

75-
//Defining filters and input
76-
CANDIDATE_SELECTION
77-
78-
Configurable<float> nsigmacut{"nsigmacut", 3, "Value of the Nsigma cut"};
79-
8041
template <std::size_t i, typename T>
8142
void fillParticleHistos(const T& track, const float& nsigma)
8243
{
@@ -87,6 +48,12 @@ struct TPCSpectraTaskSplit {
8748
histos.fill(HIST(hpt[i]), track.pt());
8849
}
8950

51+
Configurable<float> cfgCutVertex{"cfgCutVertex", 10.0f, "Accepted z-vertex range"};
52+
Configurable<float> cfgCutEta{"cfgCutEta", 0.8f, "Eta range for tracks"};
53+
Configurable<float> nsigmacut{"nsigmacut", 3, "Value of the Nsigma cut"};
54+
55+
Filter collisionFilter = nabs(aod::collision::posZ) < cfgCutVertex;
56+
Filter trackFilter = (nabs(aod::track::eta) < cfgCutEta) && (aod::track::isGlobalTrack == (uint8_t) true);
9057
using TrackCandidates = soa::Filtered<soa::Join<aod::Tracks, aod::TracksExtra,
9158
aod::pidRespTPCEl, aod::pidRespTPCMu, aod::pidRespTPCPi,
9259
aod::pidRespTPCKa, aod::pidRespTPCPr, aod::pidRespTPCDe,
@@ -110,68 +77,8 @@ struct TPCSpectraTaskSplit {
11077
}
11178
};
11279

113-
struct TPCPIDQASignalwTOFTaskSplit {
114-
static constexpr const char* pT[Np] = {"e", "#mu", "#pi", "K", "p", "d", "t", "^{3}He", "#alpha"};
115-
static constexpr std::string_view htpcsignal[Np] = {"tpcsignal/El", "tpcsignal/Mu", "tpcsignal/Pi",
116-
"tpcsignal/Ka", "tpcsignal/Pr", "tpcsignal/De",
117-
"tpcsignal/Tr", "tpcsignal/He", "tpcsignal/Al"};
118-
HistogramRegistry histos{"Histos", {}, OutputObjHandlingPolicy::AnalysisObject};
119-
120-
template <uint8_t i>
121-
void addParticleHistos()
122-
{
123-
histos.add(htpcsignal[i].data(), Form(";#it{p} (GeV/#it{c});TPC Signal;N_{#sigma}^{TPC}(%s)", pT[i]), kTH3D, {{1000, 0.001, 20}, {1000, 0, 1000}, {20, -10, 10}});
124-
makelogaxis(histos.get<TH3>(HIST(htpcsignal[i])));
125-
}
126-
127-
void init(o2::framework::InitContext&)
128-
{
129-
addParticleHistos<0>();
130-
addParticleHistos<1>();
131-
addParticleHistos<2>();
132-
addParticleHistos<3>();
133-
addParticleHistos<4>();
134-
addParticleHistos<5>();
135-
addParticleHistos<6>();
136-
addParticleHistos<7>();
137-
addParticleHistos<8>();
138-
}
139-
140-
// Filters
141-
CANDIDATE_SELECTION
142-
143-
Filter trackFilterTOF = (aod::track::tofSignal > 0.f); // Skip tracks without TOF
144-
using TrackCandidates = soa::Filtered<soa::Join<aod::Tracks, aod::TracksExtra,
145-
aod::pidRespTPCEl, aod::pidRespTPCMu, aod::pidRespTPCPi,
146-
aod::pidRespTPCKa, aod::pidRespTPCPr, aod::pidRespTPCDe,
147-
aod::pidRespTPCTr, aod::pidRespTPCHe, aod::pidRespTPCAl,
148-
aod::pidRespTOFEl, aod::pidRespTOFMu, aod::pidRespTOFPi,
149-
aod::pidRespTOFKa, aod::pidRespTOFPr, aod::pidRespTOFDe,
150-
aod::pidRespTOFTr, aod::pidRespTOFHe, aod::pidRespTOFAl,
151-
aod::TrackSelection>>;
152-
153-
void process(TrackCandidates::iterator const& track)
154-
{
155-
// const float mom = track.p();
156-
const float mom = track.tpcInnerParam();
157-
histos.fill(HIST(htpcsignal[0]), mom, track.tpcSignal(), track.tofNSigmaEl());
158-
histos.fill(HIST(htpcsignal[1]), mom, track.tpcSignal(), track.tofNSigmaMu());
159-
histos.fill(HIST(htpcsignal[2]), mom, track.tpcSignal(), track.tofNSigmaPi());
160-
histos.fill(HIST(htpcsignal[3]), mom, track.tpcSignal(), track.tofNSigmaKa());
161-
histos.fill(HIST(htpcsignal[4]), mom, track.tpcSignal(), track.tofNSigmaPr());
162-
histos.fill(HIST(htpcsignal[5]), mom, track.tpcSignal(), track.tofNSigmaDe());
163-
histos.fill(HIST(htpcsignal[6]), mom, track.tpcSignal(), track.tofNSigmaTr());
164-
histos.fill(HIST(htpcsignal[7]), mom, track.tpcSignal(), track.tofNSigmaHe());
165-
histos.fill(HIST(htpcsignal[8]), mom, track.tpcSignal(), track.tofNSigmaAl());
166-
}
167-
};
168-
16980
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
17081
{
171-
int TPCwTOF = cfgc.options().get<int>("add-tof-histos");
17282
WorkflowSpec workflow{adaptAnalysisTask<TPCSpectraTaskSplit>("tpcspectra-split-task")};
173-
if (TPCwTOF) {
174-
workflow.push_back(adaptAnalysisTask<TPCPIDQASignalwTOFTaskSplit>("TPCpidqa-signalwTOF-split-task"));
175-
}
17683
return workflow;
17784
}

Analysis/Tasks/PWGLF/spectraTPC_tiny.cxx

Lines changed: 3 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
// O2 includes
1212
#include "ReconstructionDataFormats/Track.h"
13+
#include "Framework/runDataProcessing.h"
1314
#include "Framework/AnalysisTask.h"
1415
#include "Framework/AnalysisDataModel.h"
1516
#include "Framework/ASoAHelpers.h"
@@ -20,34 +21,6 @@ using namespace o2;
2021
using namespace o2::framework;
2122
using namespace o2::framework::expressions;
2223

23-
void customize(std::vector<o2::framework::ConfigParamSpec>& workflowOptions)
24-
{
25-
std::vector<ConfigParamSpec> options{
26-
{"add-tof-histos", VariantType::Int, 0, {"Generate TPC with TOF histograms"}}};
27-
std::swap(workflowOptions, options);
28-
}
29-
30-
#include "Framework/runDataProcessing.h"
31-
32-
template <typename T>
33-
void makelogaxis(T h)
34-
{
35-
const int nbins = h->GetNbinsX();
36-
double binp[nbins + 1];
37-
double max = h->GetXaxis()->GetBinUpEdge(nbins);
38-
double min = h->GetXaxis()->GetBinLowEdge(1);
39-
if (min <= 0) {
40-
min = 0.00001;
41-
}
42-
double lmin = TMath::Log10(min);
43-
double ldelta = (TMath::Log10(max) - lmin) / ((double)nbins);
44-
for (int i = 0; i < nbins; i++) {
45-
binp[i] = TMath::Exp(TMath::Log(10) * (lmin + i * ldelta));
46-
}
47-
binp[nbins] = max + 1;
48-
h->GetXaxis()->Set(nbins, binp);
49-
}
50-
5124
struct TPCSpectraTaskTiny {
5225
static constexpr int Np = 9;
5326
static constexpr const char* pT[Np] = {"e", "#mu", "#pi", "K", "p", "d", "t", "^{3}He", "#alpha"};
@@ -78,6 +51,7 @@ struct TPCSpectraTaskTiny {
7851
Configurable<float> cfgCutVertex{"cfgCutVertex", 10.0f, "Accepted z-vertex range"};
7952
Configurable<float> cfgCutEta{"cfgCutEta", 0.8f, "Eta range for tracks"};
8053
Configurable<float> nsigmacut{"nsigmacut", 3, "Value of the Nsigma cut"};
54+
8155
Filter collisionFilter = nabs(aod::collision::posZ) < cfgCutVertex;
8256
Filter trackFilter = (nabs(aod::track::eta) < cfgCutEta) && (aod::track::isGlobalTrack == (uint8_t) true);
8357
using TrackCandidates = soa::Filtered<soa::Join<aod::Tracks, aod::TracksExtra,
@@ -103,7 +77,7 @@ struct TPCSpectraTaskTiny {
10377
}
10478
};
10579

106-
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
80+
WorkflowSpec defineDataProcessing(ConfigContext const&)
10781
{
10882
WorkflowSpec workflow{adaptAnalysisTask<TPCSpectraTaskTiny>("tpcspectra-tiny-task")};
10983
return workflow;

0 commit comments

Comments
 (0)