Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
116 changes: 96 additions & 20 deletions PWGUD/Tasks/upcPhotonuclearAnalysisJMG.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ namespace tree
DECLARE_SOA_COLUMN(GapSide, gapSide, float);
DECLARE_SOA_COLUMN(GapSideTimeZN, gapSideTimeZN, float);
DECLARE_SOA_COLUMN(Sbp, sbp, int);
DECLARE_SOA_COLUMN(ITSROFb, itsROFb, int);
DECLARE_SOA_COLUMN(ItsRofB, itsRofB, int);
DECLARE_SOA_COLUMN(VtxITSTPCCut, vtxITSTPCCut, int);
DECLARE_SOA_COLUMN(ZVtxFT0vsPvCut, zVtxFT0vsPvCut, int);
DECLARE_SOA_COLUMN(TimeZNA, timeZNA, float);
Expand All @@ -59,25 +59,38 @@ DECLARE_SOA_COLUMN(EnergyZNA, energyZNA, float);
DECLARE_SOA_COLUMN(EnergyZNC, energyZNC, float);
DECLARE_SOA_COLUMN(AmplitudeFV0A, amplitudeFV0A, float);
DECLARE_SOA_COLUMN(Occupancy, occupancy, float);
DECLARE_SOA_COLUMN(UPCMode, upcMode, float);
DECLARE_SOA_COLUMN(UpcMode, upcMode, float);
DECLARE_SOA_COLUMN(Pvz, pvz, float);
DECLARE_SOA_COLUMN(PtSideA, ptSideA, std::vector<float>);
DECLARE_SOA_COLUMN(RapSideA, rapSideA, std::vector<float>);
DECLARE_SOA_COLUMN(PSideA, pSideA, std::vector<float>);
DECLARE_SOA_COLUMN(ChargeSideA, chargeSideA, std::vector<float>);
DECLARE_SOA_COLUMN(PseudorapSideA, pseudorapSideA, std::vector<float>);
DECLARE_SOA_COLUMN(PhiSideA, phiSideA, std::vector<float>);
DECLARE_SOA_COLUMN(TpcSignalSideA, tpcSignalSideA, std::vector<float>);
DECLARE_SOA_COLUMN(TofSignalSideA, tofSignalSideA, std::vector<float>);
DECLARE_SOA_COLUMN(TpcNSigmaPiSideA, tpcNSigmaPiSideA, std::vector<float>);
DECLARE_SOA_COLUMN(TofNSigmaPiSideA, tofNSigmaPiSideA, std::vector<float>);
DECLARE_SOA_COLUMN(TpcNSigmaKaSideA, tpcNSigmaKaSideA, std::vector<float>);
DECLARE_SOA_COLUMN(TofNSigmaKaSideA, tofNSigmaKaSideA, std::vector<float>);
DECLARE_SOA_COLUMN(TpcNSigmaProSideA, tpcNSigmaProSideA, std::vector<float>);
DECLARE_SOA_COLUMN(TofNSigmaProSideA, tofNSigmaProSideA, std::vector<float>);
DECLARE_SOA_COLUMN(TofBetaSideA, tofBetaSideA, std::vector<float>);
DECLARE_SOA_COLUMN(TofBetaErrorSideA, tofBetaErrorSideA, std::vector<float>);
DECLARE_SOA_COLUMN(PtSideC, ptSideC, std::vector<float>);
DECLARE_SOA_COLUMN(RapSideC, rapSideC, std::vector<float>);
DECLARE_SOA_COLUMN(PSideC, pSideC, std::vector<float>);
DECLARE_SOA_COLUMN(ChargeSideC, chargeSideC, std::vector<float>);
DECLARE_SOA_COLUMN(PseudorapSideC, pseudorapSideC, std::vector<float>);
DECLARE_SOA_COLUMN(PhiSideC, phiSideC, std::vector<float>);
DECLARE_SOA_COLUMN(TpcSignalSideC, tpcSignalSideC, std::vector<float>);
DECLARE_SOA_COLUMN(TofSignalSideC, tofSignalSideC, std::vector<float>);
DECLARE_SOA_COLUMN(TpcNSigmaPiSideC, tpcNSigmaPiSideC, std::vector<float>);
DECLARE_SOA_COLUMN(TofNSigmaPiSideC, tofNSigmaPiSideC, std::vector<float>);
DECLARE_SOA_COLUMN(TpcNSigmaKaSideC, tpcNSigmaKaSideC, std::vector<float>);
DECLARE_SOA_COLUMN(TofNSigmaKaSideC, tofNSigmaKaSideC, std::vector<float>);
DECLARE_SOA_COLUMN(TpcNSigmaProSideC, tpcNSigmaProSideC, std::vector<float>);
DECLARE_SOA_COLUMN(TofNSigmaProSideC, tofNSigmaProSideC, std::vector<float>);
DECLARE_SOA_COLUMN(TofBetaSideC, tofBetaSideC, std::vector<float>);
DECLARE_SOA_COLUMN(TofBetaErrorSideC, tofBetaErrorSideC, std::vector<float>);
DECLARE_SOA_COLUMN(NchSideA, nchSideA, int);
DECLARE_SOA_COLUMN(MultiplicitySideA, multiplicitySideA, int);
DECLARE_SOA_COLUMN(NchSideC, nchSideC, int);
Expand All @@ -87,7 +100,7 @@ DECLARE_SOA_TABLE(TREE, "AOD", "Tree",
tree::GapSide,
tree::GapSideTimeZN,
tree::Sbp,
tree::ITSROFb,
tree::ItsRofB,
tree::VtxITSTPCCut,
tree::ZVtxFT0vsPvCut,
tree::TimeZNA,
Expand All @@ -96,33 +109,47 @@ DECLARE_SOA_TABLE(TREE, "AOD", "Tree",
tree::EnergyZNC,
tree::AmplitudeFV0A,
tree::Occupancy,
tree::UPCMode,
tree::UpcMode,
tree::Pvz,
tree::PtSideA,
tree::RapSideA,
tree::PSideA,
tree::ChargeSideA,
tree::PseudorapSideA,
tree::PhiSideA,
tree::TpcSignalSideA,
tree::TofSignalSideA,
tree::TpcNSigmaPiSideA,
tree::TofNSigmaPiSideA,
tree::TpcNSigmaKaSideA,
tree::TofNSigmaKaSideA,
tree::TpcNSigmaProSideA,
tree::TofNSigmaProSideA,
tree::TofBetaSideA,
tree::TofBetaErrorSideA,
tree::PtSideC,
tree::RapSideC,
tree::PSideC,
tree::ChargeSideC,
tree::PseudorapSideC,
tree::PhiSideC,
tree::TpcSignalSideC,
tree::TofSignalSideC,
tree::TpcNSigmaPiSideC,
tree::TofNSigmaPiSideC,
tree::TpcNSigmaKaSideC,
tree::TofNSigmaKaSideC,
tree::TpcNSigmaProSideC,
tree::TofNSigmaProSideC,
tree::TofBetaSideC,
tree::TofBetaErrorSideC,
tree::NchSideA,
tree::MultiplicitySideA,
tree::NchSideC,
tree::MultiplicitySideC);
} // namespace o2::aod

static constexpr float CFGPairCutDefaults[1][5] = {{-1, -1, -1, -1, -1}};
constexpr float kThreeHalfPi = 1.5f * PI;
constexpr float KThreeHalfPi = 1.5f * PI;
constexpr float KMaxInSigmaPID = 9.0f;

struct UpcPhotonuclearAnalysisJMG {

Expand Down Expand Up @@ -200,7 +227,7 @@ struct UpcPhotonuclearAnalysisJMG {
"Pair cuts on various particles"};
Configurable<float> cfgTwoTrackCut{"cfgTwoTrackCut", -1, {"Two track cut"}};
ConfigurableAxis axisVertex{"axisVertex", {20, -10, 10}, "vertex axis for histograms"};
ConfigurableAxis axisDeltaPhi{"axisDeltaPhi", {32, -PIHalf, kThreeHalfPi}, "delta phi axis for histograms"};
ConfigurableAxis axisDeltaPhi{"axisDeltaPhi", {32, -PIHalf, KThreeHalfPi}, "delta phi axis for histograms"};
ConfigurableAxis axisDeltaEta{"axisDeltaEta", {32, -1.6, 1.6}, "delta eta axis for histograms"};
ConfigurableAxis axisPtTrigger{"axisPtTrigger", {VARIABLE_WIDTH, 0.5, 1.0, 1.5, 2.0, 3.0, 4.0, 6.0, 10.0}, "pt trigger axis for histograms"};
ConfigurableAxis axisPtAssoc{"axisPtAssoc", {VARIABLE_WIDTH, 0.5, 1.0, 1.5, 2.0, 3.0, 4.0, 6.0}, "pt associated axis for histograms"};
Expand Down Expand Up @@ -286,6 +313,8 @@ struct UpcPhotonuclearAnalysisJMG {
histos.add("Tracks/SGsideA/hTrackPhi", "#it{#phi} distribution; #it{#phi}; counts", kTH1F, {axisPhi});
histos.add("Tracks/SGsideA/hTrackEta", "#it{#eta} distribution; #it{#eta}; counts", kTH1F, {axisEta});
histos.add("Tracks/SGsideA/hTrackTPCSignnalP", "#it{TPC dE/dx vs p}; #it{p*charge}; #it{TPC dE/dx}", kTH2F, {axisP, axisTPCSignal});
histos.add("Tracks/SGsideA/hTrackTPCSignnalPPiones", "#it{TPC dE/dx vs p}; #it{p*charge}; #it{TPC dE/dx}", kTH2F, {axisP, axisTPCSignal});
histos.add("Tracks/SGsideA/hTrackTPCSignnalPKaones", "#it{TPC dE/dx vs p}; #it{p*charge}; #it{TPC dE/dx}", kTH2F, {axisP, axisTPCSignal});
histos.add("Tracks/SGsideA/hTrackTOFSignnalP", "#it{TOF signal vs p}; #it{p*charge}; #it{TOF signal}", kTH2F, {axisP, axisTPCSignal});
histos.add("Tracks/SGsideA/hTrackITSNCls", "#it{N Clusters ITS} distribution; #it{N Clusters ITS}; counts", kTH1F, {axisNCls});
histos.add("Tracks/SGsideA/hTrackITSChi2NCls", "#it{N Clusters Chi2 ITS} distribution; #it{N Clusters Chi2 ITS}; counts", kTH1F, {axisChi2NCls});
Expand Down Expand Up @@ -318,6 +347,8 @@ struct UpcPhotonuclearAnalysisJMG {
histos.add("Tracks/SGsideC/hTrackPhi", "#it{#phi} distribution; #it{#phi}; counts", kTH1F, {axisPhi});
histos.add("Tracks/SGsideC/hTrackEta", "#it{#eta} distribution; #it{#eta}; counts", kTH1F, {axisEta});
histos.add("Tracks/SGsideC/hTrackTPCSignnalP", "#it{TPC dE/dx vs p}; #it{p*charge}; #it{TPC dE/dx}", kTH2F, {axisP, axisTPCSignal});
histos.add("Tracks/SGsideC/hTrackTPCSignnalPPiones", "#it{TPC dE/dx vs p}; #it{p*charge}; #it{TPC dE/dx}", kTH2F, {axisP, axisTPCSignal});
histos.add("Tracks/SGsideC/hTrackTPCSignnalPKaones", "#it{TPC dE/dx vs p}; #it{p*charge}; #it{TPC dE/dx}", kTH2F, {axisP, axisTPCSignal});
histos.add("Tracks/SGsideC/hTrackTOFSignnalP", "#it{TOF signal vs p}; #it{p*charge}; #it{TOF signal}", kTH2F, {axisP, axisTPCSignal});
histos.add("Tracks/SGsideC/hTrackITSNCls", "#it{N Clusters ITS} distribution; #it{N Clusters ITS}; counts", kTH1F, {axisNCls});
histos.add("Tracks/SGsideC/hTrackITSChi2NCls", "#it{N Clusters Chi2 ITS} distribution; #it{N Clusters Chi2 ITS}; counts", kTH1F, {axisChi2NCls});
Expand Down Expand Up @@ -627,8 +658,8 @@ struct UpcPhotonuclearAnalysisJMG {
int nchPVGapSideC = 0;
int nchGapSideA = 0;
int nchGapSideC = 0;
std::vector<float> vTrackPtSideA, vTrackEtaSideA, vTrackPhiSideA, vTrackTPCSignalSideA, vTrackTOFSignalSideA, vTrackTPCNSigmaPiSideA, vTrackTOFNSigmaPiSideA, vTrackTPCNSigmaKaSideA, vTrackTOFNSigmaKaSideA;
std::vector<float> vTrackPtSideC, vTrackEtaSideC, vTrackPhiSideC, vTrackTPCSignalSideC, vTrackTOFSignalSideC, vTrackTPCNSigmaPiSideC, vTrackTOFNSigmaPiSideC, vTrackTPCNSigmaKaSideC, vTrackTOFNSigmaKaSideC;
std::vector<float> vTrackPtSideA, vTrackPSideA, vTrackChargeSideA, vTrackEtaSideA, vTrackPhiSideA, vTrackTPCSignalSideA, vTrackTOFSignalSideA, vTrackTPCNSigmaPiSideA, vTrackTOFNSigmaPiSideA, vTrackTPCNSigmaKaSideA, vTrackTOFNSigmaKaSideA, vTrackTPCNSigmaProSideA, vTrackTOFNSigmaProSideA, vTrackTOFBetaSideA, vTrackTOFBetaErrorSideA;
std::vector<float> vTrackPtSideC, vTrackPSideC, vTrackChargeSideC, vTrackEtaSideC, vTrackPhiSideC, vTrackTPCSignalSideC, vTrackTOFSignalSideC, vTrackTPCNSigmaPiSideC, vTrackTOFNSigmaPiSideC, vTrackTPCNSigmaKaSideC, vTrackTOFNSigmaKaSideC, vTrackTPCNSigmaProSideC, vTrackTOFNSigmaProSideC, vTrackTOFBetaSideC, vTrackTOFBetaErrorSideC;

int nTracksChargedSideA(-222), nTracksChargedSideC(-222);
int multiplicitySideA(-222), multiplicitySideC(-222);
Expand Down Expand Up @@ -675,20 +706,36 @@ struct UpcPhotonuclearAnalysisJMG {
nTracksCharged++;
sumPt += track.pt();
float phiVal = RecoDecay::constrainAngle(phi(track.px(), track.py()), 0.f);
float pTotal = momentum(track.px(), track.py(), track.pz()) * track.sign();
float etaVal = eta(track.px(), track.py(), track.pz());
histos.fill(HIST("Tracks/SGsideA/hTrackPt"), track.pt());
histos.fill(HIST("Tracks/SGsideA/hTrackPhi"), phiVal);
histos.fill(HIST("Tracks/SGsideA/hTrackEta"), eta(track.px(), track.py(), track.pz()));
histos.fill(HIST("Tracks/SGsideA/hTrackTPCSignnalP"), momentum(track.px(), track.py(), track.pz()) * track.sign(), track.tpcSignal());
histos.fill(HIST("Tracks/SGsideA/hTrackTOFSignnalP"), momentum(track.px(), track.py(), track.pz()) * track.sign(), track.tofSignal());
histos.fill(HIST("Tracks/SGsideA/hTrackEta"), etaVal);
histos.fill(HIST("Tracks/SGsideA/hTrackTPCSignnalP"), pTotal, track.tpcSignal());
float nSigmaPi2 = track.tpcNSigmaPi() * track.tpcNSigmaPi() + track.tofNSigmaPi() * track.tofNSigmaPi();
float nSigmaKa2 = track.tpcNSigmaKa() * track.tpcNSigmaKa() + track.tofNSigmaKa() * track.tofNSigmaKa();
if (nSigmaPi2 < KMaxInSigmaPID && nSigmaKa2 > KMaxInSigmaPID) {
histos.fill(HIST("Tracks/SGsideA/hTrackTPCSignnalPPiones"), pTotal, track.tpcSignal());
}
if (nSigmaKa2 < KMaxInSigmaPID && nSigmaPi2 > KMaxInSigmaPID) {
histos.fill(HIST("Tracks/SGsideA/hTrackTPCSignnalPKaones"), pTotal, track.tpcSignal());
}
histos.fill(HIST("Tracks/SGsideA/hTrackTOFSignnalP"), pTotal, track.tofSignal());
vTrackPtSideA.push_back(track.pt());
vTrackEtaSideA.push_back(eta(track.px(), track.py(), track.pz()));
vTrackPSideA.push_back(pTotal);
vTrackChargeSideA.push_back(track.sign());
vTrackEtaSideA.push_back(etaVal);
vTrackPhiSideA.push_back(phiVal);
vTrackTPCSignalSideA.push_back(track.tpcSignal());
vTrackTOFSignalSideA.push_back(track.tofSignal());
vTrackTPCNSigmaPiSideA.push_back(track.tpcNSigmaPi());
vTrackTOFNSigmaPiSideA.push_back(track.tofNSigmaPi());
vTrackTPCNSigmaKaSideA.push_back(track.tpcNSigmaKa());
vTrackTOFNSigmaKaSideA.push_back(track.tofNSigmaKa());
vTrackTPCNSigmaProSideA.push_back(track.tpcNSigmaPr());
vTrackTOFNSigmaProSideA.push_back(track.tofNSigmaPr());
vTrackTOFBetaSideA.push_back(track.beta());
vTrackTOFBetaErrorSideA.push_back(track.betaerror());

histos.fill(HIST("Tracks/SGsideA/hTrackITSNCls"), track.itsNCls());
histos.fill(HIST("Tracks/SGsideA/hTrackITSChi2NCls"), track.itsChi2NCl());
Expand Down Expand Up @@ -735,20 +782,36 @@ struct UpcPhotonuclearAnalysisJMG {
nTracksCharged++;
sumPt += track.pt();
float phiVal = RecoDecay::constrainAngle(phi(track.px(), track.py()), 0.f);
float pTotal = momentum(track.px(), track.py(), track.pz()) * track.sign();
float etaVal = eta(track.px(), track.py(), track.pz());
histos.fill(HIST("Tracks/SGsideC/hTrackPt"), track.pt());
histos.fill(HIST("Tracks/SGsideC/hTrackPhi"), phiVal);
histos.fill(HIST("Tracks/SGsideC/hTrackEta"), eta(track.px(), track.py(), track.pz()));
histos.fill(HIST("Tracks/SGsideC/hTrackTPCSignnalP"), momentum(track.px(), track.py(), track.pz()) * track.sign(), track.tpcSignal());
histos.fill(HIST("Tracks/SGsideC/hTrackTOFSignnalP"), momentum(track.px(), track.py(), track.pz()) * track.sign(), track.tofSignal());
histos.fill(HIST("Tracks/SGsideC/hTrackEta"), etaVal);
histos.fill(HIST("Tracks/SGsideC/hTrackTPCSignnalP"), pTotal, track.tpcSignal());
float nSigmaPi2 = track.tpcNSigmaPi() * track.tpcNSigmaPi() + track.tofNSigmaPi() * track.tofNSigmaPi();
float nSigmaKa2 = track.tpcNSigmaKa() * track.tpcNSigmaKa() + track.tofNSigmaKa() * track.tofNSigmaKa();
if (nSigmaPi2 < KMaxInSigmaPID && nSigmaKa2 > KMaxInSigmaPID) {
histos.fill(HIST("Tracks/SGsideC/hTrackTPCSignnalPPiones"), pTotal, track.tpcSignal());
}
if (nSigmaKa2 < KMaxInSigmaPID && nSigmaPi2 > KMaxInSigmaPID) {
histos.fill(HIST("Tracks/SGsideC/hTrackTPCSignnalPKaones"), pTotal, track.tpcSignal());
}
histos.fill(HIST("Tracks/SGsideC/hTrackTOFSignnalP"), pTotal, track.tofSignal());
vTrackPtSideC.push_back(track.pt());
vTrackEtaSideC.push_back(eta(track.px(), track.py(), track.pz()));
vTrackPSideC.push_back(pTotal);
vTrackChargeSideC.push_back(track.sign());
vTrackEtaSideC.push_back(etaVal);
vTrackPhiSideC.push_back(phiVal);
vTrackTPCSignalSideC.push_back(track.tpcSignal());
vTrackTOFSignalSideC.push_back(track.tofSignal());
vTrackTPCNSigmaPiSideC.push_back(track.tpcNSigmaPi());
vTrackTOFNSigmaPiSideC.push_back(track.tofNSigmaPi());
vTrackTPCNSigmaKaSideC.push_back(track.tpcNSigmaKa());
vTrackTOFNSigmaKaSideC.push_back(track.tofNSigmaKa());
vTrackTPCNSigmaProSideC.push_back(track.tpcNSigmaPr());
vTrackTOFNSigmaProSideC.push_back(track.tofNSigmaPr());
vTrackTOFBetaSideC.push_back(track.beta());
vTrackTOFBetaErrorSideC.push_back(track.betaerror());

histos.fill(HIST("Tracks/SGsideC/hTrackITSNCls"), track.itsNCls());
histos.fill(HIST("Tracks/SGsideC/hTrackITSChi2NCls"), track.itsChi2NCl());
Expand Down Expand Up @@ -787,7 +850,10 @@ struct UpcPhotonuclearAnalysisJMG {
reconstructedCollision.totalFV0AmplitudeA(),
reconstructedCollision.occupancyInTime(),
reconstructedCollision.flags(),
reconstructedCollision.posZ(),
vTrackPtSideA,
vTrackPSideA,
vTrackChargeSideA,
vTrackEtaSideA,
vTrackPhiSideA,
vTrackTPCSignalSideA,
Expand All @@ -796,7 +862,13 @@ struct UpcPhotonuclearAnalysisJMG {
vTrackTOFNSigmaPiSideA,
vTrackTPCNSigmaKaSideA,
vTrackTOFNSigmaKaSideA,
vTrackTPCNSigmaProSideA,
vTrackTOFNSigmaProSideA,
vTrackTOFBetaSideA,
vTrackTOFBetaErrorSideA,
vTrackPtSideC,
vTrackPSideC,
vTrackChargeSideC,
vTrackEtaSideC,
vTrackPhiSideC,
vTrackTPCSignalSideA,
Expand All @@ -805,6 +877,10 @@ struct UpcPhotonuclearAnalysisJMG {
vTrackTOFNSigmaPiSideA,
vTrackTPCNSigmaKaSideA,
vTrackTOFNSigmaKaSideA,
vTrackTPCNSigmaProSideA,
vTrackTOFNSigmaProSideA,
vTrackTOFBetaSideA,
vTrackTOFBetaErrorSideA,
nTracksChargedSideA,
multiplicitySideA,
nTracksChargedSideC,
Expand Down
Loading