Skip to content

Commit eb274ca

Browse files
authored
Merge branch 'AliceO2Group:master' into triton-analysis
2 parents 62fa952 + 196d274 commit eb274ca

20 files changed

Lines changed: 1762 additions & 453 deletions

PWGCF/EbyEFluctuations/Tasks/nchCumulantsId.cxx

Lines changed: 32 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,30 @@
2121
#include "Common/DataModel/PIDResponseTPC.h"
2222
#include "Common/DataModel/TrackSelectionTables.h"
2323

24-
#include "CCDB/BasicCCDBManager.h"
25-
#include "Framework/ASoAHelpers.h"
26-
#include "Framework/AnalysisDataModel.h"
27-
#include "Framework/AnalysisTask.h"
28-
#include "Framework/HistogramRegistry.h"
29-
#include "Framework/HistogramSpec.h"
30-
#include "Framework/O2DatabasePDGPlugin.h"
31-
#include "Framework/runDataProcessing.h"
32-
24+
#include <CCDB/BasicCCDBManager.h>
25+
#include <CommonConstants/PhysicsConstants.h>
26+
#include <Framework/ASoAHelpers.h>
27+
#include <Framework/AnalysisDataModel.h>
28+
#include <Framework/AnalysisHelpers.h>
29+
#include <Framework/AnalysisTask.h>
30+
#include <Framework/Configurable.h>
31+
#include <Framework/HistogramRegistry.h>
32+
#include <Framework/HistogramSpec.h>
33+
#include <Framework/InitContext.h>
34+
#include <Framework/O2DatabasePDGPlugin.h>
35+
#include <Framework/OutputObjHeader.h>
36+
#include <Framework/runDataProcessing.h>
37+
38+
#include <TH2.h>
3339
#include <TPDGCode.h>
3440

3541
#include <algorithm>
42+
#include <array>
43+
#include <cstddef>
44+
#include <cstdint>
45+
#include <cstdlib>
3646
#include <string>
47+
#include <string_view>
3748
#include <vector>
3849

3950
using namespace o2;
@@ -112,6 +123,17 @@ struct NchCumulantsId {
112123
Configurable<float> cfgCutPtMax{"cfgCutPtMax", 3.0, "max cut for pT"};
113124
Configurable<float> cfgCutPtMin{"cfgCutPtMin", 0.15, "min cut for pT"};
114125

126+
ConfigurableAxis axisNch{"axisNch", {1200, -60.0, 60.0}, "Net_charge_dN"};
127+
ConfigurableAxis axisPosCh{"axisPosCh", {3010, -0.5, 300.5}, "Pos_charge"};
128+
ConfigurableAxis axisNegCh{"axisNegCh", {3010, -0.5, 300.5}, "Neg_charge"};
129+
ConfigurableAxis axisNt{"axisNt", {8010, -0.5, 800.5}, "Mult_midRap_Nch"};
130+
ConfigurableAxis axisPrCh{"axisPrCh", {3010, -0.5, 300.5}, "Pr_charge"};
131+
ConfigurableAxis axisAPrCh{"axisAPrCh", {3010, -0.5, 300.5}, "APr_charge"};
132+
ConfigurableAxis axisKaCh{"axisKaCh", {3010, -0.5, 300.5}, "Ka_charge"};
133+
ConfigurableAxis axisAKaCh{"axisAKaCh", {3010, -0.5, 300.5}, "AKa_charge"};
134+
ConfigurableAxis axisPiCh{"axisPiCh", {3010, -0.5, 300.5}, "Pion_Positive"};
135+
ConfigurableAxis axisAPiCh{"axisAPiCh", {3010, -0.5, 300.5}, "Pion_Negative"};
136+
115137
Configurable<bool> checkCollPosZMc{"checkCollPosZMc", false, "checkCollPosZMc"};
116138
Configurable<bool> flagUnusedVariableError{"flagUnusedVariableError", false, "flagUnusedVariableError"};
117139
Configurable<bool> cfgDoRejectionForId{"cfgDoRejectionForId", false, "Apply rejection cut before PID selection (selTrackForId)"};
@@ -121,7 +143,7 @@ struct NchCumulantsId {
121143
Configurable<bool> cfgEvSel03doIsGoodITSLayersAll{"cfgEvSel03doIsGoodITSLayersAll", true, "apply kIsGoodITSLayersAll"};
122144

123145
// Configurables for particle Identification
124-
Configurable<bool> cfgId01CheckVetoCut{"cfgId01CheckVetoCut", false, "cfgId01CheckVetoCut"};
146+
Configurable<bool> cfgId01CheckVetoCut{"cfgId01CheckVetoCut", true, "cfgId01CheckVetoCut"};
125147
Configurable<bool> cfgId02DoElRejection{"cfgId02DoElRejection", true, "cfgId02DoElRejection"};
126148
Configurable<bool> cfgId03DoDeRejection{"cfgId03DoDeRejection", false, "cfgId03DoDeRejection"};
127149
Configurable<bool> cfgId04DoPdependentId{"cfgId04DoPdependentId", true, "cfgId04DoPdependentId"};
@@ -246,17 +268,6 @@ struct NchCumulantsId {
246268
const AxisSpec axisTOFNSigma = {200, -10.0, 10.0, "n#sigma_{TOF}"};
247269
const AxisSpec axisTOFExpMom = {200, 0.0f, 10.0f, "#it{p}_{tofExpMom} (GeV/#it{c})"};
248270

249-
const AxisSpec axisNch(100, -50, 50, "Net_charge_dN");
250-
const AxisSpec axisPosCh(101, -1, 100, "Pos_charge");
251-
const AxisSpec axisNegCh(101, -1, 100, "Neg_charge");
252-
const AxisSpec axisNt(201, -1, 200, "Mult_midRap_Nch");
253-
const AxisSpec axisPrCh(101, -1, 100, "Pr_charge");
254-
const AxisSpec axisAPrCh(101, -1, 100, "APr_charge");
255-
const AxisSpec axisKaCh(101, -1, 100, "Ka_charge");
256-
const AxisSpec axisAKaCh(101, -1, 100, "AKa_charge");
257-
const AxisSpec axisPiCh(101, -1, 100, "Pion_Positive");
258-
const AxisSpec axisAPiCh(101, -1, 100, "Pion_Negative");
259-
260271
const AxisSpec axisIdTag = {32, -0.5f, 31.5f, "idTag"};
261272
const AxisSpec axisMcTag = {32, -0.5f, 31.5f, "mcTag"};
262273

PWGCF/Femto/Core/pairHistManager.h

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
#include <Framework/HistogramSpec.h>
2929
#include <Framework/Logger.h>
3030

31-
#include <Math/GenVector/Boost.h>
3231
#include <Math/Vector4D.h> // IWYU pragma: keep (do not replace with Math/Vector4Dfwd.h)
3332
#include <Math/Vector4Dfwd.h>
3433

@@ -563,7 +562,7 @@ class PairHistManager
563562
// compute true kinematics
564563
mTrueKt = getKt(mTrueParticle1, mTrueParticle2);
565564
mTrueMt = getMt(mTrueParticle1, mTrueParticle2);
566-
mTrueMt = getMinv(mTrueParticle1, mTrueParticle2);
565+
mTrueMinv = getMinv(mTrueParticle1, mTrueParticle2);
567566
mTrueKstar = getKstar(mTrueParticle1, mTrueParticle2);
568567
}
569568

@@ -969,9 +968,9 @@ class PairHistManager
969968
const double tPt = std::sqrt(tPx * tPx + tPy * tPy);
970969
const double tMt = std::sqrt(tE * tE - tPz * tPz);
971970

972-
static constexpr double kMinTransverseMomentum = 1e-9;
973-
if (tPt < kMinTransverseMomentum || tMt < kMinTransverseMomentum) {
974-
return {0.0, 0.0, 0.0};
971+
static constexpr double MinTransverseMomentum = 1e-9;
972+
if (tPt < MinTransverseMomentum || tMt < MinTransverseMomentum) {
973+
return {0.0f, 0.0f, 0.0f};
975974
}
976975

977976
const double betaL = tPz / tE;

PWGCF/Femto/Core/trackHistManager.h

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,8 @@ enum TrackHist {
7373
kPtVsDcaxy,
7474
kPtVsDcaz,
7575
kPtVsDca,
76+
kPtVsDcaxyVsDcaz, // DCAxy vs DCAz vs pt for extraction of particle fraction
77+
kPVsPTpc,
7678
// its pid
7779
kItsSignal,
7880
kItsElectron,
@@ -199,6 +201,7 @@ struct ConfTrackQaBinning : o2::framework::ConfigurableGroup {
199201
o2::framework::Configurable<bool> plotHeliumPid{"plotHeliumPid", true, "Generate plots for Helium PID"};
200202
o2::framework::Configurable<bool> plotOrigins{"plotOrigins", true, "MC ONLY: Plot pt vs DCAxy vs DCAz for different particle origins"};
201203
o2::framework::Configurable<std::vector<int>> pdgCodesForMothersOfSecondary{"pdgCodesForMothersOfSecondary", {3122}, "MC ONLY: PDG codes of mothers of secondaries (Max 3 will be considered)"};
204+
o2::framework::Configurable<bool> plotDcaCorrelation{"plotDcaCorrelation", true, "Plot pt vs DCAxy vs DCAz"};
202205
o2::framework::ConfigurableAxis itsCluster{"itsCluster", {{8, -0.5, 7.5}}, "ITS cluster"};
203206
o2::framework::ConfigurableAxis itsClusterIb{"itsClusterIb", {{4, -0.5, 3.5}}, "ITS cluster in inner barrel"};
204207
o2::framework::ConfigurableAxis tpcCrossedRows{"tpcCrossedRows", {{161, -0.5, 160.5}}, "TPC cluster"};
@@ -209,7 +212,7 @@ struct ConfTrackQaBinning : o2::framework::ConfigurableGroup {
209212
o2::framework::ConfigurableAxis dcaXy{"dcaXy", {{300, -0.3, 0.3}}, "DCA_xy"};
210213
o2::framework::ConfigurableAxis dcaZ{"dcaZ", {{300, -0.3, 0.3}}, "DCA_Z"};
211214
o2::framework::ConfigurableAxis dca{"dca", {{300, 0, 0.3}}, "DCA"};
212-
o2::framework::ConfigurableAxis p{"p", {{300, 0, 6}}, "Momentum axis"};
215+
o2::framework::ConfigurableAxis p{"p", {{300, 0, 6}}, "Momentum axis. Used for all PID histograms and momentum correlation histogram"};
213216
o2::framework::ConfigurableAxis itsSignal{"itsSignal", {{150, 0, 15}}, "ITS Signal"};
214217
o2::framework::ConfigurableAxis itsElectron{"itsElectron", {{300, -3, 3}}, "ITS PID for electron"};
215218
o2::framework::ConfigurableAxis itsPion{"itsPion", {{300, -3, 3}}, "ITS PID for pion"};
@@ -306,6 +309,8 @@ constexpr std::array<histmanager::HistInfo<TrackHist>, kTrackHistLast>
306309
{kPtVsDcaxy, o2::framework::HistType::kTH2F, "hPtVsDcaxy", "p_{T} vs DCA_{XY}; p_{T} (GeV/#it{c}); DCA_{XY} (cm)"},
307310
{kPtVsDcaz, o2::framework::HistType::kTH2F, "hPtVsDcaz", "p_{T} vs DCA_{Z}; p_{T} (GeV/#it{c}); DCA_{Z} (cm)"},
308311
{kPtVsDca, o2::framework::HistType::kTH2F, "hPtVsDca", "p_{T} vs DCA; p_{T} (GeV/#it{c}); DCA (cm)"},
312+
{kPtVsDcaxyVsDcaz, o2::framework::HistType::kTHnSparseF, "hPtVsDcaxyVsDcaz", "Transverse momentum vs DCA_{xy} vs DCA_{z}; p_{T} (GeV/#it{c}); DCA_{XY} (cm); DCA_{Z} (cm);"},
313+
{kPVsPTpc, o2::framework::HistType::kTH2F, "hPVsPTpc", "Correlation p_{global} and p_{TPC}; p_{global} (GeV/#it{c}); p_{tpc} (GeV/#it{c})"},
309314
{kItsSignal, o2::framework::HistType::kTH2F, "hItsSignal", "ITS Signal; p (GeV/#it{c}) ; <ITS Cluster Size> x <cos #lambda>"},
310315
{kItsElectron, o2::framework::HistType::kTH2F, "hItsPidElectron", "ITS PID Electron; p (GeV/#it{c}) ; n#sigma_{TPC,el}"},
311316
{kItsPion, o2::framework::HistType::kTH2F, "hItsPidPion", "ITS PID Pion; p (GeV/#it{c}) ; n#sigma_{ITS,pi}"},
@@ -352,15 +357,15 @@ constexpr std::array<histmanager::HistInfo<TrackHist>, kTrackHistLast>
352357
{kTruePtVsPt, o2::framework::HistType::kTH2F, "hTruePtVsPt", "True transverse momentum vs transverse momentum; p_{T,True} (GeV/#it{c}); p_{T,True} (GeV/#it{c})"},
353358
{kTrueEtaVsEta, o2::framework::HistType::kTH2F, "hTrueEtaVsEta", "True pseudorapdity vs pseudorapdity; #eta_{True}; #eta"},
354359
{kTruePhiVsPhi, o2::framework::HistType::kTH2F, "hTruePhiVsPhi", "True azimuthal angle vs azimuthal angle; #varphi_{True}; #varphi"},
355-
{kNoMcParticle, o2::framework::HistType::kTHnSparseF, "hNoMcParticle", "Wrongly reconstructed particles; p_{T} (GeV/#it{c}); DCA_{xy} (cm); DCA_{z} (cm)"},
360+
{kNoMcParticle, o2::framework::HistType::kTHnSparseF, "hNoMcParticle", "Wrongly reconstructed particles; p_{T} (GeV/#it{c}); DCA_{xy} (cm); DCA_{z} (cm);"},
356361
{kPrimary, o2::framework::HistType::kTHnSparseF, "hPrimary", "Primary particles; p_{T} (GeV/#it{c}); DCA_{xy} (cm); DCA_{z} (cm)"},
357-
{kFromWrongCollision, o2::framework::HistType::kTHnSparseF, "hFromWrongCollision", "Particles associated to wrong collision; p_{T} (GeV/#it{c}); DCA_{xy} (cm); DCA_{z} (cm)"},
358-
{kFromMaterial, o2::framework::HistType::kTHnSparseF, "hFromMaterial", "Particles from material; p_{T} (GeV/#it{c}); DCA_{xy} (cm); DCA_{z} (cm)"},
359-
{kMissidentified, o2::framework::HistType::kTHnSparseF, "hMissidentified", "Missidentified particles (fake/wrong PDG code); p_{T} (GeV/#it{c}); DCA_{xy} (cm); DCA_{z} (cm)"},
360-
{kSecondary1, o2::framework::HistType::kTHnSparseF, "hFromSecondary1", "Particles from secondary decay; p_{T} (GeV/#it{c}); DCA_{xy} (cm); DCA_{z} (cm)"},
361-
{kSecondary2, o2::framework::HistType::kTHnSparseF, "hFromSecondary2", "Particles from seconary decay; p_{T} (GeV/#it{c}); DCA_{xy} (cm); DCA_{z} (cm)"},
362-
{kSecondary3, o2::framework::HistType::kTHnSparseF, "hFromSecondary3", "Particles from seconary decay; p_{T} (GeV/#it{c}); DCA_{xy} (cm); DCA_{z} (cm)"},
363-
{kSecondaryOther, o2::framework::HistType::kTHnSparseF, "hFromSecondaryOther", "Particles from every other seconary decay; p_{T} (GeV/#it{c}); DCA_{xy} (cm); DCA_{z} (cm)"},
362+
{kFromWrongCollision, o2::framework::HistType::kTHnSparseF, "hFromWrongCollision", "Particles associated to wrong collision; p_{T} (GeV/#it{c}); DCA_{xy} (cm); DCA_{z} (cm);"},
363+
{kFromMaterial, o2::framework::HistType::kTHnSparseF, "hFromMaterial", "Particles from material; p_{T} (GeV/#it{c}); DCA_{xy} (cm); DCA_{z} (cm);"},
364+
{kMissidentified, o2::framework::HistType::kTHnSparseF, "hMissidentified", "Missidentified particles (fake/wrong PDG code); p_{T} (GeV/#it{c}); DCA_{xy} (cm); DCA_{z} (cm);"},
365+
{kSecondary1, o2::framework::HistType::kTHnSparseF, "hFromSecondary1", "Particles from secondary decay; p_{T} (GeV/#it{c}); DCA_{xy} (cm); DCA_{z} (cm);"},
366+
{kSecondary2, o2::framework::HistType::kTHnSparseF, "hFromSecondary2", "Particles from seconary decay; p_{T} (GeV/#it{c}); DCA_{xy} (cm); DCA_{z} (cm);"},
367+
{kSecondary3, o2::framework::HistType::kTHnSparseF, "hFromSecondary3", "Particles from seconary decay; p_{T} (GeV/#it{c}); DCA_{xy} (cm); DCA_{z} (cm);"},
368+
{kSecondaryOther, o2::framework::HistType::kTHnSparseF, "hFromSecondaryOther", "Particles from every other seconary decay; p_{T} (GeV/#it{c}); DCA_{xy} (cm); DCA_{z} (cm);"},
364369
}};
365370

366371
#define TRACK_HIST_ANALYSIS_MAP(conf) \
@@ -394,6 +399,8 @@ constexpr std::array<histmanager::HistInfo<TrackHist>, kTrackHistLast>
394399
{kPtVsDcaxy, {confAnalysis.pt, confQa.dcaXy}}, \
395400
{kPtVsDcaz, {confAnalysis.pt, confQa.dcaZ}}, \
396401
{kPtVsDca, {confAnalysis.pt, confQa.dca}}, \
402+
{kPtVsDcaxyVsDcaz, {confAnalysis.pt, confQa.dcaXy, confQa.dcaZ}}, \
403+
{kPVsPTpc, {confQa.p, confQa.p}}, \
397404
{kItsSignal, {confQa.p, confQa.itsSignal}}, \
398405
{kItsElectron, {confQa.p, confQa.itsElectron}}, \
399406
{kItsPion, {confQa.p, confQa.itsPion}}, \
@@ -633,6 +640,8 @@ class TrackHistManager
633640
mPlotHeliumPid = ConfBinningQa.plotHeliumPid.value;
634641
mMomentumType = static_cast<modes::MomentumType>(ConfBinningQa.momentumType.value);
635642

643+
mPlotDcaCorrelation = ConfBinningQa.plotDcaCorrelation.value;
644+
636645
mPlotOrigins = ConfBinningQa.plotOrigins.value;
637646
mPlotNSecondaries = ConfBinningQa.pdgCodesForMothersOfSecondary.value.size();
638647

@@ -686,6 +695,11 @@ class TrackHistManager
686695
mHistogramRegistry->add(qaDir + getHistNameV2(kPtVsDcaxy, HistTable), getHistDesc(kPtVsDcaxy, HistTable), getHistType(kPtVsDcaxy, HistTable), {Specs.at(kPtVsDcaxy)});
687696
mHistogramRegistry->add(qaDir + getHistNameV2(kPtVsDcaz, HistTable), getHistDesc(kPtVsDcaz, HistTable), getHistType(kPtVsDcaz, HistTable), {Specs.at(kPtVsDcaz)});
688697
mHistogramRegistry->add(qaDir + getHistNameV2(kPtVsDca, HistTable), getHistDesc(kPtVsDca, HistTable), getHistType(kPtVsDca, HistTable), {Specs.at(kPtVsDca)});
698+
mHistogramRegistry->add(qaDir + getHistNameV2(kPVsPTpc, HistTable), getHistDesc(kPVsPTpc, HistTable), getHistType(kPVsPTpc, HistTable), {Specs.at(kPVsPTpc)});
699+
}
700+
701+
if (mPlotDcaCorrelation) {
702+
mHistogramRegistry->add(qaDir + getHistNameV2(kPtVsDcaxyVsDcaz, HistTable), getHistDesc(kPtVsDcaxyVsDcaz, HistTable), getHistType(kPtVsDcaxyVsDcaz, HistTable), {Specs.at(kPtVsDcaxyVsDcaz)});
689703
}
690704

691705
std::string pidDir = std::string(prefix) + std::string(PidDir);
@@ -835,6 +849,11 @@ class TrackHistManager
835849
mHistogramRegistry->fill(HIST(prefix) + HIST(QaDir) + HIST(getHistName(kPtVsDcaxy, HistTable)), mAbsCharge * track.pt(), track.dcaXY());
836850
mHistogramRegistry->fill(HIST(prefix) + HIST(QaDir) + HIST(getHistName(kPtVsDcaz, HistTable)), mAbsCharge * track.pt(), track.dcaZ());
837851
mHistogramRegistry->fill(HIST(prefix) + HIST(QaDir) + HIST(getHistName(kPtVsDca, HistTable)), mAbsCharge * track.pt(), track.dca());
852+
mHistogramRegistry->fill(HIST(prefix) + HIST(QaDir) + HIST(getHistName(kPVsPTpc, HistTable)), track.p(), track.tpcInnerParam());
853+
}
854+
855+
if (mPlotDcaCorrelation) {
856+
mHistogramRegistry->fill(HIST(prefix) + HIST(QaDir) + HIST(getHistName(kPtVsDcaxyVsDcaz, HistTable)), mAbsCharge * track.pt(), track.dcaXY(), track.dcaZ());
838857
}
839858

840859
float momentum = 0.f;
@@ -1013,6 +1032,7 @@ class TrackHistManager
10131032
bool mPlotDeuteronPid = false;
10141033
bool mPlotTritonPid = false;
10151034
bool mPlotHeliumPid = false;
1035+
bool mPlotDcaCorrelation = false;
10161036
bool mPlotOrigins = false;
10171037
int mPlotNSecondaries = 0;
10181038
std::array<int, MaxSecondary> mPdgCodesSecondaryMother = {0};

0 commit comments

Comments
 (0)