Skip to content

Commit 806f30a

Browse files
committed
[PWGLF] added custom nsigma calibration for He3
1 parent 6d8d857 commit 806f30a

File tree

1 file changed

+27
-1
lines changed

1 file changed

+27
-1
lines changed

PWGLF/Tasks/Nuspex/antinucleiInJets.cxx

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
#include "ReconstructionDataFormats/DCA.h"
4545
#include "ReconstructionDataFormats/PID.h"
4646
#include "ReconstructionDataFormats/Track.h"
47+
#include "DataFormatsTPC/BetheBlochAleph.h"
4748

4849
#include "TGrid.h"
4950
#include <TList.h>
@@ -138,7 +139,9 @@ struct AntinucleiInJets {
138139
Configurable<double> nSigmaItsMin{"nSigmaItsMin", -3.0, "nSigmaITS min"};
139140
Configurable<double> nSigmaItsMax{"nSigmaItsMax", +3.0, "nSigmaITS max"};
140141
Configurable<bool> setMCDefaultItsParams{"setMCDefaultItsParams", false, "set MC default parameters"};
141-
142+
Configurable<bool> cfgCompensatePIDinTracking{"cfgCompensatePIDinTracking", false, "If true, divide tpcInnerParam by the electric charge"};
143+
Configurable<std::array<double, 5>> cfgBetheBlochParams{"cfgBetheBlochParams", {0.6539, 1.591, 0.8225, 2.363, 0.09}, "TPC Bethe-Bloch parameterisation for He3"};
144+
142145
// CCDB manager service for accessing condition data
143146
Service<o2::ccdb::BasicCCDBManager> ccdb;
144147

@@ -246,6 +249,11 @@ struct AntinucleiInJets {
246249

247250
// nsigmaITS for antiproton candidates
248251
registryData.add("antiproton_nsigma_its_data", "antiproton_nsigma_its_data", HistType::kTH2F, {{nbins, min, max, "#it{p}_{T} (GeV/#it{c})"}, {400, -20.0, 20.0, "n#sigma_{ITS}"}});
252+
253+
// custom nsigma for He3 - needed for 24 pp data
254+
registryData.add("tpcsignal_data", "Specific energy loss", HistType::kTH2F, {{600, -6., 6., "#it{p} (GeV/#it{c})"}, {1400, 0, 1400, "d#it{E} / d#it{X} (a. u.)"}});
255+
registryData.add("antihelium3_jet_tpc_custom", "antihelium3_jet_tpc_custom", HistType::kTH2F, {{nbins, 3 * min, 3 * max, "#it{p}_{T} (GeV/#it{c})"}, {400, -20.0, 20.0, "n#sigma_{TPC} custom"}});
256+
registryData.add("antihelium3_ue_tpc_custom", "antihelium3_ue_tpc_custom", HistType::kTH2F, {{nbins, 3 * min, 3 * max, "#it{p}_{T} (GeV/#it{c})"}, {400, -20.0, 20.0, "n#sigma_{TPC} custom"}});
249257
}
250258

251259
// Generated antiproton spectra in jets and UE from MC truth
@@ -783,6 +791,12 @@ struct AntinucleiInJets {
783791
fastjet::PseudoJet fourMomentum(track.px(), track.py(), track.pz(), track.energy(MassPionCharged));
784792
fourMomentum.set_user_index(id);
785793
fjParticles.emplace_back(fourMomentum);
794+
795+
// Fill TPC signal vs p*sign for PID calibration
796+
bool heliumPID = track.pidForTracking() == o2::track::PID::Helium3;
797+
float correctedTpcInnerParam = (heliumPID && cfgCompensatePIDinTracking) ? track.tpcInnerParam() / 2 : track.tpcInnerParam();
798+
registryData.fill(HIST("tpcsignal_data"), correctedTpcInnerParam * track.sign(), track.tpcSignal());
799+
786800
}
787801

788802
// Reject empty events
@@ -893,6 +907,12 @@ struct AntinucleiInJets {
893907
}
894908
if (passedItsPidHel) {
895909
registryData.fill(HIST("antihelium3_jet_tpc"), 2.0 * pt, nsigmaTPCHe);
910+
//custom nsigma He3 based on bethe bloch fit of TPC signal
911+
double tpcSignal = track.tpcSignal();
912+
double expectedSignalHe3 = tpc::BetheBlochAleph(static_cast<double>(track.tpcInnerParam() * 2. / o2::constants::physics::MassHelium3), cfgBetheBlochParams.value[0], cfgBetheBlochParams.value[1], cfgBetheBlochParams.value[2], cfgBetheBlochParams.value[3], cfgBetheBlochParams.value[4]);
913+
double sigmaHe3 = expectedSignalHe3 * cfgBetheBlochParams.value[4];
914+
double nSigmaTPCHe3Custom = (tpcSignal - expectedSignalHe3) / sigmaHe3;
915+
registryData.fill(HIST("antihelium3_jet_tpc_custom"), 2.0 * pt, nSigmaTPCHe3Custom);
896916
}
897917
}
898918

@@ -983,6 +1003,12 @@ struct AntinucleiInJets {
9831003
}
9841004
if (passedItsPidHel) {
9851005
registryData.fill(HIST("antihelium3_ue_tpc"), 2.0 * pt, nsigmaTPCHe);
1006+
//custom nsigma He3 based on bethe bloch fit of TPC signal
1007+
double tpcSignal = track.tpcSignal();
1008+
double expectedSignalHe3 = tpc::BetheBlochAleph(static_cast<double>(track.tpcInnerParam() * 2. / o2::constants::physics::MassHelium3), cfgBetheBlochParams.value[0], cfgBetheBlochParams.value[1], cfgBetheBlochParams.value[2], cfgBetheBlochParams.value[3], cfgBetheBlochParams.value[4]);
1009+
double sigmaHe3 = expectedSignalHe3 * cfgBetheBlochParams.value[4];
1010+
double nSigmaTPCHe3Custom = (tpcSignal - expectedSignalHe3) / sigmaHe3;
1011+
registryData.fill(HIST("antihelium3_ue_tpc_custom"), 2.0 * pt, nSigmaTPCHe3Custom);
9861012
}
9871013
}
9881014

0 commit comments

Comments
 (0)