Skip to content

Commit c3ed238

Browse files
author
Ionut Cristian Arsene
committed
fix a few compilation errors
1 parent dbeda0c commit c3ed238

File tree

2 files changed

+145
-140
lines changed

2 files changed

+145
-140
lines changed

PWGDQ/Core/VarManager.cxx

Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,148 @@ float VarManager::calculateCosPA(KFParticle kfp, KFParticle PV)
211211
{
212212
return cpaFromKF(kfp, PV);
213213
}
214+
215+
//__________________________________________________________________
216+
double VarManager::ComputePIDcalibration(int species, double nSigmaValue) {
217+
// species: 0 - electron, 1 - pion, 2 - kaon, 3 - proton
218+
// Depending on the PID calibration type, we use different types of calibration histograms
219+
220+
if (fgCalibrationType == 1) {
221+
// get the calibration histograms
222+
CalibObjects calibMean, calibSigma;
223+
switch (species) {
224+
case 0:
225+
calibMean = kTPCElectronMean;
226+
calibSigma = kTPCElectronSigma;
227+
break;
228+
case 1:
229+
calibMean = kTPCPionMean;
230+
calibSigma = kTPCPionSigma;
231+
break;
232+
case 2:
233+
calibMean = kTPCKaonMean;
234+
calibSigma = kTPCKaonSigma;
235+
break;
236+
case 3:
237+
calibMean = kTPCProtonMean;
238+
calibSigma = kTPCProtonSigma;
239+
break;
240+
default:
241+
LOG(fatal) << "Invalid species for PID calibration: " << species;
242+
return -999.0; // Return zero if species is invalid
243+
};
244+
245+
TH3F* calibMeanHist = reinterpret_cast<TH3F*>(fgCalibs[calibMean]);
246+
TH3F* calibSigmaHist = reinterpret_cast<TH3F*>(fgCalibs[calibSigma]);
247+
if (!calibMeanHist || !calibSigmaHist) {
248+
LOG(fatal) << "Calibration histograms not found for species: " << species;
249+
return -999.0; // Return zero if histograms are not found
250+
}
251+
252+
// Get the bin indices for the calibration histograms
253+
int binTPCncls = calibMeanHist->GetXaxis()->FindBin(fgValues[kTPCncls]);
254+
binTPCncls = (binTPCncls == 0 ? 1 : binTPCncls);
255+
binTPCncls = (binTPCncls > calibMeanHist->GetXaxis()->GetNbins() ? calibMeanHist->GetXaxis()->GetNbins() : binTPCncls);
256+
int binPin = calibMeanHist->GetYaxis()->FindBin(fgValues[kPin]);
257+
binPin = (binPin == 0 ? 1 : binPin);
258+
binPin = (binPin > calibMeanHist->GetYaxis()->GetNbins() ? calibMeanHist->GetYaxis()->GetNbins() : binPin);
259+
int binEta = calibMeanHist->GetZaxis()->FindBin(fgValues[kEta]);
260+
binEta = (binEta == 0 ? 1 : binEta);
261+
binEta = (binEta > calibMeanHist->GetZaxis()->GetNbins() ? calibMeanHist->GetZaxis()->GetNbins() : binEta);
262+
263+
double mean = calibMeanHist->GetBinContent(binTPCncls, binPin, binEta);
264+
double sigma = calibSigmaHist->GetBinContent(binTPCncls, binPin, binEta);
265+
return (nSigmaValue - mean) / sigma; // Return the calibrated nSigma value
266+
}
267+
else if (fgCalibrationType == 2) {
268+
// get the calibration histograms
269+
CalibObjects calibMean, calibSigma, calibStatus;
270+
switch (species) {
271+
case 0:
272+
calibMean = kTPCElectronMean;
273+
calibSigma = kTPCElectronSigma;
274+
calibStatus = kTPCElectronStatus;
275+
break;
276+
case 1:
277+
calibMean = kTPCPionMean;
278+
calibSigma = kTPCPionSigma;
279+
calibStatus = kTPCPionStatus;
280+
break;
281+
case 2:
282+
calibMean = kTPCKaonMean;
283+
calibSigma = kTPCKaonSigma;
284+
calibStatus = kTPCKaonStatus;
285+
break;
286+
case 3:
287+
calibMean = kTPCProtonMean;
288+
calibSigma = kTPCProtonSigma;
289+
calibStatus = kTPCProtonStatus;
290+
break;
291+
default:
292+
LOG(fatal) << "Invalid species for PID calibration: " << species;
293+
return -999.0; // Return zero if species is invalid
294+
};
295+
296+
THnF* calibMeanHist = reinterpret_cast<THnF*>(fgCalibs[calibMean]);
297+
THnF* calibSigmaHist = reinterpret_cast<THnF*>(fgCalibs[calibSigma]);
298+
THnF* calibStatusHist = reinterpret_cast<THnF*>(fgCalibs[calibStatus]);
299+
if (!calibMeanHist || !calibSigmaHist || !calibStatusHist) {
300+
LOG(fatal) << "Calibration histograms not found for species: " << species;
301+
return -999.0; // Return zero if histograms are not found
302+
}
303+
304+
// Get the bin indices for the calibration histograms
305+
int binEta = calibMeanHist->GetAxis(0)->FindBin(fgValues[kEta]);
306+
binEta = (binEta == 0 ? 1 : binEta);
307+
binEta = (binEta > calibMeanHist->GetAxis(0)->GetNbins() ? calibMeanHist->GetAxis(0)->GetNbins() : binEta);
308+
int binNpv = calibMeanHist->GetAxis(1)->FindBin(fgValues[kVtxNcontribReal]);
309+
binNpv = (binNpv == 0 ? 1 : binNpv);
310+
binNpv = (binNpv > calibMeanHist->GetAxis(1)->GetNbins() ? calibMeanHist->GetAxis(1)->GetNbins() : binNpv);
311+
int binNlong = calibMeanHist->GetAxis(2)->FindBin(fgValues[kNTPCcontribLongA]);
312+
binNlong = (binNlong == 0 ? 1 : binNlong);
313+
binNlong = (binNlong > calibMeanHist->GetAxis(2)->GetNbins() ? calibMeanHist->GetAxis(2)->GetNbins() : binNlong);
314+
int binTlong = calibMeanHist->GetAxis(3)->FindBin(fgValues[kNTPCmedianTimeLongA]);
315+
binTlong = (binTlong == 0 ? 1 : binTlong);
316+
binTlong = (binTlong > calibMeanHist->GetAxis(3)->GetNbins() ? calibMeanHist->GetAxis(3)->GetNbins() : binTlong);
317+
318+
int bin[4] = {binEta, binNpv, binNlong, binTlong};
319+
int status = static_cast<int>(calibStatusHist->GetBinContent(bin));
320+
double mean = calibMeanHist->GetBinContent(bin);
321+
double sigma = calibSigmaHist->GetBinContent(bin);
322+
switch (status) {
323+
case 0:
324+
// good calibration, return the calibrated nSigma value
325+
return (nSigmaValue - mean) / sigma;
326+
break;
327+
case 1:
328+
// calibration not valid, return the original nSigma value
329+
return nSigmaValue;
330+
break;
331+
case 2: // calibration constant has poor stat uncertainty, consider the user option for what to do
332+
case 3:
333+
// calibration constants have been interpolated
334+
if (fgUseInterpolatedCalibration) {
335+
return (nSigmaValue - mean) / sigma;
336+
} else {
337+
// return the original nSigma value
338+
return nSigmaValue;
339+
}
340+
break;
341+
case 4:
342+
// calibration constants interpolation failed, return the original nSigma value
343+
return nSigmaValue;
344+
break;
345+
default:
346+
return nSigmaValue; // unknown status, return the original nSigma value
347+
break;
348+
};
349+
} else {
350+
// unknown calibration type, return the original nSigma value
351+
LOG(fatal) << "Unknown calibration type: " << fgCalibrationType;
352+
return nSigmaValue; // Return the original nSigma value
353+
}
354+
}
355+
214356
//__________________________________________________________________
215357
void VarManager::SetDefaultVarNames()
216358
{

PWGDQ/Core/VarManager.h

Lines changed: 3 additions & 140 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
#include "Math/VectorUtil.h"
5151
#include "TGeoGlobalMagField.h"
5252
#include "TH3F.h"
53+
#include "THn.h"
5354
#include "TRandom.h"
5455
#include <TObject.h>
5556
#include <TString.h>
@@ -1156,11 +1157,12 @@ class VarManager : public TObject
11561157
static void SetCalibrationType(int type, bool useInterpolation = true)
11571158
{
11581159
if (type < 0 || type > 2) {
1159-
LOG(fatal) << "Invalid calibration type. Must be 0, 1, or 2.");
1160+
LOG(fatal) << "Invalid calibration type. Must be 0, 1, or 2.";
11601161
}
11611162
fgCalibrationType = type;
11621163
fgUseInterpolatedCalibration = useInterpolation;
11631164
}
1165+
static double ComputePIDcalibration(int species, double nSigmaValue);
11641166

11651167
static TObject* GetCalibrationObject(CalibObjects calib)
11661168
{
@@ -1378,145 +1380,6 @@ o2::dataformats::GlobalFwdTrack VarManager::PropagateMuon(const T& muon, const C
13781380
return propmuon;
13791381
}
13801382

1381-
double VarManager::ComputePIDcalibration(int species, double nSigmaValue) {
1382-
// species: 0 - electron, 1 - pion, 2 - kaon, 3 - proton
1383-
// Depending on the PID calibration type, we use different types of calibration histograms
1384-
1385-
if (fgCalibrationType == 1) {
1386-
// get the calibration histograms
1387-
CalibObjects calibMean, calibSigma;
1388-
switch (species) {
1389-
case 0:
1390-
calibMean = kTPCElectronMean;
1391-
calibSigma = kTPCElectronSigma;
1392-
break;
1393-
case 1:
1394-
calibMean = kTPCPionMean;
1395-
calibSigma = kTPCPionSigma;
1396-
break;
1397-
case 2:
1398-
calibMean = kTPCKaonMean;
1399-
calibSigma = kTPCKaonSigma;
1400-
break;
1401-
case 3:
1402-
calibMean = kTPCProtonMean;
1403-
calibSigma = kTPCProtonSigma;
1404-
break;
1405-
default:
1406-
LOG(fatal) << "Invalid species for PID calibration: " << species;
1407-
return -999.0; // Return zero if species is invalid
1408-
};
1409-
1410-
TH3F* calibMeanHist = reinterpret_cast<TH3F*>(fgCalibs[calibMean]);
1411-
TH3F* calibSigmaHist = reinterpret_cast<TH3F*>(fgCalibs[calibSigma]);
1412-
if (!calibMeanHist || !calibSigmaHist) {
1413-
LOG(fatal) << "Calibration histograms not found for species: " << species;
1414-
return -999.0; // Return zero if histograms are not found
1415-
}
1416-
1417-
// Get the bin indices for the calibration histograms
1418-
int binTPCncls = calibMeanHist->GetXaxis()->FindBin(fgValues[kTPCncls]);
1419-
binTPCncls = (binTPCncls == 0 ? 1 : binTPCncls);
1420-
binTPCncls = (binTPCncls > calibMeanHist->GetXaxis()->GetNbins() ? calibMeanHist->GetXaxis()->GetNbins() : binTPCncls);
1421-
int binPin = calibMeanHist->GetYaxis()->FindBin(fgValues[kPin]);
1422-
binPin = (binPin == 0 ? 1 : binPin);
1423-
binPin = (binPin > calibMeanHist->GetYaxis()->GetNbins() ? calibMeanHist->GetYaxis()->GetNbins() : binPin);
1424-
int binEta = calibMeanHist->GetZaxis()->FindBin(fgValues[kEta]);
1425-
binEta = (binEta == 0 ? 1 : binEta);
1426-
binEta = (binEta > calibMeanHist->GetZaxis()->GetNbins() ? calibMeanHist->GetZaxis()->GetNbins() : binEta);
1427-
1428-
double mean = calibMeanHist->GetBinContent(binTPCncls, binPin, binEta);
1429-
double sigma = calibSigmaHist->GetBinContent(binTPCncls, binPin, binEta);
1430-
return (nSigmaValue - mean) / sigma; // Return the calibrated nSigma value
1431-
}
1432-
else if (fgCalibrationType == 2) {
1433-
// get the calibration histograms
1434-
CalibObjects calibMean, calibSigma, calibStatus;
1435-
switch (species) {
1436-
case 0:
1437-
calibMean = kTPCElectronMean;
1438-
calibSigma = kTPCElectronSigma;
1439-
calibStatus = kTPCElectronStatus;
1440-
break;
1441-
case 1:
1442-
calibMean = kTPCPionMean;
1443-
calibSigma = kTPCPionSigma;
1444-
calibStatus = kTPCPionStatus;
1445-
break;
1446-
case 2:
1447-
calibMean = kTPCKaonMean;
1448-
calibSigma = kTPCKaonSigma;
1449-
calibStatus = kTPCKaonStatus;
1450-
break;
1451-
case 3:
1452-
calibMean = kTPCProtonMean;
1453-
calibSigma = kTPCProtonSigma;
1454-
calibStatus = kTPCProtonStatus;
1455-
break;
1456-
default:
1457-
LOG(fatal) << "Invalid species for PID calibration: " << species;
1458-
return -999.0; // Return zero if species is invalid
1459-
};
1460-
1461-
THnF* calibMeanHist = reinterpret_cast<THnF*>(fgCalibs[calibMean]);
1462-
THnF* calibSigmaHist = reinterpret_cast<THnF*>(fgCalibs[calibSigma]);
1463-
THnF* calibStatusHist = reinterpret_cast<THnF*>(fgCalibs[calibStatus]);
1464-
if (!calibMeanHist || !calibSigmaHist || !calibStatusHist) {
1465-
LOG(fatal) << "Calibration histograms not found for species: " << species;
1466-
return -999.0; // Return zero if histograms are not found
1467-
}
1468-
1469-
// Get the bin indices for the calibration histograms
1470-
int binEta = calibMeanHist->GetAxis(0)->FindBin(fgValues[kEta]);
1471-
binEta = (binEta == 0 ? 1 : binEta);
1472-
binEta = (binEta > calibMeanHist->GetAxis(0)->GetNbins() ? calibMeanHist->GetAxis(0)->GetNbins() : binEta);
1473-
int binNpv = calibMeanHist->GetAxis(1)->FindBin(fgValues[kVtxNcontribReal]);
1474-
binNpv = (binNpv == 0 ? 1 : binNpv);
1475-
binNpv = (binNpv > calibMeanHist->GetAxis(1)->GetNbins() ? calibMeanHist->GetAxis(1)->GetNbins() : binNpv);
1476-
int binNlong = calibMeanHist->GetAxis(2)->FindBin(fgValues[kNTPCcontribLongA]);
1477-
binNlong = (binNlong == 0 ? 1 : binNlong);
1478-
binNlong = (binNlong > calibMeanHist->GetAxis(2)->GetNbins() ? calibMeanHist->GetAxis(2)->GetNbins() : binNlong);
1479-
int binTlong = calibMeanHist->GetAxis(3)->FindBin(fgValues[kNTPCmedianTimeLongA]);
1480-
binTlong = (binTlong == 0 ? 1 : binTlong);
1481-
binTlong = (binTlong > calibMeanHist->GetAxis(3)->GetNbins() ? calibMeanHist->GetAxis(3)->GetNbins() : binTlong);
1482-
1483-
int bin[4] = {binEta, binNpv, binNlong, binTlong};
1484-
int status = reinterpret_cast<int>(calibStatusHist->GetBinContent(bin));
1485-
double mean = calibMeanHist->GetBinContent(bin);
1486-
double sigma = calibSigmaHist->GetBinContent(bin);
1487-
switch (status) {
1488-
case 0:
1489-
// good calibration, return the calibrated nSigma value
1490-
return (nSigmaValue - mean) / sigma;
1491-
break;
1492-
case 1:
1493-
// calibration not valid, return the original nSigma value
1494-
return nSigmaValue;
1495-
break;
1496-
case 2: // calibration constant has poor stat uncertainty, consider the user option for what to do
1497-
case 3:
1498-
// calibration constants have been interpolated
1499-
if (fgUseInterpolatedCalibration) {
1500-
return (nSigmaValue - mean) / sigma;
1501-
} else {
1502-
// return the original nSigma value
1503-
return nSigmaValue;
1504-
}
1505-
break;
1506-
case 4:
1507-
// calibration constants interpolation failed, return the original nSigma value
1508-
return nSigmaValue;
1509-
break;
1510-
default:
1511-
return nSigmaValue; // unknown status, return the original nSigma value
1512-
break;
1513-
};
1514-
} else {
1515-
// unknown calibration type, return the original nSigma value
1516-
LOG(fatal) << "Unknown calibration type: " << fgCalibrationType;
1517-
return nSigmaValue; // Return the original nSigma value
1518-
}
1519-
}
15201383

15211384
template <uint32_t fillMap, typename T, typename C>
15221385
void VarManager::FillMuonPDca(const T& muon, const C& collision, float* values)

0 commit comments

Comments
 (0)