Skip to content

Commit

Permalink
Fix missing TPC split task in CMakeFile (#5238)
Browse files Browse the repository at this point in the history
- 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
  • Loading branch information
njacazio committed Jan 20, 2021
1 parent 9ef93a9 commit 7e284ee
Show file tree
Hide file tree
Showing 9 changed files with 43 additions and 404 deletions.
2 changes: 1 addition & 1 deletion Analysis/Tasks/CMakeLists.txt
Expand Up @@ -54,7 +54,7 @@ o2_add_dpl_workflow(pid-tpc
COMPONENT_NAME Analysis)

o2_add_dpl_workflow(pid-tpc-split
SOURCES pidTPC.cxx
SOURCES pidTPC_split.cxx
PUBLIC_LINK_LIBRARIES O2::Framework O2::DetectorsBase O2::AnalysisDataModel O2::AnalysisCore
COMPONENT_NAME Analysis)

Expand Down
18 changes: 1 addition & 17 deletions Analysis/Tasks/PWGLF/spectraTOF_split.cxx
Expand Up @@ -36,12 +36,6 @@ struct TOFSpectraTaskSplit {
histos.add(hp[i].data(), Form("%s;#it{p} (GeV/#it{c})", pT[i]), kTH1F, {{100, 0, 20}});
histos.add(hpt[i].data(), Form("%s;#it{p}_{T} (GeV/#it{c})", pT[i]), kTH1F, {{100, 0, 20}});
}
histos.add("electronbeta/hp_El", ";#it{p} (GeV/#it{c})", kTH1F, {{100, 0, 20}});
histos.add("electronbeta/hpt_El", ";#it{p}_{T} (GeV/#it{c})", kTH1F, {{100, 0, 20}});
histos.add("electronbeta/hlength_El", ";Track Length (cm);Tracks", kTH1D, {{100, 0, 1000}});
histos.add("electronbeta/htime_El", ";TOF Time (ns);Tracks", kTH1D, {{1000, 0, 600}});
histos.add("electronbeta/hp_beta_El", ";#it{p} (GeV/#it{c});#beta - #beta_{e};Tracks", kTH2D, {{100, 0, 20}, {100, -0.01, 0.01}});
histos.add("electronbeta/hp_betasigma_El", ";#it{p} (GeV/#it{c});(#beta - #beta_{e})/#sigma;Tracks", kTH2D, {{100, 0, 20}, {100, -5, 5}});
}

template <std::size_t i, typename T>
Expand All @@ -64,7 +58,7 @@ struct TOFSpectraTaskSplit {
aod::pidRespTOFEl, aod::pidRespTOFMu, aod::pidRespTOFPi,
aod::pidRespTOFKa, aod::pidRespTOFPr, aod::pidRespTOFDe,
aod::pidRespTOFTr, aod::pidRespTOFHe, aod::pidRespTOFAl,
aod::pidRespTOFbeta, aod::TrackSelection>>;
aod::TrackSelection>>;
void process(TrackCandidates::iterator const& track)
{
histos.fill(HIST("p/Unselected"), track.p());
Expand All @@ -79,16 +73,6 @@ struct TOFSpectraTaskSplit {
fillParticleHistos<6>(track, track.tofNSigmaTr());
fillParticleHistos<7>(track, track.tofNSigmaHe());
fillParticleHistos<8>(track, track.tofNSigmaAl());

//
if (TMath::Abs(track.separationbetael() < 1.f)) {
histos.fill(HIST("electronbeta/hp_El"), track.p());
histos.fill(HIST("electronbeta/hpt_El"), track.pt());
histos.fill(HIST("electronbeta/hlength_El"), track.length());
histos.fill(HIST("electronbeta/htime_El"), track.tofSignal() / 1000);
histos.fill(HIST("electronbeta/hp_beta_El"), track.p(), track.diffbetael());
histos.fill(HIST("electronbeta/hp_betasigma_El"), track.p(), track.separationbetael());
}
}
};

Expand Down
6 changes: 4 additions & 2 deletions Analysis/Tasks/PWGLF/spectraTOF_tiny.cxx
Expand Up @@ -51,13 +51,15 @@ struct TOFSpectraTaskTiny {
Configurable<float> cfgCutVertex{"cfgCutVertex", 10.0f, "Accepted z-vertex range"};
Configurable<float> cfgCutEta{"cfgCutEta", 0.8f, "Eta range for tracks"};
Configurable<float> nsigmacut{"nsigmacut", 3, "Value of the Nsigma cut"};

Filter collisionFilter = nabs(aod::collision::posZ) < cfgCutVertex;
Filter trackFilter = (nabs(aod::track::eta) < cfgCutEta) && (aod::track::isGlobalTrack == (uint8_t) true) && (aod::track::tofSignal > 0.f);
using TrackCandidates = soa::Filtered<soa::Join<aod::Tracks, aod::TracksExtra,
aod::pidRespTOFTEl, aod::pidRespTOFTMu, aod::pidRespTOFTPi,
aod::pidRespTOFTKa, aod::pidRespTOFTPr, aod::pidRespTOFTDe,
aod::pidRespTOFTTr, aod::pidRespTOFTHe, aod::pidRespTOFTAl,
aod::pidRespTOFbeta, aod::TrackSelection>>;
aod::TrackSelection>>;

void process(TrackCandidates::iterator const& track)
{
histos.fill(HIST("p/Unselected"), track.p());
Expand All @@ -77,6 +79,6 @@ struct TOFSpectraTaskTiny {

WorkflowSpec defineDataProcessing(ConfigContext const&)
{
WorkflowSpec workflow{adaptAnalysisTask<TOFSpectraTaskTiny>("tofspectra-split-task")};
WorkflowSpec workflow{adaptAnalysisTask<TOFSpectraTaskTiny>("tofspectra-tiny-task")};
return workflow;
}
109 changes: 8 additions & 101 deletions Analysis/Tasks/PWGLF/spectraTPC_split.cxx
Expand Up @@ -10,6 +10,7 @@

// O2 includes
#include "ReconstructionDataFormats/Track.h"
#include "Framework/runDataProcessing.h"
#include "Framework/AnalysisTask.h"
#include "Framework/AnalysisDataModel.h"
#include "Framework/ASoAHelpers.h"
Expand All @@ -20,43 +21,8 @@ using namespace o2;
using namespace o2::framework;
using namespace o2::framework::expressions;

void customize(std::vector<o2::framework::ConfigParamSpec>& workflowOptions)
{
std::vector<ConfigParamSpec> options{
{"add-tof-histos", VariantType::Int, 0, {"Generate TPC with TOF histograms"}}};
std::swap(workflowOptions, options);
}

#include "Framework/runDataProcessing.h"

#define CANDIDATE_SELECTION \
Configurable<float> cfgCutVertex{"cfgCutVertex", 10.0f, "Accepted z-vertex range"}; \
Configurable<float> cfgCutEta{"cfgCutEta", 0.8f, "Eta range for tracks"}; \
Filter collisionFilter = nabs(aod::collision::posZ) < cfgCutVertex; \
Filter trackFilter = (nabs(aod::track::eta) < cfgCutEta) && (aod::track::isGlobalTrack == (uint8_t) true);

// FIXME: we should put this function in some common header so it has to be defined only once
template <typename T>
void makelogaxis(T h)
{
const int nbins = h->GetNbinsX();
double binp[nbins + 1];
double max = h->GetXaxis()->GetBinUpEdge(nbins);
double min = h->GetXaxis()->GetBinLowEdge(1);
if (min <= 0) {
min = 0.00001;
}
double lmin = TMath::Log10(min);
double ldelta = (TMath::Log10(max) - lmin) / ((double)nbins);
for (int i = 0; i < nbins; i++) {
binp[i] = TMath::Exp(TMath::Log(10) * (lmin + i * ldelta));
}
binp[nbins] = max + 1;
h->GetXaxis()->Set(nbins, binp);
}

constexpr int Np = 9;
struct TPCSpectraTaskSplit {
static constexpr int Np = 9;
static constexpr const char* pT[Np] = {"e", "#mu", "#pi", "K", "p", "d", "t", "^{3}He", "#alpha"};
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"};
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"};
Expand All @@ -72,11 +38,6 @@ struct TPCSpectraTaskSplit {
}
}

//Defining filters and input
CANDIDATE_SELECTION

Configurable<float> nsigmacut{"nsigmacut", 3, "Value of the Nsigma cut"};

template <std::size_t i, typename T>
void fillParticleHistos(const T& track, const float& nsigma)
{
Expand All @@ -87,6 +48,12 @@ struct TPCSpectraTaskSplit {
histos.fill(HIST(hpt[i]), track.pt());
}

Configurable<float> cfgCutVertex{"cfgCutVertex", 10.0f, "Accepted z-vertex range"};
Configurable<float> cfgCutEta{"cfgCutEta", 0.8f, "Eta range for tracks"};
Configurable<float> nsigmacut{"nsigmacut", 3, "Value of the Nsigma cut"};

Filter collisionFilter = nabs(aod::collision::posZ) < cfgCutVertex;
Filter trackFilter = (nabs(aod::track::eta) < cfgCutEta) && (aod::track::isGlobalTrack == (uint8_t) true);
using TrackCandidates = soa::Filtered<soa::Join<aod::Tracks, aod::TracksExtra,
aod::pidRespTPCEl, aod::pidRespTPCMu, aod::pidRespTPCPi,
aod::pidRespTPCKa, aod::pidRespTPCPr, aod::pidRespTPCDe,
Expand All @@ -110,68 +77,8 @@ struct TPCSpectraTaskSplit {
}
};

struct TPCPIDQASignalwTOFTaskSplit {
static constexpr const char* pT[Np] = {"e", "#mu", "#pi", "K", "p", "d", "t", "^{3}He", "#alpha"};
static constexpr std::string_view htpcsignal[Np] = {"tpcsignal/El", "tpcsignal/Mu", "tpcsignal/Pi",
"tpcsignal/Ka", "tpcsignal/Pr", "tpcsignal/De",
"tpcsignal/Tr", "tpcsignal/He", "tpcsignal/Al"};
HistogramRegistry histos{"Histos", {}, OutputObjHandlingPolicy::AnalysisObject};

template <uint8_t i>
void addParticleHistos()
{
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}});
makelogaxis(histos.get<TH3>(HIST(htpcsignal[i])));
}

void init(o2::framework::InitContext&)
{
addParticleHistos<0>();
addParticleHistos<1>();
addParticleHistos<2>();
addParticleHistos<3>();
addParticleHistos<4>();
addParticleHistos<5>();
addParticleHistos<6>();
addParticleHistos<7>();
addParticleHistos<8>();
}

// Filters
CANDIDATE_SELECTION

Filter trackFilterTOF = (aod::track::tofSignal > 0.f); // Skip tracks without TOF
using TrackCandidates = soa::Filtered<soa::Join<aod::Tracks, aod::TracksExtra,
aod::pidRespTPCEl, aod::pidRespTPCMu, aod::pidRespTPCPi,
aod::pidRespTPCKa, aod::pidRespTPCPr, aod::pidRespTPCDe,
aod::pidRespTPCTr, aod::pidRespTPCHe, aod::pidRespTPCAl,
aod::pidRespTOFEl, aod::pidRespTOFMu, aod::pidRespTOFPi,
aod::pidRespTOFKa, aod::pidRespTOFPr, aod::pidRespTOFDe,
aod::pidRespTOFTr, aod::pidRespTOFHe, aod::pidRespTOFAl,
aod::TrackSelection>>;

void process(TrackCandidates::iterator const& track)
{
// const float mom = track.p();
const float mom = track.tpcInnerParam();
histos.fill(HIST(htpcsignal[0]), mom, track.tpcSignal(), track.tofNSigmaEl());
histos.fill(HIST(htpcsignal[1]), mom, track.tpcSignal(), track.tofNSigmaMu());
histos.fill(HIST(htpcsignal[2]), mom, track.tpcSignal(), track.tofNSigmaPi());
histos.fill(HIST(htpcsignal[3]), mom, track.tpcSignal(), track.tofNSigmaKa());
histos.fill(HIST(htpcsignal[4]), mom, track.tpcSignal(), track.tofNSigmaPr());
histos.fill(HIST(htpcsignal[5]), mom, track.tpcSignal(), track.tofNSigmaDe());
histos.fill(HIST(htpcsignal[6]), mom, track.tpcSignal(), track.tofNSigmaTr());
histos.fill(HIST(htpcsignal[7]), mom, track.tpcSignal(), track.tofNSigmaHe());
histos.fill(HIST(htpcsignal[8]), mom, track.tpcSignal(), track.tofNSigmaAl());
}
};

WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
{
int TPCwTOF = cfgc.options().get<int>("add-tof-histos");
WorkflowSpec workflow{adaptAnalysisTask<TPCSpectraTaskSplit>("tpcspectra-split-task")};
if (TPCwTOF) {
workflow.push_back(adaptAnalysisTask<TPCPIDQASignalwTOFTaskSplit>("TPCpidqa-signalwTOF-split-task"));
}
return workflow;
}
32 changes: 3 additions & 29 deletions Analysis/Tasks/PWGLF/spectraTPC_tiny.cxx
Expand Up @@ -10,6 +10,7 @@

// O2 includes
#include "ReconstructionDataFormats/Track.h"
#include "Framework/runDataProcessing.h"
#include "Framework/AnalysisTask.h"
#include "Framework/AnalysisDataModel.h"
#include "Framework/ASoAHelpers.h"
Expand All @@ -20,34 +21,6 @@ using namespace o2;
using namespace o2::framework;
using namespace o2::framework::expressions;

void customize(std::vector<o2::framework::ConfigParamSpec>& workflowOptions)
{
std::vector<ConfigParamSpec> options{
{"add-tof-histos", VariantType::Int, 0, {"Generate TPC with TOF histograms"}}};
std::swap(workflowOptions, options);
}

#include "Framework/runDataProcessing.h"

template <typename T>
void makelogaxis(T h)
{
const int nbins = h->GetNbinsX();
double binp[nbins + 1];
double max = h->GetXaxis()->GetBinUpEdge(nbins);
double min = h->GetXaxis()->GetBinLowEdge(1);
if (min <= 0) {
min = 0.00001;
}
double lmin = TMath::Log10(min);
double ldelta = (TMath::Log10(max) - lmin) / ((double)nbins);
for (int i = 0; i < nbins; i++) {
binp[i] = TMath::Exp(TMath::Log(10) * (lmin + i * ldelta));
}
binp[nbins] = max + 1;
h->GetXaxis()->Set(nbins, binp);
}

struct TPCSpectraTaskTiny {
static constexpr int Np = 9;
static constexpr const char* pT[Np] = {"e", "#mu", "#pi", "K", "p", "d", "t", "^{3}He", "#alpha"};
Expand Down Expand Up @@ -78,6 +51,7 @@ struct TPCSpectraTaskTiny {
Configurable<float> cfgCutVertex{"cfgCutVertex", 10.0f, "Accepted z-vertex range"};
Configurable<float> cfgCutEta{"cfgCutEta", 0.8f, "Eta range for tracks"};
Configurable<float> nsigmacut{"nsigmacut", 3, "Value of the Nsigma cut"};

Filter collisionFilter = nabs(aod::collision::posZ) < cfgCutVertex;
Filter trackFilter = (nabs(aod::track::eta) < cfgCutEta) && (aod::track::isGlobalTrack == (uint8_t) true);
using TrackCandidates = soa::Filtered<soa::Join<aod::Tracks, aod::TracksExtra,
Expand All @@ -103,7 +77,7 @@ struct TPCSpectraTaskTiny {
}
};

WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
WorkflowSpec defineDataProcessing(ConfigContext const&)
{
WorkflowSpec workflow{adaptAnalysisTask<TPCSpectraTaskTiny>("tpcspectra-tiny-task")};
return workflow;
Expand Down

0 comments on commit 7e284ee

Please sign in to comment.