Skip to content
Open
Show file tree
Hide file tree
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
156 changes: 135 additions & 21 deletions PWGDQ/Core/VarManager.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@

#include <Math/Vector4D.h> // IWYU pragma: keep (do not replace with Math/Vector4Dfwd.h)
#include <Math/Vector4Dfwd.h>
#include <TH2.h>
#include <TH3.h>
#include <THn.h>
#include <TObject.h>
Expand Down Expand Up @@ -72,7 +73,7 @@
o2::globaltracking::MatchGlobalFwd VarManager::mMatching;
std::map<VarManager::CalibObjects, TObject*> VarManager::fgCalibs;
bool VarManager::fgRunTPCPostCalibration[4] = {false, false, false, false};
int VarManager::fgCalibrationType = 0; // 0 - no calibration, 1 - calibration vs (TPCncls,pIN,eta) typically for pp, 2 - calibration vs (eta,nPV,nLong,tLong) typically for PbPb
int VarManager::fgCalibrationType = 0; // 0 - no calibration, 1 - data calibration vs (TPCncls,pIN,eta), 2 - data calibration vs (eta,nPV,nLong,tLong), 3 - MC tuning vs (pIN,eta), 4 - MC tuning vs (pIN,eta,CentFT0C)
bool VarManager::fgUseInterpolatedCalibration = true; // use interpolated calibration histograms (default: true)

//__________________________________________________________________
Expand Down Expand Up @@ -191,8 +192,8 @@
// TO Do: add more systems

// set the beam 4-momentum vectors
float beamAEnergy = energy / 2.0 * sqrt(NumberOfProtonsA * NumberOfProtonsC / NumberOfProtonsC / NumberOfProtonsA); // GeV

Check failure on line 195 in PWGDQ/Core/VarManager.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[std-prefix]

Use std:: prefix for names from the std namespace.
float beamCEnergy = energy / 2.0 * sqrt(NumberOfProtonsC * NumberOfProtonsA / NumberOfProtonsA / NumberOfProtonsC); // GeV

Check failure on line 196 in PWGDQ/Core/VarManager.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[std-prefix]

Use std:: prefix for names from the std namespace.
float beamAMomentum = std::sqrt(beamAEnergy * beamAEnergy - NumberOfNucleonsA * NumberOfNucleonsA * MassProton * MassProton);
float beamCMomentum = std::sqrt(beamCEnergy * beamCEnergy - NumberOfNucleonsC * NumberOfNucleonsC * MassProton * MassProton);
fgBeamA.SetPxPyPzE(0, 0, beamAMomentum, beamAEnergy);
Expand Down Expand Up @@ -250,20 +251,20 @@
CalibObjects calibMean, calibSigma;
switch (species) {
case 0:
calibMean = kTPCElectronMean;
calibSigma = kTPCElectronSigma;
calibMean = kTPCElectronMeanData;
calibSigma = kTPCElectronSigmaData;
break;
case 1:
calibMean = kTPCPionMean;
calibSigma = kTPCPionSigma;
calibMean = kTPCPionMeanData;
calibSigma = kTPCPionSigmaData;
break;
case 2:
calibMean = kTPCKaonMean;
calibSigma = kTPCKaonSigma;
calibMean = kTPCKaonMeanData;
calibSigma = kTPCKaonSigmaData;
break;
case 3:
calibMean = kTPCProtonMean;
calibSigma = kTPCProtonSigma;
calibMean = kTPCProtonMeanData;
calibSigma = kTPCProtonSigmaData;
break;
default:
LOG(fatal) << "Invalid species for PID calibration: " << species;
Expand Down Expand Up @@ -291,29 +292,29 @@
double mean = calibMeanHist->GetBinContent(binTPCncls, binPin, binEta);
double sigma = calibSigmaHist->GetBinContent(binTPCncls, binPin, binEta);
return (nSigmaValue - mean) / sigma; // Return the calibrated nSigma value
} else if (fgCalibrationType == 2) {

Check failure on line 295 in PWGDQ/Core/VarManager.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[magic-number]

Avoid magic numbers in expressions. Assign the value to a clearly named variable or constant.
// get the calibration histograms
CalibObjects calibMean, calibSigma, calibStatus;
switch (species) {
case 0:
calibMean = kTPCElectronMean;
calibSigma = kTPCElectronSigma;
calibStatus = kTPCElectronStatus;
calibMean = kTPCElectronMeanData;
calibSigma = kTPCElectronSigmaData;
calibStatus = kTPCElectronStatusData;
break;
case 1:
calibMean = kTPCPionMean;
calibSigma = kTPCPionSigma;
calibStatus = kTPCPionStatus;
calibMean = kTPCPionMeanData;
calibSigma = kTPCPionSigmaData;
calibStatus = kTPCPionStatusData;
break;
case 2:
calibMean = kTPCKaonMean;
calibSigma = kTPCKaonSigma;
calibStatus = kTPCKaonStatus;
calibMean = kTPCKaonMeanData;
calibSigma = kTPCKaonSigmaData;
calibStatus = kTPCKaonStatusData;
break;
case 3:
calibMean = kTPCProtonMean;
calibSigma = kTPCProtonSigma;
calibStatus = kTPCProtonStatus;
calibMean = kTPCProtonMeanData;
calibSigma = kTPCProtonSigmaData;
calibStatus = kTPCProtonStatusData;
break;
default:
LOG(fatal) << "Invalid species for PID calibration: " << species;
Expand Down Expand Up @@ -373,6 +374,119 @@
return nSigmaValue; // unknown status, return the original nSigma value
break;
}
} else if (fgCalibrationType == 3) {

Check failure on line 377 in PWGDQ/Core/VarManager.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[magic-number]

Avoid magic numbers in expressions. Assign the value to a clearly named variable or constant.
CalibObjects calibMeanSim, calibSigmaSim, calibMeanData, calibSigmaData;
switch (species) {
case 0:
calibMeanSim = kTPCElectronMeanMC;
calibSigmaSim = kTPCElectronSigmaMC;
calibMeanData = kTPCElectronMeanData;
calibSigmaData = kTPCElectronSigmaData;
break;
Comment on lines +379 to +385
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These hard-coded case numbers are meaningless.

case 1:
calibMeanSim = kTPCPionMeanMC;
calibSigmaSim = kTPCPionSigmaMC;
calibMeanData = kTPCPionMeanData;
calibSigmaData = kTPCPionSigmaData;
break;
case 2:
calibMeanSim = kTPCKaonMeanMC;
calibSigmaSim = kTPCKaonSigmaMC;
calibMeanData = kTPCKaonMeanData;
calibSigmaData = kTPCKaonSigmaData;
break;
case 3:
calibMeanSim = kTPCProtonMeanMC;
calibSigmaSim = kTPCProtonSigmaMC;
calibMeanData = kTPCProtonMeanData;
calibSigmaData = kTPCProtonSigmaData;
break;
default:
LOG(fatal) << "Invalid species for PID calibration: " << species;
return -999.0;
}

TH2* calibMeanSimHist = reinterpret_cast<TH2*>(fgCalibs[calibMeanSim]);
TH2* calibSigmaSimHist = reinterpret_cast<TH2*>(fgCalibs[calibSigmaSim]);
TH2* calibMeanDataHist = reinterpret_cast<TH2*>(fgCalibs[calibMeanData]);
TH2* calibSigmaDataHist = reinterpret_cast<TH2*>(fgCalibs[calibSigmaData]);
if (!calibMeanSimHist || !calibSigmaSimHist || !calibMeanDataHist || !calibSigmaDataHist) {
LOG(fatal) << "MC tuning histograms not found for species: " << species;
return -999.0;
}

int binPin = calibMeanSimHist->GetXaxis()->FindBin(fgValues[kPin]);
binPin = (binPin == 0 ? 1 : binPin);
binPin = (binPin > calibMeanSimHist->GetXaxis()->GetNbins() ? calibMeanSimHist->GetXaxis()->GetNbins() : binPin);
int binEta = calibMeanSimHist->GetYaxis()->FindBin(fgValues[kEta]);
binEta = (binEta == 0 ? 1 : binEta);
binEta = (binEta > calibMeanSimHist->GetYaxis()->GetNbins() ? calibMeanSimHist->GetYaxis()->GetNbins() : binEta);

double meanSim = calibMeanSimHist->GetBinContent(binPin, binEta);
double sigmaSim = calibSigmaSimHist->GetBinContent(binPin, binEta);
double meanData = calibMeanDataHist->GetBinContent(binPin, binEta);
double sigmaData = calibSigmaDataHist->GetBinContent(binPin, binEta);
return (nSigmaValue - meanSim) * (sigmaSim / sigmaData) + meanData;
} else if (fgCalibrationType == 4) {

Check failure on line 430 in PWGDQ/Core/VarManager.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[magic-number]

Avoid magic numbers in expressions. Assign the value to a clearly named variable or constant.
CalibObjects calibMeanSim, calibSigmaSim, calibMeanData, calibSigmaData;
switch (species) {
case 0:
calibMeanSim = kTPCElectronMeanMC;
calibSigmaSim = kTPCElectronSigmaMC;
calibMeanData = kTPCElectronMeanData;
calibSigmaData = kTPCElectronSigmaData;
break;
case 1:
calibMeanSim = kTPCPionMeanMC;
calibSigmaSim = kTPCPionSigmaMC;
calibMeanData = kTPCPionMeanData;
calibSigmaData = kTPCPionSigmaData;
break;
case 2:
calibMeanSim = kTPCKaonMeanMC;
calibSigmaSim = kTPCKaonSigmaMC;
calibMeanData = kTPCKaonMeanData;
calibSigmaData = kTPCKaonSigmaData;
break;
case 3:
calibMeanSim = kTPCProtonMeanMC;
calibSigmaSim = kTPCProtonSigmaMC;
calibMeanData = kTPCProtonMeanData;
calibSigmaData = kTPCProtonSigmaData;
break;
default:
LOG(fatal) << "Invalid species for PID calibration: " << species;
return -999.0;
}

TH3F* calibMeanSimHist = reinterpret_cast<TH3F*>(fgCalibs[calibMeanSim]);
TH3F* calibSigmaSimHist = reinterpret_cast<TH3F*>(fgCalibs[calibSigmaSim]);
TH3F* calibMeanDataHist = reinterpret_cast<TH3F*>(fgCalibs[calibMeanData]);
TH3F* calibSigmaDataHist = reinterpret_cast<TH3F*>(fgCalibs[calibSigmaData]);
if (!calibMeanSimHist || !calibSigmaSimHist || !calibMeanDataHist || !calibSigmaDataHist) {
LOG(fatal) << "MC tuning histograms not found for species: " << species;
return -999.0;
}
if (fgValues[kCentFT0C] < -999.) {

Check failure on line 470 in PWGDQ/Core/VarManager.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[magic-number]

Avoid magic numbers in expressions. Assign the value to a clearly named variable or constant.
LOG(fatal) << "TPC MC tuning calibration type 4 requires event centrality in VarManager::fgValues[kCentFT0C].";
return -999.0;
}

int binPin = calibMeanSimHist->GetXaxis()->FindBin(fgValues[kPin]);
binPin = (binPin == 0 ? 1 : binPin);
binPin = (binPin > calibMeanSimHist->GetXaxis()->GetNbins() ? calibMeanSimHist->GetXaxis()->GetNbins() : binPin);
int binEta = calibMeanSimHist->GetYaxis()->FindBin(fgValues[kEta]);
binEta = (binEta == 0 ? 1 : binEta);
binEta = (binEta > calibMeanSimHist->GetYaxis()->GetNbins() ? calibMeanSimHist->GetYaxis()->GetNbins() : binEta);
int binCent = calibMeanSimHist->GetZaxis()->FindBin(fgValues[kCentFT0C]);
binCent = (binCent == 0 ? 1 : binCent);
binCent = (binCent > calibMeanSimHist->GetZaxis()->GetNbins() ? calibMeanSimHist->GetZaxis()->GetNbins() : binCent);

double meanSim = calibMeanSimHist->GetBinContent(binPin, binEta, binCent);
double sigmaSim = calibSigmaSimHist->GetBinContent(binPin, binEta, binCent);
double meanData = calibMeanDataHist->GetBinContent(binPin, binEta, binCent);
double sigmaData = calibSigmaDataHist->GetBinContent(binPin, binEta, binCent);
return (nSigmaValue - meanSim) * (sigmaSim / sigmaData) + meanData;
} else {
// unknown calibration type, return the original nSigma value
LOG(fatal) << "Unknown calibration type: " << fgCalibrationType;
Expand All @@ -386,14 +500,14 @@
// Bimodality coefficient = (skewness^2 + 1) / kurtosis
// return a tuple including the coefficient, mean, RMS, skewness, and kurtosis
size_t n = data.size();
if (n < 3) {

Check failure on line 503 in PWGDQ/Core/VarManager.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[magic-number]

Avoid magic numbers in expressions. Assign the value to a clearly named variable or constant.
return std::make_tuple(-1.0, -1.0, -1.0, -1.0, -1.0);
}
float mean = std::accumulate(data.begin(), data.end(), 0.0) / n;

float m2 = 0.0, m3 = 0.0, m4 = 0.0;
float diff, diff2;
for (float x : data) {

Check failure on line 510 in PWGDQ/Core/VarManager.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.
diff = x - mean;
diff2 = diff * diff;
m2 += diff2;
Expand Down Expand Up @@ -432,7 +546,7 @@
int nBins = static_cast<int>((max - min) / binWidth);
std::vector<int> counts(nBins, 0.0);

for (float x : data) {

Check failure on line 549 in PWGDQ/Core/VarManager.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.
if (x < min || x >= max) {
continue; // skip out-of-range values
}
Expand Down
83 changes: 57 additions & 26 deletions PWGDQ/Core/VarManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -1098,18 +1098,26 @@
}; // end of Variables enumeration

enum CalibObjects {
kTPCElectronMean = 0,
kTPCElectronSigma,
kTPCElectronStatus,
kTPCPionMean,
kTPCPionSigma,
kTPCPionStatus,
kTPCKaonMean,
kTPCKaonSigma,
kTPCKaonStatus,
kTPCProtonMean,
kTPCProtonSigma,
kTPCProtonStatus,
kTPCElectronMeanData = 0,
kTPCElectronSigmaData,
kTPCElectronStatusData,
kTPCElectronMeanMC,
kTPCElectronSigmaMC,
kTPCPionMeanData,
kTPCPionSigmaData,
kTPCPionStatusData,
kTPCPionMeanMC,
kTPCPionSigmaMC,
kTPCKaonMeanData,
kTPCKaonSigmaData,
kTPCKaonStatusData,
kTPCKaonMeanMC,
kTPCKaonSigmaMC,
kTPCProtonMeanData,
kTPCProtonSigmaData,
kTPCProtonStatusData,
kTPCProtonMeanMC,
kTPCProtonSigmaMC,
kNCalibObjects
};

Expand Down Expand Up @@ -1432,32 +1440,55 @@
template <typename M, typename T>
static void FillResolutions(M const& mcTrack, T const& track, float* values = nullptr);

static void SetCalibrationObject(CalibObjects calib, TObject* obj)
static bool HasCalibrationObject(CalibObjects calib)
{
fgCalibs[calib] = obj;
// Check whether all the needed objects for TPC postcalibration are available
if (fgCalibs.find(kTPCElectronMean) != fgCalibs.end() && fgCalibs.find(kTPCElectronSigma) != fgCalibs.end()) {
fgRunTPCPostCalibration[0] = true;
auto obj = fgCalibs.find(calib);
return (obj != fgCalibs.end() && obj->second != nullptr);
}

static void UpdateTPCPostCalibrationFlags()
{
bool isMCTuning = (fgCalibrationType == 3 || fgCalibrationType == 4);

bool hasElectronSimCalibration = HasCalibrationObject(kTPCElectronMeanMC) && HasCalibrationObject(kTPCElectronSigmaMC);
bool hasElectronDataCalibration = HasCalibrationObject(kTPCElectronMeanData) && HasCalibrationObject(kTPCElectronSigmaData);
fgRunTPCPostCalibration[0] = (isMCTuning ? (hasElectronSimCalibration && hasElectronDataCalibration) : hasElectronDataCalibration);
if (fgRunTPCPostCalibration[0]) {
fgUsedVars[kTPCnSigmaEl_Corr] = true;
}
if (fgCalibs.find(kTPCPionMean) != fgCalibs.end() && fgCalibs.find(kTPCPionSigma) != fgCalibs.end()) {
fgRunTPCPostCalibration[1] = true;

bool hasPionSimCalibration = HasCalibrationObject(kTPCPionMeanMC) && HasCalibrationObject(kTPCPionSigmaMC);
bool hasPionDataCalibration = HasCalibrationObject(kTPCPionMeanData) && HasCalibrationObject(kTPCPionSigmaData);
fgRunTPCPostCalibration[1] = (isMCTuning ? (hasPionSimCalibration && hasPionDataCalibration) : hasPionDataCalibration);
if (fgRunTPCPostCalibration[1]) {
fgUsedVars[kTPCnSigmaPi_Corr] = true;
}
if (fgCalibs.find(kTPCKaonMean) != fgCalibs.end() && fgCalibs.find(kTPCKaonSigma) != fgCalibs.end()) {
fgRunTPCPostCalibration[2] = true;

bool hasKaonSimCalibration = HasCalibrationObject(kTPCKaonMeanMC) && HasCalibrationObject(kTPCKaonSigmaMC);
bool hasKaonDataCalibration = HasCalibrationObject(kTPCKaonMeanData) && HasCalibrationObject(kTPCKaonSigmaData);
fgRunTPCPostCalibration[2] = (isMCTuning ? (hasKaonSimCalibration && hasKaonDataCalibration) : hasKaonDataCalibration);
if (fgRunTPCPostCalibration[2]) {
fgUsedVars[kTPCnSigmaKa_Corr] = true;
}
if (fgCalibs.find(kTPCProtonMean) != fgCalibs.end() && fgCalibs.find(kTPCProtonSigma) != fgCalibs.end()) {
fgRunTPCPostCalibration[3] = true;

bool hasProtonSimCalibration = HasCalibrationObject(kTPCProtonMeanMC) && HasCalibrationObject(kTPCProtonSigmaMC);
bool hasProtonDataCalibration = HasCalibrationObject(kTPCProtonMeanData) && HasCalibrationObject(kTPCProtonSigmaData);
fgRunTPCPostCalibration[3] = (isMCTuning ? (hasProtonSimCalibration && hasProtonDataCalibration) : hasProtonDataCalibration);
if (fgRunTPCPostCalibration[3]) {
fgUsedVars[kTPCnSigmaPr_Corr] = true;
}
}

static void SetCalibrationObject(CalibObjects calib, TObject* obj)
{
fgCalibs[calib] = obj;
UpdateTPCPostCalibrationFlags();
}

static void SetCalibrationType(int type, bool useInterpolation = true)
{
if (type < 0 || type > 2) {
LOG(fatal) << "Invalid calibration type. Must be 0, 1, or 2.";
if (type < 0 || type > 4) {
LOG(fatal) << "Invalid calibration type. Must be between 0 and 4.";
}
fgCalibrationType = type;
fgUseInterpolatedCalibration = useInterpolation;
Expand Down Expand Up @@ -1544,7 +1575,7 @@

static std::map<CalibObjects, TObject*> fgCalibs; // map of calibration histograms
static bool fgRunTPCPostCalibration[4]; // 0-electron, 1-pion, 2-kaon, 3-proton
static int fgCalibrationType; // 0 - no calibration, 1 - calibration vs (TPCncls,pIN,eta) typically for pp, 2 - calibration vs (eta,nPV,nLong,tLong) typically for PbPb
static int fgCalibrationType; // 0 - no calibration, 1 - data calibration vs (TPCncls,pIN,eta), 2 - data calibration vs (eta,nPV,nLong,tLong), 3 - MC tuning vs (pIN,eta), 4 - MC tuning vs (pIN,eta,CentFT0C)
static bool fgUseInterpolatedCalibration; // use interpolated calibration histograms (default: true)

VarManager& operator=(const VarManager& c);
Expand Down Expand Up @@ -1814,7 +1845,7 @@
}
if constexpr ((fillMap & MuonCov) > 0 || (fillMap & ReducedMuonCov) > 0) {
o2::dataformats::GlobalFwdTrack propmuon = PropagateMuon(muontrack, collision);
double px = propmuon.getP() * sin(M_PI / 2 - atan(mfttrack.tgl())) * cos(mfttrack.phi());

Check failure on line 1848 in PWGDQ/Core/VarManager.h

View workflow job for this annotation

GitHub Actions / O2 linter

[std-prefix]

Use std:: prefix for names from the std namespace.
double py = propmuon.getP() * sin(M_PI / 2 - atan(mfttrack.tgl())) * sin(mfttrack.phi());
double pz = propmuon.getP() * cos(M_PI / 2 - atan(mfttrack.tgl()));
double pt = std::sqrt(std::pow(px, 2) + std::pow(py, 2));
Expand Down
32 changes: 16 additions & 16 deletions PWGDQ/TableProducer/tableMaker.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -382,15 +382,15 @@ struct TableMaker {
if (fCurrentRun != bc.runNumber()) {
if (fConfigComputeTPCpostCalib) {
auto calibList = fCCDB->getForTimeStamp<TList>(useCCDBConfigurations.fConfigCcdbPathTPC.value, bc.timestamp());
VarManager::SetCalibrationObject(VarManager::kTPCElectronMean, calibList->FindObject("mean_map_electron"));
VarManager::SetCalibrationObject(VarManager::kTPCElectronSigma, calibList->FindObject("sigma_map_electron"));
VarManager::SetCalibrationObject(VarManager::kTPCPionMean, calibList->FindObject("mean_map_pion"));
VarManager::SetCalibrationObject(VarManager::kTPCPionSigma, calibList->FindObject("sigma_map_pion"));
VarManager::SetCalibrationObject(VarManager::kTPCProtonMean, calibList->FindObject("mean_map_proton"));
VarManager::SetCalibrationObject(VarManager::kTPCProtonSigma, calibList->FindObject("sigma_map_proton"));
VarManager::SetCalibrationObject(VarManager::kTPCElectronMeanData, calibList->FindObject("mean_map_electron"));
VarManager::SetCalibrationObject(VarManager::kTPCElectronSigmaData, calibList->FindObject("sigma_map_electron"));
VarManager::SetCalibrationObject(VarManager::kTPCPionMeanData, calibList->FindObject("mean_map_pion"));
VarManager::SetCalibrationObject(VarManager::kTPCPionSigmaData, calibList->FindObject("sigma_map_pion"));
VarManager::SetCalibrationObject(VarManager::kTPCProtonMeanData, calibList->FindObject("mean_map_proton"));
VarManager::SetCalibrationObject(VarManager::kTPCProtonSigmaData, calibList->FindObject("sigma_map_proton"));
if (fConfigComputeTPCpostCalibKaon) {
VarManager::SetCalibrationObject(VarManager::kTPCKaonMean, calibList->FindObject("mean_map_kaon"));
VarManager::SetCalibrationObject(VarManager::kTPCKaonSigma, calibList->FindObject("sigma_map_kaon"));
VarManager::SetCalibrationObject(VarManager::kTPCKaonMeanData, calibList->FindObject("mean_map_kaon"));
VarManager::SetCalibrationObject(VarManager::kTPCKaonSigmaData, calibList->FindObject("sigma_map_kaon"));
}
}
if (fIsRun2 == true) {
Expand Down Expand Up @@ -853,15 +853,15 @@ struct TableMaker {
if (fCurrentRun != bc.runNumber()) {
if (fConfigComputeTPCpostCalib) {
auto calibList = fCCDB->getForTimeStamp<TList>(useCCDBConfigurations.fConfigCcdbPathTPC.value, bc.timestamp());
VarManager::SetCalibrationObject(VarManager::kTPCElectronMean, calibList->FindObject("mean_map_electron"));
VarManager::SetCalibrationObject(VarManager::kTPCElectronSigma, calibList->FindObject("sigma_map_electron"));
VarManager::SetCalibrationObject(VarManager::kTPCPionMean, calibList->FindObject("mean_map_pion"));
VarManager::SetCalibrationObject(VarManager::kTPCPionSigma, calibList->FindObject("sigma_map_pion"));
VarManager::SetCalibrationObject(VarManager::kTPCProtonMean, calibList->FindObject("mean_map_proton"));
VarManager::SetCalibrationObject(VarManager::kTPCProtonSigma, calibList->FindObject("sigma_map_proton"));
VarManager::SetCalibrationObject(VarManager::kTPCElectronMeanData, calibList->FindObject("mean_map_electron"));
VarManager::SetCalibrationObject(VarManager::kTPCElectronSigmaData, calibList->FindObject("sigma_map_electron"));
VarManager::SetCalibrationObject(VarManager::kTPCPionMeanData, calibList->FindObject("mean_map_pion"));
VarManager::SetCalibrationObject(VarManager::kTPCPionSigmaData, calibList->FindObject("sigma_map_pion"));
VarManager::SetCalibrationObject(VarManager::kTPCProtonMeanData, calibList->FindObject("mean_map_proton"));
VarManager::SetCalibrationObject(VarManager::kTPCProtonSigmaData, calibList->FindObject("sigma_map_proton"));
if (fConfigComputeTPCpostCalibKaon) {
VarManager::SetCalibrationObject(VarManager::kTPCKaonMean, calibList->FindObject("mean_map_kaon"));
VarManager::SetCalibrationObject(VarManager::kTPCKaonSigma, calibList->FindObject("sigma_map_kaon"));
VarManager::SetCalibrationObject(VarManager::kTPCKaonMeanData, calibList->FindObject("mean_map_kaon"));
VarManager::SetCalibrationObject(VarManager::kTPCKaonSigmaData, calibList->FindObject("sigma_map_kaon"));
}
}
if (fIsRun2 == true) {
Expand Down
Loading
Loading