diff --git a/PWGDQ/Core/DQConstants.h b/PWGDQ/Core/DQConstants.h new file mode 100644 index 00000000000..0ec469a5bbe --- /dev/null +++ b/PWGDQ/Core/DQConstants.h @@ -0,0 +1,204 @@ +// Copyright 2019-2020 CERN and copyright holders of ALICE O2. +// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders. +// All rights not expressly granted are reserved. +// +// This software is distributed under the terms of the GNU General Public +// License v3 (GPL Version 3), copied verbatim in the file "COPYING". +// +// In applying this license CERN does not waive the privileges and immunities +// granted to it by virtue of its status as an Intergovernmental Organization +// or submit itself to any jurisdiction. +// +/// \author Alexander Tiekoetter , Muenster +/// \brief Header file for definition of constants in the DQ framework +/// \file DQConstants.h + +#ifndef PWGDQ_CORE_DQCONSTANTS_H_ +#define PWGDQ_CORE_DQCONSTANTS_H_ + +#include + +namespace o2::dqconstants +{ +// Numerical conventions +inline constexpr float InvalidValueF = -9999.f; +inline constexpr int InvalidValueI = -9999; +inline constexpr int InvalidIndex = -1; + +inline constexpr std::uint8_t Flag8 = 0u; +inline constexpr std::uint32_t Flag32 = 0u; +inline constexpr std::uint64_t Flag64 = 0ull; + +inline constexpr float EmptyVariable = 0.0f; + +inline constexpr double MillisecondsPerMinute = 60000.0; + +inline constexpr int TwoProng = 2; +inline constexpr int ThreeProng = 3; +inline constexpr int FourProng = 4; + +inline constexpr int TPCCalibTypeStart = 0; +inline constexpr int TPCCalibTypeEnd = 2; + +inline constexpr float InvalidDCA = 998.0f; +inline constexpr float InvalidStdDev = -1.0; + +// Checks +inline constexpr auto IsCoordinateInvalid = [](float value) constexpr -> bool { + return value < 0.f; +}; + +inline constexpr auto IsDCAInvalid = [](float value) constexpr -> bool { + return value > InvalidDCA; +}; + +inline constexpr auto IsStdDevValid = [](float value) constexpr -> bool { + return value < 0.f; +}; + +inline constexpr auto IsProcCodeInvalid = [](int procCode) constexpr -> bool { + return procCode == 0; +}; + +inline constexpr auto CheckCalibrationTypeInvalid = [](int type) constexpr -> bool { + return type < TPCCalibTypeStart || type > TPCCalibTypeEnd; +}; + +inline constexpr auto GetNumDegreesOfFreedom = [](int Ntrk) constexpr -> int { + return 2 * Ntrk - 3; +}; + +// Shared histogram class names +namespace histograms +{ +// Event histograms names +inline constexpr char EventBeforeCuts[] = "Event_BeforeCuts"; +inline constexpr char EventAfterCuts[] = "Event_AfterCuts"; +inline constexpr char EventMCTruth[] = "Event_MCTruth"; + +// Track histogram names +inline constexpr char TrackBarrelBeforeCuts[] = "TrackBarrel_BeforeCuts"; +inline constexpr char TrackBarrelAfterCuts[] = "TrackBarrel_"; + +inline constexpr char PairsBarrelSEPM[] = "PairsBarrelSEPM"; +inline constexpr char PairsBarrelSEPP[] = "PairsBarrelSEPP"; +inline constexpr char PairsBarrelSEMM[] = "PairsBarrelSEMM"; + +inline constexpr char PairsBarrelMEPM[] = "PairsBarrelMEPM"; +inline constexpr char PairsBarrelMEPP[] = "PairsBarrelMEPP"; +inline constexpr char PairsBarrelMEMM[] = "PairsBarrelMEMM"; + +// Muon histogram names +inline constexpr char MuonBeforeCuts[] = "Muons_BeforeCuts"; +inline constexpr char TrackMuonBeforeCuts[] = "TrackMuon_BeforeCuts"; +inline constexpr char TrackMuonAfterCuts[] = "TrackMuon_"; + +inline constexpr char PairsMuonSEPM[] = "PairsMuonSEPM"; +inline constexpr char PairsMuonSEPP[] = "PairsMuonSEPP"; +inline constexpr char PairsMuonSEMM[] = "PairsMuonSEMM"; + +inline constexpr char PairsMuonMEPM[] = "PairsMuonMEPM"; +inline constexpr char PairsMuonMEPP[] = "PairsMuonMEPP"; +inline constexpr char PairsMuonMEMM[] = "PairsMuonMEMM"; +} // namespace histograms + +namespace devices +{ +inline constexpr char EventSelection[] = "analysis-event-selection"; +inline constexpr char TrackSelection[] = "analysis-track-selection"; +inline constexpr char MuonSelection[] = "analysis-muon-selection"; +inline constexpr char PrefilterSelection[] = "analysis-prefilter-selection"; +inline constexpr char SameEventPairing[] = "analysis-same-event-pairing"; +inline constexpr char AsymmetricPairing[] = "analysis-asymmetric-pairing"; +inline constexpr char DileptonTrack[] = "analysis-dilepton-track"; +inline constexpr char DileptonTrackTrack[] = "analysis-dilepton-track-track"; +} // namespace devices + +// Defaults +namespace defaults +{ +// Event selection defaults +inline constexpr int EventTagStartBit = 56; +inline constexpr float MaxAbsVertexZCm = 10.f; +inline constexpr char DefaultRCTLabel[] = "CBT"; + +inline constexpr int NumDalitzSelections = 8; + +inline constexpr int NumTPCPostCalibrationTypes = 4; + +// Track defaults +inline constexpr int NumDCAPars = 2; +inline constexpr int IndexDCAxy = 0; +inline constexpr int IndexDCAz = 1; +inline constexpr double InitialDCA = 1e10; + +inline constexpr int RotationType1 = 1; +inline constexpr int RotationType2 = 2; +inline constexpr int RotationType3 = 3; + +inline constexpr int BdtSingleClassOutput = 1; +inline constexpr int BdtMultiClassOutput = 3; + +// Bimodality defaults +inline constexpr int BimodalMinDataSize = 3; +inline constexpr float BimodalityInvalidBinWidth = -1.0; +inline constexpr float BimodalityBinWidth = 0.005; + +inline constexpr float BimodalityDCAFrac001 = 0.01; +inline constexpr float BimodalityDCAFrac002 = 0.02; +inline constexpr float BimodalityDCAFrac005 = 0.05; +inline constexpr float BimodalityDCAFrac01 = 0.1; +inline constexpr float BimodalityDCAFrac02 = 0.2; +inline constexpr float BimodalityDCAFrac05 = 0.5; +inline constexpr float BimodalityDCAFrac1 = 1.00; + +// KFParticle defaults +inline constexpr int KFParticleMassConstrainedConstruction = 2; +inline constexpr int KFParticleLegacyConstructionMethod = 3; + +inline constexpr int TrkCovEntries = 21; +inline constexpr int NumTrkCovPars = 6; + +inline constexpr int TrkCovEntriesNoX = 15; +inline constexpr int NumTrkCovParsNoX = 5; + +inline constexpr int NumTrkComponents = 3; + +// Vertexing defaults +inline constexpr float InvalidVertexingError = 1.e8f; +inline constexpr float VertexingLxyzTolerance = 1.0e-8f; +inline constexpr float InitialShift = 0.0f; + +inline constexpr float GJMinMagnitude = 1.e-6f; + +// Detector defaults +inline constexpr int PostCalibElectron = 0; +inline constexpr int PostCalibPion = 1; +inline constexpr int PostCalibKaon = 2; +inline constexpr int PostCalibProton = 3; + +inline constexpr int TPCPIDCalibrationMeanSigma = 1; +inline constexpr int TPCPIDCalibrationMeanSigmaStatus = 2; + +inline constexpr int NumITSLayers = 7; + +inline constexpr int NumMFTLayers = 10; +inline constexpr float MuonAbsorberExitZ = -505.; // cm + +inline constexpr double InvalidZnEnergy = -1.e12; +inline constexpr int ZDCNeutronNTowers = 4; + +inline constexpr float CurvatureNormalizationFactor = 2.466; + +// Hadron defaults +inline constexpr float InitialHadronMass = 0.0f; + +// Lifetimes +inline constexpr float LifetimeBPlus = 1.638e-12f; // s +inline constexpr float LifetimeB0 = 1.517e-12f; // s + +} // namespace defaults + +} // namespace o2::dqconstants + +#endif // PWGDQ_CORE_DQCONSTANTS_H_ diff --git a/PWGDQ/Core/VarManager.cxx b/PWGDQ/Core/VarManager.cxx index 6e4820edba0..23814d939ac 100644 --- a/PWGDQ/Core/VarManager.cxx +++ b/PWGDQ/Core/VarManager.cxx @@ -8,9 +8,15 @@ // In applying this license CERN does not waive the privileges and immunities // granted to it by virtue of its status as an Intergovernmental Organization // or submit itself to any jurisdiction. +// +/// \author Ionut Cristian Arsene , Oslo +/// \brief Class to handle analysis variables +/// \file VarManager.cxx #include "PWGDQ/Core/VarManager.h" +#include "PWGDQ/Core/DQConstants.h" + #include "Common/Core/RecoDecay.h" #include "Tools/KFparticle/KFUtilities.h" @@ -146,7 +152,7 @@ void VarManager::ResetValues(int startValue, int endValue, float* values) if (!values) { values = fgValues; } - for (Int_t i = startValue; i < endValue; ++i) { + for (int i = startValue; i < endValue; ++i) { values[i] = -9999.; } } @@ -259,37 +265,37 @@ double VarManager::ComputePIDcalibration(int species, double nSigmaValue) // species: 0 - electron, 1 - pion, 2 - kaon, 3 - proton // Depending on the PID calibration type, we use different types of calibration histograms - if (fgCalibrationType == 1) { + if (fgCalibrationType == o2::dqconstants::defaults::TPCPIDCalibrationMeanSigma) { // get the calibration histograms CalibObjects calibMean = kTPCElectronMean; CalibObjects calibSigma = kTPCElectronSigma; switch (species) { - case 0: + case o2::dqconstants::defaults::PostCalibElectron: calibMean = kTPCElectronMean; calibSigma = kTPCElectronSigma; break; - case 1: + case o2::dqconstants::defaults::PostCalibPion: calibMean = kTPCPionMean; calibSigma = kTPCPionSigma; break; - case 2: + case o2::dqconstants::defaults::PostCalibKaon: calibMean = kTPCKaonMean; calibSigma = kTPCKaonSigma; break; - case 3: + case o2::dqconstants::defaults::PostCalibProton: calibMean = kTPCProtonMean; calibSigma = kTPCProtonSigma; break; default: LOG(fatal) << "Invalid species for PID calibration: " << species; - return -999.0; // Return zero if species is invalid + return o2::dqconstants::InvalidValueI; // Return zero if species is invalid } TH3F* calibMeanHist = dynamic_cast(fgCalibs[calibMean]); TH3F* calibSigmaHist = dynamic_cast(fgCalibs[calibSigma]); if (!calibMeanHist || !calibSigmaHist) { LOG(fatal) << "Calibration histograms not found for species: " << species; - return -999.0; // Return zero if histograms are not found + return o2::dqconstants::InvalidValueI; // Return zero if histograms are not found } // Get the bin indices for the calibration histograms @@ -306,35 +312,35 @@ double VarManager::ComputePIDcalibration(int species, double nSigmaValue) 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) { + } else if (fgCalibrationType == o2::dqconstants::defaults::TPCPIDCalibrationMeanSigmaStatus) { // get the calibration histograms CalibObjects calibMean = kTPCElectronMean; CalibObjects calibSigma = kTPCElectronSigma; CalibObjects calibStatus = kTPCElectronStatus; switch (species) { - case 0: + case o2::dqconstants::defaults::PostCalibElectron: calibMean = kTPCElectronMean; calibSigma = kTPCElectronSigma; calibStatus = kTPCElectronStatus; break; - case 1: + case o2::dqconstants::defaults::PostCalibPion: calibMean = kTPCPionMean; calibSigma = kTPCPionSigma; calibStatus = kTPCPionStatus; break; - case 2: + case o2::dqconstants::defaults::PostCalibKaon: calibMean = kTPCKaonMean; calibSigma = kTPCKaonSigma; calibStatus = kTPCKaonStatus; break; - case 3: + case o2::dqconstants::defaults::PostCalibProton: calibMean = kTPCProtonMean; calibSigma = kTPCProtonSigma; calibStatus = kTPCProtonStatus; break; default: LOG(fatal) << "Invalid species for PID calibration: " << species; - return -999.0; // Return zero if species is invalid + return o2::dqconstants::InvalidValueI; // Return zero if species is invalid } THnF* calibMeanHist = dynamic_cast(fgCalibs[calibMean]); @@ -342,7 +348,7 @@ double VarManager::ComputePIDcalibration(int species, double nSigmaValue) THnF* calibStatusHist = dynamic_cast(fgCalibs[calibStatus]); if (!calibMeanHist || !calibSigmaHist || !calibStatusHist) { LOG(fatal) << "Calibration histograms not found for species: " << species; - return -999.0; // Return zero if histograms are not found + return o2::dqconstants::InvalidValueI; // Return zero if histograms are not found } // Get the bin indices for the calibration histograms @@ -540,7 +546,7 @@ std::tuple VarManager::BimodalityCoefficientU // 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) { + if (n < o2::dqconstants::defaults::BimodalMinDataSize) { 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; @@ -725,7 +731,7 @@ void VarManager::SetDefaultVarNames() // // Set default variable names // - for (Int_t ivar = 0; ivar < kNVars; ++ivar) { + for (int ivar = 0; ivar < kNVars; ++ivar) { fgVariableNames[ivar] = "DEFAULT NOT DEFINED"; fgVariableUnits[ivar] = "n/a"; } diff --git a/PWGDQ/Core/VarManager.h b/PWGDQ/Core/VarManager.h index 7785e8c660d..6bf04abc2a9 100644 --- a/PWGDQ/Core/VarManager.h +++ b/PWGDQ/Core/VarManager.h @@ -9,22 +9,21 @@ // granted to it by virtue of its status as an Intergovernmental Organization // or submit itself to any jurisdiction. // -// Contact: iarsene@cern.ch, i.c.arsene@fys.uio.no -// -// Class to handle analysis variables -// +/// \author Ionut Cristian Arsene , Oslo +/// \brief Class to handle analysis variables +/// \file VarManager.h #ifndef PWGDQ_CORE_VARMANAGER_H_ #define PWGDQ_CORE_VARMANAGER_H_ #ifndef HomogeneousField -#define HomogeneousField +#define HomogeneousField // o2-linter: disable=name/macro (name coming from KFParticle, not us, needed for KFParticle::SetField) #endif +#include "PWGDQ/Core/DQConstants.h" +#include "PWGHF/Core/HfHelper.h" #include "PWGUD/Core/UDHelpers.h" #include "PWGUD/Core/UPCHelpers.h" -// -#include "PWGHF/Core/HfHelper.h" #include "Common/CCDB/EventSelectionParams.h" #include "Common/CCDB/TriggerAliases.h" @@ -62,9 +61,8 @@ #include #include // IWYU pragma: keep (do not replace with Math/Vector4Dfwd.h) #include -#include -#include #include +#include #include #include @@ -84,9 +82,11 @@ #include #include -using SMatrix55 = ROOT::Math::SMatrix>; -using SMatrix5 = ROOT::Math::SVector; -using Vec3D = ROOT::Math::SVector; +using SMatrix55 = ROOT::Math::SMatrix>; +using SMatrix5 = ROOT::Math::SVector; +using Vec3D = ROOT::Math::SVector; //_________________________________________________________________________ class VarManager : public TObject @@ -654,8 +654,8 @@ class VarManager : public TObject kTOFnSigmaKa, kTOFnSigmaPr, kTrackTimeResIsRange, // Gaussian or range (see Framework/DataTypes) - kPVContributor, // This track has contributed to the collision vertex fit (see Framework/DataTypes) - kOrphanTrack, // Track has no association with any collision vertex (see Framework/DataTypes) + kPVContributor, + kOrphanTrack, kIsAmbiguous, kIsLegFromGamma, kIsLegFromK0S, @@ -663,25 +663,25 @@ class VarManager : public TObject kIsLegFromAntiLambda, kIsLegFromOmega, kIsProtonFromLambdaAndAntiLambda, - kIsDalitzLeg, // Up to 8 dalitz selections - kBarrelNAssocsInBunch = kIsDalitzLeg + 8, // number of in bunch collision associations - kBarrelNAssocsOutOfBunch, // number of out of bunch collision associations - kEMCalEnergy, // EMCal cluster energy - kEMCalCoreEnergy, // EMCal cluster core energy - kEMCalRawEnergy, // EMCal cluster raw energy - kEMCalEta, // EMCal cluster pseudorapidity - kEMCalPhi, // EMCal cluster azimuthal angle - kEMCalM02, // EMCal shower shape long axis - kEMCalM20, // EMCal shower shape short axis - kEMCalNCells, // number of cells in the EMCal cluster - kEMCalTime, // EMCal cluster time - kEMCalIsExotic, // exotic EMCal cluster flag - kEMCalDistanceToBadChannel, // distance of the EMCal cluster to the closest bad channel - kEMCalNLM, // number of local maxima of the EMCal cluster - kEMCalDefinition, // EMCal cluster definition - kEMCalEoverP, // EMCal cluster energy over matched track momentum - kEMCalMatchDeltaEta, // eta residual of the matched EMCal cluster w.r.t. the track - kEMCalMatchDeltaPhi, // phi residual of the matched EMCal cluster w.r.t. the track + kIsDalitzLeg, + kBarrelNAssocsInBunch = kIsDalitzLeg + o2::dqconstants::defaults::NumDalitzSelections, + kBarrelNAssocsOutOfBunch, + kEMCalEnergy, + kEMCalCoreEnergy, + kEMCalRawEnergy, + kEMCalEta, + kEMCalPhi, + kEMCalM02, + kEMCalM20, + kEMCalNCells, + kEMCalTime, + kEMCalIsExotic, + kEMCalDistanceToBadChannel, + kEMCalNLM, // number of local maxima of the EMCal cluster + kEMCalDefinition, + kEMCalEoverP, + kEMCalMatchDeltaEta, // eta residual of the matched EMCal cluster w.r.t. the track + kEMCalMatchDeltaPhi, // phi residual of the matched EMCal cluster w.r.t. the track kNBarrelTrackVariables, // Muon track variables @@ -1355,7 +1355,7 @@ class VarManager : public TObject static void GetFwdShiftForY(float y, float& xShift, float& yShift, float& zShift) { - if (fgUseTopBottomShift && y < 0.f) { + if (fgUseTopBottomShift && o2::dqconstants::IsCoordinateInvalid(y)) { xShift = fgxShiftFwdBottom; yShift = fgyShiftFwdBottom; zShift = fgzShiftFwdBottom; @@ -1459,7 +1459,7 @@ class VarManager : public TObject static auto getEventPlane(int harm, float qnxa, float qnya) { // Compute event plane angle from qn vector components for the sub-event A - return (1.0 / harm) * TMath::ATan2(qnya, qnxa); + return (1.0 / harm) * std::atan2(qnya, qnxa); }; static float getDeltaPsiInRange(float psi1, float psi2, unsigned int harmonic) @@ -1503,7 +1503,7 @@ class VarManager : public TObject template static void FillPhoton(T const& track, float* values = nullptr); template - static void FillTrackEMCal(T const& cluster, float trackP = -1.0f, float deltaEta = -999.0f, float deltaPhi = -999.0f, float* values = nullptr); + static void FillTrackEMCal(T const& cluster, float trackP = o2::dqconstants::InvalidValueF, float deltaEta = o2::dqconstants::InvalidValueF, float deltaPhi = o2::dqconstants::InvalidValueF, float* values = nullptr); template static void FillTrackCollision(T const& track, C const& collision, float* values = nullptr); // Re-evaluation of the time compatibility of a (barrel track, collision) association, mirroring @@ -1525,7 +1525,7 @@ class VarManager : public TObject template static void FillTrackCollisionMC(T1 const& track, T2 const& MotherTrack, C const& collision, float* values = nullptr); template - static void FillTrackCollisionMC(T1 const& track, const std::array& collPos, float massHyp = -1., float* values = nullptr); + static void FillTrackCollisionMC(T1 const& track, const std::array& collPos, float massHyp = -1., float* values = nullptr); template static void FillTrackCollisionMatCorr(T const& track, C const& collision, M const& materialCorr, P const& propagator, float* values = nullptr); template @@ -1569,7 +1569,7 @@ class VarManager : public TObject template static void FillDileptonTrackVertexing(C const& collision, T1 const& lepton1, T1 const& lepton2, T1 const& track, float* values); template - static void FillDileptonHadron(T1 const& dilepton, T2 const& hadron, float* values = nullptr, float hadronMass = 0.0f); + static void FillDileptonHadron(T1 const& dilepton, T2 const& hadron, float* values = nullptr, float hadronMass = o2::dqconstants::defaults::InitialHadronMass); template static void FillEnergyCorrelatorTriple(C const& collision, T1 const& lepton1, T2 const& lepton2, T3 const& hadron, float* values = nullptr, float Translow = 1. / 3, float Transhigh = 2. / 3, bool applyFitMass = false, float sidebandMass = 0.0f, float weight = 1.0f); template @@ -1577,7 +1577,7 @@ class VarManager : public TObject template static void FillDileptonPhoton(T1 const& dilepton, T2 const& photon, float* values = nullptr); template - static void FillHadron(T const& hadron, float* values = nullptr, float hadronMass = 0.0f); + static void FillHadron(T const& hadron, float* values = nullptr, float hadronMass = o2::dqconstants::defaults::InitialHadronMass); template static void FillSingleDileptonCharmHadron(Cand const& candidate, T& bdtScoreCharmHad, float* values = nullptr); template @@ -1620,26 +1620,26 @@ class VarManager : public TObject fgCalibs[calib] = obj; // Check whether all the needed objects for TPC postcalibration are available if (fgCalibs.contains(kTPCElectronMean) && fgCalibs.contains(kTPCElectronSigma)) { - fgRunTPCPostCalibration[0] = true; + fgRunTPCPostCalibration[o2::dqconstants::defaults::PostCalibElectron] = true; fgUsedVars[kTPCnSigmaEl_Corr] = true; } if (fgCalibs.contains(kTPCPionMean) && fgCalibs.contains(kTPCPionSigma)) { - fgRunTPCPostCalibration[1] = true; + fgRunTPCPostCalibration[o2::dqconstants::defaults::PostCalibPion] = true; fgUsedVars[kTPCnSigmaPi_Corr] = true; } if (fgCalibs.contains(kTPCKaonMean) && fgCalibs.contains(kTPCKaonSigma)) { - fgRunTPCPostCalibration[2] = true; + fgRunTPCPostCalibration[o2::dqconstants::defaults::PostCalibKaon] = true; fgUsedVars[kTPCnSigmaKa_Corr] = true; } if (fgCalibs.contains(kTPCProtonMean) && fgCalibs.contains(kTPCProtonSigma)) { - fgRunTPCPostCalibration[3] = true; + fgRunTPCPostCalibration[o2::dqconstants::defaults::PostCalibProton] = true; fgUsedVars[kTPCnSigmaPr_Corr] = true; } } static void SetCalibrationType(int type, bool useInterpolation = true) { - if (type < 0 || type > 2) { + if (o2::dqconstants::CheckCalibrationTypeInvalid(type)) { LOG(fatal) << "Invalid calibration type. Must be 0, 1, or 2."; } fgCalibrationType = type; @@ -1726,17 +1726,17 @@ class VarManager : public TObject template static float LorentzTransformJpsihadroncosChi(const TString& Option, const T1& v1, const T2& v2); - static o2::vertexing::DCAFitterN<2> fgFitterTwoProngBarrel; - static o2::vertexing::DCAFitterN<3> fgFitterThreeProngBarrel; - static o2::vertexing::DCAFitterN<4> fgFitterFourProngBarrel; - static o2::vertexing::FwdDCAFitterN<2> fgFitterTwoProngFwd; - static o2::vertexing::FwdDCAFitterN<3> fgFitterThreeProngFwd; + static o2::vertexing::DCAFitterN fgFitterTwoProngBarrel; + static o2::vertexing::DCAFitterN fgFitterThreeProngBarrel; + static o2::vertexing::DCAFitterN fgFitterFourProngBarrel; + static o2::vertexing::FwdDCAFitterN fgFitterTwoProngFwd; + static o2::vertexing::FwdDCAFitterN fgFitterThreeProngFwd; static o2::globaltracking::MatchGlobalFwd mMatching; - static std::map fgCalibs; // map of calibration histograms - static std::array fgRunTPCPostCalibration; // 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 bool fgUseInterpolatedCalibration; // use interpolated calibration histograms (default: true) + static std::map fgCalibs; // map of calibration histograms + static std::array fgRunTPCPostCalibration; // 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 bool fgUseInterpolatedCalibration; // use interpolated calibration histograms (default: true) static int fgEfficiencyType; // type of efficiency correction to apply static TObject* fgEfficiencyHist; // histogram for efficiency correction @@ -1781,25 +1781,25 @@ auto VarManager::getRotatedCovMatrixXX(const T& matrix, U phi, V theta) template KFPTrack VarManager::createKFPTrackFromTrack(const T& track) { - std::array trackpars = {track.y(), track.z(), track.snp(), track.tgl(), track.signed1Pt()}; - std::array trackcovs = {track.cYY(), track.cZY(), track.cZZ(), track.cSnpY(), track.cSnpZ(), - track.cSnpSnp(), track.cTglY(), track.cTglZ(), track.cTglSnp(), track.cTglTgl(), - track.c1PtY(), track.c1PtZ(), track.c1PtSnp(), track.c1PtTgl(), track.c1Pt21Pt2()}; + std::array trackpars = {track.y(), track.z(), track.snp(), track.tgl(), track.signed1Pt()}; + std::array trackcovs = {track.cYY(), track.cZY(), track.cZZ(), track.cSnpY(), track.cSnpZ(), + track.cSnpSnp(), track.cTglY(), track.cTglZ(), track.cTglSnp(), track.cTglTgl(), + track.c1PtY(), track.c1PtZ(), track.c1PtSnp(), track.c1PtTgl(), track.c1Pt21Pt2()}; o2::track::TrackParametrizationWithError trackparCov{track.x(), track.alpha(), std::move(trackpars), std::move(trackcovs)}; - std::array trkpos_par{}; - std::array trkmom_par{}; - std::array trk_cov{}; + std::array trkpos_par{}; + std::array trkmom_par{}; + std::array trk_cov{}; trackparCov.getXYZGlo(trkpos_par); trackparCov.getPxPyPzGlo(trkmom_par); trackparCov.getCovXYZPxPyPzGlo(trk_cov); - std::array trkpar_KF = {trkpos_par[0], trkpos_par[1], trkpos_par[2], - trkmom_par[0], trkmom_par[1], trkmom_par[2]}; - std::array trkcov_KF = trk_cov; + std::array trkpar_KF = {trkpos_par[0], trkpos_par[1], trkpos_par[2], + trkmom_par[0], trkmom_par[1], trkmom_par[2]}; + std::array trkcov_KF = trk_cov; KFPTrack kfpTrack; kfpTrack.SetParameters(trkpar_KF.data()); kfpTrack.SetCovarianceMatrix(trkcov_KF.data()); kfpTrack.SetCharge(track.sign()); - kfpTrack.SetNDF(track.tpcNClsFound() - 5); + kfpTrack.SetNDF(track.tpcNClsFound() - o2::dqconstants::defaults::NumTrkCovParsNoX); kfpTrack.SetChi2(track.tpcChi2NCl() * track.tpcNClsFound()); return kfpTrack; } @@ -1809,16 +1809,16 @@ KFPTrack VarManager::createKFPFwdTrackFromFwdTrack(const T& muon) { o2::track::TrackParCovFwd trackparCov = FwdToTrackPar(muon, muon); - std::array trk_cov{}; + std::array trk_cov{}; trackparCov.getCovXYZPxPyPzGlo(trk_cov); - std::array trkpar_KF = {trackparCov.getX(), trackparCov.getY(), trackparCov.getZ(), - trackparCov.getPx(), trackparCov.getPy(), trackparCov.getPz()}; - std::array trkcov_KF = trk_cov; + std::array trkpar_KF = {trackparCov.getX(), trackparCov.getY(), trackparCov.getZ(), + trackparCov.getPx(), trackparCov.getPy(), trackparCov.getPz()}; + std::array trkcov_KF = trk_cov; KFPTrack kfpTrack; kfpTrack.SetParameters(trkpar_KF.data()); kfpTrack.SetCovarianceMatrix(trkcov_KF.data()); kfpTrack.SetCharge(muon.sign()); - kfpTrack.SetNDF(muon.nClusters() - 5); + kfpTrack.SetNDF(muon.nClusters() - o2::dqconstants::defaults::NumTrkCovParsNoX); kfpTrack.SetChi2(muon.chi2()); return kfpTrack; } @@ -1830,7 +1830,7 @@ KFPVertex VarManager::createKFPVertexFromCollision(const T& collision) kfpVertex.SetXYZ(collision.posX(), collision.posY(), collision.posZ()); kfpVertex.SetCovarianceMatrix(collision.covXX(), collision.covXY(), collision.covYY(), collision.covXZ(), collision.covYZ(), collision.covZZ()); kfpVertex.SetChi2(collision.chi2()); - kfpVertex.SetNDF(2 * collision.numContrib() - 3); + kfpVertex.SetNDF(o2::dqconstants::GetNumDegreesOfFreedom(collision.numContrib())); kfpVertex.SetNContributors(collision.numContrib()); return kfpVertex; } @@ -1840,10 +1840,10 @@ o2::dataformats::VertexBase VarManager::RecalculatePrimaryVertex(T const& track0 { KFParticle trk0KF; KFPTrack kfpTrack0 = createKFPTrackFromTrack(track0); - trk0KF = KFParticle(kfpTrack0, -11 * track0.sign()); + trk0KF = KFParticle(kfpTrack0, PDG_t::kPositron * track0.sign()); KFParticle trk1KF; KFPTrack kfpTrack1 = createKFPTrackFromTrack(track1); - trk1KF = KFParticle(kfpTrack1, -11 * track1.sign()); + trk1KF = KFParticle(kfpTrack1, PDG_t::kPositron * track1.sign()); KFParticle kVtx; kVtx.Initialize(); @@ -1857,18 +1857,17 @@ o2::dataformats::VertexBase VarManager::RecalculatePrimaryVertex(T const& track0 kVtx.Covariance(4) = collision.covYZ(); kVtx.Covariance(5) = collision.covZZ(); kVtx.Chi2() = collision.chi2(); // FIX THIS! to be added in AliReducedEventInfo - kVtx.NDF() = 2 * collision.multNTracksPV() - 3; - // KFVertex kfpVertex(kVtx); // kfpVertex.Initialize(); + kVtx.NDF() = o2::dqconstants::GetNumDegreesOfFreedom(collision.multNTracksPV()); if ((track0.flags() & o2::aod::track::PVContributor) > 0) { - trk0KF.SubtractFromVertex(kVtx); /*printf("track1 -> subtracting \n");*/ + trk0KF.SubtractFromVertex(kVtx); } if ((track1.flags() & o2::aod::track::PVContributor) > 0) { - trk1KF.SubtractFromVertex(kVtx); /*printf("track2 -> subtracting \n");*/ + trk1KF.SubtractFromVertex(kVtx); } o2::math_utils::Point3D vtxXYZ(kVtx.Parameter(0), kVtx.Parameter(1), kVtx.Parameter(2)); - std::array vtxCov{kVtx.Covariance(0), kVtx.Covariance(1), kVtx.Covariance(2), kVtx.Covariance(3), kVtx.Covariance(4), kVtx.Covariance(5)}; + std::array vtxCov{kVtx.Covariance(0), kVtx.Covariance(1), kVtx.Covariance(2), kVtx.Covariance(3), kVtx.Covariance(4), kVtx.Covariance(5)}; o2::dataformats::VertexBase primaryVertexRec = {vtxXYZ, vtxCov}; return primaryVertexRec; } @@ -1876,13 +1875,13 @@ o2::dataformats::VertexBase VarManager::RecalculatePrimaryVertex(T const& track0 template o2::dataformats::GlobalFwdTrack VarManager::PropagateMuon(const T& muon, const C& collision, const int endPoint) { - float xShift = 0.f; - float yShift = 0.f; - float zShift = 0.f; + float xShift = o2::dqconstants::defaults::InitialShift; + float yShift = o2::dqconstants::defaults::InitialShift; + float zShift = o2::dqconstants::defaults::InitialShift; GetFwdShiftForY(muon.y(), xShift, yShift, zShift); o2::track::TrackParCovFwd fwdtrack = o2::aod::fwdtrackutils::getTrackParCovFwd3DShift(muon, xShift, yShift, zShift, muon); o2::dataformats::GlobalFwdTrack propmuon; - if (static_cast(muon.trackType()) > 2) { + if (static_cast(muon.trackType()) > o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalForwardTrack) { auto mchTrack = mMatching.FwdtoMCH(fwdtrack); if (endPoint == kToVertex) { @@ -1892,7 +1891,7 @@ o2::dataformats::GlobalFwdTrack VarManager::PropagateMuon(const T& muon, const C o2::mch::TrackExtrap::extrapToVertexWithoutBranson(mchTrack, collision.posZ()); } if (endPoint == kToRabs) { - o2::mch::TrackExtrap::extrapToZ(mchTrack, -505.); + o2::mch::TrackExtrap::extrapToZ(mchTrack, o2::dqconstants::defaults::MuonAbsorberExitZ); } if (endPoint == kToMatching) { o2::mch::TrackExtrap::extrapToVertexWithoutBranson(mchTrack, fgzMatching); @@ -1900,8 +1899,8 @@ o2::dataformats::GlobalFwdTrack VarManager::PropagateMuon(const T& muon, const C propmuon = mMatching.MCHtoFwd(mchTrack); - } else if (static_cast(muon.trackType()) < 2) { - std::array dcaInfOrig{999.f, 999.f, 999.f}; + } else if (static_cast(muon.trackType()) < o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalForwardTrack) { + std::array dcaInfOrig{o2::dqconstants::InvalidValueF, o2::dqconstants::InvalidValueF, o2::dqconstants::InvalidValueF}; fwdtrack.propagateToDCAhelix(fgMagField, {collision.posX(), collision.posY(), collision.posZ()}, dcaInfOrig); propmuon = fwdtrack; } @@ -1965,9 +1964,9 @@ void VarManager::FillGlobalMuonRefit(T1 const& muontrack, T2 const& mfttrack, co values = static_cast(fgValues); } if constexpr ((fillMap & MuonCov) > 0 || (fillMap & ReducedMuonCov) > 0) { - float xShift = 0.f; - float yShift = 0.f; - float zShift = 0.f; + float xShift = o2::dqconstants::defaults::InitialShift; + float yShift = o2::dqconstants::defaults::InitialShift; + float zShift = o2::dqconstants::defaults::InitialShift; GetFwdShiftForY(mfttrack.y(), xShift, yShift, zShift); o2::dataformats::GlobalFwdTrack propmuon = PropagateMuon(muontrack, collision, kToVertex); double px = propmuon.getP() * std::sin(o2::constants::math::PIHalf - std::atan(mfttrack.tgl())) * std::cos(mfttrack.phi()); @@ -1986,10 +1985,10 @@ void VarManager::FillGlobalMuonRefit(T1 const& muontrack, T2 const& mfttrack, co values[kPhi] = mftprop.getPhi(); // Helix DCA of the refitted global track w.r.t. the associated collision - std::array dca{999., 999., 999.}; + std::array dca{o2::dqconstants::InvalidValueF, o2::dqconstants::InvalidValueF, o2::dqconstants::InvalidValueF}; mftprop.propagateToDCAhelix(fgMagField, {collision.posX(), collision.posY(), collision.posZ()}, dca); - values[kMuonDCAx] = static_cast(dca[0]); - values[kMuonDCAy] = static_cast(dca[1]); + values[kMuonDCAx] = static_cast(dca[o2::dqconstants::defaults::IndexDCAxy]); + values[kMuonDCAy] = static_cast(dca[o2::dqconstants::defaults::IndexDCAz]); } } @@ -2001,9 +2000,9 @@ void VarManager::FillGlobalMuonRefitCov(T1 const& muontrack, T2 const& mfttrack, } if constexpr ((MuonfillMap & MuonCov) > 0) { if constexpr ((MFTfillMap & MFTCov) > 0) { - float xShift = 0.f; - float yShift = 0.f; - float zShift = 0.f; + float xShift = o2::dqconstants::defaults::InitialShift; + float yShift = o2::dqconstants::defaults::InitialShift; + float zShift = o2::dqconstants::defaults::InitialShift; GetFwdShiftForY(mfttrack.y(), xShift, yShift, zShift); o2::dataformats::GlobalFwdTrack propmuon = PropagateMuon(muontrack, collision, kToVertex); auto mft = o2::aod::fwdtrackutils::getTrackParCovFwd3DShift(mfttrack, xShift, yShift, zShift, mftcov); @@ -2019,10 +2018,10 @@ void VarManager::FillGlobalMuonRefitCov(T1 const& muontrack, T2 const& mfttrack, values[kPhi] = globalRefit.getPhi(); // Helix DCA of the covariance-refitted global track w.r.t. the associated collision - std::array dca{999., 999., 999.}; + std::array dca{o2::dqconstants::InvalidValueF, o2::dqconstants::InvalidValueF, o2::dqconstants::InvalidValueF}; globalRefit.propagateToDCAhelix(fgMagField, {collision.posX(), collision.posY(), collision.posZ()}, dca); - values[kMuonDCAx] = static_cast(dca[0]); - values[kMuonDCAy] = static_cast(dca[1]); + values[kMuonDCAx] = static_cast(dca[o2::dqconstants::defaults::IndexDCAxy]); + values[kMuonDCAy] = static_cast(dca[o2::dqconstants::defaults::IndexDCAz]); } } } @@ -2063,7 +2062,7 @@ void VarManager::FillBC(T const& bc, float* values) values[kBC] = bc.globalBC(); values[kBCOrbit] = bc.globalBC() % o2::constants::lhc::LHCMaxBunches; values[kTimestamp] = bc.timestamp(); - values[kTimeFromSOR] = (fgSOR > 0 ? (bc.timestamp() - fgSOR) / 60000. : -1.0); + values[kTimeFromSOR] = (fgSOR > 0 ? (bc.timestamp() - fgSOR) / o2::dqconstants::MillisecondsPerMinute : o2::dqconstants::InvalidValueF); } template @@ -2246,14 +2245,14 @@ void VarManager::FillEvent(T const& event, float* values) values[kVtxZ] = event.posZ(); values[kVtxNcontrib] = event.numContrib(); if (fgUsedVars[kIsDoubleGap] || fgUsedVars[kIsSingleGap] || fgUsedVars[kIsSingleGapA] || fgUsedVars[kIsSingleGapC] || fgUsedVars[kIsNoGap]) { - values[kIsDoubleGap] = static_cast(event.tag_bit(56 + kDoubleGap) > 0); - values[kIsSingleGapA] = static_cast(event.tag_bit(56 + kSingleGapA) > 0); - values[kIsSingleGapC] = static_cast(event.tag_bit(56 + kSingleGapC) > 0); - values[kIsSingleGap] = static_cast(values[kIsSingleGapA] != 0.f || values[kIsSingleGapC] != 0.f); - values[kIsNoGap] = static_cast(values[kIsDoubleGap] == 0.f && values[kIsSingleGap] == 0.f); + values[kIsDoubleGap] = static_cast(event.tag_bit(o2::dqconstants::defaults::EventTagStartBit + kDoubleGap) > 0); + values[kIsSingleGapA] = static_cast(event.tag_bit(o2::dqconstants::defaults::EventTagStartBit + kSingleGapA) > 0); + values[kIsSingleGapC] = static_cast(event.tag_bit(o2::dqconstants::defaults::EventTagStartBit + kSingleGapC) > 0); + values[kIsSingleGap] = static_cast(values[kIsSingleGapA] != o2::dqconstants::EmptyVariable || values[kIsSingleGapC] != o2::dqconstants::EmptyVariable); + values[kIsNoGap] = static_cast(values[kIsDoubleGap] == o2::dqconstants::EmptyVariable && values[kIsSingleGap] == o2::dqconstants::EmptyVariable); } if (fgUsedVars[kIsITSUPCMode]) { - values[kIsITSUPCMode] = static_cast(event.tag_bit(56 + kITSUPCMode) > 0); + values[kIsITSUPCMode] = static_cast(event.tag_bit(o2::dqconstants::defaults::EventTagStartBit + kITSUPCMode) > 0); } values[kCollisionTime] = event.collisionTime(); values[kCollisionTimeRes] = event.collisionTimeRes(); @@ -2263,11 +2262,11 @@ void VarManager::FillEvent(T const& event, float* values) values[kBC] = event.globalBC(); values[kBCOrbit] = event.globalBC() % o2::constants::lhc::LHCMaxBunches; values[kTimestamp] = event.timestamp(); - values[kTimeFromSOR] = (fgSOR > 0 ? (event.timestamp() - fgSOR) / 60000. : -1.0); + values[kTimeFromSOR] = (fgSOR > 0 ? (event.timestamp() - fgSOR) / o2::dqconstants::MillisecondsPerMinute : o2::dqconstants::InvalidValueF); values[kCentVZERO] = event.centRun2V0M(); values[kCentFT0C] = event.centFT0C(); if (fgUsedVars[kIsNoITSROFBorderRecomputed]) { - uint16_t bcInITSROF = (event.globalBC() + 3564 - fgITSROFbias) % fgITSROFlength; + uint16_t bcInITSROF = (event.globalBC() + o2::constants::lhc::LHCMaxBunches - fgITSROFbias) % fgITSROFlength; values[kIsNoITSROFBorderRecomputed] = bcInITSROF > fgITSROFBorderMarginLow && bcInITSROF < fgITSROFlength - fgITSROFBorderMarginHigh ? 1.0 : 0.0; } if (fgUsedVars[kIsNoITSROFBorder]) { @@ -2417,12 +2416,12 @@ void VarManager::FillEvent(T const& event, float* values) } if constexpr ((fillMap & CollisionQvect) > 0) { - values[kQ1X0A] = -999; - values[kQ1Y0A] = -999; - values[kQ1X0B] = -999; - values[kQ1Y0B] = -999; - values[kQ1X0C] = -999; - values[kQ1Y0C] = -999; + values[kQ1X0A] = o2::dqconstants::InvalidValueI; + values[kQ1Y0A] = o2::dqconstants::InvalidValueI; + values[kQ1X0B] = o2::dqconstants::InvalidValueI; + values[kQ1Y0B] = o2::dqconstants::InvalidValueI; + values[kQ1X0C] = o2::dqconstants::InvalidValueI; + values[kQ1Y0C] = o2::dqconstants::InvalidValueI; // values[kQ2X0A] = (event.qvecBPosRe() * event.nTrkBPos() + event.qvecBNegRe() * event.nTrkBNeg()) / (event.nTrkBPos() + event.nTrkBNeg()); // values[kQ2Y0A] = (event.qvecBPosIm() * event.nTrkBPos() + event.qvecBNegIm() * event.nTrkBNeg()) / (event.nTrkBPos() + event.nTrkBNeg()); values[kQ2X0A] = event.qvecBAllRe(); @@ -2440,18 +2439,18 @@ void VarManager::FillEvent(T const& event, float* values) values[kMultANEG] = event.nTrkBNeg(); values[kMultB] = event.sumAmplFT0A(); values[kMultC] = event.sumAmplFT0C(); - values[kQ3X0A] = -999; - values[kQ3Y0A] = -999; - values[kQ3X0B] = -999; - values[kQ3Y0B] = -999; - values[kQ3X0C] = -999; - values[kQ3Y0C] = -999; - values[kQ4X0A] = -999; - values[kQ4Y0A] = -999; - values[kQ4X0B] = -999; - values[kQ4Y0B] = -999; - values[kQ4X0C] = -999; - values[kQ4Y0C] = -999; + values[kQ3X0A] = o2::dqconstants::InvalidValueI; + values[kQ3Y0A] = o2::dqconstants::InvalidValueI; + values[kQ3X0B] = o2::dqconstants::InvalidValueI; + values[kQ3Y0B] = o2::dqconstants::InvalidValueI; + values[kQ3X0C] = o2::dqconstants::InvalidValueI; + values[kQ3Y0C] = o2::dqconstants::InvalidValueI; + values[kQ4X0A] = o2::dqconstants::InvalidValueI; + values[kQ4Y0A] = o2::dqconstants::InvalidValueI; + values[kQ4X0B] = o2::dqconstants::InvalidValueI; + values[kQ4Y0B] = o2::dqconstants::InvalidValueI; + values[kQ4X0C] = o2::dqconstants::InvalidValueI; + values[kQ4Y0C] = o2::dqconstants::InvalidValueI; values[kQ2YYAB] = values[kQ2Y0A] * values[kQ2Y0B]; values[kQ2XXAB] = values[kQ2X0A] * values[kQ2X0B]; @@ -2506,12 +2505,12 @@ void VarManager::FillEvent(T const& event, float* values) values[kR2SP_BC_Im] = std::isnan(R2SP_BC_Im) || std::isinf(R2SP_BC_Im) ? 0. : R2SP_BC_Im; values[kWR2SP_BC_Im] = std::isnan(R2SP_BC_Im) || std::isinf(R2SP_BC_Im) ? 0. : 1.0; - float R2EP_AB = std::isnan(Psi2A) || std::isinf(Psi2A) || std::isnan(Psi2B) || std::isinf(Psi2B) ? 0. : TMath::Cos(2 * (Psi2A - Psi2B)); - float R2EP_AC = std::isnan(Psi2A) || std::isinf(Psi2A) || std::isnan(Psi2C) || std::isinf(Psi2C) ? 0. : TMath::Cos(2 * (Psi2A - Psi2C)); - float R2EP_BC = std::isnan(Psi2B) || std::isinf(Psi2B) || std::isnan(Psi2C) || std::isinf(Psi2C) ? 0. : TMath::Cos(2 * (Psi2B - Psi2C)); - float R2EP_AB_Im = std::isnan(Psi2A) || std::isinf(Psi2A) || std::isnan(Psi2B) || std::isinf(Psi2B) ? 0. : TMath::Sin(2 * (Psi2A - Psi2B)); - float R2EP_AC_Im = std::isnan(Psi2A) || std::isinf(Psi2A) || std::isnan(Psi2C) || std::isinf(Psi2C) ? 0. : TMath::Sin(2 * (Psi2A - Psi2C)); - float R2EP_BC_Im = std::isnan(Psi2B) || std::isinf(Psi2B) || std::isnan(Psi2C) || std::isinf(Psi2C) ? 0. : TMath::Sin(2 * (Psi2B - Psi2C)); + float R2EP_AB = std::isnan(Psi2A) || std::isinf(Psi2A) || std::isnan(Psi2B) || std::isinf(Psi2B) ? 0. : std::cos(2 * (Psi2A - Psi2B)); + float R2EP_AC = std::isnan(Psi2A) || std::isinf(Psi2A) || std::isnan(Psi2C) || std::isinf(Psi2C) ? 0. : std::cos(2 * (Psi2A - Psi2C)); + float R2EP_BC = std::isnan(Psi2B) || std::isinf(Psi2B) || std::isnan(Psi2C) || std::isinf(Psi2C) ? 0. : std::cos(2 * (Psi2B - Psi2C)); + float R2EP_AB_Im = std::isnan(Psi2A) || std::isinf(Psi2A) || std::isnan(Psi2B) || std::isinf(Psi2B) ? 0. : std::sin(2 * (Psi2A - Psi2B)); + float R2EP_AC_Im = std::isnan(Psi2A) || std::isinf(Psi2A) || std::isnan(Psi2C) || std::isinf(Psi2C) ? 0. : std::sin(2 * (Psi2A - Psi2C)); + float R2EP_BC_Im = std::isnan(Psi2B) || std::isinf(Psi2B) || std::isnan(Psi2C) || std::isinf(Psi2C) ? 0. : std::sin(2 * (Psi2B - Psi2C)); values[kR2EP_AB] = std::isnan(R2EP_AB) || std::isinf(R2EP_AB) ? 0. : R2EP_AB; values[kWR2EP_AB] = std::isnan(R2EP_AB) || std::isinf(R2EP_AB) ? 0. : 1.0; values[kR2EP_AC] = std::isnan(R2EP_AC) || std::isinf(R2EP_AC) ? 0. : R2EP_AC; @@ -2527,12 +2526,12 @@ void VarManager::FillEvent(T const& event, float* values) } if constexpr ((fillMap & CollisionQvectCentr) > 0) { - values[kQ1X0A] = -999; - values[kQ1Y0A] = -999; - values[kQ1X0B] = -999; - values[kQ1Y0B] = -999; - values[kQ1X0C] = -999; - values[kQ1Y0C] = -999; + values[kQ1X0A] = o2::dqconstants::InvalidValueI; + values[kQ1Y0A] = o2::dqconstants::InvalidValueI; + values[kQ1X0B] = o2::dqconstants::InvalidValueI; + values[kQ1Y0B] = o2::dqconstants::InvalidValueI; + values[kQ1X0C] = o2::dqconstants::InvalidValueI; + values[kQ1Y0C] = o2::dqconstants::InvalidValueI; values[kQ2X0A] = event.qvecTPCallRe() / event.nTrkTPCall(); values[kQ2Y0A] = event.qvecTPCallIm() / event.nTrkTPCall(); values[kQ2X0APOS] = event.qvecTPCposRe(); @@ -2548,18 +2547,18 @@ void VarManager::FillEvent(T const& event, float* values) values[kMultANEG] = event.nTrkTPCneg(); values[kMultB] = event.sumAmplFT0A(); values[kMultC] = event.sumAmplFT0C(); - values[kQ3X0A] = -999; - values[kQ3Y0A] = -999; - values[kQ3X0B] = -999; - values[kQ3Y0B] = -999; - values[kQ3X0C] = -999; - values[kQ3Y0C] = -999; - values[kQ4X0A] = -999; - values[kQ4Y0A] = -999; - values[kQ4X0B] = -999; - values[kQ4Y0B] = -999; - values[kQ4X0C] = -999; - values[kQ4Y0C] = -999; + values[kQ3X0A] = o2::dqconstants::InvalidValueI; + values[kQ3Y0A] = o2::dqconstants::InvalidValueI; + values[kQ3X0B] = o2::dqconstants::InvalidValueI; + values[kQ3Y0B] = o2::dqconstants::InvalidValueI; + values[kQ3X0C] = o2::dqconstants::InvalidValueI; + values[kQ3Y0C] = o2::dqconstants::InvalidValueI; + values[kQ4X0A] = o2::dqconstants::InvalidValueI; + values[kQ4Y0A] = o2::dqconstants::InvalidValueI; + values[kQ4X0B] = o2::dqconstants::InvalidValueI; + values[kQ4Y0B] = o2::dqconstants::InvalidValueI; + values[kQ4X0C] = o2::dqconstants::InvalidValueI; + values[kQ4Y0C] = o2::dqconstants::InvalidValueI; EventPlaneHelper epHelper; float Psi2A = epHelper.GetEventPlane(values[kQ2X0A], values[kQ2Y0A], 2); @@ -2601,12 +2600,12 @@ void VarManager::FillEvent(T const& event, float* values) values[kR2SP_BC_Im] = std::isnan(R2SP_BC_Im) || std::isinf(R2SP_BC_Im) ? 0. : R2SP_BC_Im; values[kWR2SP_BC_Im] = std::isnan(R2SP_BC_Im) || std::isinf(R2SP_BC_Im) ? 0. : 1.0; - float R2EP_AB = std::isnan(Psi2A) || std::isinf(Psi2A) || std::isnan(Psi2B) || std::isinf(Psi2B) ? 0. : TMath::Cos(2 * (Psi2A - Psi2B)); - float R2EP_AC = std::isnan(Psi2A) || std::isinf(Psi2A) || std::isnan(Psi2C) || std::isinf(Psi2C) ? 0. : TMath::Cos(2 * (Psi2A - Psi2C)); - float R2EP_BC = std::isnan(Psi2B) || std::isinf(Psi2B) || std::isnan(Psi2C) || std::isinf(Psi2C) ? 0. : TMath::Cos(2 * (Psi2B - Psi2C)); - float R2EP_AB_Im = std::isnan(Psi2A) || std::isinf(Psi2A) || std::isnan(Psi2B) || std::isinf(Psi2B) ? 0. : TMath::Sin(2 * (Psi2A - Psi2B)); - float R2EP_AC_Im = std::isnan(Psi2A) || std::isinf(Psi2A) || std::isnan(Psi2C) || std::isinf(Psi2C) ? 0. : TMath::Sin(2 * (Psi2A - Psi2C)); - float R2EP_BC_Im = std::isnan(Psi2B) || std::isinf(Psi2B) || std::isnan(Psi2C) || std::isinf(Psi2C) ? 0. : TMath::Sin(2 * (Psi2B - Psi2C)); + float R2EP_AB = std::isnan(Psi2A) || std::isinf(Psi2A) || std::isnan(Psi2B) || std::isinf(Psi2B) ? 0. : std::cos(2 * (Psi2A - Psi2B)); + float R2EP_AC = std::isnan(Psi2A) || std::isinf(Psi2A) || std::isnan(Psi2C) || std::isinf(Psi2C) ? 0. : std::cos(2 * (Psi2A - Psi2C)); + float R2EP_BC = std::isnan(Psi2B) || std::isinf(Psi2B) || std::isnan(Psi2C) || std::isinf(Psi2C) ? 0. : std::cos(2 * (Psi2B - Psi2C)); + float R2EP_AB_Im = std::isnan(Psi2A) || std::isinf(Psi2A) || std::isnan(Psi2B) || std::isinf(Psi2B) ? 0. : std::sin(2 * (Psi2A - Psi2B)); + float R2EP_AC_Im = std::isnan(Psi2A) || std::isinf(Psi2A) || std::isnan(Psi2C) || std::isinf(Psi2C) ? 0. : std::sin(2 * (Psi2A - Psi2C)); + float R2EP_BC_Im = std::isnan(Psi2B) || std::isinf(Psi2B) || std::isnan(Psi2C) || std::isinf(Psi2C) ? 0. : std::sin(2 * (Psi2B - Psi2C)); values[kR2EP_AB] = std::isnan(R2EP_AB) || std::isinf(R2EP_AB) ? 0. : R2EP_AB; values[kWR2EP_AB] = std::isnan(R2EP_AB) || std::isinf(R2EP_AB) ? 0. : 1.0; values[kR2EP_AC] = std::isnan(R2EP_AC) || std::isinf(R2EP_AC) ? 0. : R2EP_AC; @@ -2642,7 +2641,7 @@ void VarManager::FillEvent(T const& event, float* values) if constexpr ((fillMap & ReducedEventMC) > 0) { values[kMCEventGeneratorId] = event.generatorsID(); - values[kMCEventGeneratorId] = -999; // to be added in reduced events + values[kMCEventGeneratorId] = o2::dqconstants::InvalidValueI; // to be added in reduced events values[kMCVtxX] = event.mcPosX(); values[kMCVtxY] = event.mcPosY(); values[kMCVtxZ] = event.mcPosZ(); @@ -2659,8 +2658,8 @@ void VarManager::FillEvent(T const& event, float* values) values[kIsDoubleGap] = static_cast((event.eventFilter() & (static_cast(1) << kDoubleGap)) > 0); values[kIsSingleGapA] = static_cast((event.eventFilter() & (static_cast(1) << kSingleGapA)) > 0); values[kIsSingleGapC] = static_cast((event.eventFilter() & (static_cast(1) << kSingleGapC)) > 0); - values[kIsSingleGap] = static_cast(values[kIsSingleGapA] != 0.f || values[kIsSingleGapC] != 0.f); - values[kIsNoGap] = static_cast(values[kIsDoubleGap] == 0.f && values[kIsSingleGap] == 0.f); + values[kIsSingleGap] = static_cast(values[kIsSingleGapA] != o2::dqconstants::EmptyVariable || values[kIsSingleGapC] != o2::dqconstants::EmptyVariable); + values[kIsNoGap] = static_cast(values[kIsDoubleGap] == o2::dqconstants::EmptyVariable && values[kIsSingleGap] == o2::dqconstants::EmptyVariable); values[kIsITSUPCMode] = static_cast((event.eventFilter() & (static_cast(1) << kITSUPCMode)) > 0); } @@ -2757,7 +2756,7 @@ void VarManager::FillEventTracks(T const& tracks, float* values) if (!track.hasTPC()) { continue; // skip tracks without TPC information } - if (track.dcaZ() > 998) { + if (o2::dqconstants::IsDCAInvalid(track.dcaZ())) { continue; // skip tracks without valid DCAz } dcazValues.push_back(track.dcaZ()); @@ -2768,8 +2767,8 @@ void VarManager::FillEventTracks(T const& tracks, float* values) } // compute the unbinned bimodality coefficient and related statistics - auto [bimodalityCoefficient, mean, stddev, skewness, kurtosis, nPeaks] = BimodalityCoefficientAndNPeaks(dcazValues, -1.0); - if (stddev > -1.0) { + auto [bimodalityCoefficient, mean, stddev, skewness, kurtosis, nPeaks] = BimodalityCoefficientAndNPeaks(dcazValues, o2::dqconstants::defaults::BimodalityInvalidBinWidth); + if (o2::dqconstants::IsStdDevValid(stddev)) { values[kDCAzBimodalityCoefficient] = bimodalityCoefficient; values[kDCAzMean] = mean; values[kDCAzRMS] = stddev; @@ -2777,59 +2776,59 @@ void VarManager::FillEventTracks(T const& tracks, float* values) values[kDCAzKurtosis] = kurtosis; values[kDCAzNPeaks] = nPeaks; } else { - values[kDCAzBimodalityCoefficient] = -9999.0; - values[kDCAzMean] = -9999.0; - values[kDCAzRMS] = -9999.0; - values[kDCAzSkewness] = -9999.0; - values[kDCAzKurtosis] = -9999.0; - values[kDCAzNPeaks] = -9999.0; + values[kDCAzBimodalityCoefficient] = o2::dqconstants::InvalidValueF; + values[kDCAzMean] = o2::dqconstants::InvalidValueF; + values[kDCAzRMS] = o2::dqconstants::InvalidValueF; + values[kDCAzSkewness] = o2::dqconstants::InvalidValueF; + values[kDCAzKurtosis] = o2::dqconstants::InvalidValueF; + values[kDCAzNPeaks] = o2::dqconstants::InvalidValueF; } // compute the binned bimodality coefficient and related statistics with a bin width of 50um - auto [bimodalityCoefficientBin, meanBin, stddevBin, skewnessBin, kurtosisBin, nPeaksBin] = BimodalityCoefficientAndNPeaks(dcazValues, 0.005); - if (stddevBin > -1.0) { + auto [bimodalityCoefficientBin, meanBin, stddevBin, skewnessBin, kurtosisBin, nPeaksBin] = BimodalityCoefficientAndNPeaks(dcazValues, o2::dqconstants::defaults::BimodalityBinWidth); + if (o2::dqconstants::IsStdDevValid(stddevBin)) { values[kDCAzBimodalityCoefficientBinned] = bimodalityCoefficientBin; } else { - values[kDCAzBimodalityCoefficientBinned] = -9999.0; + values[kDCAzBimodalityCoefficientBinned] = o2::dqconstants::InvalidValueF; } values[kDCAzNPeaks] = nPeaksBin; // cout << "Bimodality coefficient binned: " << bimodalityCoefficientBin << ", mean: " << mean << ", stddev: " << stddev << ", skewness: " << skewness << ", kurtosis: " << kurtosis << ", nPeaks: " << nPeaksBin << endl; // compute the binned bimodality coefficient and related statistics with a bin width of 50um and different trimming versions // more then 3 counts per bin - auto [bimodalityCoefficientBinTrimmed1, meanBinTrimmed1, stddevBinTrimmed1, skewnessBinTrimmed1, kurtosisBinTrimmed1, nPeaksBinTrimmed1] = BimodalityCoefficientAndNPeaks(dcazValues, 0.005, 4); - if (stddevBinTrimmed1 > -1.0) { + auto [bimodalityCoefficientBinTrimmed1, meanBinTrimmed1, stddevBinTrimmed1, skewnessBinTrimmed1, kurtosisBinTrimmed1, nPeaksBinTrimmed1] = BimodalityCoefficientAndNPeaks(dcazValues, o2::dqconstants::defaults::BimodalityBinWidth, 4); + if (o2::dqconstants::IsStdDevValid(stddevBinTrimmed1)) { values[kDCAzBimodalityCoefficientBinnedTrimmed1] = bimodalityCoefficientBinTrimmed1; values[kDCAzMeanBinnedTrimmed1] = meanBinTrimmed1; values[kDCAzRMSBinnedTrimmed1] = stddevBinTrimmed1; } else { - values[kDCAzBimodalityCoefficientBinnedTrimmed1] = -9999.0; - values[kDCAzMeanBinnedTrimmed1] = -9999.0; - values[kDCAzRMSBinnedTrimmed1] = -9999.0; + values[kDCAzBimodalityCoefficientBinnedTrimmed1] = o2::dqconstants::InvalidValueF; + values[kDCAzMeanBinnedTrimmed1] = o2::dqconstants::InvalidValueF; + values[kDCAzRMSBinnedTrimmed1] = o2::dqconstants::InvalidValueF; } values[kDCAzNPeaksTrimmed1] = nPeaksBinTrimmed1; // cout << "Bimodality coefficient (trimmed 1): " << bimodalityCoefficientBinTrimmed1 << ", mean: " << meanBinTrimmed1 << ", stddev: " << stddevBinTrimmed1 << ", skewness: " << skewnessBinTrimmed1 << ", kurtosis: " << kurtosisBinTrimmed1 << ", nPeaks: " << nPeaksBinTrimmed1 << endl; // more than 3% of the entries per peak - auto [bimodalityCoefficientBinTrimmed2, meanBinTrimmed2, stddevBinTrimmed2, skewnessBinTrimmed2, kurtosisBinTrimmed2, nPeaksBinTrimmed2] = BimodalityCoefficientAndNPeaks(dcazValues, 0.005, -100); - if (stddevBinTrimmed2 > -1.0) { + auto [bimodalityCoefficientBinTrimmed2, meanBinTrimmed2, stddevBinTrimmed2, skewnessBinTrimmed2, kurtosisBinTrimmed2, nPeaksBinTrimmed2] = BimodalityCoefficientAndNPeaks(dcazValues, o2::dqconstants::defaults::BimodalityBinWidth, -100); + if (o2::dqconstants::IsStdDevValid(stddevBinTrimmed2)) { values[kDCAzBimodalityCoefficientBinnedTrimmed2] = bimodalityCoefficientBinTrimmed2; values[kDCAzMeanBinnedTrimmed2] = meanBinTrimmed2; values[kDCAzRMSBinnedTrimmed2] = stddevBinTrimmed2; } else { - values[kDCAzBimodalityCoefficientBinnedTrimmed2] = -9999.0; - values[kDCAzMeanBinnedTrimmed2] = -9999.0; - values[kDCAzRMSBinnedTrimmed2] = -9999.0; + values[kDCAzBimodalityCoefficientBinnedTrimmed2] = o2::dqconstants::InvalidValueF; + values[kDCAzMeanBinnedTrimmed2] = o2::dqconstants::InvalidValueF; + values[kDCAzRMSBinnedTrimmed2] = o2::dqconstants::InvalidValueF; } values[kDCAzNPeaksTrimmed2] = nPeaksBinTrimmed2; // cout << "Bimodality coefficient (trimmed 2): " << bimodalityCoefficientBinTrimmed2 << ", mean: " << meanBinTrimmed2 << ", stddev: " << stddevBinTrimmed2 << ", skewness: " << skewnessBinTrimmed2 << ", kurtosis: " << kurtosisBinTrimmed2 << ", nPeaks: " << nPeaksBinTrimmed2 << endl; // more than 5% of the entries per peak - auto [bimodalityCoefficientBinTrimmed3, meanBinTrimmed3, stddevBinTrimmed3, skewnessBinTrimmed3, kurtosisBinTrimmed3, nPeaksBinTrimmed3] = BimodalityCoefficientAndNPeaks(dcazValues, 0.005, -20); - if (stddevBinTrimmed3 > -1.0) { + auto [bimodalityCoefficientBinTrimmed3, meanBinTrimmed3, stddevBinTrimmed3, skewnessBinTrimmed3, kurtosisBinTrimmed3, nPeaksBinTrimmed3] = BimodalityCoefficientAndNPeaks(dcazValues, o2::dqconstants::defaults::BimodalityBinWidth, -20); + if (o2::dqconstants::IsStdDevValid(stddevBinTrimmed3)) { values[kDCAzBimodalityCoefficientBinnedTrimmed3] = bimodalityCoefficientBinTrimmed3; values[kDCAzMeanBinnedTrimmed3] = meanBinTrimmed3; values[kDCAzRMSBinnedTrimmed3] = stddevBinTrimmed3; } else { - values[kDCAzBimodalityCoefficientBinnedTrimmed3] = -9999.0; - values[kDCAzMeanBinnedTrimmed3] = -9999.0; - values[kDCAzRMSBinnedTrimmed3] = -9999.0; + values[kDCAzBimodalityCoefficientBinnedTrimmed3] = o2::dqconstants::InvalidValueF; + values[kDCAzMeanBinnedTrimmed3] = o2::dqconstants::InvalidValueF; + values[kDCAzRMSBinnedTrimmed3] = o2::dqconstants::InvalidValueF; } values[kDCAzNPeaksTrimmed3] = nPeaksBinTrimmed3; // cout << "Bimodality coefficient (trimmed 3): " << bimodalityCoefficientBinTrimmed3 << ", mean: " << meanBinTrimmed3 << ", stddev: " << stddevBinTrimmed3 << ", skewness: " << skewnessBinTrimmed3 << ", kurtosis: " << kurtosisBinTrimmed3 << ", nPeaks: " << nPeaksBinTrimmed3 << endl; @@ -2845,19 +2844,19 @@ void VarManager::FillEventTracks(T const& tracks, float* values) int counter10mm = 0; for (auto const& d : dcazValues) { double absD = std::abs(d); - if (absD > 0.01) { + if (absD > o2::dqconstants::defaults::BimodalityDCAFrac001) { counter100um++; - if (absD > 0.02) { + if (absD > o2::dqconstants::defaults::BimodalityDCAFrac002) { counter200um++; - if (absD > 0.05) { + if (absD > o2::dqconstants::defaults::BimodalityDCAFrac005) { counter500um++; - if (absD > 0.1) { + if (absD > o2::dqconstants::defaults::BimodalityDCAFrac01) { counter1mm++; - if (absD > 0.2) { + if (absD > o2::dqconstants::defaults::BimodalityDCAFrac02) { counter2mm++; - if (absD > 0.5) { + if (absD > o2::dqconstants::defaults::BimodalityDCAFrac05) { counter5mm++; - if (absD > 1.0) { + if (absD > o2::dqconstants::defaults::BimodalityDCAFrac1) { counter10mm++; } } @@ -3056,7 +3055,7 @@ void VarManager::FillTrack(T const& track, float* values) uint64_t mftClsAndFlgs = track.mftClusterSizesAndTrackFlags(); double meanClusterSize = 0; - for (int i = 0; i < 10; ++i) { + for (int i = 0; i < o2::dqconstants::defaults::NumMFTLayers; ++i) { double size = (mftClsAndFlgs >> (i * 6)) & 0x3fULL; values[kMftClusterSize + i] = (mftClsAndFlgs >> (i * 6)) & 0x3fULL; if (size > 0) { @@ -3090,14 +3089,14 @@ void VarManager::FillTrack(T const& track, float* values) values[kPhi] = track.phi(); values[kCharge] = track.sign(); if (fgUsedVars[kPhiTPCOuter]) { - values[kPhiTPCOuter] = RecoDecay::constrainAngle(track.phi() - (track.sign() > 0 ? 1.0 : -1.0) * (o2::constants::math::PIHalf - TMath::ACos(0.22 * fgMagField / track.pt()))); + values[kPhiTPCOuter] = RecoDecay::constrainAngle(track.phi() - track.sign() * (o2::constants::math::PIHalf - std::acos(0.22 * fgMagField / track.pt()))); } if (fgUsedVars[kTrackIsInsideTPCModule]) { - float localSectorPhi = values[kPhiTPCOuter] - TMath::Floor(18.0 * values[kPhiTPCOuter] / o2::constants::math::TwoPI) * (o2::constants::math::TwoPI / 18.0); + float localSectorPhi = values[kPhiTPCOuter] - std::floor(18.0 * values[kPhiTPCOuter] / o2::constants::math::TwoPI) * (o2::constants::math::TwoPI / 18.0); float edge = fgTPCInterSectorBoundary / 2.0 / 246.6; // minimal inter-sector boundary as angle - float curvature = 3.0 * 3.33 * track.pt() / fgMagField * (1.0 - TMath::Sin(TMath::ACos(0.22 * fgMagField / track.pt()))); - if (curvature / 2.466 > edge) { - edge = curvature / 2.466; + float curvature = 3.0 * 3.33 * track.pt() / fgMagField * (1.0 - std::sin(std::acos(0.22 * fgMagField / track.pt()))); + if (curvature / o2::dqconstants::defaults::CurvatureNormalizationFactor > edge) { + edge = curvature / o2::dqconstants::defaults::CurvatureNormalizationFactor; } double min = edge; double max = o2::constants::math::TwoPI / 18.0 - edge; @@ -3117,7 +3116,7 @@ void VarManager::FillTrack(T const& track, float* values) values[kIsProtonFromLambdaAndAntiLambda] = static_cast((values[kIsLegFromLambda] * track.sign() > 0) || (values[kIsLegFromAntiLambda] * (-track.sign()) > 0)); - for (int i = 0; i < 8; i++) { + for (int i = 0; i < o2::dqconstants::defaults::NumDalitzSelections; i++) { values[kIsDalitzLeg + i] = track.filteringFlags_bit(VarManager::kDalitzBits + i); } } @@ -3128,7 +3127,7 @@ void VarManager::FillTrack(T const& track, float* values) std::complex Q21(values[kQ2X0A] * values[kS11A], values[kQ2Y0A] * values[kS11A]); std::complex Q42(values[kQ42XA], values[kQ42YA]); std::complex Q23(values[kQ23XA], values[kQ23YA]); - std::complex P2(TMath::Cos(2 * v.Phi()), TMath::Sin(2 * v.Phi())); + std::complex P2(std::cos(2 * v.Phi()), std::sin(2 * v.Phi())); values[kM11REFoverMpsingle] = values[kMultSingleMuons] > 0 && !(std::isnan(values[kM11REF]) || std::isinf(values[kM11REF]) || std::isnan(values[kCORR2REF]) || std::isinf(values[kCORR2REF]) || std::isnan(values[kM1111REF]) || std::isinf(values[kM1111REF]) || std::isnan(values[kCORR4REF]) || std::isinf(values[kCORR4REF])) ? values[kM11REF] / values[kMultSingleMuons] : 0; values[kM1111REFoverMpsingle] = values[kMultSingleMuons] > 0 && !(std::isnan(values[kM1111REF]) || std::isinf(values[kM1111REF]) || std::isnan(values[kCORR4REF]) || std::isinf(values[kCORR4REF]) || std::isnan(values[kM11REF]) || std::isinf(values[kM11REF]) || std::isnan(values[kCORR2REF]) || std::isinf(values[kCORR2REF])) ? values[kM1111REF] / values[kMultSingleMuons] : 0; values[kCORR2REFbysinglemu] = std::isnan(values[kM11REFoverMpsingle]) || std::isinf(values[kM11REFoverMpsingle]) || std::isnan(values[kCORR2REF]) || std::isinf(values[kCORR2REF]) || std::isnan(values[kM1111REFoverMpsingle]) || std::isinf(values[kM1111REFoverMpsingle]) || std::isnan(values[kCORR4REF]) || std::isinf(values[kCORR4REF]) ? 0 : values[kCORR2REF]; @@ -3223,7 +3222,7 @@ void VarManager::FillTrack(T const& track, float* values) values[kITSmeanClsSize] = 0.0; uint32_t clsizeflag = track.itsClusterSizes(); float mcls = 0.; - for (unsigned int layer = 0; layer < 7; layer++) { + for (unsigned int layer = 0; layer < o2::dqconstants::defaults::NumITSLayers; layer++) { mcls += (clsizeflag >> (layer * 4)) & 0xF; } if (track.itsNCls() > 0) { @@ -3234,7 +3233,7 @@ void VarManager::FillTrack(T const& track, float* values) if constexpr ((fillMap & ReducedTrackBarrel) > 0) { if (fgUsedVars[kITSncls]) { values[kITSncls] = 0.0; - for (int i = 0; i < 7; ++i) { + for (int i = 0; i < o2::dqconstants::defaults::NumITSLayers; ++i) { values[kITSncls] += ((track.itsClusterMap() & (1 << i)) ? 1 : 0); } } @@ -3297,7 +3296,7 @@ void VarManager::FillTrack(T const& track, float* values) // Quantities based on the dalitz selections if constexpr ((fillMap & DalitzBits) > 0) { - for (int i = 0; i < 8; i++) { + for (int i = 0; i < o2::dqconstants::defaults::NumDalitzSelections; i++) { values[kIsDalitzLeg + i] = static_cast(track.dalitzBits() & (static_cast(1) << i)); } } @@ -3326,9 +3325,9 @@ void VarManager::FillTrack(T const& track, float* values) } } // compute TPC postcalibrated electron nsigma based on calibration histograms from CCDB - if (fgUsedVars[kTPCnSigmaEl_Corr] && fgRunTPCPostCalibration[0]) { + if (fgUsedVars[kTPCnSigmaEl_Corr] && fgRunTPCPostCalibration[o2::dqconstants::defaults::PostCalibElectron]) { if (!isTPCCalibrated) { - values[kTPCnSigmaEl_Corr] = ComputePIDcalibration(0, values[kTPCnSigmaEl]); + values[kTPCnSigmaEl_Corr] = ComputePIDcalibration(o2::dqconstants::defaults::PostCalibElectron, values[kTPCnSigmaEl]); } else { LOG(fatal) << "TPC PID postcalibration is configured but the tracks are already postcalibrated. This is not allowed. Please check your configuration."; values[kTPCnSigmaEl_Corr] = track.tpcNSigmaEl(); @@ -3336,27 +3335,27 @@ void VarManager::FillTrack(T const& track, float* values) } // compute TPC postcalibrated pion nsigma if required - if (fgUsedVars[kTPCnSigmaPi_Corr] && fgRunTPCPostCalibration[1]) { + if (fgUsedVars[kTPCnSigmaPi_Corr] && fgRunTPCPostCalibration[o2::dqconstants::defaults::PostCalibPion]) { if (!isTPCCalibrated) { - values[kTPCnSigmaPi_Corr] = ComputePIDcalibration(1, values[kTPCnSigmaPi]); + values[kTPCnSigmaPi_Corr] = ComputePIDcalibration(o2::dqconstants::defaults::PostCalibPion, values[kTPCnSigmaPi]); } else { LOG(fatal) << "TPC PID postcalibration is configured but the tracks are already postcalibrated. This is not allowed. Please check your configuration."; values[kTPCnSigmaPi_Corr] = track.tpcNSigmaPi(); } } - if (fgUsedVars[kTPCnSigmaKa_Corr] && fgRunTPCPostCalibration[2]) { + if (fgUsedVars[kTPCnSigmaKa_Corr] && fgRunTPCPostCalibration[o2::dqconstants::defaults::PostCalibKaon]) { // compute TPC postcalibrated kaon nsigma if required if (!isTPCCalibrated) { - values[kTPCnSigmaKa_Corr] = ComputePIDcalibration(2, values[kTPCnSigmaKa]); + values[kTPCnSigmaKa_Corr] = ComputePIDcalibration(o2::dqconstants::defaults::PostCalibKaon, values[kTPCnSigmaKa]); } else { LOG(fatal) << "TPC PID postcalibration is configured but the tracks are already postcalibrated. This is not allowed. Please check your configuration."; values[kTPCnSigmaKa_Corr] = track.tpcNSigmaKa(); } } // compute TPC postcalibrated proton nsigma if required - if (fgUsedVars[kTPCnSigmaPr_Corr] && fgRunTPCPostCalibration[3]) { + if (fgUsedVars[kTPCnSigmaPr_Corr] && fgRunTPCPostCalibration[o2::dqconstants::defaults::PostCalibProton]) { if (!isTPCCalibrated) { - values[kTPCnSigmaPr_Corr] = ComputePIDcalibration(3, values[kTPCnSigmaPr]); + values[kTPCnSigmaPr_Corr] = ComputePIDcalibration(o2::dqconstants::defaults::PostCalibProton, values[kTPCnSigmaPr]); } else { LOG(fatal) << "TPC PID postcalibration is configured but the tracks are already postcalibrated. This is not allowed. Please check your configuration."; values[kTPCnSigmaPr_Corr] = track.tpcNSigmaPr(); @@ -3437,9 +3436,9 @@ void VarManager::FillTrack(T const& track, float* values) values[kMuonC1Pt21Pt2] = track.c1Pt21Pt2(); } if constexpr ((fillMap & MuonCov) > 0 || (fillMap & MuonCovRealign) > 0) { - float xShift = 0.f; - float yShift = 0.f; - float zShift = 0.f; + float xShift = o2::dqconstants::defaults::InitialShift; + float yShift = o2::dqconstants::defaults::InitialShift; + float zShift = o2::dqconstants::defaults::InitialShift; GetFwdShiftForY(track.y(), xShift, yShift, zShift); auto muonTrack = o2::aod::fwdtrackutils::getTrackParCovFwd3DShift(track, xShift, yShift, zShift, track); auto muonCov = muonTrack.getCovariances(); @@ -3484,35 +3483,35 @@ void VarManager::FillTrackCollision(T const& track, C const& collision, float* v } if constexpr ((fillMap & ReducedTrackBarrel) > 0 || (fillMap & TrackDCA) > 0) { auto trackPar = getTrackPar(track); - std::array dca{1e10f, 1e10f}; + std::array dca{o2::dqconstants::defaults::InitialDCA, o2::dqconstants::defaults::InitialDCA}; trackPar.propagateParamToDCA({collision.posX(), collision.posY(), collision.posZ()}, fgMagField, &dca); - values[kTrackDCAxy] = dca[0]; - values[kTrackDCAz] = dca[1]; + values[kTrackDCAxy] = dca[o2::dqconstants::defaults::IndexDCAxy]; + values[kTrackDCAz] = dca[o2::dqconstants::defaults::IndexDCAz]; if constexpr ((fillMap & ReducedTrackBarrelCov) > 0 || (fillMap & TrackCov) > 0) { if (fgUsedVars[kTrackDCAsigXY]) { - values[kTrackDCAsigXY] = dca[0] / std::sqrt(track.cYY()); + values[kTrackDCAsigXY] = dca[o2::dqconstants::defaults::IndexDCAxy] / std::sqrt(track.cYY()); } if (fgUsedVars[kTrackDCAsigZ]) { - values[kTrackDCAsigZ] = dca[1] / std::sqrt(track.cZZ()); + values[kTrackDCAsigZ] = dca[o2::dqconstants::defaults::IndexDCAz] / std::sqrt(track.cZZ()); } } } if constexpr ((fillMap & MuonCov) > 0 || (fillMap & MuonCovRealign) > 0 || (fillMap & ReducedMuonCov) > 0) { - float dcaX = 999.f; - float dcaY = 999.f; - if (static_cast(track.trackType()) <= 2) { + float dcaX; + float dcaY; + if (static_cast(track.trackType()) <= o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalForwardTrack) { // Global / MCH-MID: helix DCA only (for globals, kMuonPDca is filled from the matched MCH in skimMuons) - float xShift = 0.f; - float yShift = 0.f; - float zShift = 0.f; + float xShift = o2::dqconstants::defaults::InitialShift; + float yShift = o2::dqconstants::defaults::InitialShift; + float zShift = o2::dqconstants::defaults::InitialShift; GetFwdShiftForY(track.y(), xShift, yShift, zShift); o2::track::TrackParCovFwd fwdtrack = o2::aod::fwdtrackutils::getTrackParCovFwd3DShift(track, xShift, yShift, zShift, track); - std::array dca{999., 999., 999.}; + std::array dca{o2::dqconstants::InvalidValueF, o2::dqconstants::InvalidValueF, o2::dqconstants::InvalidValueF}; fwdtrack.propagateToDCAhelix(fgMagField, {collision.posX(), collision.posY(), collision.posZ()}, dca); - dcaX = static_cast(dca[0]); - dcaY = static_cast(dca[1]); + dcaX = static_cast(dca[o2::dqconstants::defaults::IndexDCAxy]); + dcaY = static_cast(dca[o2::dqconstants::defaults::IndexDCAz]); } else { // MCH standalone: DCA and pDCA from MCH extrapolation o2::dataformats::GlobalFwdTrack propmuonAtDCA = PropagateMuon(track, collision, kToDCA); @@ -3547,21 +3546,21 @@ void VarManager::FillTrackCollisionMatCorr(T const& track, C const& collision, M } if constexpr ((fillMap & ReducedTrackBarrel) > 0 || (fillMap & TrackDCA) > 0) { auto trackPar = getTrackPar(track); - std::array dca{1e10f, 1e10f}; - std::array pVec = {track.px(), track.py(), track.pz()}; + std::array dca{o2::dqconstants::defaults::InitialDCA, o2::dqconstants::defaults::InitialDCA}; + std::array pVec = {track.px(), track.py(), track.pz()}; // trackPar.propagateParamToDCA({collision.posX(), collision.posY(), collision.posZ()}, fgMagField, &dca); propagator->propagateToDCABxByBz({collision.posX(), collision.posY(), collision.posZ()}, trackPar, 2.f, materialCorr, &dca); getPxPyPz(trackPar, pVec); - values[kTrackDCAxy] = dca[0]; - values[kTrackDCAz] = dca[1]; + values[kTrackDCAxy] = dca[o2::dqconstants::defaults::IndexDCAxy]; + values[kTrackDCAz] = dca[o2::dqconstants::defaults::IndexDCAz]; if constexpr ((fillMap & ReducedTrackBarrelCov) > 0 || (fillMap & TrackCov) > 0) { if (fgUsedVars[kTrackDCAsigXY]) { - values[kTrackDCAsigXY] = dca[0] / std::sqrt(track.cYY()); + values[kTrackDCAsigXY] = dca[o2::dqconstants::defaults::IndexDCAxy] / std::sqrt(track.cYY()); } if (fgUsedVars[kTrackDCAsigZ]) { - values[kTrackDCAsigZ] = dca[1] / std::sqrt(track.cZZ()); + values[kTrackDCAsigZ] = dca[o2::dqconstants::defaults::IndexDCAz] / std::sqrt(track.cZZ()); } } } @@ -3623,7 +3622,7 @@ void VarManager::FillTrackEMCal(T const& cluster, float trackP, float deltaEta, values[kEMCalDistanceToBadChannel] = cluster.distanceToBadChannel(); values[kEMCalNLM] = cluster.nlm(); values[kEMCalDefinition] = cluster.definition(); - values[kEMCalEoverP] = (trackP > 0.0f ? cluster.energy() / trackP : -999.0f); + values[kEMCalEoverP] = (trackP > 0.0f ? cluster.energy() / trackP : o2::dqconstants::InvalidValueF); values[kEMCalMatchDeltaEta] = deltaEta; values[kEMCalMatchDeltaPhi] = deltaPhi; } @@ -3664,20 +3663,19 @@ void VarManager::FillTrackMC(const U& mcStack, T const& track, float* values) template void VarManager::FillTrackCollisionMC(T1 const& track, T2 const& MotherTrack, C const& collision, float* values) { - if (!values) { values = static_cast(fgValues); } float m = o2::constants::physics::MassBPlus; - float pdgLifetime = 1.638e-12; // s + float pdgLifetime = o2::dqconstants::defaults::LifetimeBPlus; if (std::abs(MotherTrack.pdgCode()) == o2::constants::physics::Pdg::kB0) { m = o2::constants::physics::MassB0; - pdgLifetime = 1.517e-12; // s + pdgLifetime = o2::dqconstants::defaults::LifetimeB0; } // Extract the collision primary vertex position using constexpr, since the collision type may be CollisionMC or ReducedMCEvent - std::array collPos = {0.0, 0.0, 0.0}; + std::array collPos = {0.0, 0.0, 0.0}; if constexpr (fillMap & ObjTypes::CollisionMC) { collPos[0] = collision.posX(); collPos[1] = collision.posY(); @@ -3696,7 +3694,7 @@ void VarManager::FillTrackCollisionMC(T1 const& track, T2 const& MotherTrack, C values[kMCVertexingLxy] = std::sqrt(values[kMCVertexingLxy]); values[kMCVertexingLz] = std::sqrt(values[kMCVertexingLz]); values[kMCVertexingLxyz] = std::sqrt(values[kMCVertexingLxyz]); - values[kMCVertexingTauz] = (collPos[2] - track.vz()) * m / (TMath::Abs(MotherTrack.pz()) * o2::constants::physics::LightSpeedCm2NS); + values[kMCVertexingTauz] = (collPos[2] - track.vz()) * m / (std::abs(MotherTrack.pz()) * o2::constants::physics::LightSpeedCm2NS); values[kMCVertexingTauxy] = values[kMCVertexingLxy] * m / (MotherTrack.pt() * o2::constants::physics::LightSpeedCm2NS); values[kMCCosPointingAngle] = ((collPos[0] - track.vx()) * MotherTrack.px() + @@ -3707,16 +3705,16 @@ void VarManager::FillTrackCollisionMC(T1 const& track, T2 const& MotherTrack, C values[kMCLxyExpected] = (MotherTrack.pt() / m) * (pdgLifetime * o2::constants::physics::LightSpeedCm2S); values[kMCLxyzExpected] = (MotherTrack.p() / m) * (pdgLifetime * o2::constants::physics::LightSpeedCm2S); - values[kMCVertexingLzProjected] = ((track.vz() - collPos[2]) * MotherTrack.pz()) / TMath::Abs(MotherTrack.pz()); - values[kMCVertexingLxyProjected] = (((track.vx() - collPos[0]) * MotherTrack.px()) + ((track.vy() - collPos[1]) * MotherTrack.py())) / TMath::Abs(MotherTrack.pt()); + values[kMCVertexingLzProjected] = ((track.vz() - collPos[2]) * MotherTrack.pz()) / std::abs(MotherTrack.pz()); + values[kMCVertexingLxyProjected] = (((track.vx() - collPos[0]) * MotherTrack.px()) + ((track.vy() - collPos[1]) * MotherTrack.py())) / std::abs(MotherTrack.pt()); values[kMCVertexingLxyzProjected] = (((track.vx() - collPos[1]) * MotherTrack.px()) + ((track.vy() - collPos[1]) * MotherTrack.py()) + ((track.vz() - collPos[2]) * MotherTrack.pz())) / MotherTrack.p(); values[kMCVertexingTauxyProjected] = values[kMCVertexingLxyProjected] * m / (MotherTrack.pt()); - values[kMCVertexingTauzProjected] = values[kMCVertexingLzProjected] * m / TMath::Abs(MotherTrack.pz()); + values[kMCVertexingTauzProjected] = values[kMCVertexingLzProjected] * m / std::abs(MotherTrack.pz()); values[kMCVertexingTauxyzProjected] = values[kMCVertexingLxyzProjected] * m / (MotherTrack.p()); } template -void VarManager::FillTrackCollisionMC(T1 const& track, const std::array& collPos, float massHyp, float* values) +void VarManager::FillTrackCollisionMC(T1 const& track, const std::array& collPos, float massHyp, float* values) { if (!values) { @@ -3724,7 +3722,7 @@ void VarManager::FillTrackCollisionMC(T1 const& track, const std::array -Transhigh * o2::constants::math::PI && deltaphitrans < -Translow * o2::constants::math::PI) || (deltaphitrans > Translow * o2::constants::math::PI && deltaphitrans < Transhigh * o2::constants::math::PI)) { @@ -3832,8 +3830,8 @@ void VarManager::FillPairPropagateMuon(T1 const& muon1, T2 const& muon2, const C values[kPhi] = v12.Phi(); values[kRap] = -v12.Rapidity(); - double Ptot1 = TMath::Sqrt(v1.Px() * v1.Px() + v1.Py() * v1.Py() + v1.Pz() * v1.Pz()); - double Ptot2 = TMath::Sqrt(v2.Px() * v2.Px() + v2.Py() * v2.Py() + v2.Pz() * v2.Pz()); + double Ptot1 = std::sqrt(v1.Px() * v1.Px() + v1.Py() * v1.Py() + v1.Pz() * v1.Pz()); + double Ptot2 = std::sqrt(v2.Px() * v2.Px() + v2.Py() * v2.Py() + v2.Pz() * v2.Pz()); values[kDeltaPtotTracks] = Ptot1 - Ptot2; } @@ -3890,8 +3888,8 @@ void VarManager::FillPair(T1 const& t1, T2 const& t2, float* values) // values[kPhi] = v12.Phi(); values[kPhi] = RecoDecay::constrainAngle(v12.Phi()); values[kRap] = -v12.Rapidity(); - double Ptot1 = TMath::Sqrt(v1.Px() * v1.Px() + v1.Py() * v1.Py() + v1.Pz() * v1.Pz()); - double Ptot2 = TMath::Sqrt(v2.Px() * v2.Px() + v2.Py() * v2.Py() + v2.Pz() * v2.Pz()); + double Ptot1 = std::sqrt(v1.Px() * v1.Px() + v1.Py() * v1.Py() + v1.Pz() * v1.Pz()); + double Ptot2 = std::sqrt(v2.Px() * v2.Px() + v2.Py() * v2.Py() + v2.Pz() * v2.Pz()); values[kDeltaPtotTracks] = Ptot1 - Ptot2; values[kPt1] = t1.pt(); @@ -3911,8 +3909,8 @@ void VarManager::FillPair(T1 const& t1, T2 const& t2, float* values) if (fgUsedVars[kPsiPair]) { values[kDeltaPhiPair] = (t1.sign() * fgMagField > 0.) ? (v1.Phi() - v2.Phi()) : (v2.Phi() - v1.Phi()); - double xipair = TMath::ACos((v1.Px() * v2.Px() + v1.Py() * v2.Py() + v1.Pz() * v2.Pz()) / v1.P() / v2.P()); - values[kPsiPair] = (t1.sign() * fgMagField > 0.) ? TMath::ASin((v1.Theta() - v2.Theta()) / xipair) : TMath::ASin((v2.Theta() - v1.Theta()) / xipair); + double xipair = std::acos((v1.Px() * v2.Px() + v1.Py() * v2.Py() + v1.Pz() * v2.Pz()) / v1.P() / v2.P()); + values[kPsiPair] = (t1.sign() * fgMagField > 0.) ? std::asin((v1.Theta() - v2.Theta()) / xipair) : std::asin((v2.Theta() - v1.Theta()) / xipair); } if (fgUsedVars[kOpeningAngle]) { @@ -3925,10 +3923,10 @@ void VarManager::FillPair(T1 const& t1, T2 const& t2, float* values) if (arg > 1.) { arg = 1.; } - if (arg < -1) { - arg = -1; + if (arg < o2::dqconstants::InvalidIndex) { + arg = o2::dqconstants::InvalidIndex; } - values[kOpeningAngle] = TMath::ACos(arg); + values[kOpeningAngle] = std::acos(arg); } } @@ -3958,7 +3956,7 @@ void VarManager::FillPair(T1 const& t1, T2 const& t2, float* values) values[kCosThetaHE] = zaxis_HE.Dot(v_CM); } if (fgUsedVars[kPhiHE]) { - values[kPhiHE] = RecoDecay::constrainAngle(TMath::ATan2(yaxis_HE.Dot(v_CM), xaxis_HE.Dot(v_CM))); + values[kPhiHE] = RecoDecay::constrainAngle(std::atan2(yaxis_HE.Dot(v_CM), xaxis_HE.Dot(v_CM))); } if (fgUsedVars[kPhiTildeHE]) { if (fgUsedVars[kCosThetaHE] && fgUsedVars[kPhiHE]) { @@ -3968,7 +3966,7 @@ void VarManager::FillPair(T1 const& t1, T2 const& t2, float* values) values[kPhiTildeHE] = RecoDecay::constrainAngle(values[kPhiHE] - 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 } } else { - values[kPhiTildeHE] = -999; // not computable + values[kPhiTildeHE] = o2::dqconstants::InvalidValueI; // not computable } } } @@ -3981,7 +3979,7 @@ void VarManager::FillPair(T1 const& t1, T2 const& t2, float* values) values[kCosThetaCS] = zaxis_CS.Dot(v_CM); } if (fgUsedVars[kPhiCS]) { - values[kPhiCS] = RecoDecay::constrainAngle(TMath::ATan2(yaxis_CS.Dot(v_CM), xaxis_CS.Dot(v_CM))); + values[kPhiCS] = RecoDecay::constrainAngle(std::atan2(yaxis_CS.Dot(v_CM), xaxis_CS.Dot(v_CM))); } if (fgUsedVars[kPhiTildeCS]) { if (fgUsedVars[kCosThetaCS] && fgUsedVars[kPhiCS]) { @@ -3991,7 +3989,7 @@ void VarManager::FillPair(T1 const& t1, T2 const& t2, float* values) values[kPhiTildeCS] = RecoDecay::constrainAngle(values[kPhiCS] - 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 } } else { - values[kPhiTildeCS] = -999; // not computable + values[kPhiTildeCS] = o2::dqconstants::InvalidValueI; // not computable } } } @@ -4003,7 +4001,7 @@ void VarManager::FillPair(T1 const& t1, T2 const& t2, float* values) ROOT::Math::XYZVectorF motherLab_GJB1{(ROOT::Math::XYZVectorF(v12.Vect())).Unit()}; // y-axis: normal to the production plane (fallback to (0,1,0) if degenerate) ROOT::Math::XYZVectorF yaxis_GJB1{zaxis_GJB1.Cross(motherLab_GJB1)}; - if (yaxis_GJB1.Mag2() > 1.e-6f) { + if (yaxis_GJB1.Mag2() > o2::dqconstants::defaults::GJMinMagnitude) { yaxis_GJB1 = yaxis_GJB1.Unit(); } else { yaxis_GJB1 = ROOT::Math::XYZVectorF(0.f, 1.f, 0.f); @@ -4013,7 +4011,7 @@ void VarManager::FillPair(T1 const& t1, T2 const& t2, float* values) values[kCosThetaGJB1] = zaxis_GJB1.Dot(v_CM); } if (fgUsedVars[kPhiGJB1]) { - values[kPhiGJB1] = RecoDecay::constrainAngle(TMath::ATan2(yaxis_GJB1.Dot(v_CM), xaxis_GJB1.Dot(v_CM))); + values[kPhiGJB1] = RecoDecay::constrainAngle(std::atan2(yaxis_GJB1.Dot(v_CM), xaxis_GJB1.Dot(v_CM))); } if (fgUsedVars[kPhiTildeGJB1]) { if (fgUsedVars[kCosThetaGJB1] && fgUsedVars[kPhiGJB1]) { @@ -4023,7 +4021,7 @@ void VarManager::FillPair(T1 const& t1, T2 const& t2, float* values) values[kPhiTildeGJB1] = RecoDecay::constrainAngle(values[kPhiGJB1] - 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 } } else { - values[kPhiTildeGJB1] = -999; // not computable + values[kPhiTildeGJB1] = o2::dqconstants::InvalidValueI; // not computable } } } @@ -4035,7 +4033,7 @@ void VarManager::FillPair(T1 const& t1, T2 const& t2, float* values) ROOT::Math::XYZVectorF motherLab_GJB2{(ROOT::Math::XYZVectorF(v12.Vect())).Unit()}; // y-axis: normal to the production plane (fallback to (0,1,0) if degenerate) ROOT::Math::XYZVectorF yaxis_GJB2{zaxis_GJB2.Cross(motherLab_GJB2)}; - if (yaxis_GJB2.Mag2() > 1.e-6f) { + if (yaxis_GJB2.Mag2() > o2::dqconstants::defaults::GJMinMagnitude) { yaxis_GJB2 = yaxis_GJB2.Unit(); } else { yaxis_GJB2 = ROOT::Math::XYZVectorF(0.f, 1.f, 0.f); @@ -4045,7 +4043,7 @@ void VarManager::FillPair(T1 const& t1, T2 const& t2, float* values) values[kCosThetaGJB2] = zaxis_GJB2.Dot(v_CM); } if (fgUsedVars[kPhiGJB2]) { - values[kPhiGJB2] = RecoDecay::constrainAngle(TMath::ATan2(yaxis_GJB2.Dot(v_CM), xaxis_GJB2.Dot(v_CM))); + values[kPhiGJB2] = RecoDecay::constrainAngle(std::atan2(yaxis_GJB2.Dot(v_CM), xaxis_GJB2.Dot(v_CM))); } if (fgUsedVars[kPhiTildeGJB2]) { if (fgUsedVars[kCosThetaGJB2] && fgUsedVars[kPhiGJB2]) { @@ -4055,7 +4053,7 @@ void VarManager::FillPair(T1 const& t1, T2 const& t2, float* values) values[kPhiTildeGJB2] = RecoDecay::constrainAngle(values[kPhiGJB2] - 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 } } else { - values[kPhiTildeGJB2] = -999; // not computable + values[kPhiTildeGJB2] = o2::dqconstants::InvalidValueI; // not computable } } } @@ -4068,7 +4066,7 @@ void VarManager::FillPair(T1 const& t1, T2 const& t2, float* values) values[kCosThetaPP] = zaxis_PP.Dot(v_CM) / std::sqrt(zaxis_PP.Mag2()); } if (fgUsedVars[kPhiPP]) { - values[kPhiPP] = RecoDecay::constrainAngle(TMath::ATan2(yaxis_PP.Dot(v_CM), xaxis_PP.Dot(v_CM))); + values[kPhiPP] = RecoDecay::constrainAngle(std::atan2(yaxis_PP.Dot(v_CM), xaxis_PP.Dot(v_CM))); } if (fgUsedVars[kPhiTildePP]) { if (fgUsedVars[kCosThetaPP] && fgUsedVars[kPhiPP]) { @@ -4078,7 +4076,7 @@ void VarManager::FillPair(T1 const& t1, T2 const& t2, float* values) values[kPhiTildePP] = RecoDecay::constrainAngle(values[kPhiPP] - 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 } } else { - values[kPhiTildePP] = -999; // not computable + values[kPhiTildePP] = o2::dqconstants::InvalidValueI; // not computable } } } @@ -4102,14 +4100,14 @@ void VarManager::FillPair(T1 const& t1, T2 const& t2, float* values) ROOT::Math::XYZVectorF v_CM = (t1.sign() > 0 ? v1_CM : v2_CM); // Randomize the event plane angle to check the unpolarized contribution - ROOT::Math::XYZVector zaxisRandom = ROOT::Math::XYZVector(TMath::Cos(values[kRandomPsi2]), TMath::Sin(values[kRandomPsi2]), 0).Unit(); + ROOT::Math::XYZVector zaxisRandom = ROOT::Math::XYZVector(std::cos(values[kRandomPsi2]), std::sin(values[kRandomPsi2]), 0).Unit(); values[kCosThetaStarRandom] = v_CM.Dot(zaxisRandom); values[kCos2ThetaStarRandom] = values[kCosThetaStarRandom] * values[kCosThetaStarRandom]; // if the truth event plane angle is available, calculate the cos(theta*) with respect to the true event plane angle for comparison if (fgUsedVars[kMCCosThetaStar] && fgUsedVars[kMCEventPlaneAngle]) { // truth event plane angle - ROOT::Math::XYZVector zaxisTrue = ROOT::Math::XYZVector(TMath::Cos(values[kMCEventPlaneAngle]), TMath::Sin(values[kMCEventPlaneAngle]), 0).Unit(); + ROOT::Math::XYZVector zaxisTrue = ROOT::Math::XYZVector(std::cos(values[kMCEventPlaneAngle]), std::sin(values[kMCEventPlaneAngle]), 0).Unit(); values[kMCCosThetaStar] = v_CM.Dot(zaxisTrue); } } @@ -4152,12 +4150,12 @@ void VarManager::FillPair(T1 const& t1, T2 const& t2, float* values) values[kQuadDCAsigXY] = std::sqrt((dca1sigXY * dca1sigXY + dca2sigXY * dca2sigXY) / 2); values[kQuadDCAabsZ] = std::sqrt((dca1Z * dca1Z + dca2Z * dca2Z) / 2); values[kQuadDCAsigZ] = std::sqrt((dca1sigZ * dca1sigZ + dca2sigZ * dca2sigZ) / 2); - values[kSignQuadDCAsigXY] = t1.sign() * t2.sign() * TMath::Sign(1., dca1sigXY) * TMath::Sign(1., dca2sigXY) * std::sqrt((dca1sigXY * dca1sigXY + dca2sigXY * dca2sigXY) / 2); + values[kSignQuadDCAsigXY] = t1.sign() * t2.sign() * std::copysign(1., dca1sigXY) * std::copysign(1., dca2sigXY) * std::sqrt((dca1sigXY * dca1sigXY + dca2sigXY * dca2sigXY) / 2); double det1 = t1.cYY() * t1.cZZ() - t1.cZY() * t1.cZY(); double det2 = t2.cYY() * t2.cZZ() - t2.cZY() * t2.cZY(); if ((det1 < 0) || (det2 < 0)) { - values[kQuadDCAsigXYZ] = -999; + values[kQuadDCAsigXYZ] = o2::dqconstants::InvalidValueI; } else { double chi2t1 = (dca1XY * dca1XY * t1.cZZ() + dca1Z * dca1Z * t1.cYY() - 2. * dca1XY * dca1Z * t1.cZY()) / det1; double chi2t2 = (dca2XY * dca2XY * t2.cZZ() + dca2Z * dca2Z * t2.cYY() - 2. * dca2XY * dca2Z * t2.cZY()) / det2; @@ -4225,19 +4223,15 @@ void VarManager::FillPairRotation(T1 const& t1, T2 const& t2, int rotation, floa double rotationphi2 = t2.phi(); - if (rotation == 1) { + if (rotation == o2::dqconstants::defaults::RotationType1) { rotationphi2 = t2.phi() + o2::constants::math::PI; - } else if (rotation == 2) { + } else if (rotation == o2::dqconstants::defaults::RotationType2) { rotationphi2 = 2 * values[kPsi2A] - t2.phi(); - } else if (rotation == 3) { + } else if (rotation == o2::dqconstants::defaults::RotationType3) { rotationphi2 = 2 * values[kPsi2A] - t2.phi() + o2::constants::math::PI; } - if (rotationphi2 >= o2::constants::math::TwoPI) { - rotationphi2 -= o2::constants::math::TwoPI; - } else if (rotationphi2 < 0) { - rotationphi2 += o2::constants::math::TwoPI; - } + rotationphi2 = RecoDecay::constrainAngle(rotationphi2, 0.f); values[kCharge] = t1.sign() + t2.sign(); values[kCharge1] = t1.sign(); @@ -4251,8 +4245,8 @@ void VarManager::FillPairRotation(T1 const& t1, T2 const& t2, int rotation, floa // values[kPhi] = v12.Phi(); values[kPhi] = RecoDecay::constrainAngle(v12.Phi()); values[kRap] = -v12.Rapidity(); - double Ptot1 = TMath::Sqrt(v1.Px() * v1.Px() + v1.Py() * v1.Py() + v1.Pz() * v1.Pz()); - double Ptot2 = TMath::Sqrt(v2.Px() * v2.Px() + v2.Py() * v2.Py() + v2.Pz() * v2.Pz()); + double Ptot1 = std::sqrt(v1.Px() * v1.Px() + v1.Py() * v1.Py() + v1.Pz() * v1.Pz()); + double Ptot2 = std::sqrt(v2.Px() * v2.Px() + v2.Py() * v2.Py() + v2.Pz() * v2.Pz()); values[kDeltaPtotTracks] = Ptot1 - Ptot2; values[kPt1] = t1.pt(); @@ -4275,11 +4269,11 @@ void VarManager::FillPairCollision(const C& collision, T1 const& t1, T2 const& t if (fgUsedVars[kQuadDCAabsXY] || fgUsedVars[kQuadDCAsigXY] || fgUsedVars[kQuadDCAabsZ] || fgUsedVars[kQuadDCAsigZ] || fgUsedVars[kQuadDCAsigXYZ] || fgUsedVars[kSignQuadDCAsigXY]) { auto trackPart1 = getTrackPar(t1); - std::array dca1{1e10f, 1e10f}; + std::array dca1{o2::dqconstants::defaults::InitialDCA, o2::dqconstants::defaults::InitialDCA}; trackPart1.propagateParamToDCA({collision.posX(), collision.posY(), collision.posZ()}, fgMagField, &dca1); auto trackPart2 = getTrackPar(t2); - std::array dca2{1e10f, 1e10f}; + std::array dca2{o2::dqconstants::defaults::InitialDCA, o2::dqconstants::defaults::InitialDCA}; trackPart2.propagateParamToDCA({collision.posX(), collision.posY(), collision.posZ()}, fgMagField, &dca2); // Recalculated quantities @@ -4296,12 +4290,12 @@ void VarManager::FillPairCollision(const C& collision, T1 const& t1, T2 const& t values[kQuadDCAsigXY] = std::sqrt((dca1sigXY * dca1sigXY + dca2sigXY * dca2sigXY) / 2); values[kQuadDCAabsZ] = std::sqrt((dca1Z * dca1Z + dca2Z * dca2Z) / 2); values[kQuadDCAsigZ] = std::sqrt((dca1sigZ * dca1sigZ + dca2sigZ * dca2sigZ) / 2); - values[kSignQuadDCAsigXY] = t1.sign() * t2.sign() * TMath::Sign(1., dca1sigXY) * TMath::Sign(1., dca2sigXY) * std::sqrt((dca1sigXY * dca1sigXY + dca2sigXY * dca2sigXY) / 2); + values[kSignQuadDCAsigXY] = t1.sign() * t2.sign() * std::copysign(1., dca1sigXY) * std::copysign(1., dca2sigXY) * std::sqrt((dca1sigXY * dca1sigXY + dca2sigXY * dca2sigXY) / 2); double det1 = t1.cYY() * t1.cZZ() - t1.cZY() * t1.cZY(); double det2 = t2.cYY() * t2.cZZ() - t2.cZY() * t2.cZY(); if ((det1 < 0) || (det2 < 0)) { - values[kQuadDCAsigXYZ] = -999; + values[kQuadDCAsigXYZ] = o2::dqconstants::InvalidValueI; } else { double chi2t1 = (dca1XY * dca1XY * t1.cZZ() + dca1Z * dca1Z * t1.cYY() - 2. * dca1XY * dca1Z * t1.cZY()) / det1; double chi2t2 = (dca2XY * dca2XY * t2.cZZ() + dca2Z * dca2Z * t2.cYY() - 2. * dca2XY * dca2Z * t2.cZY()) / det2; @@ -4327,15 +4321,15 @@ void VarManager::FillPairCollisionMatCorr(C const& collision, T1 const& t1, T2 c if (fgUsedVars[kQuadDCAabsXY] || fgUsedVars[kQuadDCAsigXY] || fgUsedVars[kQuadDCAabsZ] || fgUsedVars[kQuadDCAsigZ] || fgUsedVars[kQuadDCAsigXYZ] || fgUsedVars[kSignQuadDCAsigXY]) { auto trackPart1 = getTrackPar(t1); - std::array dca1{1e10f, 1e10f}; - std::array pVect1 = {t1.px(), t1.py(), t1.pz()}; + std::array dca1{o2::dqconstants::defaults::InitialDCA, o2::dqconstants::defaults::InitialDCA}; + std::array pVect1 = {t1.px(), t1.py(), t1.pz()}; // trackPar.propagateParamToDCA({collision.posX(), collision.posY(), collision.posZ()}, fgMagField, &dca); propagator->propagateToDCABxByBz({collision.posX(), collision.posY(), collision.posZ()}, trackPart1, 2.f, materialCorr, &dca1); getPxPyPz(trackPart1, pVect1); auto trackPart2 = getTrackPar(t2); - std::array dca2{1e10f, 1e10f}; - std::array pVect2 = {t2.px(), t2.py(), t2.pz()}; + std::array dca2{o2::dqconstants::defaults::InitialDCA, o2::dqconstants::defaults::InitialDCA}; + std::array pVect2 = {t2.px(), t2.py(), t2.pz()}; // trackPar.propagateParamToDCA({collision.posX(), collision.posY(), collision.posZ()}, fgMagField, &dca); propagator->propagateToDCABxByBz({collision.posX(), collision.posY(), collision.posZ()}, trackPart2, 2.f, materialCorr, &dca2); getPxPyPz(trackPart2, pVect2); @@ -4354,12 +4348,12 @@ void VarManager::FillPairCollisionMatCorr(C const& collision, T1 const& t1, T2 c values[kQuadDCAsigXY] = std::sqrt((dca1sigXY * dca1sigXY + dca2sigXY * dca2sigXY) / 2); values[kQuadDCAabsZ] = std::sqrt((dca1Z * dca1Z + dca2Z * dca2Z) / 2); values[kQuadDCAsigZ] = std::sqrt((dca1sigZ * dca1sigZ + dca2sigZ * dca2sigZ) / 2); - values[kSignQuadDCAsigXY] = t1.sign() * t2.sign() * TMath::Sign(1., dca1sigXY) * TMath::Sign(1., dca2sigXY) * std::sqrt((dca1sigXY * dca1sigXY + dca2sigXY * dca2sigXY) / 2); + values[kSignQuadDCAsigXY] = t1.sign() * t2.sign() * std::copysign(1., dca1sigXY) * std::copysign(1., dca2sigXY) * std::sqrt((dca1sigXY * dca1sigXY + dca2sigXY * dca2sigXY) / 2); double det1 = t1.cYY() * t1.cZZ() - t1.cZY() * t1.cZY(); double det2 = t2.cYY() * t2.cZZ() - t2.cZY() * t2.cZY(); if ((det1 < 0) || (det2 < 0)) { - values[kQuadDCAsigXYZ] = -999; + values[kQuadDCAsigXYZ] = o2::dqconstants::InvalidValueI; } else { double chi2t1 = (dca1XY * dca1XY * t1.cZZ() + dca1Z * dca1Z * t1.cYY() - 2. * dca1XY * dca1Z * t1.cZY()) / det1; double chi2t2 = (dca2XY * dca2XY * t2.cZZ() + dca2Z * dca2Z * t2.cYY() - 2. * dca2XY * dca2Z * t2.cZY()) / det2; @@ -4523,7 +4517,7 @@ void VarManager::FillPairME(T1 const& t1, T2 const& t2, float* values) values[kCosThetaHE] = zaxis_HE.Dot(v_CM); } if (fgUsedVars[kPhiHE]) { - values[kPhiHE] = RecoDecay::constrainAngle(TMath::ATan2(yaxis_HE.Dot(v_CM), xaxis_HE.Dot(v_CM))); + values[kPhiHE] = RecoDecay::constrainAngle(std::atan2(yaxis_HE.Dot(v_CM), xaxis_HE.Dot(v_CM))); } if (fgUsedVars[kPhiTildeHE]) { if (fgUsedVars[kCosThetaHE] && fgUsedVars[kPhiHE]) { @@ -4533,7 +4527,7 @@ void VarManager::FillPairME(T1 const& t1, T2 const& t2, float* values) values[kPhiTildeHE] = RecoDecay::constrainAngle(values[kPhiHE] - 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 } } else { - values[kPhiTildeHE] = -999; // not computable + values[kPhiTildeHE] = o2::dqconstants::InvalidValueI; // not computable } } } @@ -4546,7 +4540,7 @@ void VarManager::FillPairME(T1 const& t1, T2 const& t2, float* values) values[kCosThetaCS] = zaxis_CS.Dot(v_CM); } if (fgUsedVars[kPhiCS]) { - values[kPhiCS] = RecoDecay::constrainAngle(TMath::ATan2(yaxis_CS.Dot(v_CM), xaxis_CS.Dot(v_CM))); + values[kPhiCS] = RecoDecay::constrainAngle(std::atan2(yaxis_CS.Dot(v_CM), xaxis_CS.Dot(v_CM))); } if (fgUsedVars[kPhiTildeCS]) { if (fgUsedVars[kCosThetaCS] && fgUsedVars[kPhiCS]) { @@ -4556,7 +4550,7 @@ void VarManager::FillPairME(T1 const& t1, T2 const& t2, float* values) values[kPhiTildeCS] = RecoDecay::constrainAngle(values[kPhiCS] - 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 } } else { - values[kPhiTildeCS] = -999; // not computable + values[kPhiTildeCS] = o2::dqconstants::InvalidValueI; // not computable } } } @@ -4568,7 +4562,7 @@ void VarManager::FillPairME(T1 const& t1, T2 const& t2, float* values) ROOT::Math::XYZVectorF motherLab_GJB1{(ROOT::Math::XYZVectorF(v12.Vect())).Unit()}; // y-axis: normal to the production plane ROOT::Math::XYZVectorF yaxis_GJB1{zaxis_GJB1.Cross(motherLab_GJB1)}; - if (yaxis_GJB1.Mag2() > 1.e-6f) { + if (yaxis_GJB1.Mag2() > o2::dqconstants::defaults::GJMinMagnitude) { yaxis_GJB1 = yaxis_GJB1.Unit(); } else { yaxis_GJB1 = ROOT::Math::XYZVectorF(0.f, 1.f, 0.f); @@ -4578,7 +4572,7 @@ void VarManager::FillPairME(T1 const& t1, T2 const& t2, float* values) values[kCosThetaGJB1] = zaxis_GJB1.Dot(v_CM); } if (fgUsedVars[kPhiGJB1]) { - values[kPhiGJB1] = RecoDecay::constrainAngle(TMath::ATan2(yaxis_GJB1.Dot(v_CM), xaxis_GJB1.Dot(v_CM))); + values[kPhiGJB1] = RecoDecay::constrainAngle(std::atan2(yaxis_GJB1.Dot(v_CM), xaxis_GJB1.Dot(v_CM))); } if (fgUsedVars[kPhiTildeGJB1]) { if (fgUsedVars[kCosThetaGJB1] && fgUsedVars[kPhiGJB1]) { @@ -4588,7 +4582,7 @@ void VarManager::FillPairME(T1 const& t1, T2 const& t2, float* values) values[kPhiTildeGJB1] = RecoDecay::constrainAngle(values[kPhiGJB1] - 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 } } else { - values[kPhiTildeGJB1] = -999; // not computable + values[kPhiTildeGJB1] = o2::dqconstants::InvalidValueI; // not computable } } } @@ -4600,7 +4594,7 @@ void VarManager::FillPairME(T1 const& t1, T2 const& t2, float* values) ROOT::Math::XYZVectorF motherLab_GJB2{(ROOT::Math::XYZVectorF(v12.Vect())).Unit()}; // y-axis: normal to the production plane (fallback to (0,1,0) if degenerate) ROOT::Math::XYZVectorF yaxis_GJB2{zaxis_GJB2.Cross(motherLab_GJB2)}; - if (yaxis_GJB2.Mag2() > 1.e-6f) { + if (yaxis_GJB2.Mag2() > o2::dqconstants::defaults::GJMinMagnitude) { yaxis_GJB2 = yaxis_GJB2.Unit(); } else { yaxis_GJB2 = ROOT::Math::XYZVectorF(0.f, 1.f, 0.f); @@ -4610,7 +4604,7 @@ void VarManager::FillPairME(T1 const& t1, T2 const& t2, float* values) values[kCosThetaGJB2] = zaxis_GJB2.Dot(v_CM); } if (fgUsedVars[kPhiGJB2]) { - values[kPhiGJB2] = RecoDecay::constrainAngle(TMath::ATan2(yaxis_GJB2.Dot(v_CM), xaxis_GJB2.Dot(v_CM))); + values[kPhiGJB2] = RecoDecay::constrainAngle(std::atan2(yaxis_GJB2.Dot(v_CM), xaxis_GJB2.Dot(v_CM))); } if (fgUsedVars[kPhiTildeGJB2]) { if (fgUsedVars[kCosThetaGJB2] && fgUsedVars[kPhiGJB2]) { @@ -4620,7 +4614,7 @@ void VarManager::FillPairME(T1 const& t1, T2 const& t2, float* values) values[kPhiTildeGJB2] = RecoDecay::constrainAngle(values[kPhiGJB2] - 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 } } else { - values[kPhiTildeGJB2] = -999; // not computable + values[kPhiTildeGJB2] = o2::dqconstants::InvalidValueI; } } } @@ -4633,7 +4627,7 @@ void VarManager::FillPairME(T1 const& t1, T2 const& t2, float* values) values[kCosThetaPP] = zaxis_PP.Dot(v_CM) / std::sqrt(zaxis_PP.Mag2()); } if (fgUsedVars[kPhiPP]) { - values[kPhiPP] = RecoDecay::constrainAngle(TMath::ATan2(yaxis_PP.Dot(v_CM), xaxis_PP.Dot(v_CM))); + values[kPhiPP] = RecoDecay::constrainAngle(std::atan2(yaxis_PP.Dot(v_CM), xaxis_PP.Dot(v_CM))); } if (fgUsedVars[kPhiTildePP]) { if (fgUsedVars[kCosThetaPP] && fgUsedVars[kPhiPP]) { @@ -4643,7 +4637,7 @@ void VarManager::FillPairME(T1 const& t1, T2 const& t2, float* values) values[kPhiTildePP] = RecoDecay::constrainAngle(values[kPhiPP] - 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 } } else { - values[kPhiTildePP] = -999; // not computable + values[kPhiTildePP] = o2::dqconstants::InvalidValueI; } } } @@ -4667,15 +4661,15 @@ void VarManager::FillPairME(T1 const& t1, T2 const& t2, float* values) float Psi2B2 = getEventPlane(2, values[kQ2X0B2], values[kQ2Y0B2]); float Psi2C1 = getEventPlane(2, values[kQ2X0C1], values[kQ2Y0C1]); float Psi2C2 = getEventPlane(2, values[kQ2X0C2], values[kQ2Y0C2]); - values[kCos2DeltaPhi] = TMath::Cos(2 * (v12.Phi() - Psi2A1)); // WARNING: using the first event EP - values[kCos2DeltaPhiEv1] = TMath::Cos(2 * (v1.Phi() - Psi2A1)); - values[kCos2DeltaPhiEv2] = TMath::Cos(2 * (v2.Phi() - Psi2A2)); - values[kU2Q2] = values[kQ2X0A1] * TMath::Cos(2 * v12.Phi()) + values[kQ2Y0A1] * TMath::Sin(2 * v12.Phi()); // WARNING: using the first event EP - values[kU2Q2Ev1] = values[kQ2X0A1] * TMath::Cos(2 * v1.Phi()) + values[kQ2Y0A1] * TMath::Sin(2 * v1.Phi()); - values[kU2Q2Ev2] = values[kQ2X0A2] * TMath::Cos(2 * v2.Phi()) + values[kQ2Y0A2] * TMath::Sin(2 * v2.Phi()); + values[kCos2DeltaPhi] = std::cos(2 * (v12.Phi() - Psi2A1)); // WARNING: using the first event EP + values[kCos2DeltaPhiEv1] = std::cos(2 * (v1.Phi() - Psi2A1)); + values[kCos2DeltaPhiEv2] = std::cos(2 * (v2.Phi() - Psi2A2)); + values[kU2Q2] = values[kQ2X0A1] * std::cos(2 * v12.Phi()) + values[kQ2Y0A1] * std::sin(2 * v12.Phi()); // WARNING: using the first event EP + values[kU2Q2Ev1] = values[kQ2X0A1] * std::cos(2 * v1.Phi()) + values[kQ2Y0A1] * std::sin(2 * v1.Phi()); + values[kU2Q2Ev2] = values[kQ2X0A2] * std::cos(2 * v2.Phi()) + values[kQ2Y0A2] * std::sin(2 * v2.Phi()); - values[kCos2DeltaPhiMu1] = TMath::Cos(2 * (v1.Phi() - v12.Phi())); - values[kCos2DeltaPhiMu2] = TMath::Cos(2 * (v2.Phi() - v12.Phi())); + values[kCos2DeltaPhiMu1] = std::cos(2 * (v1.Phi() - v12.Phi())); + values[kCos2DeltaPhiMu2] = std::cos(2 * (v2.Phi() - v12.Phi())); values[kV2SP1] = values[kU2Q2Ev1] / values[kTwoR2SP1]; values[kV2SP2] = values[kU2Q2Ev2] / values[kTwoR2SP2]; @@ -4710,32 +4704,32 @@ void VarManager::FillPairME(T1 const& t1, T2 const& t2, float* values) // reaction plane float phi = RecoDecay::constrainAngle(v_daughter.Phi(), -o2::constants::math::PI); values[kDeltaPhiME_TPC] = phi > Psi2A ? phi - Psi2A : Psi2A - phi; - values[kDeltaPhiME_TPC] = values[kDeltaPhiME_TPC] > TMath::Pi() ? 2. * TMath::Pi() - values[kDeltaPhiME_TPC] : values[kDeltaPhiME_TPC]; + values[kDeltaPhiME_TPC] = values[kDeltaPhiME_TPC] > o2::constants::math::PI ? o2::constants::math::TwoPI - values[kDeltaPhiME_TPC] : values[kDeltaPhiME_TPC]; values[kDeltaPhiME_FT0A] = phi > Psi2B ? phi - Psi2B : Psi2B - phi; - values[kDeltaPhiME_FT0A] = values[kDeltaPhiME_FT0A] > TMath::Pi() ? 2. * TMath::Pi() - values[kDeltaPhiME_FT0A] : values[kDeltaPhiME_FT0A]; + values[kDeltaPhiME_FT0A] = values[kDeltaPhiME_FT0A] > o2::constants::math::PI ? o2::constants::math::TwoPI - values[kDeltaPhiME_FT0A] : values[kDeltaPhiME_FT0A]; values[kDeltaPhiME_FT0C] = phi > Psi2C ? phi - Psi2C : Psi2C - phi; - values[kDeltaPhiME_FT0C] = values[kDeltaPhiME_FT0C] > TMath::Pi() ? 2. * TMath::Pi() - values[kDeltaPhiME_FT0C] : values[kDeltaPhiME_FT0C]; + values[kDeltaPhiME_FT0C] = values[kDeltaPhiME_FT0C] > o2::constants::math::PI ? o2::constants::math::TwoPI - values[kDeltaPhiME_FT0C] : values[kDeltaPhiME_FT0C]; // fold delta phMEi to [0, pi/2] - values[kDeltaPhiME_TPC] = values[kDeltaPhiME_TPC] > TMath::Pi() / 2. ? TMath::Pi() - values[kDeltaPhiME_TPC] : values[kDeltaPhiME_TPC]; - values[kDeltaPhiME_FT0A] = values[kDeltaPhiME_FT0A] > TMath::Pi() / 2. ? TMath::Pi() - values[kDeltaPhiME_FT0A] : values[kDeltaPhiME_FT0A]; - values[kDeltaPhiME_FT0C] = values[kDeltaPhiME_FT0C] > TMath::Pi() / 2. ? TMath::Pi() - values[kDeltaPhiME_FT0C] : values[kDeltaPhiME_FT0C]; - values[kCos2DeltaPhiME_TPC] = TMath::Cos(2. * (phi - Psi2A)); - values[kCos2DeltaPhiME_FT0A] = TMath::Cos(2. * (phi - Psi2B)); - values[kCos2DeltaPhiME_FT0C] = TMath::Cos(2. * (phi - Psi2C)); + values[kDeltaPhiME_TPC] = values[kDeltaPhiME_TPC] > o2::constants::math::PIHalf ? o2::constants::math::PI - values[kDeltaPhiME_TPC] : values[kDeltaPhiME_TPC]; + values[kDeltaPhiME_FT0A] = values[kDeltaPhiME_FT0A] > o2::constants::math::PIHalf ? o2::constants::math::PI - values[kDeltaPhiME_FT0A] : values[kDeltaPhiME_FT0A]; + values[kDeltaPhiME_FT0C] = values[kDeltaPhiME_FT0C] > o2::constants::math::PIHalf ? o2::constants::math::PI - values[kDeltaPhiME_FT0C] : values[kDeltaPhiME_FT0C]; + values[kCos2DeltaPhiME_TPC] = std::cos(2. * (phi - Psi2A)); + values[kCos2DeltaPhiME_FT0A] = std::cos(2. * (phi - Psi2B)); + values[kCos2DeltaPhiME_FT0C] = std::cos(2. * (phi - Psi2C)); float A2_TPC = values[kCos2DeltaPhiME_TPC] / R2EP; float A2_FT0A = values[kCos2DeltaPhiME_FT0A] / R2EP; float A2_FT0C = values[kCos2DeltaPhiME_FT0C] / R2EP; - values[kA2EPME_TPC] = std::isnan(A2_TPC) || std::isinf(A2_TPC) ? -999. : A2_TPC; - values[kA2EPME_FT0A] = std::isnan(A2_FT0A) || std::isinf(A2_FT0A) ? -999. : A2_FT0A; - values[kA2EPME_FT0C] = std::isnan(A2_FT0C) || std::isinf(A2_FT0C) ? -999. : A2_FT0C; + values[kA2EPME_TPC] = std::isnan(A2_TPC) || std::isinf(A2_TPC) ? o2::dqconstants::InvalidValueF : A2_TPC; + values[kA2EPME_FT0A] = std::isnan(A2_FT0A) || std::isinf(A2_FT0A) ? o2::dqconstants::InvalidValueF : A2_FT0A; + values[kA2EPME_FT0C] = std::isnan(A2_FT0C) || std::isinf(A2_FT0C) ? o2::dqconstants::InvalidValueF : A2_FT0C; } if constexpr ((fillMap & ReducedEventQvectorExtra) > 0) { std::complex Q21(values[kQ2X0A] * values[kS11A], values[kQ2Y0A] * values[kS11A]); std::complex Q42(values[kQ42XA], values[kQ42YA]); std::complex Q23(values[kQ23XA], values[kQ23YA]); - std::complex P2(TMath::Cos(2 * v12.Phi()), TMath::Sin(2 * v12.Phi())); + std::complex P2(std::cos(2 * v12.Phi()), std::sin(2 * v12.Phi())); values[kM01POIME] = values[kMultDimuonsME] * values[kS11A]; values[kM0111POIME] = values[kMultDimuonsME] * (values[kS31A] - 3. * values[kS11A] * values[kS12A] + 2. * values[kS13A]); values[kCORR2POIME] = (P2 * conj(Q21)).real() / values[kM01POIME]; @@ -4776,19 +4770,15 @@ void VarManager::FillPairRotation_ME(T const& t1, T const& t2, int rotation, flo float m1 = o2::constants::physics::MassElectron; double rotationphi2 = t2.phi; - if (rotation == 1) { + if (rotation == o2::dqconstants::defaults::RotationType1) { rotationphi2 = t2.phi + o2::constants::math::PI; - } else if (rotation == 2) { + } else if (rotation == o2::dqconstants::defaults::RotationType2) { rotationphi2 = 2 * values[kPsi2A] - t2.phi; - } else if (rotation == 3) { + } else if (rotation == o2::dqconstants::defaults::RotationType3) { rotationphi2 = 2 * values[kPsi2A] - t2.phi + o2::constants::math::PI; } - if (rotationphi2 >= o2::constants::math::TwoPI) { - rotationphi2 -= o2::constants::math::TwoPI; - } else if (rotationphi2 < 0) { - rotationphi2 += o2::constants::math::TwoPI; - } + rotationphi2 = RecoDecay::constrainAngle(rotationphi2, 0.f); ROOT::Math::PtEtaPhiMVector v1(t1.pt, t1.eta, t1.phi, m1); ROOT::Math::PtEtaPhiMVector v2(t2.pt, t2.eta, rotationphi2, m1); @@ -4799,8 +4789,8 @@ void VarManager::FillPairRotation_ME(T const& t1, T const& t2, int rotation, flo // values[kPhi] = v12.Phi(); values[kPhi] = RecoDecay::constrainAngle(v12.Phi()); values[kRap] = -v12.Rapidity(); - double Ptot1 = TMath::Sqrt(v1.Px() * v1.Px() + v1.Py() * v1.Py() + v1.Pz() * v1.Pz()); - double Ptot2 = TMath::Sqrt(v2.Px() * v2.Px() + v2.Py() * v2.Py() + v2.Pz() * v2.Pz()); + double Ptot1 = std::sqrt(v1.Px() * v1.Px() + v1.Py() * v1.Py() + v1.Pz() * v1.Pz()); + double Ptot2 = std::sqrt(v2.Px() * v2.Px() + v2.Py() * v2.Py() + v2.Pz() * v2.Pz()); values[kDeltaPtotTracks] = Ptot1 - Ptot2; values[kPt1] = t1.pt; @@ -4834,14 +4824,14 @@ void VarManager::FillPairMEAcrossTFs(T const& t1, T const& t2, float* values) if (fgUsedVars[kCosThetaStarRandom]) { // Randomize the event plane angle to check the unpolarized contribution - ROOT::Math::XYZVector zaxisRandom = ROOT::Math::XYZVector(TMath::Cos(values[kRandomPsi2]), TMath::Sin(values[kRandomPsi2]), 0).Unit(); + ROOT::Math::XYZVector zaxisRandom = ROOT::Math::XYZVector(std::cos(values[kRandomPsi2]), std::sin(values[kRandomPsi2]), 0).Unit(); values[kCosThetaStarRandom] = v_CM.Dot(zaxisRandom); values[kCos2ThetaStarRandom] = values[kCosThetaStarRandom] * values[kCosThetaStarRandom]; } if (fgUsedVars[kCosThetaStarFT0C]) { // event plane angle from FT0C - ROOT::Math::XYZVector zaxisFT0C = ROOT::Math::XYZVector(TMath::Cos(values[kPsi2C]), TMath::Sin(values[kPsi2C]), 0).Unit(); + ROOT::Math::XYZVector zaxisFT0C = ROOT::Math::XYZVector(std::cos(values[kPsi2C]), std::sin(values[kPsi2C]), 0).Unit(); values[kCosThetaStarFT0C] = v_CM.Dot(zaxisFT0C); values[kAbsCosThetaStarFT0C] = std::abs(values[kCosThetaStarFT0C]); values[kCos2ThetaStarFT0C] = values[kCosThetaStarFT0C] * values[kCosThetaStarFT0C]; @@ -4859,25 +4849,25 @@ void VarManager::FillPairMEAcrossTFs(T const& t1, T const& t2, float* values) // reaction plane float phi = RecoDecay::constrainAngle(v_daughter.Phi(), -o2::constants::math::PI); values[kDeltaPhi_TPC] = phi > Psi2A ? phi - Psi2A : Psi2A - phi; - values[kDeltaPhi_TPC] = values[kDeltaPhi_TPC] > TMath::Pi() ? 2. * TMath::Pi() - values[kDeltaPhi_TPC] : values[kDeltaPhi_TPC]; + values[kDeltaPhi_TPC] = values[kDeltaPhi_TPC] > o2::constants::math::PI ? o2::constants::math::TwoPI - values[kDeltaPhi_TPC] : values[kDeltaPhi_TPC]; values[kDeltaPhi_FT0A] = phi > Psi2B ? phi - Psi2B : Psi2B - phi; - values[kDeltaPhi_FT0A] = values[kDeltaPhi_FT0A] > TMath::Pi() ? 2. * TMath::Pi() - values[kDeltaPhi_FT0A] : values[kDeltaPhi_FT0A]; + values[kDeltaPhi_FT0A] = values[kDeltaPhi_FT0A] > o2::constants::math::PI ? o2::constants::math::TwoPI - values[kDeltaPhi_FT0A] : values[kDeltaPhi_FT0A]; values[kDeltaPhi_FT0C] = phi > Psi2C ? phi - Psi2C : Psi2C - phi; - values[kDeltaPhi_FT0C] = values[kDeltaPhi_FT0C] > TMath::Pi() ? 2. * TMath::Pi() - values[kDeltaPhi_FT0C] : values[kDeltaPhi_FT0C]; + values[kDeltaPhi_FT0C] = values[kDeltaPhi_FT0C] > o2::constants::math::PI ? o2::constants::math::TwoPI - values[kDeltaPhi_FT0C] : values[kDeltaPhi_FT0C]; // fold delta phi to [0, pi/2] - values[kDeltaPhi_TPC] = values[kDeltaPhi_TPC] > TMath::Pi() / 2. ? TMath::Pi() - values[kDeltaPhi_TPC] : values[kDeltaPhi_TPC]; - values[kDeltaPhi_FT0A] = values[kDeltaPhi_FT0A] > TMath::Pi() / 2. ? TMath::Pi() - values[kDeltaPhi_FT0A] : values[kDeltaPhi_FT0A]; - values[kDeltaPhi_FT0C] = values[kDeltaPhi_FT0C] > TMath::Pi() / 2. ? TMath::Pi() - values[kDeltaPhi_FT0C] : values[kDeltaPhi_FT0C]; - values[kCos2DeltaPhi_TPC] = TMath::Cos(2. * (phi - Psi2A)); - values[kCos2DeltaPhi_FT0A] = TMath::Cos(2. * (phi - Psi2B)); - values[kCos2DeltaPhi_FT0C] = TMath::Cos(2. * (phi - Psi2C)); + values[kDeltaPhi_TPC] = values[kDeltaPhi_TPC] > o2::constants::math::PIHalf ? o2::constants::math::PI - values[kDeltaPhi_TPC] : values[kDeltaPhi_TPC]; + values[kDeltaPhi_FT0A] = values[kDeltaPhi_FT0A] > o2::constants::math::PIHalf ? o2::constants::math::PI - values[kDeltaPhi_FT0A] : values[kDeltaPhi_FT0A]; + values[kDeltaPhi_FT0C] = values[kDeltaPhi_FT0C] > o2::constants::math::PIHalf ? o2::constants::math::PI - values[kDeltaPhi_FT0C] : values[kDeltaPhi_FT0C]; + values[kCos2DeltaPhi_TPC] = std::cos(2. * (phi - Psi2A)); + values[kCos2DeltaPhi_FT0A] = std::cos(2. * (phi - Psi2B)); + values[kCos2DeltaPhi_FT0C] = std::cos(2. * (phi - Psi2C)); float A2RP_TPC = values[kCos2DeltaPhi_TPC] / values[kR2EP]; float A2RP_FT0A = values[kCos2DeltaPhi_FT0A] / values[kR2EP]; float A2RP_FT0C = values[kCos2DeltaPhi_FT0C] / values[kR2EP]; - values[kA2EP_TPC] = std::isnan(A2RP_TPC) || std::isinf(A2RP_TPC) ? -999. : A2RP_TPC; - values[kA2EP_FT0A] = std::isnan(A2RP_FT0A) || std::isinf(A2RP_FT0A) ? -999. : A2RP_FT0A; - values[kA2EP_FT0C] = std::isnan(A2RP_FT0C) || std::isinf(A2RP_FT0C) ? -999. : A2RP_FT0C; + values[kA2EP_TPC] = std::isnan(A2RP_TPC) || std::isinf(A2RP_TPC) ? o2::dqconstants::InvalidValueF : A2RP_TPC; + values[kA2EP_FT0A] = std::isnan(A2RP_FT0A) || std::isinf(A2RP_FT0A) ? o2::dqconstants::InvalidValueF : A2RP_FT0A; + values[kA2EP_FT0C] = std::isnan(A2RP_FT0C) || std::isinf(A2RP_FT0C) ? o2::dqconstants::InvalidValueF : A2RP_FT0C; } } @@ -4951,7 +4941,7 @@ void VarManager::FillPairMC(T1 const& t1, T2 const& t2, float* values) values[kMCCosThetaHE] = zaxis_HE.Dot(v_CM); } if (fgUsedVars[kMCPhiHE]) { - values[kMCPhiHE] = RecoDecay::constrainAngle(TMath::ATan2(yaxis_HE.Dot(v_CM), xaxis_HE.Dot(v_CM))); + values[kMCPhiHE] = RecoDecay::constrainAngle(std::atan2(yaxis_HE.Dot(v_CM), xaxis_HE.Dot(v_CM))); } if (fgUsedVars[kMCPhiTildeHE]) { if (fgUsedVars[kMCCosThetaHE] && fgUsedVars[kMCPhiHE]) { @@ -4961,7 +4951,7 @@ void VarManager::FillPairMC(T1 const& t1, T2 const& t2, float* values) values[kMCPhiTildeHE] = RecoDecay::constrainAngle(values[kMCPhiHE] - 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 } } else { - values[kMCPhiTildeHE] = -999; // not computable + values[kMCPhiTildeHE] = o2::dqconstants::InvalidValueI; // not computable } } } @@ -4974,7 +4964,7 @@ void VarManager::FillPairMC(T1 const& t1, T2 const& t2, float* values) values[kMCCosThetaCS] = zaxis_CS.Dot(v_CM); } if (fgUsedVars[kMCPhiCS]) { - values[kMCPhiCS] = RecoDecay::constrainAngle(TMath::ATan2(yaxis_CS.Dot(v_CM), xaxis_CS.Dot(v_CM))); + values[kMCPhiCS] = RecoDecay::constrainAngle(std::atan2(yaxis_CS.Dot(v_CM), xaxis_CS.Dot(v_CM))); } if (fgUsedVars[kMCPhiTildeCS]) { if (fgUsedVars[kMCCosThetaCS] && fgUsedVars[kMCPhiCS]) { @@ -4984,7 +4974,7 @@ void VarManager::FillPairMC(T1 const& t1, T2 const& t2, float* values) values[kMCPhiTildeCS] = RecoDecay::constrainAngle(values[kMCPhiCS] - 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 } } else { - values[kMCPhiTildeCS] = -999; // not computable + values[kMCPhiTildeCS] = o2::dqconstants::InvalidValueI; // not computable } } } @@ -4996,7 +4986,7 @@ void VarManager::FillPairMC(T1 const& t1, T2 const& t2, float* values) ROOT::Math::XYZVectorF motherLab_GJB1{(ROOT::Math::XYZVectorF(v12.Vect())).Unit()}; // y-axis: normal to the production plane (fallback to (0,1,0) if degenerate) ROOT::Math::XYZVectorF yaxis_GJB1{zaxis_GJB1.Cross(motherLab_GJB1)}; - if (yaxis_GJB1.Mag2() > 1.e-6f) { + if (yaxis_GJB1.Mag2() > o2::dqconstants::defaults::GJMinMagnitude) { yaxis_GJB1 = yaxis_GJB1.Unit(); } else { yaxis_GJB1 = ROOT::Math::XYZVectorF(0.f, 1.f, 0.f); @@ -5006,7 +4996,7 @@ void VarManager::FillPairMC(T1 const& t1, T2 const& t2, float* values) values[kMCCosThetaGJB1] = zaxis_GJB1.Dot(v_CM); } if (fgUsedVars[kMCPhiGJB1]) { - values[kMCPhiGJB1] = RecoDecay::constrainAngle(TMath::ATan2(yaxis_GJB1.Dot(v_CM), xaxis_GJB1.Dot(v_CM))); + values[kMCPhiGJB1] = RecoDecay::constrainAngle(std::atan2(yaxis_GJB1.Dot(v_CM), xaxis_GJB1.Dot(v_CM))); } if (fgUsedVars[kMCPhiTildeGJB1]) { if (fgUsedVars[kMCCosThetaGJB1] && fgUsedVars[kMCPhiGJB1]) { @@ -5016,7 +5006,7 @@ void VarManager::FillPairMC(T1 const& t1, T2 const& t2, float* values) values[kMCPhiTildeGJB1] = RecoDecay::constrainAngle(values[kMCPhiGJB1] - 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 } } else { - values[kMCPhiTildeGJB1] = -999; // not computable + values[kMCPhiTildeGJB1] = o2::dqconstants::InvalidValueI; // not computable } } } @@ -5028,7 +5018,7 @@ void VarManager::FillPairMC(T1 const& t1, T2 const& t2, float* values) ROOT::Math::XYZVectorF motherLab_GJB2{(ROOT::Math::XYZVectorF(v12.Vect())).Unit()}; // y-axis: normal to the production plane (fallback to (0,1,0) if degenerate) ROOT::Math::XYZVectorF yaxis_GJB2{zaxis_GJB2.Cross(motherLab_GJB2)}; - if (yaxis_GJB2.Mag2() > 1.e-6f) { + if (yaxis_GJB2.Mag2() > o2::dqconstants::defaults::GJMinMagnitude) { yaxis_GJB2 = yaxis_GJB2.Unit(); } else { yaxis_GJB2 = ROOT::Math::XYZVectorF(0.f, 1.f, 0.f); @@ -5038,7 +5028,7 @@ void VarManager::FillPairMC(T1 const& t1, T2 const& t2, float* values) values[kMCCosThetaGJB2] = zaxis_GJB2.Dot(v_CM); } if (fgUsedVars[kMCPhiGJB2]) { - values[kMCPhiGJB2] = RecoDecay::constrainAngle(TMath::ATan2(yaxis_GJB2.Dot(v_CM), xaxis_GJB2.Dot(v_CM))); + values[kMCPhiGJB2] = RecoDecay::constrainAngle(std::atan2(yaxis_GJB2.Dot(v_CM), xaxis_GJB2.Dot(v_CM))); } if (fgUsedVars[kMCPhiTildeGJB2]) { if (fgUsedVars[kMCCosThetaGJB2] && fgUsedVars[kMCPhiGJB2]) { @@ -5048,7 +5038,7 @@ void VarManager::FillPairMC(T1 const& t1, T2 const& t2, float* values) values[kMCPhiTildeGJB2] = RecoDecay::constrainAngle(values[kMCPhiGJB2] - 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 } } else { - values[kMCPhiTildeGJB2] = -999; // not computable + values[kMCPhiTildeGJB2] = o2::dqconstants::InvalidValueI; // not computable } } } @@ -5061,7 +5051,7 @@ void VarManager::FillPairMC(T1 const& t1, T2 const& t2, float* values) values[kMCCosThetaPP] = zaxis_PP.Dot(v_CM); } if (fgUsedVars[kMCPhiPP]) { - values[kMCPhiPP] = RecoDecay::constrainAngle(TMath::ATan2(yaxis_PP.Dot(v_CM), xaxis_PP.Dot(v_CM))); + values[kMCPhiPP] = RecoDecay::constrainAngle(std::atan2(yaxis_PP.Dot(v_CM), xaxis_PP.Dot(v_CM))); } if (fgUsedVars[kMCPhiTildePP]) { if (fgUsedVars[kMCCosThetaPP] && fgUsedVars[kMCPhiPP]) { @@ -5071,7 +5061,7 @@ void VarManager::FillPairMC(T1 const& t1, T2 const& t2, float* values) values[kMCPhiTildePP] = RecoDecay::constrainAngle(values[kMCPhiPP] - 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 } } else { - values[kMCPhiTildePP] = -999; // not computable + values[kMCPhiTildePP] = o2::dqconstants::InvalidValueI; // not computable } } } @@ -5095,12 +5085,12 @@ void VarManager::FillPairMC(T1 const& t1, T2 const& t2, float* values) ROOT::Math::XYZVectorF v_CM = (t1.pdgCode() > 0 ? v1_CM : v2_CM); // Randomize the event plane angle to check the unpolarized contribution - ROOT::Math::XYZVector zaxisRandom = ROOT::Math::XYZVector(TMath::Cos(values[kRandomPsi2]), TMath::Sin(values[kRandomPsi2]), 0).Unit(); + ROOT::Math::XYZVector zaxisRandom = ROOT::Math::XYZVector(std::cos(values[kRandomPsi2]), std::sin(values[kRandomPsi2]), 0).Unit(); values[kCosThetaStarRandom] = v_CM.Dot(zaxisRandom); values[kCos2ThetaStarRandom] = values[kCosThetaStarRandom] * values[kCosThetaStarRandom]; // truth event plane angle - ROOT::Math::XYZVector zaxisTrue = ROOT::Math::XYZVector(TMath::Cos(values[kMCEventPlaneAngle]), TMath::Sin(values[kMCEventPlaneAngle]), 0).Unit(); + ROOT::Math::XYZVector zaxisTrue = ROOT::Math::XYZVector(std::cos(values[kMCEventPlaneAngle]), std::sin(values[kMCEventPlaneAngle]), 0).Unit(); values[kMCCosThetaStar] = v_CM.Dot(zaxisTrue); } @@ -5117,8 +5107,8 @@ void VarManager::FillPairMC(T1 const& t1, T2 const& t2, float* values) // fold delta phi into [-pi/2, pi/2] values[kDeltaPhi_Random] = values[kDeltaPhi_Random] > o2::constants::math::PIHalf ? o2::constants::math::PI - values[kDeltaPhi_Random] : values[kDeltaPhi_Random]; values[kDeltaPhi_MC] = values[kDeltaPhi_MC] > o2::constants::math::PIHalf ? o2::constants::math::PI - values[kDeltaPhi_MC] : values[kDeltaPhi_MC]; - values[kCos2DeltaPhi_Random] = TMath::Cos(2. * (phi - values[kRandomPsi2])); - values[kCos2DeltaPhi_MC] = TMath::Cos(2. * (phi - values[kMCEventPlaneAngle])); + values[kCos2DeltaPhi_Random] = std::cos(2. * (phi - values[kRandomPsi2])); + values[kCos2DeltaPhi_MC] = std::cos(2. * (phi - values[kMCEventPlaneAngle])); } } @@ -5211,9 +5201,9 @@ template 0 || (collFillMap & ReducedEventVtxCov) > 0); - constexpr bool trackHasCov = ((fillMap & TrackCov) > 0 || (fillMap & ReducedTrackBarrelCov) > 0); - constexpr bool muonHasCov = ((fillMap & MuonCov) > 0 || (fillMap & ReducedMuonCov) > 0); + constexpr bool EventHasVtxCov = ((collFillMap & Collision) > 0 || (collFillMap & ReducedEventVtxCov) > 0); + constexpr bool TrackHasCov = ((fillMap & TrackCov) > 0 || (fillMap & ReducedTrackBarrelCov) > 0); + constexpr bool MuonHasCov = ((fillMap & MuonCov) > 0 || (fillMap & ReducedMuonCov) > 0); if (!values) { values = static_cast(fgValues); @@ -5240,19 +5230,19 @@ void VarManager::FillPairVertexing(C const& collision, T const& t1, T const& t2, // auto pars1 = getTrackParCov(t1); // auto pars2 = getTrackParCov(t2); // We need to hide the cov data members from the cases when no cov table is provided - if constexpr ((pairType == kDecayToEE || pairType == kDecayToKPi) && trackHasCov) { - std::array t1pars = {t1.y(), t1.z(), t1.snp(), t1.tgl(), t1.signed1Pt()}; - std::array t1covs = {t1.cYY(), t1.cZY(), t1.cZZ(), t1.cSnpY(), t1.cSnpZ(), - t1.cSnpSnp(), t1.cTglY(), t1.cTglZ(), t1.cTglSnp(), t1.cTglTgl(), - t1.c1PtY(), t1.c1PtZ(), t1.c1PtSnp(), t1.c1PtTgl(), t1.c1Pt21Pt2()}; + if constexpr ((pairType == kDecayToEE || pairType == kDecayToKPi) && TrackHasCov) { + std::array t1pars = {t1.y(), t1.z(), t1.snp(), t1.tgl(), t1.signed1Pt()}; + std::array t1covs = {t1.cYY(), t1.cZY(), t1.cZZ(), t1.cSnpY(), t1.cSnpZ(), + t1.cSnpSnp(), t1.cTglY(), t1.cTglZ(), t1.cTglSnp(), t1.cTglTgl(), + t1.c1PtY(), t1.c1PtZ(), t1.c1PtSnp(), t1.c1PtTgl(), t1.c1Pt21Pt2()}; o2::track::TrackParCov pars1{t1.x(), t1.alpha(), t1pars, t1covs}; - std::array t2pars = {t2.y(), t2.z(), t2.snp(), t2.tgl(), t2.signed1Pt()}; - std::array t2covs = {t2.cYY(), t2.cZY(), t2.cZZ(), t2.cSnpY(), t2.cSnpZ(), - t2.cSnpSnp(), t2.cTglY(), t2.cTglZ(), t2.cTglSnp(), t2.cTglTgl(), - t2.c1PtY(), t2.c1PtZ(), t2.c1PtSnp(), t2.c1PtTgl(), t2.c1Pt21Pt2()}; + std::array t2pars = {t2.y(), t2.z(), t2.snp(), t2.tgl(), t2.signed1Pt()}; + std::array t2covs = {t2.cYY(), t2.cZY(), t2.cZZ(), t2.cSnpY(), t2.cSnpZ(), + t2.cSnpSnp(), t2.cTglY(), t2.cTglZ(), t2.cTglSnp(), t2.cTglTgl(), + t2.c1PtY(), t2.c1PtZ(), t2.c1PtSnp(), t2.c1PtTgl(), t2.c1Pt21Pt2()}; o2::track::TrackParCov pars2{t2.x(), t2.alpha(), t2pars, t2covs}; procCode = fgFitterTwoProngBarrel.process(pars1, pars2); - } else if constexpr ((pairType == kDecayToMuMu) && muonHasCov) { + } else if constexpr ((pairType == kDecayToMuMu) && MuonHasCov) { // Initialize track parameters for forward o2::track::TrackParCovFwd pars1 = FwdToTrackPar(t1, t1); o2::track::TrackParCovFwd pars2 = FwdToTrackPar(t2, t2); @@ -5262,40 +5252,40 @@ void VarManager::FillPairVertexing(C const& collision, T const& t1, T const& t2, } values[kVertexingProcCode] = procCode; - if (procCode == 0) { + if (o2::dqconstants::IsProcCodeInvalid(procCode)) { // TODO: set the other variables to appropriate values and return - values[kVertexingChi2PCA] = -999.; - values[kVertexingLxy] = -999.; - values[kVertexingLxyz] = -999.; - values[kVertexingLz] = -999.; - values[kVertexingLxyErr] = -999.; - values[kVertexingLxyzErr] = -999.; - values[kVertexingLzErr] = -999.; - values[kVertexingLxyOverErr] = -999.; - values[kVertexingLzOverErr] = -999.; - values[kVertexingLxyzOverErr] = -999.; - - values[kVertexingTauxy] = -999.; - values[kVertexingTauz] = -999.; - values[kVertexingTauxyErr] = -999.; - values[kVertexingTauzErr] = -999.; - values[kVertexingPz] = -999.; - values[kVertexingSV] = -999.; + values[kVertexingChi2PCA] = o2::dqconstants::InvalidValueF; + values[kVertexingLxy] = o2::dqconstants::InvalidValueF; + values[kVertexingLxyz] = o2::dqconstants::InvalidValueF; + values[kVertexingLz] = o2::dqconstants::InvalidValueF; + values[kVertexingLxyErr] = o2::dqconstants::InvalidValueF; + values[kVertexingLxyzErr] = o2::dqconstants::InvalidValueF; + values[kVertexingLzErr] = o2::dqconstants::InvalidValueF; + values[kVertexingLxyOverErr] = o2::dqconstants::InvalidValueF; + values[kVertexingLzOverErr] = o2::dqconstants::InvalidValueF; + values[kVertexingLxyzOverErr] = o2::dqconstants::InvalidValueF; + + values[kVertexingTauxy] = o2::dqconstants::InvalidValueF; + values[kVertexingTauz] = o2::dqconstants::InvalidValueF; + values[kVertexingTauxyErr] = o2::dqconstants::InvalidValueF; + values[kVertexingTauzErr] = o2::dqconstants::InvalidValueF; + values[kVertexingPz] = o2::dqconstants::InvalidValueF; + values[kVertexingSV] = o2::dqconstants::InvalidValueF; return; } Vec3D secondaryVertex; o2::dataformats::VertexBase primaryVertexNew; - if constexpr (eventHasVtxCov) { + if constexpr (EventHasVtxCov) { - std::array covMatrixPCA{}; + std::array covMatrixPCA{}; // get track impact parameters // This modifies track momenta! // auto primaryVertex = getPrimaryVertex(collision); - std::array covMatrixPV{collision.covXX(), collision.covXY(), collision.covYY(), collision.covXZ(), collision.covYZ(), collision.covZZ()}; + std::array covMatrixPV{collision.covXX(), collision.covXY(), collision.covYY(), collision.covXZ(), collision.covYZ(), collision.covZZ()}; - if constexpr ((pairType == kDecayToEE || pairType == kDecayToKPi) && trackHasCov) { + if constexpr ((pairType == kDecayToEE || pairType == kDecayToKPi) && TrackHasCov) { secondaryVertex = fgFitterTwoProngBarrel.getPCACandidate(); // printf("secVtx (first) %f %f %f \n",secondaryVertex[0],secondaryVertex[1],secondaryVertex[2]); covMatrixPCA = fgFitterTwoProngBarrel.calcPCACovMatrixFlat(); @@ -5307,7 +5297,7 @@ void VarManager::FillPairVertexing(C const& collision, T const& t1, T const& t2, primaryVertexNew = RecalculatePrimaryVertex(t1, t2, collision); } - } else if constexpr (pairType == kDecayToMuMu && muonHasCov) { + } else if constexpr (pairType == kDecayToMuMu && MuonHasCov) { // Get pca candidate from forward DCA fitter secondaryVertex = fgFitterTwoProngFwd.getPCACandidate(); covMatrixPCA = fgFitterTwoProngFwd.calcPCACovMatrixFlat(); @@ -5333,24 +5323,24 @@ void VarManager::FillPairVertexing(C const& collision, T const& t1, T const& t2, values[kVertexingLz] = std::sqrt(values[kVertexingLz]); values[kVertexingLxyz] = std::sqrt(values[kVertexingLxyz]); - values[kVertexingTauz] = -dz * v12.M() / (TMath::Abs(v12.Pz()) * o2::constants::physics::LightSpeedCm2NS); + values[kVertexingTauz] = -dz * v12.M() / (std::abs(v12.Pz()) * o2::constants::physics::LightSpeedCm2NS); values[kVertexingTauxy] = values[kVertexingLxy] * v12.M() / (v12.Pt() * o2::constants::physics::LightSpeedCm2NS); - values[kVertexingPz] = TMath::Abs(v12.Pz()); + values[kVertexingPz] = std::abs(v12.Pz()); values[kVertexingSV] = secondaryVertex[2]; - values[kVertexingTauzErr] = values[kVertexingLzErr] * v12.M() / (TMath::Abs(v12.Pz()) * o2::constants::physics::LightSpeedCm2NS); + values[kVertexingTauzErr] = values[kVertexingLzErr] * v12.M() / (std::abs(v12.Pz()) * o2::constants::physics::LightSpeedCm2NS); values[kVertexingTauxyErr] = values[kVertexingLxyErr] * v12.M() / (v12.Pt() * o2::constants::physics::LightSpeedCm2NS); values[kCosPointingAngle] = (dx * v12.Px() + dy * v12.Py() + dz * v12.Pz()) / (v12.P() * values[VarManager::kVertexingLxyz]); values[kVertexingImpactParameter] = values[VarManager::kVertexingLxyz] * std::sqrt(1 - values[VarManager::kCosPointingAngle] * values[VarManager::kCosPointingAngle]); // Decay length defined as in Run 2 - values[kVertexingLzProjected] = (dz * v12.Pz()) / TMath::Sqrt(v12.Pz() * v12.Pz()); + values[kVertexingLzProjected] = (dz * v12.Pz()) / std::sqrt(v12.Pz() * v12.Pz()); values[kVertexingLxyProjected] = (dx * v12.Px()) + (dy * v12.Py()); - values[kVertexingLxyProjected] = values[kVertexingLxyProjected] / TMath::Sqrt((v12.Px() * v12.Px()) + (v12.Py() * v12.Py())); + values[kVertexingLxyProjected] = values[kVertexingLxyProjected] / std::sqrt((v12.Px() * v12.Px()) + (v12.Py() * v12.Py())); values[kVertexingLxyzProjected] = (dx * v12.Px()) + (dy * v12.Py()) + (dz * v12.Pz()); - values[kVertexingLxyzProjected] = values[kVertexingLxyzProjected] / TMath::Sqrt((v12.Px() * v12.Px()) + (v12.Py() * v12.Py()) + (v12.Pz() * v12.Pz())); + values[kVertexingLxyzProjected] = values[kVertexingLxyzProjected] / std::sqrt((v12.Px() * v12.Px()) + (v12.Py() * v12.Py()) + (v12.Pz() * v12.Pz())); values[kVertexingTauxyProjected] = values[kVertexingLxyProjected] * v12.M() / (v12.Pt()); values[kVertexingTauxyProjectedPoleJPsiMass] = values[kVertexingLxyProjected] * o2::constants::physics::MassJPsi / (v12.Pt()); values[kVertexingTauxyProjectedNs] = values[kVertexingTauxyProjected] / o2::constants::physics::LightSpeedCm2NS; @@ -5359,24 +5349,24 @@ void VarManager::FillPairVertexing(C const& collision, T const& t1, T const& t2, values[kVertexingLxyProjectedRecalculatePV] = values[kVertexingLxyProjectedRecalculatePV] / v12.Pt(); values[kVertexingTauxyProjectedPoleJPsiMassRecalculatePV] = values[kVertexingLxyProjectedRecalculatePV] * o2::constants::physics::MassJPsi / (v12.Pt()); } - values[kVertexingTauzProjected] = values[kVertexingLzProjected] * v12.M() / TMath::Abs(v12.Pz()); + values[kVertexingTauzProjected] = values[kVertexingLzProjected] * v12.M() / std::abs(v12.Pz()); values[kVertexingTauxyzProjected] = values[kVertexingLxyzProjected] * v12.M() / (v12.P()); } - } else if constexpr (((pairType == kDecayToEE || pairType == kDecayToKPi) && trackHasCov) || ((pairType == kDecayToMuMu) && muonHasCov)) { + } else if constexpr (((pairType == kDecayToEE || pairType == kDecayToKPi) && TrackHasCov) || ((pairType == kDecayToMuMu) && MuonHasCov)) { KFParticle trk0KF; KFParticle trk1KF; KFParticle KFGeoTwoProng; if constexpr (pairType == kDecayToEE) { - trk0KF = KFParticle(createKFPTrackFromTrack(t1), -11 * t1.sign()); - trk1KF = KFParticle(createKFPTrackFromTrack(t2), -11 * t2.sign()); + trk0KF = KFParticle(createKFPTrackFromTrack(t1), PDG_t::kPositron * t1.sign()); + trk1KF = KFParticle(createKFPTrackFromTrack(t2), PDG_t::kPositron * t2.sign()); } else if constexpr (pairType == kDecayToMuMu) { - trk0KF = KFParticle(createKFPFwdTrackFromFwdTrack(t1), -13 * t1.sign()); - trk1KF = KFParticle(createKFPFwdTrackFromFwdTrack(t2), -13 * t2.sign()); + trk0KF = KFParticle(createKFPFwdTrackFromFwdTrack(t1), PDG_t::kMuonPlus * t1.sign()); + trk1KF = KFParticle(createKFPFwdTrackFromFwdTrack(t2), PDG_t::kMuonPlus * t2.sign()); } else if constexpr (pairType == kDecayToKPi) { - trk0KF = KFParticle(createKFPTrackFromTrack(t1), 321 * t1.sign()); - trk1KF = KFParticle(createKFPTrackFromTrack(t2), 211 * t2.sign()); + trk0KF = KFParticle(createKFPTrackFromTrack(t1), PDG_t::kKPlus * t1.sign()); + trk1KF = KFParticle(createKFPTrackFromTrack(t2), PDG_t::kPiPlus * t2.sign()); } - KFGeoTwoProng.SetConstructMethod(2); + KFGeoTwoProng.SetConstructMethod(o2::dqconstants::defaults::KFParticleMassConstrainedConstruction); KFGeoTwoProng.AddDaughter(trk0KF); KFGeoTwoProng.AddDaughter(trk1KF); @@ -5385,11 +5375,12 @@ void VarManager::FillPairVertexing(C const& collision, T const& t1, T const& t2, if (!KFGeoTwoProng.GetMass(mass, massErr)) { values[kKFMass] = mass; } else { - values[kKFMass] = -999.; + values[kKFMass] = o2::dqconstants::InvalidValueF; + ; } } - if constexpr (eventHasVtxCov) { + if constexpr (EventHasVtxCov) { KFPVertex kfpVertex = createKFPVertexFromCollision(collision); values[kKFNContributorsPV] = kfpVertex.GetNContributors(); KFParticle KFPV(kfpVertex); @@ -5403,24 +5394,24 @@ void VarManager::FillPairVertexing(C const& collision, T const& t1, T const& t2, values[kVertexingLxyErr] = (KFPV.GetCovariance(0) + KFGeoTwoProng.GetCovariance(0)) * dxPair2PV * dxPair2PV + (KFPV.GetCovariance(2) + KFGeoTwoProng.GetCovariance(2)) * dyPair2PV * dyPair2PV + 2 * ((KFPV.GetCovariance(1) + KFGeoTwoProng.GetCovariance(1)) * dxPair2PV * dyPair2PV); values[kVertexingLzErr] = (KFPV.GetCovariance(5) + KFGeoTwoProng.GetCovariance(5)) * dzPair2PV * dzPair2PV; values[kVertexingLxyzErr] = (KFPV.GetCovariance(0) + KFGeoTwoProng.GetCovariance(0)) * dxPair2PV * dxPair2PV + (KFPV.GetCovariance(2) + KFGeoTwoProng.GetCovariance(2)) * dyPair2PV * dyPair2PV + (KFPV.GetCovariance(5) + KFGeoTwoProng.GetCovariance(5)) * dzPair2PV * dzPair2PV + 2 * ((KFPV.GetCovariance(1) + KFGeoTwoProng.GetCovariance(1)) * dxPair2PV * dyPair2PV + (KFPV.GetCovariance(3) + KFGeoTwoProng.GetCovariance(3)) * dxPair2PV * dzPair2PV + (KFPV.GetCovariance(4) + KFGeoTwoProng.GetCovariance(4)) * dyPair2PV * dzPair2PV); - if (std::fabs(values[kVertexingLxy]) < 1.e-8f) { - values[kVertexingLxy] = 1.e-8f; + if (std::fabs(values[kVertexingLxy]) < o2::dqconstants::defaults::VertexingLxyzTolerance) { + values[kVertexingLxy] = o2::dqconstants::defaults::VertexingLxyzTolerance; } - values[kVertexingLxyErr] = values[kVertexingLxyErr] < 0. ? 1.e8f : std::sqrt(values[kVertexingLxyErr]) / values[kVertexingLxy]; - if (std::fabs(values[kVertexingLz]) < 1.e-8f) { - values[kVertexingLz] = 1.e-8f; + values[kVertexingLxyErr] = values[kVertexingLxyErr] < 0. ? o2::dqconstants::defaults::InvalidVertexingError : std::sqrt(values[kVertexingLxyErr]) / values[kVertexingLxy]; + if (std::fabs(values[kVertexingLz]) < o2::dqconstants::defaults::VertexingLxyzTolerance) { + values[kVertexingLz] = o2::dqconstants::defaults::VertexingLxyzTolerance; } - values[kVertexingLzErr] = values[kVertexingLzErr] < 0. ? 1.e8f : std::sqrt(values[kVertexingLzErr]) / values[kVertexingLz]; - if (std::fabs(values[kVertexingLxyz]) < 1.e-8f) { - values[kVertexingLxyz] = 1.e-8f; + values[kVertexingLzErr] = values[kVertexingLzErr] < 0. ? o2::dqconstants::defaults::InvalidVertexingError : std::sqrt(values[kVertexingLzErr]) / values[kVertexingLz]; + if (std::fabs(values[kVertexingLxyz]) < o2::dqconstants::defaults::VertexingLxyzTolerance) { + values[kVertexingLxyz] = o2::dqconstants::defaults::VertexingLxyzTolerance; } - values[kVertexingLxyzErr] = values[kVertexingLxyzErr] < 0. ? 1.e8f : std::sqrt(values[kVertexingLxyzErr]) / values[kVertexingLxyz]; + values[kVertexingLxyzErr] = values[kVertexingLxyzErr] < 0. ? o2::dqconstants::defaults::InvalidVertexingError : std::sqrt(values[kVertexingLxyzErr]) / values[kVertexingLxyz]; values[kVertexingTauxy] = KFGeoTwoProng.GetPseudoProperDecayTime(KFPV, KFGeoTwoProng.GetMass()) / (o2::constants::physics::LightSpeedCm2NS); - values[kVertexingTauz] = -1 * dzPair2PV * KFGeoTwoProng.GetMass() / (TMath::Abs(KFGeoTwoProng.GetPz()) * o2::constants::physics::LightSpeedCm2NS); - values[kVertexingPz] = TMath::Abs(KFGeoTwoProng.GetPz()); + values[kVertexingTauz] = -1 * dzPair2PV * KFGeoTwoProng.GetMass() / (std::abs(KFGeoTwoProng.GetPz()) * o2::constants::physics::LightSpeedCm2NS); + values[kVertexingPz] = std::abs(KFGeoTwoProng.GetPz()); values[kVertexingSV] = KFGeoTwoProng.GetZ(); values[kVertexingTauxyErr] = values[kVertexingLxyErr] * KFGeoTwoProng.GetMass() / (KFGeoTwoProng.GetPt() * o2::constants::physics::LightSpeedCm2NS); - values[kVertexingTauzErr] = values[kVertexingLzErr] * KFGeoTwoProng.GetMass() / (TMath::Abs(KFGeoTwoProng.GetPz()) * o2::constants::physics::LightSpeedCm2NS); + values[kVertexingTauzErr] = values[kVertexingLzErr] * KFGeoTwoProng.GetMass() / (std::abs(KFGeoTwoProng.GetPz()) * o2::constants::physics::LightSpeedCm2NS); values[kCosPointingAngle] = (std::sqrt(dxPair2PV * dxPair2PV) * v12.Px() + std::sqrt(dyPair2PV * dyPair2PV) * v12.Py() + std::sqrt(dzPair2PV * dzPair2PV) * v12.Pz()) / @@ -5429,15 +5420,15 @@ void VarManager::FillPairVertexing(C const& collision, T const& t1, T const& t2, } // As defined in Run 2 (projected onto momentum) if (fgUsedVars[kVertexingLxyProjected] || fgUsedVars[kVertexingLxyzProjected] || fgUsedVars[kVertexingLzProjected]) { - values[kVertexingLzProjected] = (dzPair2PV * KFGeoTwoProng.GetPz()) / TMath::Sqrt(KFGeoTwoProng.GetPz() * KFGeoTwoProng.GetPz()); + values[kVertexingLzProjected] = (dzPair2PV * KFGeoTwoProng.GetPz()) / std::sqrt(KFGeoTwoProng.GetPz() * KFGeoTwoProng.GetPz()); values[kVertexingLxyProjected] = (dxPair2PV * KFGeoTwoProng.GetPx()) + (dyPair2PV * KFGeoTwoProng.GetPy()); - values[kVertexingLxyProjected] = values[kVertexingLxyProjected] / TMath::Sqrt((KFGeoTwoProng.GetPx() * KFGeoTwoProng.GetPx()) + (KFGeoTwoProng.GetPy() * KFGeoTwoProng.GetPy())); + values[kVertexingLxyProjected] = values[kVertexingLxyProjected] / std::sqrt((KFGeoTwoProng.GetPx() * KFGeoTwoProng.GetPx()) + (KFGeoTwoProng.GetPy() * KFGeoTwoProng.GetPy())); values[kVertexingLxyzProjected] = (dxPair2PV * KFGeoTwoProng.GetPx()) + (dyPair2PV * KFGeoTwoProng.GetPy()) + (dzPair2PV * KFGeoTwoProng.GetPz()); - values[kVertexingLxyzProjected] = values[kVertexingLxyzProjected] / TMath::Sqrt((KFGeoTwoProng.GetPx() * KFGeoTwoProng.GetPx()) + (KFGeoTwoProng.GetPy() * KFGeoTwoProng.GetPy()) + (KFGeoTwoProng.GetPz() * KFGeoTwoProng.GetPz())); + values[kVertexingLxyzProjected] = values[kVertexingLxyzProjected] / std::sqrt((KFGeoTwoProng.GetPx() * KFGeoTwoProng.GetPx()) + (KFGeoTwoProng.GetPy() * KFGeoTwoProng.GetPy()) + (KFGeoTwoProng.GetPz() * KFGeoTwoProng.GetPz())); values[kVertexingTauxyProjected] = values[kVertexingLxyProjected] * KFGeoTwoProng.GetMass() / (KFGeoTwoProng.GetPt()); values[kVertexingTauxyProjectedPoleJPsiMass] = values[kVertexingLxyProjected] * o2::constants::physics::MassJPsi / (KFGeoTwoProng.GetPt()); values[kVertexingTauxyProjectedNs] = values[kVertexingTauxyProjected] / o2::constants::physics::LightSpeedCm2NS; - values[kVertexingTauzProjected] = values[kVertexingLzProjected] * KFGeoTwoProng.GetMass() / TMath::Abs(KFGeoTwoProng.GetPz()); + values[kVertexingTauzProjected] = values[kVertexingLzProjected] * KFGeoTwoProng.GetMass() / std::abs(KFGeoTwoProng.GetPz()); } if (fgUsedVars[kVertexingLxyOverErr] || fgUsedVars[kVertexingLzOverErr] || fgUsedVars[kVertexingLxyzOverErr]) { @@ -5473,7 +5464,7 @@ void VarManager::FillPairVertexing(C const& collision, T const& t1, T const& t2, values[kKFTracksDCAxyzMax] = values[kKFTrack0DCAxyz] > values[kKFTrack1DCAxyz] ? values[kKFTrack0DCAxyz] : values[kKFTrack1DCAxyz]; } if (fgUsedVars[kKFTracksDCAxyMax]) { - values[kKFTracksDCAxyMax] = TMath::Abs(values[kKFTrack0DCAxy]) > TMath::Abs(values[kKFTrack1DCAxy]) ? values[kKFTrack0DCAxy] : values[kKFTrack1DCAxy]; + values[kKFTracksDCAxyMax] = std::abs(values[kKFTrack0DCAxy]) > std::abs(values[kKFTrack1DCAxy]) ? values[kKFTrack0DCAxy] : values[kKFTrack1DCAxy]; } if (fgUsedVars[kKFTrack0DeviationFromPV] || fgUsedVars[kKFTrack1DeviationFromPV]) { values[kKFTrack0DeviationFromPV] = trk0KF.GetDeviationFromVertex(KFPV); @@ -5501,7 +5492,8 @@ void VarManager::FillPairVertexing(C const& collision, T const& t1, T const& t2, if (!KFGeoTopTwoProngBarrel.GetMass(mass, massErr)) { values[kKFMassGeoTop] = mass; } else { - values[kKFMassGeoTop] = -999.; + values[kKFMassGeoTop] = o2::dqconstants::InvalidValueF; + ; } } @@ -5534,9 +5526,9 @@ void VarManager::FillPairVertexingRecomputePV(C const& /*collision*/, T const& t // recompute decay lenght variables using updated primary vertex // check at compile time that the event and cov matrix have the cov matrix - constexpr bool eventHasVtxCov = ((collFillMap & Collision) > 0 || (collFillMap & ReducedEventVtxCov) > 0); - constexpr bool trackHasCov = ((fillMap & TrackCov) > 0 || (fillMap & ReducedTrackBarrelCov) > 0); - constexpr bool muonHasCov = ((fillMap & MuonCov) > 0 || (fillMap & ReducedMuonCov) > 0); + constexpr bool EventHasVtxCov = ((collFillMap & Collision) > 0 || (collFillMap & ReducedEventVtxCov) > 0); + constexpr bool TrackHasCov = ((fillMap & TrackCov) > 0 || (fillMap & ReducedTrackBarrelCov) > 0); + constexpr bool MuonHasCov = ((fillMap & MuonCov) > 0 || (fillMap & ReducedMuonCov) > 0); if (!values) { values = static_cast(fgValues); @@ -5548,7 +5540,7 @@ void VarManager::FillPairVertexingRecomputePV(C const& /*collision*/, T const& t m1 = o2::constants::physics::MassKaonCharged; m2 = o2::constants::physics::MassPionCharged; } - if constexpr (pairType == kDecayToMuMu && muonHasCov) { + if constexpr (pairType == kDecayToMuMu && MuonHasCov) { m1 = o2::constants::physics::MassMuon; m2 = o2::constants::physics::MassMuon; } @@ -5562,9 +5554,9 @@ void VarManager::FillPairVertexingRecomputePV(C const& /*collision*/, T const& t Vec3D secondaryVertex; if (!fgUsedKF) { // to be updated when seconday vertex is computed with KF - if constexpr (eventHasVtxCov) { + if constexpr (EventHasVtxCov) { - if constexpr ((pairType == kDecayToEE || pairType == kDecayToKPi) && trackHasCov) { + if constexpr ((pairType == kDecayToEE || pairType == kDecayToKPi) && TrackHasCov) { // Get pca candidate from forward DCA fitter // no need to re-compute secondary vertex (done already in FillPairVertexing) secondaryVertex = fgFitterTwoProngBarrel.getPCACandidate(); @@ -5574,7 +5566,7 @@ void VarManager::FillPairVertexingRecomputePV(C const& /*collision*/, T const& t v2 = {trackParVar1.getPt(), trackParVar1.getEta(), trackParVar1.getPhi(), m2}; v12 = v1 + v2; - } else if constexpr (pairType == kDecayToMuMu && muonHasCov) { + } else if constexpr (pairType == kDecayToMuMu && MuonHasCov) { // Get pca candidate from forward DCA fitter // no need to re-compute secondary vertex (done already in FillPairVertexing) secondaryVertex = fgFitterTwoProngFwd.getPCACandidate(); @@ -5596,8 +5588,8 @@ template void VarManager::FillTripletVertexing(C const& collision, T const& t1, T const& t2, T const& t3, VarManager::PairCandidateType tripletType, float* values) { // TODO: Vertexing error variables - constexpr bool eventHasVtxCov = ((collFillMap & Collision) > 0 || (collFillMap & ReducedEventVtxCov) > 0); - bool trackHasCov = ((fillMap & ReducedTrackBarrelCov) > 0); + constexpr bool EventHasVtxCov = ((collFillMap & Collision) > 0 || (collFillMap & ReducedEventVtxCov) > 0); + bool TrackHasCov = ((fillMap & ReducedTrackBarrelCov) > 0); if (!values) { values = static_cast(fgValues); @@ -5621,21 +5613,21 @@ void VarManager::FillTripletVertexing(C const& collision, T const& t1, T const& if (!fgUsedKF) { int procCode = 0; - if (trackHasCov) { - std::array t1pars = {t1.y(), t1.z(), t1.snp(), t1.tgl(), t1.signed1Pt()}; - std::array t1covs = {t1.cYY(), t1.cZY(), t1.cZZ(), t1.cSnpY(), t1.cSnpZ(), - t1.cSnpSnp(), t1.cTglY(), t1.cTglZ(), t1.cTglSnp(), t1.cTglTgl(), - t1.c1PtY(), t1.c1PtZ(), t1.c1PtSnp(), t1.c1PtTgl(), t1.c1Pt21Pt2()}; + if (TrackHasCov) { + std::array t1pars = {t1.y(), t1.z(), t1.snp(), t1.tgl(), t1.signed1Pt()}; + std::array t1covs = {t1.cYY(), t1.cZY(), t1.cZZ(), t1.cSnpY(), t1.cSnpZ(), + t1.cSnpSnp(), t1.cTglY(), t1.cTglZ(), t1.cTglSnp(), t1.cTglTgl(), + t1.c1PtY(), t1.c1PtZ(), t1.c1PtSnp(), t1.c1PtTgl(), t1.c1Pt21Pt2()}; o2::track::TrackParCov pars1{t1.x(), t1.alpha(), t1pars, t1covs}; - std::array t2pars = {t2.y(), t2.z(), t2.snp(), t2.tgl(), t2.signed1Pt()}; - std::array t2covs = {t2.cYY(), t2.cZY(), t2.cZZ(), t2.cSnpY(), t2.cSnpZ(), - t2.cSnpSnp(), t2.cTglY(), t2.cTglZ(), t2.cTglSnp(), t2.cTglTgl(), - t2.c1PtY(), t2.c1PtZ(), t2.c1PtSnp(), t2.c1PtTgl(), t2.c1Pt21Pt2()}; + std::array t2pars = {t2.y(), t2.z(), t2.snp(), t2.tgl(), t2.signed1Pt()}; + std::array t2covs = {t2.cYY(), t2.cZY(), t2.cZZ(), t2.cSnpY(), t2.cSnpZ(), + t2.cSnpSnp(), t2.cTglY(), t2.cTglZ(), t2.cTglSnp(), t2.cTglTgl(), + t2.c1PtY(), t2.c1PtZ(), t2.c1PtSnp(), t2.c1PtTgl(), t2.c1Pt21Pt2()}; o2::track::TrackParCov pars2{t2.x(), t2.alpha(), t2pars, t2covs}; - std::array t3pars = {t3.y(), t3.z(), t3.snp(), t3.tgl(), t3.signed1Pt()}; - std::array t3covs = {t3.cYY(), t3.cZY(), t3.cZZ(), t3.cSnpY(), t3.cSnpZ(), - t3.cSnpSnp(), t3.cTglY(), t3.cTglZ(), t3.cTglSnp(), t3.cTglTgl(), - t3.c1PtY(), t3.c1PtZ(), t3.c1PtSnp(), t3.c1PtTgl(), t3.c1Pt21Pt2()}; + std::array t3pars = {t3.y(), t3.z(), t3.snp(), t3.tgl(), t3.signed1Pt()}; + std::array t3covs = {t3.cYY(), t3.cZY(), t3.cZZ(), t3.cSnpY(), t3.cSnpZ(), + t3.cSnpSnp(), t3.cTglY(), t3.cTglZ(), t3.cTglSnp(), t3.cTglTgl(), + t3.c1PtY(), t3.c1PtZ(), t3.c1PtSnp(), t3.c1PtTgl(), t3.c1Pt21Pt2()}; o2::track::TrackParCov pars3{t3.x(), t3.alpha(), t3pars, t3covs}; procCode = VarManager::fgFitterThreeProngBarrel.process(pars1, pars2, pars3); } else { @@ -5643,40 +5635,40 @@ void VarManager::FillTripletVertexing(C const& collision, T const& t1, T const& } values[VarManager::kVertexingProcCode] = procCode; - if (procCode == 0) { + if (o2::dqconstants::IsProcCodeInvalid(procCode)) { // TODO: set the other variables to appropriate values and return - values[kVertexingChi2PCA] = -999.; - values[kVertexingLxy] = -999.; - values[kVertexingLxyz] = -999.; - values[kVertexingLz] = -999.; - values[kVertexingLxyErr] = -999.; - values[kVertexingLxyzErr] = -999.; - values[kVertexingLzErr] = -999.; - - values[kVertexingTauxy] = -999.; - values[kVertexingTauz] = -999.; - values[kVertexingTauxyErr] = -999.; - values[kVertexingTauzErr] = -999.; - - values[kVertexingLzProjected] = -999.; - values[kVertexingLxyProjected] = -999.; - values[kVertexingLxyzProjected] = -999.; - values[kVertexingTauzProjected] = -999.; - values[kVertexingTauxyProjected] = -999.; - values[kVertexingTauxyzProjected] = -999.; + values[kVertexingChi2PCA] = o2::dqconstants::InvalidValueF; + values[kVertexingLxy] = o2::dqconstants::InvalidValueF; + values[kVertexingLxyz] = o2::dqconstants::InvalidValueF; + values[kVertexingLz] = o2::dqconstants::InvalidValueF; + values[kVertexingLxyErr] = o2::dqconstants::InvalidValueF; + values[kVertexingLxyzErr] = o2::dqconstants::InvalidValueF; + values[kVertexingLzErr] = o2::dqconstants::InvalidValueF; + + values[kVertexingTauxy] = o2::dqconstants::InvalidValueF; + values[kVertexingTauz] = o2::dqconstants::InvalidValueF; + values[kVertexingTauxyErr] = o2::dqconstants::InvalidValueF; + values[kVertexingTauzErr] = o2::dqconstants::InvalidValueF; + + values[kVertexingLzProjected] = o2::dqconstants::InvalidValueF; + values[kVertexingLxyProjected] = o2::dqconstants::InvalidValueF; + values[kVertexingLxyzProjected] = o2::dqconstants::InvalidValueF; + values[kVertexingTauzProjected] = o2::dqconstants::InvalidValueF; + values[kVertexingTauxyProjected] = o2::dqconstants::InvalidValueF; + values[kVertexingTauxyzProjected] = o2::dqconstants::InvalidValueF; return; } Vec3D secondaryVertex; - if constexpr (eventHasVtxCov) { + if constexpr (EventHasVtxCov) { secondaryVertex = fgFitterThreeProngBarrel.getPCACandidate(); - std::array covMatrixPCA = fgFitterThreeProngBarrel.calcPCACovMatrixFlat(); + std::array covMatrixPCA = fgFitterThreeProngBarrel.calcPCACovMatrixFlat(); o2::math_utils::Point3D vtxXYZ(collision.posX(), collision.posY(), collision.posZ()); - std::array vtxCov{collision.covXX(), collision.covXY(), collision.covYY(), collision.covXZ(), collision.covYZ(), collision.covZZ()}; + std::array vtxCov{collision.covXX(), collision.covXY(), collision.covYY(), collision.covXZ(), collision.covYZ(), collision.covZZ()}; o2::dataformats::VertexBase primaryVertex = {vtxXYZ, vtxCov}; auto covMatrixPV = primaryVertex.getCov(); @@ -5702,10 +5694,10 @@ void VarManager::FillTripletVertexing(C const& collision, T const& t1, T const& values[kVertexingLxyErr] = std::sqrt(getRotatedCovMatrixXX(covMatrixPV, phi, 0.) + getRotatedCovMatrixXX(covMatrixPCA, phi, 0.)); values[kVertexingLzErr] = std::sqrt(getRotatedCovMatrixXX(covMatrixPV, 0, theta) + getRotatedCovMatrixXX(covMatrixPCA, 0, theta)); - values[kVertexingTauz] = (collision.posZ() - secondaryVertex[2]) * v123.M() / (TMath::Abs(v123.Pz()) * o2::constants::physics::LightSpeedCm2NS); + values[kVertexingTauz] = (collision.posZ() - secondaryVertex[2]) * v123.M() / (std::abs(v123.Pz()) * o2::constants::physics::LightSpeedCm2NS); values[kVertexingTauxy] = values[kVertexingLxy] * v123.M() / (v123.Pt() * o2::constants::physics::LightSpeedCm2NS); - values[kVertexingTauzErr] = values[kVertexingLzErr] * v123.M() / (TMath::Abs(v123.Pz()) * o2::constants::physics::LightSpeedCm2NS); + values[kVertexingTauzErr] = values[kVertexingLzErr] * v123.M() / (std::abs(v123.Pz()) * o2::constants::physics::LightSpeedCm2NS); values[kVertexingTauxyErr] = values[kVertexingLxyErr] * v123.M() / (v123.Pt() * o2::constants::physics::LightSpeedCm2NS); values[kCosPointingAngle] = ((secondaryVertex[0] - collision.posX()) * v123.Px() + @@ -5714,13 +5706,13 @@ void VarManager::FillTripletVertexing(C const& collision, T const& t1, T const& (v123.P() * values[VarManager::kVertexingLxyz]); // run 2 definitions: Decay length projected onto the momentum vector of the candidate values[kVertexingLzProjected] = (secondaryVertex[2] - collision.posZ()) * v123.Pz(); - values[kVertexingLzProjected] = values[kVertexingLzProjected] / TMath::Sqrt(v123.Pz() * v123.Pz()); + values[kVertexingLzProjected] = values[kVertexingLzProjected] / std::sqrt(v123.Pz() * v123.Pz()); values[kVertexingLxyProjected] = ((secondaryVertex[0] - collision.posX()) * v123.Px()) + ((secondaryVertex[1] - collision.posY()) * v123.Py()); - values[kVertexingLxyProjected] = values[kVertexingLxyProjected] / TMath::Sqrt((v123.Px() * v123.Px()) + (v123.Py() * v123.Py())); + values[kVertexingLxyProjected] = values[kVertexingLxyProjected] / std::sqrt((v123.Px() * v123.Px()) + (v123.Py() * v123.Py())); values[kVertexingLxyzProjected] = ((secondaryVertex[0] - collision.posX()) * v123.Px()) + ((secondaryVertex[1] - collision.posY()) * v123.Py()) + ((secondaryVertex[2] - collision.posZ()) * v123.Pz()); - values[kVertexingLxyzProjected] = values[kVertexingLxyzProjected] / TMath::Sqrt((v123.Px() * v123.Px()) + (v123.Py() * v123.Py()) + (v123.Pz() * v123.Pz())); + values[kVertexingLxyzProjected] = values[kVertexingLxyzProjected] / std::sqrt((v123.Px() * v123.Px()) + (v123.Py() * v123.Py()) + (v123.Pz() * v123.Pz())); - values[kVertexingTauzProjected] = values[kVertexingLzProjected] * v123.M() / TMath::Abs(v123.Pz()); + values[kVertexingTauzProjected] = values[kVertexingLzProjected] * v123.M() / std::abs(v123.Pz()); values[kVertexingTauxyProjected] = values[kVertexingLxyProjected] * v123.M() / (v123.Pt()); values[kVertexingTauxyzProjected] = values[kVertexingLxyzProjected] * v123.M() / (v123.P()); } @@ -5729,28 +5721,28 @@ void VarManager::FillTripletVertexing(C const& collision, T const& t1, T const& KFParticle trk1KF; KFParticle trk2KF; KFParticle KFGeoThreeProng; - if ((tripletType == kTripleCandidateToKPiPi) && trackHasCov) { + if ((tripletType == kTripleCandidateToKPiPi) && TrackHasCov) { KFPTrack kfpTrack0 = createKFPTrackFromTrack(t1); - trk0KF = KFParticle(kfpTrack0, 321 * t1.sign()); + trk0KF = KFParticle(kfpTrack0, PDG_t::kKPlus * t1.sign()); KFPTrack kfpTrack1 = createKFPTrackFromTrack(t2); - trk1KF = KFParticle(kfpTrack1, 211 * t2.sign()); + trk1KF = KFParticle(kfpTrack1, PDG_t::kPiPlus * t2.sign()); KFPTrack kfpTrack2 = createKFPTrackFromTrack(t3); - trk2KF = KFParticle(kfpTrack2, 211 * t3.sign()); + trk2KF = KFParticle(kfpTrack2, PDG_t::kPiPlus * t3.sign()); - KFGeoThreeProng.SetConstructMethod(3); + KFGeoThreeProng.SetConstructMethod(o2::dqconstants::defaults::KFParticleLegacyConstructionMethod); KFGeoThreeProng.AddDaughter(trk0KF); KFGeoThreeProng.AddDaughter(trk1KF); KFGeoThreeProng.AddDaughter(trk2KF); - } else if ((tripletType == kTripleCandidateToPKPi) && trackHasCov) { + } else if ((tripletType == kTripleCandidateToPKPi) && TrackHasCov) { KFPTrack kfpTrack0 = createKFPTrackFromTrack(t1); - trk0KF = KFParticle(kfpTrack0, 2212 * t1.sign()); + trk0KF = KFParticle(kfpTrack0, PDG_t::kProton * t1.sign()); KFPTrack kfpTrack1 = createKFPTrackFromTrack(t2); - trk1KF = KFParticle(kfpTrack1, 321 * t2.sign()); + trk1KF = KFParticle(kfpTrack1, PDG_t::kKPlus * t2.sign()); KFPTrack kfpTrack2 = createKFPTrackFromTrack(t3); - trk2KF = KFParticle(kfpTrack2, 211 * t3.sign()); + trk2KF = KFParticle(kfpTrack2, PDG_t::kPiPlus * t3.sign()); - KFGeoThreeProng.SetConstructMethod(3); + KFGeoThreeProng.SetConstructMethod(o2::dqconstants::defaults::KFParticleLegacyConstructionMethod); KFGeoThreeProng.AddDaughter(trk0KF); KFGeoThreeProng.AddDaughter(trk1KF); KFGeoThreeProng.AddDaughter(trk2KF); @@ -5760,11 +5752,12 @@ void VarManager::FillTripletVertexing(C const& collision, T const& t1, T const& if (!KFGeoThreeProng.GetMass(mass, massErr)) { values[kKFMass] = mass; } else { - values[kKFMass] = -999.; + values[kKFMass] = o2::dqconstants::InvalidValueF; + ; } } - if constexpr (eventHasVtxCov) { + if constexpr (EventHasVtxCov) { KFPVertex kfpVertex = createKFPVertexFromCollision(collision); values[kKFNContributorsPV] = kfpVertex.GetNContributors(); KFParticle KFPV(kfpVertex); @@ -5779,38 +5772,38 @@ void VarManager::FillTripletVertexing(C const& collision, T const& t1, T const& values[kVertexingLxyErr] = (KFPV.GetCovariance(0) + KFGeoThreeProng.GetCovariance(0)) * dxTriplet2PV * dxTriplet2PV + (KFPV.GetCovariance(2) + KFGeoThreeProng.GetCovariance(2)) * dyTriplet2PV * dyTriplet2PV + 2 * ((KFPV.GetCovariance(1) + KFGeoThreeProng.GetCovariance(1)) * dxTriplet2PV * dyTriplet2PV); values[kVertexingLzErr] = (KFPV.GetCovariance(5) + KFGeoThreeProng.GetCovariance(5)) * dzTriplet2PV * dzTriplet2PV; values[kVertexingLxyzErr] = (KFPV.GetCovariance(0) + KFGeoThreeProng.GetCovariance(0)) * dxTriplet2PV * dxTriplet2PV + (KFPV.GetCovariance(2) + KFGeoThreeProng.GetCovariance(2)) * dyTriplet2PV * dyTriplet2PV + (KFPV.GetCovariance(5) + KFGeoThreeProng.GetCovariance(5)) * dzTriplet2PV * dzTriplet2PV + 2 * ((KFPV.GetCovariance(1) + KFGeoThreeProng.GetCovariance(1)) * dxTriplet2PV * dyTriplet2PV + (KFPV.GetCovariance(3) + KFGeoThreeProng.GetCovariance(3)) * dxTriplet2PV * dzTriplet2PV + (KFPV.GetCovariance(4) + KFGeoThreeProng.GetCovariance(4)) * dyTriplet2PV * dzTriplet2PV); - if (std::fabs(values[kVertexingLxy]) < 1.e-8f) { - values[kVertexingLxy] = 1.e-8f; + if (std::fabs(values[kVertexingLxy]) < o2::dqconstants::defaults::VertexingLxyzTolerance) { + values[kVertexingLxy] = o2::dqconstants::defaults::VertexingLxyzTolerance; } - values[kVertexingLxyErr] = values[kVertexingLxyErr] < 0. ? 1.e8f : std::sqrt(values[kVertexingLxyErr]) / values[kVertexingLxy]; - if (std::fabs(values[kVertexingLz]) < 1.e-8f) { - values[kVertexingLz] = 1.e-8f; + values[kVertexingLxyErr] = values[kVertexingLxyErr] < 0. ? o2::dqconstants::defaults::InvalidVertexingError : std::sqrt(values[kVertexingLxyErr]) / values[kVertexingLxy]; + if (std::fabs(values[kVertexingLz]) < o2::dqconstants::defaults::VertexingLxyzTolerance) { + values[kVertexingLz] = o2::dqconstants::defaults::VertexingLxyzTolerance; } - values[kVertexingLzErr] = values[kVertexingLzErr] < 0. ? 1.e8f : std::sqrt(values[kVertexingLzErr]) / values[kVertexingLz]; - if (std::fabs(values[kVertexingLxyz]) < 1.e-8f) { - values[kVertexingLxyz] = 1.e-8f; + values[kVertexingLzErr] = values[kVertexingLzErr] < 0. ? o2::dqconstants::defaults::InvalidVertexingError : std::sqrt(values[kVertexingLzErr]) / values[kVertexingLz]; + if (std::fabs(values[kVertexingLxyz]) < o2::dqconstants::defaults::VertexingLxyzTolerance) { + values[kVertexingLxyz] = o2::dqconstants::defaults::VertexingLxyzTolerance; } - values[kVertexingLxyzErr] = values[kVertexingLxyzErr] < 0. ? 1.e8f : std::sqrt(values[kVertexingLxyzErr]) / values[kVertexingLxyz]; + values[kVertexingLxyzErr] = values[kVertexingLxyzErr] < 0. ? o2::dqconstants::defaults::InvalidVertexingError : std::sqrt(values[kVertexingLxyzErr]) / values[kVertexingLxyz]; values[kVertexingTauxy] = KFGeoThreeProng.GetPseudoProperDecayTime(KFPV, KFGeoThreeProng.GetMass()) / (o2::constants::physics::LightSpeedCm2NS); - values[kVertexingTauz] = -1 * dzTriplet2PV * KFGeoThreeProng.GetMass() / (TMath::Abs(KFGeoThreeProng.GetPz()) * o2::constants::physics::LightSpeedCm2NS); - values[kVertexingPz] = TMath::Abs(KFGeoThreeProng.GetPz()); + values[kVertexingTauz] = -1 * dzTriplet2PV * KFGeoThreeProng.GetMass() / (std::abs(KFGeoThreeProng.GetPz()) * o2::constants::physics::LightSpeedCm2NS); + values[kVertexingPz] = std::abs(KFGeoThreeProng.GetPz()); values[kVertexingSV] = KFGeoThreeProng.GetZ(); values[kVertexingTauxyErr] = values[kVertexingLxyErr] * KFGeoThreeProng.GetMass() / (KFGeoThreeProng.GetPt() * o2::constants::physics::LightSpeedCm2NS); - values[kVertexingTauzErr] = values[kVertexingLzErr] * KFGeoThreeProng.GetMass() / (TMath::Abs(KFGeoThreeProng.GetPz()) * o2::constants::physics::LightSpeedCm2NS); + values[kVertexingTauzErr] = values[kVertexingLzErr] * KFGeoThreeProng.GetMass() / (std::abs(KFGeoThreeProng.GetPz()) * o2::constants::physics::LightSpeedCm2NS); values[kCosPointingAngle] = (std::sqrt(dxTriplet2PV * dxTriplet2PV) * v123.Px() + std::sqrt(dyTriplet2PV * dyTriplet2PV) * v123.Py() + std::sqrt(dzTriplet2PV * dzTriplet2PV) * v123.Pz()) / (v123.P() * values[VarManager::kVertexingLxyz]); - values[kVertexingLzProjected] = (dzTriplet2PV * KFGeoThreeProng.GetPz()) / TMath::Sqrt(KFGeoThreeProng.GetPz() * KFGeoThreeProng.GetPz()); + values[kVertexingLzProjected] = (dzTriplet2PV * KFGeoThreeProng.GetPz()) / std::sqrt(KFGeoThreeProng.GetPz() * KFGeoThreeProng.GetPz()); values[kVertexingLxyProjected] = (dxTriplet2PV * KFGeoThreeProng.GetPx()) + (dyTriplet2PV * KFGeoThreeProng.GetPy()); - values[kVertexingLxyProjected] = values[kVertexingLxyProjected] / TMath::Sqrt((KFGeoThreeProng.GetPx() * KFGeoThreeProng.GetPx()) + (KFGeoThreeProng.GetPy() * KFGeoThreeProng.GetPy())); + values[kVertexingLxyProjected] = values[kVertexingLxyProjected] / std::sqrt((KFGeoThreeProng.GetPx() * KFGeoThreeProng.GetPx()) + (KFGeoThreeProng.GetPy() * KFGeoThreeProng.GetPy())); values[kVertexingLxyzProjected] = (dxTriplet2PV * KFGeoThreeProng.GetPx()) + (dyTriplet2PV * KFGeoThreeProng.GetPy()) + (dzTriplet2PV * KFGeoThreeProng.GetPz()); - values[kVertexingLxyzProjected] = values[kVertexingLxyzProjected] / TMath::Sqrt((KFGeoThreeProng.GetPx() * KFGeoThreeProng.GetPx()) + (KFGeoThreeProng.GetPy() * KFGeoThreeProng.GetPy()) + (KFGeoThreeProng.GetPz() * KFGeoThreeProng.GetPz())); + values[kVertexingLxyzProjected] = values[kVertexingLxyzProjected] / std::sqrt((KFGeoThreeProng.GetPx() * KFGeoThreeProng.GetPx()) + (KFGeoThreeProng.GetPy() * KFGeoThreeProng.GetPy()) + (KFGeoThreeProng.GetPz() * KFGeoThreeProng.GetPz())); values[kVertexingTauxyProjected] = values[kVertexingLxyProjected] * KFGeoThreeProng.GetMass() / (KFGeoThreeProng.GetPt()); values[kVertexingTauxyProjectedNs] = values[kVertexingTauxyProjected] / o2::constants::physics::LightSpeedCm2NS; - values[kVertexingTauzProjected] = values[kVertexingLzProjected] * KFGeoThreeProng.GetMass() / TMath::Abs(KFGeoThreeProng.GetPz()); + values[kVertexingTauzProjected] = values[kVertexingLzProjected] * KFGeoThreeProng.GetMass() / std::abs(KFGeoThreeProng.GetPz()); } } } @@ -5819,9 +5812,9 @@ template 0 || (collFillMap & ReducedEventVtxCov) > 0); - constexpr bool trackHasCov = ((fillMap & TrackCov) > 0 || (fillMap & ReducedTrackBarrelCov) > 0); - constexpr bool muonHasCov = ((fillMap & MuonCov) > 0 || (fillMap & ReducedMuonCov) > 0); + constexpr bool EventHasVtxCov = ((collFillMap & Collision) > 0 || (collFillMap & ReducedEventVtxCov) > 0); + constexpr bool TrackHasCov = ((fillMap & TrackCov) > 0 || (fillMap & ReducedTrackBarrelCov) > 0); + constexpr bool MuonHasCov = ((fillMap & MuonCov) > 0 || (fillMap & ReducedMuonCov) > 0); if (!values) { values = static_cast(fgValues); } @@ -5835,7 +5828,7 @@ void VarManager::FillDileptonTrackVertexing(C const& collision, T1 const& lepton values[kUsedKF] = static_cast(fgUsedKF); if (!fgUsedKF) { - if constexpr ((candidateType == kBcToThreeMuons) && muonHasCov) { + if constexpr ((candidateType == kBcToThreeMuons) && MuonHasCov) { o2::track::TrackParCovFwd pars1 = FwdToTrackPar(lepton1, lepton1); o2::track::TrackParCovFwd pars2 = FwdToTrackPar(lepton2, lepton2); @@ -5843,7 +5836,7 @@ void VarManager::FillDileptonTrackVertexing(C const& collision, T1 const& lepton procCode = VarManager::fgFitterThreeProngFwd.process(pars1, pars2, pars3); procCodeJpsi = VarManager::fgFitterTwoProngFwd.process(pars1, pars2); - } else if constexpr ((candidateType == kBtoJpsiEEK || candidateType == kDstarToD0KPiPi) && trackHasCov) { + } else if constexpr ((candidateType == kBtoJpsiEEK || candidateType == kDstarToD0KPiPi) && TrackHasCov) { if constexpr (candidateType == kBtoJpsiEEK) { mlepton1 = o2::constants::physics::MassElectron; mlepton2 = o2::constants::physics::MassElectron; @@ -5853,20 +5846,20 @@ void VarManager::FillDileptonTrackVertexing(C const& collision, T1 const& lepton mlepton2 = o2::constants::physics::MassPionCharged; mtrack = o2::constants::physics::MassPionCharged; } - std::array lepton1pars = {lepton1.y(), lepton1.z(), lepton1.snp(), lepton1.tgl(), lepton1.signed1Pt()}; - std::array lepton1covs = {lepton1.cYY(), lepton1.cZY(), lepton1.cZZ(), lepton1.cSnpY(), lepton1.cSnpZ(), - lepton1.cSnpSnp(), lepton1.cTglY(), lepton1.cTglZ(), lepton1.cTglSnp(), lepton1.cTglTgl(), - lepton1.c1PtY(), lepton1.c1PtZ(), lepton1.c1PtSnp(), lepton1.c1PtTgl(), lepton1.c1Pt21Pt2()}; + std::array lepton1pars = {lepton1.y(), lepton1.z(), lepton1.snp(), lepton1.tgl(), lepton1.signed1Pt()}; + std::array lepton1covs = {lepton1.cYY(), lepton1.cZY(), lepton1.cZZ(), lepton1.cSnpY(), lepton1.cSnpZ(), + lepton1.cSnpSnp(), lepton1.cTglY(), lepton1.cTglZ(), lepton1.cTglSnp(), lepton1.cTglTgl(), + lepton1.c1PtY(), lepton1.c1PtZ(), lepton1.c1PtSnp(), lepton1.c1PtTgl(), lepton1.c1Pt21Pt2()}; o2::track::TrackParCov pars1{lepton1.x(), lepton1.alpha(), lepton1pars, lepton1covs}; - std::array lepton2pars = {lepton2.y(), lepton2.z(), lepton2.snp(), lepton2.tgl(), lepton2.signed1Pt()}; - std::array lepton2covs = {lepton2.cYY(), lepton2.cZY(), lepton2.cZZ(), lepton2.cSnpY(), lepton2.cSnpZ(), - lepton2.cSnpSnp(), lepton2.cTglY(), lepton2.cTglZ(), lepton2.cTglSnp(), lepton2.cTglTgl(), - lepton2.c1PtY(), lepton2.c1PtZ(), lepton2.c1PtSnp(), lepton2.c1PtTgl(), lepton2.c1Pt21Pt2()}; + std::array lepton2pars = {lepton2.y(), lepton2.z(), lepton2.snp(), lepton2.tgl(), lepton2.signed1Pt()}; + std::array lepton2covs = {lepton2.cYY(), lepton2.cZY(), lepton2.cZZ(), lepton2.cSnpY(), lepton2.cSnpZ(), + lepton2.cSnpSnp(), lepton2.cTglY(), lepton2.cTglZ(), lepton2.cTglSnp(), lepton2.cTglTgl(), + lepton2.c1PtY(), lepton2.c1PtZ(), lepton2.c1PtSnp(), lepton2.c1PtTgl(), lepton2.c1Pt21Pt2()}; o2::track::TrackParCov pars2{lepton2.x(), lepton2.alpha(), lepton2pars, lepton2covs}; - std::array lepton3pars = {track.y(), track.z(), track.snp(), track.tgl(), track.signed1Pt()}; - std::array lepton3covs = {track.cYY(), track.cZY(), track.cZZ(), track.cSnpY(), track.cSnpZ(), - track.cSnpSnp(), track.cTglY(), track.cTglZ(), track.cTglSnp(), track.cTglTgl(), - track.c1PtY(), track.c1PtZ(), track.c1PtSnp(), track.c1PtTgl(), track.c1Pt21Pt2()}; + std::array lepton3pars = {track.y(), track.z(), track.snp(), track.tgl(), track.signed1Pt()}; + std::array lepton3covs = {track.cYY(), track.cZY(), track.cZZ(), track.cSnpY(), track.cSnpZ(), + track.cSnpSnp(), track.cTglY(), track.cTglZ(), track.cTglSnp(), track.cTglTgl(), + track.c1PtY(), track.c1PtZ(), track.c1PtSnp(), track.c1PtTgl(), track.c1Pt21Pt2()}; o2::track::TrackParCov pars3{track.x(), track.alpha(), lepton3pars, lepton3covs}; procCode = VarManager::fgFitterThreeProngBarrel.process(pars1, pars2, pars3); procCodeJpsi = VarManager::fgFitterTwoProngBarrel.process(pars1, pars2); @@ -5896,41 +5889,41 @@ void VarManager::FillDileptonTrackVertexing(C const& collision, T1 const& lepton values[kS23] = (v2 + v3).M2(); values[VarManager::kVertexingProcCode] = procCode; - if (procCode == 0 || procCodeJpsi == 0) { + if (o2::dqconstants::IsProcCodeInvalid(procCode) || o2::dqconstants::IsProcCodeInvalid(procCodeJpsi)) { // TODO: set the other variables to appropriate values and return - values[VarManager::kVertexingChi2PCA] = -999.; - values[VarManager::kVertexingLxy] = -999.; - values[VarManager::kVertexingLxyz] = -999.; - values[VarManager::kVertexingLz] = -999.; - values[VarManager::kVertexingLxyErr] = -999.; - values[VarManager::kVertexingLxyzErr] = -999.; - values[VarManager::kVertexingLzErr] = -999.; - - values[VarManager::kVertexingTauxy] = -999.; - values[VarManager::kVertexingTauz] = -999.; - values[VarManager::kVertexingTauxyErr] = -999.; - values[VarManager::kVertexingTauzErr] = -999.; - values[VarManager::kVertexingPz] = -999.; - values[VarManager::kVertexingSV] = -999.; + values[VarManager::kVertexingChi2PCA] = o2::dqconstants::InvalidValueF; + values[VarManager::kVertexingLxy] = o2::dqconstants::InvalidValueF; + values[VarManager::kVertexingLxyz] = o2::dqconstants::InvalidValueF; + values[VarManager::kVertexingLz] = o2::dqconstants::InvalidValueF; + values[VarManager::kVertexingLxyErr] = o2::dqconstants::InvalidValueF; + values[VarManager::kVertexingLxyzErr] = o2::dqconstants::InvalidValueF; + values[VarManager::kVertexingLzErr] = o2::dqconstants::InvalidValueF; + + values[VarManager::kVertexingTauxy] = o2::dqconstants::InvalidValueF; + values[VarManager::kVertexingTauz] = o2::dqconstants::InvalidValueF; + values[VarManager::kVertexingTauxyErr] = o2::dqconstants::InvalidValueF; + values[VarManager::kVertexingTauzErr] = o2::dqconstants::InvalidValueF; + values[VarManager::kVertexingPz] = o2::dqconstants::InvalidValueF; + values[VarManager::kVertexingSV] = o2::dqconstants::InvalidValueF; return; } Vec3D secondaryVertex; - if constexpr (eventHasVtxCov) { - std::array covMatrixPCA{}; + if constexpr (EventHasVtxCov) { + std::array covMatrixPCA{}; o2::dataformats::DCA impactParameter0; o2::dataformats::DCA impactParameter1; o2::math_utils::Point3D vtxXYZ(collision.posX(), collision.posY(), collision.posZ()); - std::array vtxCov{collision.covXX(), collision.covXY(), collision.covYY(), collision.covXZ(), collision.covYZ(), collision.covZZ()}; + std::array vtxCov{collision.covXX(), collision.covXY(), collision.covYY(), collision.covXZ(), collision.covYZ(), collision.covZZ()}; o2::dataformats::VertexBase primaryVertex = {vtxXYZ, vtxCov}; auto covMatrixPV = primaryVertex.getCov(); - if constexpr ((candidateType == kBtoJpsiEEK || candidateType == kDstarToD0KPiPi) && trackHasCov) { + if constexpr ((candidateType == kBtoJpsiEEK || candidateType == kDstarToD0KPiPi) && TrackHasCov) { secondaryVertex = fgFitterThreeProngBarrel.getPCACandidate(); covMatrixPCA = fgFitterThreeProngBarrel.calcPCACovMatrixFlat(); - } else if constexpr (candidateType == kBcToThreeMuons && muonHasCov) { + } else if constexpr (candidateType == kBcToThreeMuons && MuonHasCov) { secondaryVertex = fgFitterThreeProngFwd.getPCACandidate(); covMatrixPCA = fgFitterThreeProngFwd.calcPCACovMatrixFlat(); } @@ -5961,13 +5954,13 @@ void VarManager::FillDileptonTrackVertexing(C const& collision, T1 const& lepton values[kVertexingLzErr] = std::sqrt(getRotatedCovMatrixXX(covMatrixPV, 0, theta) + getRotatedCovMatrixXX(covMatrixPCA, 0, theta)); } - values[kVertexingTauz] = (collision.posZ() - secondaryVertex[2]) * v123.M() / (TMath::Abs(v123.Pz()) * o2::constants::physics::LightSpeedCm2NS); + values[kVertexingTauz] = (collision.posZ() - secondaryVertex[2]) * v123.M() / (std::abs(v123.Pz()) * o2::constants::physics::LightSpeedCm2NS); values[kVertexingTauxy] = values[kVertexingLxy] * v123.M() / (v123.Pt() * o2::constants::physics::LightSpeedCm2NS); - values[kVertexingPz] = TMath::Abs(v123.Pz()); + values[kVertexingPz] = std::abs(v123.Pz()); values[kVertexingSV] = secondaryVertex[2]; - values[kVertexingTauzErr] = values[kVertexingLzErr] * v123.M() / (TMath::Abs(v123.Pz()) * o2::constants::physics::LightSpeedCm2NS); + values[kVertexingTauzErr] = values[kVertexingLzErr] * v123.M() / (std::abs(v123.Pz()) * o2::constants::physics::LightSpeedCm2NS); values[kVertexingTauxyErr] = values[kVertexingLxyErr] * v123.M() / (v123.Pt() * o2::constants::physics::LightSpeedCm2NS); if (fgUsedVars[kCosPointingAngle] && fgUsedVars[kVertexingLxyz]) { @@ -5979,12 +5972,12 @@ void VarManager::FillDileptonTrackVertexing(C const& collision, T1 const& lepton // run 2 definitions: Lxy projected onto the momentum vector of the candidate if (fgUsedVars[kVertexingLxyProjected] || fgUsedVars[kVertexingLxyzProjected] || fgUsedVars[kVertexingTauxyProjected]) { values[kVertexingLzProjected] = (secondaryVertex[2] - collision.posZ()) * v123.Pz(); - values[kVertexingLzProjected] = values[kVertexingLzProjected] / TMath::Sqrt(v123.Pz() * v123.Pz()); + values[kVertexingLzProjected] = values[kVertexingLzProjected] / std::sqrt(v123.Pz() * v123.Pz()); values[kVertexingLxyProjected] = ((secondaryVertex[0] - collision.posX()) * v123.Px()) + ((secondaryVertex[1] - collision.posY()) * v123.Py()); - values[kVertexingLxyProjected] = values[kVertexingLxyProjected] / TMath::Sqrt((v123.Px() * v123.Px()) + (v123.Py() * v123.Py())); + values[kVertexingLxyProjected] = values[kVertexingLxyProjected] / std::sqrt((v123.Px() * v123.Px()) + (v123.Py() * v123.Py())); values[kVertexingLxyzProjected] = ((secondaryVertex[0] - collision.posX()) * v123.Px()) + ((secondaryVertex[1] - collision.posY()) * v123.Py()) + ((secondaryVertex[2] - collision.posZ()) * v123.Pz()); - values[kVertexingLxyzProjected] = values[kVertexingLxyzProjected] / TMath::Sqrt((v123.Px() * v123.Px()) + (v123.Py() * v123.Py()) + (v123.Pz() * v123.Pz())); - values[kVertexingTauzProjected] = values[kVertexingLzProjected] * v123.M() / TMath::Abs(v123.Pz()); + values[kVertexingLxyzProjected] = values[kVertexingLxyzProjected] / std::sqrt((v123.Px() * v123.Px()) + (v123.Py() * v123.Py()) + (v123.Pz() * v123.Pz())); + values[kVertexingTauzProjected] = values[kVertexingLzProjected] * v123.M() / std::abs(v123.Pz()); values[kVertexingTauxyProjected] = values[kVertexingLxyProjected] * v123.M() / v123.Pt(); } } @@ -5995,15 +5988,15 @@ void VarManager::FillDileptonTrackVertexing(C const& collision, T1 const& lepton KFParticle KFGeoTwoLeptons; KFParticle KFGeoThreeProng; - if constexpr ((candidateType == kBtoJpsiEEK) && trackHasCov) { + if constexpr ((candidateType == kBtoJpsiEEK) && TrackHasCov) { KFPTrack kfpTrack0 = createKFPTrackFromTrack(lepton1); - lepton1KF = KFParticle(kfpTrack0, -11 * lepton1.sign()); + lepton1KF = KFParticle(kfpTrack0, PDG_t::kPositron * lepton1.sign()); KFPTrack kfpTrack1 = createKFPTrackFromTrack(lepton2); - lepton2KF = KFParticle(kfpTrack1, -11 * lepton2.sign()); + lepton2KF = KFParticle(kfpTrack1, PDG_t::kPositron * lepton2.sign()); KFPTrack kfpTrack2 = createKFPTrackFromTrack(track); - hadronKF = KFParticle(kfpTrack2, 321 * track.sign()); // kaon mass + hadronKF = KFParticle(kfpTrack2, PDG_t::kKPlus * track.sign()); // kaon mass - KFGeoTwoLeptons.SetConstructMethod(2); + KFGeoTwoLeptons.SetConstructMethod(o2::dqconstants::defaults::KFParticleMassConstrainedConstruction); KFGeoTwoLeptons.AddDaughter(lepton1KF); KFGeoTwoLeptons.AddDaughter(lepton2KF); @@ -6017,7 +6010,7 @@ void VarManager::FillDileptonTrackVertexing(C const& collision, T1 const& lepton values[kKFDCAxyzBetweenProngs] = KFGeoTwoLeptons.GetDistanceFromParticle(hadronKF); } - KFGeoThreeProng.SetConstructMethod(2); + KFGeoThreeProng.SetConstructMethod(o2::dqconstants::defaults::KFParticleMassConstrainedConstruction); KFGeoThreeProng.AddDaughter(KFGeoTwoLeptons); KFGeoThreeProng.AddDaughter(hadronKF); @@ -6025,7 +6018,7 @@ void VarManager::FillDileptonTrackVertexing(C const& collision, T1 const& lepton values[kKFMass] = KFGeoThreeProng.GetMass(); } - if constexpr (eventHasVtxCov) { + if constexpr (EventHasVtxCov) { KFPVertex kfpVertex = createKFPVertexFromCollision(collision); KFParticle KFPV(kfpVertex); double dxTriplet3PV = KFGeoThreeProng.GetX() - KFPV.GetX(); @@ -6039,18 +6032,18 @@ void VarManager::FillDileptonTrackVertexing(C const& collision, T1 const& lepton values[kVertexingLxyErr] = (KFPV.GetCovariance(0) + KFGeoThreeProng.GetCovariance(0)) * dxTriplet3PV * dxTriplet3PV + (KFPV.GetCovariance(2) + KFGeoThreeProng.GetCovariance(2)) * dyTriplet3PV * dyTriplet3PV + 2 * ((KFPV.GetCovariance(1) + KFGeoThreeProng.GetCovariance(1)) * dxTriplet3PV * dyTriplet3PV); values[kVertexingLzErr] = (KFPV.GetCovariance(5) + KFGeoThreeProng.GetCovariance(5)) * dzTriplet3PV * dzTriplet3PV; values[kVertexingLxyzErr] = (KFPV.GetCovariance(0) + KFGeoThreeProng.GetCovariance(0)) * dxTriplet3PV * dxTriplet3PV + (KFPV.GetCovariance(2) + KFGeoThreeProng.GetCovariance(2)) * dyTriplet3PV * dyTriplet3PV + (KFPV.GetCovariance(5) + KFGeoThreeProng.GetCovariance(5)) * dzTriplet3PV * dzTriplet3PV + 2 * ((KFPV.GetCovariance(1) + KFGeoThreeProng.GetCovariance(1)) * dxTriplet3PV * dyTriplet3PV + (KFPV.GetCovariance(3) + KFGeoThreeProng.GetCovariance(3)) * dxTriplet3PV * dzTriplet3PV + (KFPV.GetCovariance(4) + KFGeoThreeProng.GetCovariance(4)) * dyTriplet3PV * dzTriplet3PV); - if (std::fabs(values[kVertexingLxy]) < 1.e-8f) { - values[kVertexingLxy] = 1.e-8f; + if (std::fabs(values[kVertexingLxy]) < o2::dqconstants::defaults::VertexingLxyzTolerance) { + values[kVertexingLxy] = o2::dqconstants::defaults::VertexingLxyzTolerance; } - values[kVertexingLxyErr] = values[kVertexingLxyErr] < 0. ? 1.e8f : std::sqrt(values[kVertexingLxyErr]) / values[kVertexingLxy]; - if (std::fabs(values[kVertexingLz]) < 1.e-8f) { - values[kVertexingLz] = 1.e-8f; + values[kVertexingLxyErr] = values[kVertexingLxyErr] < 0. ? o2::dqconstants::defaults::InvalidVertexingError : std::sqrt(values[kVertexingLxyErr]) / values[kVertexingLxy]; + if (std::fabs(values[kVertexingLz]) < o2::dqconstants::defaults::VertexingLxyzTolerance) { + values[kVertexingLz] = o2::dqconstants::defaults::VertexingLxyzTolerance; } - values[kVertexingLzErr] = values[kVertexingLzErr] < 0. ? 1.e8f : std::sqrt(values[kVertexingLzErr]) / values[kVertexingLz]; - if (std::fabs(values[kVertexingLxyz]) < 1.e-8f) { - values[kVertexingLxyz] = 1.e-8f; + values[kVertexingLzErr] = values[kVertexingLzErr] < 0. ? o2::dqconstants::defaults::InvalidVertexingError : std::sqrt(values[kVertexingLzErr]) / values[kVertexingLz]; + if (std::fabs(values[kVertexingLxyz]) < o2::dqconstants::defaults::VertexingLxyzTolerance) { + values[kVertexingLxyz] = o2::dqconstants::defaults::VertexingLxyzTolerance; } - values[kVertexingLxyzErr] = values[kVertexingLxyzErr] < 0. ? 1.e8f : std::sqrt(values[kVertexingLxyzErr]) / values[kVertexingLxyz]; + values[kVertexingLxyzErr] = values[kVertexingLxyzErr] < 0. ? o2::dqconstants::defaults::InvalidVertexingError : std::sqrt(values[kVertexingLxyzErr]) / values[kVertexingLxyz]; if (fgUsedVars[kVertexingTauxy]) { values[kVertexingTauxy] = KFGeoThreeProng.GetPseudoProperDecayTime(KFPV, KFGeoThreeProng.GetMass()) / (o2::constants::physics::LightSpeedCm2NS); @@ -6069,17 +6062,17 @@ void VarManager::FillDileptonTrackVertexing(C const& collision, T1 const& lepton // As defined in Run 2 (projected onto momentum) if (fgUsedVars[kVertexingLxyProjected] || fgUsedVars[kVertexingLxyzProjected] || fgUsedVars[kVertexingLzProjected]) { - values[kVertexingLzProjected] = (dzTriplet3PV * KFGeoThreeProng.GetPz()) / TMath::Sqrt(KFGeoThreeProng.GetPz() * KFGeoThreeProng.GetPz()); + values[kVertexingLzProjected] = (dzTriplet3PV * KFGeoThreeProng.GetPz()) / std::sqrt(KFGeoThreeProng.GetPz() * KFGeoThreeProng.GetPz()); values[kVertexingLxyProjected] = (dxTriplet3PV * KFGeoThreeProng.GetPx()) + (dyTriplet3PV * KFGeoThreeProng.GetPy()); - values[kVertexingLxyProjected] = values[kVertexingLxyProjected] / TMath::Sqrt((KFGeoThreeProng.GetPx() * KFGeoThreeProng.GetPx()) + (KFGeoThreeProng.GetPy() * KFGeoThreeProng.GetPy())); + values[kVertexingLxyProjected] = values[kVertexingLxyProjected] / std::sqrt((KFGeoThreeProng.GetPx() * KFGeoThreeProng.GetPx()) + (KFGeoThreeProng.GetPy() * KFGeoThreeProng.GetPy())); values[kVertexingLxyzProjected] = (dxTriplet3PV * KFGeoThreeProng.GetPx()) + (dyTriplet3PV * KFGeoThreeProng.GetPy()) + (dzTriplet3PV * KFGeoThreeProng.GetPz()); - values[kVertexingLxyzProjected] = values[kVertexingLxyzProjected] / TMath::Sqrt((KFGeoThreeProng.GetPx() * KFGeoThreeProng.GetPx()) + (KFGeoThreeProng.GetPy() * KFGeoThreeProng.GetPy()) + (KFGeoThreeProng.GetPz() * KFGeoThreeProng.GetPz())); + values[kVertexingLxyzProjected] = values[kVertexingLxyzProjected] / std::sqrt((KFGeoThreeProng.GetPx() * KFGeoThreeProng.GetPx()) + (KFGeoThreeProng.GetPy() * KFGeoThreeProng.GetPy()) + (KFGeoThreeProng.GetPz() * KFGeoThreeProng.GetPz())); values[kVertexingTauxyProjected] = (values[kVertexingLxyProjected] * KFGeoThreeProng.GetMass()) / (KFGeoThreeProng.GetPt()); values[kVertexingTauxyProjectedNs] = values[kVertexingTauxyProjected] / o2::constants::physics::LightSpeedCm2NS; - values[kVertexingTauzProjected] = (values[kVertexingLzProjected] * KFGeoThreeProng.GetMass()) / TMath::Abs(KFGeoThreeProng.GetPz()); + values[kVertexingTauzProjected] = (values[kVertexingLzProjected] * KFGeoThreeProng.GetMass()) / std::abs(KFGeoThreeProng.GetPz()); } // end Run 2 quantities - } // end eventHasVtxCov - } // end (candidateType == kBtoJpsiEEK) && trackHasCov + } // end EventHasVtxCov + } // end (candidateType == kBtoJpsiEEK) && TrackHasCov } // end KF } @@ -6182,10 +6175,10 @@ void VarManager::FillQVectorFromGFW(C const& /*collision*/, A const& compA11, A values[kR2SP_BC] = (values[kQ2X0B] * values[kQ2X0C] + values[kQ2Y0B] * values[kQ2Y0C]); values[kR3SP] = (values[kQ3X0B] * values[kQ3X0C] + values[kQ3Y0B] * values[kQ3Y0C]); - values[kR2EP_AB] = TMath::Cos(2 * (Psi2A - Psi2B)); - values[kR2EP_AC] = TMath::Cos(2 * (Psi2A - Psi2C)); - values[kR2EP_BC] = TMath::Cos(2 * (Psi2B - Psi2C)); - values[kR3EP] = TMath::Cos(3 * (Psi3B - Psi3C)); + values[kR2EP_AB] = std::cos(2 * (Psi2A - Psi2B)); + values[kR2EP_AC] = std::cos(2 * (Psi2A - Psi2C)); + values[kR2EP_BC] = std::cos(2 * (Psi2B - Psi2C)); + values[kR3EP] = std::cos(3 * (Psi3B - Psi3C)); } template @@ -6271,17 +6264,17 @@ void VarManager::FillQVectorFromCentralFW(C const& collision, float* values) float epBNegs = epHelper.GetEventPlane(xQVecBNeg, yQVecBNeg, 2); float epTPCFull = epHelper.GetEventPlane(values[kQ2X0A], values[kQ2Y0A], 2); - values[kR2EP_AB] = TMath::Cos(2 * getDeltaPsiInRange(epTPCFull, epFT0a, 2)); - values[kR2EP_AC] = TMath::Cos(2 * getDeltaPsiInRange(epTPCFull, epFT0c, 2)); - values[kR2EP_BC] = TMath::Cos(2 * getDeltaPsiInRange(epFT0a, epFT0c, 2)); - values[kR2EP_FT0CTPCPOS] = TMath::Cos(2 * getDeltaPsiInRange(epFT0c, epBPoss, 2)); - values[kR2EP_FT0CTPCNEG] = TMath::Cos(2 * getDeltaPsiInRange(epFT0c, epBNegs, 2)); - values[kR2EP_FT0ATPCPOS] = TMath::Cos(2 * getDeltaPsiInRange(epFT0a, epBPoss, 2)); - values[kR2EP_FT0ATPCNEG] = TMath::Cos(2 * getDeltaPsiInRange(epFT0a, epBNegs, 2)); - values[kR2EP_FT0MTPCPOS] = TMath::Cos(2 * getDeltaPsiInRange(epFT0m, epBPoss, 2)); - values[kR2EP_FT0MTPCNEG] = TMath::Cos(2 * getDeltaPsiInRange(epFT0m, epBNegs, 2)); - values[kR2EP_FV0ATPCPOS] = TMath::Cos(2 * getDeltaPsiInRange(epFV0a, epBPoss, 2)); - values[kR2EP_FV0ATPCNEG] = TMath::Cos(2 * getDeltaPsiInRange(epFV0a, epBNegs, 2)); + values[kR2EP_AB] = std::cos(2 * getDeltaPsiInRange(epTPCFull, epFT0a, 2)); + values[kR2EP_AC] = std::cos(2 * getDeltaPsiInRange(epTPCFull, epFT0c, 2)); + values[kR2EP_BC] = std::cos(2 * getDeltaPsiInRange(epFT0a, epFT0c, 2)); + values[kR2EP_FT0CTPCPOS] = std::cos(2 * getDeltaPsiInRange(epFT0c, epBPoss, 2)); + values[kR2EP_FT0CTPCNEG] = std::cos(2 * getDeltaPsiInRange(epFT0c, epBNegs, 2)); + values[kR2EP_FT0ATPCPOS] = std::cos(2 * getDeltaPsiInRange(epFT0a, epBPoss, 2)); + values[kR2EP_FT0ATPCNEG] = std::cos(2 * getDeltaPsiInRange(epFT0a, epBNegs, 2)); + values[kR2EP_FT0MTPCPOS] = std::cos(2 * getDeltaPsiInRange(epFT0m, epBPoss, 2)); + values[kR2EP_FT0MTPCNEG] = std::cos(2 * getDeltaPsiInRange(epFT0m, epBNegs, 2)); + values[kR2EP_FV0ATPCPOS] = std::cos(2 * getDeltaPsiInRange(epFV0a, epBPoss, 2)); + values[kR2EP_FV0ATPCNEG] = std::cos(2 * getDeltaPsiInRange(epFV0a, epBNegs, 2)); } template @@ -6293,18 +6286,18 @@ void VarManager::FillSpectatorPlane(C const& collision, float* values) auto zncEnergy = collision.energySectorZNC(); auto znaEnergy = collision.energySectorZNA(); - for (int i = 0; i < 4; i++) { // avoid std::numeric_limits::infinity() in the table - if (zncEnergy[i] < -1.e12) { - zncEnergy[i] = -1.f; + for (int i = 0; i < o2::dqconstants::defaults::ZDCNeutronNTowers; i++) { // avoid std::numeric_limits::infinity() in the table + if (zncEnergy[i] < o2::dqconstants::defaults::InvalidZnEnergy) { + zncEnergy[i] = o2::dqconstants::InvalidValueF; } - if (znaEnergy[i] < -1.e12) { - znaEnergy[i] = -1.f; + if (znaEnergy[i] < o2::dqconstants::defaults::InvalidZnEnergy) { + znaEnergy[i] = o2::dqconstants::InvalidValueF; } } - float znaCommon = collision.energyCommonZNA() < 0 ? -1.f : collision.energyCommonZNA(); - float zncCommon = collision.energyCommonZNC() < 0 ? -1.f : collision.energyCommonZNC(); - float zpaCommon = collision.energyCommonZPA() < 0 ? -1.f : collision.energyCommonZPA(); - float zpcCommon = collision.energyCommonZPC() < 0 ? -1.f : collision.energyCommonZPC(); + float znaCommon = collision.energyCommonZNA() < 0 ? o2::dqconstants::InvalidValueF : collision.energyCommonZNA(); + float zncCommon = collision.energyCommonZNC() < 0 ? o2::dqconstants::InvalidValueF : collision.energyCommonZNC(); + float zpaCommon = collision.energyCommonZPA() < 0 ? o2::dqconstants::InvalidValueF : collision.energyCommonZPA(); + float zpcCommon = collision.energyCommonZPC() < 0 ? o2::dqconstants::InvalidValueF : collision.energyCommonZPC(); // Store ZNA and ZNC energies for calibrations values[kEnergyCommonZNA] = znaCommon; @@ -6325,33 +6318,33 @@ void VarManager::FillSpectatorPlane(C const& collision, float* values) values[kTimeZPC] = collision.timeZPC(); // constexpr float beamEne = 5.36 * 0.5; - constexpr std::array x = {-1.75f, 1.75f, -1.75f, 1.75f}; - constexpr std::array y = {-1.75f, -1.75f, 1.75f, 1.75f}; + constexpr std::array X = {-1.75f, 1.75f, -1.75f, 1.75f}; + constexpr std::array Y = {-1.75f, -1.75f, 1.75f, 1.75f}; // constexpr float intcalibZNA[4] = {0.7997028, 0.8453715, 0.7879917, 0.7695486}; // constexpr float intcalibZNC[4] = {0.7631577, 0.8408003, 0.7083920, 0.7731769}; // constexpr float alpha = 0.395; // WARNING: Run 2 coorection, to be checked - constexpr float alpha = 1.; + constexpr float Alpha = 1.; float numXZNC = 0., numYZNC = 0., denZNC = 0.; float numXZNA = 0., numYZNA = 0., denZNA = 0.; float sumZNA = 0; float sumZNC = 0; - for (int i = 0; i < 4; i++) { + for (int i = 0; i < o2::dqconstants::defaults::ZDCNeutronNTowers; i++) { if (zncEnergy[i] > 0.) { - float wZNC = std::pow(zncEnergy[i], alpha); + float wZNC = std::pow(zncEnergy[i], Alpha); // sumZNC += intcalibZNC[i] * wZNC; sumZNC += wZNC; - numXZNC -= x[i] * wZNC; - numYZNC += y[i] * wZNC; + numXZNC -= X[i] * wZNC; + numYZNC += Y[i] * wZNC; denZNC += wZNC; } if (znaEnergy[i] > 0.) { - float wZNA = std::pow(znaEnergy[i], alpha); + float wZNA = std::pow(znaEnergy[i], Alpha); // sumZNA += intcalibZNA[i] * wZNA; sumZNA += wZNA; - numXZNA += x[i] * wZNA; - numYZNA += y[i] * wZNA; + numXZNA += X[i] * wZNA; + numYZNA += Y[i] * wZNA; denZNA += wZNA; } } @@ -6363,7 +6356,7 @@ void VarManager::FillSpectatorPlane(C const& collision, float* values) values[kQ1ZNCX] = cZNC * numXZNC / denZNC; values[kQ1ZNCY] = cZNC * numYZNC / denZNC; } else { - values[kQ1ZNCX] = values[kQ1ZNCY] = 999.; + values[kQ1ZNCX] = values[kQ1ZNCY] = o2::dqconstants::InvalidValueF; } if (denZNA != 0.) { @@ -6373,7 +6366,7 @@ void VarManager::FillSpectatorPlane(C const& collision, float* values) values[kQ1ZNAX] = cZNA * numXZNA / denZNA; values[kQ1ZNAY] = cZNA * numYZNA / denZNA; } else { - values[kQ1ZNAX] = values[kQ1ZNAY] = 999.; + values[kQ1ZNAX] = values[kQ1ZNAY] = o2::dqconstants::InvalidValueF; } if (denZNA != 0. && denZNC != 0.) { @@ -6382,7 +6375,7 @@ void VarManager::FillSpectatorPlane(C const& collision, float* values) values[kQ1ZNACYX] = values[kQ1ZNAY] * values[kQ1ZNCX]; values[kQ1ZNACXY] = values[kQ1ZNAX] * values[kQ1ZNCY]; } else { - values[kQ1ZNACXX] = values[kQ1ZNACYY] = values[kQ1ZNACYX] = values[kQ1ZNACXY] = 999.; + values[kQ1ZNACXX] = values[kQ1ZNACYY] = values[kQ1ZNACYX] = values[kQ1ZNACXY] = o2::dqconstants::InvalidValueF; } if (znaCommon != 0 && sumZNA != 0 && zncCommon != 0 && sumZNC != 0) { @@ -6394,7 +6387,6 @@ void VarManager::FillSpectatorPlane(C const& collision, float* values) template void VarManager::FillPairVn(T1 const& t1, T2 const& t2, float* values) { - if (!values) { values = static_cast(fgValues); } @@ -6425,12 +6417,12 @@ void VarManager::FillPairVn(T1 const& t1, T2 const& t2, float* values) // TODO: provide different computations for vn // Compute the scalar product UQ using Q-vector from A, for second and third harmonic // Dilepton vn could be accessible after dividing this product with the R factor - values[kU2Q2] = values[kQ2X0A] * TMath::Cos(2 * v12.Phi()) + values[kQ2Y0A] * TMath::Sin(2 * v12.Phi()); - values[kU2Q2POS] = values[kQ2X0APOS] * TMath::Cos(2 * v12.Phi()) + values[kQ2Y0APOS] * TMath::Sin(2 * v12.Phi()); - values[kU2Q2NEG] = values[kQ2X0ANEG] * TMath::Cos(2 * v12.Phi()) + values[kQ2Y0ANEG] * TMath::Sin(2 * v12.Phi()); - values[kU2Q2FT0A] = values[kQ2X0B] * TMath::Cos(2 * v12.Phi()) + values[kQ2Y0B] * TMath::Sin(2 * v12.Phi()); // Addition of new U2Q2 values for FT0A - values[kU2Q2FT0C] = values[kQ2X0C] * TMath::Cos(2 * v12.Phi()) + values[kQ2Y0C] * TMath::Sin(2 * v12.Phi()); // Addition of new U2Q2 values for FT0C - values[kU3Q3] = values[kQ3X0A] * TMath::Cos(3 * v12.Phi()) + values[kQ3Y0A] * TMath::Sin(3 * v12.Phi()); + values[kU2Q2] = values[kQ2X0A] * std::cos(2 * v12.Phi()) + values[kQ2Y0A] * std::sin(2 * v12.Phi()); + values[kU2Q2POS] = values[kQ2X0APOS] * std::cos(2 * v12.Phi()) + values[kQ2Y0APOS] * std::sin(2 * v12.Phi()); + values[kU2Q2NEG] = values[kQ2X0ANEG] * std::cos(2 * v12.Phi()) + values[kQ2Y0ANEG] * std::sin(2 * v12.Phi()); + values[kU2Q2FT0A] = values[kQ2X0B] * std::cos(2 * v12.Phi()) + values[kQ2Y0B] * std::sin(2 * v12.Phi()); + values[kU2Q2FT0C] = values[kQ2X0C] * std::cos(2 * v12.Phi()) + values[kQ2Y0C] * std::sin(2 * v12.Phi()); + values[kU3Q3] = values[kQ3X0A] * std::cos(3 * v12.Phi()) + values[kQ3Y0A] * std::sin(3 * v12.Phi()); values[kR2SP_AB] = (values[kQ2X0A] * values[kQ2X0B] + values[kQ2Y0A] * values[kQ2Y0B]); values[kR2SP_AC] = (values[kQ2X0A] * values[kQ2X0C] + values[kQ2Y0A] * values[kQ2Y0C]); values[kR2SP_BC] = (values[kQ2X0B] * values[kQ2X0C] + values[kQ2Y0B] * values[kQ2Y0C]); @@ -6444,15 +6436,15 @@ void VarManager::FillPairVn(T1 const& t1, T2 const& t2, float* values) float Psi3B = getEventPlane(3, values[kQ3X0B], values[kQ3Y0B]); float Psi2C = getEventPlane(2, values[kQ2X0C], values[kQ2Y0C]); float Psi3C = getEventPlane(3, values[kQ3X0C], values[kQ3Y0C]); - values[kCos2DeltaPhi] = TMath::Cos(2 * (v12.Phi() - Psi2A)); - values[kCos2DeltaPhiPOS] = TMath::Cos(2 * (v12.Phi() - Psi2APOS)); - values[kCos2DeltaPhiNEG] = TMath::Cos(2 * (v12.Phi() - Psi2ANEG)); - values[kCos3DeltaPhi] = TMath::Cos(3 * (v12.Phi() - Psi3A)); - values[kCos2DeltaPhi_FT0C] = TMath::Cos(2 * (v12.Phi() - Psi2C)); - values[kR2EP_AB] = TMath::Cos(2 * (Psi2A - Psi2B)); - values[kR2EP_AC] = TMath::Cos(2 * (Psi2A - Psi2C)); - values[kR2EP_BC] = TMath::Cos(2 * (Psi2B - Psi2C)); - values[kR3EP] = TMath::Cos(3 * (Psi3B - Psi3C)); + values[kCos2DeltaPhi] = std::cos(2 * (v12.Phi() - Psi2A)); + values[kCos2DeltaPhiPOS] = std::cos(2 * (v12.Phi() - Psi2APOS)); + values[kCos2DeltaPhiNEG] = std::cos(2 * (v12.Phi() - Psi2ANEG)); + values[kCos3DeltaPhi] = std::cos(3 * (v12.Phi() - Psi3A)); + values[kCos2DeltaPhi_FT0C] = std::cos(2 * (v12.Phi() - Psi2C)); + values[kR2EP_AB] = std::cos(2 * (Psi2A - Psi2B)); + values[kR2EP_AC] = std::cos(2 * (Psi2A - Psi2C)); + values[kR2EP_BC] = std::cos(2 * (Psi2B - Psi2C)); + values[kR3EP] = std::cos(3 * (Psi3B - Psi3C)); float V2SP = values[kU2Q2] / values[kR2SP]; float V2EP = values[kCos2DeltaPhi] / values[kR2EP]; @@ -6464,24 +6456,24 @@ void VarManager::FillPairVn(T1 const& t1, T2 const& t2, float* values) values[kWV2EP] = std::isnan(V2EP) || std::isinf(V2EP) ? 0. : 1.0; if (std::isnan(VarManager::fgValues[VarManager::kU2Q2])) { - values[kU2Q2] = -999.; - values[kR2SP_AB] = -999.; - values[kR2SP_AC] = -999.; - values[kR2SP_BC] = -999.; + values[kU2Q2] = o2::dqconstants::InvalidValueF; + values[kR2SP_AB] = o2::dqconstants::InvalidValueF; + values[kR2SP_AC] = o2::dqconstants::InvalidValueF; + values[kR2SP_BC] = o2::dqconstants::InvalidValueF; } if (std::isnan(VarManager::fgValues[VarManager::kU3Q3])) { - values[kU3Q3] = -999.; - values[kR3SP] = -999.; + values[kU3Q3] = o2::dqconstants::InvalidValueF; + values[kR3SP] = o2::dqconstants::InvalidValueF; } if (std::isnan(VarManager::fgValues[VarManager::kCos2DeltaPhi])) { - values[kCos2DeltaPhi] = -999.; - values[kR2EP_AB] = -999.; - values[kR2EP_AC] = -999.; - values[kR2EP_BC] = -999.; + values[kCos2DeltaPhi] = o2::dqconstants::InvalidValueF; + values[kR2EP_AB] = o2::dqconstants::InvalidValueF; + values[kR2EP_AC] = o2::dqconstants::InvalidValueF; + values[kR2EP_BC] = o2::dqconstants::InvalidValueF; } if (std::isnan(VarManager::fgValues[VarManager::kCos3DeltaPhi])) { - values[kCos3DeltaPhi] = -999.; - values[kR3EP] = -999.; + values[kCos3DeltaPhi] = o2::dqconstants::InvalidValueF; + values[kR3EP] = o2::dqconstants::InvalidValueF; } // global polarization parameters @@ -6494,13 +6486,13 @@ void VarManager::FillPairVn(T1 const& t1, T2 const& t2, float* values) // using positive sign convention for the first track ROOT::Math::XYZVectorF v_CM = (t1.sign() > 0 ? v1_CM : v2_CM); - ROOT::Math::XYZVector zaxisTPC = ROOT::Math::XYZVector(TMath::Cos(Psi2A), TMath::Sin(Psi2A), 0).Unit(); + ROOT::Math::XYZVector zaxisTPC = ROOT::Math::XYZVector(std::cos(Psi2A), std::sin(Psi2A), 0).Unit(); values[kCosThetaStarTPC] = v_CM.Dot(zaxisTPC); - ROOT::Math::XYZVector zaxisFT0A = ROOT::Math::XYZVector(TMath::Cos(Psi2B), TMath::Sin(Psi2B), 0).Unit(); + ROOT::Math::XYZVector zaxisFT0A = ROOT::Math::XYZVector(std::cos(Psi2B), std::sin(Psi2B), 0).Unit(); values[kCosThetaStarFT0A] = v_CM.Dot(zaxisFT0A); - ROOT::Math::XYZVector zaxisFT0C = ROOT::Math::XYZVector(TMath::Cos(Psi2C), TMath::Sin(Psi2C), 0).Unit(); + ROOT::Math::XYZVector zaxisFT0C = ROOT::Math::XYZVector(std::cos(Psi2C), std::sin(Psi2C), 0).Unit(); values[kCosThetaStarFT0C] = v_CM.Dot(zaxisFT0C); values[kAbsCosThetaStarFT0C] = std::abs(values[kCosThetaStarFT0C]); values[kCos2ThetaStarFT0C] = values[kCosThetaStarFT0C] * values[kCosThetaStarFT0C]; @@ -6517,24 +6509,24 @@ void VarManager::FillPairVn(T1 const& t1, T2 const& t2, float* values) // checkTrack(t1); if (values[kSel1] > 0) { - float qx1 = t1.pt() * TMath::Cos(2. * t1.phi()); - float qy1 = t1.pt() * TMath::Sin(2. * t1.phi()); + float qx1 = t1.pt() * std::cos(2. * t1.phi()); + float qy1 = t1.pt() * std::sin(2. * t1.phi()); Q2X0A = Q2X0A - qx1; Q2Y0A = Q2Y0A - qy1; nNorm = nNorm - 1.; } // checkTrack(t2); if (values[kSel2] > 0) { - float qx2 = t2.pt() * TMath::Cos(2. * t2.phi()); - float qy2 = t2.pt() * TMath::Sin(2. * t2.phi()); + float qx2 = t2.pt() * std::cos(2. * t2.phi()); + float qy2 = t2.pt() * std::sin(2. * t2.phi()); Q2X0A = Q2X0A - qx2; Q2Y0A = Q2Y0A - qy2; nNorm = nNorm - 1.; } values[kNnorm] = nNorm; if (nNorm <= 0) { - values[kQ2X0A] = -999.; - values[kQ2Y0A] = -999.; + values[kQ2X0A] = o2::dqconstants::InvalidValueF; + values[kQ2Y0A] = o2::dqconstants::InvalidValueF; return; } @@ -6562,16 +6554,16 @@ void VarManager::FillPairVn(T1 const& t1, T2 const& t2, float* values) values[kDeltaPhi_TPC] = values[kDeltaPhi_TPC] > o2::constants::math::PIHalf ? o2::constants::math::PI - values[kDeltaPhi_TPC] : values[kDeltaPhi_TPC]; values[kDeltaPhi_FT0A] = values[kDeltaPhi_FT0A] > o2::constants::math::PIHalf ? o2::constants::math::PI - values[kDeltaPhi_FT0A] : values[kDeltaPhi_FT0A]; values[kDeltaPhi_FT0C] = values[kDeltaPhi_FT0C] > o2::constants::math::PIHalf ? o2::constants::math::PI - values[kDeltaPhi_FT0C] : values[kDeltaPhi_FT0C]; - values[kCos2DeltaPhi_TPC] = TMath::Cos(2. * (phi - Psi2ATPC)); - values[kCos2DeltaPhi_FT0A] = TMath::Cos(2. * (phi - Psi2B)); - values[kCos2DeltaPhi_FT0C] = TMath::Cos(2. * (phi - Psi2C)); + values[kCos2DeltaPhi_TPC] = std::cos(2. * (phi - Psi2ATPC)); + values[kCos2DeltaPhi_FT0A] = std::cos(2. * (phi - Psi2B)); + values[kCos2DeltaPhi_FT0C] = std::cos(2. * (phi - Psi2C)); float A2RP_TPC = values[kCos2DeltaPhi_TPC] / values[kR2EP]; float A2RP_FT0A = values[kCos2DeltaPhi_FT0A] / values[kR2EP]; float A2RP_FT0C = values[kCos2DeltaPhi_FT0C] / values[kR2EP]; - values[kA2EP_TPC] = std::isnan(A2RP_TPC) || std::isinf(A2RP_TPC) ? -999. : A2RP_TPC; - values[kA2EP_FT0A] = std::isnan(A2RP_FT0A) || std::isinf(A2RP_FT0A) ? -999. : A2RP_FT0A; - values[kA2EP_FT0C] = std::isnan(A2RP_FT0C) || std::isinf(A2RP_FT0C) ? -999. : A2RP_FT0C; + values[kA2EP_TPC] = std::isnan(A2RP_TPC) || std::isinf(A2RP_TPC) ? o2::dqconstants::InvalidValueF : A2RP_TPC; + values[kA2EP_FT0A] = std::isnan(A2RP_FT0A) || std::isinf(A2RP_FT0A) ? o2::dqconstants::InvalidValueF : A2RP_FT0A; + values[kA2EP_FT0C] = std::isnan(A2RP_FT0C) || std::isinf(A2RP_FT0C) ? o2::dqconstants::InvalidValueF : A2RP_FT0C; } // kV4, kC4POI, kC4REF etc. @@ -6579,7 +6571,7 @@ void VarManager::FillPairVn(T1 const& t1, T2 const& t2, float* values) std::complex Q21(values[kQ2X0A] * values[kS11A], values[kQ2Y0A] * values[kS11A]); std::complex Q42(values[kQ42XA], values[kQ42YA]); std::complex Q23(values[kQ23XA], values[kQ23YA]); - std::complex P2(TMath::Cos(2 * v12.Phi()), TMath::Sin(2 * v12.Phi())); + std::complex P2(std::cos(2 * v12.Phi()), std::sin(2 * v12.Phi())); values[kM01POI] = values[kMultDimuons] * values[kS11A]; values[kM0111POI] = values[kMultDimuons] * (values[kS31A] - 3. * values[kS11A] * values[kS12A] + 2. * values[kS13A]); values[kCORR2POI] = (P2 * conj(Q21)).real() / values[kM01POI]; @@ -6601,8 +6593,8 @@ void VarManager::FillPairVn(T1 const& t1, T2 const& t2, float* values) values[kM11M0111overMp] = values[kMultDimuons] > 0 && !(std::isnan(values[kM11REF]) || std::isinf(values[kM11REF]) || std::isnan(values[kM0111POI]) || std::isinf(values[kM0111POI]) || std::isnan(values[kCORR2REF]) || std::isinf(values[kCORR2REF]) || std::isnan(values[kCORR4POI]) || std::isinf(values[kCORR4POI])) ? (values[kM11REF] * values[kM0111POI]) / values[kMultDimuons] : 0; values[kM11M01overMp] = values[kMultDimuons] > 0 && !(std::isnan(values[kM11REF]) || std::isinf(values[kM11REF]) || std::isnan(values[kM01POI]) || std::isinf(values[kM01POI]) || std::isnan(values[kCORR2REF]) || std::isinf(values[kCORR2REF]) || std::isnan(values[kCORR2POI]) || std::isinf(values[kCORR2POI])) ? (values[kM11REF] * values[kM01POI]) / values[kMultDimuons] : 0; - std::complex P2plus(TMath::Cos(2 * v1.Phi()), TMath::Sin(2 * v1.Phi())); - std::complex P2minus(TMath::Cos(2 * v2.Phi()), TMath::Sin(2 * v2.Phi())); + std::complex P2plus(std::cos(2 * v1.Phi()), std::sin(2 * v1.Phi())); + std::complex P2minus(std::cos(2 * v2.Phi()), std::sin(2 * v2.Phi())); values[kM11REFoverMpplus] = values[kMultAntiMuons] > 0 && !(std::isnan(values[kM11REF]) || std::isinf(values[kM11REF]) || std::isnan(values[kCORR2REF]) || std::isinf(values[kCORR2REF]) || std::isnan(values[kM1111REF]) || std::isinf(values[kM1111REF]) || std::isnan(values[kCORR4REF]) || std::isinf(values[kCORR4REF])) ? values[kM11REF] / values[kMultAntiMuons] : 0; values[kM1111REFoverMpplus] = values[kMultAntiMuons] > 0 && !(std::isnan(values[kM11REF]) || std::isinf(values[kM11REF]) || std::isnan(values[kCORR2REF]) || std::isinf(values[kCORR2REF]) || std::isnan(values[kM1111REF]) || std::isinf(values[kM1111REF]) || std::isnan(values[kCORR4REF]) || std::isinf(values[kCORR4REF])) ? values[kM1111REF] / values[kMultAntiMuons] : 0; values[kM11REFoverMpminus] = values[kMultMuons] > 0 && !(std::isnan(values[kM11REF]) || std::isinf(values[kM11REF]) || std::isnan(values[kCORR2REF]) || std::isinf(values[kCORR2REF]) || std::isnan(values[kM1111REF]) || std::isinf(values[kM1111REF]) || std::isnan(values[kCORR4REF]) || std::isinf(values[kCORR4REF])) ? values[kM11REF] / values[kMultMuons] : 0; @@ -6650,10 +6642,10 @@ void VarManager::FillZDC(T const& zdc, float* values) values = static_cast(fgValues); } - values[kEnergyCommonZNA] = (zdc.energyCommonZNA() > 0) ? zdc.energyCommonZNA() : -1.; - values[kEnergyCommonZNC] = (zdc.energyCommonZNC() > 0) ? zdc.energyCommonZNC() : -1.; - values[kEnergyCommonZPA] = (zdc.energyCommonZPA() > 0) ? zdc.energyCommonZPA() : -1.; - values[kEnergyCommonZPC] = (zdc.energyCommonZPC() > 0) ? zdc.energyCommonZPC() : -1.; + values[kEnergyCommonZNA] = (zdc.energyCommonZNA() > 0) ? zdc.energyCommonZNA() : o2::dqconstants::InvalidValueF; + values[kEnergyCommonZNC] = (zdc.energyCommonZNC() > 0) ? zdc.energyCommonZNC() : o2::dqconstants::InvalidValueF; + values[kEnergyCommonZPA] = (zdc.energyCommonZPA() > 0) ? zdc.energyCommonZPA() : o2::dqconstants::InvalidValueF; + values[kEnergyCommonZPC] = (zdc.energyCommonZPC() > 0) ? zdc.energyCommonZPC() : o2::dqconstants::InvalidValueF; values[kTimeZNA] = zdc.timeZNA(); values[kTimeZNC] = zdc.timeZNC(); values[kTimeZPA] = zdc.timeZPA(); @@ -6744,17 +6736,17 @@ void VarManager::FillEnergyCorrelatorTriple(C const& collision, T1 const& lepton float deltaphi = RecoDecay::constrainAngle(v1.phi() - v2.phi(), -o2::constants::math::PI); values[kDeltaPhi] = RecoDecay::constrainAngle(v1.phi() - v2.phi(), -o2::constants::math::PIHalf); values[kDeltaEta] = v1.eta() - v2.eta(); - values[kCosChi_randomPhi_trans] = -999.9f; - values[kCosChi_randomPhi_toward] = -999.9f; - values[kCosChi_randomPhi_away] = -999.9f; + values[kCosChi_randomPhi_trans] = o2::dqconstants::InvalidValueF; + values[kCosChi_randomPhi_toward] = o2::dqconstants::InvalidValueF; + values[kCosChi_randomPhi_away] = o2::dqconstants::InvalidValueF; - values[kdeltaphi_randomPhi_trans] = -999.9f; - values[kdeltaphi_randomPhi_toward] = -999.9f; - values[kdeltaphi_randomPhi_away] = -999.9f; + values[kdeltaphi_randomPhi_trans] = o2::dqconstants::InvalidValueF; + values[kdeltaphi_randomPhi_toward] = o2::dqconstants::InvalidValueF; + values[kdeltaphi_randomPhi_away] = o2::dqconstants::InvalidValueF; - float randomPhi_trans = -o2::constants::math::PIHalf; - float randomPhi_toward = -o2::constants::math::PIHalf; - float randomPhi_away = -o2::constants::math::PIHalf; + float randomPhi_trans = o2::constants::math::PIHalf; + float randomPhi_toward = o2::constants::math::PIHalf; + float randomPhi_away = o2::constants::math::PIHalf; if ((deltaphi > -Transhigh * o2::constants::math::PI && deltaphi < -Translow * o2::constants::math::PI) || (deltaphi > Translow * o2::constants::math::PI && deltaphi < Transhigh * o2::constants::math::PI)) { randomPhi_trans = gRandom->Uniform(-o2::constants::math::PIHalf, 3. * o2::constants::math::PIHalf); @@ -6783,8 +6775,6 @@ template -Transhigh * o2::constants::math::PI && deltaphi_rec < -Translow * o2::constants::math::PI) || (deltaphi_rec > Translow * o2::constants::math::PI && deltaphi_rec < Transhigh * o2::constants::math::PI)) { @@ -6980,10 +6970,10 @@ void VarManager::FillDileptonTrackTrack(T1 const& dilepton, T2 const& hadron1, T template void VarManager::FillDileptonTrackTrackVertexing(C const& collision, T1 const& lepton1, T1 const& lepton2, T1 const& track1, T1 const& track2, float* values) { - constexpr bool eventHasVtxCov = ((collFillMap & Collision) > 0 || (collFillMap & ReducedEventVtxCov) > 0); - constexpr bool trackHasCov = ((fillMap & TrackCov) > 0 || (fillMap & ReducedTrackBarrelCov) > 0); + constexpr bool EventHasVtxCov = ((collFillMap & Collision) > 0 || (collFillMap & ReducedEventVtxCov) > 0); + constexpr bool TrackHasCov = ((fillMap & TrackCov) > 0 || (fillMap & ReducedTrackBarrelCov) > 0); - if (!eventHasVtxCov || !trackHasCov) { + if (!EventHasVtxCov || !TrackHasCov) { return; } @@ -7017,23 +7007,23 @@ void VarManager::FillDileptonTrackTrackVertexing(C const& collision, T1 const& l o2::track::TrackParCov pars2 = getTrackParCov(lepton2); o2::track::TrackParCov pars3 = getTrackParCov(track1); o2::track::TrackParCov pars4 = getTrackParCov(track2); - // std::array lepton1pars = {lepton1.y(), lepton1.z(), lepton1.snp(), lepton1.tgl(), lepton1.signed1Pt()}; - // std::array lepton1covs = {lepton1.cYY(), lepton1.cZY(), lepton1.cZZ(), lepton1.cSnpY(), lepton1.cSnpZ(), + // std::array lepton1pars = {lepton1.y(), lepton1.z(), lepton1.snp(), lepton1.tgl(), lepton1.signed1Pt()}; + // std::array lepton1covs = {lepton1.cYY(), lepton1.cZY(), lepton1.cZZ(), lepton1.cSnpY(), lepton1.cSnpZ(), // lepton1.cSnpSnp(), lepton1.cTglY(), lepton1.cTglZ(), lepton1.cTglSnp(), lepton1.cTglTgl(), // lepton1.c1PtY(), lepton1.c1PtZ(), lepton1.c1PtSnp(), lepton1.c1PtTgl(), lepton1.c1Pt21Pt2()}; // o2::track::TrackParCov pars1{lepton1.x(), lepton1.alpha(), lepton1pars, lepton1covs}; - // std::array lepton2pars = {lepton2.y(), lepton2.z(), lepton2.snp(), lepton2.tgl(), lepton2.signed1Pt()}; - // std::array lepton2covs = {lepton2.cYY(), lepton2.cZY(), lepton2.cZZ(), lepton2.cSnpY(), lepton2.cSnpZ(), + // std::array lepton2pars = {lepton2.y(), lepton2.z(), lepton2.snp(), lepton2.tgl(), lepton2.signed1Pt()}; + // std::array lepton2covs = {lepton2.cYY(), lepton2.cZY(), lepton2.cZZ(), lepton2.cSnpY(), lepton2.cSnpZ(), // lepton2.cSnpSnp(), lepton2.cTglY(), lepton2.cTglZ(), lepton2.cTglSnp(), lepton2.cTglTgl(), // lepton2.c1PtY(), lepton2.c1PtZ(), lepton2.c1PtSnp(), lepton2.c1PtTgl(), lepton2.c1Pt21Pt2()}; // o2::track::TrackParCov pars2{lepton2.x(), lepton2.alpha(), lepton2pars, lepton2covs}; - // std::array track1pars = {track1.y(), track1.z(), track1.snp(), track1.tgl(), track1.signed1Pt()}; - // std::array track1covs = {track1.cYY(), track1.cZY(), track1.cZZ(), track1.cSnpY(), track1.cSnpZ(), + // std::array track1pars = {track1.y(), track1.z(), track1.snp(), track1.tgl(), track1.signed1Pt()}; + // std::array track1covs = {track1.cYY(), track1.cZY(), track1.cZZ(), track1.cSnpY(), track1.cSnpZ(), // track1.cSnpSnp(), track1.cTglY(), track1.cTglZ(), track1.cTglSnp(), track1.cTglTgl(), // track1.c1PtY(), track1.c1PtZ(), track1.c1PtSnp(), track1.c1PtTgl(), track1.c1Pt21Pt2()}; // o2::track::TrackParCov pars3{track1.x(), track1.alpha(), track1pars, track1covs}; - // std::array track2pars = {track2.y(), track2.z(), track2.snp(), track2.tgl(), track2.signed1Pt()}; - // std::array track2covs = {track2.cYY(), track2.cZY(), track2.cZZ(), track2.cSnpY(), track2.cSnpZ(), + // std::array track2pars = {track2.y(), track2.z(), track2.snp(), track2.tgl(), track2.signed1Pt()}; + // std::array track2covs = {track2.cYY(), track2.cZY(), track2.cZZ(), track2.cSnpY(), track2.cSnpZ(), // track2.cSnpSnp(), track2.cTglY(), track2.cTglZ(), track2.cTglSnp(), track2.cTglTgl(), // track2.c1PtY(), track2.c1PtZ(), track2.c1PtSnp(), track2.c1PtTgl(), track2.c1Pt21Pt2()}; // o2::track::TrackParCov pars4{track2.x(), track2.alpha(), track2pars, track2covs}; @@ -7047,34 +7037,34 @@ void VarManager::FillDileptonTrackTrackVertexing(C const& collision, T1 const& l values[kVertexingQuadProcCode] = procCodeDileptonTrackTrack; // fill values - if (procCodeDilepton == 0 || procCodeDileptonTrackTrack == 0) { + if (o2::dqconstants::IsProcCodeInvalid(procCodeDilepton) || o2::dqconstants::IsProcCodeInvalid(procCodeDileptonTrackTrack)) { // TODO: set the other variables to appropriate values and return - values[kVertexingLxy] = -999.; - values[kVertexingLxyz] = -999.; - values[kVertexingLz] = -999.; - values[kVertexingLxyErr] = -999.; - values[kVertexingLxyzErr] = -999.; - values[kVertexingLzErr] = -999.; - values[kVertexingTauxy] = -999.; - values[kVertexingTauxyErr] = -999.; - values[kVertexingTauz] = -999.; - values[kVertexingTauzErr] = -999.; - values[kVertexingLzProjected] = -999.; - values[kVertexingLxyProjected] = -999.; - values[kVertexingLxyzProjected] = -999.; - values[kVertexingTauzProjected] = -999.; - values[kVertexingTauxyProjected] = -999.; - values[kVertexingTauxyzProjected] = -999.; + values[kVertexingLxy] = o2::dqconstants::InvalidValueF; + values[kVertexingLxyz] = o2::dqconstants::InvalidValueF; + values[kVertexingLz] = o2::dqconstants::InvalidValueF; + values[kVertexingLxyErr] = o2::dqconstants::InvalidValueF; + values[kVertexingLxyzErr] = o2::dqconstants::InvalidValueF; + values[kVertexingLzErr] = o2::dqconstants::InvalidValueF; + values[kVertexingTauxy] = o2::dqconstants::InvalidValueF; + values[kVertexingTauxyErr] = o2::dqconstants::InvalidValueF; + values[kVertexingTauz] = o2::dqconstants::InvalidValueF; + values[kVertexingTauzErr] = o2::dqconstants::InvalidValueF; + values[kVertexingLzProjected] = o2::dqconstants::InvalidValueF; + values[kVertexingLxyProjected] = o2::dqconstants::InvalidValueF; + values[kVertexingLxyzProjected] = o2::dqconstants::InvalidValueF; + values[kVertexingTauzProjected] = o2::dqconstants::InvalidValueF; + values[kVertexingTauxyProjected] = o2::dqconstants::InvalidValueF; + values[kVertexingTauxyzProjected] = o2::dqconstants::InvalidValueF; return; } Vec3D secondaryVertex; - std::array covMatrixPCA{}; + std::array covMatrixPCA{}; secondaryVertex = fgFitterFourProngBarrel.getPCACandidate(); covMatrixPCA = fgFitterFourProngBarrel.calcPCACovMatrixFlat(); o2::math_utils::Point3D vtxXYZ(collision.posX(), collision.posY(), collision.posZ()); - std::array vtxCov{collision.covXX(), collision.covXY(), collision.covYY(), collision.covXZ(), collision.covYZ(), collision.covZZ()}; + std::array vtxCov{collision.covXX(), collision.covXY(), collision.covYY(), collision.covXZ(), collision.covYZ(), collision.covZZ()}; o2::dataformats::VertexBase primaryVertex = {vtxXYZ, vtxCov}; auto covMatrixPV = primaryVertex.getCov(); @@ -7096,10 +7086,10 @@ void VarManager::FillDileptonTrackTrackVertexing(C const& collision, T1 const& l values[kVertexingLxyErr] = std::sqrt(getRotatedCovMatrixXX(covMatrixPV, phi, 0.) + getRotatedCovMatrixXX(covMatrixPCA, phi, 0.)); values[kVertexingLzErr] = std::sqrt(getRotatedCovMatrixXX(covMatrixPV, 0, theta) + getRotatedCovMatrixXX(covMatrixPCA, 0, theta)); - values[kVertexingTauz] = (collision.posZ() - secondaryVertex[2]) * mMother / (TMath::Abs(v1234.Pz()) * o2::constants::physics::LightSpeedCm2NS); + values[kVertexingTauz] = (collision.posZ() - secondaryVertex[2]) * mMother / (std::abs(v1234.Pz()) * o2::constants::physics::LightSpeedCm2NS); values[kVertexingTauxy] = values[kVertexingLxy] * mMother / (v1234.Pt() * o2::constants::physics::LightSpeedCm2NS); - values[kVertexingTauzErr] = values[kVertexingLzErr] * mMother / (TMath::Abs(v1234.Pz()) * o2::constants::physics::LightSpeedCm2NS); + values[kVertexingTauzErr] = values[kVertexingLzErr] * mMother / (std::abs(v1234.Pz()) * o2::constants::physics::LightSpeedCm2NS); values[kVertexingTauxyErr] = values[kVertexingLxyErr] * mMother / (v1234.Pt() * o2::constants::physics::LightSpeedCm2NS); values[kCosPointingAngle] = ((secondaryVertex[0] - collision.posX()) * v1234.Px() + @@ -7108,13 +7098,13 @@ void VarManager::FillDileptonTrackTrackVertexing(C const& collision, T1 const& l (v1234.P() * values[VarManager::kVertexingLxyz]); // // run 2 definitions: Decay length projected onto the momentum vector of the candidate values[kVertexingLzProjected] = (secondaryVertex[2] - collision.posZ()) * v1234.Pz(); - values[kVertexingLzProjected] = values[kVertexingLzProjected] / TMath::Sqrt(v1234.Pz() * v1234.Pz()); + values[kVertexingLzProjected] = values[kVertexingLzProjected] / std::sqrt(v1234.Pz() * v1234.Pz()); values[kVertexingLxyProjected] = ((secondaryVertex[0] - collision.posX()) * v1234.Px()) + ((secondaryVertex[1] - collision.posY()) * v1234.Py()); - values[kVertexingLxyProjected] = values[kVertexingLxyProjected] / TMath::Sqrt((v1234.Px() * v1234.Px()) + (v1234.Py() * v1234.Py())); + values[kVertexingLxyProjected] = values[kVertexingLxyProjected] / std::sqrt((v1234.Px() * v1234.Px()) + (v1234.Py() * v1234.Py())); values[kVertexingLxyzProjected] = ((secondaryVertex[0] - collision.posX()) * v1234.Px()) + ((secondaryVertex[1] - collision.posY()) * v1234.Py()) + ((secondaryVertex[2] - collision.posZ()) * v1234.Pz()); - values[kVertexingLxyzProjected] = values[kVertexingLxyzProjected] / TMath::Sqrt((v1234.Px() * v1234.Px()) + (v1234.Py() * v1234.Py()) + (v1234.Pz() * v1234.Pz())); + values[kVertexingLxyzProjected] = values[kVertexingLxyzProjected] / std::sqrt((v1234.Px() * v1234.Px()) + (v1234.Py() * v1234.Py()) + (v1234.Pz() * v1234.Pz())); - values[kVertexingTauzProjected] = values[kVertexingLzProjected] * mMother / TMath::Abs(v1234.Pz()); + values[kVertexingTauzProjected] = values[kVertexingLzProjected] * mMother / std::abs(v1234.Pz()); values[kVertexingTauxyProjected] = values[kVertexingLxyProjected] * mMother / (v1234.Pt()); values[kVertexingTauxyzProjected] = values[kVertexingLxyzProjected] * mMother / (v1234.P()); } else { @@ -7127,15 +7117,15 @@ void VarManager::FillDileptonTrackTrackVertexing(C const& collision, T1 const& l KFParticle KFGeoFourProng; if constexpr (candidateType == kXtoJpsiPiPi) { KFPTrack kfpTrack0 = createKFPTrackFromTrack(lepton1); - lepton1KF = KFParticle(kfpTrack0, -11 * lepton1.sign()); + lepton1KF = KFParticle(kfpTrack0, PDG_t::kPositron * lepton1.sign()); KFPTrack kfpTrack1 = createKFPTrackFromTrack(lepton2); - lepton2KF = KFParticle(kfpTrack1, -11 * lepton2.sign()); + lepton2KF = KFParticle(kfpTrack1, PDG_t::kPositron * lepton2.sign()); KFPTrack kfpTrack2 = createKFPTrackFromTrack(track1); - trk1KF = KFParticle(kfpTrack2, 211 * track1.sign()); + trk1KF = KFParticle(kfpTrack2, PDG_t::kPiPlus * track1.sign()); KFPTrack kfpTrack3 = createKFPTrackFromTrack(track2); - trk2KF = KFParticle(kfpTrack3, 211 * track2.sign()); + trk2KF = KFParticle(kfpTrack3, PDG_t::kPiPlus * track2.sign()); - KFGeoTwoLeptons.SetConstructMethod(2); + KFGeoTwoLeptons.SetConstructMethod(o2::dqconstants::defaults::KFParticleMassConstrainedConstruction); KFGeoTwoLeptons.AddDaughter(lepton1KF); KFGeoTwoLeptons.AddDaughter(lepton2KF); @@ -7144,7 +7134,7 @@ void VarManager::FillDileptonTrackTrackVertexing(C const& collision, T1 const& l values[VarManager::kPairPt] = KFGeoTwoLeptons.GetPt(); } - KFGeoTwoTracks.SetConstructMethod(2); + KFGeoTwoTracks.SetConstructMethod(o2::dqconstants::defaults::KFParticleMassConstrainedConstruction); KFGeoTwoTracks.AddDaughter(trk1KF); KFGeoTwoTracks.AddDaughter(trk2KF); @@ -7153,22 +7143,22 @@ void VarManager::FillDileptonTrackTrackVertexing(C const& collision, T1 const& l values[VarManager::kDitrackPt] = KFGeoTwoTracks.GetPt(); } - KFGeoFourProng.SetConstructMethod(2); + KFGeoFourProng.SetConstructMethod(o2::dqconstants::defaults::KFParticleMassConstrainedConstruction); KFGeoFourProng.AddDaughter(KFGeoTwoLeptons); KFGeoFourProng.AddDaughter(KFGeoTwoTracks); } if constexpr (candidateType == kPsi2StoJpsiPiPi) { KFPTrack kfpTrack0 = createKFPTrackFromTrack(lepton1); - lepton1KF = KFParticle(kfpTrack0, -11 * lepton1.sign()); + lepton1KF = KFParticle(kfpTrack0, PDG_t::kPositron * lepton1.sign()); KFPTrack kfpTrack1 = createKFPTrackFromTrack(lepton2); - lepton2KF = KFParticle(kfpTrack1, -11 * lepton2.sign()); + lepton2KF = KFParticle(kfpTrack1, PDG_t::kPositron * lepton2.sign()); KFPTrack kfpTrack2 = createKFPTrackFromTrack(track1); - trk1KF = KFParticle(kfpTrack2, 211 * track1.sign()); + trk1KF = KFParticle(kfpTrack2, PDG_t::kPiPlus * track1.sign()); KFPTrack kfpTrack3 = createKFPTrackFromTrack(track2); - trk2KF = KFParticle(kfpTrack3, 211 * track2.sign()); + trk2KF = KFParticle(kfpTrack3, PDG_t::kPiPlus * track2.sign()); - KFGeoTwoLeptons.SetConstructMethod(2); + KFGeoTwoLeptons.SetConstructMethod(o2::dqconstants::defaults::KFParticleMassConstrainedConstruction); KFGeoTwoLeptons.AddDaughter(lepton1KF); KFGeoTwoLeptons.AddDaughter(lepton2KF); @@ -7177,7 +7167,7 @@ void VarManager::FillDileptonTrackTrackVertexing(C const& collision, T1 const& l values[VarManager::kPairPt] = KFGeoTwoLeptons.GetPt(); } - KFGeoFourProng.SetConstructMethod(2); + KFGeoFourProng.SetConstructMethod(o2::dqconstants::defaults::KFParticleMassConstrainedConstruction); KFGeoFourProng.AddDaughter(KFGeoTwoLeptons); KFGeoFourProng.AddDaughter(trk1KF); KFGeoFourProng.AddDaughter(trk2KF); @@ -7188,7 +7178,7 @@ void VarManager::FillDileptonTrackTrackVertexing(C const& collision, T1 const& l if (!KFGeoFourProng.GetMass(mass, massErr)) { values[kKFMass] = mass; } else { - values[kKFMass] = -999.; + values[kKFMass] = o2::dqconstants::InvalidValueF; } } @@ -7207,40 +7197,40 @@ void VarManager::FillDileptonTrackTrackVertexing(C const& collision, T1 const& l values[kVertexingLzErr] = (KFPV.GetCovariance(5) + KFGeoFourProng.GetCovariance(5)) * dzQuadlet2PV * dzQuadlet2PV; values[kVertexingLxyzErr] = (KFPV.GetCovariance(0) + KFGeoFourProng.GetCovariance(0)) * dxQuadlet2PV * dxQuadlet2PV + (KFPV.GetCovariance(2) + KFGeoFourProng.GetCovariance(2)) * dyQuadlet2PV * dyQuadlet2PV + (KFPV.GetCovariance(5) + KFGeoFourProng.GetCovariance(5)) * dzQuadlet2PV * dzQuadlet2PV + 2 * ((KFPV.GetCovariance(1) + KFGeoFourProng.GetCovariance(1)) * dxQuadlet2PV * dyQuadlet2PV + (KFPV.GetCovariance(3) + KFGeoFourProng.GetCovariance(3)) * dxQuadlet2PV * dzQuadlet2PV + (KFPV.GetCovariance(4) + KFGeoFourProng.GetCovariance(4)) * dyQuadlet2PV * dzQuadlet2PV); - if (std::fabs(values[kVertexingLxy]) < 1.e-8f) { - values[kVertexingLxy] = 1.e-8f; + if (std::fabs(values[kVertexingLxy]) < o2::dqconstants::defaults::VertexingLxyzTolerance) { + values[kVertexingLxy] = o2::dqconstants::defaults::VertexingLxyzTolerance; } - values[kVertexingLxyErr] = values[kVertexingLxyErr] < 0. ? 1.e8f : std::sqrt(values[kVertexingLxyErr]) / values[kVertexingLxy]; - if (std::fabs(values[kVertexingLz]) < 1.e-8f) { - values[kVertexingLz] = 1.e-8f; + values[kVertexingLxyErr] = values[kVertexingLxyErr] < 0. ? o2::dqconstants::defaults::InvalidVertexingError : std::sqrt(values[kVertexingLxyErr]) / values[kVertexingLxy]; + if (std::fabs(values[kVertexingLz]) < o2::dqconstants::defaults::VertexingLxyzTolerance) { + values[kVertexingLz] = o2::dqconstants::defaults::VertexingLxyzTolerance; } - values[kVertexingLzErr] = values[kVertexingLzErr] < 0. ? 1.e8f : std::sqrt(values[kVertexingLzErr]) / values[kVertexingLz]; - if (std::fabs(values[kVertexingLxyz]) < 1.e-8f) { - values[kVertexingLxyz] = 1.e-8f; + values[kVertexingLzErr] = values[kVertexingLzErr] < 0. ? o2::dqconstants::defaults::InvalidVertexingError : std::sqrt(values[kVertexingLzErr]) / values[kVertexingLz]; + if (std::fabs(values[kVertexingLxyz]) < o2::dqconstants::defaults::VertexingLxyzTolerance) { + values[kVertexingLxyz] = o2::dqconstants::defaults::VertexingLxyzTolerance; } - values[kVertexingLxyzErr] = values[kVertexingLxyzErr] < 0. ? 1.e8f : std::sqrt(values[kVertexingLxyzErr]) / values[kVertexingLxyz]; + values[kVertexingLxyzErr] = values[kVertexingLxyzErr] < 0. ? o2::dqconstants::defaults::InvalidVertexingError : std::sqrt(values[kVertexingLxyzErr]) / values[kVertexingLxyz]; values[kVertexingTauxy] = KFGeoFourProng.GetPseudoProperDecayTime(KFPV, KFGeoFourProng.GetMass()) / (o2::constants::physics::LightSpeedCm2NS); - values[kVertexingTauz] = -1 * dzQuadlet2PV * KFGeoFourProng.GetMass() / (TMath::Abs(KFGeoFourProng.GetPz()) * o2::constants::physics::LightSpeedCm2NS); - values[kVertexingPz] = TMath::Abs(KFGeoFourProng.GetPz()); + values[kVertexingTauz] = -1 * dzQuadlet2PV * KFGeoFourProng.GetMass() / (std::abs(KFGeoFourProng.GetPz()) * o2::constants::physics::LightSpeedCm2NS); + values[kVertexingPz] = std::abs(KFGeoFourProng.GetPz()); values[kVertexingSV] = KFGeoFourProng.GetZ(); values[kVertexingTauxyErr] = values[kVertexingLxyErr] * KFGeoFourProng.GetMass() / (KFGeoFourProng.GetPt() * o2::constants::physics::LightSpeedCm2NS); - values[kVertexingTauzErr] = values[kVertexingLzErr] * KFGeoFourProng.GetMass() / (TMath::Abs(KFGeoFourProng.GetPz()) * o2::constants::physics::LightSpeedCm2NS); + values[kVertexingTauzErr] = values[kVertexingLzErr] * KFGeoFourProng.GetMass() / (std::abs(KFGeoFourProng.GetPz()) * o2::constants::physics::LightSpeedCm2NS); values[kVertexingChi2PCA] = KFGeoFourProng.GetChi2(); values[kCosPointingAngle] = (std::sqrt(dxQuadlet2PV * dxQuadlet2PV) * v1234.Px() + std::sqrt(dyQuadlet2PV * dyQuadlet2PV) * v1234.Py() + std::sqrt(dzQuadlet2PV * dzQuadlet2PV) * v1234.Pz()) / (v1234.P() * values[VarManager::kVertexingLxyz]); // // run 2 definitions: Decay length projected onto the momentum vector of the candidate - values[kVertexingLzProjected] = (dzQuadlet2PV * KFGeoFourProng.GetPz()) / TMath::Sqrt(KFGeoFourProng.GetPz() * KFGeoFourProng.GetPz()); + values[kVertexingLzProjected] = (dzQuadlet2PV * KFGeoFourProng.GetPz()) / std::sqrt(KFGeoFourProng.GetPz() * KFGeoFourProng.GetPz()); values[kVertexingLxyProjected] = (dxQuadlet2PV * KFGeoFourProng.GetPx()) + (dyQuadlet2PV * KFGeoFourProng.GetPy()); - values[kVertexingLxyProjected] = values[kVertexingLxyProjected] / TMath::Sqrt((KFGeoFourProng.GetPx() * KFGeoFourProng.GetPx()) + (KFGeoFourProng.GetPy() * KFGeoFourProng.GetPy())); + values[kVertexingLxyProjected] = values[kVertexingLxyProjected] / std::sqrt((KFGeoFourProng.GetPx() * KFGeoFourProng.GetPx()) + (KFGeoFourProng.GetPy() * KFGeoFourProng.GetPy())); values[kVertexingLxyzProjected] = (dxQuadlet2PV * KFGeoFourProng.GetPx()) + (dyQuadlet2PV * KFGeoFourProng.GetPy()) + (dzQuadlet2PV * KFGeoFourProng.GetPz()); - values[kVertexingLxyzProjected] = values[kVertexingLxyzProjected] / TMath::Sqrt((KFGeoFourProng.GetPx() * KFGeoFourProng.GetPx()) + (KFGeoFourProng.GetPy() * KFGeoFourProng.GetPy()) + (KFGeoFourProng.GetPz() * KFGeoFourProng.GetPz())); + values[kVertexingLxyzProjected] = values[kVertexingLxyzProjected] / std::sqrt((KFGeoFourProng.GetPx() * KFGeoFourProng.GetPx()) + (KFGeoFourProng.GetPy() * KFGeoFourProng.GetPy()) + (KFGeoFourProng.GetPz() * KFGeoFourProng.GetPz())); values[kVertexingTauxyProjected] = values[kVertexingLxyProjected] * KFGeoFourProng.GetMass() / (KFGeoFourProng.GetPt()); values[kVertexingTauxyProjectedNs] = values[kVertexingTauxyProjected] / o2::constants::physics::LightSpeedCm2NS; - values[kVertexingTauzProjected] = values[kVertexingLzProjected] * KFGeoFourProng.GetMass() / TMath::Abs(KFGeoFourProng.GetPz()); + values[kVertexingTauzProjected] = values[kVertexingLzProjected] * KFGeoFourProng.GetMass() / std::abs(KFGeoFourProng.GetPz()); values[kKFChi2OverNDFGeo] = KFGeoFourProng.GetChi2() / KFGeoFourProng.GetNDF(); } } @@ -7310,7 +7300,7 @@ float VarManager::calculatePhiV(T1 const& t1, T2 const& t2) ROOT::Math::PtEtaPhiMVector v2(t2.pt(), t2.eta(), t2.phi(), m2); ROOT::Math::PtEtaPhiMVector v12 = v1 + v2; - float pairPhiV = -999; + float pairPhiV; float bz = fgMagField; bool swapTracks = false; @@ -7371,27 +7361,27 @@ float VarManager::calculatePhiV(T1 const& t1, T2 const& t2) } // unit vector of pep X pem - float vx = vpx / TMath::Sqrt(vpx * vpx + vpy * vpy + vpz * vpz); - float vy = vpy / TMath::Sqrt(vpx * vpx + vpy * vpy + vpz * vpz); - float vz = vpz / TMath::Sqrt(vpx * vpx + vpy * vpy + vpz * vpz); + float vx = vpx / std::sqrt(vpx * vpx + vpy * vpy + vpz * vpz); + float vy = vpy / std::sqrt(vpx * vpx + vpy * vpy + vpz * vpz); + float vz = vpz / std::sqrt(vpx * vpx + vpy * vpy + vpz * vpz); float px = v12.Px(); float py = v12.Py(); float pz = v12.Pz(); // unit vector of (pep+pem) - float ux = px / TMath::Sqrt(px * px + py * py + pz * pz); - float uy = py / TMath::Sqrt(px * px + py * py + pz * pz); - float uz = pz / TMath::Sqrt(px * px + py * py + pz * pz); - float ax = uy / TMath::Sqrt(ux * ux + uy * uy); - float ay = -ux / TMath::Sqrt(ux * ux + uy * uy); + float ux = px / std::sqrt(px * px + py * py + pz * pz); + float uy = py / std::sqrt(px * px + py * py + pz * pz); + float uz = pz / std::sqrt(px * px + py * py + pz * pz); + float ax = uy / std::sqrt(ux * ux + uy * uy); + float ay = -ux / std::sqrt(ux * ux + uy * uy); // The third axis defined by vector product (ux,uy,uz)X(vx,vy,vz) float wx = uy * vz - uz * vy; float wy = uz * vx - ux * vz; // by construction, (wx,wy,wz) must be a unit vector. Measure angle between (wx,wy,wz) and (ax,ay,0). // The angle between them should be small if the pair is conversion. This function then returns values close to pi! - pairPhiV = TMath::ACos(wx * ax + wy * ay); // phiv in [0,pi] //cosPhiV = wx * ax + wy * ay; + pairPhiV = std::acos(wx * ax + wy * ay); // phiv in [0,pi] //cosPhiV = wx * ax + wy * ay; return pairPhiV; } @@ -7404,9 +7394,9 @@ void VarManager::FillBdtScore(T1 const& bdtScore, float* values) values = static_cast(fgValues); } - if (bdtScore.size() == 1) { + if (bdtScore.size() == o2::dqconstants::defaults::BdtSingleClassOutput) { values[kBdtBackground] = bdtScore[0]; - } else if (bdtScore.size() == 3) { + } else if (bdtScore.size() == o2::dqconstants::defaults::BdtMultiClassOutput) { values[kBdtBackground] = bdtScore[0]; values[kBdtPrompt] = bdtScore[1]; values[kBdtNonprompt] = bdtScore[2]; @@ -7418,7 +7408,7 @@ void VarManager::FillBdtScore(T1 const& bdtScore, float* values) template float VarManager::LorentzTransformJpsihadroncosChi(const TString& Option, T1 const& v1, T2 const& v2) { - float value = -999.0f; + float value = o2::dqconstants::InvalidValueF; auto beta_v1 = v1.BoostToCM(); ROOT::Math::Boost boostv1{beta_v1}; auto v2_boost = boostv1(v2); @@ -7460,8 +7450,8 @@ void VarManager::FillFIT(T1 const& bc, T2 const& bcs, T3 const& ft0s, T4 const& values[kFT0OrC] = TESTBIT(fitInfo.triggerMaskFT0, o2::fit::Triggers::bitC); const auto ft0Index = bc.ft0Id(); if (ft0Index < 0 || ft0Index >= ft0s.size()) { - values[kNFiredChannelsFT0A] = -1; - values[kNFiredChannelsFT0C] = -1; + values[kNFiredChannelsFT0A] = o2::dqconstants::InvalidIndex; + values[kNFiredChannelsFT0C] = o2::dqconstants::InvalidIndex; } else { const auto ft0 = ft0s.iteratorAt(ft0Index); values[kNFiredChannelsFT0A] = ft0.channelA().size(); @@ -7480,7 +7470,7 @@ void VarManager::FillFIT(T1 const& bc, T2 const& bcs, T3 const& ft0s, T4 const& values[kTriggerMaskFV0A] = static_cast(fitInfo.triggerMaskFV0A); const auto fv0aIndex = bc.fv0aId(); if (fv0aIndex < 0 || fv0aIndex >= fv0as.size()) { - values[kNFiredChannelsFV0A] = -1; + values[kNFiredChannelsFV0A] = o2::dqconstants::InvalidIndex; } else { const auto fv0a = fv0as.iteratorAt(fv0aIndex); values[kNFiredChannelsFV0A] = fv0a.channel().size(); @@ -7531,7 +7521,7 @@ void VarManager::FillEventAlice3(T const& event, float* values) } if constexpr ((fillMap & ReducedEvent) > 0) { - values[kRunNo] = -1; + values[kRunNo] = o2::dqconstants::InvalidIndex; values[kVtxX] = event.posX(); values[kVtxY] = event.posY(); values[kVtxZ] = event.posZ(); @@ -7572,7 +7562,7 @@ void VarManager::FillEventAlice3(T const& event, float* values) if constexpr ((fillMap & ReducedEventMC) > 0) { values[kMCEventGeneratorId] = event.generatorsID(); - values[kMCEventGeneratorId] = -999; // to be added in reduced events + values[kMCEventGeneratorId] = o2::dqconstants::InvalidValueI; // to be added in reduced events values[kMCVtxX] = event.mcPosX(); values[kMCVtxY] = event.mcPosY(); values[kMCVtxZ] = event.mcPosZ(); @@ -7774,8 +7764,8 @@ void VarManager::FillPairAlice3(T1 const& t1, T2 const& t2, float* values) values[kEta] = v12.Eta(); values[kPhi] = RecoDecay::constrainAngle(v12.Phi()); values[kRap] = -v12.Rapidity(); - double Ptot1 = TMath::Sqrt(v1.Px() * v1.Px() + v1.Py() * v1.Py() + v1.Pz() * v1.Pz()); - double Ptot2 = TMath::Sqrt(v2.Px() * v2.Px() + v2.Py() * v2.Py() + v2.Pz() * v2.Pz()); + double Ptot1 = std::sqrt(v1.Px() * v1.Px() + v1.Py() * v1.Py() + v1.Pz() * v1.Pz()); + double Ptot2 = std::sqrt(v2.Px() * v2.Px() + v2.Py() * v2.Py() + v2.Pz() * v2.Pz()); values[kDeltaPtotTracks] = Ptot1 - Ptot2; values[kPt1] = t1.pt(); @@ -7795,8 +7785,8 @@ void VarManager::FillPairAlice3(T1 const& t1, T2 const& t2, float* values) if (fgUsedVars[kPsiPair]) { values[kDeltaPhiPair] = (t1.sign() * fgMagField > 0.) ? (v1.Phi() - v2.Phi()) : (v2.Phi() - v1.Phi()); - double xipair = TMath::ACos((v1.Px() * v2.Px() + v1.Py() * v2.Py() + v1.Pz() * v2.Pz()) / v1.P() / v2.P()); - values[kPsiPair] = (t1.sign() * fgMagField > 0.) ? TMath::ASin((v1.Theta() - v2.Theta()) / xipair) : TMath::ASin((v2.Theta() - v1.Theta()) / xipair); + double xipair = std::acos((v1.Px() * v2.Px() + v1.Py() * v2.Py() + v1.Pz() * v2.Pz()) / v1.P() / v2.P()); + values[kPsiPair] = (t1.sign() * fgMagField > 0.) ? std::asin((v1.Theta() - v2.Theta()) / xipair) : std::asin((v2.Theta() - v1.Theta()) / xipair); } if (fgUsedVars[kOpeningAngle]) { @@ -7809,10 +7799,10 @@ void VarManager::FillPairAlice3(T1 const& t1, T2 const& t2, float* values) if (arg > 1.) { arg = 1.; } - if (arg < -1) { - arg = -1; + if (arg < o2::dqconstants::InvalidIndex) { + arg = o2::dqconstants::InvalidIndex; } - values[kOpeningAngle] = TMath::ACos(arg); + values[kOpeningAngle] = std::acos(arg); } } @@ -7842,7 +7832,7 @@ void VarManager::FillPairAlice3(T1 const& t1, T2 const& t2, float* values) values[kCosThetaHE] = zaxis_HE.Dot(v_CM); } if (fgUsedVars[kPhiHE]) { - values[kPhiHE] = RecoDecay::constrainAngle(TMath::ATan2(yaxis_HE.Dot(v_CM), xaxis_HE.Dot(v_CM))); + values[kPhiHE] = RecoDecay::constrainAngle(std::atan2(yaxis_HE.Dot(v_CM), xaxis_HE.Dot(v_CM))); } if (fgUsedVars[kPhiTildeHE]) { if (fgUsedVars[kCosThetaHE] && fgUsedVars[kPhiHE]) { @@ -7852,7 +7842,7 @@ void VarManager::FillPairAlice3(T1 const& t1, T2 const& t2, float* values) values[kPhiTildeHE] = RecoDecay::constrainAngle(values[kPhiHE] - 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 } } else { - values[kPhiTildeHE] = -999; // not computable + values[kPhiTildeHE] = o2::dqconstants::InvalidValueI; // not computable } } } @@ -7865,7 +7855,7 @@ void VarManager::FillPairAlice3(T1 const& t1, T2 const& t2, float* values) values[kCosThetaCS] = zaxis_CS.Dot(v_CM); } if (fgUsedVars[kPhiCS]) { - values[kPhiCS] = RecoDecay::constrainAngle(TMath::ATan2(yaxis_CS.Dot(v_CM), xaxis_CS.Dot(v_CM))); + values[kPhiCS] = RecoDecay::constrainAngle(std::atan2(yaxis_CS.Dot(v_CM), xaxis_CS.Dot(v_CM))); } if (fgUsedVars[kPhiTildeCS]) { if (fgUsedVars[kCosThetaCS] && fgUsedVars[kPhiCS]) { @@ -7875,7 +7865,7 @@ void VarManager::FillPairAlice3(T1 const& t1, T2 const& t2, float* values) values[kPhiTildeCS] = RecoDecay::constrainAngle(values[kPhiCS] - 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 } } else { - values[kPhiTildeCS] = -999; // not computable + values[kPhiTildeCS] = o2::dqconstants::InvalidValueI; // not computable } } } @@ -7887,7 +7877,7 @@ void VarManager::FillPairAlice3(T1 const& t1, T2 const& t2, float* values) ROOT::Math::XYZVectorF motherLab_GJB1{(ROOT::Math::XYZVectorF(v12.Vect())).Unit()}; // y-axis: normal to the production plane (fallback to (0,1,0) if degenerate) ROOT::Math::XYZVectorF yaxis_GJB1{zaxis_GJB1.Cross(motherLab_GJB1)}; - if (yaxis_GJB1.Mag2() > 1.e-6f) { + if (yaxis_GJB1.Mag2() > o2::dqconstants::defaults::GJMinMagnitude) { yaxis_GJB1 = yaxis_GJB1.Unit(); } else { yaxis_GJB1 = ROOT::Math::XYZVectorF(0.f, 1.f, 0.f); @@ -7897,7 +7887,7 @@ void VarManager::FillPairAlice3(T1 const& t1, T2 const& t2, float* values) values[kCosThetaGJB1] = zaxis_GJB1.Dot(v_CM); } if (fgUsedVars[kPhiGJB1]) { - values[kPhiGJB1] = RecoDecay::constrainAngle(TMath::ATan2(yaxis_GJB1.Dot(v_CM), xaxis_GJB1.Dot(v_CM))); + values[kPhiGJB1] = RecoDecay::constrainAngle(std::atan2(yaxis_GJB1.Dot(v_CM), xaxis_GJB1.Dot(v_CM))); } if (fgUsedVars[kPhiTildeGJB1]) { if (fgUsedVars[kCosThetaGJB1] && fgUsedVars[kPhiGJB1]) { @@ -7907,7 +7897,7 @@ void VarManager::FillPairAlice3(T1 const& t1, T2 const& t2, float* values) values[kPhiTildeGJB1] = RecoDecay::constrainAngle(values[kPhiGJB1] - 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 } } else { - values[kPhiTildeGJB1] = -999; // not computable + values[kPhiTildeGJB1] = o2::dqconstants::InvalidValueI; // not computable } } } @@ -7919,7 +7909,7 @@ void VarManager::FillPairAlice3(T1 const& t1, T2 const& t2, float* values) ROOT::Math::XYZVectorF motherLab_GJB2{(ROOT::Math::XYZVectorF(v12.Vect())).Unit()}; // y-axis: normal to the production plane (fallback to (0,1,0) if degenerate) ROOT::Math::XYZVectorF yaxis_GJB2{zaxis_GJB2.Cross(motherLab_GJB2)}; - if (yaxis_GJB2.Mag2() > 1.e-6f) { + if (yaxis_GJB2.Mag2() > o2::dqconstants::defaults::GJMinMagnitude) { yaxis_GJB2 = yaxis_GJB2.Unit(); } else { yaxis_GJB2 = ROOT::Math::XYZVectorF(0.f, 1.f, 0.f); @@ -7929,7 +7919,7 @@ void VarManager::FillPairAlice3(T1 const& t1, T2 const& t2, float* values) values[kCosThetaGJB2] = zaxis_GJB2.Dot(v_CM); } if (fgUsedVars[kPhiGJB2]) { - values[kPhiGJB2] = RecoDecay::constrainAngle(TMath::ATan2(yaxis_GJB2.Dot(v_CM), xaxis_GJB2.Dot(v_CM))); + values[kPhiGJB2] = RecoDecay::constrainAngle(std::atan2(yaxis_GJB2.Dot(v_CM), xaxis_GJB2.Dot(v_CM))); } if (fgUsedVars[kPhiTildeGJB2]) { if (fgUsedVars[kCosThetaGJB2] && fgUsedVars[kPhiGJB2]) { @@ -7939,7 +7929,7 @@ void VarManager::FillPairAlice3(T1 const& t1, T2 const& t2, float* values) values[kPhiTildeGJB2] = RecoDecay::constrainAngle(values[kPhiGJB2] - 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 } } else { - values[kPhiTildeGJB2] = -999; // not computable + values[kPhiTildeGJB2] = o2::dqconstants::InvalidValueI; // not computable } } } @@ -7952,7 +7942,7 @@ void VarManager::FillPairAlice3(T1 const& t1, T2 const& t2, float* values) values[kCosThetaPP] = zaxis_PP.Dot(v_CM) / std::sqrt(zaxis_PP.Mag2()); } if (fgUsedVars[kPhiPP]) { - values[kPhiPP] = RecoDecay::constrainAngle(TMath::ATan2(yaxis_PP.Dot(v_CM), xaxis_PP.Dot(v_CM))); + values[kPhiPP] = RecoDecay::constrainAngle(std::atan2(yaxis_PP.Dot(v_CM), xaxis_PP.Dot(v_CM))); } if (fgUsedVars[kPhiTildePP]) { if (fgUsedVars[kCosThetaPP] && fgUsedVars[kPhiPP]) { @@ -7962,7 +7952,7 @@ void VarManager::FillPairAlice3(T1 const& t1, T2 const& t2, float* values) values[kPhiTildePP] = RecoDecay::constrainAngle(values[kPhiPP] - 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 } } else { - values[kPhiTildePP] = -999; // not computable + values[kPhiTildePP] = o2::dqconstants::InvalidValueI; // not computable } } } @@ -7994,12 +7984,12 @@ void VarManager::FillPairAlice3(T1 const& t1, T2 const& t2, float* values) values[kQuadDCAsigXY] = std::sqrt((dca1sigXY * dca1sigXY + dca2sigXY * dca2sigXY) / 2); values[kQuadDCAabsZ] = std::sqrt((dca1Z * dca1Z + dca2Z * dca2Z) / 2); values[kQuadDCAsigZ] = std::sqrt((dca1sigZ * dca1sigZ + dca2sigZ * dca2sigZ) / 2); - values[kSignQuadDCAsigXY] = t1.sign() * t2.sign() * TMath::Sign(1., dca1sigXY) * TMath::Sign(1., dca2sigXY) * std::sqrt((dca1sigXY * dca1sigXY + dca2sigXY * dca2sigXY) / 2); + values[kSignQuadDCAsigXY] = t1.sign() * t2.sign() * std::copysign(1., dca1sigXY) * std::copysign(1., dca2sigXY) * std::sqrt((dca1sigXY * dca1sigXY + dca2sigXY * dca2sigXY) / 2); double det1 = t1.cYY() * t1.cZZ() - t1.cZY() * t1.cZY(); double det2 = t2.cYY() * t2.cZZ() - t2.cZY() * t2.cZY(); if ((det1 < 0) || (det2 < 0)) { - values[kQuadDCAsigXYZ] = -999; + values[kQuadDCAsigXYZ] = o2::dqconstants::InvalidValueI; } else { double chi2t1 = (dca1XY * dca1XY * t1.cZZ() + dca1Z * dca1Z * t1.cYY() - 2. * dca1XY * dca1Z * t1.cZY()) / det1; double chi2t2 = (dca2XY * dca2XY * t2.cZZ() + dca2Z * dca2Z * t2.cYY() - 2. * dca2XY * dca2Z * t2.cZY()) / det2; @@ -8041,8 +8031,8 @@ template 0 || (collFillMap & ReducedEventVtxCov) > 0); - constexpr bool trackHasCov = ((fillMap & TrackCov) > 0 || (fillMap & ReducedTrackBarrelCov) > 0); + constexpr bool EventHasVtxCov = ((collFillMap & Collision) > 0 || (collFillMap & ReducedEventVtxCov) > 0); + constexpr bool TrackHasCov = ((fillMap & TrackCov) > 0 || (fillMap & ReducedTrackBarrelCov) > 0); if (!values) { values = static_cast(fgValues); @@ -8065,16 +8055,16 @@ void VarManager::FillPairVertexingAlice3(C const& collision, T const& t1, T cons // auto pars1 = getTrackParCov(t1); // auto pars2 = getTrackParCov(t2); // We need to hide the cov data members from the cases when no cov table is provided - if constexpr ((pairType == kDecayToEE || pairType == kDecayToKPi) && trackHasCov) { - std::array t1pars = {t1.y(), t1.z(), t1.snp(), t1.tgl(), t1.signed1Pt()}; - std::array t1covs = {t1.cYY(), t1.cZY(), t1.cZZ(), t1.cSnpY(), t1.cSnpZ(), - t1.cSnpSnp(), t1.cTglY(), t1.cTglZ(), t1.cTglSnp(), t1.cTglTgl(), - t1.c1PtY(), t1.c1PtZ(), t1.c1PtSnp(), t1.c1PtTgl(), t1.c1Pt21Pt2()}; + if constexpr ((pairType == kDecayToEE || pairType == kDecayToKPi) && TrackHasCov) { + std::array t1pars = {t1.y(), t1.z(), t1.snp(), t1.tgl(), t1.signed1Pt()}; + std::array t1covs = {t1.cYY(), t1.cZY(), t1.cZZ(), t1.cSnpY(), t1.cSnpZ(), + t1.cSnpSnp(), t1.cTglY(), t1.cTglZ(), t1.cTglSnp(), t1.cTglTgl(), + t1.c1PtY(), t1.c1PtZ(), t1.c1PtSnp(), t1.c1PtTgl(), t1.c1Pt21Pt2()}; o2::track::TrackParCov pars1{t1.x(), t1.alpha(), t1pars, t1covs}; - std::array t2pars = {t2.y(), t2.z(), t2.snp(), t2.tgl(), t2.signed1Pt()}; - std::array t2covs = {t2.cYY(), t2.cZY(), t2.cZZ(), t2.cSnpY(), t2.cSnpZ(), - t2.cSnpSnp(), t2.cTglY(), t2.cTglZ(), t2.cTglSnp(), t2.cTglTgl(), - t2.c1PtY(), t2.c1PtZ(), t2.c1PtSnp(), t2.c1PtTgl(), t2.c1Pt21Pt2()}; + std::array t2pars = {t2.y(), t2.z(), t2.snp(), t2.tgl(), t2.signed1Pt()}; + std::array t2covs = {t2.cYY(), t2.cZY(), t2.cZZ(), t2.cSnpY(), t2.cSnpZ(), + t2.cSnpSnp(), t2.cTglY(), t2.cTglZ(), t2.cTglSnp(), t2.cTglTgl(), + t2.c1PtY(), t2.c1PtZ(), t2.c1PtSnp(), t2.c1PtTgl(), t2.c1Pt21Pt2()}; o2::track::TrackParCov pars2{t2.x(), t2.alpha(), t2pars, t2covs}; procCode = fgFitterTwoProngBarrel.process(pars1, pars2); } else { @@ -8082,40 +8072,41 @@ void VarManager::FillPairVertexingAlice3(C const& collision, T const& t1, T cons } values[kVertexingProcCode] = procCode; - if (procCode == 0) { + if (o2::dqconstants::IsProcCodeInvalid(procCode)) { // TODO: set the other variables to appropriate values and return - values[kVertexingChi2PCA] = -999.; - values[kVertexingLxy] = -999.; - values[kVertexingLxyz] = -999.; - values[kVertexingLz] = -999.; - values[kVertexingLxyErr] = -999.; - values[kVertexingLxyzErr] = -999.; - values[kVertexingLzErr] = -999.; - - values[kVertexingTauxy] = -999.; - values[kVertexingTauz] = -999.; - values[kVertexingTauxyErr] = -999.; - values[kVertexingTauzErr] = -999.; - values[kVertexingPz] = -999.; - values[kVertexingSV] = -999.; + values[kVertexingChi2PCA] = o2::dqconstants::InvalidValueF; + values[kVertexingLxy] = o2::dqconstants::InvalidValueF; + values[kVertexingLxyz] = o2::dqconstants::InvalidValueF; + values[kVertexingLz] = o2::dqconstants::InvalidValueF; + values[kVertexingLxyErr] = o2::dqconstants::InvalidValueF; + values[kVertexingLxyzErr] = o2::dqconstants::InvalidValueF; + values[kVertexingLzErr] = o2::dqconstants::InvalidValueF; + + values[kVertexingTauxy] = o2::dqconstants::InvalidValueF; + values[kVertexingTauz] = o2::dqconstants::InvalidValueF; + values[kVertexingTauxyErr] = o2::dqconstants::InvalidValueF; + values[kVertexingTauzErr] = o2::dqconstants::InvalidValueF; + values[kVertexingPz] = o2::dqconstants::InvalidValueF; + values[kVertexingSV] = o2::dqconstants::InvalidValueF; + return; } Vec3D secondaryVertex; o2::dataformats::VertexBase primaryVertexNew; - if constexpr (eventHasVtxCov) { + if constexpr (EventHasVtxCov) { - std::array covMatrixPCA{}; + std::array covMatrixPCA{}; // get track impact parameters // This modifies track momenta! o2::math_utils::Point3D vtxXYZ(collision.posX(), collision.posY(), collision.posZ()); - std::array vtxCov{collision.covXX(), collision.covXY(), collision.covYY(), collision.covXZ(), collision.covYZ(), collision.covZZ()}; + std::array vtxCov{collision.covXX(), collision.covXY(), collision.covYY(), collision.covXZ(), collision.covYZ(), collision.covZZ()}; o2::dataformats::VertexBase primaryVertex = {vtxXYZ, vtxCov}; // auto primaryVertex = getPrimaryVertex(collision); auto covMatrixPV = primaryVertex.getCov(); - if constexpr ((pairType == kDecayToEE || pairType == kDecayToKPi) && trackHasCov) { + if constexpr ((pairType == kDecayToEE || pairType == kDecayToKPi) && TrackHasCov) { secondaryVertex = fgFitterTwoProngBarrel.getPCACandidate(); // printf("secVtx (first) %f %f %f \n",secondaryVertex[0],secondaryVertex[1],secondaryVertex[2]); covMatrixPCA = fgFitterTwoProngBarrel.calcPCACovMatrixFlat(); @@ -8154,13 +8145,13 @@ void VarManager::FillPairVertexingAlice3(C const& collision, T const& t1, T cons values[kVertexingLz] = std::sqrt(values[kVertexingLz]); values[kVertexingLxyz] = std::sqrt(values[kVertexingLxyz]); - values[kVertexingTauz] = (collision.posZ() - secondaryVertex[2]) * v12.M() / (TMath::Abs(v12.Pz()) * o2::constants::physics::LightSpeedCm2NS); + values[kVertexingTauz] = (collision.posZ() - secondaryVertex[2]) * v12.M() / (std::abs(v12.Pz()) * o2::constants::physics::LightSpeedCm2NS); values[kVertexingTauxy] = values[kVertexingLxy] * v12.M() / (v12.Pt() * o2::constants::physics::LightSpeedCm2NS); - values[kVertexingPz] = TMath::Abs(v12.Pz()); + values[kVertexingPz] = std::abs(v12.Pz()); values[kVertexingSV] = secondaryVertex[2]; - values[kVertexingTauzErr] = values[kVertexingLzErr] * v12.M() / (TMath::Abs(v12.Pz()) * o2::constants::physics::LightSpeedCm2NS); + values[kVertexingTauzErr] = values[kVertexingLzErr] * v12.M() / (std::abs(v12.Pz()) * o2::constants::physics::LightSpeedCm2NS); values[kVertexingTauxyErr] = values[kVertexingLxyErr] * v12.M() / (v12.Pt() * o2::constants::physics::LightSpeedCm2NS); values[kCosPointingAngle] = ((secondaryVertex[0] - collision.posX()) * v12.Px() + @@ -8168,11 +8159,11 @@ void VarManager::FillPairVertexingAlice3(C const& collision, T const& t1, T cons (secondaryVertex[2] - collision.posZ()) * v12.Pz()) / (v12.P() * values[VarManager::kVertexingLxyz]); // Decay length defined as in Run 2 - values[kVertexingLzProjected] = ((secondaryVertex[2] - collision.posZ()) * v12.Pz()) / TMath::Sqrt(v12.Pz() * v12.Pz()); + values[kVertexingLzProjected] = ((secondaryVertex[2] - collision.posZ()) * v12.Pz()) / std::sqrt(v12.Pz() * v12.Pz()); values[kVertexingLxyProjected] = ((secondaryVertex[0] - collision.posX()) * v12.Px()) + ((secondaryVertex[1] - collision.posY()) * v12.Py()); - values[kVertexingLxyProjected] = values[kVertexingLxyProjected] / TMath::Sqrt((v12.Px() * v12.Px()) + (v12.Py() * v12.Py())); + values[kVertexingLxyProjected] = values[kVertexingLxyProjected] / std::sqrt((v12.Px() * v12.Px()) + (v12.Py() * v12.Py())); values[kVertexingLxyzProjected] = ((secondaryVertex[0] - collision.posX()) * v12.Px()) + ((secondaryVertex[1] - collision.posY()) * v12.Py()) + ((secondaryVertex[2] - collision.posZ()) * v12.Pz()); - values[kVertexingLxyzProjected] = values[kVertexingLxyzProjected] / TMath::Sqrt((v12.Px() * v12.Px()) + (v12.Py() * v12.Py()) + (v12.Pz() * v12.Pz())); + values[kVertexingLxyzProjected] = values[kVertexingLxyzProjected] / std::sqrt((v12.Px() * v12.Px()) + (v12.Py() * v12.Py()) + (v12.Pz() * v12.Pz())); if (fgPVrecalKF) { values[kVertexingLxyProjectedRecalculatePV] = (secondaryVertex[0] - primaryVertexNew.getX()) * v12.Px() + (secondaryVertex[1] - primaryVertexNew.getY()) * v12.Py(); values[kVertexingLxyProjectedRecalculatePV] = values[kVertexingLxyProjectedRecalculatePV] / v12.Pt(); @@ -8183,7 +8174,7 @@ void VarManager::FillPairVertexingAlice3(C const& collision, T const& t1, T cons if (fgPVrecalKF) { values[kVertexingTauxyProjectedPoleJPsiMassRecalculatePV] = values[kVertexingLxyProjectedRecalculatePV] * o2::constants::physics::MassJPsi / (v12.Pt()); } - values[kVertexingTauzProjected] = values[kVertexingLzProjected] * v12.M() / TMath::Abs(v12.Pz()); + values[kVertexingTauzProjected] = values[kVertexingLzProjected] * v12.M() / std::abs(v12.Pz()); values[kVertexingTauxyzProjected] = values[kVertexingLxyzProjected] * v12.M() / (v12.P()); } } @@ -8191,7 +8182,6 @@ void VarManager::FillPairVertexingAlice3(C const& collision, T const& t1, T cons values[kMass] = v12.M(); values[kPt] = v12.Pt(); values[kEta] = v12.Eta(); - // values[kPhi] = v12.Phi(); values[kPhi] = RecoDecay::constrainAngle(v12.Phi()); } else { values[kPt1] = t1.pt(); @@ -8208,8 +8198,8 @@ template void VarManager::FillTripletVertexingALICE3(C const& collision, T const& t1, T const& t2, T const& t3, VarManager::PairCandidateType tripletType, float* values) { // TODO: Vertexing error variables - constexpr bool eventHasVtxCov = ((collFillMap & Collision) > 0 || (collFillMap & ReducedEventVtxCov) > 0); - bool trackHasCov = ((fillMap & ReducedTrackBarrelCov) > 0); + constexpr bool EventHasVtxCov = ((collFillMap & Collision) > 0 || (collFillMap & ReducedEventVtxCov) > 0); + constexpr bool TrackHasCov = ((fillMap & ReducedTrackBarrelCov) > 0); if (!values) { values = static_cast(fgValues); @@ -8236,21 +8226,21 @@ void VarManager::FillTripletVertexingALICE3(C const& collision, T const& t1, T c int procCode = 0; - if (trackHasCov) { - std::array t1pars = {t1.y(), t1.z(), t1.snp(), t1.tgl(), t1.signed1Pt()}; - std::array t1covs = {t1.cYY(), t1.cZY(), t1.cZZ(), t1.cSnpY(), t1.cSnpZ(), - t1.cSnpSnp(), t1.cTglY(), t1.cTglZ(), t1.cTglSnp(), t1.cTglTgl(), - t1.c1PtY(), t1.c1PtZ(), t1.c1PtSnp(), t1.c1PtTgl(), t1.c1Pt21Pt2()}; + if (TrackHasCov) { + std::array t1pars = {t1.y(), t1.z(), t1.snp(), t1.tgl(), t1.signed1Pt()}; + std::array t1covs = {t1.cYY(), t1.cZY(), t1.cZZ(), t1.cSnpY(), t1.cSnpZ(), + t1.cSnpSnp(), t1.cTglY(), t1.cTglZ(), t1.cTglSnp(), t1.cTglTgl(), + t1.c1PtY(), t1.c1PtZ(), t1.c1PtSnp(), t1.c1PtTgl(), t1.c1Pt21Pt2()}; o2::track::TrackParCov pars1{t1.x(), t1.alpha(), t1pars, t1covs}; - std::array t2pars = {t2.y(), t2.z(), t2.snp(), t2.tgl(), t2.signed1Pt()}; - std::array t2covs = {t2.cYY(), t2.cZY(), t2.cZZ(), t2.cSnpY(), t2.cSnpZ(), - t2.cSnpSnp(), t2.cTglY(), t2.cTglZ(), t2.cTglSnp(), t2.cTglTgl(), - t2.c1PtY(), t2.c1PtZ(), t2.c1PtSnp(), t2.c1PtTgl(), t2.c1Pt21Pt2()}; + std::array t2pars = {t2.y(), t2.z(), t2.snp(), t2.tgl(), t2.signed1Pt()}; + std::array t2covs = {t2.cYY(), t2.cZY(), t2.cZZ(), t2.cSnpY(), t2.cSnpZ(), + t2.cSnpSnp(), t2.cTglY(), t2.cTglZ(), t2.cTglSnp(), t2.cTglTgl(), + t2.c1PtY(), t2.c1PtZ(), t2.c1PtSnp(), t2.c1PtTgl(), t2.c1Pt21Pt2()}; o2::track::TrackParCov pars2{t2.x(), t2.alpha(), t2pars, t2covs}; - std::array t3pars = {t3.y(), t3.z(), t3.snp(), t3.tgl(), t3.signed1Pt()}; - std::array t3covs = {t3.cYY(), t3.cZY(), t3.cZZ(), t3.cSnpY(), t3.cSnpZ(), - t3.cSnpSnp(), t3.cTglY(), t3.cTglZ(), t3.cTglSnp(), t3.cTglTgl(), - t3.c1PtY(), t3.c1PtZ(), t3.c1PtSnp(), t3.c1PtTgl(), t3.c1Pt21Pt2()}; + std::array t3pars = {t3.y(), t3.z(), t3.snp(), t3.tgl(), t3.signed1Pt()}; + std::array t3covs = {t3.cYY(), t3.cZY(), t3.cZZ(), t3.cSnpY(), t3.cSnpZ(), + t3.cSnpSnp(), t3.cTglY(), t3.cTglZ(), t3.cTglSnp(), t3.cTglTgl(), + t3.c1PtY(), t3.c1PtZ(), t3.c1PtSnp(), t3.c1PtTgl(), t3.c1Pt21Pt2()}; o2::track::TrackParCov pars3{t3.x(), t3.alpha(), t3pars, t3covs}; procCode = VarManager::fgFitterThreeProngBarrel.process(pars1, pars2, pars3); } else { @@ -8258,40 +8248,40 @@ void VarManager::FillTripletVertexingALICE3(C const& collision, T const& t1, T c } values[VarManager::kVertexingProcCode] = procCode; - if (procCode == 0) { + if (o2::dqconstants::IsProcCodeInvalid(procCode)) { // TODO: set the other variables to appropriate values and return - values[kVertexingChi2PCA] = -999.; - values[kVertexingLxy] = -999.; - values[kVertexingLxyz] = -999.; - values[kVertexingLz] = -999.; - values[kVertexingLxyErr] = -999.; - values[kVertexingLxyzErr] = -999.; - values[kVertexingLzErr] = -999.; - - values[kVertexingTauxy] = -999.; - values[kVertexingTauz] = -999.; - values[kVertexingTauxyErr] = -999.; - values[kVertexingTauzErr] = -999.; - - values[kVertexingLzProjected] = -999.; - values[kVertexingLxyProjected] = -999.; - values[kVertexingLxyzProjected] = -999.; - values[kVertexingTauzProjected] = -999.; - values[kVertexingTauxyProjected] = -999.; - values[kVertexingTauxyzProjected] = -999.; + values[kVertexingChi2PCA] = o2::dqconstants::InvalidValueF; + values[kVertexingLxy] = o2::dqconstants::InvalidValueF; + values[kVertexingLxyz] = o2::dqconstants::InvalidValueF; + values[kVertexingLz] = o2::dqconstants::InvalidValueF; + values[kVertexingLxyErr] = o2::dqconstants::InvalidValueF; + values[kVertexingLxyzErr] = o2::dqconstants::InvalidValueF; + values[kVertexingLzErr] = o2::dqconstants::InvalidValueF; + + values[kVertexingTauxy] = o2::dqconstants::InvalidValueF; + values[kVertexingTauz] = o2::dqconstants::InvalidValueF; + values[kVertexingTauxyErr] = o2::dqconstants::InvalidValueF; + values[kVertexingTauzErr] = o2::dqconstants::InvalidValueF; + + values[kVertexingLzProjected] = o2::dqconstants::InvalidValueF; + values[kVertexingLxyProjected] = o2::dqconstants::InvalidValueF; + values[kVertexingLxyzProjected] = o2::dqconstants::InvalidValueF; + values[kVertexingTauzProjected] = o2::dqconstants::InvalidValueF; + values[kVertexingTauxyProjected] = o2::dqconstants::InvalidValueF; + values[kVertexingTauxyzProjected] = o2::dqconstants::InvalidValueF; return; } Vec3D secondaryVertex; - if constexpr (eventHasVtxCov) { + if constexpr (EventHasVtxCov) { secondaryVertex = fgFitterThreeProngBarrel.getPCACandidate(); - std::array covMatrixPCA = fgFitterThreeProngBarrel.calcPCACovMatrixFlat(); + std::array covMatrixPCA = fgFitterThreeProngBarrel.calcPCACovMatrixFlat(); o2::math_utils::Point3D vtxXYZ(collision.posX(), collision.posY(), collision.posZ()); - std::array vtxCov{collision.covXX(), collision.covXY(), collision.covYY(), collision.covXZ(), collision.covYZ(), collision.covZZ()}; + std::array vtxCov{collision.covXX(), collision.covXY(), collision.covYY(), collision.covXZ(), collision.covYZ(), collision.covZZ()}; o2::dataformats::VertexBase primaryVertex = {vtxXYZ, vtxCov}; auto covMatrixPV = primaryVertex.getCov(); @@ -8317,10 +8307,10 @@ void VarManager::FillTripletVertexingALICE3(C const& collision, T const& t1, T c values[kVertexingLxyErr] = std::sqrt(getRotatedCovMatrixXX(covMatrixPV, phi, 0.) + getRotatedCovMatrixXX(covMatrixPCA, phi, 0.)); values[kVertexingLzErr] = std::sqrt(getRotatedCovMatrixXX(covMatrixPV, 0, theta) + getRotatedCovMatrixXX(covMatrixPCA, 0, theta)); - values[kVertexingTauz] = (collision.posZ() - secondaryVertex[2]) * v123.M() / (TMath::Abs(v123.Pz()) * o2::constants::physics::LightSpeedCm2NS); + values[kVertexingTauz] = (collision.posZ() - secondaryVertex[2]) * v123.M() / (std::abs(v123.Pz()) * o2::constants::physics::LightSpeedCm2NS); values[kVertexingTauxy] = values[kVertexingLxy] * v123.M() / (v123.Pt() * o2::constants::physics::LightSpeedCm2NS); - values[kVertexingTauzErr] = values[kVertexingLzErr] * v123.M() / (TMath::Abs(v123.Pz()) * o2::constants::physics::LightSpeedCm2NS); + values[kVertexingTauzErr] = values[kVertexingLzErr] * v123.M() / (std::abs(v123.Pz()) * o2::constants::physics::LightSpeedCm2NS); values[kVertexingTauxyErr] = values[kVertexingLxyErr] * v123.M() / (v123.Pt() * o2::constants::physics::LightSpeedCm2NS); values[kCosPointingAngle] = ((secondaryVertex[0] - collision.posX()) * v123.Px() + @@ -8329,13 +8319,13 @@ void VarManager::FillTripletVertexingALICE3(C const& collision, T const& t1, T c (v123.P() * values[VarManager::kVertexingLxyz]); // run 2 definitions: Decay length projected onto the momentum vector of the candidate values[kVertexingLzProjected] = (secondaryVertex[2] - collision.posZ()) * v123.Pz(); - values[kVertexingLzProjected] = values[kVertexingLzProjected] / TMath::Sqrt(v123.Pz() * v123.Pz()); + values[kVertexingLzProjected] = values[kVertexingLzProjected] / std::sqrt(v123.Pz() * v123.Pz()); values[kVertexingLxyProjected] = ((secondaryVertex[0] - collision.posX()) * v123.Px()) + ((secondaryVertex[1] - collision.posY()) * v123.Py()); - values[kVertexingLxyProjected] = values[kVertexingLxyProjected] / TMath::Sqrt((v123.Px() * v123.Px()) + (v123.Py() * v123.Py())); + values[kVertexingLxyProjected] = values[kVertexingLxyProjected] / std::sqrt((v123.Px() * v123.Px()) + (v123.Py() * v123.Py())); values[kVertexingLxyzProjected] = ((secondaryVertex[0] - collision.posX()) * v123.Px()) + ((secondaryVertex[1] - collision.posY()) * v123.Py()) + ((secondaryVertex[2] - collision.posZ()) * v123.Pz()); - values[kVertexingLxyzProjected] = values[kVertexingLxyzProjected] / TMath::Sqrt((v123.Px() * v123.Px()) + (v123.Py() * v123.Py()) + (v123.Pz() * v123.Pz())); + values[kVertexingLxyzProjected] = values[kVertexingLxyzProjected] / std::sqrt((v123.Px() * v123.Px()) + (v123.Py() * v123.Py()) + (v123.Pz() * v123.Pz())); - values[kVertexingTauzProjected] = values[kVertexingLzProjected] * v123.M() / TMath::Abs(v123.Pz()); + values[kVertexingTauzProjected] = values[kVertexingLzProjected] * v123.M() / std::abs(v123.Pz()); values[kVertexingTauxyProjected] = values[kVertexingLxyProjected] * v123.M() / (v123.Pt()); values[kVertexingTauxyzProjected] = values[kVertexingLxyzProjected] * v123.M() / (v123.P()); }