@@ -59,6 +59,10 @@ float VarManager::fgzMatching = -77.5;
5959float VarManager::fgxShiftFwd = 0.0 ;
6060float VarManager::fgyShiftFwd = 0.0 ;
6161float VarManager::fgzShiftFwd = 0.0 ;
62+ bool VarManager::fgUseTopBottomShift = false ;
63+ float VarManager::fgxShiftFwdBottom = 0.0 ;
64+ float VarManager::fgyShiftFwdBottom = 0.0 ;
65+ float VarManager::fgzShiftFwdBottom = 0.0 ;
6266float VarManager::fgValues[VarManager::kNVars ] = {0 .0f };
6367float VarManager::fgTPCInterSectorBoundary = 1.0 ; // cm
6468int VarManager::fgITSROFbias = 0 ;
@@ -147,7 +151,7 @@ void VarManager::ResetValues(int startValue, int endValue, float* values)
147151}
148152
149153// __________________________________________________________________
150- void VarManager::SetCollisionSystem (TString system, float energy)
154+ void VarManager::SetCollisionSystem (const TString& system, float energy)
151155{
152156 //
153157 // Set the collision system and the center of mass energy
@@ -200,8 +204,8 @@ void VarManager::SetCollisionSystem(TString system, float energy)
200204 // TO Do: add more systems
201205
202206 // set the beam 4-momentum vectors
203- float beamAEnergy = energy / 2.0 * sqrt (NumberOfProtonsA * NumberOfProtonsC / NumberOfProtonsC / NumberOfProtonsA); // GeV
204- float beamCEnergy = energy / 2.0 * sqrt (NumberOfProtonsC * NumberOfProtonsA / NumberOfProtonsA / NumberOfProtonsC); // GeV
207+ float beamAEnergy = energy / 2 .0f * std:: sqrt (static_cast < float >( NumberOfProtonsA) * NumberOfProtonsC / NumberOfProtonsC / NumberOfProtonsA); // GeV
208+ float beamCEnergy = energy / 2 .0f * std:: sqrt (static_cast < float >( NumberOfProtonsC) * NumberOfProtonsA / NumberOfProtonsA / NumberOfProtonsC); // GeV
205209 float beamAMomentum = std::sqrt (beamAEnergy * beamAEnergy - NumberOfNucleonsA * NumberOfNucleonsA * MassProton * MassProton);
206210 float beamCMomentum = std::sqrt (beamCEnergy * beamCEnergy - NumberOfNucleonsC * NumberOfNucleonsC * MassProton * MassProton);
207211 fgBeamA.SetPxPyPzE (0 , 0 , beamAMomentum, beamAEnergy);
@@ -243,7 +247,7 @@ void VarManager::FillTrackDerived(float* values)
243247}
244248
245249// __________________________________________________________________
246- float VarManager::calculateCosPA (KFParticle kfp, KFParticle PV )
250+ float VarManager::calculateCosPA (const KFParticle& kfp, const KFParticle& PV )
247251{
248252 return cpaFromKF (kfp, PV );
249253}
@@ -256,7 +260,8 @@ double VarManager::ComputePIDcalibration(int species, double nSigmaValue)
256260
257261 if (fgCalibrationType == 1 ) {
258262 // get the calibration histograms
259- CalibObjects calibMean, calibSigma;
263+ CalibObjects calibMean = kTPCElectronMean ;
264+ CalibObjects calibSigma = kTPCElectronSigma ;
260265 switch (species) {
261266 case 0 :
262267 calibMean = kTPCElectronMean ;
@@ -279,8 +284,8 @@ double VarManager::ComputePIDcalibration(int species, double nSigmaValue)
279284 return -999.0 ; // Return zero if species is invalid
280285 }
281286
282- TH3F * calibMeanHist = reinterpret_cast <TH3F *>(fgCalibs[calibMean]);
283- TH3F * calibSigmaHist = reinterpret_cast <TH3F *>(fgCalibs[calibSigma]);
287+ TH3F * calibMeanHist = dynamic_cast <TH3F *>(fgCalibs[calibMean]);
288+ TH3F * calibSigmaHist = dynamic_cast <TH3F *>(fgCalibs[calibSigma]);
284289 if (!calibMeanHist || !calibSigmaHist) {
285290 LOG (fatal) << " Calibration histograms not found for species: " << species;
286291 return -999.0 ; // Return zero if histograms are not found
@@ -302,7 +307,9 @@ double VarManager::ComputePIDcalibration(int species, double nSigmaValue)
302307 return (nSigmaValue - mean) / sigma; // Return the calibrated nSigma value
303308 } else if (fgCalibrationType == 2 ) {
304309 // get the calibration histograms
305- CalibObjects calibMean, calibSigma, calibStatus;
310+ CalibObjects calibMean = kTPCElectronMean ;
311+ CalibObjects calibSigma = kTPCElectronSigma ;
312+ CalibObjects calibStatus = kTPCElectronStatus ;
306313 switch (species) {
307314 case 0 :
308315 calibMean = kTPCElectronMean ;
@@ -329,9 +336,9 @@ double VarManager::ComputePIDcalibration(int species, double nSigmaValue)
329336 return -999.0 ; // Return zero if species is invalid
330337 }
331338
332- THnF* calibMeanHist = reinterpret_cast <THnF*>(fgCalibs[calibMean]);
333- THnF* calibSigmaHist = reinterpret_cast <THnF*>(fgCalibs[calibSigma]);
334- THnF* calibStatusHist = reinterpret_cast <THnF*>(fgCalibs[calibStatus]);
339+ THnF* calibMeanHist = dynamic_cast <THnF*>(fgCalibs[calibMean]);
340+ THnF* calibSigmaHist = dynamic_cast <THnF*>(fgCalibs[calibSigma]);
341+ THnF* calibStatusHist = dynamic_cast <THnF*>(fgCalibs[calibStatus]);
335342 if (!calibMeanHist || !calibSigmaHist || !calibStatusHist) {
336343 LOG (fatal) << " Calibration histograms not found for species: " << species;
337344 return -999.0 ; // Return zero if histograms are not found
@@ -351,17 +358,18 @@ double VarManager::ComputePIDcalibration(int species, double nSigmaValue)
351358 binTlong = (binTlong == 0 ? 1 : binTlong);
352359 binTlong = (binTlong > calibMeanHist->GetAxis (3 )->GetNbins () ? calibMeanHist->GetAxis (3 )->GetNbins () : binTlong);
353360
354- int bin[ 4 ] = {binEta, binNpv, binNlong, binTlong};
355- int status = static_cast <int >(calibStatusHist->GetBinContent (bin));
356- double mean = calibMeanHist->GetBinContent (bin);
357- double sigma = calibSigmaHist->GetBinContent (bin);
361+ std::array< int , 4 > bin {binEta, binNpv, binNlong, binTlong};
362+ int status = static_cast <int >(calibStatusHist->GetBinContent (bin. data () ));
363+ double mean = calibMeanHist->GetBinContent (bin. data () );
364+ double sigma = calibSigmaHist->GetBinContent (bin. data () );
358365 switch (status) {
359366 case 0 :
360367 // good calibration, return the calibrated nSigma value
361368 return (nSigmaValue - mean) / sigma;
362369 break ;
363370 case 1 :
364- // calibration not valid, return the original nSigma value
371+ case 4 :
372+ // calibration not valid or interpolation failed, return the original nSigma value
365373 return nSigmaValue;
366374 break ;
367375 case 2 : // calibration constant has poor stat uncertainty, consider the user option for what to do
@@ -374,10 +382,6 @@ double VarManager::ComputePIDcalibration(int species, double nSigmaValue)
374382 return nSigmaValue;
375383 }
376384 break ;
377- case 4 :
378- // calibration constants interpolation failed, return the original nSigma value
379- return nSigmaValue;
380- break ;
381385 default :
382386 return nSigmaValue; // unknown status, return the original nSigma value
383387 break ;
@@ -419,7 +423,7 @@ void VarManager::FillEfficiency(float* values)
419423 LOG (fatal) << " efficiency histogram not set" ;
420424 return ;
421425 }
422- TH3F * efficiencyHist = reinterpret_cast <TH3F *>(fgEfficiencyHist);
426+ TH3F * efficiencyHist = dynamic_cast <TH3F *>(fgEfficiencyHist);
423427 // Get the bin indices for the efficiency histogram
424428 int binPt = efficiencyHist->GetXaxis ()->FindBin (values[kPt ]);
425429 binPt = (binPt == 0 ? 1 : binPt);
@@ -439,7 +443,7 @@ void VarManager::FillEfficiency(float* values)
439443 LOG (fatal) << " efficiency histogram not set" ;
440444 return ;
441445 }
442- TH3F * efficiencyHist = reinterpret_cast <TH3F *>(fgEfficiencyHist);
446+ TH3F * efficiencyHist = dynamic_cast <TH3F *>(fgEfficiencyHist);
443447 // Get the bin indices for the efficiency histogram
444448 int binPt = efficiencyHist->GetXaxis ()->FindBin (values[kPt ]);
445449 binPt = (binPt == 0 ? 1 : binPt);
@@ -541,10 +545,9 @@ std::tuple<float, float, float, float, float> VarManager::BimodalityCoefficientU
541545 float mean = std::accumulate (data.begin (), data.end (), 0.0 ) / n;
542546
543547 float m2 = 0.0 , m3 = 0.0 , m4 = 0.0 ;
544- float diff, diff2;
545- for (float x : data) {
546- diff = x - mean;
547- diff2 = diff * diff;
548+ for (const float & x : data) {
549+ const float diff = x - mean;
550+ const float diff2 = diff * diff;
548551 m2 += diff2;
549552 m3 += diff2 * diff;
550553 m4 += diff2 * diff2;
@@ -581,7 +584,7 @@ std::tuple<float, float, float, float, float, int> VarManager::BimodalityCoeffic
581584 int nBins = static_cast <int >((max - min) / binWidth);
582585 std::vector<int > counts (nBins, 0.0 );
583586
584- for (float x : data) {
587+ for (const float & x : data) {
585588 if (x < min || x >= max) {
586589 continue ; // skip out-of-range values
587590 }
@@ -688,14 +691,13 @@ std::tuple<float, float, float, float, float, int> VarManager::BimodalityCoeffic
688691
689692 // then compute the second, third, and fourth central moments
690693 float m2 = 0.0 , m3 = 0.0 , m4 = 0.0 ;
691- float diff, diff2, binCenter;
692694 for (int i = 0 ; i < nBins; ++i) {
693695 if (counts[i] == 0 ) {
694696 continue ; // skip empty bins
695697 }
696- binCenter = min + (i + 0.5 ) * binWidth;
697- diff = binCenter - mean;
698- diff2 = diff * diff;
698+ const float binCenter = min + (i + 0 .5f ) * binWidth;
699+ const float diff = binCenter - mean;
700+ const float diff2 = diff * diff;
699701 m2 += counts[i] * diff2;
700702 m3 += counts[i] * diff2 * diff;
701703 m4 += counts[i] * diff2 * diff2;
0 commit comments