diff --git a/PWGDQ/Core/VarManager.cxx b/PWGDQ/Core/VarManager.cxx index f58704f9d9a..9244750660a 100644 --- a/PWGDQ/Core/VarManager.cxx +++ b/PWGDQ/Core/VarManager.cxx @@ -73,33 +73,34 @@ int VarManager::fgITSROFBorderMarginHigh = 0; uint64_t VarManager::fgSOR = 0; uint64_t VarManager::fgEOR = 0; ROOT::Math::PxPyPzEVector - VarManager::fgBeamA(0, 0, 6799.99, - 6800); // GeV, beam from A-side 4-momentum vector + VarManager::fgBeamA(0, 0, 6799.99, + 6800); // GeV, beam from A-side 4-momentum vector ROOT::Math::PxPyPzEVector - VarManager::fgBeamC(0, 0, -6799.99, - 6800); // GeV, beam from C-side 4-momentum vector + VarManager::fgBeamC(0, 0, -6799.99, + 6800); // GeV, beam from C-side 4-momentum vector o2::vertexing::DCAFitterN<2> VarManager::fgFitterTwoProngBarrel; o2::vertexing::DCAFitterN<3> VarManager::fgFitterThreeProngBarrel; o2::vertexing::DCAFitterN<4> VarManager::fgFitterFourProngBarrel; o2::vertexing::FwdDCAFitterN<2> VarManager::fgFitterTwoProngFwd; o2::vertexing::FwdDCAFitterN<3> VarManager::fgFitterThreeProngFwd; o2::globaltracking::MatchGlobalFwd VarManager::mMatching; -std::map VarManager::fgCalibs; +std::map VarManager::fgCalibs; std::array VarManager::fgRunTPCPostCalibration = {false, false, false, false}; int VarManager::fgCalibrationType = - 0; // 0 - no calibration, 1 - calibration vs (TPCncls,pIN,eta) typically for - // pp, 2 - calibration vs (eta,nPV,nLong,tLong) typically for PbPb + 0; // 0 - no calibration, 1 - calibration vs (TPCncls,pIN,eta) typically for + // pp, 2 - calibration vs (eta,nPV,nLong,tLong) typically for PbPb bool VarManager::fgUseInterpolatedCalibration = - true; // use interpolated calibration histograms (default: true) + true; // use interpolated calibration histograms (default: true) int VarManager::fgEfficiencyType = - 0; // type of efficiency to be applied, default is no efficiency -TObject *VarManager::fgEfficiencyHist = nullptr; // histogram for efficiency -TObject *VarManager::fgPosiPhiMap = nullptr; -TObject *VarManager::fgNegaPhiMap = nullptr; + 0; // type of efficiency to be applied, default is no efficiency +TObject* VarManager::fgEfficiencyHist = nullptr; // histogram for efficiency +TObject* VarManager::fgPosiPhiMap = nullptr; +TObject* VarManager::fgNegaPhiMap = nullptr; bool VarManager::fgUsePhiCorrection = false; //__________________________________________________________________ -VarManager::VarManager() : TObject() { +VarManager::VarManager() : TObject() +{ // // constructor // @@ -110,7 +111,8 @@ VarManager::VarManager() : TObject() { VarManager::~VarManager() = default; //__________________________________________________________________ -void VarManager::SetVariableDependencies() { +void VarManager::SetVariableDependencies() +{ // // Set as used variables on which other variables calculation depends // @@ -145,7 +147,8 @@ void VarManager::SetVariableDependencies() { } //__________________________________________________________________ -void VarManager::ResetValues(int startValue, int endValue, float *values) { +void VarManager::ResetValues(int startValue, int endValue, float* values) +{ // // reset all variables to an "innocent" value // NOTE: here we use -9999.0 as a neutral value, but depending on situation, @@ -159,7 +162,8 @@ void VarManager::ResetValues(int startValue, int endValue, float *values) { } //__________________________________________________________________ -void VarManager::SetCollisionSystem(const TString &system, float energy) { +void VarManager::SetCollisionSystem(const TString& system, float energy) +{ // // Set the collision system and the center of mass energy // @@ -212,42 +216,43 @@ void VarManager::SetCollisionSystem(const TString &system, float energy) { // set the beam 4-momentum vectors float beamAEnergy = - energy / 2.0f * - std::sqrt(static_cast(NumberOfProtonsA) * NumberOfProtonsC / - NumberOfProtonsC / NumberOfProtonsA); // GeV + energy / 2.0f * + std::sqrt(static_cast(NumberOfProtonsA) * NumberOfProtonsC / + NumberOfProtonsC / NumberOfProtonsA); // GeV float beamCEnergy = - energy / 2.0f * - std::sqrt(static_cast(NumberOfProtonsC) * NumberOfProtonsA / - NumberOfProtonsA / NumberOfProtonsC); // GeV + energy / 2.0f * + std::sqrt(static_cast(NumberOfProtonsC) * NumberOfProtonsA / + NumberOfProtonsA / NumberOfProtonsC); // GeV float beamAMomentum = std::sqrt(beamAEnergy * beamAEnergy - NumberOfNucleonsA * NumberOfNucleonsA * - MassProton * MassProton); + MassProton * MassProton); float beamCMomentum = std::sqrt(beamCEnergy * beamCEnergy - NumberOfNucleonsC * NumberOfNucleonsC * - MassProton * MassProton); + MassProton * MassProton); fgBeamA.SetPxPyPzE(0, 0, beamAMomentum, beamAEnergy); fgBeamC.SetPxPyPzE(0, 0, -beamCMomentum, beamCEnergy); } //__________________________________________________________________ -void VarManager::SetCollisionSystem(o2::parameters::GRPLHCIFData *grplhcif) { +void VarManager::SetCollisionSystem(o2::parameters::GRPLHCIFData* grplhcif) +{ // // Set the collision system and the center of mass energy from the GRP // information double beamAEnergy = grplhcif->getBeamEnergyPerNucleonInGeV( - o2::constants::lhc::BeamDirection::BeamA); + o2::constants::lhc::BeamDirection::BeamA); double beamCEnergy = grplhcif->getBeamEnergyPerNucleonInGeV( - o2::constants::lhc::BeamDirection::BeamC); + o2::constants::lhc::BeamDirection::BeamC); double beamANucleons = - grplhcif->getBeamA(o2::constants::lhc::BeamDirection::BeamA); + grplhcif->getBeamA(o2::constants::lhc::BeamDirection::BeamA); double beamCNucleons = - grplhcif->getBeamA(o2::constants::lhc::BeamDirection::BeamC); + grplhcif->getBeamA(o2::constants::lhc::BeamDirection::BeamC); double beamAMomentum = - std::sqrt(beamAEnergy * beamAEnergy - - beamANucleons * beamANucleons * MassProton * MassProton); + std::sqrt(beamAEnergy * beamAEnergy - + beamANucleons * beamANucleons * MassProton * MassProton); double beamCMomentum = - std::sqrt(beamCEnergy * beamCEnergy - - beamCNucleons * beamCNucleons * MassProton * MassProton); + std::sqrt(beamCEnergy * beamCEnergy - + beamCNucleons * beamCNucleons * MassProton * MassProton); fgBeamA.SetPxPyPzE(0, 0, beamAMomentum, beamAEnergy); fgBeamC.SetPxPyPzE(0, 0, -beamCMomentum, beamCEnergy); } @@ -263,7 +268,8 @@ void VarManager::SetCollisionSystem(o2::parameters::GRPLHCIFData *grplhcif) { // } //__________________________________________________________________ -void VarManager::FillTrackDerived(float *values) { +void VarManager::FillTrackDerived(float* values) +{ // // Fill track-wise derived quantities (these are all quantities which can be // computed just based on the values already filled in the FillTrack() @@ -275,12 +281,14 @@ void VarManager::FillTrackDerived(float *values) { } //__________________________________________________________________ -float VarManager::calculateCosPA(const KFParticle &kfp, const KFParticle &PV) { +float VarManager::calculateCosPA(const KFParticle& kfp, const KFParticle& PV) +{ return cpaFromKF(kfp, PV); } //__________________________________________________________________ -double VarManager::ComputePIDcalibration(int species, double nSigmaValue) { +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 @@ -290,29 +298,29 @@ double VarManager::ComputePIDcalibration(int species, double nSigmaValue) { CalibObjects calibMean = kTPCElectronMean; CalibObjects calibSigma = kTPCElectronSigma; switch (species) { - case 0: - calibMean = kTPCElectronMean; - calibSigma = kTPCElectronSigma; - break; - case 1: - calibMean = kTPCPionMean; - calibSigma = kTPCPionSigma; - break; - case 2: - calibMean = kTPCKaonMean; - calibSigma = kTPCKaonSigma; - break; - case 3: - calibMean = kTPCProtonMean; - calibSigma = kTPCProtonSigma; - break; - default: - LOG(fatal) << "Invalid species for PID calibration: " << species; - return -999.0; // Return zero if species is invalid + case 0: + calibMean = kTPCElectronMean; + calibSigma = kTPCElectronSigma; + break; + case 1: + calibMean = kTPCPionMean; + calibSigma = kTPCPionSigma; + break; + case 2: + calibMean = kTPCKaonMean; + calibSigma = kTPCKaonSigma; + break; + case 3: + calibMean = kTPCProtonMean; + calibSigma = kTPCProtonSigma; + break; + default: + LOG(fatal) << "Invalid species for PID calibration: " << species; + return -999.0; // Return zero if species is invalid } - TH3F *calibMeanHist = dynamic_cast(fgCalibs[calibMean]); - TH3F *calibSigmaHist = dynamic_cast(fgCalibs[calibSigma]); + 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 @@ -322,18 +330,18 @@ double VarManager::ComputePIDcalibration(int species, double nSigmaValue) { int binTPCncls = calibMeanHist->GetXaxis()->FindBin(fgValues[kTPCncls]); binTPCncls = (binTPCncls == 0 ? 1 : binTPCncls); binTPCncls = (binTPCncls > calibMeanHist->GetXaxis()->GetNbins() - ? calibMeanHist->GetXaxis()->GetNbins() - : binTPCncls); + ? calibMeanHist->GetXaxis()->GetNbins() + : binTPCncls); int binPin = calibMeanHist->GetYaxis()->FindBin(fgValues[kPin]); binPin = (binPin == 0 ? 1 : binPin); binPin = (binPin > calibMeanHist->GetYaxis()->GetNbins() - ? calibMeanHist->GetYaxis()->GetNbins() - : binPin); + ? calibMeanHist->GetYaxis()->GetNbins() + : binPin); int binEta = calibMeanHist->GetZaxis()->FindBin(fgValues[kEta]); binEta = (binEta == 0 ? 1 : binEta); binEta = (binEta > calibMeanHist->GetZaxis()->GetNbins() - ? calibMeanHist->GetZaxis()->GetNbins() - : binEta); + ? calibMeanHist->GetZaxis()->GetNbins() + : binEta); double mean = calibMeanHist->GetBinContent(binTPCncls, binPin, binEta); double sigma = calibSigmaHist->GetBinContent(binTPCncls, binPin, binEta); @@ -344,34 +352,34 @@ double VarManager::ComputePIDcalibration(int species, double nSigmaValue) { CalibObjects calibSigma = kTPCElectronSigma; CalibObjects calibStatus = kTPCElectronStatus; switch (species) { - case 0: - calibMean = kTPCElectronMean; - calibSigma = kTPCElectronSigma; - calibStatus = kTPCElectronStatus; - break; - case 1: - calibMean = kTPCPionMean; - calibSigma = kTPCPionSigma; - calibStatus = kTPCPionStatus; - break; - case 2: - calibMean = kTPCKaonMean; - calibSigma = kTPCKaonSigma; - calibStatus = kTPCKaonStatus; - break; - case 3: - 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 + case 0: + calibMean = kTPCElectronMean; + calibSigma = kTPCElectronSigma; + calibStatus = kTPCElectronStatus; + break; + case 1: + calibMean = kTPCPionMean; + calibSigma = kTPCPionSigma; + calibStatus = kTPCPionStatus; + break; + case 2: + calibMean = kTPCKaonMean; + calibSigma = kTPCKaonSigma; + calibStatus = kTPCKaonStatus; + break; + case 3: + 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 } - THnF *calibMeanHist = dynamic_cast(fgCalibs[calibMean]); - THnF *calibSigmaHist = dynamic_cast(fgCalibs[calibSigma]); - THnF *calibStatusHist = dynamic_cast(fgCalibs[calibStatus]); + THnF* calibMeanHist = dynamic_cast(fgCalibs[calibMean]); + THnF* calibSigmaHist = dynamic_cast(fgCalibs[calibSigma]); + 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 @@ -381,55 +389,55 @@ double VarManager::ComputePIDcalibration(int species, double nSigmaValue) { int binEta = calibMeanHist->GetAxis(0)->FindBin(fgValues[kEta]); binEta = (binEta == 0 ? 1 : binEta); binEta = (binEta > calibMeanHist->GetAxis(0)->GetNbins() - ? calibMeanHist->GetAxis(0)->GetNbins() - : binEta); + ? calibMeanHist->GetAxis(0)->GetNbins() + : binEta); int binNpv = calibMeanHist->GetAxis(1)->FindBin(fgValues[kVtxNcontribReal]); binNpv = (binNpv == 0 ? 1 : binNpv); binNpv = (binNpv > calibMeanHist->GetAxis(1)->GetNbins() - ? calibMeanHist->GetAxis(1)->GetNbins() - : binNpv); + ? calibMeanHist->GetAxis(1)->GetNbins() + : binNpv); int binNlong = - calibMeanHist->GetAxis(2)->FindBin(fgValues[kNTPCcontribLongA]); + calibMeanHist->GetAxis(2)->FindBin(fgValues[kNTPCcontribLongA]); binNlong = (binNlong == 0 ? 1 : binNlong); binNlong = (binNlong > calibMeanHist->GetAxis(2)->GetNbins() - ? calibMeanHist->GetAxis(2)->GetNbins() - : binNlong); + ? calibMeanHist->GetAxis(2)->GetNbins() + : binNlong); int binTlong = - calibMeanHist->GetAxis(3)->FindBin(fgValues[kNTPCmedianTimeLongA]); + calibMeanHist->GetAxis(3)->FindBin(fgValues[kNTPCmedianTimeLongA]); binTlong = (binTlong == 0 ? 1 : binTlong); binTlong = (binTlong > calibMeanHist->GetAxis(3)->GetNbins() - ? calibMeanHist->GetAxis(3)->GetNbins() - : binTlong); + ? calibMeanHist->GetAxis(3)->GetNbins() + : binTlong); std::array bin{binEta, binNpv, binNlong, binTlong}; int status = static_cast(calibStatusHist->GetBinContent(bin.data())); double mean = calibMeanHist->GetBinContent(bin.data()); double sigma = calibSigmaHist->GetBinContent(bin.data()); switch (status) { - case 0: - // good calibration, return the calibrated nSigma value - return (nSigmaValue - mean) / sigma; - break; - case 1: - case 4: - // calibration not valid or interpolation failed, return the original - // nSigma value - return nSigmaValue; - break; - case 2: // calibration constant has poor stat uncertainty, consider the user - // option for what to do - case 3: - // calibration constants have been interpolated - if (fgUseInterpolatedCalibration) { + case 0: + // good calibration, return the calibrated nSigma value return (nSigmaValue - mean) / sigma; - } else { - // return the original nSigma value + break; + case 1: + case 4: + // calibration not valid or interpolation failed, return the original + // nSigma value return nSigmaValue; - } - break; - default: - return nSigmaValue; // unknown status, return the original nSigma value - break; + break; + case 2: // calibration constant has poor stat uncertainty, consider the user + // option for what to do + case 3: + // calibration constants have been interpolated + if (fgUseInterpolatedCalibration) { + return (nSigmaValue - mean) / sigma; + } else { + // return the original nSigma value + return nSigmaValue; + } + break; + default: + return nSigmaValue; // unknown status, return the original nSigma value + break; } } else { // unknown calibration type, return the original nSigma value @@ -439,7 +447,8 @@ double VarManager::ComputePIDcalibration(int species, double nSigmaValue) { } //__________________________________________________________________ -void VarManager::SetEfficiencyObject(int efficiencyType, TObject *obj) { +void VarManager::SetEfficiencyObject(int efficiencyType, TObject* obj) +{ // check the type of the efficiency object and set it accordingly if (efficiencyType >= kNEfficiencyTypes || efficiencyType < 0) { LOG(warning) << "SetEfficiencyObject: unknown efficiency type " @@ -453,7 +462,8 @@ void VarManager::SetEfficiencyObject(int efficiencyType, TObject *obj) { fgEfficiencyHist = obj; } -void VarManager::FillEfficiency(float *values) { +void VarManager::FillEfficiency(float* values) +{ // depending on the efficiency type, we use different types of efficiency // histograms and different variables to get the efficiency value if (!values) { @@ -462,75 +472,75 @@ void VarManager::FillEfficiency(float *values) { if (fgEfficiencyType == kNone) { values[kPairEfficiency] = - 1.0; // if no efficiency is to be applied, set the efficiency value to 1 + 1.0; // if no efficiency is to be applied, set the efficiency value to 1 values[kPairWeight] = 1.0; // set the weight to 1 } else if (fgEfficiencyType == kPairPtCentFT0cCosThetaStarFT0c) { if (!fgEfficiencyHist) { LOG(fatal) << "efficiency histogram not set"; return; } - TH3F *efficiencyHist = dynamic_cast(fgEfficiencyHist); + TH3F* efficiencyHist = dynamic_cast(fgEfficiencyHist); // Get the bin indices for the efficiency histogram int binPt = efficiencyHist->GetXaxis()->FindBin(values[kPt]); binPt = (binPt == 0 ? 1 : binPt); binPt = (binPt > efficiencyHist->GetXaxis()->GetNbins() - ? efficiencyHist->GetXaxis()->GetNbins() - : binPt); + ? efficiencyHist->GetXaxis()->GetNbins() + : binPt); int binCent = efficiencyHist->GetYaxis()->FindBin(values[kCentFT0C]); binCent = (binCent == 0 ? 1 : binCent); binCent = (binCent > efficiencyHist->GetYaxis()->GetNbins() - ? efficiencyHist->GetYaxis()->GetNbins() - : binCent); + ? efficiencyHist->GetYaxis()->GetNbins() + : binCent); int binCosThetaStarFT0c = - efficiencyHist->GetZaxis()->FindBin(values[kCosThetaStarFT0C]); + efficiencyHist->GetZaxis()->FindBin(values[kCosThetaStarFT0C]); binCosThetaStarFT0c = (binCosThetaStarFT0c == 0 ? 1 : binCosThetaStarFT0c); binCosThetaStarFT0c = - (binCosThetaStarFT0c > efficiencyHist->GetZaxis()->GetNbins() - ? efficiencyHist->GetZaxis()->GetNbins() - : binCosThetaStarFT0c); + (binCosThetaStarFT0c > efficiencyHist->GetZaxis()->GetNbins() + ? efficiencyHist->GetZaxis()->GetNbins() + : binCosThetaStarFT0c); // get the efficiency value from the histogram values[kPairEfficiency] = - efficiencyHist->GetBinContent(binPt, binCent, binCosThetaStarFT0c); + efficiencyHist->GetBinContent(binPt, binCent, binCosThetaStarFT0c); values[kPairWeight] = - 1.0 / (values[kPairEfficiency] > 0 - ? values[kPairEfficiency] - : 1.0); // set the weight as the inverse of the efficiency, - // but avoid division by zero + 1.0 / (values[kPairEfficiency] > 0 + ? values[kPairEfficiency] + : 1.0); // set the weight as the inverse of the efficiency, + // but avoid division by zero } else if (fgEfficiencyType == kPairPtCentFT0cCosThetaStarRandom) { if (!fgEfficiencyHist) { LOG(fatal) << "efficiency histogram not set"; return; } - TH3F *efficiencyHist = dynamic_cast(fgEfficiencyHist); + TH3F* efficiencyHist = dynamic_cast(fgEfficiencyHist); // Get the bin indices for the efficiency histogram int binPt = efficiencyHist->GetXaxis()->FindBin(values[kPt]); binPt = (binPt == 0 ? 1 : binPt); binPt = (binPt > efficiencyHist->GetXaxis()->GetNbins() - ? efficiencyHist->GetXaxis()->GetNbins() - : binPt); + ? efficiencyHist->GetXaxis()->GetNbins() + : binPt); int binCent = efficiencyHist->GetYaxis()->FindBin(values[kCentFT0C]); binCent = (binCent == 0 ? 1 : binCent); binCent = (binCent > efficiencyHist->GetYaxis()->GetNbins() - ? efficiencyHist->GetYaxis()->GetNbins() - : binCent); + ? efficiencyHist->GetYaxis()->GetNbins() + : binCent); int binCosThetaStarRandom = - efficiencyHist->GetZaxis()->FindBin(values[kCosThetaStarRandom]); + efficiencyHist->GetZaxis()->FindBin(values[kCosThetaStarRandom]); binCosThetaStarRandom = - (binCosThetaStarRandom == 0 ? 1 : binCosThetaStarRandom); + (binCosThetaStarRandom == 0 ? 1 : binCosThetaStarRandom); binCosThetaStarRandom = - (binCosThetaStarRandom > efficiencyHist->GetZaxis()->GetNbins() - ? efficiencyHist->GetZaxis()->GetNbins() - : binCosThetaStarRandom); + (binCosThetaStarRandom > efficiencyHist->GetZaxis()->GetNbins() + ? efficiencyHist->GetZaxis()->GetNbins() + : binCosThetaStarRandom); // get the efficiency value from the histogram values[kPairEfficiency] = - efficiencyHist->GetBinContent(binPt, binCent, binCosThetaStarRandom); + efficiencyHist->GetBinContent(binPt, binCent, binCosThetaStarRandom); values[kPairWeight] = - 1.0 / (values[kPairEfficiency] > 0 - ? values[kPairEfficiency] - : 1.0); // set the weight as the inverse of the efficiency, - // but avoid division by zero + 1.0 / (values[kPairEfficiency] > 0 + ? values[kPairEfficiency] + : 1.0); // set the weight as the inverse of the efficiency, + // but avoid division by zero } else { LOG(warning) << "FillEfficiency: unknown efficiency type " << fgEfficiencyType << ", using default efficiency = 1"; @@ -539,13 +549,15 @@ void VarManager::FillEfficiency(float *values) { } } -void VarManager::SetPhiMap(TObject *hposi, TObject *hnega, bool option) { +void VarManager::SetPhiMap(TObject* hposi, TObject* hnega, bool option) +{ fgPosiPhiMap = hposi; fgNegaPhiMap = hnega; fgUsePhiCorrection = option; } -double VarManager::SampleRotationPhi(double pt, double eta, int charge) { +double VarManager::SampleRotationPhi(double pt, double eta, int charge) +{ // each type only alarm once static bool warnedEmptyPhi = false; @@ -553,11 +565,11 @@ double VarManager::SampleRotationPhi(double pt, double eta, int charge) { return gRandom->Uniform(0., o2::constants::math::TwoPI); } else { - TH3D *hMap = nullptr; + TH3D* hMap = nullptr; if (charge > 0) { - hMap = dynamic_cast(fgPosiPhiMap); + hMap = dynamic_cast(fgPosiPhiMap); } else { - hMap = dynamic_cast(fgNegaPhiMap); + hMap = dynamic_cast(fgNegaPhiMap); } if (!hMap) { @@ -570,9 +582,9 @@ double VarManager::SampleRotationPhi(double pt, double eta, int charge) { ptBin = std::clamp(ptBin, 1, hMap->GetNbinsX()); etaBin = std::clamp(etaBin, 1, hMap->GetNbinsZ()); - TH1D *hPhi = hMap->ProjectionY( - Form("hTRPhi_tmp_charge%d_ptbin%d_etabin%d", charge, ptBin, etaBin), - ptBin, ptBin, etaBin, etaBin); + TH1D* hPhi = hMap->ProjectionY( + Form("hTRPhi_tmp_charge%d_ptbin%d_etabin%d", charge, ptBin, etaBin), + ptBin, ptBin, etaBin, etaBin); if (!hPhi || hPhi->Integral(1, hPhi->GetNbinsX()) <= 0.) { if (!warnedEmptyPhi) { @@ -599,7 +611,8 @@ double VarManager::SampleRotationPhi(double pt, double eta, int charge) { //__________________________________________________________________ std::tuple -VarManager::BimodalityCoefficientUnbinned(const std::vector &data) { + VarManager::BimodalityCoefficientUnbinned(const std::vector& data) +{ // Bimodality coefficient = (skewness^2 + 1) / kurtosis // return a tuple including the coefficient, mean, RMS, skewness, and kurtosis size_t n = data.size(); @@ -609,7 +622,7 @@ VarManager::BimodalityCoefficientUnbinned(const std::vector &data) { float mean = std::accumulate(data.begin(), data.end(), 0.0) / n; float m2 = 0.0, m3 = 0.0, m4 = 0.0; - for (const float &x : data) { + for (const float& x : data) { const float diff = x - mean; const float diff2 = diff * diff; m2 += diff2; @@ -634,9 +647,10 @@ VarManager::BimodalityCoefficientUnbinned(const std::vector &data) { } std::tuple -VarManager::BimodalityCoefficientAndNPeaks(const std::vector &data, - float binWidth, int trim, float min, - float max) { + VarManager::BimodalityCoefficientAndNPeaks(const std::vector& data, + float binWidth, int trim, float min, + float max) +{ // Bimodality coefficient = (skewness^2 + 1) / kurtosis // return a tuple including the coefficient, mean, RMS, skewness, and kurtosis @@ -653,7 +667,7 @@ VarManager::BimodalityCoefficientAndNPeaks(const std::vector &data, int nBins = static_cast((max - min) / binWidth); std::vector counts(nBins, 0.0); - for (const float &x : data) { + for (const float& x : data) { if (x < min || x >= max) { continue; // skip out-of-range values } @@ -796,7 +810,8 @@ VarManager::BimodalityCoefficientAndNPeaks(const std::vector &data, } //__________________________________________________________________ -void VarManager::SetDefaultVarNames() { +void VarManager::SetDefaultVarNames() +{ // // Set default variable names // @@ -888,7 +903,7 @@ void VarManager::SetDefaultVarNames() { fgVariableNames[kMultDimuons] = "Multiplicity Dimuons Unlike Sign"; fgVariableUnits[kMultDimuons] = ""; fgVariableNames[kMultDimuonsME] = - "Multiplicity Dimuons Unlike Sign Mixed Events"; + "Multiplicity Dimuons Unlike Sign Mixed Events"; fgVariableUnits[kMultDimuonsME] = ""; fgVariableNames[kCentFT0C] = "Centrality FT0C"; fgVariableUnits[kCentFT0C] = "%"; @@ -903,11 +918,11 @@ void VarManager::SetDefaultVarNames() { fgVariableNames[kMCEventPlaneAngle] = "MC event plane angle"; fgVariableNames[kMCEventCentrFT0C] = "MC Centrality FT0C"; fgVariableNames[kMultMCNParticlesEta05] = - "MC Multiplicity Central Barrel for |eta| < 0.5"; + "MC Multiplicity Central Barrel for |eta| < 0.5"; fgVariableNames[kMultMCNParticlesEta08] = - "MC Multiplicity Central Barrel for |eta| < 0.8"; + "MC Multiplicity Central Barrel for |eta| < 0.8"; fgVariableNames[kMultMCNParticlesEta10] = - "MC Multiplicity Central Barrel for |eta| < 1.0"; + "MC Multiplicity Central Barrel for |eta| < 1.0"; fgVariableUnits[kMCEventGeneratorId] = ""; fgVariableUnits[kMCEventSubGeneratorId] = ""; fgVariableUnits[kMCVtxX] = "cm"; @@ -976,12 +991,12 @@ void VarManager::SetDefaultVarNames() { fgVariableNames[kMultNTracksPVetaHalf] = "# Mult Tracks PV |#eta| < 0.5"; fgVariableUnits[kMultNTracksPVetaHalf] = ""; fgVariableNames[kTrackOccupancyInTimeRange] = - "track occupancy in TPC drift time (PV tracks)"; + "track occupancy in TPC drift time (PV tracks)"; fgVariableUnits[kTrackOccupancyInTimeRange] = ""; fgVariableNames[kFT0COccupancyInTimeRange] = "FT0C occupancy"; fgVariableUnits[kFT0COccupancyInTimeRange] = ""; fgVariableNames[kNoCollInTimeRangeStandard] = - "track occupancy in TPC drift standart time"; + "track occupancy in TPC drift standart time"; fgVariableUnits[kNoCollInTimeRangeStandard] = ""; fgVariableNames[kMultAllTracksITSTPC] = "# ITS-TPC tracks"; fgVariableUnits[kMultAllTracksITSTPC] = ""; @@ -1004,82 +1019,82 @@ void VarManager::SetDefaultVarNames() { fgVariableNames[kNTPCcontribLongC] = "# TPC-C pileup, long time range"; fgVariableUnits[kNTPCcontribLongC] = ""; fgVariableNames[kNTPCmeanTimeLongA] = - "# TPC-A pileup mean time, long time range"; + "# TPC-A pileup mean time, long time range"; fgVariableUnits[kNTPCmeanTimeLongA] = "#mu s"; fgVariableNames[kNTPCmeanTimeLongC] = - "# TPC-C pileup mean time, long time range"; + "# TPC-C pileup mean time, long time range"; fgVariableUnits[kNTPCmeanTimeLongC] = "#mu s"; fgVariableNames[kNTPCmedianTimeLongA] = - "# TPC-A pileup median time, long time range"; + "# TPC-A pileup median time, long time range"; fgVariableUnits[kNTPCmedianTimeLongA] = "#mu s"; fgVariableNames[kNTPCmedianTimeLongC] = - "# TPC-C pileup median time, long time range"; + "# TPC-C pileup median time, long time range"; fgVariableUnits[kNTPCmedianTimeLongC] = "#mu s"; fgVariableNames[kNTPCcontribShortA] = "# TPC-A pileup, short time range"; fgVariableUnits[kNTPCcontribShortA] = ""; fgVariableNames[kNTPCcontribShortC] = "# TPC-C pileup, short time range"; fgVariableUnits[kNTPCcontribShortC] = ""; fgVariableNames[kNTPCmeanTimeShortA] = - "# TPC-A pileup mean time, short time range"; + "# TPC-A pileup mean time, short time range"; fgVariableUnits[kNTPCmeanTimeShortA] = "#mu s"; fgVariableNames[kNTPCmeanTimeShortC] = - "# TPC-C pileup mean time, short time range"; + "# TPC-C pileup mean time, short time range"; fgVariableUnits[kNTPCmeanTimeShortC] = "#mu s"; fgVariableNames[kNTPCmedianTimeShortA] = - "# TPC-A pileup median time, short time range"; + "# TPC-A pileup median time, short time range"; fgVariableUnits[kNTPCmedianTimeShortA] = "#mu s"; fgVariableNames[kNTPCmedianTimeShortC] = - "# TPC-C pileup median time, short time range"; + "# TPC-C pileup median time, short time range"; fgVariableUnits[kNTPCmedianTimeShortC] = "#mu s"; fgVariableNames[kDCAzBimodalityCoefficient] = - "Unbinned Bimodality Coeff of DCAz distribution"; + "Unbinned Bimodality Coeff of DCAz distribution"; fgVariableUnits[kDCAzBimodalityCoefficient] = ""; fgVariableNames[kDCAzBimodalityCoefficientBinned] = - "Binned Bimodality Coeff of DCAz distribution"; + "Binned Bimodality Coeff of DCAz distribution"; fgVariableUnits[kDCAzBimodalityCoefficientBinned] = ""; fgVariableNames[kDCAzBimodalityCoefficientBinnedTrimmed1] = - "Binned Bimodality Coeff of DCAz distribution (trimmed 1)"; + "Binned Bimodality Coeff of DCAz distribution (trimmed 1)"; fgVariableUnits[kDCAzBimodalityCoefficientBinnedTrimmed1] = ""; fgVariableNames[kDCAzBimodalityCoefficientBinnedTrimmed2] = - "Binned Bimodality Coeff of DCAz distribution (trimmed 2)"; + "Binned Bimodality Coeff of DCAz distribution (trimmed 2)"; fgVariableUnits[kDCAzBimodalityCoefficientBinnedTrimmed2] = ""; fgVariableNames[kDCAzBimodalityCoefficientBinnedTrimmed3] = - "Binned Bimodality Coeff of DCAz distribution (trimmed 3)"; + "Binned Bimodality Coeff of DCAz distribution (trimmed 3)"; fgVariableUnits[kDCAzBimodalityCoefficientBinnedTrimmed3] = ""; fgVariableNames[kDCAzMean] = "Mean of DCAz distribution"; fgVariableUnits[kDCAzMean] = "cm"; fgVariableNames[kDCAzMeanBinnedTrimmed1] = - "Mean of DCAz distribution (trimmed 1)"; + "Mean of DCAz distribution (trimmed 1)"; fgVariableUnits[kDCAzMeanBinnedTrimmed1] = "cm"; fgVariableNames[kDCAzMeanBinnedTrimmed2] = - "Mean of DCAz distribution (trimmed 2)"; + "Mean of DCAz distribution (trimmed 2)"; fgVariableUnits[kDCAzMeanBinnedTrimmed2] = "cm"; fgVariableNames[kDCAzMeanBinnedTrimmed3] = - "Mean of DCAz distribution (trimmed 3)"; + "Mean of DCAz distribution (trimmed 3)"; fgVariableUnits[kDCAzMeanBinnedTrimmed3] = "cm"; fgVariableNames[kDCAzRMS] = "RMS of DCAz distribution"; fgVariableUnits[kDCAzRMS] = "cm"; fgVariableNames[kDCAzRMSBinnedTrimmed1] = - "RMS of DCAz distribution (trimmed 1)"; + "RMS of DCAz distribution (trimmed 1)"; fgVariableUnits[kDCAzRMSBinnedTrimmed1] = "cm"; fgVariableNames[kDCAzRMSBinnedTrimmed2] = - "RMS of DCAz distribution (trimmed 2)"; + "RMS of DCAz distribution (trimmed 2)"; fgVariableUnits[kDCAzRMSBinnedTrimmed2] = "cm"; fgVariableNames[kDCAzRMSBinnedTrimmed3] = - "RMS of DCAz distribution (trimmed 3)"; + "RMS of DCAz distribution (trimmed 3)"; fgVariableUnits[kDCAzRMSBinnedTrimmed3] = "cm"; fgVariableNames[kDCAzSkewness] = "Skewness of DCAz distribution"; fgVariableUnits[kDCAzSkewness] = ""; fgVariableNames[kDCAzKurtosis] = "Kurtosis of DCAz distribution"; fgVariableUnits[kDCAzKurtosis] = ""; fgVariableNames[kDCAzFracAbove100um] = - "Fraction of tracks with |DCAz| > 100 um"; + "Fraction of tracks with |DCAz| > 100 um"; fgVariableUnits[kDCAzFracAbove100um] = ""; fgVariableNames[kDCAzFracAbove200um] = - "Fraction of tracks with |DCAz| > 200 um"; + "Fraction of tracks with |DCAz| > 200 um"; fgVariableUnits[kDCAzFracAbove200um] = ""; fgVariableNames[kDCAzFracAbove500um] = - "Fraction of tracks with |DCAz| > 500 um"; + "Fraction of tracks with |DCAz| > 500 um"; fgVariableUnits[kDCAzFracAbove500um] = ""; fgVariableNames[kDCAzFracAbove1mm] = "Fraction of tracks with |DCAz| > 1 mm"; fgVariableUnits[kDCAzFracAbove1mm] = ""; @@ -1088,18 +1103,18 @@ void VarManager::SetDefaultVarNames() { fgVariableNames[kDCAzFracAbove5mm] = "Fraction of tracks with |DCAz| > 5 mm"; fgVariableUnits[kDCAzFracAbove5mm] = ""; fgVariableNames[kDCAzFracAbove10mm] = - "Fraction of tracks with |DCAz| > 10 mm"; + "Fraction of tracks with |DCAz| > 10 mm"; fgVariableUnits[kDCAzFracAbove10mm] = ""; fgVariableNames[kDCAzNPeaks] = "Number of peaks in DCAz distribution"; fgVariableUnits[kDCAzNPeaks] = ""; fgVariableNames[kDCAzNPeaksTrimmed1] = - "Number of peaks in binned DCAz distribution (trimmed 1)"; + "Number of peaks in binned DCAz distribution (trimmed 1)"; fgVariableUnits[kDCAzNPeaksTrimmed1] = ""; fgVariableNames[kDCAzNPeaksTrimmed2] = - "Number of peaks in binned DCAz distribution (trimmed 2)"; + "Number of peaks in binned DCAz distribution (trimmed 2)"; fgVariableUnits[kDCAzNPeaksTrimmed2] = ""; fgVariableNames[kDCAzNPeaksTrimmed3] = - "Number of peaks in binned DCAz distribution (trimmed 3)"; + "Number of peaks in binned DCAz distribution (trimmed 3)"; fgVariableUnits[kDCAzNPeaksTrimmed3] = ""; fgVariableNames[kInteractionRate] = "Interaction rate"; fgVariableUnits[kInteractionRate] = "kHz"; @@ -1128,7 +1143,7 @@ void VarManager::SetDefaultVarNames() { fgVariableNames[kMass] = "mass"; fgVariableUnits[kMass] = "GeV/c2"; fgVariableNames[kDeltaPtotTracks] = - "#it{p}_{Tot}^{#mu+} - #it{p}_{Tot}^{#mu-}"; + "#it{p}_{Tot}^{#mu+} - #it{p}_{Tot}^{#mu-}"; fgVariableUnits[kDeltaPtotTracks] = "GeV/c"; fgVariableNames[kCharge] = "charge"; fgVariableUnits[kCharge] = ""; @@ -1149,12 +1164,12 @@ void VarManager::SetDefaultVarNames() { fgVariableNames[kTrackTimeRes] = "Resolution of the track time"; fgVariableUnits[kTrackTimeRes] = "ns"; fgVariableNames[kTrackTimeResRelative] = - "Relative resolution of the track time"; + "Relative resolution of the track time"; fgVariableUnits[kTrackTimeResRelative] = ""; fgVariableNames[kTrackAssocDeltaTime] = "Track-collision association #Deltat"; fgVariableUnits[kTrackAssocDeltaTime] = "ns"; fgVariableNames[kTrackAssocTimeThreshold] = - "Track-collision association time threshold"; + "Track-collision association time threshold"; fgVariableUnits[kTrackAssocTimeThreshold] = "ns"; fgVariableNames[kTrackAssocDeltaTimeNorm] = "|#Deltat| / threshold"; fgVariableUnits[kTrackAssocDeltaTimeNorm] = ""; @@ -1216,7 +1231,7 @@ void VarManager::SetDefaultVarNames() { fgVariableNames[kEMCalIsExotic] = "EMCal cluster is exotic"; fgVariableUnits[kEMCalIsExotic] = ""; fgVariableNames[kEMCalDistanceToBadChannel] = - "EMCal cluster distance to bad channel"; + "EMCal cluster distance to bad channel"; fgVariableUnits[kEMCalDistanceToBadChannel] = ""; fgVariableNames[kEMCalNLM] = "EMCal cluster no. local maxima"; fgVariableUnits[kEMCalNLM] = ""; @@ -1287,19 +1302,19 @@ void VarManager::SetDefaultVarNames() { fgVariableNames[kIsAmbiguous] = "is ambiguous track"; fgVariableUnits[kIsAmbiguous] = ""; fgVariableNames[kIsLegFromGamma] = - "is leg from #gamma #rightarror e^{+}e^{-}"; + "is leg from #gamma #rightarror e^{+}e^{-}"; fgVariableUnits[kIsLegFromGamma] = ""; fgVariableNames[kIsLegFromK0S] = - "is leg from K_{S}^{0} #rightarror #pi^{+}#pi^{-}"; + "is leg from K_{S}^{0} #rightarror #pi^{+}#pi^{-}"; fgVariableUnits[kIsLegFromK0S] = ""; fgVariableNames[kIsLegFromLambda] = - "is leg from #Lambda #rightarror p#pi^{-}"; + "is leg from #Lambda #rightarror p#pi^{-}"; fgVariableUnits[kIsLegFromLambda] = ""; fgVariableNames[kIsLegFromAntiLambda] = - "is leg from #bar{#Lambda} #rightarrow #bar{p}#pi^{+}"; + "is leg from #bar{#Lambda} #rightarrow #bar{p}#pi^{+}"; fgVariableUnits[kIsLegFromAntiLambda] = ""; fgVariableNames[kIsLegFromOmega] = - "is leg from #Omega^{#mp} #rightarrow #LambdaKi^{#pm}"; + "is leg from #Omega^{#mp} #rightarrow #LambdaKi^{#pm}"; fgVariableUnits[kIsLegFromOmega] = ""; fgVariableNames[kMuonNClusters] = "muon n-clusters"; fgVariableUnits[kMuonNClusters] = ""; @@ -1452,7 +1467,7 @@ void VarManager::SetDefaultVarNames() { fgVariableNames[kVertexingTauxyProjected] = "Pair pseudo-proper Tauxy"; fgVariableUnits[kVertexingTauxyProjected] = "ns"; fgVariableNames[kVertexingTauxyProjectedPoleJPsiMass] = - "Pair pseudo-proper Tauxy (with pole JPsi mass)"; + "Pair pseudo-proper Tauxy (with pole JPsi mass)"; fgVariableUnits[kVertexingTauxyProjectedPoleJPsiMass] = "ns"; fgVariableNames[kVertexingTauxyzProjected] = "Pair pseudo-proper Tauxyz"; fgVariableUnits[kVertexingTauxyzProjected] = "ns"; @@ -1519,10 +1534,10 @@ void VarManager::SetDefaultVarNames() { fgVariableNames[kQ1ZNCY] = "Q_{1,y}^{ZNC} "; fgVariableUnits[kQ1ZNCY] = ""; fgVariableNames[KIntercalibZNA] = - "ZNA^{common} - (ZNA1 + ZNA2 + ZNA3 + ZNA4)"; + "ZNA^{common} - (ZNA1 + ZNA2 + ZNA3 + ZNA4)"; fgVariableUnits[KIntercalibZNA] = ""; fgVariableNames[KIntercalibZNC] = - "ZNC^{common} - (ZNC1 + ZNC2 + ZNC3 + ZNC4)"; + "ZNC^{common} - (ZNC1 + ZNC2 + ZNC3 + ZNC4)"; fgVariableUnits[KIntercalibZNC] = ""; fgVariableNames[kQ1ZNACXX] = "Q_{1,x}^{ZNC} #dot Q_{1,x}^{ZNA} "; fgVariableUnits[kQ1ZNACXX] = ""; @@ -1941,7 +1956,7 @@ void VarManager::SetDefaultVarNames() { fgVariableNames[kQuadPhi] = "#varphi"; fgVariableUnits[kQuadPhi] = "rad."; fgVariableNames[kCosthetaDileptonDitrack] = - "cos#it{#theta}_{dilepton-ditrack}"; + "cos#it{#theta}_{dilepton-ditrack}"; fgVariableUnits[kCosthetaDileptonDitrack] = ""; fgVariableNames[kDitrackMass] = "mass di-track"; fgVariableUnits[kDitrackMass] = "GeV/c2"; @@ -2048,7 +2063,7 @@ void VarManager::SetDefaultVarNames() { fgVariableNames[kMultGlobalTracks] = "Mult global tracks ALICE3"; fgVariableUnits[kMultGlobalTracks] = ""; fgVariableNames[kMultGlobalTracksPV] = - "Mult global tracks that are PV ALICE3"; + "Mult global tracks that are PV ALICE3"; fgVariableUnits[kMultGlobalTracksPV] = ""; fgVariableNames[kMultMCNParticlesAll] = "Multiplicity MC all"; fgVariableUnits[kMultMCNParticlesAll] = ""; @@ -2127,7 +2142,7 @@ void VarManager::SetDefaultVarNames() { fgVariableNames[kTOFEventTime] = "Event time reconstructed with ALICE3 TOF"; fgVariableUnits[kTOFEventTime] = "ns"; fgVariableNames[kTOFEventTimeErr] = - "Event time error reconstructed with ALICE3 TOF"; + "Event time error reconstructed with ALICE3 TOF"; fgVariableUnits[kTOFEventTimeErr] = "ns"; fgVariableNames[koTOFBeta] = "oTOF #beta"; fgVariableUnits[koTOFBeta] = ""; @@ -2275,13 +2290,13 @@ void VarManager::SetDefaultVarNames() { fgVarNamesMap["kNTPCmedianTimeShortC"] = kNTPCmedianTimeShortC; fgVarNamesMap["kDCAzBimodalityCoefficient"] = kDCAzBimodalityCoefficient; fgVarNamesMap["kDCAzBimodalityCoefficientBinned"] = - kDCAzBimodalityCoefficientBinned; + kDCAzBimodalityCoefficientBinned; fgVarNamesMap["kDCAzBimodalityCoefficientBinnedTrimmed1"] = - kDCAzBimodalityCoefficientBinnedTrimmed1; + kDCAzBimodalityCoefficientBinnedTrimmed1; fgVarNamesMap["kDCAzBimodalityCoefficientBinnedTrimmed2"] = - kDCAzBimodalityCoefficientBinnedTrimmed2; + kDCAzBimodalityCoefficientBinnedTrimmed2; fgVarNamesMap["kDCAzBimodalityCoefficientBinnedTrimmed3"] = - kDCAzBimodalityCoefficientBinnedTrimmed3; + kDCAzBimodalityCoefficientBinnedTrimmed3; fgVarNamesMap["kDCAzMean"] = kDCAzMean; fgVarNamesMap["kDCAzMeanBinnedTrimmed1"] = kDCAzMeanBinnedTrimmed1; fgVarNamesMap["kDCAzMeanBinnedTrimmed2"] = kDCAzMeanBinnedTrimmed2; @@ -2605,7 +2620,7 @@ void VarManager::SetDefaultVarNames() { fgVarNamesMap["kIsLegFromAntiLambda"] = kIsLegFromAntiLambda; fgVarNamesMap["kIsLegFromOmega"] = kIsLegFromOmega; fgVarNamesMap["kIsProtonFromLambdaAndAntiLambda"] = - kIsProtonFromLambdaAndAntiLambda; + kIsProtonFromLambdaAndAntiLambda; fgVarNamesMap["kIsDalitzLeg"] = kIsDalitzLeg; fgVarNamesMap["kBarrelNAssocsInBunch"] = kBarrelNAssocsInBunch; fgVarNamesMap["kBarrelNAssocsOutOfBunch"] = kBarrelNAssocsOutOfBunch; @@ -2674,13 +2689,13 @@ void VarManager::SetDefaultVarNames() { fgVarNamesMap["kMCWeight_rec"] = kMCWeight_rec; fgVarNamesMap["kMCdeltaeta_rec"] = kMCdeltaeta_rec; fgVarNamesMap["kMCCosChi_randomPhi_trans_rec"] = - kMCCosChi_randomPhi_trans_rec; + kMCCosChi_randomPhi_trans_rec; fgVarNamesMap["kMCWeight_randomPhi_trans_rec"] = - kMCWeight_randomPhi_trans_rec; + kMCWeight_randomPhi_trans_rec; fgVarNamesMap["kMCCosChi_randomPhi_trans_gen"] = - kMCCosChi_randomPhi_trans_gen; + kMCCosChi_randomPhi_trans_gen; fgVarNamesMap["kMCWeight_randomPhi_trans_gen"] = - kMCWeight_randomPhi_trans_gen; + kMCWeight_randomPhi_trans_gen; fgVarNamesMap["kMCParticleWeight"] = kMCParticleWeight; fgVarNamesMap["kMCCosTheta"] = kMCCosTheta; fgVarNamesMap["kMCdeltaphi"] = kMCdeltaphi; @@ -2731,7 +2746,7 @@ void VarManager::SetDefaultVarNames() { fgVarNamesMap["kVertexingTauzProjected"] = kVertexingTauzProjected; fgVarNamesMap["kVertexingTauxyProjected"] = kVertexingTauxyProjected; fgVarNamesMap["kVertexingTauxyProjectedPoleJPsiMass"] = - kVertexingTauxyProjectedPoleJPsiMass; + kVertexingTauxyProjectedPoleJPsiMass; fgVarNamesMap["kVertexingTauxyProjectedNs"] = kVertexingTauxyProjectedNs; fgVarNamesMap["kVertexingTauxyzProjected"] = kVertexingTauxyzProjected; fgVarNamesMap["kMCVertexingTauzProjected"] = kVertexingTauzProjected; @@ -3075,11 +3090,12 @@ void VarManager::SetDefaultVarNames() { //__________________________________________________________________ bool VarManager::computeBarrelAssocTimeCompat( - float trackTime, float trackTimeRes, bool timeResIsRange, - bool isPVContributor, int64_t origBC, float origCollTime, - int origNumContrib, int64_t collBC, float collTime, float collTimeRes, - float nSigma, float timeMargin, int bcWindowForOneSigma, - int usePVAssociation, int maxPvContribLowMult, float *values) { + float trackTime, float trackTimeRes, bool timeResIsRange, + bool isPVContributor, int64_t origBC, float origCollTime, + int origNumContrib, int64_t collBC, float collTime, float collTimeRes, + float nSigma, float timeMargin, int bcWindowForOneSigma, + int usePVAssociation, int maxPvContribLowMult, float* values) +{ // // Mirrors the time-based association of // Common/Core/CollisionAssociation.h::runAssocWithTime for central barrel @@ -3104,10 +3120,10 @@ bool VarManager::computeBarrelAssocTimeCompat( // NOTE: the associator uses the raw trackTime here also for PV // contributors const int64_t bcOffsetMax = static_cast( - bcWindowForOneSigma * nSigma + timeMargin / BunchSpacingNS); + bcWindowForOneSigma * nSigma + timeMargin / BunchSpacingNS); const int64_t trackBCCache = - static_cast(static_cast(origBC) + - static_cast(trackTime) / BunchSpacingNS); + static_cast(static_cast(origBC) + + static_cast(trackTime) / BunchSpacingNS); if (std::abs(trackBCCache - collBC) > bcOffsetMax) { return false; } @@ -3122,7 +3138,7 @@ bool VarManager::computeBarrelAssocTimeCompat( float tTrack = trackTime; float tTrackRes = trackTimeRes; if (pvMode) { - tTrack = origCollTime; // time of the ORIGINAL collision + tTrack = origCollTime; // time of the ORIGINAL collision tTrackRes = static_cast(BunchSpacingNS); // 1 BC } @@ -3130,7 +3146,7 @@ bool VarManager::computeBarrelAssocTimeCompat( const int64_t bcOffset = origBC - collBC; const float collTimeRes2 = collTimeRes * collTimeRes; const float deltaTime = - tTrack - collTime + bcOffset * static_cast(BunchSpacingNS); + tTrack - collTime + bcOffset * static_cast(BunchSpacingNS); float threshold = 0.f; if (pvMode) { threshold = tTrackRes; // margin NOT applied @@ -3138,12 +3154,12 @@ bool VarManager::computeBarrelAssocTimeCompat( threshold = tTrackRes + nSigma * std::sqrt(collTimeRes2) + timeMargin; } else { threshold = - nSigma * std::sqrt(collTimeRes2 + tTrackRes * tTrackRes) + timeMargin; + nSigma * std::sqrt(collTimeRes2 + tTrackRes * tTrackRes) + timeMargin; } values[kTrackAssocDeltaTime] = deltaTime; values[kTrackAssocTimeThreshold] = threshold; values[kTrackAssocDeltaTimeNorm] = - (threshold > 0.f) ? std::abs(deltaTime) / threshold : 9999.f; + (threshold > 0.f) ? std::abs(deltaTime) / threshold : 9999.f; return std::abs(deltaTime) < threshold; } diff --git a/PWGDQ/Core/VarManager.h b/PWGDQ/Core/VarManager.h index f10a712f92e..7b9284fc178 100644 --- a/PWGDQ/Core/VarManager.h +++ b/PWGDQ/Core/VarManager.h @@ -83,13 +83,14 @@ #include using SMatrix55 = - ROOT::Math::SMatrix>; + ROOT::Math::SMatrix>; using SMatrix5 = ROOT::Math::SVector; using Vec3D = ROOT::Math::SVector; //_________________________________________________________________________ -class VarManager : public TObject { -public: +class VarManager : public TObject +{ + public: // map the information contained in the objects passed to the Fill functions enum ObjTypes { // NOTE: Elements containing "Reduced" in their name refer strictly to @@ -124,8 +125,8 @@ class VarManager : public TObject { TrackCov = BIT(1), TrackExtra = BIT(2), TrackPID = BIT( - 3), // used for basic PID properties (needed such that we can subscribe - // to a minimal set of PID tables): e,pi,K,p for TPC and TOF + 3), // used for basic PID properties (needed such that we can subscribe + // to a minimal set of PID tables): e,pi,K,p for TPC and TOF TrackPIDExtra = BIT(4), // extra PID information TrackDCA = BIT(5), TrackSelection = BIT(6), @@ -146,11 +147,11 @@ class VarManager : public TObject { TrackTPCPID = BIT(21), TrackMFT = BIT(22), ReducedTrackCollInfo = - BIT(23), // TODO: remove it once new reduced data tables are produced - // for dielectron with ReducedTracksBarrelInfo + BIT(23), // TODO: remove it once new reduced data tables are produced + // for dielectron with ReducedTracksBarrelInfo ReducedMuonCollInfo = - BIT(24), // TODO: remove it once new reduced data tables are produced - // for dielectron with ReducedTracksBarrelInfo + BIT(24), // TODO: remove it once new reduced data tables are produced + // for dielectron with ReducedTracksBarrelInfo MuonRealign = BIT(25), MuonCovRealign = BIT(26), MFTCov = BIT(27), @@ -203,9 +204,9 @@ class VarManager : public TObject { enum EMCalClusterFilteringBits { kEMCalClusterIsMatched = - 0, // cluster has at least one matched track (from EMCALMatchedTracks) + 0, // cluster has at least one matched track (from EMCALMatchedTracks) kEMCalClusterUserCutsBits = - 1 // first bit for the user EMCal cluster selections + 1 // first bit for the user EMCal cluster selections }; // NOLINTNEXTLINE(readability-enum-initial-value) @@ -235,24 +236,24 @@ class VarManager : public TObject { // be used to perform random selections at the collision // level) kIsPhysicsSelection, - kIsTVXTriggered, // Is trigger TVX - kIsNoTFBorder, // No time frame border - kIsNoITSROFBorder, // No ITS read out frame border (from event selection) + kIsTVXTriggered, // Is trigger TVX + kIsNoTFBorder, // No time frame border + kIsNoITSROFBorder, // No ITS read out frame border (from event selection) kIsNoITSROFBorderRecomputed, // No ITS read out frame border, computed here kIsNoSameBunch, // No collisions with same T0 BC - kIsGoodZvtxFT0vsPV, // No collisions w/ difference between z_ {PV, tracks} - // and z_{PV FT0A-C} - kIsVertexITSTPC, // At least one ITS-TPC track - kIsVertexTOFmatched, // At least one TOF-matched track - kIsSel8, // TVX in Run3 && No time frame border && No ITS read out frame - // border (from event selection) - kIsGoodITSLayer3, // number of inactive chips on ITS layer 3 is below - // maximum allowed value - kIsGoodITSLayer0123, // numbers of inactive chips on ITS layers 0-3 are - // below maximum allowed values - kIsGoodITSLayersAll, // numbers of inactive chips on all ITS layers are - // below maximum allowed values - kIsTriggerZNAZNC, // trigger ZNA && ZNC + kIsGoodZvtxFT0vsPV, // No collisions w/ difference between z_ {PV, tracks} + // and z_{PV FT0A-C} + kIsVertexITSTPC, // At least one ITS-TPC track + kIsVertexTOFmatched, // At least one TOF-matched track + kIsSel8, // TVX in Run3 && No time frame border && No ITS read out frame + // border (from event selection) + kIsGoodITSLayer3, // number of inactive chips on ITS layer 3 is below + // maximum allowed value + kIsGoodITSLayer0123, // numbers of inactive chips on ITS layers 0-3 are + // below maximum allowed values + kIsGoodITSLayersAll, // numbers of inactive chips on all ITS layers are + // below maximum allowed values + kIsTriggerZNAZNC, // trigger ZNA && ZNC kIsINT7, kIsEMC7, kIsINT7inMUON, @@ -383,10 +384,10 @@ class VarManager : public TObject { kQ1Y0B, kQ1X0C, kQ1Y0C, - kQ2X0A, // q-vector (e.g. from TPC) with x component (harmonic 2 and power - // 0), sub-event A - kQ2Y0A, // q-vector (e.g. from TPC) with y component (harmonic 2 and power - // 0), sub-event A + kQ2X0A, // q-vector (e.g. from TPC) with x component (harmonic 2 and power + // 0), sub-event A + kQ2Y0A, // q-vector (e.g. from TPC) with y component (harmonic 2 and power + // 0), sub-event A kQ2X0APOS, // q-vector (e.g. from TPC) with x component (harmonic 2 and // power 1), Pos. TPC kQ2Y0APOS, // q-vector (e.g. from TPC) with y component (harmonic 2 and @@ -536,15 +537,15 @@ class VarManager : public TObject { kV2ME_EP, kWV2ME_SP, kWV2ME_EP, - kTwoR2SP1, // Scalar product resolution of event1 for ME technique - kTwoR2SP2, // Scalar product resolution of event2 for ME technique - kTwoR2EP1, // Event plane resolution of event2 for ME technique - kTwoR2EP2, // Event plane resolution of event2 for ME technique - kDeltaPhiME_TPC, // Delta phi of VM to TPC event plane for ME technique - kDeltaPhiME_FT0C, // Delta phi of VM to FT0C event plane for ME technique - kDeltaPhiME_FT0A, // Delta phi of VM to FT0A event plane for ME technique - kCos2DeltaPhiME_TPC, // Cos(2*Delta phi) of VM to TPC event plane for ME - // technique + kTwoR2SP1, // Scalar product resolution of event1 for ME technique + kTwoR2SP2, // Scalar product resolution of event2 for ME technique + kTwoR2EP1, // Event plane resolution of event2 for ME technique + kTwoR2EP2, // Event plane resolution of event2 for ME technique + kDeltaPhiME_TPC, // Delta phi of VM to TPC event plane for ME technique + kDeltaPhiME_FT0C, // Delta phi of VM to FT0C event plane for ME technique + kDeltaPhiME_FT0A, // Delta phi of VM to FT0A event plane for ME technique + kCos2DeltaPhiME_TPC, // Cos(2*Delta phi) of VM to TPC event plane for ME + // technique kCos2DeltaPhiME_FT0C, // Cos(2*Delta phi) of VM to FT0C event plane for ME // technique kCos2DeltaPhiME_FT0A, // Cos(2*Delta phi) of VM to FT0A event plane for ME @@ -552,8 +553,8 @@ class VarManager : public TObject { kA2EPME_TPC, // A2 of VM to TPC event plane for ME technique kA2EPME_FT0C, // A2 of VM to FT0C event plane for ME technique kA2EPME_FT0A, // A2 of VM to FT0A event plane for ME technique - kNPairsPerEvent, // number of pairs per event in same-event or mixed-event - // pairing + kNPairsPerEvent, // number of pairs per event in same-event or mixed-event + // pairing kInteractionRate, // Variables for event mixing with cumulant @@ -619,8 +620,8 @@ class VarManager : public TObject { kTrackTime, kTrackTimeRes, kTrackTimeResRelative, - kTrackAssocDeltaTime, // track time - time of the associated collision (BC - // offset included), ns + kTrackAssocDeltaTime, // track time - time of the associated collision (BC + // offset included), ns kTrackAssocTimeThreshold, // time-compatibility threshold of the // track-to-collision associator (margin // included), ns @@ -689,10 +690,10 @@ 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, // This track has contributed to the collision vertex fit + // (see Framework/DataTypes) + kOrphanTrack, // Track has no association with any collision vertex (see + // Framework/DataTypes) kIsAmbiguous, kIsLegFromGamma, kIsLegFromK0S, @@ -702,7 +703,7 @@ class VarManager : public TObject { kIsProtonFromLambdaAndAntiLambda, kIsDalitzLeg, // Up to 8 dalitz selections kBarrelNAssocsInBunch = - kIsDalitzLeg + 8, // number of in bunch collision associations + 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 @@ -718,11 +719,11 @@ class VarManager : public TObject { // 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 + 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 kNBarrelTrackVariables, // Muon track variables @@ -1272,7 +1273,10 @@ class VarManager : public TObject { kDplusToPiKPi }; - enum EventFilters { kDoubleGap = 0, kSingleGapA, kSingleGapC, kITSUPCMode }; + enum EventFilters { kDoubleGap = 0, + kSingleGapA, + kSingleGapC, + kITSUPCMode }; enum MuonExtrapolation { // Index used to set different options for Muon propagation @@ -1285,17 +1289,19 @@ class VarManager : public TObject { static TString fgVariableNames[kNVars]; // variable names static TString fgVariableUnits[kNVars]; // variable units static std::map - fgVarNamesMap; // key: variables short name, value: order in the Variables - // enum + fgVarNamesMap; // key: variables short name, value: order in the Variables + // enum static void SetDefaultVarNames(); - static void SetUseVariable(int var) { + static void SetUseVariable(int var) + { if (var >= 0 && var < kNVars) { fgUsedVars[var] = kTRUE; } SetVariableDependencies(); } - static void SetUseVars(const bool *usedVars) { + static void SetUseVars(const bool* usedVars) + { for (int i = 0; i < kNVars; ++i) { if (usedVars[i]) { fgUsedVars[i] = true; // overwrite only the variables that are being @@ -1305,12 +1311,14 @@ class VarManager : public TObject { } SetVariableDependencies(); } - static void SetUseVars(const std::vector &usedVars) { - for (auto const &var : usedVars) { + static void SetUseVars(const std::vector& usedVars) + { + for (auto const& var : usedVars) { fgUsedVars[var] = true; } } - static bool GetUsedVar(int var) { + static bool GetUsedVar(int var) + { if (var >= 0 && var < kNVars) { return fgUsedVars[var]; } @@ -1318,13 +1326,14 @@ class VarManager : public TObject { } // Flag to set PV recalculation via KF - static void SetPVrecalculationKF(const bool pvRecalKF) { + static void SetPVrecalculationKF(const bool pvRecalKF) + { fgPVrecalKF = pvRecalKF; } // Setup the collision system - static void SetCollisionSystem(const TString &system, float energy); - static void SetCollisionSystem(o2::parameters::GRPLHCIFData *grplhcif); + static void SetCollisionSystem(const TString& system, float energy); + static void SetCollisionSystem(o2::parameters::GRPLHCIFData* grplhcif); static void SetMagneticField(float magField) { fgMagField = magField; } @@ -1334,13 +1343,15 @@ class VarManager : public TObject { static float GetMatchingPlane() { return fgzMatching; } // Set z shift for forward tracks - static void SetZShift(float z) { + static void SetZShift(float z) + { fgzShiftFwd = z; fgUseTopBottomShift = false; } // Set x, y and z shifts for forward tracks - static void Set3DShift(float x, float y, float z) { + static void Set3DShift(float x, float y, float z) + { fgxShiftFwd = x; fgyShiftFwd = y; fgzShiftFwd = z; @@ -1351,7 +1362,8 @@ class VarManager : public TObject { // tracks Top shifts are stored in fgx/y/zShiftFwd; bottom shifts in // fgx/y/zShiftFwdBottom static void SetTopBottom3DShift(float xTop, float yTop, float zTop, - float xBottom, float yBottom, float zBottom) { + float xBottom, float yBottom, float zBottom) + { fgxShiftFwd = xTop; fgyShiftFwd = yTop; fgzShiftFwd = zTop; @@ -1361,8 +1373,9 @@ class VarManager : public TObject { fgUseTopBottomShift = true; } - static void GetFwdShiftForY(float y, float &xShift, float &yShift, - float &zShift) { + static void GetFwdShiftForY(float y, float& xShift, float& yShift, + float& zShift) + { if (fgUseTopBottomShift && y < 0.f) { xShift = fgxShiftFwdBottom; yShift = fgyShiftFwdBottom; @@ -1375,7 +1388,8 @@ class VarManager : public TObject { } // Setup the 2 prong KFParticle - static void SetupTwoProngKFParticle(float magField) { + static void SetupTwoProngKFParticle(float magField) + { KFParticle::SetField(magField); fgUsedKF = true; } @@ -1386,7 +1400,8 @@ class VarManager : public TObject { static void SetupTwoProngDCAFitter(float magField, bool propagateToPCA, float maxR, float maxDZIni, float minParamChange, - float minRelChi2Change, bool useAbsDCA) { + float minRelChi2Change, bool useAbsDCA) + { fgFitterTwoProngBarrel.setBz(magField); fgFitterTwoProngBarrel.setPropagateToPCA(propagateToPCA); fgFitterTwoProngBarrel.setMaxR(maxR); @@ -1401,7 +1416,8 @@ class VarManager : public TObject { static void SetupTwoProngFwdDCAFitter(float magField, bool propagateToPCA, float maxR, float minParamChange, float minRelChi2Change, - bool useAbsDCA) { + bool useAbsDCA) + { fgFitterTwoProngFwd.setBz(magField); fgFitterTwoProngFwd.setPropagateToPCA(propagateToPCA); fgFitterTwoProngFwd.setMaxR(maxR); @@ -1411,18 +1427,21 @@ class VarManager : public TObject { fgUsedKF = false; } // Use MatLayerCylSet to correct MCS in fwdtrack propagation - static void SetupMatLUTFwdDCAFitter(o2::base::MatLayerCylSet *m) { + static void SetupMatLUTFwdDCAFitter(o2::base::MatLayerCylSet* m) + { fgFitterTwoProngFwd.setTGeoMat(false); fgFitterTwoProngFwd.setMatLUT(m); } // Use GeometryManager to correct MCS in fwdtrack propagation static void SetupTGeoFwdDCAFitter() { fgFitterTwoProngFwd.setTGeoMat(true); } // No material budget in fwdtrack propagation - static void SetupFwdDCAFitterNoCorr() { + static void SetupFwdDCAFitterNoCorr() + { fgFitterTwoProngFwd.setTGeoMat(false); } // Setup the 3 prong KFParticle - static void SetupThreeProngKFParticle(float magField) { + static void SetupThreeProngKFParticle(float magField) + { KFParticle::SetField(magField); fgUsedKF = true; } @@ -1431,7 +1450,8 @@ class VarManager : public TObject { static void SetupThreeProngDCAFitter(float magField, bool propagateToPCA, float maxR, float /*maxDZIni*/, float minParamChange, - float minRelChi2Change, bool useAbsDCA) { + float minRelChi2Change, bool useAbsDCA) + { fgFitterThreeProngBarrel.setBz(magField); fgFitterThreeProngBarrel.setPropagateToPCA(propagateToPCA); fgFitterThreeProngBarrel.setMaxR(maxR); @@ -1442,7 +1462,8 @@ class VarManager : public TObject { } // Setup the 4 prong KFParticle - static void SetupFourProngKFParticle(float magField) { + static void SetupFourProngKFParticle(float magField) + { KFParticle::SetField(magField); fgUsedKF = true; } @@ -1451,7 +1472,8 @@ class VarManager : public TObject { static void SetupFourProngDCAFitter(float magField, bool propagateToPCA, float maxR, float /*maxDZIni*/, float minParamChange, - float minRelChi2Change, bool useAbsDCA) { + float minRelChi2Change, bool useAbsDCA) + { fgFitterFourProngBarrel.setBz(magField); fgFitterFourProngBarrel.setPropagateToPCA(propagateToPCA); fgFitterFourProngBarrel.setMaxR(maxR); @@ -1461,75 +1483,77 @@ class VarManager : public TObject { fgUsedKF = false; } - static auto getEventPlane(int harm, float qnxa, float qnya) { + 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); }; static float getDeltaPsiInRange(float psi1, float psi2, - unsigned int harmonic) { + unsigned int harmonic) + { return RecoDecay::constrainAngle( - psi1 - psi2, -o2::constants::math::PI / harmonic, harmonic); + psi1 - psi2, -o2::constants::math::PI / harmonic, harmonic); } template static o2::dataformats::VertexBase - RecalculatePrimaryVertex(T const &track0, T const &track1, - const T1 &collision); + RecalculatePrimaryVertex(T const& track0, T const& track1, + const T1& collision); static std::tuple - BimodalityCoefficientUnbinned(const std::vector &data); + BimodalityCoefficientUnbinned(const std::vector& data); static std::tuple - BimodalityCoefficientAndNPeaks(const std::vector &data, float binWidth, - int trim = 0, float min = -15.0, - float max = 15.0); + BimodalityCoefficientAndNPeaks(const std::vector& data, float binWidth, + int trim = 0, float min = -15.0, + float max = 15.0); template - static o2::track::TrackParCovFwd FwdToTrackPar(const T &track, const C &cov); + static o2::track::TrackParCovFwd FwdToTrackPar(const T& track, const C& cov); template static o2::dataformats::GlobalFwdTrack - PropagateMuon(const T &muon, const C &collision, int endPoint = kToVertex); + PropagateMuon(const T& muon, const C& collision, int endPoint = kToVertex); template - static o2::track::TrackParCovFwd PropagateFwd(const T &track, const C &cov, + static o2::track::TrackParCovFwd PropagateFwd(const T& track, const C& cov, float z); template - static void FillPropagateMuon(const T &muon, const C &collision, - float *values = nullptr); + static void FillPropagateMuon(const T& muon, const C& collision, + float* values = nullptr); template - static void FillBC(T const &bc, float *values = nullptr); + static void FillBC(T const& bc, float* values = nullptr); template - static void FillEvent(T const &event, float *values = nullptr); + static void FillEvent(T const& event, float* values = nullptr); template - static void FillEventTracks(T const &tracks, float *values = nullptr); + static void FillEventTracks(T const& tracks, float* values = nullptr); template - static void FillTimeFrame(T const &tfTable, float *values = nullptr); + static void FillTimeFrame(T const& tfTable, float* values = nullptr); template - static void FillEventFlowResoFactor(T const &hs_sp, T const &hs_ep, - float *values = nullptr); + static void FillEventFlowResoFactor(T const& hs_sp, T const& hs_ep, + float* values = nullptr); template - static void FillTwoEvents(T const &ev1, T const &ev2, - float *values = nullptr); + static void FillTwoEvents(T const& ev1, T const& ev2, + float* values = nullptr); template - static void FillTwoMixEvents(T1 const &ev1, T1 const &ev2, T2 const &tracks1, - T2 const &tracks2, float *values = nullptr); + static void FillTwoMixEvents(T1 const& ev1, T1 const& ev2, T2 const& tracks1, + T2 const& tracks2, float* values = nullptr); template - static void FillTwoMixEventsFlowResoFactor(T const &hs_sp, T const &hs_ep, - float *values = nullptr); + static void FillTwoMixEventsFlowResoFactor(T const& hs_sp, T const& hs_ep, + float* values = nullptr); template - static void FillTwoMixEventsCumulants(T const &h_v22ev1, T const &h_v24ev1, - T const &h_v22ev2, T const &h_v24ev2, - T1 const &t1, T2 const &t2, - float *values = nullptr); + static void FillTwoMixEventsCumulants(T const& h_v22ev1, T const& h_v24ev1, + T const& h_v22ev2, T const& h_v24ev2, + T1 const& t1, T2 const& t2, + float* values = nullptr); template - static void FillTrack(T const &track, float *values = nullptr); + static void FillTrack(T const& track, float* values = nullptr); template - static void FillPhoton(T const &track, float *values = nullptr); + static void FillPhoton(T const& track, float* values = nullptr); template - static void FillTrackEMCal(T const &cluster, float trackP = -1.0f, + static void FillTrackEMCal(T const& cluster, float trackP = -1.0f, float deltaEta = -999.0f, float deltaPhi = -999.0f, - float *values = nullptr); + float* values = nullptr); template - static void FillTrackCollision(T const &track, C const &collision, - float *values = nullptr); + 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 // Common/Core/CollisionAssociation.h::runAssocWithTime. Fills @@ -1540,196 +1564,197 @@ class VarManager : public TObject { // used at skimming time (timeMargin and nSigma may be smaller in order to // tighten the association at analysis level). static bool computeBarrelAssocTimeCompat( - float trackTime, float trackTimeRes, bool timeResIsRange, - bool isPVContributor, int64_t origBC, float origCollTime, - int origNumContrib, int64_t collBC, float collTime, float collTimeRes, - float nSigma, float timeMargin, int bcWindowForOneSigma, - int usePVAssociation, int maxPvContribLowMult, float *values = nullptr); + float trackTime, float trackTimeRes, bool timeResIsRange, + bool isPVContributor, int64_t origBC, float origCollTime, + int origNumContrib, int64_t collBC, float collTime, float collTimeRes, + float nSigma, float timeMargin, int bcWindowForOneSigma, + int usePVAssociation, int maxPvContribLowMult, float* values = nullptr); // Same as above for DQ skimmed tables: track = // ReducedTracks+ReducedTracksBarrel, collision/origCollision = // ReducedEvents+ReducedEventsExtended template static bool isBarrelAssocTimeCompatible( - T const &track, C const &collision, C const &origCollision, float nSigma, - float timeMargin, int bcWindowForOneSigma, int usePVAssociation, - int maxPvContribLowMult, float *values = nullptr); + T const& track, C const& collision, C const& origCollision, float nSigma, + float timeMargin, int bcWindowForOneSigma, int usePVAssociation, + int maxPvContribLowMult, float* values = nullptr); template - static void FillTrackCollisionMC(T1 const &track, T2 const &MotherTrack, - C const &collision, float *values = nullptr); + 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); + 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); + static void FillTrackCollisionMatCorr(T const& track, C const& collision, + M const& materialCorr, + P const& propagator, + float* values = nullptr); template - static void FillTrackMC(const U &mcStack, T const &track, - float *values = nullptr); + static void FillTrackMC(const U& mcStack, T const& track, + float* values = nullptr); template static void - FillEnergyCorrelatorsMC(T const &track, T1 const &t1, float *values = nullptr, - float Translow = 1. / 3, float Transhigh = 2. / 3, - float Accweight = 1.0f); + FillEnergyCorrelatorsMC(T const& track, T1 const& t1, float* values = nullptr, + float Translow = 1. / 3, float Transhigh = 2. / 3, + float Accweight = 1.0f); template - static void FillPairPropagateMuon(T1 const &muon1, T2 const &muon2, - const C &collision, - float *values = nullptr); + static void FillPairPropagateMuon(T1 const& muon1, T2 const& muon2, + const C& collision, + float* values = nullptr); template - static void FillGlobalMuonRefit(T1 const &muontrack, T2 const &mfttrack, - const C &collision, float *values = nullptr); + static void FillGlobalMuonRefit(T1 const& muontrack, T2 const& mfttrack, + const C& collision, float* values = nullptr); template - static void FillGlobalMuonRefitCov(T1 const &muontrack, T2 const &mfttrack, - const C &collision, C2 const &mftcov, - float *values = nullptr); + static void FillGlobalMuonRefitCov(T1 const& muontrack, T2 const& mfttrack, + const C& collision, C2 const& mftcov, + float* values = nullptr); template - static void FillPair(T1 const &t1, T2 const &t2, float *values = nullptr); + static void FillPair(T1 const& t1, T2 const& t2, float* values = nullptr); template - static void FillPairRotation(T1 const &t1, T2 const &t2, int rotation, - float *values = nullptr); + static void FillPairRotation(T1 const& t1, T2 const& t2, int rotation, + float* values = nullptr); template - static void FillPairRotation_ME(T const &t1, T const &t2, int rotation, - float *values = nullptr); + static void FillPairRotation_ME(T const& t1, T const& t2, int rotation, + float* values = nullptr); template - static void FillPairCollision(C const &collision, T1 const &t1, T2 const &t2, - float *values = nullptr); + static void FillPairCollision(C const& collision, T1 const& t1, T2 const& t2, + float* values = nullptr); template - static void FillPairCollisionMatCorr(C const &collision, T1 const &t1, - T2 const &t2, M const &materialCorr, - P const &propagator, - float *values = nullptr); + static void FillPairCollisionMatCorr(C const& collision, T1 const& t1, + T2 const& t2, M const& materialCorr, + P const& propagator, + float* values = nullptr); template static void - FillTriple(T1 const &t1, T2 const &t2, T3 const &t3, float *values = nullptr, - PairCandidateType pairType = kTripleCandidateToEEPhoton); + FillTriple(T1 const& t1, T2 const& t2, T3 const& t3, float* values = nullptr, + PairCandidateType pairType = kTripleCandidateToEEPhoton); template - static void FillPairME(T1 const &t1, T2 const &t2, float *values = nullptr); + static void FillPairME(T1 const& t1, T2 const& t2, float* values = nullptr); template - static void FillPairMEAcrossTFs(T const &t1, T const &t2, - float *values = nullptr); + static void FillPairMEAcrossTFs(T const& t1, T const& t2, + float* values = nullptr); template - static void FillPairMC(T1 const &t1, T2 const &t2, float *values = nullptr); + static void FillPairMC(T1 const& t1, T2 const& t2, float* values = nullptr); template - static void FillTripleMC(T1 const &t1, T2 const &t2, T3 const &t3, - float *values = nullptr); + static void FillTripleMC(T1 const& t1, T2 const& t2, T3 const& t3, + float* values = nullptr); template - static void FillQuadMC(T1 const &dilepton, T2 const &track1, T2 const &track2, - float *values = nullptr); + static void FillQuadMC(T1 const& dilepton, T2 const& track1, T2 const& track2, + float* values = nullptr); template - static void FillPairVertexing(C const &collision, T const &t1, T const &t2, - float *values = nullptr); + static void FillPairVertexing(C const& collision, T const& t1, T const& t2, + float* values = nullptr); template static void FillPairVertexingRecomputePV( - C const & /*collision*/, T const &t1, T const &t2, - const o2::dataformats::VertexBase &pvRefitted, float *values = nullptr); + C const& /*collision*/, T const& t1, T const& t2, + const o2::dataformats::VertexBase& pvRefitted, float* values = nullptr); template - static void FillTripletVertexing(C const &collision, T const &t1, T const &t2, - T const &t3, PairCandidateType tripletType, - float *values = nullptr); + static void FillTripletVertexing(C const& collision, T const& t1, T const& t2, + T const& t3, PairCandidateType tripletType, + float* values = nullptr); template - static void FillDileptonTrackVertexing(C const &collision, T1 const &lepton1, - T1 const &lepton2, T1 const &track, - float *values); + 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, + static void FillDileptonHadron(T1 const& dilepton, T2 const& hadron, + float* values = nullptr, float hadronMass = 0.0f); 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); + 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 static void FillEnergyCorrelatorsUnfoldingTriple( - T1 const &lepton1, T2 const &lepton2, T3 const &hadron, T4 const &track, - T5 const &t1, float *values = nullptr, bool applyFitMass = false, - float Effweight_rec = 1.f, float Accweight_gen = 1.f, - float Translow = 1. / 3, float Transhigh = 2. / 3); + T1 const& lepton1, T2 const& lepton2, T3 const& hadron, T4 const& track, + T5 const& t1, float* values = nullptr, bool applyFitMass = false, + float Effweight_rec = 1.f, float Accweight_gen = 1.f, + float Translow = 1. / 3, float Transhigh = 2. / 3); template - static void FillDileptonPhoton(T1 const &dilepton, T2 const &photon, - float *values = nullptr); + static void FillDileptonPhoton(T1 const& dilepton, T2 const& photon, + float* values = nullptr); template - static void FillHadron(T const &hadron, float *values = nullptr, + static void FillHadron(T const& hadron, float* values = nullptr, float hadronMass = 0.0f); template - static void FillSingleDileptonCharmHadron(Cand const &candidate, H hfHelper, - T &bdtScoreCharmHad, - float *values = nullptr); + static void FillSingleDileptonCharmHadron(Cand const& candidate, H hfHelper, + T& bdtScoreCharmHad, + float* values = nullptr); template - static void FillDileptonCharmHadron(DQ const &dilepton, HF const &charmHadron, - H hfHelper, T &bdtScoreCharmHad, - float *values = nullptr); + static void FillDileptonCharmHadron(DQ const& dilepton, HF const& charmHadron, + H hfHelper, T& bdtScoreCharmHad, + float* values = nullptr); template static void FillQVectorFromGFW( - C const &collision, A const &compA11, A const &compB11, A const &compC11, - A const &compA21, A const &compB21, A const &compC21, A const &compA31, - A const &compB31, A const &compC31, A const &compA41, A const &compB41, - A const &compC41, A const &compA23, A const &compA42, float S10A = 1.0, - float S10B = 1.0, float S10C = 1.0, float S11A = 1.0, float S11B = 1.0, - float S11C = 1.0, float S12A = 1.0, float S13A = 1.0, float S14A = 1.0, - float S21A = 1.0, float S22A = 1.0, float S31A = 1.0, float S41A = 1.0, - float *values = nullptr); + C const& collision, A const& compA11, A const& compB11, A const& compC11, + A const& compA21, A const& compB21, A const& compC21, A const& compA31, + A const& compB31, A const& compC31, A const& compA41, A const& compB41, + A const& compC41, A const& compA23, A const& compA42, float S10A = 1.0, + float S10B = 1.0, float S10C = 1.0, float S11A = 1.0, float S11B = 1.0, + float S11C = 1.0, float S12A = 1.0, float S13A = 1.0, float S14A = 1.0, + float S21A = 1.0, float S22A = 1.0, float S31A = 1.0, float S41A = 1.0, + float* values = nullptr); template - static void FillQVectorFromCentralFW(C const &collision, - float *values = nullptr); + static void FillQVectorFromCentralFW(C const& collision, + float* values = nullptr); template - static void FillNewQVectorFromCentralFW(C const &collision, - float *values = nullptr); + static void FillNewQVectorFromCentralFW(C const& collision, + float* values = nullptr); template - static void FillSpectatorPlane(C const &collision, float *values = nullptr); + static void FillSpectatorPlane(C const& collision, float* values = nullptr); template - static void FillPairVn(T1 const &t1, T2 const &t2, float *values = nullptr); + static void FillPairVn(T1 const& t1, T2 const& t2, float* values = nullptr); template - static void FillDileptonTrackTrack(T1 const &dilepton, T2 const &hadron1, - T3 const &hadron2, - float *values = nullptr); + static void FillDileptonTrackTrack(T1 const& dilepton, T2 const& hadron1, + T3 const& hadron2, + float* values = nullptr); template static void - FillDileptonTrackTrackVertexing(C const &collision, T1 const &lepton1, - T1 const &lepton2, T1 const &track1, - T1 const &track2, float *values); + FillDileptonTrackTrackVertexing(C const& collision, T1 const& lepton1, + T1 const& lepton2, T1 const& track1, + T1 const& track2, float* values); template - static void FillZDC(const T &zdc, float *values = nullptr); + static void FillZDC(const T& zdc, float* values = nullptr); template - static void FillBdtScore(const T &bdtScore, float *values = nullptr); + static void FillBdtScore(const T& bdtScore, float* values = nullptr); template - static void FillFIT(const T1 &bc, const T2 &bcs, const T3 &ft0s, - const T4 &fv0as, const T5 &fdds, float *values = nullptr); + static void FillFIT(const T1& bc, const T2& bcs, const T3& ft0s, + const T4& fv0as, const T5& fdds, float* values = nullptr); template - static void FillPairAlice3(T1 const &t1, T2 const &t2, - float *values = nullptr); + static void FillPairAlice3(T1 const& t1, T2 const& t2, + float* values = nullptr); template - static void FillEventAlice3(T const &event, float *values = nullptr); + static void FillEventAlice3(T const& event, float* values = nullptr); template - static void FillTrackAlice3(T const &track, float *values = nullptr); + static void FillTrackAlice3(T const& track, float* values = nullptr); template - static void FillResolutions(M const &mcTrack, T const &track, - float *values = nullptr); + static void FillResolutions(M const& mcTrack, T const& track, + float* values = nullptr); template - static void FillPairVertexingAlice3(C const &collision, T const &t1, - T const &t2, bool propToSV = false, - float *values = nullptr); + static void FillPairVertexingAlice3(C const& collision, T const& t1, + T const& t2, bool propToSV = false, + float* values = nullptr); template static void FillTripletVertexingALICE3( - C const &collision, T const &t1, T const &t2, T const &t3, - VarManager::PairCandidateType tripletType, float *values = nullptr); + C const& collision, T const& t1, T const& t2, T const& t3, + VarManager::PairCandidateType tripletType, float* values = nullptr); - static void SetCalibrationObject(CalibObjects calib, TObject *obj) { + static void SetCalibrationObject(CalibObjects calib, TObject* obj) + { fgCalibs[calib] = obj; // Check whether all the needed objects for TPC postcalibration are // available @@ -1753,7 +1778,8 @@ class VarManager : public TObject { } } - static void SetCalibrationType(int type, bool useInterpolation = true) { + static void SetCalibrationType(int type, bool useInterpolation = true) + { if (type < 0 || type > 2) { LOG(fatal) << "Invalid calibration type. Must be 0, 1, or 2."; } @@ -1762,29 +1788,33 @@ class VarManager : public TObject { } static double ComputePIDcalibration(int species, double nSigmaValue); - static void SetEfficiencyObject(int type, TObject *obj); - static void FillEfficiency(float *values = nullptr); - static void SetPhiMap(TObject *h1, TObject *h2, bool option); + static void SetEfficiencyObject(int type, TObject* obj); + static void FillEfficiency(float* values = nullptr); + static void SetPhiMap(TObject* h1, TObject* h2, bool option); static double SampleRotationPhi(double pT, double eta, int charge); - static TObject *GetCalibrationObject(CalibObjects calib) { + static TObject* GetCalibrationObject(CalibObjects calib) + { auto obj = fgCalibs.find(calib); if (obj == fgCalibs.end()) { return nullptr; } return obj->second; } - static void SetTPCInterSectorBoundary(float boundarySize) { + static void SetTPCInterSectorBoundary(float boundarySize) + { fgTPCInterSectorBoundary = boundarySize; } static void SetITSROFBorderselection(int bias, int length, int marginLow, - int marginHigh) { + int marginHigh) + { fgITSROFbias = bias; fgITSROFlength = length; fgITSROFBorderMarginLow = marginLow; fgITSROFBorderMarginHigh = marginHigh; } - static void SetSORandEOR(uint64_t sor, uint64_t eor) { + static void SetSORandEOR(uint64_t sor, uint64_t eor) + { fgSOR = sor; fgEOR = eor; } @@ -1793,11 +1823,11 @@ class VarManager : public TObject { ~VarManager() override; static float - fgValues[kNVars]; // array holding all variables computed during analysis + fgValues[kNVars]; // array holding all variables computed during analysis static void ResetValues(int startValue = 0, int endValue = kNVars, - float *values = nullptr); + float* values = nullptr); -private: + private: static bool fgUsedVars[kNVars]; // holds flags for when the corresponding // variable is needed (e.g., in the histogram // manager, in cuts, mixing handler, etc.) @@ -1819,32 +1849,33 @@ class VarManager : public TObject { static float fgMassofCollidingParticle; // mass of the colliding particle static float fgTPCInterSectorBoundary; // TPC inter-sector border size at the // TPC outer radius, in cm - static int fgITSROFbias; // ITS ROF bias (from ALPIDE parameters) - static int fgITSROFlength; // ITS ROF length (from ALPIDE parameters) - static int fgITSROFBorderMarginLow; // ITS ROF border low margin - static int fgITSROFBorderMarginHigh; // ITS ROF border high margin - static uint64_t fgSOR; // Timestamp for start of run - static uint64_t fgEOR; // Timestamp for end of run + static int fgITSROFbias; // ITS ROF bias (from ALPIDE parameters) + static int fgITSROFlength; // ITS ROF length (from ALPIDE parameters) + static int fgITSROFBorderMarginLow; // ITS ROF border low margin + static int fgITSROFBorderMarginHigh; // ITS ROF border high margin + static uint64_t fgSOR; // Timestamp for start of run + static uint64_t fgEOR; // Timestamp for end of run static ROOT::Math::PxPyPzEVector - fgBeamA; // beam from A-side 4-momentum vector + fgBeamA; // beam from A-side 4-momentum vector static ROOT::Math::PxPyPzEVector - fgBeamC; // beam from C-side 4-momentum vector + fgBeamC; // beam from C-side 4-momentum vector // static void FillEventDerived(float* values = nullptr); - static void FillTrackDerived(float *values = nullptr); + static void FillTrackDerived(float* values = nullptr); template - static auto getRotatedCovMatrixXX(const T &matrix, U phi, V theta); - template static KFPTrack createKFPTrackFromTrack(const T &track); + static auto getRotatedCovMatrixXX(const T& matrix, U phi, V theta); template - static KFPTrack createKFPFwdTrackFromFwdTrack(const T &muon); + static KFPTrack createKFPTrackFromTrack(const T& track); template - static KFPVertex createKFPVertexFromCollision(const T &collision); - static float calculateCosPA(const KFParticle &kfp, const KFParticle &PV); + static KFPTrack createKFPFwdTrackFromFwdTrack(const T& muon); + template + static KFPVertex createKFPVertexFromCollision(const T& collision); + static float calculateCosPA(const KFParticle& kfp, const KFParticle& PV); template - static float calculatePhiV(const T1 &t1, const T2 &t2); + static float calculatePhiV(const T1& t1, const T2& t2); template - static float LorentzTransformJpsihadroncosChi(const TString &Option, - const T1 &v1, const T2 &v2); + static float LorentzTransformJpsihadroncosChi(const TString& Option, + const T1& v1, const T2& v2); static o2::vertexing::DCAFitterN<2> fgFitterTwoProngBarrel; static o2::vertexing::DCAFitterN<3> fgFitterThreeProngBarrel; @@ -1853,38 +1884,39 @@ class VarManager : public TObject { static o2::vertexing::FwdDCAFitterN<3> fgFitterThreeProngFwd; static o2::globaltracking::MatchGlobalFwd mMatching; - static std::map - fgCalibs; // map of calibration histograms + static std::map + fgCalibs; // map of calibration histograms static std::array - fgRunTPCPostCalibration; // 0-electron, 1-pion, 2-kaon, 3-proton + 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 + 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 + static TObject* fgEfficiencyHist; // histogram for efficiency correction - static TObject *fgPosiPhiMap; // phi map to correct track rotation - static TObject *fgNegaPhiMap; + static TObject* fgPosiPhiMap; // phi map to correct track rotation + static TObject* fgNegaPhiMap; static bool fgUsePhiCorrection; - VarManager &operator=(const VarManager &c); - VarManager(const VarManager &c); + VarManager& operator=(const VarManager& c); + VarManager(const VarManager& c); }; template -o2::track::TrackParCovFwd VarManager::FwdToTrackPar(const T &track, - const C &cov) { +o2::track::TrackParCovFwd VarManager::FwdToTrackPar(const T& track, + const C& cov) +{ double chi2 = track.chi2(); SMatrix5 tpars(track.x(), track.y(), track.phi(), track.tgl(), track.signed1Pt()); - std::vector v1{cov.cXX(), cov.cXY(), cov.cYY(), - cov.cPhiX(), cov.cPhiY(), cov.cPhiPhi(), - cov.cTglX(), cov.cTglY(), cov.cTglPhi(), - cov.cTglTgl(), cov.c1PtX(), cov.c1PtY(), + std::vector v1{cov.cXX(), cov.cXY(), cov.cYY(), + cov.cPhiX(), cov.cPhiY(), cov.cPhiPhi(), + cov.cTglX(), cov.cTglY(), cov.cTglPhi(), + cov.cTglTgl(), cov.c1PtX(), cov.c1PtY(), cov.c1PtPhi(), cov.c1PtTgl(), cov.c1Pt21Pt2()}; SMatrix55 tcovs(v1.begin(), v1.end()); o2::track::TrackParCovFwd trackparCov{track.z(), tpars, tcovs, chi2}; @@ -1892,7 +1924,8 @@ o2::track::TrackParCovFwd VarManager::FwdToTrackPar(const T &track, } template -auto VarManager::getRotatedCovMatrixXX(const T &matrix, U phi, V theta) { +auto VarManager::getRotatedCovMatrixXX(const T& matrix, U phi, V theta) +{ // auto cp = std::cos(phi); auto sp = std::sin(phi); @@ -1907,16 +1940,17 @@ auto VarManager::getRotatedCovMatrixXX(const T &matrix, U phi, V theta) { } template -KFPTrack VarManager::createKFPTrackFromTrack(const T &track) { +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()}; + 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)}; + track.x(), track.alpha(), std::move(trackpars), std::move(trackcovs)}; std::array trkpos_par{}; std::array trkmom_par{}; std::array trk_cov{}; @@ -1937,13 +1971,14 @@ KFPTrack VarManager::createKFPTrackFromTrack(const T &track) { } template -KFPTrack VarManager::createKFPFwdTrackFromFwdTrack(const T &muon) { +KFPTrack VarManager::createKFPFwdTrackFromFwdTrack(const T& muon) +{ o2::track::TrackParCovFwd trackparCov = FwdToTrackPar(muon, muon); std::array trk_cov{}; trackparCov.getCovXYZPxPyPzGlo(trk_cov); - std::array trkpar_KF = {trackparCov.getX(), trackparCov.getY(), - trackparCov.getZ(), trackparCov.getPx(), + std::array trkpar_KF = {trackparCov.getX(), trackparCov.getY(), + trackparCov.getZ(), trackparCov.getPx(), trackparCov.getPy(), trackparCov.getPz()}; std::array trkcov_KF = trk_cov; KFPTrack kfpTrack; @@ -1956,7 +1991,8 @@ KFPTrack VarManager::createKFPFwdTrackFromFwdTrack(const T &muon) { } template -KFPVertex VarManager::createKFPVertexFromCollision(const T &collision) { +KFPVertex VarManager::createKFPVertexFromCollision(const T& collision) +{ KFPVertex kfpVertex; kfpVertex.SetXYZ(collision.posX(), collision.posY(), collision.posZ()); kfpVertex.SetCovarianceMatrix(collision.covXX(), collision.covXY(), @@ -1970,8 +2006,9 @@ KFPVertex VarManager::createKFPVertexFromCollision(const T &collision) { template o2::dataformats::VertexBase -VarManager::RecalculatePrimaryVertex(T const &track0, T const &track1, - const T1 &collision) { + VarManager::RecalculatePrimaryVertex(T const& track0, T const& track1, + const T1& collision) +{ KFParticle trk0KF; KFPTrack kfpTrack0 = createKFPTrackFromTrack(track0); trk0KF = KFParticle(kfpTrack0, -11 * track0.sign()); @@ -1991,7 +2028,7 @@ VarManager::RecalculatePrimaryVertex(T const &track0, T const &track1, kVtx.Covariance(4) = collision.covYZ(); kVtx.Covariance(5) = collision.covZZ(); kVtx.Chi2() = - collision.chi2(); // FIX THIS! to be added in AliReducedEventInfo + collision.chi2(); // FIX THIS! to be added in AliReducedEventInfo kVtx.NDF() = 2 * collision.multNTracksPV() - 3; // KFVertex kfpVertex(kVtx); // kfpVertex.Initialize(); @@ -2012,24 +2049,25 @@ VarManager::RecalculatePrimaryVertex(T const &track0, T const &track1, } template -o2::dataformats::GlobalFwdTrack VarManager::PropagateMuon(const T &muon, - const C &collision, - const int endPoint) { +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; GetFwdShiftForY(muon.y(), xShift, yShift, zShift); o2::track::TrackParCovFwd fwdtrack = - o2::aod::fwdtrackutils::getTrackParCovFwd3DShift(muon, xShift, yShift, - zShift, muon); + o2::aod::fwdtrackutils::getTrackParCovFwd3DShift(muon, xShift, yShift, + zShift, muon); o2::dataformats::GlobalFwdTrack propmuon; if (static_cast(muon.trackType()) > 2) { auto mchTrack = mMatching.FwdtoMCH(fwdtrack); if (endPoint == kToVertex) { o2::mch::TrackExtrap::extrapToVertex( - mchTrack, collision.posX(), collision.posY(), collision.posZ(), - collision.covXX(), collision.covYY()); + mchTrack, collision.posX(), collision.posY(), collision.posZ(), + collision.covXX(), collision.covYY()); } if (endPoint == kToDCA) { o2::mch::TrackExtrap::extrapToVertexWithoutBranson(mchTrack, @@ -2047,26 +2085,28 @@ o2::dataformats::GlobalFwdTrack VarManager::PropagateMuon(const T &muon, } else if (static_cast(muon.trackType()) < 2) { std::array dcaInfOrig{999.f, 999.f, 999.f}; fwdtrack.propagateToDCAhelix( - fgMagField, {collision.posX(), collision.posY(), collision.posZ()}, - dcaInfOrig); + fgMagField, {collision.posX(), collision.posY(), collision.posZ()}, + dcaInfOrig); propmuon = fwdtrack; } return propmuon; } template -o2::track::TrackParCovFwd VarManager::PropagateFwd(const T &track, const C &cov, - float z) { +o2::track::TrackParCovFwd VarManager::PropagateFwd(const T& track, const C& cov, + float z) +{ o2::track::TrackParCovFwd fwdtrack = FwdToTrackPar(track, cov); fwdtrack.propagateToZhelix(z, fgMagField); return fwdtrack; } template -void VarManager::FillPropagateMuon(const T &muon, const C &collision, - float *values) { +void VarManager::FillPropagateMuon(const T& muon, const C& collision, + float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } if constexpr ((fillMap & ReducedMuonCov) > 0) { @@ -2089,7 +2129,7 @@ void VarManager::FillPropagateMuon(const T &muon, const C &collision, values[kTgl] = propmuon.getTgl(); values[kPhi] = propmuon.getPhi(); - const SMatrix55 &cov = propmuon.getCovariances(); + const SMatrix55& cov = propmuon.getCovariances(); values[kMuonCXX] = cov(0, 0); values[kMuonCXY] = cov(1, 0); values[kMuonCYY] = cov(1, 1); @@ -2109,10 +2149,11 @@ void VarManager::FillPropagateMuon(const T &muon, const C &collision, } template -void VarManager::FillGlobalMuonRefit(T1 const &muontrack, T2 const &mfttrack, - const C &collision, float *values) { +void VarManager::FillGlobalMuonRefit(T1 const& muontrack, T2 const& mfttrack, + const C& collision, float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } if constexpr ((fillMap & MuonCov) > 0 || (fillMap & ReducedMuonCov) > 0) { float xShift = 0.f; @@ -2120,20 +2161,20 @@ void VarManager::FillGlobalMuonRefit(T1 const &muontrack, T2 const &mfttrack, float zShift = 0.f; GetFwdShiftForY(mfttrack.y(), xShift, yShift, zShift); o2::dataformats::GlobalFwdTrack propmuon = - PropagateMuon(muontrack, collision, kToVertex); + PropagateMuon(muontrack, collision, kToVertex); double px = - propmuon.getP() * - std::sin(o2::constants::math::PIHalf - std::atan(mfttrack.tgl())) * - std::cos(mfttrack.phi()); + propmuon.getP() * + std::sin(o2::constants::math::PIHalf - std::atan(mfttrack.tgl())) * + std::cos(mfttrack.phi()); double py = - propmuon.getP() * - std::sin(o2::constants::math::PIHalf - std::atan(mfttrack.tgl())) * - std::sin(mfttrack.phi()); + propmuon.getP() * + std::sin(o2::constants::math::PIHalf - std::atan(mfttrack.tgl())) * + std::sin(mfttrack.phi()); double pz = propmuon.getP() * std::cos(o2::constants::math::PIHalf - std::atan(mfttrack.tgl())); double pt = std::sqrt(std::pow(px, 2) + std::pow(py, 2)); auto mftprop = o2::aod::fwdtrackutils::getTrackParCovFwd3DShift( - mfttrack, xShift, yShift, zShift); + mfttrack, xShift, yShift, zShift); mftprop.setInvQPt(static_cast(muontrack.sign()) / pt); values[kX] = mftprop.getX(); values[kY] = mftprop.getY(); @@ -2147,8 +2188,8 @@ void VarManager::FillGlobalMuonRefit(T1 const &muontrack, T2 const &mfttrack, // Helix DCA of the refitted global track w.r.t. the associated collision std::array dca{999., 999., 999.}; mftprop.propagateToDCAhelix( - fgMagField, {collision.posX(), collision.posY(), collision.posZ()}, - dca); + fgMagField, {collision.posX(), collision.posY(), collision.posZ()}, + dca); values[kMuonDCAx] = static_cast(dca[0]); values[kMuonDCAy] = static_cast(dca[1]); } @@ -2156,11 +2197,12 @@ void VarManager::FillGlobalMuonRefit(T1 const &muontrack, T2 const &mfttrack, template -void VarManager::FillGlobalMuonRefitCov(T1 const &muontrack, T2 const &mfttrack, - const C &collision, C2 const &mftcov, - float *values) { +void VarManager::FillGlobalMuonRefitCov(T1 const& muontrack, T2 const& mfttrack, + const C& collision, C2 const& mftcov, + float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } if constexpr ((MuonfillMap & MuonCov) > 0) { if constexpr ((MFTfillMap & MFTCov) > 0) { @@ -2169,12 +2211,12 @@ void VarManager::FillGlobalMuonRefitCov(T1 const &muontrack, T2 const &mfttrack, float zShift = 0.f; GetFwdShiftForY(mfttrack.y(), xShift, yShift, zShift); o2::dataformats::GlobalFwdTrack propmuon = - PropagateMuon(muontrack, collision, kToVertex); + PropagateMuon(muontrack, collision, kToVertex); auto mft = o2::aod::fwdtrackutils::getTrackParCovFwd3DShift( - mfttrack, xShift, yShift, zShift, mftcov); + mfttrack, xShift, yShift, zShift, mftcov); o2::dataformats::GlobalFwdTrack globalRefit = - o2::aod::fwdtrackutils::refitGlobalMuonCov(propmuon, mft); + o2::aod::fwdtrackutils::refitGlobalMuonCov(propmuon, mft); values[kX] = globalRefit.getX(); values[kY] = globalRefit.getY(); values[kZ] = globalRefit.getZ(); @@ -2188,8 +2230,8 @@ void VarManager::FillGlobalMuonRefitCov(T1 const &muontrack, T2 const &mfttrack, // collision std::array dca{999., 999., 999.}; globalRefit.propagateToDCAhelix( - fgMagField, {collision.posX(), collision.posY(), collision.posZ()}, - dca); + fgMagField, {collision.posX(), collision.posY(), collision.posZ()}, + dca); values[kMuonDCAx] = static_cast(dca[0]); values[kMuonDCAy] = static_cast(dca[1]); } @@ -2197,9 +2239,10 @@ void VarManager::FillGlobalMuonRefitCov(T1 const &muontrack, T2 const &mfttrack, } template -void VarManager::FillTimeFrame(T const &tf, float *values) { +void VarManager::FillTimeFrame(T const& tf, float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } if constexpr (T::template contains()) { values[kTFNBCs] = tf.size(); @@ -2221,9 +2264,11 @@ void VarManager::FillTimeFrame(T const &tf, float *values) { } } -template void VarManager::FillBC(T const &bc, float *values) { +template +void VarManager::FillBC(T const& bc, float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } values[kRunNo] = bc.runNumber(); values[kBC] = bc.globalBC(); @@ -2233,9 +2278,10 @@ template void VarManager::FillBC(T const &bc, float *values) { } template -void VarManager::FillEvent(T const &event, float *values) { +void VarManager::FillEvent(T const& event, float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } if constexpr ((fillMap & CollisionTimestamp) > 0) { @@ -2258,7 +2304,7 @@ void VarManager::FillEvent(T const &event, float *values) { if (fgUsedVars[kIsNoITSROFBorder]) { values[kIsNoITSROFBorder] = - event.selection_bit(o2::aod::evsel::kNoITSROFrameBorder); + event.selection_bit(o2::aod::evsel::kNoITSROFrameBorder); } if (fgUsedVars[kTrackOccupancyInTimeRange]) { values[kTrackOccupancyInTimeRange] = event.trackOccupancyInTimeRange(); @@ -2268,54 +2314,54 @@ void VarManager::FillEvent(T const &event, float *values) { } if (fgUsedVars[kNoCollInTimeRangeStandard]) { values[kNoCollInTimeRangeStandard] = - event.selection_bit(o2::aod::evsel::kNoCollInTimeRangeStandard); + event.selection_bit(o2::aod::evsel::kNoCollInTimeRangeStandard); } if (fgUsedVars[kIsTVXTriggered]) { values[kIsTVXTriggered] = - event.selection_bit(o2::aod::evsel::kIsTriggerTVX); + event.selection_bit(o2::aod::evsel::kIsTriggerTVX); } if (fgUsedVars[kIsNoTFBorder]) { values[kIsNoTFBorder] = - event.selection_bit(o2::aod::evsel::kNoTimeFrameBorder); + event.selection_bit(o2::aod::evsel::kNoTimeFrameBorder); } if (fgUsedVars[kIsTriggerZNAZNC]) { values[kIsTriggerZNAZNC] = - static_cast(event.selection_bit(o2::aod::evsel::kIsBBZNA) && - event.selection_bit(o2::aod::evsel::kIsBBZNC)); + static_cast(event.selection_bit(o2::aod::evsel::kIsBBZNA) && + event.selection_bit(o2::aod::evsel::kIsBBZNC)); } if (fgUsedVars[kIsNoSameBunch]) { values[kIsNoSameBunch] = - event.selection_bit(o2::aod::evsel::kNoSameBunchPileup); + event.selection_bit(o2::aod::evsel::kNoSameBunchPileup); } if (fgUsedVars[kIsGoodZvtxFT0vsPV]) { values[kIsGoodZvtxFT0vsPV] = - event.selection_bit(o2::aod::evsel::kIsGoodZvtxFT0vsPV); + event.selection_bit(o2::aod::evsel::kIsGoodZvtxFT0vsPV); } if (fgUsedVars[kIsVertexITSTPC]) { values[kIsVertexITSTPC] = - event.selection_bit(o2::aod::evsel::kIsVertexITSTPC); + event.selection_bit(o2::aod::evsel::kIsVertexITSTPC); } if (fgUsedVars[kIsVertexTOFmatched]) { values[kIsVertexTOFmatched] = - event.selection_bit(o2::aod::evsel::kIsVertexTOFmatched); + event.selection_bit(o2::aod::evsel::kIsVertexTOFmatched); } if (fgUsedVars[kIsSel8]) { values[kIsSel8] = static_cast( - event.selection_bit(o2::aod::evsel::kIsTriggerTVX) && - event.selection_bit(o2::aod::evsel::kNoITSROFrameBorder) && - event.selection_bit(o2::aod::evsel::kNoTimeFrameBorder)); + event.selection_bit(o2::aod::evsel::kIsTriggerTVX) && + event.selection_bit(o2::aod::evsel::kNoITSROFrameBorder) && + event.selection_bit(o2::aod::evsel::kNoTimeFrameBorder)); } if (fgUsedVars[kIsGoodITSLayer3]) { values[kIsGoodITSLayer3] = - event.selection_bit(o2::aod::evsel::kIsGoodITSLayer3); + event.selection_bit(o2::aod::evsel::kIsGoodITSLayer3); } if (fgUsedVars[kIsGoodITSLayer0123]) { values[kIsGoodITSLayer0123] = - event.selection_bit(o2::aod::evsel::kIsGoodITSLayer0123); + event.selection_bit(o2::aod::evsel::kIsGoodITSLayer0123); } if (fgUsedVars[kIsGoodITSLayersAll]) { values[kIsGoodITSLayersAll] = - event.selection_bit(o2::aod::evsel::kIsGoodITSLayersAll); + event.selection_bit(o2::aod::evsel::kIsGoodITSLayersAll); } if (fgUsedVars[kIsINT7]) { values[kIsINT7] = static_cast(event.alias_bit(kINT7) > 0); @@ -2325,23 +2371,23 @@ void VarManager::FillEvent(T const &event, float *values) { } if (fgUsedVars[kIsINT7inMUON]) { values[kIsINT7inMUON] = - static_cast(event.alias_bit(kINT7inMUON) > 0); + static_cast(event.alias_bit(kINT7inMUON) > 0); } if (fgUsedVars[kIsMuonSingleLowPt7]) { values[kIsMuonSingleLowPt7] = - static_cast(event.alias_bit(kMuonSingleLowPt7) > 0); + static_cast(event.alias_bit(kMuonSingleLowPt7) > 0); } if (fgUsedVars[kIsMuonSingleHighPt7]) { values[kIsMuonSingleHighPt7] = - static_cast(event.alias_bit(kMuonSingleHighPt7) > 0); + static_cast(event.alias_bit(kMuonSingleHighPt7) > 0); } if (fgUsedVars[kIsMuonUnlikeLowPt7]) { values[kIsMuonUnlikeLowPt7] = - static_cast(event.alias_bit(kMuonUnlikeLowPt7) > 0); + static_cast(event.alias_bit(kMuonUnlikeLowPt7) > 0); } if (fgUsedVars[kIsMuonLikeLowPt7]) { values[kIsMuonLikeLowPt7] = - static_cast(event.alias_bit(kMuonLikeLowPt7) > 0); + static_cast(event.alias_bit(kMuonLikeLowPt7) > 0); } if (fgUsedVars[kIsCUP8]) { values[kIsCUP8] = static_cast(event.alias_bit(kCUP8) > 0); @@ -2441,11 +2487,11 @@ void VarManager::FillEvent(T const &event, float *values) { fgUsedVars[kIsSingleGapA] || fgUsedVars[kIsSingleGapC] || fgUsedVars[kIsNoGap]) { values[kIsDoubleGap] = - static_cast(event.tag_bit(56 + kDoubleGap) > 0); + static_cast(event.tag_bit(56 + kDoubleGap) > 0); values[kIsSingleGapA] = - static_cast(event.tag_bit(56 + kSingleGapA) > 0); + static_cast(event.tag_bit(56 + kSingleGapA) > 0); values[kIsSingleGapC] = - static_cast(event.tag_bit(56 + kSingleGapC) > 0); + 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 && @@ -2453,7 +2499,7 @@ void VarManager::FillEvent(T const &event, float *values) { } if (fgUsedVars[kIsITSUPCMode]) { values[kIsITSUPCMode] = - static_cast(event.tag_bit(56 + kITSUPCMode) > 0); + static_cast(event.tag_bit(56 + kITSUPCMode) > 0); } values[kCollisionTime] = event.collisionTime(); values[kCollisionTimeRes] = event.collisionTimeRes(); @@ -2464,72 +2510,72 @@ void VarManager::FillEvent(T const &event, float *values) { values[kBCOrbit] = event.globalBC() % o2::constants::lhc::LHCMaxBunches; values[kTimestamp] = event.timestamp(); values[kTimeFromSOR] = - (fgSOR > 0 ? (event.timestamp() - fgSOR) / 60000. : -1.0); + (fgSOR > 0 ? (event.timestamp() - fgSOR) / 60000. : -1.0); values[kCentVZERO] = event.centRun2V0M(); values[kCentFT0C] = event.centFT0C(); if (fgUsedVars[kIsNoITSROFBorderRecomputed]) { uint16_t bcInITSROF = - (event.globalBC() + 3564 - fgITSROFbias) % fgITSROFlength; + (event.globalBC() + 3564 - fgITSROFbias) % fgITSROFlength; values[kIsNoITSROFBorderRecomputed] = - bcInITSROF > fgITSROFBorderMarginLow && - bcInITSROF < fgITSROFlength - fgITSROFBorderMarginHigh - ? 1.0 - : 0.0; + bcInITSROF > fgITSROFBorderMarginLow && + bcInITSROF < fgITSROFlength - fgITSROFBorderMarginHigh + ? 1.0 + : 0.0; } if (fgUsedVars[kIsNoITSROFBorder]) { values[kIsNoITSROFBorder] = static_cast( - event.selection_bit(o2::aod::evsel::kNoITSROFrameBorder) > 0); + event.selection_bit(o2::aod::evsel::kNoITSROFrameBorder) > 0); } if (fgUsedVars[kIsTVXTriggered]) { values[kIsTVXTriggered] = static_cast( - event.selection_bit(o2::aod::evsel::kIsTriggerTVX) > 0); + event.selection_bit(o2::aod::evsel::kIsTriggerTVX) > 0); } if (fgUsedVars[kIsNoTFBorder]) { values[kIsNoTFBorder] = static_cast( - event.selection_bit(o2::aod::evsel::kNoTimeFrameBorder) > 0); + event.selection_bit(o2::aod::evsel::kNoTimeFrameBorder) > 0); } if (fgUsedVars[kNoCollInTimeRangeStandard]) { values[kNoCollInTimeRangeStandard] = static_cast( - event.selection_bit(o2::aod::evsel::kNoCollInTimeRangeStandard) > 0); + event.selection_bit(o2::aod::evsel::kNoCollInTimeRangeStandard) > 0); } if (fgUsedVars[kIsNoSameBunch]) { values[kIsNoSameBunch] = static_cast( - event.selection_bit(o2::aod::evsel::kNoSameBunchPileup) > 0); + event.selection_bit(o2::aod::evsel::kNoSameBunchPileup) > 0); } if (fgUsedVars[kIsTriggerZNAZNC]) { values[kIsTriggerZNAZNC] = - static_cast(event.selection_bit(o2::aod::evsel::kIsBBZNA) && - event.selection_bit(o2::aod::evsel::kIsBBZNC)); + static_cast(event.selection_bit(o2::aod::evsel::kIsBBZNA) && + event.selection_bit(o2::aod::evsel::kIsBBZNC)); } if (fgUsedVars[kIsGoodZvtxFT0vsPV]) { values[kIsGoodZvtxFT0vsPV] = static_cast( - event.selection_bit(o2::aod::evsel::kIsGoodZvtxFT0vsPV) > 0); + event.selection_bit(o2::aod::evsel::kIsGoodZvtxFT0vsPV) > 0); } if (fgUsedVars[kIsVertexITSTPC]) { values[kIsVertexITSTPC] = static_cast( - event.selection_bit(o2::aod::evsel::kIsVertexITSTPC) > 0); + event.selection_bit(o2::aod::evsel::kIsVertexITSTPC) > 0); } if (fgUsedVars[kIsVertexTOFmatched]) { values[kIsVertexTOFmatched] = static_cast( - event.selection_bit(o2::aod::evsel::kIsVertexTOFmatched) > 0); + event.selection_bit(o2::aod::evsel::kIsVertexTOFmatched) > 0); } if (fgUsedVars[kIsSel8]) { values[kIsSel8] = static_cast( - event.selection_bit(o2::aod::evsel::kIsTriggerTVX) && - event.selection_bit(o2::aod::evsel::kNoTimeFrameBorder) && - event.selection_bit(o2::aod::evsel::kNoITSROFrameBorder)); + event.selection_bit(o2::aod::evsel::kIsTriggerTVX) && + event.selection_bit(o2::aod::evsel::kNoTimeFrameBorder) && + event.selection_bit(o2::aod::evsel::kNoITSROFrameBorder)); } if (fgUsedVars[kIsGoodITSLayer3]) { values[kIsGoodITSLayer3] = - event.selection_bit(o2::aod::evsel::kIsGoodITSLayer3); + event.selection_bit(o2::aod::evsel::kIsGoodITSLayer3); } if (fgUsedVars[kIsGoodITSLayer0123]) { values[kIsGoodITSLayer0123] = - event.selection_bit(o2::aod::evsel::kIsGoodITSLayer0123); + event.selection_bit(o2::aod::evsel::kIsGoodITSLayer0123); } if (fgUsedVars[kIsGoodITSLayersAll]) { values[kIsGoodITSLayersAll] = - event.selection_bit(o2::aod::evsel::kIsGoodITSLayersAll); + event.selection_bit(o2::aod::evsel::kIsGoodITSLayersAll); } if (fgUsedVars[kIsINT7]) { values[kIsINT7] = static_cast(event.alias_bit(kINT7) > 0); @@ -2539,23 +2585,23 @@ void VarManager::FillEvent(T const &event, float *values) { } if (fgUsedVars[kIsINT7inMUON]) { values[kIsINT7inMUON] = - static_cast(event.alias_bit(kINT7inMUON) > 0); + static_cast(event.alias_bit(kINT7inMUON) > 0); } if (fgUsedVars[kIsMuonSingleLowPt7]) { values[kIsMuonSingleLowPt7] = - static_cast(event.alias_bit(kMuonSingleLowPt7) > 0); + static_cast(event.alias_bit(kMuonSingleLowPt7) > 0); } if (fgUsedVars[kIsMuonSingleHighPt7]) { values[kIsMuonSingleHighPt7] = - static_cast(event.alias_bit(kMuonSingleHighPt7) > 0); + static_cast(event.alias_bit(kMuonSingleHighPt7) > 0); } if (fgUsedVars[kIsMuonUnlikeLowPt7]) { values[kIsMuonUnlikeLowPt7] = - static_cast(event.alias_bit(kMuonUnlikeLowPt7) > 0); + static_cast(event.alias_bit(kMuonUnlikeLowPt7) > 0); } if (fgUsedVars[kIsMuonLikeLowPt7]) { values[kIsMuonLikeLowPt7] = - static_cast(event.alias_bit(kMuonLikeLowPt7) > 0); + static_cast(event.alias_bit(kMuonLikeLowPt7) > 0); } if (fgUsedVars[kIsCUP8]) { values[kIsCUP8] = static_cast(event.alias_bit(kCUP8) > 0); @@ -2635,48 +2681,48 @@ void VarManager::FillEvent(T const &event, float *values) { values[kCORR2REFetagap] = event.corr2refetagap(); values[kM11REFetagap] = event.m11refetagap(); values[kCORR2REF] = - 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]) - ? 0 - : event.corr2ref(); + 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]) + ? 0 + : event.corr2ref(); values[kCORR4REF] = - 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]) - ? 0 - : event.corr4ref(); + 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]) + ? 0 + : event.corr4ref(); values[kCORR2CORR4REF] = std::isnan(values[kM11M1111REF]) || - std::isinf(values[kM11M1111REF]) || - std::isnan(values[kCORR2CORR4REF]) || - std::isinf(values[kCORR2CORR4REF]) - ? 0 - : event.corr2ref() * event.corr4ref(); + std::isinf(values[kM11M1111REF]) || + std::isnan(values[kCORR2CORR4REF]) || + std::isinf(values[kCORR2CORR4REF]) + ? 0 + : event.corr2ref() * event.corr4ref(); values[kM11REF] = - !(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])) - ? event.m11ref() - : 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])) + ? event.m11ref() + : 0; values[kM1111REF] = - !(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])) - ? event.m1111ref() - : 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])) + ? event.m1111ref() + : 0; values[kM11M1111REF] = !(std::isnan(values[kM11M1111REF]) || std::isinf(values[kM11M1111REF]) || std::isnan(values[kCORR2CORR4REF]) || std::isinf(values[kCORR2CORR4REF])) - ? event.m11ref() * event.m1111ref() - : 0; + ? event.m11ref() * event.m1111ref() + : 0; } } @@ -2736,9 +2782,9 @@ void VarManager::FillEvent(T const &event, float *values) { EventPlaneHelper epHelper; float Psi2A = epHelper.GetEventPlane(values[kQ2X0A], values[kQ2Y0A], 2); float Psi2APOS = - epHelper.GetEventPlane(values[kQ2X0APOS], values[kQ2Y0APOS], 2); + epHelper.GetEventPlane(values[kQ2X0APOS], values[kQ2Y0APOS], 2); float Psi2ANEG = - epHelper.GetEventPlane(values[kQ2X0ANEG], values[kQ2Y0ANEG], 2); + epHelper.GetEventPlane(values[kQ2X0ANEG], values[kQ2Y0ANEG], 2); float Psi2B = epHelper.GetEventPlane(values[kQ2X0B], values[kQ2Y0B], 2); float Psi2C = epHelper.GetEventPlane(values[kQ2X0C], values[kQ2Y0C], 2); @@ -2749,100 +2795,100 @@ void VarManager::FillEvent(T const &event, float *values) { values[kPsi2C] = Psi2C; float R2SP_AB = - (values[kQ2X0A] * values[kQ2X0B] + values[kQ2Y0A] * values[kQ2Y0B]); + (values[kQ2X0A] * values[kQ2X0B] + values[kQ2Y0A] * values[kQ2Y0B]); float R2SP_APOSB = (values[kQ2X0APOS] * values[kQ2X0B] + values[kQ2Y0APOS] * values[kQ2Y0B]); float R2SP_ANEGB = (values[kQ2X0ANEG] * values[kQ2X0B] + values[kQ2Y0ANEG] * values[kQ2Y0B]); float R2SP_AC = - (values[kQ2X0A] * values[kQ2X0C] + values[kQ2Y0A] * values[kQ2Y0C]); + (values[kQ2X0A] * values[kQ2X0C] + values[kQ2Y0A] * values[kQ2Y0C]); float R2SP_APOSC = (values[kQ2X0APOS] * values[kQ2X0C] + values[kQ2Y0APOS] * values[kQ2Y0C]); float R2SP_ANEGC = (values[kQ2X0ANEG] * values[kQ2X0C] + values[kQ2Y0ANEG] * values[kQ2Y0C]); float R2SP_BC = - (values[kQ2X0B] * values[kQ2X0C] + values[kQ2Y0B] * values[kQ2Y0C]); + (values[kQ2X0B] * values[kQ2X0C] + values[kQ2Y0B] * values[kQ2Y0C]); float R2SP_AB_Im = - (values[kQ2Y0A] * values[kQ2X0B] - values[kQ2X0A] * values[kQ2Y0B]); + (values[kQ2Y0A] * values[kQ2X0B] - values[kQ2X0A] * values[kQ2Y0B]); float R2SP_AC_Im = - (values[kQ2Y0A] * values[kQ2X0C] - values[kQ2X0A] * values[kQ2Y0C]); + (values[kQ2Y0A] * values[kQ2X0C] - values[kQ2X0A] * values[kQ2Y0C]); float R2SP_BC_Im = - (values[kQ2Y0B] * values[kQ2X0C] - values[kQ2X0B] * values[kQ2Y0C]); + (values[kQ2Y0B] * values[kQ2X0C] - values[kQ2X0B] * values[kQ2Y0C]); values[kR2SP_AB] = - std::isnan(R2SP_AB) || std::isinf(R2SP_AB) ? 0. : R2SP_AB; + std::isnan(R2SP_AB) || std::isinf(R2SP_AB) ? 0. : R2SP_AB; values[kR2SP_FT0CTPCPOS] = - std::isnan(R2SP_APOSB) || std::isinf(R2SP_APOSB) ? 0. : R2SP_APOSB; + std::isnan(R2SP_APOSB) || std::isinf(R2SP_APOSB) ? 0. : R2SP_APOSB; values[kR2SP_FT0CTPCNEG] = - std::isnan(R2SP_ANEGB) || std::isinf(R2SP_ANEGB) ? 0. : R2SP_ANEGB; + std::isnan(R2SP_ANEGB) || std::isinf(R2SP_ANEGB) ? 0. : R2SP_ANEGB; values[kWR2SP_AB] = std::isnan(R2SP_AB) || std::isinf(R2SP_AB) ? 0. : 1.0; values[kR2SP_AC] = - std::isnan(R2SP_AC) || std::isinf(R2SP_AC) ? 0. : R2SP_AC; + std::isnan(R2SP_AC) || std::isinf(R2SP_AC) ? 0. : R2SP_AC; values[kR2SP_FT0ATPCPOS] = - std::isnan(R2SP_APOSC) || std::isinf(R2SP_APOSC) ? 0. : R2SP_APOSC; + std::isnan(R2SP_APOSC) || std::isinf(R2SP_APOSC) ? 0. : R2SP_APOSC; values[kR2SP_FT0ATPCNEG] = - std::isnan(R2SP_ANEGC) || std::isinf(R2SP_ANEGC) ? 0. : R2SP_ANEGC; + std::isnan(R2SP_ANEGC) || std::isinf(R2SP_ANEGC) ? 0. : R2SP_ANEGC; values[kWR2SP_AC] = std::isnan(R2SP_AC) || std::isinf(R2SP_AC) ? 0. : 1.0; values[kR2SP_BC] = - std::isnan(R2SP_BC) || std::isinf(R2SP_BC) ? 0. : R2SP_BC; + std::isnan(R2SP_BC) || std::isinf(R2SP_BC) ? 0. : R2SP_BC; values[kWR2SP_BC] = std::isnan(R2SP_BC) || std::isinf(R2SP_BC) ? 0. : 1.0; values[kR2SP_AB_Im] = - std::isnan(R2SP_AB_Im) || std::isinf(R2SP_AB_Im) ? 0. : R2SP_AB_Im; + std::isnan(R2SP_AB_Im) || std::isinf(R2SP_AB_Im) ? 0. : R2SP_AB_Im; values[kWR2SP_AB_Im] = - std::isnan(R2SP_AB_Im) || std::isinf(R2SP_AB_Im) ? 0. : 1.0; + std::isnan(R2SP_AB_Im) || std::isinf(R2SP_AB_Im) ? 0. : 1.0; values[kR2SP_AC_Im] = - std::isnan(R2SP_AC_Im) || std::isinf(R2SP_AC_Im) ? 0. : R2SP_AC_Im; + std::isnan(R2SP_AC_Im) || std::isinf(R2SP_AC_Im) ? 0. : R2SP_AC_Im; values[kWR2SP_AC_Im] = - std::isnan(R2SP_AC_Im) || std::isinf(R2SP_AC_Im) ? 0. : 1.0; + std::isnan(R2SP_AC_Im) || std::isinf(R2SP_AC_Im) ? 0. : 1.0; values[kR2SP_BC_Im] = - std::isnan(R2SP_BC_Im) || std::isinf(R2SP_BC_Im) ? 0. : R2SP_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; + 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)); + 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)); + 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)); + 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)); + 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)); + 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)); + std::isnan(Psi2C) || std::isinf(Psi2C) + ? 0. + : TMath::Sin(2 * (Psi2B - Psi2C)); values[kR2EP_AB] = - std::isnan(R2EP_AB) || std::isinf(R2EP_AB) ? 0. : R2EP_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; + std::isnan(R2EP_AC) || std::isinf(R2EP_AC) ? 0. : R2EP_AC; values[kWR2EP_AC] = std::isnan(R2EP_AC) || std::isinf(R2EP_AC) ? 0. : 1.0; values[kR2EP_BC] = - std::isnan(R2EP_BC) || std::isinf(R2EP_BC) ? 0. : R2EP_BC; + std::isnan(R2EP_BC) || std::isinf(R2EP_BC) ? 0. : R2EP_BC; values[kWR2EP_BC] = std::isnan(R2EP_BC) || std::isinf(R2EP_BC) ? 0. : 1.0; values[kR2EP_AB_Im] = - std::isnan(R2EP_AB_Im) || std::isinf(R2EP_AB_Im) ? 0. : R2EP_AB_Im; + std::isnan(R2EP_AB_Im) || std::isinf(R2EP_AB_Im) ? 0. : R2EP_AB_Im; values[kWR2EP_AB_Im] = - std::isnan(R2EP_AB_Im) || std::isinf(R2EP_AB_Im) ? 0. : 1.0; + std::isnan(R2EP_AB_Im) || std::isinf(R2EP_AB_Im) ? 0. : 1.0; values[kR2EP_AC_Im] = - std::isnan(R2EP_AC_Im) || std::isinf(R2EP_AC_Im) ? 0. : R2EP_AC_Im; + std::isnan(R2EP_AC_Im) || std::isinf(R2EP_AC_Im) ? 0. : R2EP_AC_Im; values[kWR2EP_AC_Im] = - std::isnan(R2EP_AC_Im) || std::isinf(R2EP_AC_Im) ? 0. : 1.0; + std::isnan(R2EP_AC_Im) || std::isinf(R2EP_AC_Im) ? 0. : 1.0; values[kR2EP_BC_Im] = - std::isnan(R2EP_BC_Im) || std::isinf(R2EP_BC_Im) ? 0. : R2EP_BC_Im; + std::isnan(R2EP_BC_Im) || std::isinf(R2EP_BC_Im) ? 0. : R2EP_BC_Im; values[kWR2EP_BC_Im] = - std::isnan(R2EP_BC_Im) || std::isinf(R2EP_BC_Im) ? 0. : 1.0; + std::isnan(R2EP_BC_Im) || std::isinf(R2EP_BC_Im) ? 0. : 1.0; } if constexpr ((fillMap & CollisionQvectCentr) > 0) { @@ -2883,9 +2929,9 @@ void VarManager::FillEvent(T const &event, float *values) { EventPlaneHelper epHelper; float Psi2A = epHelper.GetEventPlane(values[kQ2X0A], values[kQ2Y0A], 2); float Psi2APOS = - epHelper.GetEventPlane(values[kQ2X0APOS], values[kQ2Y0APOS], 2); + epHelper.GetEventPlane(values[kQ2X0APOS], values[kQ2Y0APOS], 2); float Psi2ANEG = - epHelper.GetEventPlane(values[kQ2X0ANEG], values[kQ2Y0ANEG], 2); + epHelper.GetEventPlane(values[kQ2X0ANEG], values[kQ2Y0ANEG], 2); float Psi2B = epHelper.GetEventPlane(values[kQ2X0B], values[kQ2Y0B], 2); float Psi2C = epHelper.GetEventPlane(values[kQ2X0C], values[kQ2Y0C], 2); @@ -2896,100 +2942,100 @@ void VarManager::FillEvent(T const &event, float *values) { values[kPsi2C] = Psi2C; float R2SP_AB = - (values[kQ2X0A] * values[kQ2X0B] + values[kQ2Y0A] * values[kQ2Y0B]); + (values[kQ2X0A] * values[kQ2X0B] + values[kQ2Y0A] * values[kQ2Y0B]); float R2SP_APOSB = (values[kQ2X0APOS] * values[kQ2X0B] + values[kQ2Y0APOS] * values[kQ2Y0B]); float R2SP_ANEGB = (values[kQ2X0ANEG] * values[kQ2X0B] + values[kQ2Y0ANEG] * values[kQ2Y0B]); float R2SP_AC = - (values[kQ2X0A] * values[kQ2X0C] + values[kQ2Y0A] * values[kQ2Y0C]); + (values[kQ2X0A] * values[kQ2X0C] + values[kQ2Y0A] * values[kQ2Y0C]); float R2SP_APOSC = (values[kQ2X0APOS] * values[kQ2X0C] + values[kQ2Y0APOS] * values[kQ2Y0C]); float R2SP_ANEGC = (values[kQ2X0ANEG] * values[kQ2X0C] + values[kQ2Y0ANEG] * values[kQ2Y0C]); float R2SP_BC = - (values[kQ2X0B] * values[kQ2X0C] + values[kQ2Y0B] * values[kQ2Y0C]); + (values[kQ2X0B] * values[kQ2X0C] + values[kQ2Y0B] * values[kQ2Y0C]); float R2SP_AB_Im = - (values[kQ2Y0A] * values[kQ2X0B] - values[kQ2X0A] * values[kQ2Y0B]); + (values[kQ2Y0A] * values[kQ2X0B] - values[kQ2X0A] * values[kQ2Y0B]); float R2SP_AC_Im = - (values[kQ2Y0A] * values[kQ2X0C] - values[kQ2X0A] * values[kQ2Y0C]); + (values[kQ2Y0A] * values[kQ2X0C] - values[kQ2X0A] * values[kQ2Y0C]); float R2SP_BC_Im = - (values[kQ2Y0B] * values[kQ2X0C] - values[kQ2X0B] * values[kQ2Y0C]); + (values[kQ2Y0B] * values[kQ2X0C] - values[kQ2X0B] * values[kQ2Y0C]); values[kR2SP_AB] = - std::isnan(R2SP_AB) || std::isinf(R2SP_AB) ? 0. : R2SP_AB; + std::isnan(R2SP_AB) || std::isinf(R2SP_AB) ? 0. : R2SP_AB; values[kR2SP_FT0CTPCPOS] = - std::isnan(R2SP_APOSB) || std::isinf(R2SP_APOSB) ? 0. : R2SP_APOSB; + std::isnan(R2SP_APOSB) || std::isinf(R2SP_APOSB) ? 0. : R2SP_APOSB; values[kR2SP_FT0CTPCNEG] = - std::isnan(R2SP_ANEGB) || std::isinf(R2SP_ANEGB) ? 0. : R2SP_ANEGB; + std::isnan(R2SP_ANEGB) || std::isinf(R2SP_ANEGB) ? 0. : R2SP_ANEGB; values[kWR2SP_AB] = std::isnan(R2SP_AB) || std::isinf(R2SP_AB) ? 0. : 1.0; values[kR2SP_AC] = - std::isnan(R2SP_AC) || std::isinf(R2SP_AC) ? 0. : R2SP_AC; + std::isnan(R2SP_AC) || std::isinf(R2SP_AC) ? 0. : R2SP_AC; values[kR2SP_FT0ATPCPOS] = - std::isnan(R2SP_APOSC) || std::isinf(R2SP_APOSC) ? 0. : R2SP_APOSC; + std::isnan(R2SP_APOSC) || std::isinf(R2SP_APOSC) ? 0. : R2SP_APOSC; values[kR2SP_FT0ATPCNEG] = - std::isnan(R2SP_ANEGC) || std::isinf(R2SP_ANEGC) ? 0. : R2SP_ANEGC; + std::isnan(R2SP_ANEGC) || std::isinf(R2SP_ANEGC) ? 0. : R2SP_ANEGC; values[kWR2SP_AC] = std::isnan(R2SP_AC) || std::isinf(R2SP_AC) ? 0. : 1.0; values[kR2SP_BC] = - std::isnan(R2SP_BC) || std::isinf(R2SP_BC) ? 0. : R2SP_BC; + std::isnan(R2SP_BC) || std::isinf(R2SP_BC) ? 0. : R2SP_BC; values[kWR2SP_BC] = std::isnan(R2SP_BC) || std::isinf(R2SP_BC) ? 0. : 1.0; values[kR2SP_AB_Im] = - std::isnan(R2SP_AB_Im) || std::isinf(R2SP_AB_Im) ? 0. : R2SP_AB_Im; + std::isnan(R2SP_AB_Im) || std::isinf(R2SP_AB_Im) ? 0. : R2SP_AB_Im; values[kWR2SP_AB_Im] = - std::isnan(R2SP_AB_Im) || std::isinf(R2SP_AB_Im) ? 0. : 1.0; + std::isnan(R2SP_AB_Im) || std::isinf(R2SP_AB_Im) ? 0. : 1.0; values[kR2SP_AC_Im] = - std::isnan(R2SP_AC_Im) || std::isinf(R2SP_AC_Im) ? 0. : R2SP_AC_Im; + std::isnan(R2SP_AC_Im) || std::isinf(R2SP_AC_Im) ? 0. : R2SP_AC_Im; values[kWR2SP_AC_Im] = - std::isnan(R2SP_AC_Im) || std::isinf(R2SP_AC_Im) ? 0. : 1.0; + std::isnan(R2SP_AC_Im) || std::isinf(R2SP_AC_Im) ? 0. : 1.0; values[kR2SP_BC_Im] = - std::isnan(R2SP_BC_Im) || std::isinf(R2SP_BC_Im) ? 0. : R2SP_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; + 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)); + 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)); + 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)); + 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)); + 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)); + 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)); + std::isnan(Psi2C) || std::isinf(Psi2C) + ? 0. + : TMath::Sin(2 * (Psi2B - Psi2C)); values[kR2EP_AB] = - std::isnan(R2EP_AB) || std::isinf(R2EP_AB) ? 0. : R2EP_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; + std::isnan(R2EP_AC) || std::isinf(R2EP_AC) ? 0. : R2EP_AC; values[kWR2EP_AC] = std::isnan(R2EP_AC) || std::isinf(R2EP_AC) ? 0. : 1.0; values[kR2EP_BC] = - std::isnan(R2EP_BC) || std::isinf(R2EP_BC) ? 0. : R2EP_BC; + std::isnan(R2EP_BC) || std::isinf(R2EP_BC) ? 0. : R2EP_BC; values[kWR2EP_BC] = std::isnan(R2EP_BC) || std::isinf(R2EP_BC) ? 0. : 1.0; values[kR2EP_AB_Im] = - std::isnan(R2EP_AB_Im) || std::isinf(R2EP_AB_Im) ? 0. : R2EP_AB_Im; + std::isnan(R2EP_AB_Im) || std::isinf(R2EP_AB_Im) ? 0. : R2EP_AB_Im; values[kWR2EP_AB_Im] = - std::isnan(R2EP_AB_Im) || std::isinf(R2EP_AB_Im) ? 0. : 1.0; + std::isnan(R2EP_AB_Im) || std::isinf(R2EP_AB_Im) ? 0. : 1.0; values[kR2EP_AC_Im] = - std::isnan(R2EP_AC_Im) || std::isinf(R2EP_AC_Im) ? 0. : R2EP_AC_Im; + std::isnan(R2EP_AC_Im) || std::isinf(R2EP_AC_Im) ? 0. : R2EP_AC_Im; values[kWR2EP_AC_Im] = - std::isnan(R2EP_AC_Im) || std::isinf(R2EP_AC_Im) ? 0. : 1.0; + std::isnan(R2EP_AC_Im) || std::isinf(R2EP_AC_Im) ? 0. : 1.0; values[kR2EP_BC_Im] = - std::isnan(R2EP_BC_Im) || std::isinf(R2EP_BC_Im) ? 0. : R2EP_BC_Im; + std::isnan(R2EP_BC_Im) || std::isinf(R2EP_BC_Im) ? 0. : R2EP_BC_Im; values[kWR2EP_BC_Im] = - std::isnan(R2EP_BC_Im) || std::isinf(R2EP_BC_Im) ? 0. : 1.0; + std::isnan(R2EP_BC_Im) || std::isinf(R2EP_BC_Im) ? 0. : 1.0; } if constexpr ((fillMap & CollisionMC) > 0) { @@ -3030,17 +3076,17 @@ void VarManager::FillEvent(T const &event, float *values) { if constexpr ((fillMap & EventFilter) > 0 || (fillMap & RapidityGapFilter) > 0) { values[kIsDoubleGap] = static_cast( - (event.eventFilter() & (static_cast(1) << kDoubleGap)) > 0); + (event.eventFilter() & (static_cast(1) << kDoubleGap)) > 0); values[kIsSingleGapA] = static_cast( - (event.eventFilter() & (static_cast(1) << kSingleGapA)) > 0); + (event.eventFilter() & (static_cast(1) << kSingleGapA)) > 0); values[kIsSingleGapC] = static_cast( - (event.eventFilter() & (static_cast(1) << kSingleGapC)) > 0); + (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[kIsITSUPCMode] = static_cast( - (event.eventFilter() & (static_cast(1) << kITSUPCMode)) > 0); + (event.eventFilter() & (static_cast(1) << kITSUPCMode)) > 0); } if constexpr ((fillMap & ReducedZdc) > 0) { @@ -3084,13 +3130,13 @@ void VarManager::FillEvent(T const &event, float *values) { if constexpr (requires { event.dcazBimodalityCoefficient(); }) { values[kDCAzBimodalityCoefficient] = event.dcazBimodalityCoefficient(); values[kDCAzBimodalityCoefficientBinned] = - event.dcazBimodalityCoefficientBinned(); + event.dcazBimodalityCoefficientBinned(); values[kDCAzBimodalityCoefficientBinnedTrimmed1] = - event.dcazBimodalityCoefficientBinnedTrimmed1(); + event.dcazBimodalityCoefficientBinnedTrimmed1(); values[kDCAzBimodalityCoefficientBinnedTrimmed2] = - event.dcazBimodalityCoefficientBinnedTrimmed2(); + event.dcazBimodalityCoefficientBinnedTrimmed2(); values[kDCAzBimodalityCoefficientBinnedTrimmed3] = - event.dcazBimodalityCoefficientBinnedTrimmed3(); + event.dcazBimodalityCoefficientBinnedTrimmed3(); values[kDCAzMean] = event.dcazMean(); values[kDCAzMeanBinnedTrimmed1] = event.dcazMeanBinnedTrimmed1(); values[kDCAzMeanBinnedTrimmed2] = event.dcazMeanBinnedTrimmed2(); @@ -3118,14 +3164,15 @@ void VarManager::FillEvent(T const &event, float *values) { } template -void VarManager::FillEventTracks(T const &tracks, float *values) { +void VarManager::FillEventTracks(T const& tracks, float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } // compute event properties based on DCAz of the tracks std::vector dcazValues; - for (const auto &track : tracks) { + for (const auto& track : tracks) { if (!track.hasITS()) { continue; // skip tracks without ITS information } @@ -3144,7 +3191,7 @@ 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); + BimodalityCoefficientAndNPeaks(dcazValues, -1.0); if (stddev > -1.0) { values[kDCAzBimodalityCoefficient] = bimodalityCoefficient; values[kDCAzMean] = mean; @@ -3177,10 +3224,10 @@ void VarManager::FillEventTracks(T const &tracks, float *values) { // of 50um and different trimming versions more then 3 counts per bin auto [bimodalityCoefficientBinTrimmed1, meanBinTrimmed1, stddevBinTrimmed1, skewnessBinTrimmed1, kurtosisBinTrimmed1, nPeaksBinTrimmed1] = - BimodalityCoefficientAndNPeaks(dcazValues, 0.005, 4); + BimodalityCoefficientAndNPeaks(dcazValues, 0.005, 4); if (stddevBinTrimmed1 > -1.0) { values[kDCAzBimodalityCoefficientBinnedTrimmed1] = - bimodalityCoefficientBinTrimmed1; + bimodalityCoefficientBinTrimmed1; values[kDCAzMeanBinnedTrimmed1] = meanBinTrimmed1; values[kDCAzRMSBinnedTrimmed1] = stddevBinTrimmed1; } else { @@ -3196,10 +3243,10 @@ void VarManager::FillEventTracks(T const &tracks, float *values) { // << endl; more than 3% of the entries per peak auto [bimodalityCoefficientBinTrimmed2, meanBinTrimmed2, stddevBinTrimmed2, skewnessBinTrimmed2, kurtosisBinTrimmed2, nPeaksBinTrimmed2] = - BimodalityCoefficientAndNPeaks(dcazValues, 0.005, -100); + BimodalityCoefficientAndNPeaks(dcazValues, 0.005, -100); if (stddevBinTrimmed2 > -1.0) { values[kDCAzBimodalityCoefficientBinnedTrimmed2] = - bimodalityCoefficientBinTrimmed2; + bimodalityCoefficientBinTrimmed2; values[kDCAzMeanBinnedTrimmed2] = meanBinTrimmed2; values[kDCAzRMSBinnedTrimmed2] = stddevBinTrimmed2; } else { @@ -3215,10 +3262,10 @@ void VarManager::FillEventTracks(T const &tracks, float *values) { // << endl; more than 5% of the entries per peak auto [bimodalityCoefficientBinTrimmed3, meanBinTrimmed3, stddevBinTrimmed3, skewnessBinTrimmed3, kurtosisBinTrimmed3, nPeaksBinTrimmed3] = - BimodalityCoefficientAndNPeaks(dcazValues, 0.005, -20); + BimodalityCoefficientAndNPeaks(dcazValues, 0.005, -20); if (stddevBinTrimmed3 > -1.0) { values[kDCAzBimodalityCoefficientBinnedTrimmed3] = - bimodalityCoefficientBinTrimmed3; + bimodalityCoefficientBinTrimmed3; values[kDCAzMeanBinnedTrimmed3] = meanBinTrimmed3; values[kDCAzRMSBinnedTrimmed3] = stddevBinTrimmed3; } else { @@ -3243,7 +3290,7 @@ void VarManager::FillEventTracks(T const &tracks, float *values) { int counter2mm = 0; int counter5mm = 0; int counter10mm = 0; - for (auto const &d : dcazValues) { + for (auto const& d : dcazValues) { double absD = std::abs(d); if (absD > 0.01) { counter100um++; @@ -3278,10 +3325,11 @@ void VarManager::FillEventTracks(T const &tracks, float *values) { } template -void VarManager::FillEventFlowResoFactor(T const &hs_sp, T const &hs_ep, - float *values) { +void VarManager::FillEventFlowResoFactor(T const& hs_sp, T const& hs_ep, + float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } if (values[kCentFT0C] >= 0.) { @@ -3294,10 +3342,11 @@ void VarManager::FillEventFlowResoFactor(T const &hs_sp, T const &hs_ep, } template -void VarManager::FillTwoMixEventsFlowResoFactor(T const &hs_sp, T const &hs_ep, - float *values) { +void VarManager::FillTwoMixEventsFlowResoFactor(T const& hs_sp, T const& hs_ep, + float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } if (values[kTwoEvCentFT0C1] >= 0.) { @@ -3318,12 +3367,13 @@ void VarManager::FillTwoMixEventsFlowResoFactor(T const &hs_sp, T const &hs_ep, } template -void VarManager::FillTwoMixEventsCumulants(T const &h_v22ev1, T const &h_v24ev1, - T const &h_v22ev2, T const &h_v24ev2, - T1 const &t1, T2 const &t2, - float *values) { +void VarManager::FillTwoMixEventsCumulants(T const& h_v22ev1, T const& h_v24ev1, + T const& h_v22ev2, T const& h_v24ev2, + T1 const& t1, T2 const& t2, + float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } int idx_v22ev1 = 0; @@ -3366,17 +3416,18 @@ void VarManager::FillTwoMixEventsCumulants(T const &h_v22ev1, T const &h_v24ev1, } template -void VarManager::FillTwoEvents(T const &ev1, T const &ev2, float *values) { +void VarManager::FillTwoEvents(T const& ev1, T const& ev2, float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } // if constexpr (T::template contains()) { values[kTwoEvPosZ1] = ev1.posZ(); values[kTwoEvPosZ2] = ev2.posZ(); values[kTwoEvPosR1] = - std::sqrt(ev1.posX() * ev1.posX() + ev1.posY() * ev1.posY()); + std::sqrt(ev1.posX() * ev1.posX() + ev1.posY() * ev1.posY()); values[kTwoEvPosR2] = - std::sqrt(ev2.posX() * ev2.posX() + ev2.posY() * ev2.posY()); + std::sqrt(ev2.posX() * ev2.posX() + ev2.posY() * ev2.posY()); values[kTwoEvDeltaZ] = ev1.posZ() - ev2.posZ(); values[kTwoEvDeltaX] = ev1.posX() - ev2.posX(); values[kTwoEvDeltaY] = ev1.posY() - ev2.posY(); @@ -3388,18 +3439,19 @@ void VarManager::FillTwoEvents(T const &ev1, T const &ev2, float *values) { } template -void VarManager::FillTwoMixEvents(T1 const &ev1, T1 const &ev2, - T2 const & /*tracks1*/, - T2 const & /*tracks2*/, float *values) { +void VarManager::FillTwoMixEvents(T1 const& ev1, T1 const& ev2, + T2 const& /*tracks1*/, + T2 const& /*tracks2*/, float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } values[kTwoEvPosZ1] = ev1.posZ(); values[kTwoEvPosZ2] = ev2.posZ(); values[kTwoEvPosR1] = - std::sqrt(ev1.posX() * ev1.posX() + ev1.posY() * ev1.posY()); + std::sqrt(ev1.posX() * ev1.posX() + ev1.posY() * ev1.posY()); values[kTwoEvPosR2] = - std::sqrt(ev2.posX() * ev2.posX() + ev2.posY() * ev2.posY()); + std::sqrt(ev2.posX() * ev2.posX() + ev2.posY() * ev2.posY()); values[kTwoEvPVcontrib1] = ev1.numContrib(); values[kTwoEvPVcontrib2] = ev2.numContrib(); /* @@ -3459,9 +3511,10 @@ void VarManager::FillTwoMixEvents(T1 const &ev1, T1 const &ev2, } template -void VarManager::FillTrack(T const &track, float *values) { +void VarManager::FillTrack(T const& track, float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } if constexpr ((fillMap & TrackMFT) > 0) { @@ -3510,27 +3563,27 @@ void VarManager::FillTrack(T const &track, float *values) { 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()))); + track.phi() - (track.sign() > 0 ? 1.0 : -1.0) * + (o2::constants::math::PIHalf - + TMath::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); + values[kPhiTPCOuter] - TMath::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()))); + 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; } double min = edge; double max = o2::constants::math::TwoPI / 18.0 - edge; values[kTrackIsInsideTPCModule] = - (localSectorPhi > min && localSectorPhi < max ? 1.0 : 0.0); + (localSectorPhi > min && localSectorPhi < max ? 1.0 : 0.0); } if constexpr ((fillMap & ReducedTrack) > 0 && !((fillMap & Pair) > 0)) { @@ -3539,22 +3592,22 @@ void VarManager::FillTrack(T const &track, float *values) { values[kIsAmbiguous] = track.isAmbiguous(); values[kIsLegFromGamma] = - track.filteringFlags_bit(VarManager::kIsConversionLeg); + track.filteringFlags_bit(VarManager::kIsConversionLeg); values[kIsLegFromK0S] = track.filteringFlags_bit(VarManager::kIsK0sLeg); values[kIsLegFromLambda] = - track.filteringFlags_bit(VarManager::kIsLambdaLeg); + track.filteringFlags_bit(VarManager::kIsLambdaLeg); values[kIsLegFromAntiLambda] = - track.filteringFlags_bit(VarManager::kIsALambdaLeg); + track.filteringFlags_bit(VarManager::kIsALambdaLeg); values[kIsLegFromOmega] = - track.filteringFlags_bit(VarManager::kIsOmegaLeg); + track.filteringFlags_bit(VarManager::kIsOmegaLeg); values[kIsProtonFromLambdaAndAntiLambda] = static_cast( - (values[kIsLegFromLambda] * track.sign() > 0) || - (values[kIsLegFromAntiLambda] * (-track.sign()) > 0)); + (values[kIsLegFromLambda] * track.sign() > 0) || + (values[kIsLegFromAntiLambda] * (-track.sign()) > 0)); for (int i = 0; i < 8; i++) { values[kIsDalitzLeg + i] = - track.filteringFlags_bit(VarManager::kDalitzBits + i); + track.filteringFlags_bit(VarManager::kDalitzBits + i); } } @@ -3567,121 +3620,121 @@ void VarManager::FillTrack(T const &track, float *values) { std::complex Q23(values[kQ23XA], values[kQ23YA]); std::complex P2(TMath::Cos(2 * v.Phi()), TMath::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[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[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]; + 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]; values[kCORR4REFbysinglemu] = - std::isnan(values[kM1111REFoverMpsingle]) || - std::isinf(values[kM1111REFoverMpsingle]) || - std::isnan(values[kCORR4REF]) || - std::isinf(values[kCORR4REF]) || - std::isnan(values[kM11REFoverMpsingle]) || - std::isinf(values[kM11REFoverMpsingle]) || - std::isnan(values[kCORR2REF]) || std::isinf(values[kCORR2REF]) - ? 0 - : values[kCORR4REF]; + std::isnan(values[kM1111REFoverMpsingle]) || + std::isinf(values[kM1111REFoverMpsingle]) || + std::isnan(values[kCORR4REF]) || + std::isinf(values[kCORR4REF]) || + std::isnan(values[kM11REFoverMpsingle]) || + std::isinf(values[kM11REFoverMpsingle]) || + std::isnan(values[kCORR2REF]) || std::isinf(values[kCORR2REF]) + ? 0 + : values[kCORR4REF]; values[kCORR2POIsingle] = (P2 * conj(Q21)).real() / values[kM01POI]; values[kM01POIsingle] = values[kMultSingleMuons] * values[kS11A]; values[kM0111POIsingle] = - values[kMultSingleMuons] * - (values[kS31A] - 3. * values[kS11A] * values[kS12A] + - 2. * values[kS13A]); + values[kMultSingleMuons] * + (values[kS31A] - 3. * values[kS11A] * values[kS12A] + + 2. * values[kS13A]); values[kCORR2POIsingle] = (P2 * conj(Q21)).real() / values[kM01POIsingle]; values[kCORR4POIsingle] = - (P2 * Q21 * conj(Q21) * conj(Q21) - P2 * Q21 * conj(Q42) - - 2. * values[kS12A] * P2 * conj(Q21) + 2. * P2 * conj(Q23)) - .real() / - values[kM0111POIsingle]; + (P2 * Q21 * conj(Q21) * conj(Q21) - P2 * Q21 * conj(Q42) - + 2. * values[kS12A] * P2 * conj(Q21) + 2. * P2 * conj(Q23)) + .real() / + values[kM0111POIsingle]; values[kM01POIsingle] = std::isnan(values[kM01POIsingle]) || - std::isinf(values[kM01POIsingle]) || - std::isnan(values[kM0111POIsingle]) || - std::isinf(values[kM0111POIsingle]) || - std::isnan(values[kCORR2POIsingle]) || - std::isinf(values[kCORR2POIsingle]) || - std::isnan(values[kCORR4POIsingle]) || - std::isinf(values[kCORR4POIsingle]) - ? 0 - : values[kM01POIsingle]; + std::isinf(values[kM01POIsingle]) || + std::isnan(values[kM0111POIsingle]) || + std::isinf(values[kM0111POIsingle]) || + std::isnan(values[kCORR2POIsingle]) || + std::isinf(values[kCORR2POIsingle]) || + std::isnan(values[kCORR4POIsingle]) || + std::isinf(values[kCORR4POIsingle]) + ? 0 + : values[kM01POIsingle]; values[kM0111POIsingle] = std::isnan(values[kM0111POIsingle]) || - std::isinf(values[kM0111POIsingle]) || - std::isnan(values[kCORR2POIsingle]) || - std::isinf(values[kCORR2POIsingle]) || - std::isnan(values[kCORR4POIsingle]) || - std::isinf(values[kCORR4POIsingle]) - ? 0 - : values[kM0111POIsingle]; + std::isinf(values[kM0111POIsingle]) || + std::isnan(values[kCORR2POIsingle]) || + std::isinf(values[kCORR2POIsingle]) || + std::isnan(values[kCORR4POIsingle]) || + std::isinf(values[kCORR4POIsingle]) + ? 0 + : values[kM0111POIsingle]; values[kCORR2POIsingle] = std::isnan(values[kM01POIsingle]) || - std::isinf(values[kM01POIsingle]) || - std::isnan(values[kM0111POIsingle]) || - std::isinf(values[kM0111POIsingle]) || - std::isnan(values[kCORR2POIsingle]) || - std::isinf(values[kCORR2POIsingle]) || - std::isnan(values[kCORR4POIsingle]) || - std::isinf(values[kCORR4POIsingle]) - ? 0 - : values[kCORR2POIsingle]; + std::isinf(values[kM01POIsingle]) || + std::isnan(values[kM0111POIsingle]) || + std::isinf(values[kM0111POIsingle]) || + std::isnan(values[kCORR2POIsingle]) || + std::isinf(values[kCORR2POIsingle]) || + std::isnan(values[kCORR4POIsingle]) || + std::isinf(values[kCORR4POIsingle]) + ? 0 + : values[kCORR2POIsingle]; values[kCORR4POIsingle] = std::isnan(values[kM01POIsingle]) || - std::isinf(values[kM01POIsingle]) || - std::isnan(values[kM0111POIsingle]) || - std::isinf(values[kM0111POIsingle]) || - std::isnan(values[kCORR2POIsingle]) || - std::isinf(values[kCORR2POIsingle]) || - std::isnan(values[kCORR4POIsingle]) || - std::isinf(values[kCORR4POIsingle]) - ? 0 - : values[kCORR4POIsingle]; + std::isinf(values[kM01POIsingle]) || + std::isnan(values[kM0111POIsingle]) || + std::isinf(values[kM0111POIsingle]) || + std::isnan(values[kCORR2POIsingle]) || + std::isinf(values[kCORR2POIsingle]) || + std::isnan(values[kCORR4POIsingle]) || + std::isinf(values[kCORR4POIsingle]) + ? 0 + : values[kCORR4POIsingle]; values[kM01POIoverMpsingle] = - values[kMultSingleMuons] > 0 && - !(std::isnan(values[kM0111POIsingle]) || - std::isinf(values[kM0111POIsingle]) || - std::isnan(values[kCORR4POIsingle]) || - std::isinf(values[kCORR4POIsingle]) || - std::isnan(values[kM01POIsingle]) || - std::isinf(values[kM01POIsingle]) || - std::isnan(values[kCORR2POIsingle]) || - std::isinf(values[kCORR2POIsingle])) - ? values[kM01POIsingle] / values[kMultSingleMuons] - : 0; + values[kMultSingleMuons] > 0 && + !(std::isnan(values[kM0111POIsingle]) || + std::isinf(values[kM0111POIsingle]) || + std::isnan(values[kCORR4POIsingle]) || + std::isinf(values[kCORR4POIsingle]) || + std::isnan(values[kM01POIsingle]) || + std::isinf(values[kM01POIsingle]) || + std::isnan(values[kCORR2POIsingle]) || + std::isinf(values[kCORR2POIsingle])) + ? values[kM01POIsingle] / values[kMultSingleMuons] + : 0; values[kM0111POIoverMpsingle] = - values[kMultSingleMuons] > 0 && - !(std::isnan(values[kM0111POIsingle]) || - std::isinf(values[kM0111POIsingle]) || - std::isnan(values[kCORR4POIsingle]) || - std::isinf(values[kCORR4POIsingle]) || - std::isnan(values[kM01POIsingle]) || - std::isinf(values[kM01POIsingle]) || - std::isnan(values[kCORR2POIsingle]) || - std::isinf(values[kCORR2POIsingle])) - ? values[kM0111POIsingle] / values[kMultSingleMuons] - : 0; + values[kMultSingleMuons] > 0 && + !(std::isnan(values[kM0111POIsingle]) || + std::isinf(values[kM0111POIsingle]) || + std::isnan(values[kCORR4POIsingle]) || + std::isinf(values[kCORR4POIsingle]) || + std::isnan(values[kM01POIsingle]) || + std::isinf(values[kM01POIsingle]) || + std::isnan(values[kCORR2POIsingle]) || + std::isinf(values[kCORR2POIsingle])) + ? values[kM0111POIsingle] / values[kMultSingleMuons] + : 0; } } @@ -3692,46 +3745,46 @@ void VarManager::FillTrack(T const &track, float *values) { values[kSignedPin] = track.tpcInnerParam() * track.sign(); if (fgUsedVars[kIsITSrefit]) { values[kIsITSrefit] = - static_cast((track.flags() & o2::aod::track::ITSrefit) > - 0); // NOTE: This is just for Run-2 + static_cast((track.flags() & o2::aod::track::ITSrefit) > + 0); // NOTE: This is just for Run-2 } if (fgUsedVars[kTrackTimeResIsRange]) { values[kTrackTimeResIsRange] = static_cast( - (track.flags() & o2::aod::track::TrackTimeResIsRange) > - 0); // NOTE: This is NOT for Run-2 + (track.flags() & o2::aod::track::TrackTimeResIsRange) > + 0); // NOTE: This is NOT for Run-2 } if (fgUsedVars[kIsTPCrefit]) { values[kIsTPCrefit] = - static_cast((track.flags() & o2::aod::track::TPCrefit) > - 0); // NOTE: This is just for Run-2 + static_cast((track.flags() & o2::aod::track::TPCrefit) > + 0); // NOTE: This is just for Run-2 } if (fgUsedVars[kPVContributor]) { values[kPVContributor] = - static_cast((track.flags() & o2::aod::track::PVContributor) > - 0); // NOTE: This is NOT for Run-2 + static_cast((track.flags() & o2::aod::track::PVContributor) > + 0); // NOTE: This is NOT for Run-2 } if (fgUsedVars[kIsGoldenChi2]) { values[kIsGoldenChi2] = - static_cast((track.flags() & o2::aod::track::GoldenChi2) > - 0); // NOTE: This is just for Run-2 + static_cast((track.flags() & o2::aod::track::GoldenChi2) > + 0); // NOTE: This is just for Run-2 } if (fgUsedVars[kOrphanTrack]) { values[kOrphanTrack] = - static_cast((track.flags() & o2::aod::track::OrphanTrack) > - 0); // NOTE: This is NOT for Run-2 + static_cast((track.flags() & o2::aod::track::OrphanTrack) > + 0); // NOTE: This is NOT for Run-2 } if (fgUsedVars[kIsSPDfirst]) { values[kIsSPDfirst] = - static_cast((track.itsClusterMap() & uint8_t(1)) > 0); + static_cast((track.itsClusterMap() & uint8_t(1)) > 0); } if (fgUsedVars[kIsSPDboth]) { values[kIsSPDboth] = - static_cast((track.itsClusterMap() & uint8_t(3)) > 0); + static_cast((track.itsClusterMap() & uint8_t(3)) > 0); } if (fgUsedVars[kIsSPDany]) { values[kIsSPDany] = - static_cast((track.itsClusterMap() & uint8_t(1)) || - (track.itsClusterMap() & uint8_t(2))); + static_cast((track.itsClusterMap() & uint8_t(1)) || + (track.itsClusterMap() & uint8_t(2))); } if (fgUsedVars[kITSClusterMap]) { values[kITSClusterMap] = track.itsClusterMap(); @@ -3739,19 +3792,19 @@ void VarManager::FillTrack(T const &track, float *values) { if (fgUsedVars[kIsITSibFirst]) { values[kIsITSibFirst] = - static_cast((track.itsClusterMap() & uint8_t(1)) > 0); + static_cast((track.itsClusterMap() & uint8_t(1)) > 0); } if (fgUsedVars[kIsITSibAny]) { values[kIsITSibAny] = - static_cast((track.itsClusterMap() & (1 << uint8_t(0))) > 0 || - (track.itsClusterMap() & (1 << uint8_t(1))) > 0 || - (track.itsClusterMap() & (1 << uint8_t(2))) > 0); + static_cast((track.itsClusterMap() & (1 << uint8_t(0))) > 0 || + (track.itsClusterMap() & (1 << uint8_t(1))) > 0 || + (track.itsClusterMap() & (1 << uint8_t(2))) > 0); } if (fgUsedVars[kIsITSibAll]) { values[kIsITSibAll] = - static_cast((track.itsClusterMap() & (1 << uint8_t(0))) > 0 && - (track.itsClusterMap() & (1 << uint8_t(1))) > 0 && - (track.itsClusterMap() & (1 << uint8_t(2))) > 0); + static_cast((track.itsClusterMap() & (1 << uint8_t(0))) > 0 && + (track.itsClusterMap() & (1 << uint8_t(1))) > 0 && + (track.itsClusterMap() & (1 << uint8_t(2))) > 0); } values[kTrackTime] = track.trackTime(); @@ -3862,25 +3915,25 @@ void VarManager::FillTrack(T const &track, float *values) { if constexpr ((fillMap & DalitzBits) > 0) { for (int i = 0; i < 8; i++) { values[kIsDalitzLeg + i] = - static_cast(track.dalitzBits() & (uint8_t(1) << i)); + static_cast(track.dalitzBits() & (uint8_t(1) << i)); } } // Quantities based on the V0 selections if constexpr ((fillMap & TrackV0Bits) > 0) { values[kIsLegFromGamma] = static_cast( - track.pidbit() & (uint8_t(1) << VarManager::kIsConversionLeg)); + track.pidbit() & (uint8_t(1) << VarManager::kIsConversionLeg)); values[kIsLegFromK0S] = static_cast( - track.pidbit() & (uint8_t(1) << VarManager::kIsK0sLeg)); + track.pidbit() & (uint8_t(1) << VarManager::kIsK0sLeg)); values[kIsLegFromLambda] = static_cast( - track.pidbit() & (uint8_t(1) << VarManager::kIsLambdaLeg)); + track.pidbit() & (uint8_t(1) << VarManager::kIsLambdaLeg)); values[kIsLegFromAntiLambda] = static_cast( - track.pidbit() & (uint8_t(1) << VarManager::kIsALambdaLeg)); + track.pidbit() & (uint8_t(1) << VarManager::kIsALambdaLeg)); values[kIsLegFromOmega] = static_cast( - track.pidbit() & (uint8_t(1) << VarManager::kIsOmegaLeg)); + track.pidbit() & (uint8_t(1) << VarManager::kIsOmegaLeg)); values[kIsProtonFromLambdaAndAntiLambda] = static_cast( - (values[kIsLegFromLambda] * track.sign() > 0) || - (values[kIsLegFromAntiLambda] * (-track.sign()) > 0)); + (values[kIsLegFromLambda] * track.sign() > 0) || + (values[kIsLegFromAntiLambda] * (-track.sign()) > 0)); } // Quantities based on the barrel PID tables @@ -3902,7 +3955,7 @@ void VarManager::FillTrack(T const &track, float *values) { if (fgUsedVars[kTPCnSigmaEl_Corr] && fgRunTPCPostCalibration[0]) { if (!isTPCCalibrated) { values[kTPCnSigmaEl_Corr] = - ComputePIDcalibration(0, values[kTPCnSigmaEl]); + ComputePIDcalibration(0, values[kTPCnSigmaEl]); } else { LOG(fatal) << "TPC PID postcalibration is configured but the tracks " "are already postcalibrated. This is not allowed. Please " @@ -3915,7 +3968,7 @@ void VarManager::FillTrack(T const &track, float *values) { if (fgUsedVars[kTPCnSigmaPi_Corr] && fgRunTPCPostCalibration[1]) { if (!isTPCCalibrated) { values[kTPCnSigmaPi_Corr] = - ComputePIDcalibration(1, values[kTPCnSigmaPi]); + ComputePIDcalibration(1, values[kTPCnSigmaPi]); } else { LOG(fatal) << "TPC PID postcalibration is configured but the tracks " "are already postcalibrated. This is not allowed. Please " @@ -3927,7 +3980,7 @@ void VarManager::FillTrack(T const &track, float *values) { // compute TPC postcalibrated kaon nsigma if required if (!isTPCCalibrated) { values[kTPCnSigmaKa_Corr] = - ComputePIDcalibration(2, values[kTPCnSigmaKa]); + ComputePIDcalibration(2, values[kTPCnSigmaKa]); } else { LOG(fatal) << "TPC PID postcalibration is configured but the tracks " "are already postcalibrated. This is not allowed. Please " @@ -3939,7 +3992,7 @@ void VarManager::FillTrack(T const &track, float *values) { if (fgUsedVars[kTPCnSigmaPr_Corr] && fgRunTPCPostCalibration[3]) { if (!isTPCCalibrated) { values[kTPCnSigmaPr_Corr] = - ComputePIDcalibration(3, values[kTPCnSigmaPr]); + ComputePIDcalibration(3, values[kTPCnSigmaPr]); } else { LOG(fatal) << "TPC PID postcalibration is configured but the tracks " "are already postcalibrated. This is not allowed. Please " @@ -4029,7 +4082,7 @@ void VarManager::FillTrack(T const &track, float *values) { float zShift = 0.f; GetFwdShiftForY(track.y(), xShift, yShift, zShift); auto muonTrack = o2::aod::fwdtrackutils::getTrackParCovFwd3DShift( - track, xShift, yShift, zShift, track); + track, xShift, yShift, zShift, track); auto muonCov = muonTrack.getCovariances(); values[kX] = muonTrack.getX(); values[kY] = muonTrack.getY(); @@ -4065,19 +4118,20 @@ void VarManager::FillTrack(T const &track, float *values) { } template -void VarManager::FillTrackCollision(T const &track, C const &collision, - float *values) { +void VarManager::FillTrackCollision(T const& track, C const& collision, + float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } if constexpr ((fillMap & ReducedTrackBarrel) > 0 || (fillMap & TrackDCA) > 0) { auto trackPar = getTrackPar(track); std::array dca{1e10f, 1e10f}; trackPar.propagateParamToDCA( - {collision.posX(), collision.posY(), collision.posZ()}, fgMagField, - &dca); + {collision.posX(), collision.posY(), collision.posZ()}, fgMagField, + &dca); values[kTrackDCAxy] = dca[0]; values[kTrackDCAz] = dca[1]; @@ -4104,18 +4158,18 @@ void VarManager::FillTrackCollision(T const &track, C const &collision, float zShift = 0.f; GetFwdShiftForY(track.y(), xShift, yShift, zShift); o2::track::TrackParCovFwd fwdtrack = - o2::aod::fwdtrackutils::getTrackParCovFwd3DShift( - track, xShift, yShift, zShift, track); + o2::aod::fwdtrackutils::getTrackParCovFwd3DShift( + track, xShift, yShift, zShift, track); std::array dca{999., 999., 999.}; fwdtrack.propagateToDCAhelix( - fgMagField, {collision.posX(), collision.posY(), collision.posZ()}, - dca); + fgMagField, {collision.posX(), collision.posY(), collision.posZ()}, + dca); dcaX = static_cast(dca[0]); dcaY = static_cast(dca[1]); } else { // MCH standalone: DCA and pDCA from MCH extrapolation o2::dataformats::GlobalFwdTrack propmuonAtDCA = - PropagateMuon(track, collision, kToDCA); + PropagateMuon(track, collision, kToDCA); dcaX = propmuonAtDCA.getX() - collision.posX(); dcaY = propmuonAtDCA.getY() - collision.posY(); float dcaXY = std::sqrt(dcaX * dcaX + dcaY * dcaY); @@ -4129,25 +4183,27 @@ void VarManager::FillTrackCollision(T const &track, C const &collision, template bool VarManager::isBarrelAssocTimeCompatible( - T const &track, C const &collision, C const &origCollision, float nSigma, - float timeMargin, int bcWindowForOneSigma, int usePVAssociation, - int maxPvContribLowMult, float *values) { + T const& track, C const& collision, C const& origCollision, float nSigma, + float timeMargin, int bcWindowForOneSigma, int usePVAssociation, + int maxPvContribLowMult, float* values) +{ return computeBarrelAssocTimeCompat( - track.trackTime(), track.trackTimeRes(), - (track.flags() & o2::aod::track::TrackTimeResIsRange) > 0, - track.isPVContributor(), static_cast(origCollision.globalBC()), - origCollision.collisionTime(), origCollision.numContrib(), - static_cast(collision.globalBC()), collision.collisionTime(), - collision.collisionTimeRes(), nSigma, timeMargin, bcWindowForOneSigma, - usePVAssociation, maxPvContribLowMult, values); + track.trackTime(), track.trackTimeRes(), + (track.flags() & o2::aod::track::TrackTimeResIsRange) > 0, + track.isPVContributor(), static_cast(origCollision.globalBC()), + origCollision.collisionTime(), origCollision.numContrib(), + static_cast(collision.globalBC()), collision.collisionTime(), + collision.collisionTimeRes(), nSigma, timeMargin, bcWindowForOneSigma, + usePVAssociation, maxPvContribLowMult, values); } template -void VarManager::FillTrackCollisionMatCorr(T const &track, C const &collision, - M const &materialCorr, - P const &propagator, float *values) { +void VarManager::FillTrackCollisionMatCorr(T const& track, C const& collision, + M const& materialCorr, + P const& propagator, float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } if constexpr ((fillMap & ReducedTrackBarrel) > 0 || (fillMap & TrackDCA) > 0) { @@ -4157,8 +4213,8 @@ void VarManager::FillTrackCollisionMatCorr(T const &track, C const &collision, // trackPar.propagateParamToDCA({collision.posX(), collision.posY(), // collision.posZ()}, fgMagField, &dca); propagator->propagateToDCABxByBz( - {collision.posX(), collision.posY(), collision.posZ()}, trackPar, 2.f, - materialCorr, &dca); + {collision.posX(), collision.posY(), collision.posZ()}, trackPar, 2.f, + materialCorr, &dca); getPxPyPz(trackPar, pVec); values[kTrackDCAxy] = dca[0]; @@ -4177,9 +4233,10 @@ void VarManager::FillTrackCollisionMatCorr(T const &track, C const &collision, } template -void VarManager::FillPhoton(T const &track, float *values) { +void VarManager::FillPhoton(T const& track, float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } // Quantities based on the basic table (contains just kine information and @@ -4209,8 +4266,9 @@ void VarManager::FillPhoton(T const &track, float *values) { } template -void VarManager::FillTrackEMCal(T const &cluster, float trackP, float deltaEta, - float deltaPhi, float *values) { +void VarManager::FillTrackEMCal(T const& cluster, float trackP, float deltaEta, + float deltaPhi, float* values) +{ // Fill the EMCal cluster quantities; the cluster can be either an // aod::EMCALCluster (skimming) // or an aod::ReducedEMCal (analysis on skimmed data), the column schemas @@ -4220,7 +4278,7 @@ void VarManager::FillTrackEMCal(T const &cluster, float trackP, float deltaEta, // the default (negative) value leaves E/p at the -999 sentinel, as for // tracks without a matched cluster. if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } values[kEMCalEnergy] = cluster.energy(); @@ -4242,9 +4300,10 @@ void VarManager::FillTrackEMCal(T const &cluster, float trackP, float deltaEta, } template -void VarManager::FillTrackMC(const U &mcStack, T const &track, float *values) { +void VarManager::FillTrackMC(const U& mcStack, T const& track, float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } // Quantities based on the mc particle table @@ -4275,11 +4334,12 @@ 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) { +void VarManager::FillTrackCollisionMC(T1 const& track, T2 const& MotherTrack, + C const& collision, float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } float m = o2::constants::physics::MassBPlus; @@ -4305,61 +4365,62 @@ void VarManager::FillTrackCollisionMC(T1 const &track, T2 const &MotherTrack, // displaced vertex is compued with decay product (track) and momentum of // mother particle (MotherTrack) values[kMCVertexingLxy] = - (collPos[0] - track.vx()) * (collPos[0] - track.vx()) + - (collPos[1] - track.vy()) * (collPos[1] - track.vy()); + (collPos[0] - track.vx()) * (collPos[0] - track.vx()) + + (collPos[1] - track.vy()) * (collPos[1] - track.vy()); values[kMCVertexingLz] = - (collPos[2] - track.vz()) * (collPos[2] - track.vz()); + (collPos[2] - track.vz()) * (collPos[2] - track.vz()); values[kMCVertexingLxyz] = values[kMCVertexingLxy] + values[kMCVertexingLz]; 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); + (collPos[2] - track.vz()) * m / + (TMath::Abs(MotherTrack.pz()) * o2::constants::physics::LightSpeedCm2NS); values[kMCVertexingTauxy] = - values[kMCVertexingLxy] * m / - (MotherTrack.pt() * o2::constants::physics::LightSpeedCm2NS); + values[kMCVertexingLxy] * m / + (MotherTrack.pt() * o2::constants::physics::LightSpeedCm2NS); values[kMCCosPointingAngle] = - ((collPos[0] - track.vx()) * MotherTrack.px() + - (collPos[1] - track.vy()) * MotherTrack.py() + - (collPos[2] - track.vz()) * MotherTrack.pz()) / - (MotherTrack.p() * values[VarManager::kMCVertexingLxyz]); + ((collPos[0] - track.vx()) * MotherTrack.px() + + (collPos[1] - track.vy()) * MotherTrack.py() + + (collPos[2] - track.vz()) * MotherTrack.pz()) / + (MotherTrack.p() * values[VarManager::kMCVertexingLxyz]); values[kMCLxyExpected] = - (MotherTrack.pt() / m) * - (pdgLifetime * o2::constants::physics::LightSpeedCm2S); + (MotherTrack.pt() / m) * + (pdgLifetime * o2::constants::physics::LightSpeedCm2S); values[kMCLxyzExpected] = - (MotherTrack.p() / m) * - (pdgLifetime * o2::constants::physics::LightSpeedCm2S); + (MotherTrack.p() / m) * + (pdgLifetime * o2::constants::physics::LightSpeedCm2S); values[kMCVertexingLzProjected] = - ((track.vz() - collPos[2]) * MotherTrack.pz()) / - TMath::Abs(MotherTrack.pz()); + ((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()); + (((track.vx() - collPos[0]) * MotherTrack.px()) + + ((track.vy() - collPos[1]) * MotherTrack.py())) / + TMath::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(); + (((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[kMCVertexingLxyProjected] * m / (MotherTrack.pt()); values[kMCVertexingTauzProjected] = - values[kMCVertexingLzProjected] * m / TMath::Abs(MotherTrack.pz()); + values[kMCVertexingLzProjected] * m / TMath::Abs(MotherTrack.pz()); values[kMCVertexingTauxyzProjected] = - values[kMCVertexingLxyzProjected] * m / (MotherTrack.p()); + 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) { - values = static_cast(fgValues); + values = static_cast(fgValues); } float m = o2::constants::physics::MassJPsi; @@ -4369,44 +4430,45 @@ void VarManager::FillTrackCollisionMC(T1 const &track, // displaced vertex is computed with decay product (track) and vertex collPos values[kMCVertexingLxy] = - (collPos[0] - track.vx()) * (collPos[0] - track.vx()) + - (collPos[1] - track.vy()) * (collPos[1] - track.vy()); + (collPos[0] - track.vx()) * (collPos[0] - track.vx()) + + (collPos[1] - track.vy()) * (collPos[1] - track.vy()); values[kMCVertexingLz] = - (collPos[2] - track.vz()) * (collPos[2] - track.vz()); + (collPos[2] - track.vz()) * (collPos[2] - track.vz()); values[kMCVertexingLxyz] = values[kMCVertexingLxy] + values[kMCVertexingLz]; 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(track.pz()) * o2::constants::physics::LightSpeedCm2NS); + (collPos[2] - track.vz()) * m / + (TMath::Abs(track.pz()) * o2::constants::physics::LightSpeedCm2NS); values[kMCVertexingTauxy] = - values[kMCVertexingLxy] * m / - (track.pt() * o2::constants::physics::LightSpeedCm2NS); + values[kMCVertexingLxy] * m / + (track.pt() * o2::constants::physics::LightSpeedCm2NS); values[kMCVertexingLzProjected] = - ((track.vz() - collPos[2]) * track.pz()) / TMath::Abs(track.pz()); + ((track.vz() - collPos[2]) * track.pz()) / TMath::Abs(track.pz()); values[kMCVertexingLxyProjected] = - (((track.vx() - collPos[0]) * track.px()) + - ((track.vy() - collPos[1]) * track.py())) / - TMath::Abs(track.pt()); + (((track.vx() - collPos[0]) * track.px()) + + ((track.vy() - collPos[1]) * track.py())) / + TMath::Abs(track.pt()); values[kMCVertexingLxyzProjected] = - (((track.vx() - collPos[0]) * track.px()) + - ((track.vy() - collPos[1]) * track.py()) + - ((track.vz() - collPos[2]) * track.pz())) / - track.p(); + (((track.vx() - collPos[0]) * track.px()) + + ((track.vy() - collPos[1]) * track.py()) + + ((track.vz() - collPos[2]) * track.pz())) / + track.p(); values[kMCVertexingTauxyProjected] = - values[kMCVertexingLxyProjected] * m / (track.pt()); + values[kMCVertexingLxyProjected] * m / (track.pt()); values[kMCVertexingTauzProjected] = - values[kMCVertexingLzProjected] * m / TMath::Abs(track.pz()); + values[kMCVertexingLzProjected] * m / TMath::Abs(track.pz()); values[kMCVertexingTauxyzProjected] = - values[kMCVertexingLxyzProjected] * m / (track.p()); + values[kMCVertexingLxyzProjected] * m / (track.p()); } template -void VarManager::FillEnergyCorrelatorsMC(T const &track, T1 const &t1, - float *values, float Translow, - float Transhigh, float Accweight) { +void VarManager::FillEnergyCorrelatorsMC(T const& track, T1 const& t1, + float* values, float Translow, + float Transhigh, float Accweight) +{ // energy correlators float MassHadron = o2::constants::physics::MassPionCharged; if constexpr (pairType == kJpsiHadronMass) { @@ -4424,16 +4486,16 @@ void VarManager::FillEnergyCorrelatorsMC(T const &track, T1 const &t1, values[kMCAccweight] = Accweight; values[kMCCosChi] = CosChi; values[kMCWeight_before] = - t1.pt() / o2::constants::physics::MassJPsi * Accweight; + t1.pt() / o2::constants::physics::MassJPsi * Accweight; values[kMCEWeight_before] = - t1.e() / o2::constants::physics::MassJPsi * Accweight; + t1.e() / o2::constants::physics::MassJPsi * Accweight; values[kMCCosTheta] = CosTheta; values[kMCdeltaphi] = deltaphi; values[kMCdeltaeta] = deltaeta; values[kMCHadronPt] = t1.pt(); values[kMCHadronEta] = t1.eta(); values[kMCHadronPhi] = - RecoDecay::constrainAngle(t1.phi(), -o2::constants::math::PIHalf); + RecoDecay::constrainAngle(t1.phi(), -o2::constants::math::PIHalf); values[kMCHadronPdgCode] = t1.pdgCode(); values[kMCWeight] = E_boost / o2::constants::physics::MassJPsi * Accweight; @@ -4466,44 +4528,45 @@ void VarManager::FillEnergyCorrelatorsMC(T const &track, T1 const &t1, ROOT::Math::PtEtaPhiMVector v2_randomPhi_trans(v2.pt(), v2.eta(), randomPhi_trans, MassHadron); values[kMCCosChi_randomPhi_trans] = - LorentzTransformJpsihadroncosChi("coschi", v1, v2_randomPhi_trans); + LorentzTransformJpsihadroncosChi("coschi", v1, v2_randomPhi_trans); values[kMCWeight_randomPhi_trans] = - LorentzTransformJpsihadroncosChi("weight_boost", v1, - v2_randomPhi_trans) / - v1.M() * Accweight; + LorentzTransformJpsihadroncosChi("weight_boost", v1, + v2_randomPhi_trans) / + v1.M() * Accweight; ROOT::Math::PtEtaPhiMVector v2_randomPhi_toward( - v2.pt(), v2.eta(), randomPhi_toward, MassHadron); + v2.pt(), v2.eta(), randomPhi_toward, MassHadron); values[kMCCosChi_randomPhi_toward] = - LorentzTransformJpsihadroncosChi("coschi", v1, v2_randomPhi_toward); + LorentzTransformJpsihadroncosChi("coschi", v1, v2_randomPhi_toward); values[kMCWeight_randomPhi_toward] = - LorentzTransformJpsihadroncosChi("weight_boost", v1, - v2_randomPhi_toward) / - v1.M() * Accweight; + LorentzTransformJpsihadroncosChi("weight_boost", v1, + v2_randomPhi_toward) / + v1.M() * Accweight; ROOT::Math::PtEtaPhiMVector v2_randomPhi_away(v2.pt(), v2.eta(), randomPhi_away, MassHadron); values[kMCCosChi_randomPhi_away] = - LorentzTransformJpsihadroncosChi("coschi", v1, v2_randomPhi_away); + LorentzTransformJpsihadroncosChi("coschi", v1, v2_randomPhi_away); values[kMCWeight_randomPhi_away] = - LorentzTransformJpsihadroncosChi("weight_boost", v1, - v2_randomPhi_away) / - v1.M() * Accweight; + LorentzTransformJpsihadroncosChi("weight_boost", v1, + v2_randomPhi_away) / + v1.M() * Accweight; values[kMCdeltaphi_randomPhi_trans] = RecoDecay::constrainAngle( - v1.phi() - randomPhi_trans, -o2::constants::math::PIHalf); + v1.phi() - randomPhi_trans, -o2::constants::math::PIHalf); values[kMCdeltaphi_randomPhi_toward] = RecoDecay::constrainAngle( - v1.phi() - randomPhi_toward, -o2::constants::math::PIHalf); + v1.phi() - randomPhi_toward, -o2::constants::math::PIHalf); values[kMCdeltaphi_randomPhi_away] = RecoDecay::constrainAngle( - v1.phi() - randomPhi_away, -o2::constants::math::PIHalf); + v1.phi() - randomPhi_away, -o2::constants::math::PIHalf); } } template -void VarManager::FillPairPropagateMuon(T1 const &muon1, T2 const &muon2, - const C &collision, float *values) { +void VarManager::FillPairPropagateMuon(T1 const& muon1, T2 const& muon2, + const C& collision, float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } o2::dataformats::GlobalFwdTrack propmuon1 = PropagateMuon(muon1, collision); o2::dataformats::GlobalFwdTrack propmuon2 = PropagateMuon(muon2, collision); @@ -4522,16 +4585,17 @@ void VarManager::FillPairPropagateMuon(T1 const &muon1, T2 const &muon2, values[kRap] = -v12.Rapidity(); double Ptot1 = - TMath::Sqrt(v1.Px() * v1.Px() + v1.Py() * v1.Py() + v1.Pz() * v1.Pz()); + 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()); + TMath::Sqrt(v2.Px() * v2.Px() + v2.Py() * v2.Py() + v2.Pz() * v2.Pz()); values[kDeltaPtotTracks] = Ptot1 - Ptot2; } template -void VarManager::FillPair(T1 const &t1, T2 const &t2, float *values) { +void VarManager::FillPair(T1 const& t1, T2 const& t2, float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } float m1 = o2::constants::physics::MassElectron; @@ -4571,9 +4635,9 @@ void VarManager::FillPair(T1 const &t1, T2 const &t2, float *values) { 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()); + 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()); + TMath::Sqrt(v2.Px() * v2.Px() + v2.Py() * v2.Py() + v2.Pz() * v2.Pz()); values[kDeltaPtotTracks] = Ptot1 - Ptot2; values[kPt1] = t1.pt(); @@ -4585,7 +4649,7 @@ void VarManager::FillPair(T1 const &t1, T2 const &t2, float *values) { if (fgUsedVars[kDeltaPhiPair2]) { values[kDeltaPhiPair2] = RecoDecay::constrainAngle( - v1.Phi() - v2.Phi(), -o2::constants::math::PIHalf); + v1.Phi() - v2.Phi(), -o2::constants::math::PIHalf); } if (fgUsedVars[kDeltaEtaPair2]) { @@ -4594,14 +4658,14 @@ 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()); + ? (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()); + (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); + ? TMath::ASin((v1.Theta() - v2.Theta()) / xipair) + : TMath::ASin((v2.Theta() - v1.Theta()) / xipair); } if (fgUsedVars[kOpeningAngle]) { @@ -4624,9 +4688,9 @@ void VarManager::FillPair(T1 const &t1, T2 const &t2, float *values) { // polarization parameters bool useHE = fgUsedVars[kCosThetaHE] || fgUsedVars[kPhiHE]; // helicity frame bool useCS = - fgUsedVars[kCosThetaCS] || fgUsedVars[kPhiCS]; // Collins-Soper frame - bool usePP = fgUsedVars[kCosThetaPP]; // production plane frame - bool useRM = fgUsedVars[kCosThetaRM]; // Random frame + fgUsedVars[kCosThetaCS] || fgUsedVars[kPhiCS]; // Collins-Soper frame + bool usePP = fgUsedVars[kCosThetaPP]; // production plane frame + bool useRM = fgUsedVars[kCosThetaRM]; // Random frame if (useHE || useCS || usePP || useRM) { ROOT::Math::Boost boostv12{v12.BoostToCM()}; @@ -4647,18 +4711,18 @@ void VarManager::FillPair(T1 const &t1, T2 const &t2, float *values) { } if (fgUsedVars[kPhiHE]) { values[kPhiHE] = RecoDecay::constrainAngle( - TMath::ATan2(yaxis_HE.Dot(v_CM), xaxis_HE.Dot(v_CM))); + TMath::ATan2(yaxis_HE.Dot(v_CM), xaxis_HE.Dot(v_CM))); } if (fgUsedVars[kPhiTildeHE]) { if (fgUsedVars[kCosThetaHE] && fgUsedVars[kPhiHE]) { if (values[kCosThetaHE] > 0) { values[kPhiTildeHE] = RecoDecay::constrainAngle( - values[kPhiHE] - - o2::constants::math::PIQuarter); // phi_tilde = phi - pi/4 + values[kPhiHE] - + o2::constants::math::PIQuarter); // phi_tilde = phi - pi/4 } else { values[kPhiTildeHE] = RecoDecay::constrainAngle( - values[kPhiHE] - - 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 + values[kPhiHE] - + 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 } } else { values[kPhiTildeHE] = -999; // not computable @@ -4675,18 +4739,18 @@ void VarManager::FillPair(T1 const &t1, T2 const &t2, float *values) { } if (fgUsedVars[kPhiCS]) { values[kPhiCS] = RecoDecay::constrainAngle( - TMath::ATan2(yaxis_CS.Dot(v_CM), xaxis_CS.Dot(v_CM))); + TMath::ATan2(yaxis_CS.Dot(v_CM), xaxis_CS.Dot(v_CM))); } if (fgUsedVars[kPhiTildeCS]) { if (fgUsedVars[kCosThetaCS] && fgUsedVars[kPhiCS]) { if (values[kCosThetaCS] > 0) { values[kPhiTildeCS] = RecoDecay::constrainAngle( - values[kPhiCS] - - o2::constants::math::PIQuarter); // phi_tilde = phi - pi/4 + values[kPhiCS] - + o2::constants::math::PIQuarter); // phi_tilde = phi - pi/4 } else { values[kPhiTildeCS] = RecoDecay::constrainAngle( - values[kPhiCS] - - 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 + values[kPhiCS] - + 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 } } else { values[kPhiTildeCS] = -999; // not computable @@ -4696,7 +4760,7 @@ void VarManager::FillPair(T1 const &t1, T2 const &t2, float *values) { if (usePP) { ROOT::Math::XYZVector zaxis_PP = - ROOT::Math::XYZVector(v12.Py(), -v12.Px(), 0.f); + ROOT::Math::XYZVector(v12.Py(), -v12.Px(), 0.f); ROOT::Math::XYZVector yaxis_PP{(v12.Vect()).Unit()}; ROOT::Math::XYZVector xaxis_PP{(yaxis_PP.Cross(zaxis_PP)).Unit()}; if (fgUsedVars[kCosThetaPP]) { @@ -4704,18 +4768,18 @@ void VarManager::FillPair(T1 const &t1, T2 const &t2, float *values) { } if (fgUsedVars[kPhiPP]) { values[kPhiPP] = RecoDecay::constrainAngle( - TMath::ATan2(yaxis_PP.Dot(v_CM), xaxis_PP.Dot(v_CM))); + TMath::ATan2(yaxis_PP.Dot(v_CM), xaxis_PP.Dot(v_CM))); } if (fgUsedVars[kPhiTildePP]) { if (fgUsedVars[kCosThetaPP] && fgUsedVars[kPhiPP]) { if (values[kCosThetaPP] > 0) { values[kPhiTildePP] = RecoDecay::constrainAngle( - values[kPhiPP] - - o2::constants::math::PIQuarter); // phi_tilde = phi - pi/4 + values[kPhiPP] - + o2::constants::math::PIQuarter); // phi_tilde = phi - pi/4 } else { values[kPhiTildePP] = RecoDecay::constrainAngle( - values[kPhiPP] - - 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 + values[kPhiPP] - + 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 } } else { values[kPhiTildePP] = -999; // not computable @@ -4727,9 +4791,9 @@ void VarManager::FillPair(T1 const &t1, T2 const &t2, float *values) { double randomCostheta = gRandom->Uniform(-1., 1.); double randomPhi = gRandom->Uniform(0., o2::constants::math::TwoPI); ROOT::Math::XYZVectorF zaxis_RM( - randomCostheta, - std::sqrt(1 - randomCostheta * randomCostheta) * std::cos(randomPhi), - std::sqrt(1 - randomCostheta * randomCostheta) * std::sin(randomPhi)); + randomCostheta, + std::sqrt(1 - randomCostheta * randomCostheta) * std::cos(randomPhi), + std::sqrt(1 - randomCostheta * randomCostheta) * std::sin(randomPhi)); if (fgUsedVars[kCosThetaRM]) { values[kCosThetaRM] = zaxis_RM.Dot(v_CM); } @@ -4746,21 +4810,21 @@ void VarManager::FillPair(T1 const &t1, T2 const &t2, float *values) { // 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(TMath::Cos(values[kRandomPsi2]), + TMath::Sin(values[kRandomPsi2]), 0) + .Unit(); values[kCosThetaStarRandom] = v_CM.Dot(zaxisRandom); values[kCos2ThetaStarRandom] = - values[kCosThetaStarRandom] * values[kCosThetaStarRandom]; + 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(TMath::Cos(values[kMCEventPlaneAngle]), + TMath::Sin(values[kMCEventPlaneAngle]), 0) + .Unit(); values[kMCCosThetaStar] = v_CM.Dot(zaxisTrue); } } @@ -4803,16 +4867,16 @@ void VarManager::FillPair(T1 const &t1, T2 const &t2, float *values) { fgUsedVars[kQuadDCAsigXYZ] || fgUsedVars[kSignQuadDCAsigXY]) { // Quantities based on the barrel tables values[kQuadDCAabsXY] = - std::sqrt((dca1XY * dca1XY + dca2XY * dca2XY) / 2); + std::sqrt((dca1XY * dca1XY + dca2XY * dca2XY) / 2); values[kQuadDCAsigXY] = - std::sqrt((dca1sigXY * dca1sigXY + dca2sigXY * dca2sigXY) / 2); + 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); + 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); + t1.sign() * t2.sign() * TMath::Sign(1., dca1sigXY) * + TMath::Sign(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(); @@ -4820,19 +4884,19 @@ void VarManager::FillPair(T1 const &t1, T2 const &t2, float *values) { values[kQuadDCAsigXYZ] = -999; } else { double chi2t1 = - (dca1XY * dca1XY * t1.cZZ() + dca1Z * dca1Z * t1.cYY() - - 2. * dca1XY * dca1Z * t1.cZY()) / - det1; + (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; + (dca2XY * dca2XY * t2.cZZ() + dca2Z * dca2Z * t2.cYY() - + 2. * dca2XY * dca2Z * t2.cZY()) / + det2; double dca1sigXYZ = std::sqrt(std::abs(chi2t1) / 2.); double dca2sigXYZ = std::sqrt(std::abs(chi2t2) / 2.); values[kQuadDCAsigXYZ] = std::sqrt( - (dca1sigXYZ * dca1sigXYZ + dca2sigXYZ * dca2sigXYZ) / 2); + (dca1sigXYZ * dca1sigXYZ + dca2sigXYZ * dca2sigXYZ) / 2); } } } @@ -4847,7 +4911,7 @@ void VarManager::FillPair(T1 const &t1, T2 const &t2, float *values) { double dca2Y = t2.fwdDcaY(); double dca2XY = std::sqrt(dca2X * dca2X + dca2Y * dca2Y); values[kQuadDCAabsXY] = - std::sqrt((dca1XY * dca1XY + dca2XY * dca2XY) / 2.); + std::sqrt((dca1XY * dca1XY + dca2XY * dca2XY) / 2.); } } if constexpr ((pairType == kElectronMuon) && @@ -4864,10 +4928,11 @@ void VarManager::FillPair(T1 const &t1, T2 const &t2, float *values) { // change_start: rotation pair template -void VarManager::FillPairRotation(T1 const &t1, T2 const &t2, int rotation, - float *values) { +void VarManager::FillPairRotation(T1 const& t1, T2 const& t2, int rotation, + float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } float m1 = o2::constants::physics::MassElectron; @@ -4923,9 +4988,9 @@ void VarManager::FillPairRotation(T1 const &t1, T2 const &t2, int rotation, 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()); + 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()); + TMath::Sqrt(v2.Px() * v2.Px() + v2.Py() * v2.Py() + v2.Pz() * v2.Pz()); values[kDeltaPtotTracks] = Ptot1 - Ptot2; values[kPt1] = t1.pt(); @@ -4937,10 +5002,11 @@ void VarManager::FillPairRotation(T1 const &t1, T2 const &t2, int rotation, } template -void VarManager::FillPairCollision(const C &collision, T1 const &t1, - T2 const &t2, float *values) { +void VarManager::FillPairCollision(const C& collision, T1 const& t1, + T2 const& t2, float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } if constexpr ((pairType == kDecayToEE) && @@ -4954,14 +5020,14 @@ void VarManager::FillPairCollision(const C &collision, T1 const &t1, auto trackPart1 = getTrackPar(t1); std::array dca1{1e10f, 1e10f}; trackPart1.propagateParamToDCA( - {collision.posX(), collision.posY(), collision.posZ()}, fgMagField, - &dca1); + {collision.posX(), collision.posY(), collision.posZ()}, fgMagField, + &dca1); auto trackPart2 = getTrackPar(t2); std::array dca2{1e10f, 1e10f}; trackPart2.propagateParamToDCA( - {collision.posX(), collision.posY(), collision.posZ()}, fgMagField, - &dca2); + {collision.posX(), collision.posY(), collision.posZ()}, fgMagField, + &dca2); // Recalculated quantities double dca1XY = dca1[0]; @@ -4974,16 +5040,16 @@ void VarManager::FillPairCollision(const C &collision, T1 const &t1, double dca2sigZ = dca2Z / std::sqrt(t2.cZZ()); values[kQuadDCAabsXY] = - std::sqrt((dca1XY * dca1XY + dca2XY * dca2XY) / 2); + std::sqrt((dca1XY * dca1XY + dca2XY * dca2XY) / 2); values[kQuadDCAsigXY] = - std::sqrt((dca1sigXY * dca1sigXY + dca2sigXY * dca2sigXY) / 2); + 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); + 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); + t1.sign() * t2.sign() * TMath::Sign(1., dca1sigXY) * + TMath::Sign(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(); @@ -5001,7 +5067,7 @@ void VarManager::FillPairCollision(const C &collision, T1 const &t1, double dca2sigXYZ = std::sqrt(std::abs(chi2t2) / 2.); values[kQuadDCAsigXYZ] = - std::sqrt((dca1sigXYZ * dca1sigXYZ + dca2sigXYZ * dca2sigXYZ) / 2); + std::sqrt((dca1sigXYZ * dca1sigXYZ + dca2sigXYZ * dca2sigXYZ) / 2); } } } @@ -5009,11 +5075,12 @@ void VarManager::FillPairCollision(const C &collision, T1 const &t1, template -void VarManager::FillPairCollisionMatCorr(C const &collision, T1 const &t1, - T2 const &t2, M const &materialCorr, - P const &propagator, float *values) { +void VarManager::FillPairCollisionMatCorr(C const& collision, T1 const& t1, + T2 const& t2, M const& materialCorr, + P const& propagator, float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } if constexpr ((pairType == kDecayToEE) && @@ -5030,8 +5097,8 @@ void VarManager::FillPairCollisionMatCorr(C const &collision, T1 const &t1, // trackPar.propagateParamToDCA({collision.posX(), collision.posY(), // collision.posZ()}, fgMagField, &dca); propagator->propagateToDCABxByBz( - {collision.posX(), collision.posY(), collision.posZ()}, trackPart1, - 2.f, materialCorr, &dca1); + {collision.posX(), collision.posY(), collision.posZ()}, trackPart1, + 2.f, materialCorr, &dca1); getPxPyPz(trackPart1, pVect1); auto trackPart2 = getTrackPar(t2); @@ -5040,8 +5107,8 @@ void VarManager::FillPairCollisionMatCorr(C const &collision, T1 const &t1, // trackPar.propagateParamToDCA({collision.posX(), collision.posY(), // collision.posZ()}, fgMagField, &dca); propagator->propagateToDCABxByBz( - {collision.posX(), collision.posY(), collision.posZ()}, trackPart2, - 2.f, materialCorr, &dca2); + {collision.posX(), collision.posY(), collision.posZ()}, trackPart2, + 2.f, materialCorr, &dca2); getPxPyPz(trackPart2, pVect2); // Recalculated quantities @@ -5055,16 +5122,16 @@ void VarManager::FillPairCollisionMatCorr(C const &collision, T1 const &t1, double dca2sigZ = dca2Z / std::sqrt(t2.cZZ()); values[kQuadDCAabsXY] = - std::sqrt((dca1XY * dca1XY + dca2XY * dca2XY) / 2); + std::sqrt((dca1XY * dca1XY + dca2XY * dca2XY) / 2); values[kQuadDCAsigXY] = - std::sqrt((dca1sigXY * dca1sigXY + dca2sigXY * dca2sigXY) / 2); + 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); + 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); + t1.sign() * t2.sign() * TMath::Sign(1., dca1sigXY) * + TMath::Sign(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(); @@ -5082,18 +5149,19 @@ void VarManager::FillPairCollisionMatCorr(C const &collision, T1 const &t1, double dca2sigXYZ = std::sqrt(std::abs(chi2t2) / 2.); values[kQuadDCAsigXYZ] = - std::sqrt((dca1sigXYZ * dca1sigXYZ + dca2sigXYZ * dca2sigXYZ) / 2); + std::sqrt((dca1sigXYZ * dca1sigXYZ + dca2sigXYZ * dca2sigXYZ) / 2); } } } } template -void VarManager::FillTriple(T1 const &t1, T2 const &t2, T3 const &t3, - float *values, PairCandidateType pairType) { +void VarManager::FillTriple(T1 const& t1, T2 const& t2, T3 const& t3, + float* values, PairCandidateType pairType) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } if (pairType == kTripleCandidateToEEPhoton) { float m1 = o2::constants::physics::MassElectron; @@ -5161,12 +5229,13 @@ void VarManager::FillTriple(T1 const &t1, T2 const &t2, T3 const &t3, } template -void VarManager::FillPairME(T1 const &t1, T2 const &t2, float *values) { +void VarManager::FillPairME(T1 const& t1, T2 const& t2, float* values) +{ // // Lightweight fill function called from the innermost event mixing loop // if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } float m1 = o2::constants::physics::MassElectron; @@ -5206,7 +5275,7 @@ void VarManager::FillPairME(T1 const &t1, T2 const &t2, float *values) { if (fgUsedVars[kDeltaPhiPair2]) { values[kDeltaPhiPair2] = RecoDecay::constrainAngle( - v1.Phi() - v2.Phi(), -o2::constants::math::PIHalf); + v1.Phi() - v2.Phi(), -o2::constants::math::PIHalf); } if (fgUsedVars[kDeltaEtaPair2]) { @@ -5216,9 +5285,9 @@ void VarManager::FillPairME(T1 const &t1, T2 const &t2, float *values) { // polarization parameters bool useHE = fgUsedVars[kCosThetaHE] || fgUsedVars[kPhiHE]; // helicity frame bool useCS = - fgUsedVars[kCosThetaCS] || fgUsedVars[kPhiCS]; // Collins-Soper frame - bool usePP = fgUsedVars[kCosThetaPP]; // production plane frame - bool useRM = fgUsedVars[kCosThetaRM]; // Random frame + fgUsedVars[kCosThetaCS] || fgUsedVars[kPhiCS]; // Collins-Soper frame + bool usePP = fgUsedVars[kCosThetaPP]; // production plane frame + bool useRM = fgUsedVars[kCosThetaRM]; // Random frame if (useHE || useCS || usePP || useRM) { ROOT::Math::Boost boostv12{v12.BoostToCM()}; @@ -5239,18 +5308,18 @@ void VarManager::FillPairME(T1 const &t1, T2 const &t2, float *values) { } if (fgUsedVars[kPhiHE]) { values[kPhiHE] = RecoDecay::constrainAngle( - TMath::ATan2(yaxis_HE.Dot(v_CM), xaxis_HE.Dot(v_CM))); + TMath::ATan2(yaxis_HE.Dot(v_CM), xaxis_HE.Dot(v_CM))); } if (fgUsedVars[kPhiTildeHE]) { if (fgUsedVars[kCosThetaHE] && fgUsedVars[kPhiHE]) { if (values[kCosThetaHE] > 0) { values[kPhiTildeHE] = RecoDecay::constrainAngle( - values[kPhiHE] - - o2::constants::math::PIQuarter); // phi_tilde = phi - pi/4 + values[kPhiHE] - + o2::constants::math::PIQuarter); // phi_tilde = phi - pi/4 } else { values[kPhiTildeHE] = RecoDecay::constrainAngle( - values[kPhiHE] - - 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 + values[kPhiHE] - + 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 } } else { values[kPhiTildeHE] = -999; // not computable @@ -5267,18 +5336,18 @@ void VarManager::FillPairME(T1 const &t1, T2 const &t2, float *values) { } if (fgUsedVars[kPhiCS]) { values[kPhiCS] = RecoDecay::constrainAngle( - TMath::ATan2(yaxis_CS.Dot(v_CM), xaxis_CS.Dot(v_CM))); + TMath::ATan2(yaxis_CS.Dot(v_CM), xaxis_CS.Dot(v_CM))); } if (fgUsedVars[kPhiTildeCS]) { if (fgUsedVars[kCosThetaCS] && fgUsedVars[kPhiCS]) { if (values[kCosThetaCS] > 0) { values[kPhiTildeCS] = RecoDecay::constrainAngle( - values[kPhiCS] - - o2::constants::math::PIQuarter); // phi_tilde = phi - pi/4 + values[kPhiCS] - + o2::constants::math::PIQuarter); // phi_tilde = phi - pi/4 } else { values[kPhiTildeCS] = RecoDecay::constrainAngle( - values[kPhiCS] - - 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 + values[kPhiCS] - + 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 } } else { values[kPhiTildeCS] = -999; // not computable @@ -5288,7 +5357,7 @@ void VarManager::FillPairME(T1 const &t1, T2 const &t2, float *values) { if (usePP) { ROOT::Math::XYZVector zaxis_PP = - ROOT::Math::XYZVector(v12.Py(), -v12.Px(), 0.f); + ROOT::Math::XYZVector(v12.Py(), -v12.Px(), 0.f); ROOT::Math::XYZVector yaxis_PP{(v12.Vect()).Unit()}; ROOT::Math::XYZVector xaxis_PP{(yaxis_PP.Cross(zaxis_PP)).Unit()}; if (fgUsedVars[kCosThetaPP]) { @@ -5296,18 +5365,18 @@ void VarManager::FillPairME(T1 const &t1, T2 const &t2, float *values) { } if (fgUsedVars[kPhiPP]) { values[kPhiPP] = RecoDecay::constrainAngle( - TMath::ATan2(yaxis_PP.Dot(v_CM), xaxis_PP.Dot(v_CM))); + TMath::ATan2(yaxis_PP.Dot(v_CM), xaxis_PP.Dot(v_CM))); } if (fgUsedVars[kPhiTildePP]) { if (fgUsedVars[kCosThetaPP] && fgUsedVars[kPhiPP]) { if (values[kCosThetaPP] > 0) { values[kPhiTildePP] = RecoDecay::constrainAngle( - values[kPhiPP] - - o2::constants::math::PIQuarter); // phi_tilde = phi - pi/4 + values[kPhiPP] - + o2::constants::math::PIQuarter); // phi_tilde = phi - pi/4 } else { values[kPhiTildePP] = RecoDecay::constrainAngle( - values[kPhiPP] - - 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 + values[kPhiPP] - + 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 } } else { values[kPhiTildePP] = -999; // not computable @@ -5319,9 +5388,9 @@ void VarManager::FillPairME(T1 const &t1, T2 const &t2, float *values) { double randomCostheta = gRandom->Uniform(-1., 1.); double randomPhi = gRandom->Uniform(0., o2::constants::math::TwoPI); ROOT::Math::XYZVectorF zaxis_RM( - randomCostheta, - std::sqrt(1 - randomCostheta * randomCostheta) * std::cos(randomPhi), - std::sqrt(1 - randomCostheta * randomCostheta) * std::sin(randomPhi)); + randomCostheta, + std::sqrt(1 - randomCostheta * randomCostheta) * std::cos(randomPhi), + std::sqrt(1 - randomCostheta * randomCostheta) * std::sin(randomPhi)); if (fgUsedVars[kCosThetaRM]) { values[kCosThetaRM] = zaxis_RM.Dot(v_CM); } @@ -5340,13 +5409,13 @@ void VarManager::FillPairME(T1 const &t1, T2 const &t2, float *values) { 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 + 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[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()) + @@ -5365,10 +5434,10 @@ void VarManager::FillPairME(T1 const &t1, T2 const &t2, float *values) { float V2ME_EP = values[kV2EP1] * values[kCos2DeltaPhiMu1] + values[kV2EP2] * values[kCos2DeltaPhiMu2]; values[kV2ME_SP] = - std::isnan(V2ME_SP) || std::isinf(V2ME_SP) ? 0. : V2ME_SP; + std::isnan(V2ME_SP) || std::isinf(V2ME_SP) ? 0. : V2ME_SP; values[kWV2ME_SP] = std::isnan(V2ME_SP) || std::isinf(V2ME_SP) ? 0. : 1.0; values[kV2ME_EP] = - std::isnan(V2ME_EP) || std::isinf(V2ME_EP) ? 0. : V2ME_EP; + std::isnan(V2ME_EP) || std::isinf(V2ME_EP) ? 0. : V2ME_EP; values[kWV2ME_EP] = std::isnan(V2ME_EP) || std::isinf(V2ME_EP) ? 0. : 1.0; // Cumulant part @@ -5378,20 +5447,20 @@ void VarManager::FillPairME(T1 const &t1, T2 const &t2, float *values) { values[kV24p] * values[kCos2DeltaPhiMu2]; values[kV22ME] = (std::isnan(V22ME) || std::isinf(V22ME) || std::isnan(V24ME) || std::isinf(V24ME)) - ? 0. - : V22ME; + ? 0. + : V22ME; values[kWV22ME] = (std::isnan(V22ME) || std::isinf(V22ME) || std::isnan(V24ME) || std::isinf(V24ME)) - ? 0. - : 1.0; + ? 0. + : 1.0; values[kV24ME] = (std::isnan(V22ME) || std::isinf(V22ME) || std::isnan(V24ME) || std::isinf(V24ME)) - ? 0. - : V24ME; + ? 0. + : V24ME; values[kWV24ME] = (std::isnan(V22ME) || std::isinf(V22ME) || std::isnan(V24ME) || std::isinf(V24ME)) - ? 0. - : 1.0; + ? 0. + : 1.0; // coherent Jpsi A2 bool useCoherentJpsiA2 = fgUsedVars[kA2EPME_TPC] || @@ -5400,7 +5469,7 @@ void VarManager::FillPairME(T1 const &t1, T2 const &t2, float *values) { if (useCoherentJpsiA2) { ROOT::Math::Boost boostv12{v12.BoostToCM()}; ROOT::Math::PtEtaPhiMVector v_daughter = - boostv12(t1.sign() > 0 ? v1 : v2); + boostv12(t1.sign() > 0 ? v1 : v2); float Psi2A = t1.sign() > 0 ? Psi2A1 : Psi2A2; float Psi2B = t1.sign() > 0 ? Psi2B1 : Psi2B2; float Psi2C = t1.sign() > 0 ? Psi2C1 : Psi2C2; @@ -5408,31 +5477,31 @@ void VarManager::FillPairME(T1 const &t1, T2 const &t2, float *values) { // reaction plane float phi = - RecoDecay::constrainAngle(v_daughter.Phi(), -o2::constants::math::PI); + 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]; + ? 2. * TMath::Pi() - 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] > TMath::Pi() + ? 2. * TMath::Pi() - 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] > TMath::Pi() + ? 2. * TMath::Pi() - 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]; + ? 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]; + ? 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]; + ? 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)); @@ -5441,11 +5510,11 @@ void VarManager::FillPairME(T1 const &t1, T2 const &t2, float *values) { 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; + 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; + 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; + std::isnan(A2_FT0C) || std::isinf(A2_FT0C) ? -999. : A2_FT0C; } if constexpr ((fillMap & ReducedEventQvectorExtra) > 0) { @@ -5457,98 +5526,98 @@ void VarManager::FillPairME(T1 const &t1, T2 const &t2, float *values) { TMath::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[kMultDimuonsME] * + (values[kS31A] - 3. * values[kS11A] * values[kS12A] + + 2. * values[kS13A]); values[kCORR2POIME] = (P2 * conj(Q21)).real() / values[kM01POIME]; values[kCORR4POIME] = - (P2 * Q21 * conj(Q21) * conj(Q21) - P2 * Q21 * conj(Q42) - - 2. * values[kS12A] * P2 * conj(Q21) + 2. * P2 * conj(Q23)) - .real() / - values[kM0111POIME]; + (P2 * Q21 * conj(Q21) * conj(Q21) - P2 * Q21 * conj(Q42) - + 2. * values[kS12A] * P2 * conj(Q21) + 2. * P2 * conj(Q23)) + .real() / + values[kM0111POIME]; values[kM01POIoverMpME] = - values[kMultDimuonsME] > 0 && !(std::isnan(values[kM01POIME]) || - std::isinf(values[kM01POIME]) || - std::isnan(values[kCORR2POIME]) || - std::isinf(values[kCORR2POIME]) || - std::isnan(values[kM0111POIME]) || - std::isinf(values[kM0111POIME]) || - std::isnan(values[kCORR4POIME]) || - std::isinf(values[kCORR4POIME])) - ? values[kM01POIME] / values[kMultDimuonsME] - : 0; + values[kMultDimuonsME] > 0 && !(std::isnan(values[kM01POIME]) || + std::isinf(values[kM01POIME]) || + std::isnan(values[kCORR2POIME]) || + std::isinf(values[kCORR2POIME]) || + std::isnan(values[kM0111POIME]) || + std::isinf(values[kM0111POIME]) || + std::isnan(values[kCORR4POIME]) || + std::isinf(values[kCORR4POIME])) + ? values[kM01POIME] / values[kMultDimuonsME] + : 0; values[kM0111POIoverMpME] = - values[kMultDimuonsME] > 0 && !(std::isnan(values[kM0111POIME]) || - std::isinf(values[kM0111POIME]) || - std::isnan(values[kCORR4POIME]) || - std::isinf(values[kCORR4POIME]) || - std::isnan(values[kM01POIME]) || - std::isinf(values[kM01POIME]) || - std::isnan(values[kCORR2POIME]) || - std::isinf(values[kCORR2POIME])) - ? values[kM0111POIME] / values[kMultDimuonsME] - : 0; + values[kMultDimuonsME] > 0 && !(std::isnan(values[kM0111POIME]) || + std::isinf(values[kM0111POIME]) || + std::isnan(values[kCORR4POIME]) || + std::isinf(values[kCORR4POIME]) || + std::isnan(values[kM01POIME]) || + std::isinf(values[kM01POIME]) || + std::isnan(values[kCORR2POIME]) || + std::isinf(values[kCORR2POIME])) + ? values[kM0111POIME] / values[kMultDimuonsME] + : 0; values[kM11REFoverMpME] = - values[kMultDimuonsME] > 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[kMultDimuonsME] - : 0; + values[kMultDimuonsME] > 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[kMultDimuonsME] + : 0; values[kM1111REFoverMpME] = - values[kMultDimuonsME] > 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[kMultDimuonsME] - : 0; + values[kMultDimuonsME] > 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[kMultDimuonsME] + : 0; values[kCORR2REFbydimuonsME] = - std::isnan(values[kM11REFoverMpME]) || - std::isinf(values[kM11REFoverMpME]) || - std::isnan(values[kCORR2REF]) || - std::isinf(values[kCORR2REF]) || - std::isnan(values[kM1111REFoverMpME]) || - std::isinf(values[kM1111REFoverMpME]) || - std::isnan(values[kCORR4REF]) || std::isinf(values[kCORR4REF]) - ? 0 - : values[kCORR2REF]; + std::isnan(values[kM11REFoverMpME]) || + std::isinf(values[kM11REFoverMpME]) || + std::isnan(values[kCORR2REF]) || + std::isinf(values[kCORR2REF]) || + std::isnan(values[kM1111REFoverMpME]) || + std::isinf(values[kM1111REFoverMpME]) || + std::isnan(values[kCORR4REF]) || std::isinf(values[kCORR4REF]) + ? 0 + : values[kCORR2REF]; values[kCORR4REFbydimuonsME] = - std::isnan(values[kM1111REFoverMpME]) || - std::isinf(values[kM1111REFoverMpME]) || - std::isnan(values[kCORR4REF]) || - std::isinf(values[kCORR4REF]) || - std::isnan(values[kM11REFoverMpME]) || - std::isinf(values[kM11REFoverMpME]) || - std::isnan(values[kCORR2REF]) || std::isinf(values[kCORR2REF]) - ? 0 - : values[kCORR4REF]; + std::isnan(values[kM1111REFoverMpME]) || + std::isinf(values[kM1111REFoverMpME]) || + std::isnan(values[kCORR4REF]) || + std::isinf(values[kCORR4REF]) || + std::isnan(values[kM11REFoverMpME]) || + std::isinf(values[kM11REFoverMpME]) || + std::isnan(values[kCORR2REF]) || std::isinf(values[kCORR2REF]) + ? 0 + : values[kCORR4REF]; values[kCORR2POIME] = std::isnan(values[kCORR2POIME]) || - std::isinf(values[kCORR2POIME]) || - std::isnan(values[kM01POIME]) || - std::isinf(values[kM01POIME]) || - std::isnan(values[kCORR4POIME]) || - std::isinf(values[kCORR4POIME]) || - std::isnan(values[kM0111POIME]) || - std::isinf(values[kM0111POIME]) - ? 0 - : values[kCORR2POIME]; + std::isinf(values[kCORR2POIME]) || + std::isnan(values[kM01POIME]) || + std::isinf(values[kM01POIME]) || + std::isnan(values[kCORR4POIME]) || + std::isinf(values[kCORR4POIME]) || + std::isnan(values[kM0111POIME]) || + std::isinf(values[kM0111POIME]) + ? 0 + : values[kCORR2POIME]; values[kCORR4POIME] = - std::isnan(values[kCORR4POIME]) || std::isinf(values[kCORR4POIME]) || - std::isnan(values[kM0111POIME]) || - std::isinf(values[kM0111POIME]) || - std::isnan(values[kCORR2POIME]) || - std::isinf(values[kCORR2POIME]) || - std::isnan(values[kM01POIME]) || std::isinf(values[kM01POIME]) - ? 0 - : values[kCORR4POIME]; + std::isnan(values[kCORR4POIME]) || std::isinf(values[kCORR4POIME]) || + std::isnan(values[kM0111POIME]) || + std::isinf(values[kM0111POIME]) || + std::isnan(values[kCORR2POIME]) || + std::isinf(values[kCORR2POIME]) || + std::isnan(values[kM01POIME]) || std::isinf(values[kM01POIME]) + ? 0 + : values[kCORR4POIME]; } } if constexpr (pairType == kDecayToMuMu) { @@ -5560,7 +5629,7 @@ void VarManager::FillPairME(T1 const &t1, T2 const &t2, float *values) { double dca2Y = t2.fwdDcaY(); double dca2XY = std::sqrt(dca2X * dca2X + dca2Y * dca2Y); values[kQuadDCAabsXY] = - std::sqrt((dca1XY * dca1XY + dca2XY * dca2XY) / 2.); + std::sqrt((dca1XY * dca1XY + dca2XY * dca2XY) / 2.); } } if (fgUsedVars[kPairPhiv]) { @@ -5569,8 +5638,9 @@ void VarManager::FillPairME(T1 const &t1, T2 const &t2, float *values) { } template -void VarManager::FillPairRotation_ME(T const &t1, T const &t2, int rotation, - float *values) { +void VarManager::FillPairRotation_ME(T const& t1, T const& t2, int rotation, + float* values) +{ if (!values) { values = fgValues; } @@ -5602,9 +5672,9 @@ void VarManager::FillPairRotation_ME(T const &t1, T const &t2, int rotation, 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()); + 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()); + TMath::Sqrt(v2.Px() * v2.Px() + v2.Py() * v2.Py() + v2.Pz() * v2.Pz()); values[kDeltaPtotTracks] = Ptot1 - Ptot2; values[kPt1] = t1.pt; @@ -5616,9 +5686,10 @@ void VarManager::FillPairRotation_ME(T const &t1, T const &t2, int rotation, } template -void VarManager::FillPairMEAcrossTFs(T const &t1, T const &t2, float *values) { +void VarManager::FillPairMEAcrossTFs(T const& t1, T const& t2, float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } float m1 = o2::constants::physics::MassElectron; @@ -5638,29 +5709,29 @@ 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(TMath::Cos(values[kRandomPsi2]), + TMath::Sin(values[kRandomPsi2]), 0) + .Unit(); values[kCosThetaStarRandom] = v_CM.Dot(zaxisRandom); values[kCos2ThetaStarRandom] = - values[kCosThetaStarRandom] * values[kCosThetaStarRandom]; + 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(TMath::Cos(values[kPsi2C]), + TMath::Sin(values[kPsi2C]), 0) + .Unit(); values[kCosThetaStarFT0C] = v_CM.Dot(zaxisFT0C); values[kAbsCosThetaStarFT0C] = std::abs(values[kCosThetaStarFT0C]); values[kCos2ThetaStarFT0C] = - values[kCosThetaStarFT0C] * values[kCosThetaStarFT0C]; + values[kCosThetaStarFT0C] * values[kCosThetaStarFT0C]; } } bool useCoherentJpsiA2 = - fgUsedVars[kA2EP_TPC] || fgUsedVars[kA2EP_FT0A] || fgUsedVars[kA2EP_FT0C]; + fgUsedVars[kA2EP_TPC] || fgUsedVars[kA2EP_FT0A] || fgUsedVars[kA2EP_FT0C]; if (useCoherentJpsiA2) { ROOT::Math::Boost boostv12{v12.BoostToCM()}; ROOT::Math::PtEtaPhiMVector v_daughter = boostv12(v1); @@ -5670,29 +5741,29 @@ void VarManager::FillPairMEAcrossTFs(T const &t1, T const &t2, float *values) { // reaction plane float phi = - RecoDecay::constrainAngle(v_daughter.Phi(), -o2::constants::math::PI); + 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]; + ? 2. * TMath::Pi() - 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]; + ? 2. * TMath::Pi() - 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]; + ? 2. * TMath::Pi() - 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]; + ? 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]; + ? 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]; + ? 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)); @@ -5701,18 +5772,19 @@ void VarManager::FillPairMEAcrossTFs(T const &t1, T const &t2, float *values) { 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; + 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; + 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; + std::isnan(A2RP_FT0C) || std::isinf(A2RP_FT0C) ? -999. : A2RP_FT0C; } } template -void VarManager::FillPairMC(T1 const &t1, T2 const &t2, float *values) { +void VarManager::FillPairMC(T1 const& t1, T2 const& t2, float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } float m1 = o2::constants::physics::MassElectron; @@ -5754,11 +5826,11 @@ void VarManager::FillPairMC(T1 const &t1, T2 const &t2, float *values) { // polarization parameters bool useHE = - fgUsedVars[kMCCosThetaHE] || fgUsedVars[kMCPhiHE]; // helicity frame + fgUsedVars[kMCCosThetaHE] || fgUsedVars[kMCPhiHE]; // helicity frame bool useCS = - fgUsedVars[kMCCosThetaCS] || fgUsedVars[kMCPhiCS]; // Collins-Soper frame - bool usePP = fgUsedVars[kMCCosThetaPP]; // production plane frame - bool useRM = fgUsedVars[kMCCosThetaRM]; // Random frame + fgUsedVars[kMCCosThetaCS] || fgUsedVars[kMCPhiCS]; // Collins-Soper frame + bool usePP = fgUsedVars[kMCCosThetaPP]; // production plane frame + bool useRM = fgUsedVars[kMCCosThetaRM]; // Random frame if (useHE || useCS || usePP || useRM) { ROOT::Math::Boost boostv12{v12.BoostToCM()}; @@ -5779,18 +5851,18 @@ void VarManager::FillPairMC(T1 const &t1, T2 const &t2, float *values) { } if (fgUsedVars[kMCPhiHE]) { values[kMCPhiHE] = RecoDecay::constrainAngle( - TMath::ATan2(yaxis_HE.Dot(v_CM), xaxis_HE.Dot(v_CM))); + TMath::ATan2(yaxis_HE.Dot(v_CM), xaxis_HE.Dot(v_CM))); } if (fgUsedVars[kMCPhiTildeHE]) { if (fgUsedVars[kMCCosThetaHE] && fgUsedVars[kMCPhiHE]) { if (values[kMCCosThetaHE] > 0) { values[kMCPhiTildeHE] = RecoDecay::constrainAngle( - values[kMCPhiHE] - - o2::constants::math::PIQuarter); // phi_tilde = phi - pi/4 + values[kMCPhiHE] - + o2::constants::math::PIQuarter); // phi_tilde = phi - pi/4 } else { values[kMCPhiTildeHE] = RecoDecay::constrainAngle( - values[kMCPhiHE] - - 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 + values[kMCPhiHE] - + 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 } } else { values[kMCPhiTildeHE] = -999; // not computable @@ -5807,18 +5879,18 @@ void VarManager::FillPairMC(T1 const &t1, T2 const &t2, float *values) { } if (fgUsedVars[kMCPhiCS]) { values[kMCPhiCS] = RecoDecay::constrainAngle( - TMath::ATan2(yaxis_CS.Dot(v_CM), xaxis_CS.Dot(v_CM))); + TMath::ATan2(yaxis_CS.Dot(v_CM), xaxis_CS.Dot(v_CM))); } if (fgUsedVars[kMCPhiTildeCS]) { if (fgUsedVars[kMCCosThetaCS] && fgUsedVars[kMCPhiCS]) { if (values[kMCCosThetaCS] > 0) { values[kMCPhiTildeCS] = RecoDecay::constrainAngle( - values[kMCPhiCS] - - o2::constants::math::PIQuarter); // phi_tilde = phi - pi/4 + values[kMCPhiCS] - + o2::constants::math::PIQuarter); // phi_tilde = phi - pi/4 } else { values[kMCPhiTildeCS] = RecoDecay::constrainAngle( - values[kMCPhiCS] - - 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 + values[kMCPhiCS] - + 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 } } else { values[kMCPhiTildeCS] = -999; // not computable @@ -5828,7 +5900,7 @@ void VarManager::FillPairMC(T1 const &t1, T2 const &t2, float *values) { if (usePP) { ROOT::Math::XYZVector zaxis_PP = - ROOT::Math::XYZVector(v12.Py(), -v12.Px(), 0.f); + ROOT::Math::XYZVector(v12.Py(), -v12.Px(), 0.f); ROOT::Math::XYZVector yaxis_PP{v12.Vect().Unit()}; ROOT::Math::XYZVector xaxis_PP{(yaxis_PP.Cross(zaxis_PP)).Unit()}; if (fgUsedVars[kMCCosThetaPP]) { @@ -5836,18 +5908,18 @@ void VarManager::FillPairMC(T1 const &t1, T2 const &t2, float *values) { } if (fgUsedVars[kMCPhiPP]) { values[kMCPhiPP] = RecoDecay::constrainAngle( - TMath::ATan2(yaxis_PP.Dot(v_CM), xaxis_PP.Dot(v_CM))); + TMath::ATan2(yaxis_PP.Dot(v_CM), xaxis_PP.Dot(v_CM))); } if (fgUsedVars[kMCPhiTildePP]) { if (fgUsedVars[kMCCosThetaPP] && fgUsedVars[kMCPhiPP]) { if (values[kMCCosThetaPP] > 0) { values[kMCPhiTildePP] = RecoDecay::constrainAngle( - values[kMCPhiPP] - - o2::constants::math::PIQuarter); // phi_tilde = phi - pi/4 + values[kMCPhiPP] - + o2::constants::math::PIQuarter); // phi_tilde = phi - pi/4 } else { values[kMCPhiTildePP] = RecoDecay::constrainAngle( - values[kMCPhiPP] - - 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 + values[kMCPhiPP] - + 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 } } else { values[kMCPhiTildePP] = -999; // not computable @@ -5859,9 +5931,9 @@ void VarManager::FillPairMC(T1 const &t1, T2 const &t2, float *values) { double randomCostheta = gRandom->Uniform(-1., 1.); double randomPhi = gRandom->Uniform(0., o2::constants::math::TwoPI); ROOT::Math::XYZVectorF zaxis_RM( - randomCostheta, - std::sqrt(1 - randomCostheta * randomCostheta) * std::cos(randomPhi), - std::sqrt(1 - randomCostheta * randomCostheta) * std::sin(randomPhi)); + randomCostheta, + std::sqrt(1 - randomCostheta * randomCostheta) * std::cos(randomPhi), + std::sqrt(1 - randomCostheta * randomCostheta) * std::sin(randomPhi)); if (fgUsedVars[kMCCosThetaRM]) { values[kMCCosThetaRM] = zaxis_RM.Dot(v_CM); } @@ -5878,18 +5950,18 @@ void VarManager::FillPairMC(T1 const &t1, T2 const &t2, float *values) { // 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(TMath::Cos(values[kRandomPsi2]), + TMath::Sin(values[kRandomPsi2]), 0) + .Unit(); values[kCosThetaStarRandom] = v_CM.Dot(zaxisRandom); values[kCos2ThetaStarRandom] = - values[kCosThetaStarRandom] * values[kCosThetaStarRandom]; + 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(TMath::Cos(values[kMCEventPlaneAngle]), + TMath::Sin(values[kMCEventPlaneAngle]), 0) + .Unit(); values[kMCCosThetaStar] = v_CM.Dot(zaxisTrue); } @@ -5897,40 +5969,41 @@ void VarManager::FillPairMC(T1 const &t1, T2 const &t2, float *values) { fgUsedVars[kCos2DeltaPhi_MC] || fgUsedVars[kCos2DeltaPhiPP_MC]) { ROOT::Math::Boost boostv12{v12.BoostToCM()}; ROOT::Math::PtEtaPhiMVector v_daughter = - boostv12(t1.pdgCode() > 0 ? v1 : v2); + boostv12(t1.pdgCode() > 0 ? v1 : v2); // reaction plane float phi = - RecoDecay::constrainAngle(v_daughter.Phi(), -o2::constants::math::PI); + RecoDecay::constrainAngle(v_daughter.Phi(), -o2::constants::math::PI); values[kDeltaPhi_Random] = phi - values[kRandomPsi2]; values[kDeltaPhi_Random] = - values[kDeltaPhi_Random] > o2::constants::math::PI - ? o2::constants::math::TwoPI - values[kDeltaPhi_Random] - : values[kDeltaPhi_Random]; + values[kDeltaPhi_Random] > o2::constants::math::PI + ? o2::constants::math::TwoPI - values[kDeltaPhi_Random] + : values[kDeltaPhi_Random]; values[kDeltaPhi_MC] = phi - values[kMCEventPlaneAngle]; values[kDeltaPhi_MC] = - values[kDeltaPhi_MC] > o2::constants::math::PI - ? o2::constants::math::TwoPI - values[kDeltaPhi_MC] - : values[kDeltaPhi_MC]; + values[kDeltaPhi_MC] > o2::constants::math::PI + ? o2::constants::math::TwoPI - values[kDeltaPhi_MC] + : values[kDeltaPhi_MC]; // 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_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]; + ? 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])); + TMath::Cos(2. * (phi - values[kMCEventPlaneAngle])); } } template -void VarManager::FillTripleMC(T1 const &t1, T2 const &t2, T3 const &t3, - float *values) { +void VarManager::FillTripleMC(T1 const& t1, T2 const& t2, T3 const& t3, + float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } if constexpr (candidateType == kTripleCandidateToEEPhoton) { @@ -6013,18 +6086,19 @@ void VarManager::FillTripleMC(T1 const &t1, T2 const &t2, T3 const &t3, template -void VarManager::FillPairVertexing(C const &collision, T const &t1, T const &t2, - float *values) { +void VarManager::FillPairVertexing(C const& collision, T const& t1, T const& t2, + float* values) +{ // check at compile time that the event and cov matrix have the cov matrix constexpr bool eventHasVtxCov = - ((collFillMap & Collision) > 0 || (collFillMap & ReducedEventVtxCov) > 0); + ((collFillMap & Collision) > 0 || (collFillMap & ReducedEventVtxCov) > 0); constexpr bool trackHasCov = - ((fillMap & TrackCov) > 0 || (fillMap & ReducedTrackBarrelCov) > 0); + ((fillMap & TrackCov) > 0 || (fillMap & ReducedTrackBarrelCov) > 0); constexpr bool muonHasCov = - ((fillMap & MuonCov) > 0 || (fillMap & ReducedMuonCov) > 0); + ((fillMap & MuonCov) > 0 || (fillMap & ReducedMuonCov) > 0); if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } float m1 = o2::constants::physics::MassElectron; float m2 = o2::constants::physics::MassElectron; @@ -6053,16 +6127,16 @@ void VarManager::FillPairVertexing(C const &collision, T const &t1, T const &t2, 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()}; + 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()}; + 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) { @@ -6117,7 +6191,7 @@ void VarManager::FillPairVertexing(C const &collision, T const &t1, T const &t2, // \n",secondaryVertex[0],secondaryVertex[1],secondaryVertex[2]); covMatrixPCA = fgFitterTwoProngBarrel.calcPCACovMatrixFlat(); values[kVertexingChi2PCA] = - fgFitterTwoProngBarrel.getChi2AtPCACandidate(); + fgFitterTwoProngBarrel.getChi2AtPCACandidate(); v1 = {fgFitterTwoProngBarrel.getTrack(0).getPt(), fgFitterTwoProngBarrel.getTrack(0).getEta(), fgFitterTwoProngBarrel.getTrack(0).getPhi(), m1}; @@ -6149,14 +6223,14 @@ void VarManager::FillPairVertexing(C const &collision, T const &t1, T const &t2, double theta = std::atan2(dz, std::sqrt(dx * dx + dy * dy)); values[kVertexingLxyzErr] = - std::sqrt(getRotatedCovMatrixXX(covMatrixPV, phi, theta) + - getRotatedCovMatrixXX(covMatrixPCA, phi, theta)); + std::sqrt(getRotatedCovMatrixXX(covMatrixPV, phi, theta) + + getRotatedCovMatrixXX(covMatrixPCA, phi, theta)); values[kVertexingLxyErr] = - std::sqrt(getRotatedCovMatrixXX(covMatrixPV, phi, 0.) + - getRotatedCovMatrixXX(covMatrixPCA, phi, 0.)); + std::sqrt(getRotatedCovMatrixXX(covMatrixPV, phi, 0.) + + getRotatedCovMatrixXX(covMatrixPCA, phi, 0.)); values[kVertexingLzErr] = - std::sqrt(getRotatedCovMatrixXX(covMatrixPV, 0, theta) + - getRotatedCovMatrixXX(covMatrixPCA, 0, theta)); + std::sqrt(getRotatedCovMatrixXX(covMatrixPV, 0, theta) + + getRotatedCovMatrixXX(covMatrixPCA, 0, theta)); values[kVertexingLxy] = dx * dx + dy * dy; values[kVertexingLz] = dz * dz; @@ -6166,60 +6240,60 @@ void VarManager::FillPairVertexing(C const &collision, T const &t1, T const &t2, values[kVertexingLxyz] = std::sqrt(values[kVertexingLxyz]); values[kVertexingTauz] = - -dz * v12.M() / - (TMath::Abs(v12.Pz()) * o2::constants::physics::LightSpeedCm2NS); + -dz * v12.M() / + (TMath::Abs(v12.Pz()) * o2::constants::physics::LightSpeedCm2NS); values[kVertexingTauxy] = - values[kVertexingLxy] * v12.M() / - (v12.Pt() * o2::constants::physics::LightSpeedCm2NS); + values[kVertexingLxy] * v12.M() / + (v12.Pt() * o2::constants::physics::LightSpeedCm2NS); values[kVertexingPz] = TMath::Abs(v12.Pz()); values[kVertexingSV] = secondaryVertex[2]; values[kVertexingTauzErr] = - values[kVertexingLzErr] * v12.M() / - (TMath::Abs(v12.Pz()) * o2::constants::physics::LightSpeedCm2NS); + values[kVertexingLzErr] * v12.M() / + (TMath::Abs(v12.Pz()) * o2::constants::physics::LightSpeedCm2NS); values[kVertexingTauxyErr] = - values[kVertexingLxyErr] * v12.M() / - (v12.Pt() * o2::constants::physics::LightSpeedCm2NS); + 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]); + (dx * v12.Px() + dy * v12.Py() + dz * v12.Pz()) / + (v12.P() * values[VarManager::kVertexingLxyz]); // Decay length defined as in Run 2 values[kVertexingLzProjected] = - (dz * v12.Pz()) / TMath::Sqrt(v12.Pz() * v12.Pz()); + (dz * v12.Pz()) / TMath::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] / + TMath::Sqrt((v12.Px() * v12.Px()) + (v12.Py() * v12.Py())); values[kVertexingLxyzProjected] = - (dx * v12.Px()) + (dy * v12.Py()) + (dz * v12.Pz()); + (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] / + TMath::Sqrt((v12.Px() * v12.Px()) + (v12.Py() * v12.Py()) + + (v12.Pz() * v12.Pz())); values[kVertexingTauxyProjected] = - values[kVertexingLxyProjected] * v12.M() / (v12.Pt()); + values[kVertexingLxyProjected] * v12.M() / (v12.Pt()); values[kVertexingTauxyProjectedPoleJPsiMass] = - values[kVertexingLxyProjected] * o2::constants::physics::MassJPsi / - (v12.Pt()); + values[kVertexingLxyProjected] * o2::constants::physics::MassJPsi / + (v12.Pt()); values[kVertexingTauxyProjectedNs] = - values[kVertexingTauxyProjected] / - o2::constants::physics::LightSpeedCm2NS; + values[kVertexingTauxyProjected] / + o2::constants::physics::LightSpeedCm2NS; if (fgPVrecalKF) { values[kVertexingLxyProjectedRecalculatePV] = - (secondaryVertex[0] - primaryVertexNew.getX()) * v12.Px() + - (secondaryVertex[1] - primaryVertexNew.getY()) * v12.Py(); + (secondaryVertex[0] - primaryVertexNew.getX()) * v12.Px() + + (secondaryVertex[1] - primaryVertexNew.getY()) * v12.Py(); values[kVertexingLxyProjectedRecalculatePV] = - values[kVertexingLxyProjectedRecalculatePV] / v12.Pt(); + values[kVertexingLxyProjectedRecalculatePV] / v12.Pt(); values[kVertexingTauxyProjectedPoleJPsiMassRecalculatePV] = - values[kVertexingLxyProjectedRecalculatePV] * - o2::constants::physics::MassJPsi / (v12.Pt()); + values[kVertexingLxyProjectedRecalculatePV] * + o2::constants::physics::MassJPsi / (v12.Pt()); } values[kVertexingTauzProjected] = - values[kVertexingLzProjected] * v12.M() / TMath::Abs(v12.Pz()); + values[kVertexingLzProjected] * v12.M() / TMath::Abs(v12.Pz()); values[kVertexingTauxyzProjected] = - values[kVertexingLxyzProjected] * v12.M() / (v12.P()); + values[kVertexingLxyzProjected] * v12.M() / (v12.P()); } } else if constexpr (((pairType == kDecayToEE || pairType == kDecayToKPi) && trackHasCov) || @@ -6263,57 +6337,57 @@ void VarManager::FillPairVertexing(C const &collision, T const &t1, T const &t2, fgUsedVars[kVertexingLxyOverErr] || fgUsedVars[kVertexingLzOverErr] || fgUsedVars[kVertexingLxyzOverErr] || fgUsedVars[kCosPointingAngle]) { values[kVertexingLxy] = - std::sqrt(dxPair2PV * dxPair2PV + dyPair2PV * dyPair2PV); + std::sqrt(dxPair2PV * dxPair2PV + dyPair2PV * dyPair2PV); values[kVertexingLz] = std::sqrt(dzPair2PV * dzPair2PV); values[kVertexingLxyz] = - std::sqrt(dxPair2PV * dxPair2PV + dyPair2PV * dyPair2PV + - dzPair2PV * dzPair2PV); + std::sqrt(dxPair2PV * dxPair2PV + dyPair2PV * dyPair2PV + + dzPair2PV * dzPair2PV); 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); + (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; + (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); + (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; } values[kVertexingLxyErr] = - values[kVertexingLxyErr] < 0. - ? 1.e8f - : std::sqrt(values[kVertexingLxyErr]) / values[kVertexingLxy]; + 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[kVertexingLzErr] = - values[kVertexingLzErr] < 0. - ? 1.e8f - : std::sqrt(values[kVertexingLzErr]) / values[kVertexingLz]; + 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[kVertexingLxyzErr] = - values[kVertexingLxyzErr] < 0. - ? 1.e8f - : std::sqrt(values[kVertexingLxyzErr]) / values[kVertexingLxyz]; + values[kVertexingLxyzErr] < 0. + ? 1.e8f + : std::sqrt(values[kVertexingLxyzErr]) / values[kVertexingLxyz]; values[kVertexingTauxy] = KFGeoTwoProng.GetPseudoProperDecayTime( - KFPV, KFGeoTwoProng.GetMass()) / + KFPV, KFGeoTwoProng.GetMass()) / (o2::constants::physics::LightSpeedCm2NS); values[kVertexingTauz] = -1 * dzPair2PV * KFGeoTwoProng.GetMass() / (TMath::Abs(KFGeoTwoProng.GetPz()) * @@ -6321,48 +6395,48 @@ void VarManager::FillPairVertexing(C const &collision, T const &t1, T const &t2, values[kVertexingPz] = TMath::Abs(KFGeoTwoProng.GetPz()); values[kVertexingSV] = KFGeoTwoProng.GetZ(); values[kVertexingTauxyErr] = - values[kVertexingLxyErr] * KFGeoTwoProng.GetMass() / - (KFGeoTwoProng.GetPt() * o2::constants::physics::LightSpeedCm2NS); + 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[kCosPointingAngle] = - (std::sqrt(dxPair2PV * dxPair2PV) * v12.Px() + - std::sqrt(dyPair2PV * dyPair2PV) * v12.Py() + - std::sqrt(dzPair2PV * dzPair2PV) * v12.Pz()) / - (v12.P() * values[VarManager::kVertexingLxyz]); + (std::sqrt(dxPair2PV * dxPair2PV) * v12.Px() + + std::sqrt(dyPair2PV * dyPair2PV) * v12.Py() + + std::sqrt(dzPair2PV * dzPair2PV) * v12.Pz()) / + (v12.P() * values[VarManager::kVertexingLxyz]); } // 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()); + (dzPair2PV * KFGeoTwoProng.GetPz()) / + TMath::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] / + TMath::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] / + TMath::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[kVertexingLxyProjected] * o2::constants::physics::MassJPsi / + (KFGeoTwoProng.GetPt()); values[kVertexingTauxyProjectedNs] = - values[kVertexingTauxyProjected] / - o2::constants::physics::LightSpeedCm2NS; + values[kVertexingTauxyProjected] / + o2::constants::physics::LightSpeedCm2NS; values[kVertexingTauzProjected] = values[kVertexingLzProjected] * KFGeoTwoProng.GetMass() / TMath::Abs(KFGeoTwoProng.GetPz()); @@ -6371,16 +6445,16 @@ void VarManager::FillPairVertexing(C const &collision, T const &t1, T const &t2, if (fgUsedVars[kVertexingLxyOverErr] || fgUsedVars[kVertexingLzOverErr] || fgUsedVars[kVertexingLxyzOverErr]) { values[kVertexingLxyOverErr] = - values[kVertexingLxy] / values[kVertexingLxyErr]; + values[kVertexingLxy] / values[kVertexingLxyErr]; values[kVertexingLzOverErr] = - values[kVertexingLz] / values[kVertexingLzErr]; + values[kVertexingLz] / values[kVertexingLzErr]; values[kVertexingLxyzOverErr] = - values[kVertexingLxyz] / values[kVertexingLxyzErr]; + values[kVertexingLxyz] / values[kVertexingLxyzErr]; } if (fgUsedVars[kKFChi2OverNDFGeo]) { values[kKFChi2OverNDFGeo] = - KFGeoTwoProng.GetChi2() / KFGeoTwoProng.GetNDF(); + KFGeoTwoProng.GetChi2() / KFGeoTwoProng.GetNDF(); } if (fgUsedVars[kKFCosPA]) { values[kKFCosPA] = calculateCosPA(KFGeoTwoProng, KFPV); @@ -6400,20 +6474,20 @@ void VarManager::FillPairVertexing(C const &collision, T const &t1, T const &t2, } if (fgUsedVars[kKFDCAxyBetweenProngs]) { values[kKFDCAxyBetweenProngs] = - trk0KF.GetDistanceFromParticleXY(trk1KF); + trk0KF.GetDistanceFromParticleXY(trk1KF); } if (fgUsedVars[kKFTracksDCAxyzMax]) { values[kKFTracksDCAxyzMax] = - values[kKFTrack0DCAxyz] > values[kKFTrack1DCAxyz] - ? values[kKFTrack0DCAxyz] - : values[kKFTrack1DCAxyz]; + 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]; + TMath::Abs(values[kKFTrack1DCAxy]) + ? values[kKFTrack0DCAxy] + : values[kKFTrack1DCAxy]; } if (fgUsedVars[kKFTrack0DeviationFromPV] || fgUsedVars[kKFTrack1DeviationFromPV]) { @@ -6423,9 +6497,9 @@ void VarManager::FillPairVertexing(C const &collision, T const &t1, T const &t2, if (fgUsedVars[kKFTrack0DeviationxyFromPV] || fgUsedVars[kKFTrack1DeviationxyFromPV]) { values[kKFTrack0DeviationxyFromPV] = - trk0KF.GetDeviationFromVertexXY(KFPV); + trk0KF.GetDeviationFromVertexXY(KFPV); values[kKFTrack1DeviationxyFromPV] = - trk1KF.GetDeviationFromVertexXY(KFPV); + trk1KF.GetDeviationFromVertexXY(KFPV); } if (fgUsedVars[kKFJpsiDCAxyz]) { values[kKFJpsiDCAxyz] = KFGeoTwoProng.GetDistanceFromVertex(KFPV); @@ -6436,15 +6510,15 @@ void VarManager::FillPairVertexing(C const &collision, T const &t1, T const &t2, if (fgUsedVars[kKFPairDeviationFromPV] || fgUsedVars[kKFPairDeviationxyFromPV]) { values[kKFPairDeviationFromPV] = - KFGeoTwoProng.GetDeviationFromVertex(KFPV); + KFGeoTwoProng.GetDeviationFromVertex(KFPV); values[kKFPairDeviationxyFromPV] = - KFGeoTwoProng.GetDeviationFromVertexXY(KFPV); + KFGeoTwoProng.GetDeviationFromVertexXY(KFPV); } if (fgUsedVars[kKFChi2OverNDFGeoTop] || fgUsedVars[kKFMassGeoTop]) { KFParticle KFGeoTopTwoProngBarrel = KFGeoTwoProng; KFGeoTopTwoProngBarrel.SetProductionVertex(KFPV); values[kKFChi2OverNDFGeoTop] = - KFGeoTopTwoProngBarrel.GetChi2() / KFGeoTopTwoProngBarrel.GetNDF(); + KFGeoTopTwoProngBarrel.GetChi2() / KFGeoTopTwoProngBarrel.GetNDF(); float mass = 0., massErr = 0.; if (!KFGeoTopTwoProngBarrel.GetMass(mass, massErr)) { values[kKFMassGeoTop] = mass; @@ -6480,20 +6554,21 @@ void VarManager::FillPairVertexing(C const &collision, T const &t1, T const &t2, template void VarManager::FillPairVertexingRecomputePV( - C const & /*collision*/, T const &t1, T const &t2, - const o2::dataformats::VertexBase &pvRefitted, float *values) { + C const& /*collision*/, T const& t1, T const& t2, + const o2::dataformats::VertexBase& pvRefitted, float* values) +{ // 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); + ((collFillMap & Collision) > 0 || (collFillMap & ReducedEventVtxCov) > 0); constexpr bool trackHasCov = - ((fillMap & TrackCov) > 0 || (fillMap & ReducedTrackBarrelCov) > 0); + ((fillMap & TrackCov) > 0 || (fillMap & ReducedTrackBarrelCov) > 0); constexpr bool muonHasCov = - ((fillMap & MuonCov) > 0 || (fillMap & ReducedMuonCov) > 0); + ((fillMap & MuonCov) > 0 || (fillMap & ReducedMuonCov) > 0); if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } float m1 = o2::constants::physics::MassElectron; @@ -6547,29 +6622,30 @@ void VarManager::FillPairVertexingRecomputePV( } values[kVertexingLxyProjectedRecalculatePV] = - (secondaryVertex[0] - pvRefitted.getX()) * v12.Px() + - (secondaryVertex[1] - pvRefitted.getY()) * v12.Py(); + (secondaryVertex[0] - pvRefitted.getX()) * v12.Px() + + (secondaryVertex[1] - pvRefitted.getY()) * v12.Py(); values[kVertexingLxyProjectedRecalculatePV] = - values[kVertexingLxyProjectedRecalculatePV] / v12.Pt(); + values[kVertexingLxyProjectedRecalculatePV] / v12.Pt(); values[kVertexingTauxyProjectedPoleJPsiMassRecalculatePV] = - values[kVertexingLxyProjectedRecalculatePV] * - o2::constants::physics::MassJPsi / (v12.Pt()); + values[kVertexingLxyProjectedRecalculatePV] * + o2::constants::physics::MassJPsi / (v12.Pt()); } } } template -void VarManager::FillTripletVertexing(C const &collision, T const &t1, - T const &t2, T const &t3, +void VarManager::FillTripletVertexing(C const& collision, T const& t1, + T const& t2, T const& t3, VarManager::PairCandidateType tripletType, - float *values) { + float* values) +{ // TODO: Vertexing error variables constexpr bool eventHasVtxCov = - ((collFillMap & Collision) > 0 || (collFillMap & ReducedEventVtxCov) > 0); + ((collFillMap & Collision) > 0 || (collFillMap & ReducedEventVtxCov) > 0); bool trackHasCov = ((fillMap & ReducedTrackBarrelCov) > 0); if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } float m1 = o2::constants::physics::MassKaonCharged; @@ -6594,26 +6670,26 @@ void VarManager::FillTripletVertexing(C const &collision, T const &t1, 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()}; + 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()}; + 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()}; + 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); + VarManager::fgFitterThreeProngBarrel.process(pars1, pars2, pars3); } else { return; } @@ -6650,7 +6726,7 @@ void VarManager::FillTripletVertexing(C const &collision, T const &t1, secondaryVertex = fgFitterThreeProngBarrel.getPCACandidate(); std::array covMatrixPCA = - fgFitterThreeProngBarrel.calcPCACovMatrixFlat(); + fgFitterThreeProngBarrel.calcPCACovMatrixFlat(); o2::math_utils::Point3D vtxXYZ(collision.posX(), collision.posY(), collision.posZ()); @@ -6668,16 +6744,16 @@ void VarManager::FillTripletVertexing(C const &collision, T const &t1, double phi = std::atan2(secondaryVertex[1] - collision.posY(), secondaryVertex[0] - collision.posX()); double theta = - std::atan2(secondaryVertex[2] - collision.posZ(), - std::sqrt((secondaryVertex[0] - collision.posX()) * - (secondaryVertex[0] - collision.posX()) + - (secondaryVertex[1] - collision.posY()) * - (secondaryVertex[1] - collision.posY()))); + std::atan2(secondaryVertex[2] - collision.posZ(), + std::sqrt((secondaryVertex[0] - collision.posX()) * + (secondaryVertex[0] - collision.posX()) + + (secondaryVertex[1] - collision.posY()) * + (secondaryVertex[1] - collision.posY()))); values[kVertexingLxy] = (collision.posX() - secondaryVertex[0]) * - (collision.posX() - secondaryVertex[0]) + + (collision.posX() - secondaryVertex[0]) + (collision.posY() - secondaryVertex[1]) * - (collision.posY() - secondaryVertex[1]); + (collision.posY() - secondaryVertex[1]); values[kVertexingLz] = (collision.posZ() - secondaryVertex[2]) * (collision.posZ() - secondaryVertex[2]); values[kVertexingLxyz] = values[kVertexingLxy] + values[kVertexingLz]; @@ -6686,61 +6762,61 @@ void VarManager::FillTripletVertexing(C const &collision, T const &t1, values[kVertexingLxyz] = std::sqrt(values[kVertexingLxyz]); values[kVertexingLxyzErr] = - std::sqrt(getRotatedCovMatrixXX(covMatrixPV, phi, theta) + - getRotatedCovMatrixXX(covMatrixPCA, phi, theta)); + std::sqrt(getRotatedCovMatrixXX(covMatrixPV, phi, theta) + + getRotatedCovMatrixXX(covMatrixPCA, phi, theta)); values[kVertexingLxyErr] = - std::sqrt(getRotatedCovMatrixXX(covMatrixPV, phi, 0.) + - getRotatedCovMatrixXX(covMatrixPCA, phi, 0.)); + std::sqrt(getRotatedCovMatrixXX(covMatrixPV, phi, 0.) + + getRotatedCovMatrixXX(covMatrixPCA, phi, 0.)); values[kVertexingLzErr] = - std::sqrt(getRotatedCovMatrixXX(covMatrixPV, 0, theta) + - getRotatedCovMatrixXX(covMatrixPCA, 0, theta)); + 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); + (collision.posZ() - secondaryVertex[2]) * v123.M() / + (TMath::Abs(v123.Pz()) * o2::constants::physics::LightSpeedCm2NS); values[kVertexingTauxy] = - values[kVertexingLxy] * v123.M() / - (v123.Pt() * o2::constants::physics::LightSpeedCm2NS); + 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[kVertexingLzErr] * v123.M() / + (TMath::Abs(v123.Pz()) * o2::constants::physics::LightSpeedCm2NS); values[kVertexingTauxyErr] = - values[kVertexingLxyErr] * v123.M() / - (v123.Pt() * o2::constants::physics::LightSpeedCm2NS); + values[kVertexingLxyErr] * v123.M() / + (v123.Pt() * o2::constants::physics::LightSpeedCm2NS); values[kCosPointingAngle] = - ((secondaryVertex[0] - collision.posX()) * v123.Px() + - (secondaryVertex[1] - collision.posY()) * v123.Py() + - (secondaryVertex[2] - collision.posZ()) * v123.Pz()) / - (v123.P() * values[VarManager::kVertexingLxyz]); + ((secondaryVertex[0] - collision.posX()) * v123.Px() + + (secondaryVertex[1] - collision.posY()) * v123.Py() + + (secondaryVertex[2] - collision.posZ()) * v123.Pz()) / + (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(); + (secondaryVertex[2] - collision.posZ()) * v123.Pz(); values[kVertexingLzProjected] = - values[kVertexingLzProjected] / TMath::Sqrt(v123.Pz() * v123.Pz()); + values[kVertexingLzProjected] / TMath::Sqrt(v123.Pz() * v123.Pz()); values[kVertexingLxyProjected] = - ((secondaryVertex[0] - collision.posX()) * v123.Px()) + - ((secondaryVertex[1] - collision.posY()) * v123.Py()); + ((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] / + TMath::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()); + ((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] / + 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[kVertexingLzProjected] * v123.M() / TMath::Abs(v123.Pz()); values[kVertexingTauxyProjected] = - values[kVertexingLxyProjected] * v123.M() / (v123.Pt()); + values[kVertexingLxyProjected] * v123.M() / (v123.Pt()); values[kVertexingTauxyzProjected] = - values[kVertexingLxyzProjected] * v123.M() / (v123.P()); + values[kVertexingLxyzProjected] * v123.M() / (v123.P()); } } else { KFParticle trk0KF; @@ -6791,59 +6867,59 @@ void VarManager::FillTripletVertexing(C const &collision, T const &t1, double dzTriplet2PV = KFGeoThreeProng.GetZ() - KFPV.GetZ(); values[kVertexingLxy] = - std::sqrt(dxTriplet2PV * dxTriplet2PV + dyTriplet2PV * dyTriplet2PV); + std::sqrt(dxTriplet2PV * dxTriplet2PV + dyTriplet2PV * dyTriplet2PV); values[kVertexingLz] = std::sqrt(dzTriplet2PV * dzTriplet2PV); values[kVertexingLxyz] = - std::sqrt(dxTriplet2PV * dxTriplet2PV + dyTriplet2PV * dyTriplet2PV + - dzTriplet2PV * dzTriplet2PV); + std::sqrt(dxTriplet2PV * dxTriplet2PV + dyTriplet2PV * dyTriplet2PV + + dzTriplet2PV * dzTriplet2PV); 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); + (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; + (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); + (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; } values[kVertexingLxyErr] = - values[kVertexingLxyErr] < 0. - ? 1.e8f - : std::sqrt(values[kVertexingLxyErr]) / values[kVertexingLxy]; + 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[kVertexingLzErr] = - values[kVertexingLzErr] < 0. - ? 1.e8f - : std::sqrt(values[kVertexingLzErr]) / values[kVertexingLz]; + 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[kVertexingLxyzErr] = - values[kVertexingLxyzErr] < 0. - ? 1.e8f - : std::sqrt(values[kVertexingLxyzErr]) / values[kVertexingLxyz]; + values[kVertexingLxyzErr] < 0. + ? 1.e8f + : std::sqrt(values[kVertexingLxyzErr]) / values[kVertexingLxyz]; values[kVertexingTauxy] = KFGeoThreeProng.GetPseudoProperDecayTime( - KFPV, KFGeoThreeProng.GetMass()) / + KFPV, KFGeoThreeProng.GetMass()) / (o2::constants::physics::LightSpeedCm2NS); values[kVertexingTauz] = -1 * dzTriplet2PV * KFGeoThreeProng.GetMass() / (TMath::Abs(KFGeoThreeProng.GetPz()) * @@ -6851,43 +6927,43 @@ void VarManager::FillTripletVertexing(C const &collision, T const &t1, values[kVertexingPz] = TMath::Abs(KFGeoThreeProng.GetPz()); values[kVertexingSV] = KFGeoThreeProng.GetZ(); values[kVertexingTauxyErr] = - values[kVertexingLxyErr] * KFGeoThreeProng.GetMass() / - (KFGeoThreeProng.GetPt() * o2::constants::physics::LightSpeedCm2NS); + 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[kCosPointingAngle] = - (std::sqrt(dxTriplet2PV * dxTriplet2PV) * v123.Px() + - std::sqrt(dyTriplet2PV * dyTriplet2PV) * v123.Py() + - std::sqrt(dzTriplet2PV * dzTriplet2PV) * v123.Pz()) / - (v123.P() * values[VarManager::kVertexingLxyz]); + (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()); + (dzTriplet2PV * KFGeoThreeProng.GetPz()) / + TMath::Sqrt(KFGeoThreeProng.GetPz() * KFGeoThreeProng.GetPz()); values[kVertexingLxyProjected] = - (dxTriplet2PV * KFGeoThreeProng.GetPx()) + - (dyTriplet2PV * KFGeoThreeProng.GetPy()); + (dxTriplet2PV * KFGeoThreeProng.GetPx()) + + (dyTriplet2PV * KFGeoThreeProng.GetPy()); values[kVertexingLxyProjected] = - values[kVertexingLxyProjected] / - TMath::Sqrt((KFGeoThreeProng.GetPx() * KFGeoThreeProng.GetPx()) + - (KFGeoThreeProng.GetPy() * KFGeoThreeProng.GetPy())); + values[kVertexingLxyProjected] / + TMath::Sqrt((KFGeoThreeProng.GetPx() * KFGeoThreeProng.GetPx()) + + (KFGeoThreeProng.GetPy() * KFGeoThreeProng.GetPy())); values[kVertexingLxyzProjected] = - (dxTriplet2PV * KFGeoThreeProng.GetPx()) + - (dyTriplet2PV * KFGeoThreeProng.GetPy()) + - (dzTriplet2PV * KFGeoThreeProng.GetPz()); + (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] / + TMath::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[kVertexingTauxyProjected] / + o2::constants::physics::LightSpeedCm2NS; values[kVertexingTauzProjected] = values[kVertexingLzProjected] * KFGeoThreeProng.GetMass() / TMath::Abs(KFGeoThreeProng.GetPz()); @@ -6897,19 +6973,20 @@ void VarManager::FillTripletVertexing(C const &collision, T const &t1, template -void VarManager::FillDileptonTrackVertexing(C const &collision, - T1 const &lepton1, - T1 const &lepton2, T1 const &track, - float *values) { +void VarManager::FillDileptonTrackVertexing(C const& collision, + T1 const& lepton1, + T1 const& lepton2, T1 const& track, + float* values) +{ constexpr bool eventHasVtxCov = - ((collFillMap & Collision) > 0 || (collFillMap & ReducedEventVtxCov) > 0); + ((collFillMap & Collision) > 0 || (collFillMap & ReducedEventVtxCov) > 0); constexpr bool trackHasCov = - ((fillMap & TrackCov) > 0 || (fillMap & ReducedTrackBarrelCov) > 0); + ((fillMap & TrackCov) > 0 || (fillMap & ReducedTrackBarrelCov) > 0); constexpr bool muonHasCov = - ((fillMap & MuonCov) > 0 || (fillMap & ReducedMuonCov) > 0); + ((fillMap & MuonCov) > 0 || (fillMap & ReducedMuonCov) > 0); if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } float mtrack = o2::constants::physics::MassMuon; @@ -6945,35 +7022,35 @@ void VarManager::FillDileptonTrackVertexing(C const &collision, 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()}; + 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()}; + 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()}; + 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); + VarManager::fgFitterThreeProngBarrel.process(pars1, pars2, pars3); procCodeJpsi = VarManager::fgFitterTwoProngBarrel.process(pars1, pars2); } else { return; @@ -7057,68 +7134,68 @@ void VarManager::FillDileptonTrackVertexing(C const &collision, double phi = std::atan2(secondaryVertex[1] - collision.posY(), secondaryVertex[0] - collision.posX()); double theta = - std::atan2(secondaryVertex[2] - collision.posZ(), - std::sqrt((secondaryVertex[0] - collision.posX()) * - (secondaryVertex[0] - collision.posX()) + - (secondaryVertex[1] - collision.posY()) * - (secondaryVertex[1] - collision.posY()))); + std::atan2(secondaryVertex[2] - collision.posZ(), + std::sqrt((secondaryVertex[0] - collision.posX()) * + (secondaryVertex[0] - collision.posX()) + + (secondaryVertex[1] - collision.posY()) * + (secondaryVertex[1] - collision.posY()))); if (fgUsedVars[kVertexingLxy] || fgUsedVars[kVertexingLz] || fgUsedVars[kVertexingLxyz]) { values[VarManager::kVertexingLxy] = - (collision.posX() - secondaryVertex[0]) * - (collision.posX() - secondaryVertex[0]) + - (collision.posY() - secondaryVertex[1]) * - (collision.posY() - secondaryVertex[1]); + (collision.posX() - secondaryVertex[0]) * + (collision.posX() - secondaryVertex[0]) + + (collision.posY() - secondaryVertex[1]) * + (collision.posY() - secondaryVertex[1]); values[VarManager::kVertexingLz] = - (collision.posZ() - secondaryVertex[2]) * - (collision.posZ() - secondaryVertex[2]); + (collision.posZ() - secondaryVertex[2]) * + (collision.posZ() - secondaryVertex[2]); values[VarManager::kVertexingLxyz] = values[VarManager::kVertexingLxy] + values[VarManager::kVertexingLz]; values[VarManager::kVertexingLxy] = - std::sqrt(values[VarManager::kVertexingLxy]); + std::sqrt(values[VarManager::kVertexingLxy]); values[VarManager::kVertexingLz] = - std::sqrt(values[VarManager::kVertexingLz]); + std::sqrt(values[VarManager::kVertexingLz]); values[VarManager::kVertexingLxyz] = - std::sqrt(values[VarManager::kVertexingLxyz]); + std::sqrt(values[VarManager::kVertexingLxyz]); } if (fgUsedVars[kVertexingLxyzErr] || fgUsedVars[kVertexingLxyErr] || fgUsedVars[kVertexingLzErr]) { values[kVertexingLxyzErr] = - std::sqrt(getRotatedCovMatrixXX(covMatrixPV, phi, theta) + - getRotatedCovMatrixXX(covMatrixPCA, phi, theta)); + std::sqrt(getRotatedCovMatrixXX(covMatrixPV, phi, theta) + + getRotatedCovMatrixXX(covMatrixPCA, phi, theta)); values[kVertexingLxyErr] = - std::sqrt(getRotatedCovMatrixXX(covMatrixPV, phi, 0.) + - getRotatedCovMatrixXX(covMatrixPCA, phi, 0.)); + std::sqrt(getRotatedCovMatrixXX(covMatrixPV, phi, 0.) + + getRotatedCovMatrixXX(covMatrixPCA, phi, 0.)); values[kVertexingLzErr] = - std::sqrt(getRotatedCovMatrixXX(covMatrixPV, 0, theta) + - getRotatedCovMatrixXX(covMatrixPCA, 0, theta)); + 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); + (collision.posZ() - secondaryVertex[2]) * v123.M() / + (TMath::Abs(v123.Pz()) * o2::constants::physics::LightSpeedCm2NS); values[kVertexingTauxy] = - values[kVertexingLxy] * v123.M() / - (v123.Pt() * o2::constants::physics::LightSpeedCm2NS); + values[kVertexingLxy] * v123.M() / + (v123.Pt() * o2::constants::physics::LightSpeedCm2NS); values[kVertexingPz] = TMath::Abs(v123.Pz()); values[kVertexingSV] = secondaryVertex[2]; values[kVertexingTauzErr] = - values[kVertexingLzErr] * v123.M() / - (TMath::Abs(v123.Pz()) * o2::constants::physics::LightSpeedCm2NS); + values[kVertexingLzErr] * v123.M() / + (TMath::Abs(v123.Pz()) * o2::constants::physics::LightSpeedCm2NS); values[kVertexingTauxyErr] = - values[kVertexingLxyErr] * v123.M() / - (v123.Pt() * o2::constants::physics::LightSpeedCm2NS); + values[kVertexingLxyErr] * v123.M() / + (v123.Pt() * o2::constants::physics::LightSpeedCm2NS); if (fgUsedVars[kCosPointingAngle] && fgUsedVars[kVertexingLxyz]) { values[VarManager::kCosPointingAngle] = - ((secondaryVertex[0] - collision.posX()) * v123.Px() + - (secondaryVertex[1] - collision.posY()) * v123.Py() + - (secondaryVertex[2] - collision.posZ()) * v123.Pz()) / - (v123.P() * values[VarManager::kVertexingLxyz]); + ((secondaryVertex[0] - collision.posX()) * v123.Px() + + (secondaryVertex[1] - collision.posY()) * v123.Py() + + (secondaryVertex[2] - collision.posZ()) * v123.Pz()) / + (v123.P() * values[VarManager::kVertexingLxyz]); } // run 2 definitions: Lxy projected onto the momentum vector of the // candidate @@ -7126,27 +7203,27 @@ void VarManager::FillDileptonTrackVertexing(C const &collision, fgUsedVars[kVertexingLxyzProjected] || fgUsedVars[kVertexingTauxyProjected]) { values[kVertexingLzProjected] = - (secondaryVertex[2] - collision.posZ()) * v123.Pz(); + (secondaryVertex[2] - collision.posZ()) * v123.Pz(); values[kVertexingLzProjected] = - values[kVertexingLzProjected] / TMath::Sqrt(v123.Pz() * v123.Pz()); + values[kVertexingLzProjected] / TMath::Sqrt(v123.Pz() * v123.Pz()); values[kVertexingLxyProjected] = - ((secondaryVertex[0] - collision.posX()) * v123.Px()) + - ((secondaryVertex[1] - collision.posY()) * v123.Py()); + ((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] / + TMath::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()); + ((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] / + 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[kVertexingLzProjected] * v123.M() / TMath::Abs(v123.Pz()); values[kVertexingTauxyProjected] = - values[kVertexingLxyProjected] * v123.M() / v123.Pt(); + values[kVertexingLxyProjected] * v123.M() / v123.Pt(); } } } else { @@ -7176,7 +7253,7 @@ void VarManager::FillDileptonTrackVertexing(C const &collision, // Quantities between 3rd prong and candidate if (fgUsedVars[kKFDCAxyzBetweenProngs]) { values[kKFDCAxyzBetweenProngs] = - KFGeoTwoLeptons.GetDistanceFromParticle(hadronKF); + KFGeoTwoLeptons.GetDistanceFromParticle(hadronKF); } KFGeoThreeProng.SetConstructMethod(2); @@ -7208,69 +7285,69 @@ void VarManager::FillDileptonTrackVertexing(C const &collision, dyTriplet3PV * dyTriplet3PV + dzTriplet3PV * dzTriplet3PV); 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); + (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; + (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); + (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; } values[kVertexingLxyErr] = - values[kVertexingLxyErr] < 0. - ? 1.e8f - : std::sqrt(values[kVertexingLxyErr]) / values[kVertexingLxy]; + 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[kVertexingLzErr] = - values[kVertexingLzErr] < 0. - ? 1.e8f - : std::sqrt(values[kVertexingLzErr]) / values[kVertexingLz]; + 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[kVertexingLxyzErr] = - values[kVertexingLxyzErr] < 0. - ? 1.e8f - : std::sqrt(values[kVertexingLxyzErr]) / - values[kVertexingLxyz]; + values[kVertexingLxyzErr] < 0. + ? 1.e8f + : std::sqrt(values[kVertexingLxyzErr]) / + values[kVertexingLxyz]; if (fgUsedVars[kVertexingTauxy]) { values[kVertexingTauxy] = KFGeoThreeProng.GetPseudoProperDecayTime( - KFPV, KFGeoThreeProng.GetMass()) / + KFPV, KFGeoThreeProng.GetMass()) / (o2::constants::physics::LightSpeedCm2NS); } if (fgUsedVars[kVertexingTauxyErr]) { values[kVertexingTauxyErr] = - values[kVertexingLxyErr] * KFGeoThreeProng.GetMass() / - (KFGeoThreeProng.GetPt() * - o2::constants::physics::LightSpeedCm2NS); + values[kVertexingLxyErr] * KFGeoThreeProng.GetMass() / + (KFGeoThreeProng.GetPt() * + o2::constants::physics::LightSpeedCm2NS); } if (fgUsedVars[kCosPointingAngle]) { values[VarManager::kCosPointingAngle] = - (dxTriplet3PV * KFGeoThreeProng.GetPx() + - dyTriplet3PV * KFGeoThreeProng.GetPy() + - dzTriplet3PV * KFGeoThreeProng.GetPz()) / - (KFGeoThreeProng.GetP() * values[VarManager::kVertexingLxyz]); + (dxTriplet3PV * KFGeoThreeProng.GetPx() + + dyTriplet3PV * KFGeoThreeProng.GetPy() + + dzTriplet3PV * KFGeoThreeProng.GetPz()) / + (KFGeoThreeProng.GetP() * values[VarManager::kVertexingLxyz]); } } // end calculate vertex variables @@ -7279,33 +7356,33 @@ void VarManager::FillDileptonTrackVertexing(C const &collision, fgUsedVars[kVertexingLxyzProjected] || fgUsedVars[kVertexingLzProjected]) { values[kVertexingLzProjected] = - (dzTriplet3PV * KFGeoThreeProng.GetPz()) / - TMath::Sqrt(KFGeoThreeProng.GetPz() * KFGeoThreeProng.GetPz()); + (dzTriplet3PV * KFGeoThreeProng.GetPz()) / + TMath::Sqrt(KFGeoThreeProng.GetPz() * KFGeoThreeProng.GetPz()); values[kVertexingLxyProjected] = - (dxTriplet3PV * KFGeoThreeProng.GetPx()) + - (dyTriplet3PV * KFGeoThreeProng.GetPy()); + (dxTriplet3PV * KFGeoThreeProng.GetPx()) + + (dyTriplet3PV * KFGeoThreeProng.GetPy()); values[kVertexingLxyProjected] = - values[kVertexingLxyProjected] / - TMath::Sqrt((KFGeoThreeProng.GetPx() * KFGeoThreeProng.GetPx()) + - (KFGeoThreeProng.GetPy() * KFGeoThreeProng.GetPy())); + values[kVertexingLxyProjected] / + TMath::Sqrt((KFGeoThreeProng.GetPx() * KFGeoThreeProng.GetPx()) + + (KFGeoThreeProng.GetPy() * KFGeoThreeProng.GetPy())); values[kVertexingLxyzProjected] = - (dxTriplet3PV * KFGeoThreeProng.GetPx()) + - (dyTriplet3PV * KFGeoThreeProng.GetPy()) + - (dzTriplet3PV * KFGeoThreeProng.GetPz()); + (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] / + TMath::Sqrt((KFGeoThreeProng.GetPx() * KFGeoThreeProng.GetPx()) + + (KFGeoThreeProng.GetPy() * KFGeoThreeProng.GetPy()) + + (KFGeoThreeProng.GetPz() * KFGeoThreeProng.GetPz())); values[kVertexingTauxyProjected] = - (values[kVertexingLxyProjected] * KFGeoThreeProng.GetMass()) / - (KFGeoThreeProng.GetPt()); + (values[kVertexingLxyProjected] * KFGeoThreeProng.GetMass()) / + (KFGeoThreeProng.GetPt()); values[kVertexingTauxyProjectedNs] = - values[kVertexingTauxyProjected] / - o2::constants::physics::LightSpeedCm2NS; + values[kVertexingTauxyProjected] / + o2::constants::physics::LightSpeedCm2NS; values[kVertexingTauzProjected] = - (values[kVertexingLzProjected] * KFGeoThreeProng.GetMass()) / - TMath::Abs(KFGeoThreeProng.GetPz()); + (values[kVertexingLzProjected] * KFGeoThreeProng.GetMass()) / + TMath::Abs(KFGeoThreeProng.GetPz()); } // end Run 2 quantities } // end eventHasVtxCov } // end (candidateType == kBtoJpsiEEK) && trackHasCov @@ -7314,15 +7391,16 @@ void VarManager::FillDileptonTrackVertexing(C const &collision, template void VarManager::FillQVectorFromGFW( - C const & /*collision*/, A const &compA11, A const &compB11, - A const &compC11, A const &compA21, A const &compB21, A const &compC21, - A const &compA31, A const &compB31, A const &compC31, A const &compA41, - A const &compB41, A const &compC41, A const &compA23, A const &compA42, - float S10A, float S10B, float S10C, float S11A, float S11B, float S11C, - float S12A, float S13A, float S14A, float S21A, float S22A, float S31A, - float S41A, float *values) { + C const& /*collision*/, A const& compA11, A const& compB11, + A const& compC11, A const& compA21, A const& compB21, A const& compC21, + A const& compA31, A const& compB31, A const& compC31, A const& compA41, + A const& compB41, A const& compC41, A const& compA23, A const& compA42, + float S10A, float S10B, float S10C, float S11A, float S11B, float S11C, + float S12A, float S13A, float S14A, float S21A, float S22A, float S31A, + float S41A, float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } // Fill Qn vectors from generic flow framework for different eta gap A, B, C @@ -7353,13 +7431,13 @@ void VarManager::FillQVectorFromGFW( values[kQ4X0C] = compC41.real() / S11C; values[kQ4Y0C] = compC41.imag() / S11C; values[kQ42XA] = - compA42.real(); // Only being used by cumulants, no need for normalization + compA42.real(); // Only being used by cumulants, no need for normalization values[kQ42YA] = - compA42.imag(); // Only being used by cumulants, no need for normalization + compA42.imag(); // Only being used by cumulants, no need for normalization values[kQ23XA] = - compA23.real(); // Only being used by cumulants, no need for normalization + compA23.real(); // Only being used by cumulants, no need for normalization values[kQ23YA] = - compA23.imag(); // Only being used by cumulants, no need for normalization + compA23.imag(); // Only being used by cumulants, no need for normalization values[kS11A] = S11A; values[kS12A] = S12A; values[kS13A] = S13A; @@ -7387,7 +7465,7 @@ void VarManager::FillQVectorFromGFW( // Fill necessary quantities for cumulant calculations with weighted Q-vectors values[kM11REF] = S21A - S12A; values[kM1111REF] = - S41A - 6. * S12A * S21A + 8. * S13A * S11A + 3. * S22A - 6. * S14A; + S41A - 6. * S12A * S21A + 8. * S13A * S11A + 3. * S22A - 6. * S14A; values[kCORR2REF] = (norm(compA21) - S12A) / values[kM11REF]; values[kCORR4REF] = (std::pow(norm(compA21), 2) + norm(compA42) - 2. * (compA42 * conj(compA21) * conj(compA21)).real() + @@ -7395,25 +7473,25 @@ void VarManager::FillQVectorFromGFW( 4. * S12A * norm(compA21) - 6. * S14A + 2. * S22A) / values[kM1111REF]; values[kCORR2REF] = - std::isnan(values[kM11REF]) || std::isinf(values[kM11REF]) || - std::isnan(values[kCORR2REF]) || std::isinf(values[kCORR2REF]) - ? 0 - : values[kCORR2REF]; + std::isnan(values[kM11REF]) || std::isinf(values[kM11REF]) || + std::isnan(values[kCORR2REF]) || std::isinf(values[kCORR2REF]) + ? 0 + : values[kCORR2REF]; values[kM11REF] = - std::isnan(values[kM11REF]) || std::isinf(values[kM11REF]) || - std::isnan(values[kCORR2REF]) || std::isinf(values[kCORR2REF]) - ? 0 - : values[kM11REF]; + std::isnan(values[kM11REF]) || std::isinf(values[kM11REF]) || + std::isnan(values[kCORR2REF]) || std::isinf(values[kCORR2REF]) + ? 0 + : values[kM11REF]; values[kCORR4REF] = - std::isnan(values[kM1111REF]) || std::isinf(values[kM1111REF]) || - std::isnan(values[kCORR4REF]) || std::isinf(values[kCORR4REF]) - ? 0 - : values[kCORR4REF]; + std::isnan(values[kM1111REF]) || std::isinf(values[kM1111REF]) || + std::isnan(values[kCORR4REF]) || std::isinf(values[kCORR4REF]) + ? 0 + : values[kCORR4REF]; values[kM1111REF] = - std::isnan(values[kM1111REF]) || std::isinf(values[kM1111REF]) || - std::isnan(values[kCORR4REF]) || std::isinf(values[kCORR4REF]) - ? 0 - : values[kM1111REF]; + std::isnan(values[kM1111REF]) || std::isinf(values[kM1111REF]) || + std::isnan(values[kCORR4REF]) || std::isinf(values[kCORR4REF]) + ? 0 + : values[kM1111REF]; values[kCORR2CORR4REF] = values[kCORR2REF] * values[kCORR4REF]; values[kM11M1111REF] = values[kM11REF] * values[kM1111REF]; @@ -7425,17 +7503,17 @@ void VarManager::FillQVectorFromGFW( values[kM11REFetagap] = S11B * S11C; values[kCORR2REFetagap] = ((QB * conj(QC)).real()) / values[kM11REFetagap]; values[kCORR2REFetagap] = std::isnan(values[kM11REFetagap]) || - std::isinf(values[kM11REFetagap]) || - std::isnan(values[kCORR2REFetagap]) || - std::isinf(values[kCORR2REFetagap]) - ? 0 - : values[kCORR2REFetagap]; - values[kM11REFetagap] = std::isnan(values[kM11REFetagap]) || - std::isinf(values[kM11REFetagap]) || - std::isnan(values[kCORR2REFetagap]) || - std::isinf(values[kCORR2REFetagap]) + std::isinf(values[kM11REFetagap]) || + std::isnan(values[kCORR2REFetagap]) || + std::isinf(values[kCORR2REFetagap]) ? 0 - : values[kM11REFetagap]; + : values[kCORR2REFetagap]; + values[kM11REFetagap] = std::isnan(values[kM11REFetagap]) || + std::isinf(values[kM11REFetagap]) || + std::isnan(values[kCORR2REFetagap]) || + std::isinf(values[kCORR2REFetagap]) + ? 0 + : values[kM11REFetagap]; // TODO: provide different computations for R // Compute the R factor using the 2 sub-events technique for second and third @@ -7450,13 +7528,13 @@ void VarManager::FillQVectorFromGFW( values[kPsi2C] = Psi2C; values[kR2SP_AB] = - (values[kQ2X0A] * values[kQ2X0B] + values[kQ2Y0A] * values[kQ2Y0B]); + (values[kQ2X0A] * values[kQ2X0B] + values[kQ2Y0A] * values[kQ2Y0B]); values[kR2SP_AC] = - (values[kQ2X0A] * values[kQ2X0C] + values[kQ2Y0A] * values[kQ2Y0C]); + (values[kQ2X0A] * values[kQ2X0C] + values[kQ2Y0A] * values[kQ2Y0C]); values[kR2SP_BC] = - (values[kQ2X0B] * values[kQ2X0C] + values[kQ2Y0B] * values[kQ2Y0C]); + (values[kQ2X0B] * values[kQ2X0C] + values[kQ2Y0B] * values[kQ2Y0C]); values[kR3SP] = - (values[kQ3X0B] * values[kQ3X0C] + values[kQ3Y0B] * values[kQ3Y0C]); + (values[kQ3X0B] * values[kQ3X0C] + values[kQ3Y0B] * values[kQ3Y0C]); values[kR2EP_AB] = TMath::Cos(2 * (Psi2A - Psi2B)); values[kR2EP_AC] = TMath::Cos(2 * (Psi2A - Psi2C)); @@ -7465,9 +7543,10 @@ void VarManager::FillQVectorFromGFW( } template -void VarManager::FillQVectorFromCentralFW(C const &collision, float *values) { +void VarManager::FillQVectorFromCentralFW(C const& collision, float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } float xQVecFT0a = collision.qvecFT0ARe(); // already normalised @@ -7497,11 +7576,11 @@ void VarManager::FillQVectorFromCentralFW(C const &collision, float *values) { values[kMultAPOS] = collision.nTrkTPCpos(); values[kMultANEG] = collision.nTrkTPCneg(); values[kMultB] = - collision - .sumAmplFT0A(); // Be careful, this is weighted sum of multiplicity + collision + .sumAmplFT0A(); // Be careful, this is weighted sum of multiplicity values[kMultC] = - collision - .sumAmplFT0C(); // Be careful, this is weighted sum of multiplicity + collision + .sumAmplFT0C(); // Be careful, this is weighted sum of multiplicity // Q-vectors components correlation (A, B, C) values[kQ2YYAB] = values[kQ2Y0A] * values[kQ2Y0B]; @@ -7520,9 +7599,9 @@ void VarManager::FillQVectorFromCentralFW(C const &collision, float *values) { EventPlaneHelper epHelper; float Psi2A = epHelper.GetEventPlane(values[kQ2X0A], values[kQ2Y0A], 2); float Psi2APOS = - epHelper.GetEventPlane(values[kQ2X0APOS], values[kQ2Y0APOS], 2); + epHelper.GetEventPlane(values[kQ2X0APOS], values[kQ2Y0APOS], 2); float Psi2ANEG = - epHelper.GetEventPlane(values[kQ2X0ANEG], values[kQ2Y0ANEG], 2); + epHelper.GetEventPlane(values[kQ2X0ANEG], values[kQ2Y0ANEG], 2); float Psi2B = epHelper.GetEventPlane(values[kQ2X0B], values[kQ2Y0B], 2); float Psi2C = epHelper.GetEventPlane(values[kQ2X0C], values[kQ2Y0C], 2); @@ -7533,11 +7612,11 @@ void VarManager::FillQVectorFromCentralFW(C const &collision, float *values) { values[kPsi2C] = Psi2C; values[kR2SP_AB] = - (values[kQ2X0A] * values[kQ2X0B] + values[kQ2Y0A] * values[kQ2Y0B]); + (values[kQ2X0A] * values[kQ2X0B] + values[kQ2Y0A] * values[kQ2Y0B]); values[kR2SP_AC] = - (values[kQ2X0A] * values[kQ2X0C] + values[kQ2Y0A] * values[kQ2Y0C]); + (values[kQ2X0A] * values[kQ2X0C] + values[kQ2Y0A] * values[kQ2Y0C]); values[kR2SP_BC] = - (values[kQ2X0B] * values[kQ2X0C] + values[kQ2Y0B] * values[kQ2Y0C]); + (values[kQ2X0B] * values[kQ2X0C] + values[kQ2Y0B] * values[kQ2Y0C]); values[kR2SP_FT0CTPCPOS] = (xQVecFT0c * xQVecBPos + yQVecFT0c * yQVecBPos); values[kR2SP_FT0CTPCNEG] = (xQVecFT0c * xQVecBNeg + yQVecFT0c * yQVecBNeg); values[kR2SP_FT0ATPCPOS] = (xQVecFT0a * xQVecBPos + yQVecFT0a * yQVecBPos); @@ -7559,27 +7638,28 @@ void VarManager::FillQVectorFromCentralFW(C const &collision, float *values) { 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)); + TMath::Cos(2 * getDeltaPsiInRange(epFT0c, epBPoss, 2)); values[kR2EP_FT0CTPCNEG] = - TMath::Cos(2 * getDeltaPsiInRange(epFT0c, epBNegs, 2)); + TMath::Cos(2 * getDeltaPsiInRange(epFT0c, epBNegs, 2)); values[kR2EP_FT0ATPCPOS] = - TMath::Cos(2 * getDeltaPsiInRange(epFT0a, epBPoss, 2)); + TMath::Cos(2 * getDeltaPsiInRange(epFT0a, epBPoss, 2)); values[kR2EP_FT0ATPCNEG] = - TMath::Cos(2 * getDeltaPsiInRange(epFT0a, epBNegs, 2)); + TMath::Cos(2 * getDeltaPsiInRange(epFT0a, epBNegs, 2)); values[kR2EP_FT0MTPCPOS] = - TMath::Cos(2 * getDeltaPsiInRange(epFT0m, epBPoss, 2)); + TMath::Cos(2 * getDeltaPsiInRange(epFT0m, epBPoss, 2)); values[kR2EP_FT0MTPCNEG] = - TMath::Cos(2 * getDeltaPsiInRange(epFT0m, epBNegs, 2)); + TMath::Cos(2 * getDeltaPsiInRange(epFT0m, epBNegs, 2)); values[kR2EP_FV0ATPCPOS] = - TMath::Cos(2 * getDeltaPsiInRange(epFV0a, epBPoss, 2)); + TMath::Cos(2 * getDeltaPsiInRange(epFV0a, epBPoss, 2)); values[kR2EP_FV0ATPCNEG] = - TMath::Cos(2 * getDeltaPsiInRange(epFV0a, epBNegs, 2)); + TMath::Cos(2 * getDeltaPsiInRange(epFV0a, epBNegs, 2)); } template -void VarManager::FillSpectatorPlane(C const &collision, float *values) { +void VarManager::FillSpectatorPlane(C const& collision, float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } auto zncEnergy = collision.energySectorZNC(); @@ -7594,13 +7674,13 @@ void VarManager::FillSpectatorPlane(C const &collision, float *values) { } } float znaCommon = - collision.energyCommonZNA() < 0 ? -1.f : collision.energyCommonZNA(); + collision.energyCommonZNA() < 0 ? -1.f : collision.energyCommonZNA(); float zncCommon = - collision.energyCommonZNC() < 0 ? -1.f : collision.energyCommonZNC(); + collision.energyCommonZNC() < 0 ? -1.f : collision.energyCommonZNC(); float zpaCommon = - collision.energyCommonZPA() < 0 ? -1.f : collision.energyCommonZPA(); + collision.energyCommonZPA() < 0 ? -1.f : collision.energyCommonZPA(); float zpcCommon = - collision.energyCommonZPC() < 0 ? -1.f : collision.energyCommonZPC(); + collision.energyCommonZPC() < 0 ? -1.f : collision.energyCommonZPC(); // Store ZNA and ZNC energies for calibrations values[kEnergyCommonZNA] = znaCommon; @@ -7682,7 +7762,7 @@ void VarManager::FillSpectatorPlane(C const &collision, float *values) { values[kQ1ZNACXY] = values[kQ1ZNAX] * values[kQ1ZNCY]; } else { values[kQ1ZNACXX] = values[kQ1ZNACYY] = values[kQ1ZNACYX] = - values[kQ1ZNACXY] = 999.; + values[kQ1ZNACXY] = 999.; } if (znaCommon != 0 && sumZNA != 0 && zncCommon != 0 && sumZNC != 0) { @@ -7692,10 +7772,11 @@ void VarManager::FillSpectatorPlane(C const &collision, float *values) { } template -void VarManager::FillPairVn(T1 const &t1, T2 const &t2, float *values) { +void VarManager::FillPairVn(T1 const& t1, T2 const& t2, float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } float m1 = o2::constants::physics::MassElectron; @@ -7734,13 +7815,13 @@ void VarManager::FillPairVn(T1 const &t1, T2 const &t2, float *values) { values[kU3Q3] = values[kQ3X0A] * TMath::Cos(3 * v12.Phi()) + values[kQ3Y0A] * TMath::Sin(3 * v12.Phi()); values[kR2SP_AB] = - (values[kQ2X0A] * values[kQ2X0B] + values[kQ2Y0A] * values[kQ2Y0B]); + (values[kQ2X0A] * values[kQ2X0B] + values[kQ2Y0A] * values[kQ2Y0B]); values[kR2SP_AC] = - (values[kQ2X0A] * values[kQ2X0C] + values[kQ2Y0A] * values[kQ2Y0C]); + (values[kQ2X0A] * values[kQ2X0C] + values[kQ2Y0A] * values[kQ2Y0C]); values[kR2SP_BC] = - (values[kQ2X0B] * values[kQ2X0C] + values[kQ2Y0B] * values[kQ2Y0C]); + (values[kQ2X0B] * values[kQ2X0C] + values[kQ2Y0B] * values[kQ2Y0C]); values[kR3SP] = - (values[kQ3X0B] * values[kQ3X0C] + values[kQ3Y0B] * values[kQ3Y0C]); + (values[kQ3X0B] * values[kQ3X0C] + values[kQ3Y0B] * values[kQ3Y0C]); float Psi2A = getEventPlane(2, values[kQ2X0A], values[kQ2Y0A]); float Psi2APOS = getEventPlane(2, values[kQ2X0APOS], values[kQ2Y0APOS]); @@ -7767,7 +7848,7 @@ void VarManager::FillPairVn(T1 const &t1, T2 const &t2, float *values) { values[kWV2SP] = std::isnan(V2SP) || std::isinf(V2SP) ? 0. : 1.0; values[kV2EP] = std::isnan(V2EP) || std::isinf(V2EP) ? 0. : V2EP; values[kV2EP_FT0C] = - std::isnan(V2EP_FT0C) || std::isinf(V2EP_FT0C) ? 0. : V2EP_FT0C; + std::isnan(V2EP_FT0C) || std::isinf(V2EP_FT0C) ? 0. : V2EP_FT0C; values[kWV2EP] = std::isnan(V2EP) || std::isinf(V2EP) ? 0. : 1.0; if (std::isnan(VarManager::fgValues[VarManager::kU2Q2])) { @@ -7804,24 +7885,24 @@ void VarManager::FillPairVn(T1 const &t1, T2 const &t2, float *values) { 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(TMath::Cos(Psi2A), TMath::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(TMath::Cos(Psi2B), TMath::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(TMath::Cos(Psi2C), TMath::Sin(Psi2C), 0).Unit(); values[kCosThetaStarFT0C] = v_CM.Dot(zaxisFT0C); values[kAbsCosThetaStarFT0C] = std::abs(values[kCosThetaStarFT0C]); values[kCos2ThetaStarFT0C] = - values[kCosThetaStarFT0C] * values[kCosThetaStarFT0C]; + values[kCosThetaStarFT0C] * values[kCosThetaStarFT0C]; } // Coherent Jpsi A2 bool useCoherentJpsiA2 = - fgUsedVars[kA2EP_TPC] || fgUsedVars[kA2EP_FT0A] || fgUsedVars[kA2EP_FT0C]; + fgUsedVars[kA2EP_TPC] || fgUsedVars[kA2EP_FT0A] || fgUsedVars[kA2EP_FT0C]; if (useCoherentJpsiA2) { // remove daughter from TPC Q-vector // TODO: remove based on track cut in qVectorTable @@ -7867,36 +7948,36 @@ void VarManager::FillPairVn(T1 const &t1, T2 const &t2, float *values) { // reaction plane float phi = v_daughter.Phi() > o2::constants::math::PI - ? o2::constants::math::TwoPI - v_daughter.Phi() - : v_daughter.Phi(); + ? o2::constants::math::TwoPI - v_daughter.Phi() + : v_daughter.Phi(); values[kDeltaPhi_TPC] = phi > Psi2ATPC ? phi - Psi2ATPC : Psi2ATPC - phi; values[kDeltaPhi_TPC] = - values[kDeltaPhi_TPC] > o2::constants::math::PI - ? o2::constants::math::TwoPI - 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] > o2::constants::math::PI - ? o2::constants::math::TwoPI - 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] > o2::constants::math::PI - ? o2::constants::math::TwoPI - 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] > o2::constants::math::PIHalf - ? o2::constants::math::PI - values[kDeltaPhi_TPC] - : 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_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[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)); @@ -7905,11 +7986,11 @@ void VarManager::FillPairVn(T1 const &t1, T2 const &t2, float *values) { 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; + 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; + 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; + std::isnan(A2RP_FT0C) || std::isinf(A2RP_FT0C) ? -999. : A2RP_FT0C; } // kV4, kC4POI, kC4REF etc. @@ -7926,356 +8007,356 @@ void VarManager::FillPairVn(T1 const &t1, T2 const &t2, float *values) { 2. * values[kS13A]); values[kCORR2POI] = (P2 * conj(Q21)).real() / values[kM01POI]; values[kCORR4POI] = - (P2 * Q21 * conj(Q21) * conj(Q21) - P2 * Q21 * conj(Q42) - - 2. * values[kS12A] * P2 * conj(Q21) + 2. * P2 * conj(Q23)) - .real() / - values[kM0111POI]; + (P2 * Q21 * conj(Q21) * conj(Q21) - P2 * Q21 * conj(Q42) - + 2. * values[kS12A] * P2 * conj(Q21) + 2. * P2 * conj(Q23)) + .real() / + values[kM0111POI]; values[kM01POIoverMp] = - values[kMultDimuons] > 0 && - !(std::isnan(values[kM01POI]) || std::isinf(values[kM01POI]) || - std::isnan(values[kCORR2POI]) || - std::isinf(values[kCORR2POI]) || - std::isnan(values[kM0111POI]) || - std::isinf(values[kM0111POI]) || - std::isnan(values[kCORR4POI]) || - std::isinf(values[kCORR4POI])) - ? values[kM01POI] / values[kMultDimuons] - : 0; + values[kMultDimuons] > 0 && + !(std::isnan(values[kM01POI]) || std::isinf(values[kM01POI]) || + std::isnan(values[kCORR2POI]) || + std::isinf(values[kCORR2POI]) || + std::isnan(values[kM0111POI]) || + std::isinf(values[kM0111POI]) || + std::isnan(values[kCORR4POI]) || + std::isinf(values[kCORR4POI])) + ? values[kM01POI] / values[kMultDimuons] + : 0; values[kM0111POIoverMp] = - values[kMultDimuons] > 0 && - !(std::isnan(values[kM0111POI]) || - std::isinf(values[kM0111POI]) || - std::isnan(values[kCORR4POI]) || - std::isinf(values[kCORR4POI]) || - std::isnan(values[kM01POI]) || std::isinf(values[kM01POI]) || - std::isnan(values[kCORR2POI]) || - std::isinf(values[kCORR2POI])) - ? values[kM0111POI] / values[kMultDimuons] - : 0; + values[kMultDimuons] > 0 && + !(std::isnan(values[kM0111POI]) || + std::isinf(values[kM0111POI]) || + std::isnan(values[kCORR4POI]) || + std::isinf(values[kCORR4POI]) || + std::isnan(values[kM01POI]) || std::isinf(values[kM01POI]) || + std::isnan(values[kCORR2POI]) || + std::isinf(values[kCORR2POI])) + ? values[kM0111POI] / values[kMultDimuons] + : 0; values[kM11REFoverMp] = - values[kMultDimuons] > 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[kMultDimuons] - : 0; + values[kMultDimuons] > 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[kMultDimuons] + : 0; values[kM1111REFoverMp] = - values[kMultDimuons] > 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[kMultDimuons] - : 0; + values[kMultDimuons] > 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[kMultDimuons] + : 0; values[kCORR2REFbydimuons] = std::isnan(values[kM11REFoverMp]) || - std::isinf(values[kM11REFoverMp]) || - std::isnan(values[kCORR2REF]) || - std::isinf(values[kCORR2REF]) || - std::isnan(values[kM1111REFoverMp]) || - std::isinf(values[kM1111REFoverMp]) || - std::isnan(values[kCORR4REF]) || - std::isinf(values[kCORR4REF]) - ? 0 - : values[kCORR2REF]; + std::isinf(values[kM11REFoverMp]) || + std::isnan(values[kCORR2REF]) || + std::isinf(values[kCORR2REF]) || + std::isnan(values[kM1111REFoverMp]) || + std::isinf(values[kM1111REFoverMp]) || + std::isnan(values[kCORR4REF]) || + std::isinf(values[kCORR4REF]) + ? 0 + : values[kCORR2REF]; values[kCORR4REFbydimuons] = std::isnan(values[kM1111REFoverMp]) || - std::isinf(values[kM1111REFoverMp]) || - std::isnan(values[kCORR4REF]) || - std::isinf(values[kCORR4REF]) || - std::isnan(values[kM11REFoverMp]) || - std::isinf(values[kM11REFoverMp]) || - std::isnan(values[kCORR2REF]) || - std::isinf(values[kCORR2REF]) - ? 0 - : values[kCORR4REF]; + std::isinf(values[kM1111REFoverMp]) || + std::isnan(values[kCORR4REF]) || + std::isinf(values[kCORR4REF]) || + std::isnan(values[kM11REFoverMp]) || + std::isinf(values[kM11REFoverMp]) || + std::isnan(values[kCORR2REF]) || + std::isinf(values[kCORR2REF]) + ? 0 + : values[kCORR4REF]; values[kCORR2POI] = - std::isnan(values[kCORR2POI]) || std::isinf(values[kCORR2POI]) || - std::isnan(values[kM01POI]) || std::isinf(values[kM01POI]) || - std::isnan(values[kCORR4POI]) || - std::isinf(values[kCORR4POI]) || - std::isnan(values[kM0111POI]) || std::isinf(values[kM0111POI]) - ? 0 - : values[kCORR2POI]; + std::isnan(values[kCORR2POI]) || std::isinf(values[kCORR2POI]) || + std::isnan(values[kM01POI]) || std::isinf(values[kM01POI]) || + std::isnan(values[kCORR4POI]) || + std::isinf(values[kCORR4POI]) || + std::isnan(values[kM0111POI]) || std::isinf(values[kM0111POI]) + ? 0 + : values[kCORR2POI]; values[kCORR4POI] = - std::isnan(values[kCORR4POI]) || std::isinf(values[kCORR4POI]) || - std::isnan(values[kM0111POI]) || - std::isinf(values[kM0111POI]) || - std::isnan(values[kCORR2POI]) || - std::isinf(values[kCORR2POI]) || std::isnan(values[kM01POI]) || - std::isinf(values[kM01POI]) - ? 0 - : values[kCORR4POI]; + std::isnan(values[kCORR4POI]) || std::isinf(values[kCORR4POI]) || + std::isnan(values[kM0111POI]) || + std::isinf(values[kM0111POI]) || + std::isnan(values[kCORR2POI]) || + std::isinf(values[kCORR2POI]) || std::isnan(values[kM01POI]) || + std::isinf(values[kM01POI]) + ? 0 + : values[kCORR4POI]; values[kCORR2CORR4REF] = std::isnan(values[kM11M1111REFoverMp]) || - std::isinf(values[kM11M1111REFoverMp]) || - std::isnan(values[kCORR2CORR4REF]) || - std::isinf(values[kCORR2CORR4REF]) - ? 0 - : values[kCORR2CORR4REF]; + std::isinf(values[kM11M1111REFoverMp]) || + std::isnan(values[kCORR2CORR4REF]) || + std::isinf(values[kCORR2CORR4REF]) + ? 0 + : values[kCORR2CORR4REF]; values[kCORR2POICORR4POI] = - std::isnan(values[kCORR2POI]) || std::isinf(values[kCORR2POI]) || - std::isnan(values[kCORR4POI]) || - std::isinf(values[kCORR4POI]) || std::isnan(values[kM01POI]) || - std::isinf(values[kM01POI]) || std::isnan(values[kM0111POI]) || - std::isinf(values[kM0111POI]) - ? 0 - : values[kCORR2POI] * values[kCORR4POI]; + std::isnan(values[kCORR2POI]) || std::isinf(values[kCORR2POI]) || + std::isnan(values[kCORR4POI]) || + std::isinf(values[kCORR4POI]) || std::isnan(values[kM01POI]) || + std::isinf(values[kM01POI]) || std::isnan(values[kM0111POI]) || + std::isinf(values[kM0111POI]) + ? 0 + : values[kCORR2POI] * values[kCORR4POI]; values[kCORR2REFCORR4POI] = - std::isnan(values[kCORR2REF]) || std::isinf(values[kCORR2REF]) || - std::isnan(values[kCORR4POI]) || - std::isinf(values[kCORR4POI]) || std::isnan(values[kM11REF]) || - std::isinf(values[kM11REF]) || std::isnan(values[kM0111POI]) || - std::isinf(values[kM0111POI]) - ? 0 - : values[kCORR2REF] * values[kCORR4POI]; + std::isnan(values[kCORR2REF]) || std::isinf(values[kCORR2REF]) || + std::isnan(values[kCORR4POI]) || + std::isinf(values[kCORR4POI]) || std::isnan(values[kM11REF]) || + std::isinf(values[kM11REF]) || std::isnan(values[kM0111POI]) || + std::isinf(values[kM0111POI]) + ? 0 + : values[kCORR2REF] * values[kCORR4POI]; values[kCORR2REFCORR2POI] = - std::isnan(values[kCORR2REF]) || std::isinf(values[kCORR2REF]) || - std::isnan(values[kCORR2POI]) || - std::isinf(values[kCORR2POI]) || std::isnan(values[kM11REF]) || - std::isinf(values[kM11REF]) || std::isnan(values[kM01POI]) || - std::isinf(values[kM01POI]) - ? 0 - : values[kCORR2REF] * values[kCORR2POI]; + std::isnan(values[kCORR2REF]) || std::isinf(values[kCORR2REF]) || + std::isnan(values[kCORR2POI]) || + std::isinf(values[kCORR2POI]) || std::isnan(values[kM11REF]) || + std::isinf(values[kM11REF]) || std::isnan(values[kM01POI]) || + std::isinf(values[kM01POI]) + ? 0 + : values[kCORR2REF] * values[kCORR2POI]; values[kM11M1111REFoverMp] = - values[kMultDimuons] > 0 && !(std::isnan(values[kM11M1111REF]) || - std::isinf(values[kM11M1111REF]) || - std::isnan(values[kCORR2CORR4REF]) || - std::isinf(values[kCORR2CORR4REF])) - ? values[kM11M1111REF] / values[kMultDimuons] - : 0; + values[kMultDimuons] > 0 && !(std::isnan(values[kM11M1111REF]) || + std::isinf(values[kM11M1111REF]) || + std::isnan(values[kCORR2CORR4REF]) || + std::isinf(values[kCORR2CORR4REF])) + ? values[kM11M1111REF] / values[kMultDimuons] + : 0; values[kM01M0111overMp] = - values[kMultDimuons] > 0 && - !(std::isnan(values[kM01POI]) || std::isinf(values[kM01POI]) || - std::isnan(values[kM0111POI]) || - std::isinf(values[kM0111POI]) || - std::isnan(values[kCORR2POI]) || - std::isinf(values[kCORR2POI]) || - std::isnan(values[kCORR4POI]) || - std::isinf(values[kCORR4POI])) - ? (values[kM01POI] * values[kM0111POI]) / values[kMultDimuons] - : 0; + values[kMultDimuons] > 0 && + !(std::isnan(values[kM01POI]) || std::isinf(values[kM01POI]) || + std::isnan(values[kM0111POI]) || + std::isinf(values[kM0111POI]) || + std::isnan(values[kCORR2POI]) || + std::isinf(values[kCORR2POI]) || + std::isnan(values[kCORR4POI]) || + std::isinf(values[kCORR4POI])) + ? (values[kM01POI] * values[kM0111POI]) / values[kMultDimuons] + : 0; 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[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; + 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())); 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[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[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; + 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; values[kM1111REFoverMpminus] = - 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[kM1111REF] / values[kMultMuons] - : 0; + 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[kM1111REF] / values[kMultMuons] + : 0; values[kCORR2POIplus] = (P2plus * conj(Q21)).real() / values[kM01POI]; values[kCORR2POIminus] = (P2minus * conj(Q21)).real() / values[kM01POI]; values[kM01POIplus] = values[kMultAntiMuons] * values[kS11A]; values[kM0111POIplus] = - values[kMultAntiMuons] * - (values[kS31A] - 3. * values[kS11A] * values[kS12A] + - 2. * values[kS13A]); + values[kMultAntiMuons] * + (values[kS31A] - 3. * values[kS11A] * values[kS12A] + + 2. * values[kS13A]); values[kCORR2POIplus] = (P2plus * conj(Q21)).real() / values[kM01POIplus]; values[kCORR4POIplus] = - (P2plus * Q21 * conj(Q21) * conj(Q21) - P2plus * Q21 * conj(Q42) - - 2. * values[kS12A] * P2plus * conj(Q21) + 2. * P2plus * conj(Q23)) - .real() / - values[kM0111POIplus]; + (P2plus * Q21 * conj(Q21) * conj(Q21) - P2plus * Q21 * conj(Q42) - + 2. * values[kS12A] * P2plus * conj(Q21) + 2. * P2plus * conj(Q23)) + .real() / + values[kM0111POIplus]; values[kM01POIminus] = values[kMultMuons] * values[kS11A]; values[kM0111POIminus] = - values[kMultMuons] * - (values[kS31A] - 3. * values[kS11A] * values[kS12A] + - 2. * values[kS13A]); + values[kMultMuons] * + (values[kS31A] - 3. * values[kS11A] * values[kS12A] + + 2. * values[kS13A]); values[kCORR2POIminus] = - (P2minus * conj(Q21)).real() / values[kM01POIminus]; + (P2minus * conj(Q21)).real() / values[kM01POIminus]; values[kCORR4POIminus] = - (P2minus * Q21 * conj(Q21) * conj(Q21) - P2minus * Q21 * conj(Q42) - - 2. * values[kS12A] * P2minus * conj(Q21) + 2. * P2minus * conj(Q23)) - .real() / - values[kM0111POIminus]; + (P2minus * Q21 * conj(Q21) * conj(Q21) - P2minus * Q21 * conj(Q42) - + 2. * values[kS12A] * P2minus * conj(Q21) + 2. * P2minus * conj(Q23)) + .real() / + values[kM0111POIminus]; values[kM01POIplus] = std::isnan(values[kM01POIplus]) || - std::isinf(values[kM01POIplus]) || - std::isnan(values[kM0111POIplus]) || - std::isinf(values[kM0111POIplus]) || - std::isnan(values[kCORR2POIplus]) || - std::isinf(values[kCORR2POIplus]) || - std::isnan(values[kCORR4POIplus]) || - std::isinf(values[kCORR4POIplus]) - ? 0 - : values[kM01POIplus]; + std::isinf(values[kM01POIplus]) || + std::isnan(values[kM0111POIplus]) || + std::isinf(values[kM0111POIplus]) || + std::isnan(values[kCORR2POIplus]) || + std::isinf(values[kCORR2POIplus]) || + std::isnan(values[kCORR4POIplus]) || + std::isinf(values[kCORR4POIplus]) + ? 0 + : values[kM01POIplus]; values[kM0111POIplus] = std::isnan(values[kM0111POIplus]) || - std::isinf(values[kM0111POIplus]) || - std::isnan(values[kCORR2POIplus]) || - std::isinf(values[kCORR2POIplus]) || - std::isnan(values[kCORR4POIplus]) || - std::isinf(values[kCORR4POIplus]) - ? 0 - : values[kM0111POIplus]; + std::isinf(values[kM0111POIplus]) || + std::isnan(values[kCORR2POIplus]) || + std::isinf(values[kCORR2POIplus]) || + std::isnan(values[kCORR4POIplus]) || + std::isinf(values[kCORR4POIplus]) + ? 0 + : values[kM0111POIplus]; values[kCORR2POIplus] = std::isnan(values[kM01POIplus]) || - std::isinf(values[kM01POIplus]) || - std::isnan(values[kM0111POIplus]) || - std::isinf(values[kM0111POIplus]) || - std::isnan(values[kCORR2POIplus]) || - std::isinf(values[kCORR2POIplus]) || - std::isnan(values[kCORR4POIplus]) || - std::isinf(values[kCORR4POIplus]) - ? 0 - : values[kCORR2POIplus]; + std::isinf(values[kM01POIplus]) || + std::isnan(values[kM0111POIplus]) || + std::isinf(values[kM0111POIplus]) || + std::isnan(values[kCORR2POIplus]) || + std::isinf(values[kCORR2POIplus]) || + std::isnan(values[kCORR4POIplus]) || + std::isinf(values[kCORR4POIplus]) + ? 0 + : values[kCORR2POIplus]; values[kCORR4POIplus] = std::isnan(values[kM01POIplus]) || - std::isinf(values[kM01POIplus]) || - std::isnan(values[kM0111POIplus]) || - std::isinf(values[kM0111POIplus]) || - std::isnan(values[kCORR2POIplus]) || - std::isinf(values[kCORR2POIplus]) || - std::isnan(values[kCORR4POIplus]) || - std::isinf(values[kCORR4POIplus]) - ? 0 - : values[kCORR4POIplus]; + std::isinf(values[kM01POIplus]) || + std::isnan(values[kM0111POIplus]) || + std::isinf(values[kM0111POIplus]) || + std::isnan(values[kCORR2POIplus]) || + std::isinf(values[kCORR2POIplus]) || + std::isnan(values[kCORR4POIplus]) || + std::isinf(values[kCORR4POIplus]) + ? 0 + : values[kCORR4POIplus]; values[kM01POIminus] = std::isnan(values[kM01POIminus]) || - std::isinf(values[kM01POIminus]) || - std::isnan(values[kM0111POIminus]) || - std::isinf(values[kM0111POIminus]) || - std::isnan(values[kCORR2POIminus]) || - std::isinf(values[kCORR2POIminus]) || - std::isnan(values[kCORR4POIminus]) || - std::isinf(values[kCORR4POIminus]) - ? 0 - : values[kM01POIminus]; + std::isinf(values[kM01POIminus]) || + std::isnan(values[kM0111POIminus]) || + std::isinf(values[kM0111POIminus]) || + std::isnan(values[kCORR2POIminus]) || + std::isinf(values[kCORR2POIminus]) || + std::isnan(values[kCORR4POIminus]) || + std::isinf(values[kCORR4POIminus]) + ? 0 + : values[kM01POIminus]; values[kM0111POIminus] = std::isnan(values[kM01POIminus]) || - std::isinf(values[kM01POIminus]) || - std::isnan(values[kM0111POIminus]) || - std::isinf(values[kM0111POIminus]) || - std::isnan(values[kCORR2POIminus]) || - std::isinf(values[kCORR2POIminus]) || - std::isnan(values[kCORR4POIminus]) || - std::isinf(values[kCORR4POIminus]) - ? 0 - : values[kM0111POIminus]; + std::isinf(values[kM01POIminus]) || + std::isnan(values[kM0111POIminus]) || + std::isinf(values[kM0111POIminus]) || + std::isnan(values[kCORR2POIminus]) || + std::isinf(values[kCORR2POIminus]) || + std::isnan(values[kCORR4POIminus]) || + std::isinf(values[kCORR4POIminus]) + ? 0 + : values[kM0111POIminus]; values[kCORR2POIminus] = std::isnan(values[kM01POIminus]) || - std::isinf(values[kM01POIminus]) || - std::isnan(values[kM0111POIminus]) || - std::isinf(values[kM0111POIminus]) || - std::isnan(values[kCORR2POIminus]) || - std::isinf(values[kCORR2POIminus]) || - std::isnan(values[kCORR4POIminus]) || - std::isinf(values[kCORR4POIminus]) - ? 0 - : values[kCORR2POIminus]; + std::isinf(values[kM01POIminus]) || + std::isnan(values[kM0111POIminus]) || + std::isinf(values[kM0111POIminus]) || + std::isnan(values[kCORR2POIminus]) || + std::isinf(values[kCORR2POIminus]) || + std::isnan(values[kCORR4POIminus]) || + std::isinf(values[kCORR4POIminus]) + ? 0 + : values[kCORR2POIminus]; values[kCORR4POIminus] = std::isnan(values[kM01POIminus]) || - std::isinf(values[kM01POIminus]) || - std::isnan(values[kM0111POIminus]) || - std::isinf(values[kM0111POIminus]) || - std::isnan(values[kCORR2POIminus]) || - std::isinf(values[kCORR2POIminus]) || - std::isnan(values[kCORR4POIminus]) || - std::isinf(values[kCORR4POIminus]) - ? 0 - : values[kCORR4POIminus]; + std::isinf(values[kM01POIminus]) || + std::isnan(values[kM0111POIminus]) || + std::isinf(values[kM0111POIminus]) || + std::isnan(values[kCORR2POIminus]) || + std::isinf(values[kCORR2POIminus]) || + std::isnan(values[kCORR4POIminus]) || + std::isinf(values[kCORR4POIminus]) + ? 0 + : values[kCORR4POIminus]; values[kM01POIoverMpminus] = - values[kMultMuons] > 0 && !(std::isnan(values[kM0111POIminus]) || - std::isinf(values[kM0111POIminus]) || - std::isnan(values[kCORR4POIminus]) || - std::isinf(values[kCORR4POIminus]) || - std::isnan(values[kM01POIminus]) || - std::isinf(values[kM01POIminus]) || - std::isnan(values[kCORR2POIminus]) || - std::isinf(values[kCORR2POIminus])) - ? values[kM01POIminus] / values[kMultMuons] - : 0; + values[kMultMuons] > 0 && !(std::isnan(values[kM0111POIminus]) || + std::isinf(values[kM0111POIminus]) || + std::isnan(values[kCORR4POIminus]) || + std::isinf(values[kCORR4POIminus]) || + std::isnan(values[kM01POIminus]) || + std::isinf(values[kM01POIminus]) || + std::isnan(values[kCORR2POIminus]) || + std::isinf(values[kCORR2POIminus])) + ? values[kM01POIminus] / values[kMultMuons] + : 0; values[kM0111POIoverMpminus] = - values[kMultMuons] > 0 && !(std::isnan(values[kM0111POIminus]) || - std::isinf(values[kM0111POIminus]) || - std::isnan(values[kCORR4POIminus]) || - std::isinf(values[kCORR4POIminus]) || - std::isnan(values[kM01POIminus]) || - std::isinf(values[kM01POIminus]) || - std::isnan(values[kCORR2POIminus]) || - std::isinf(values[kCORR2POIminus])) - ? values[kM0111POIminus] / values[kMultMuons] - : 0; + values[kMultMuons] > 0 && !(std::isnan(values[kM0111POIminus]) || + std::isinf(values[kM0111POIminus]) || + std::isnan(values[kCORR4POIminus]) || + std::isinf(values[kCORR4POIminus]) || + std::isnan(values[kM01POIminus]) || + std::isinf(values[kM01POIminus]) || + std::isnan(values[kCORR2POIminus]) || + std::isinf(values[kCORR2POIminus])) + ? values[kM0111POIminus] / values[kMultMuons] + : 0; values[kM01POIoverMpplus] = - values[kMultAntiMuons] > 0 && !(std::isnan(values[kM0111POIplus]) || - std::isinf(values[kM0111POIplus]) || - std::isnan(values[kCORR4POIplus]) || - std::isinf(values[kCORR4POIplus]) || - std::isnan(values[kM01POIplus]) || - std::isinf(values[kM01POIplus]) || - std::isnan(values[kCORR2POIplus]) || - std::isinf(values[kCORR2POIplus])) - ? values[kM01POIplus] / values[kMultAntiMuons] - : 0; + values[kMultAntiMuons] > 0 && !(std::isnan(values[kM0111POIplus]) || + std::isinf(values[kM0111POIplus]) || + std::isnan(values[kCORR4POIplus]) || + std::isinf(values[kCORR4POIplus]) || + std::isnan(values[kM01POIplus]) || + std::isinf(values[kM01POIplus]) || + std::isnan(values[kCORR2POIplus]) || + std::isinf(values[kCORR2POIplus])) + ? values[kM01POIplus] / values[kMultAntiMuons] + : 0; values[kM0111POIoverMpplus] = - values[kMultMuons] > 0 && !(std::isnan(values[kM0111POIplus]) || - std::isinf(values[kM0111POIplus]) || - std::isnan(values[kCORR4POIplus]) || - std::isinf(values[kCORR4POIplus]) || - std::isnan(values[kM01POIplus]) || - std::isinf(values[kM01POIplus]) || - std::isnan(values[kCORR2POIplus]) || - std::isinf(values[kCORR2POIplus])) - ? values[kM0111POIplus] / values[kMultAntiMuons] - : 0; + values[kMultMuons] > 0 && !(std::isnan(values[kM0111POIplus]) || + std::isinf(values[kM0111POIplus]) || + std::isnan(values[kCORR4POIplus]) || + std::isinf(values[kCORR4POIplus]) || + std::isnan(values[kM01POIplus]) || + std::isinf(values[kM01POIplus]) || + std::isnan(values[kCORR2POIplus]) || + std::isinf(values[kCORR2POIplus])) + ? values[kM0111POIplus] / values[kMultAntiMuons] + : 0; } ROOT::Math::PtEtaPhiMVector v1_vp(v1.Pt(), v1.Eta(), v1.Phi() - Psi2B, @@ -8286,30 +8367,32 @@ void VarManager::FillPairVn(T1 const &t1, T2 const &t2, float *values) { auto p12_vp = ROOT::Math::XYZVectorF(v12_vp.Px(), v12_vp.Py(), v12_vp.Pz()); auto p12_vp_projXZ = ROOT::Math::XYZVectorF(p12_vp.X(), 0, p12_vp.Z()); auto vDimu = (t1.sign() > 0 - ? ROOT::Math::XYZVectorF(v1_vp.Px(), v1_vp.Py(), v1_vp.Pz()) - .Cross(ROOT::Math::XYZVectorF(v2_vp.Px(), v2_vp.Py(), - v2_vp.Pz())) - : ROOT::Math::XYZVectorF(v2_vp.Px(), v2_vp.Py(), v2_vp.Pz()) - .Cross(ROOT::Math::XYZVectorF(v1_vp.Px(), v1_vp.Py(), - v1_vp.Pz()))); + ? ROOT::Math::XYZVectorF(v1_vp.Px(), v1_vp.Py(), v1_vp.Pz()) + .Cross(ROOT::Math::XYZVectorF(v2_vp.Px(), v2_vp.Py(), + v2_vp.Pz())) + : ROOT::Math::XYZVectorF(v2_vp.Px(), v2_vp.Py(), v2_vp.Pz()) + .Cross(ROOT::Math::XYZVectorF(v1_vp.Px(), v1_vp.Py(), + v1_vp.Pz()))); auto vRef = p12_vp.Cross(p12_vp_projXZ); values[kCosPhiVP] = vDimu.Dot(vRef) / (vRef.R() * vDimu.R()); values[kPhiVP] = std::acos(vDimu.Dot(vRef) / (vRef.R() * vDimu.R())); } -template void VarManager::FillZDC(T const &zdc, float *values) { +template +void VarManager::FillZDC(T const& zdc, float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } values[kEnergyCommonZNA] = - (zdc.energyCommonZNA() > 0) ? zdc.energyCommonZNA() : -1.; + (zdc.energyCommonZNA() > 0) ? zdc.energyCommonZNA() : -1.; values[kEnergyCommonZNC] = - (zdc.energyCommonZNC() > 0) ? zdc.energyCommonZNC() : -1.; + (zdc.energyCommonZNC() > 0) ? zdc.energyCommonZNC() : -1.; values[kEnergyCommonZPA] = - (zdc.energyCommonZPA() > 0) ? zdc.energyCommonZPA() : -1.; + (zdc.energyCommonZPA() > 0) ? zdc.energyCommonZPA() : -1.; values[kEnergyCommonZPC] = - (zdc.energyCommonZPC() > 0) ? zdc.energyCommonZPC() : -1.; + (zdc.energyCommonZPC() > 0) ? zdc.energyCommonZPC() : -1.; values[kTimeZNA] = zdc.timeZNA(); values[kTimeZNC] = zdc.timeZNC(); values[kTimeZPA] = zdc.timeZPA(); @@ -8317,10 +8400,11 @@ template void VarManager::FillZDC(T const &zdc, float *values) { } template -void VarManager::FillDileptonHadron(T1 const &dilepton, T2 const &hadron, - float *values, float hadronMass) { +void VarManager::FillDileptonHadron(T1 const& dilepton, T2 const& hadron, + float* values, float hadronMass) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } if (fgUsedVars[kPairMass] || fgUsedVars[kPairPt] || fgUsedVars[kPairEta] || @@ -8343,7 +8427,7 @@ void VarManager::FillDileptonHadron(T1 const &dilepton, T2 const &hadron, ROOT::Math::PtEtaPhiMVector v12_Qvect = v1 - v2; double Pinv = v12.M(); double Q1 = - (dilepton.mass() * dilepton.mass() - hadronMass * hadronMass) / Pinv; + (dilepton.mass() * dilepton.mass() - hadronMass * hadronMass) / Pinv; values[kDileptonHadronKstar] = std::sqrt(Q1 * Q1 - v12_Qvect.M2()) / 2.0; } @@ -8365,14 +8449,15 @@ void VarManager::FillDileptonHadron(T1 const &dilepton, T2 const &hadron, template -void VarManager::FillEnergyCorrelatorTriple(C const &collision, - T1 const &lepton1, - T2 const &lepton2, T3 const &hadron, - float *values, float Translow, +void VarManager::FillEnergyCorrelatorTriple(C const& collision, + T1 const& lepton1, + T2 const& lepton2, T3 const& hadron, + float* values, float Translow, float Transhigh, bool applyFitMass, - float sidebandMass, float weight) { + float sidebandMass, float weight) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } if (fgUsedVars[kVertexingTauxyProjectedPoleJPsiMass] || fgUsedVars[kVertexingLxyProjected]) { @@ -8419,7 +8504,7 @@ void VarManager::FillEnergyCorrelatorTriple(C const &collision, values[kPtDau] = v2.pt(); values[kEtaDau] = v2.eta(); values[kPhiDau] = - RecoDecay::constrainAngle(v2.phi(), -o2::constants::math::PIHalf); + RecoDecay::constrainAngle(v2.phi(), -o2::constants::math::PIHalf); float deltaphi = RecoDecay::constrainAngle(v1.phi() - v2.phi(), -o2::constants::math::PI); @@ -8450,40 +8535,40 @@ void VarManager::FillEnergyCorrelatorTriple(C const &collision, 3. * o2::constants::math::PIHalf); values[kPtDau_randomPhi_trans] = v2.pt(); ROOT::Math::PtEtaPhiMVector v2_randomPhi_trans( - v2.pt(), v2.eta(), randomPhi_trans, - o2::constants::physics::MassPionCharged); + v2.pt(), v2.eta(), randomPhi_trans, + o2::constants::physics::MassPionCharged); values[kCosChi_randomPhi_trans] = - LorentzTransformJpsihadroncosChi("coschi", v1, v2_randomPhi_trans); + LorentzTransformJpsihadroncosChi("coschi", v1, v2_randomPhi_trans); values[kWeight_randomPhi_trans] = - LorentzTransformJpsihadroncosChi("weight_boost", v1, - v2_randomPhi_trans) / - v1.M() * weight; + LorentzTransformJpsihadroncosChi("weight_boost", v1, + v2_randomPhi_trans) / + v1.M() * weight; ROOT::Math::PtEtaPhiMVector v2_randomPhi_toward( - v2.pt(), v2.eta(), randomPhi_toward, - o2::constants::physics::MassPionCharged); + v2.pt(), v2.eta(), randomPhi_toward, + o2::constants::physics::MassPionCharged); values[kCosChi_randomPhi_toward] = - LorentzTransformJpsihadroncosChi("coschi", v1, v2_randomPhi_toward); + LorentzTransformJpsihadroncosChi("coschi", v1, v2_randomPhi_toward); values[kWeight_randomPhi_toward] = - LorentzTransformJpsihadroncosChi("weight_boost", v1, - v2_randomPhi_toward) / - v1.M() * weight; + LorentzTransformJpsihadroncosChi("weight_boost", v1, + v2_randomPhi_toward) / + v1.M() * weight; ROOT::Math::PtEtaPhiMVector v2_randomPhi_away( - v2.pt(), v2.eta(), randomPhi_away, - o2::constants::physics::MassPionCharged); + v2.pt(), v2.eta(), randomPhi_away, + o2::constants::physics::MassPionCharged); values[kCosChi_randomPhi_away] = - LorentzTransformJpsihadroncosChi("coschi", v1, v2_randomPhi_away); + LorentzTransformJpsihadroncosChi("coschi", v1, v2_randomPhi_away); values[kWeight_randomPhi_away] = - LorentzTransformJpsihadroncosChi("weight_boost", v1, - v2_randomPhi_away) / - v1.M() * weight; + LorentzTransformJpsihadroncosChi("weight_boost", v1, + v2_randomPhi_away) / + v1.M() * weight; values[kdeltaphi_randomPhi_trans] = RecoDecay::constrainAngle( - v1.phi() - randomPhi_trans, -o2::constants::math::PIHalf); + v1.phi() - randomPhi_trans, -o2::constants::math::PIHalf); values[kdeltaphi_randomPhi_toward] = RecoDecay::constrainAngle( - v1.phi() - randomPhi_toward, -o2::constants::math::PIHalf); + v1.phi() - randomPhi_toward, -o2::constants::math::PIHalf); values[kdeltaphi_randomPhi_away] = RecoDecay::constrainAngle( - v1.phi() - randomPhi_away, -o2::constants::math::PIHalf); + v1.phi() - randomPhi_away, -o2::constants::math::PIHalf); } } } @@ -8491,9 +8576,10 @@ void VarManager::FillEnergyCorrelatorTriple(C const &collision, template void VarManager::FillEnergyCorrelatorsUnfoldingTriple( - T1 const &lepton1, T2 const &lepton2, T3 const &hadron, T4 const &track, - T5 const &t1, float *values, bool applyFitMass, float Effweight_rec, - float Accweight_gen, float Translow, float Transhigh) { + T1 const& lepton1, T2 const& lepton2, T3 const& hadron, T4 const& track, + T5 const& t1, float* values, bool applyFitMass, float Effweight_rec, + float Accweight_gen, float Translow, float Transhigh) +{ if (fgUsedVars[kMCCosChi_gen] || fgUsedVars[kMCWeight_gen] || fgUsedVars[kMCdeltaeta_gen] || fgUsedVars[kMCCosChi_rec] || fgUsedVars[kMCWeight_rec] || fgUsedVars[kMCdeltaeta_rec]) { @@ -8521,12 +8607,12 @@ void VarManager::FillEnergyCorrelatorsUnfoldingTriple( o2::constants::physics::MassJPsi); ROOT::Math::PtEtaPhiMVector v2_gen(t1.pt(), t1.eta(), t1.phi(), MassHadron); float E_boost_gen = - LorentzTransformJpsihadroncosChi("weight_boost", v1_gen, v2_gen); + LorentzTransformJpsihadroncosChi("weight_boost", v1_gen, v2_gen); float CosChi_gen = - LorentzTransformJpsihadroncosChi("coschi", v1_gen, v2_gen); + LorentzTransformJpsihadroncosChi("coschi", v1_gen, v2_gen); values[kMCCosChi_gen] = CosChi_gen; values[kMCWeight_gen] = - E_boost_gen / o2::constants::physics::MassJPsi * Accweight_gen; + E_boost_gen / o2::constants::physics::MassJPsi * Accweight_gen; values[kMCdeltaeta_gen] = track.eta() - t1.eta(); ROOT::Math::PtEtaPhiMVector v1_rec(dilepton.pt(), dilepton.eta(), @@ -8534,49 +8620,50 @@ void VarManager::FillEnergyCorrelatorsUnfoldingTriple( ROOT::Math::PtEtaPhiMVector v2_rec(hadron.pt(), hadron.eta(), hadron.phi(), o2::constants::physics::MassPionCharged); values[kMCCosChi_rec] = - LorentzTransformJpsihadroncosChi("coschi", v1_rec, v2_rec); + LorentzTransformJpsihadroncosChi("coschi", v1_rec, v2_rec); float E_boost_rec = - LorentzTransformJpsihadroncosChi("weight_boost", v1_rec, v2_rec); + LorentzTransformJpsihadroncosChi("weight_boost", v1_rec, v2_rec); values[kMCWeight_rec] = E_boost_rec / v1_rec.M() * Effweight_rec; values[kMCdeltaeta_rec] = dilepton.eta() - hadron.eta(); values[kMCCosChi_randomPhi_trans_rec] = -999.9f; values[kMCCosChi_randomPhi_trans_gen] = -999.9f; float deltaphi_rec = RecoDecay::constrainAngle( - dilepton.phi() - hadron.phi(), -o2::constants::math::PIHalf); + dilepton.phi() - hadron.phi(), -o2::constants::math::PIHalf); if ((deltaphi_rec > -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)) { float randomPhi_trans_rec = gRandom->Uniform( - -o2::constants::math::PIHalf, 3. * o2::constants::math::PIHalf); + -o2::constants::math::PIHalf, 3. * o2::constants::math::PIHalf); ROOT::Math::PtEtaPhiMVector v2_randomPhi_trans_rec( - v2_rec.pt(), v2_rec.eta(), randomPhi_trans_rec, - o2::constants::physics::MassPionCharged); + v2_rec.pt(), v2_rec.eta(), randomPhi_trans_rec, + o2::constants::physics::MassPionCharged); values[kMCCosChi_randomPhi_trans_rec] = LorentzTransformJpsihadroncosChi( - "coschi", v1_rec, v2_randomPhi_trans_rec); + "coschi", v1_rec, v2_randomPhi_trans_rec); values[kMCWeight_randomPhi_trans_rec] = - LorentzTransformJpsihadroncosChi("weight_boost", v1_rec, - v2_randomPhi_trans_rec) / - v1_rec.M() * Effweight_rec; + LorentzTransformJpsihadroncosChi("weight_boost", v1_rec, + v2_randomPhi_trans_rec) / + v1_rec.M() * Effweight_rec; ROOT::Math::PtEtaPhiMVector v2_randomPhi_trans_gen( - v2_gen.pt(), v2_gen.eta(), randomPhi_trans_rec, MassHadron); + v2_gen.pt(), v2_gen.eta(), randomPhi_trans_rec, MassHadron); values[kMCCosChi_randomPhi_trans_gen] = LorentzTransformJpsihadroncosChi( - "coschi", v1_gen, v2_randomPhi_trans_gen); + "coschi", v1_gen, v2_randomPhi_trans_gen); values[kMCWeight_randomPhi_trans_gen] = - LorentzTransformJpsihadroncosChi("weight_boost", v1_gen, - v2_randomPhi_trans_gen) / - v1_gen.M() * Accweight_gen; + LorentzTransformJpsihadroncosChi("weight_boost", v1_gen, + v2_randomPhi_trans_gen) / + v1_gen.M() * Accweight_gen; } } } template -void VarManager::FillDileptonPhoton(T1 const &dilepton, T2 const &photon, - float *values) { +void VarManager::FillDileptonPhoton(T1 const& dilepton, T2 const& photon, + float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } if (fgUsedVars[kPairMass] || fgUsedVars[kPairPt] || fgUsedVars[kPairEta] || fgUsedVars[kPairPhi]) { @@ -8603,9 +8690,10 @@ void VarManager::FillDileptonPhoton(T1 const &dilepton, T2 const &photon, } template -void VarManager::FillHadron(T const &hadron, float *values, float hadronMass) { +void VarManager::FillHadron(T const& hadron, float* values, float hadronMass) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } ROOT::Math::PtEtaPhiMVector vhadron(hadron.pt(), hadron.eta(), hadron.phi(), @@ -8618,11 +8706,12 @@ void VarManager::FillHadron(T const &hadron, float *values, float hadronMass) { } template -void VarManager::FillSingleDileptonCharmHadron(Cand const &candidate, - H hfHelper, T &bdtScoreCharmHad, - float *values) { +void VarManager::FillSingleDileptonCharmHadron(Cand const& candidate, + H hfHelper, T& bdtScoreCharmHad, + float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } if constexpr (partType == kJPsi) { @@ -8656,9 +8745,10 @@ void VarManager::FillSingleDileptonCharmHadron(Cand const &candidate, template -void VarManager::FillDileptonCharmHadron(DQ const &dilepton, - HF const &charmHadron, H hfHelper, - T &bdtScoreCharmHad, float *values) { +void VarManager::FillDileptonCharmHadron(DQ const& dilepton, + HF const& charmHadron, H hfHelper, + T& bdtScoreCharmHad, float* values) +{ FillSingleDileptonCharmHadron(dilepton, hfHelper, bdtScoreCharmHad, values); FillSingleDileptonCharmHadron(charmHadron, hfHelper, @@ -8666,10 +8756,11 @@ void VarManager::FillDileptonCharmHadron(DQ const &dilepton, } template -void VarManager::FillDileptonTrackTrack(T1 const &dilepton, T2 const &hadron1, - T3 const &hadron2, float *values) { +void VarManager::FillDileptonTrackTrack(T1 const& dilepton, T2 const& hadron1, + T3 const& hadron2, float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } double defaultDileptonMass = o2::constants::physics::MassJPsi; @@ -8717,8 +8808,8 @@ void VarManager::FillDileptonTrackTrack(T1 const &dilepton, T2 const &hadron1, values[kDitrackMass] = v23.M(); values[kDitrackPt] = v23.Pt(); values[kCosthetaDileptonDitrack] = - (v1.Px() * v123.Px() + v1.Py() * v123.Py() + v1.Pz() * v123.Pz()) / - (v1.P() * v123.P()); + (v1.Px() * v123.Px() + v1.Py() * v123.Py() + v1.Pz() * v123.Pz()) / + (v1.P() * v123.P()); values[kQ] = v123.M() - defaultDileptonMass - v23.M(); values[kDeltaR1] = ROOT::Math::VectorUtil::DeltaR(v1, v2); values[kDeltaR2] = ROOT::Math::VectorUtil::DeltaR(v1, v3); @@ -8732,19 +8823,20 @@ void VarManager::FillDileptonTrackTrack(T1 const &dilepton, T2 const &hadron1, template void VarManager::FillDileptonTrackTrackVertexing( - C const &collision, T1 const &lepton1, T1 const &lepton2, T1 const &track1, - T1 const &track2, float *values) { + 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); + ((collFillMap & Collision) > 0 || (collFillMap & ReducedEventVtxCov) > 0); constexpr bool trackHasCov = - ((fillMap & TrackCov) > 0 || (fillMap & ReducedTrackBarrelCov) > 0); + ((fillMap & TrackCov) > 0 || (fillMap & ReducedTrackBarrelCov) > 0); if (!eventHasVtxCov || !trackHasCov) { return; } if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } float mlepton1 = o2::constants::physics::MassElectron; @@ -8830,7 +8922,7 @@ void VarManager::FillDileptonTrackTrackVertexing( // procCodeDileptonTrackTrack = // VarManager::fgFitterThreeProngBarrel.process(parsDilepton, pars3, pars4); procCodeDileptonTrackTrack = - VarManager::fgFitterFourProngBarrel.process(pars1, pars2, pars3, pars4); + VarManager::fgFitterFourProngBarrel.process(pars1, pars2, pars3, pars4); values[kVertexingProcCode] = procCodeDilepton; values[kVertexingQuadProcCode] = procCodeDileptonTrackTrack; @@ -8872,17 +8964,17 @@ void VarManager::FillDileptonTrackTrackVertexing( double phi = std::atan2(secondaryVertex[1] - collision.posY(), secondaryVertex[0] - collision.posX()); double theta = - std::atan2(secondaryVertex[2] - collision.posZ(), - std::sqrt((secondaryVertex[0] - collision.posX()) * - (secondaryVertex[0] - collision.posX()) + - (secondaryVertex[1] - collision.posY()) * - (secondaryVertex[1] - collision.posY()))); + std::atan2(secondaryVertex[2] - collision.posZ(), + std::sqrt((secondaryVertex[0] - collision.posX()) * + (secondaryVertex[0] - collision.posX()) + + (secondaryVertex[1] - collision.posY()) * + (secondaryVertex[1] - collision.posY()))); values[kVertexingChi2PCA] = fgFitterFourProngBarrel.getChi2AtPCACandidate(); values[kVertexingLxy] = (collision.posX() - secondaryVertex[0]) * - (collision.posX() - secondaryVertex[0]) + + (collision.posX() - secondaryVertex[0]) + (collision.posY() - secondaryVertex[1]) * - (collision.posY() - secondaryVertex[1]); + (collision.posY() - secondaryVertex[1]); values[kVertexingLz] = (collision.posZ() - secondaryVertex[2]) * (collision.posZ() - secondaryVertex[2]); values[kVertexingLxyz] = values[kVertexingLxy] + values[kVertexingLz]; @@ -8891,61 +8983,61 @@ void VarManager::FillDileptonTrackTrackVertexing( values[kVertexingLxyz] = std::sqrt(values[kVertexingLxyz]); values[kVertexingLxyzErr] = - std::sqrt(getRotatedCovMatrixXX(covMatrixPV, phi, theta) + - getRotatedCovMatrixXX(covMatrixPCA, phi, theta)); + std::sqrt(getRotatedCovMatrixXX(covMatrixPV, phi, theta) + + getRotatedCovMatrixXX(covMatrixPCA, phi, theta)); values[kVertexingLxyErr] = - std::sqrt(getRotatedCovMatrixXX(covMatrixPV, phi, 0.) + - getRotatedCovMatrixXX(covMatrixPCA, phi, 0.)); + std::sqrt(getRotatedCovMatrixXX(covMatrixPV, phi, 0.) + + getRotatedCovMatrixXX(covMatrixPCA, phi, 0.)); values[kVertexingLzErr] = - std::sqrt(getRotatedCovMatrixXX(covMatrixPV, 0, theta) + - getRotatedCovMatrixXX(covMatrixPCA, 0, theta)); + 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); + (collision.posZ() - secondaryVertex[2]) * mMother / + (TMath::Abs(v1234.Pz()) * o2::constants::physics::LightSpeedCm2NS); values[kVertexingTauxy] = - values[kVertexingLxy] * mMother / - (v1234.Pt() * o2::constants::physics::LightSpeedCm2NS); + values[kVertexingLxy] * mMother / + (v1234.Pt() * o2::constants::physics::LightSpeedCm2NS); values[kVertexingTauzErr] = - values[kVertexingLzErr] * mMother / - (TMath::Abs(v1234.Pz()) * o2::constants::physics::LightSpeedCm2NS); + values[kVertexingLzErr] * mMother / + (TMath::Abs(v1234.Pz()) * o2::constants::physics::LightSpeedCm2NS); values[kVertexingTauxyErr] = - values[kVertexingLxyErr] * mMother / - (v1234.Pt() * o2::constants::physics::LightSpeedCm2NS); + values[kVertexingLxyErr] * mMother / + (v1234.Pt() * o2::constants::physics::LightSpeedCm2NS); values[kCosPointingAngle] = - ((secondaryVertex[0] - collision.posX()) * v1234.Px() + - (secondaryVertex[1] - collision.posY()) * v1234.Py() + - (secondaryVertex[2] - collision.posZ()) * v1234.Pz()) / - (v1234.P() * values[VarManager::kVertexingLxyz]); + ((secondaryVertex[0] - collision.posX()) * v1234.Px() + + (secondaryVertex[1] - collision.posY()) * v1234.Py() + + (secondaryVertex[2] - collision.posZ()) * v1234.Pz()) / + (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(); + (secondaryVertex[2] - collision.posZ()) * v1234.Pz(); values[kVertexingLzProjected] = - values[kVertexingLzProjected] / TMath::Sqrt(v1234.Pz() * v1234.Pz()); + values[kVertexingLzProjected] / TMath::Sqrt(v1234.Pz() * v1234.Pz()); values[kVertexingLxyProjected] = - ((secondaryVertex[0] - collision.posX()) * v1234.Px()) + - ((secondaryVertex[1] - collision.posY()) * v1234.Py()); + ((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] / + TMath::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()); + ((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] / + TMath::Sqrt((v1234.Px() * v1234.Px()) + (v1234.Py() * v1234.Py()) + + (v1234.Pz() * v1234.Pz())); values[kVertexingTauzProjected] = - values[kVertexingLzProjected] * mMother / TMath::Abs(v1234.Pz()); + values[kVertexingLzProjected] * mMother / TMath::Abs(v1234.Pz()); values[kVertexingTauxyProjected] = - values[kVertexingLxyProjected] * mMother / (v1234.Pt()); + values[kVertexingLxyProjected] * mMother / (v1234.Pt()); values[kVertexingTauxyzProjected] = - values[kVertexingLxyzProjected] * mMother / (v1234.P()); + values[kVertexingLxyzProjected] * mMother / (v1234.P()); } else { KFParticle lepton1KF; // lepton1 KFParticle lepton2KF; // lepton2 @@ -9029,60 +9121,60 @@ void VarManager::FillDileptonTrackTrackVertexing( double dzQuadlet2PV = KFGeoFourProng.GetZ() - KFPV.GetZ(); values[kVertexingLxy] = - std::sqrt(dxQuadlet2PV * dxQuadlet2PV + dyQuadlet2PV * dyQuadlet2PV); + std::sqrt(dxQuadlet2PV * dxQuadlet2PV + dyQuadlet2PV * dyQuadlet2PV); values[kVertexingLz] = std::sqrt(dzQuadlet2PV * dzQuadlet2PV); values[kVertexingLxyz] = - std::sqrt(dxQuadlet2PV * dxQuadlet2PV + dyQuadlet2PV * dyQuadlet2PV + - dzQuadlet2PV * dzQuadlet2PV); + std::sqrt(dxQuadlet2PV * dxQuadlet2PV + dyQuadlet2PV * dyQuadlet2PV + + dzQuadlet2PV * dzQuadlet2PV); values[kVertexingLxyErr] = - (KFPV.GetCovariance(0) + KFGeoFourProng.GetCovariance(0)) * - dxQuadlet2PV * dxQuadlet2PV + - (KFPV.GetCovariance(2) + KFGeoFourProng.GetCovariance(2)) * - dyQuadlet2PV * dyQuadlet2PV + - 2 * ((KFPV.GetCovariance(1) + KFGeoFourProng.GetCovariance(1)) * - dxQuadlet2PV * dyQuadlet2PV); + (KFPV.GetCovariance(0) + KFGeoFourProng.GetCovariance(0)) * + dxQuadlet2PV * dxQuadlet2PV + + (KFPV.GetCovariance(2) + KFGeoFourProng.GetCovariance(2)) * + dyQuadlet2PV * dyQuadlet2PV + + 2 * ((KFPV.GetCovariance(1) + KFGeoFourProng.GetCovariance(1)) * + dxQuadlet2PV * dyQuadlet2PV); values[kVertexingLzErr] = - (KFPV.GetCovariance(5) + KFGeoFourProng.GetCovariance(5)) * - dzQuadlet2PV * dzQuadlet2PV; + (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); + (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; } values[kVertexingLxyErr] = - values[kVertexingLxyErr] < 0. - ? 1.e8f - : std::sqrt(values[kVertexingLxyErr]) / values[kVertexingLxy]; + 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[kVertexingLzErr] = - values[kVertexingLzErr] < 0. - ? 1.e8f - : std::sqrt(values[kVertexingLzErr]) / values[kVertexingLz]; + 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[kVertexingLxyzErr] = - values[kVertexingLxyzErr] < 0. - ? 1.e8f - : std::sqrt(values[kVertexingLxyzErr]) / values[kVertexingLxyz]; + values[kVertexingLxyzErr] < 0. + ? 1.e8f + : std::sqrt(values[kVertexingLxyzErr]) / values[kVertexingLxyz]; values[kVertexingTauxy] = KFGeoFourProng.GetPseudoProperDecayTime( - KFPV, KFGeoFourProng.GetMass()) / + KFPV, KFGeoFourProng.GetMass()) / (o2::constants::physics::LightSpeedCm2NS); values[kVertexingTauz] = -1 * dzQuadlet2PV * KFGeoFourProng.GetMass() / (TMath::Abs(KFGeoFourProng.GetPz()) * @@ -9091,57 +9183,58 @@ void VarManager::FillDileptonTrackTrackVertexing( values[kVertexingSV] = KFGeoFourProng.GetZ(); values[kVertexingTauxyErr] = - values[kVertexingLxyErr] * KFGeoFourProng.GetMass() / - (KFGeoFourProng.GetPt() * o2::constants::physics::LightSpeedCm2NS); + 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[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]); + (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()); + (dzQuadlet2PV * KFGeoFourProng.GetPz()) / + TMath::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] / + TMath::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] / + TMath::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[kVertexingTauxyProjected] / + o2::constants::physics::LightSpeedCm2NS; values[kVertexingTauzProjected] = values[kVertexingLzProjected] * KFGeoFourProng.GetMass() / TMath::Abs(KFGeoFourProng.GetPz()); values[kKFChi2OverNDFGeo] = - KFGeoFourProng.GetChi2() / KFGeoFourProng.GetNDF(); + KFGeoFourProng.GetChi2() / KFGeoFourProng.GetNDF(); } } //__________________________________________________________________ template -void VarManager::FillQuadMC(T1 const &dilepton, T2 const &track1, - T2 const &track2, float *values) { +void VarManager::FillQuadMC(T1 const& dilepton, T2 const& track1, + T2 const& track2, float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } double defaultDileptonMass = o2::constants::physics::MassJPsi; @@ -9170,14 +9263,15 @@ void VarManager::FillQuadMC(T1 const &dilepton, T2 const &track1, values[kDeltaR1] = ROOT::Math::VectorUtil::DeltaR(v1, v2); values[kDeltaR2] = ROOT::Math::VectorUtil::DeltaR(v1, v3); values[kDeltaR] = - std::sqrt(std::pow(values[kDeltaR1], 2) + std::pow(values[kDeltaR2], 2)); + std::sqrt(std::pow(values[kDeltaR1], 2) + std::pow(values[kDeltaR2], 2)); values[kDitrackMass] = v23.M(); values[kDitrackPt] = v23.Pt(); } //__________________________________________________________________ template -float VarManager::calculatePhiV(T1 const &t1, T2 const &t2) { +float VarManager::calculatePhiV(T1 const& t1, T2 const& t2) +{ // cos(phiv) = w*a /|w||a| // with w = u x v // and a = u x z / |u x z| , unit vector perpendicular to v12 and @@ -9287,16 +9381,17 @@ float VarManager::calculatePhiV(T1 const &t1, T2 const &t2) { // (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; + wx * ax + wy * ay); // phiv in [0,pi] //cosPhiV = wx * ax + wy * ay; return pairPhiV; } /// Fill BDT score values. /// Supports binary (1 output) and multiclass (3 outputs) models. template -void VarManager::FillBdtScore(T1 const &bdtScore, float *values) { +void VarManager::FillBdtScore(T1 const& bdtScore, float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } if (bdtScore.size() == 1) { @@ -9311,8 +9406,9 @@ void VarManager::FillBdtScore(T1 const &bdtScore, float *values) { } //__________________________________________________________________ template -float VarManager::LorentzTransformJpsihadroncosChi(const TString &Option, - T1 const &v1, T2 const &v2) { +float VarManager::LorentzTransformJpsihadroncosChi(const TString& Option, + T1 const& v1, T2 const& v2) +{ float value = -999.0f; auto beta_v1 = v1.BoostToCM(); ROOT::Math::Boost boostv1{beta_v1}; @@ -9334,10 +9430,11 @@ float VarManager::LorentzTransformJpsihadroncosChi(const TString &Option, } template -void VarManager::FillFIT(T1 const &bc, T2 const &bcs, T3 const &ft0s, - T4 const &fv0as, T5 const &fdds, float *values) { +void VarManager::FillFIT(T1 const& bc, T2 const& bcs, T3 const& ft0s, + T4 const& fv0as, T5 const& fdds, float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } // Initialize FIT info structure @@ -9394,9 +9491,10 @@ void VarManager::FillFIT(T1 const &bc, T2 const &bcs, T3 const &ft0s, } template -void VarManager::FillEventAlice3(T const &event, float *values) { +void VarManager::FillEventAlice3(T const& event, float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } if constexpr ((fillMap & CollisionTimestamp) > 0) { values[kTimestamp] = event.timestamp(); @@ -9481,9 +9579,10 @@ void VarManager::FillEventAlice3(T const &event, float *values) { } template -void VarManager::FillTrackAlice3(T const &track, float *values) { +void VarManager::FillTrackAlice3(T const& track, float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } if constexpr ((fillMap & Track) > 0 || (fillMap & ReducedTrack) > 0) { @@ -9510,7 +9609,7 @@ void VarManager::FillTrackAlice3(T const &track, float *values) { if (fgUsedVars[kPVContributor]) { values[kPVContributor] = static_cast( - (track.flags() & o2::aod::track::PVContributor) > 0); + (track.flags() & o2::aod::track::PVContributor) > 0); } if (fgUsedVars[kITSClusterMap]) { @@ -9642,9 +9741,10 @@ void VarManager::FillTrackAlice3(T const &track, float *values) { } template -void VarManager::FillPairAlice3(T1 const &t1, T2 const &t2, float *values) { +void VarManager::FillPairAlice3(T1 const& t1, T2 const& t2, float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } float m1 = o2::constants::physics::MassElectron; @@ -9676,9 +9776,9 @@ void VarManager::FillPairAlice3(T1 const &t1, T2 const &t2, float *values) { 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()); + 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()); + TMath::Sqrt(v2.Px() * v2.Px() + v2.Py() * v2.Py() + v2.Pz() * v2.Pz()); values[kDeltaPtotTracks] = Ptot1 - Ptot2; values[kPt1] = t1.pt(); @@ -9690,7 +9790,7 @@ void VarManager::FillPairAlice3(T1 const &t1, T2 const &t2, float *values) { if (fgUsedVars[kDeltaPhiPair2]) { values[kDeltaPhiPair2] = RecoDecay::constrainAngle( - v1.Phi() - v2.Phi(), -o2::constants::math::PIHalf); + v1.Phi() - v2.Phi(), -o2::constants::math::PIHalf); } if (fgUsedVars[kDeltaEtaPair2]) { @@ -9699,14 +9799,14 @@ 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()); + ? (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()); + (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); + ? TMath::ASin((v1.Theta() - v2.Theta()) / xipair) + : TMath::ASin((v2.Theta() - v1.Theta()) / xipair); } if (fgUsedVars[kOpeningAngle]) { @@ -9729,9 +9829,9 @@ void VarManager::FillPairAlice3(T1 const &t1, T2 const &t2, float *values) { // polarization parameters bool useHE = fgUsedVars[kCosThetaHE] || fgUsedVars[kPhiHE]; // helicity frame bool useCS = - fgUsedVars[kCosThetaCS] || fgUsedVars[kPhiCS]; // Collins-Soper frame - bool usePP = fgUsedVars[kCosThetaPP]; // production plane frame - bool useRM = fgUsedVars[kCosThetaRM]; // Random frame + fgUsedVars[kCosThetaCS] || fgUsedVars[kPhiCS]; // Collins-Soper frame + bool usePP = fgUsedVars[kCosThetaPP]; // production plane frame + bool useRM = fgUsedVars[kCosThetaRM]; // Random frame if (useHE || useCS || usePP || useRM) { ROOT::Math::Boost boostv12{v12.BoostToCM()}; @@ -9752,18 +9852,18 @@ void VarManager::FillPairAlice3(T1 const &t1, T2 const &t2, float *values) { } if (fgUsedVars[kPhiHE]) { values[kPhiHE] = RecoDecay::constrainAngle( - TMath::ATan2(yaxis_HE.Dot(v_CM), xaxis_HE.Dot(v_CM))); + TMath::ATan2(yaxis_HE.Dot(v_CM), xaxis_HE.Dot(v_CM))); } if (fgUsedVars[kPhiTildeHE]) { if (fgUsedVars[kCosThetaHE] && fgUsedVars[kPhiHE]) { if (values[kCosThetaHE] > 0) { values[kPhiTildeHE] = RecoDecay::constrainAngle( - values[kPhiHE] - - o2::constants::math::PIQuarter); // phi_tilde = phi - pi/4 + values[kPhiHE] - + o2::constants::math::PIQuarter); // phi_tilde = phi - pi/4 } else { values[kPhiTildeHE] = RecoDecay::constrainAngle( - values[kPhiHE] - - 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 + values[kPhiHE] - + 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 } } else { values[kPhiTildeHE] = -999; // not computable @@ -9780,18 +9880,18 @@ void VarManager::FillPairAlice3(T1 const &t1, T2 const &t2, float *values) { } if (fgUsedVars[kPhiCS]) { values[kPhiCS] = RecoDecay::constrainAngle( - TMath::ATan2(yaxis_CS.Dot(v_CM), xaxis_CS.Dot(v_CM))); + TMath::ATan2(yaxis_CS.Dot(v_CM), xaxis_CS.Dot(v_CM))); } if (fgUsedVars[kPhiTildeCS]) { if (fgUsedVars[kCosThetaCS] && fgUsedVars[kPhiCS]) { if (values[kCosThetaCS] > 0) { values[kPhiTildeCS] = RecoDecay::constrainAngle( - values[kPhiCS] - - o2::constants::math::PIQuarter); // phi_tilde = phi - pi/4 + values[kPhiCS] - + o2::constants::math::PIQuarter); // phi_tilde = phi - pi/4 } else { values[kPhiTildeCS] = RecoDecay::constrainAngle( - values[kPhiCS] - - 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 + values[kPhiCS] - + 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 } } else { values[kPhiTildeCS] = -999; // not computable @@ -9801,7 +9901,7 @@ void VarManager::FillPairAlice3(T1 const &t1, T2 const &t2, float *values) { if (usePP) { ROOT::Math::XYZVector zaxis_PP = - ROOT::Math::XYZVector(v12.Py(), -v12.Px(), 0.f); + ROOT::Math::XYZVector(v12.Py(), -v12.Px(), 0.f); ROOT::Math::XYZVector yaxis_PP{(v12.Vect()).Unit()}; ROOT::Math::XYZVector xaxis_PP{(yaxis_PP.Cross(zaxis_PP)).Unit()}; if (fgUsedVars[kCosThetaPP]) { @@ -9809,18 +9909,18 @@ void VarManager::FillPairAlice3(T1 const &t1, T2 const &t2, float *values) { } if (fgUsedVars[kPhiPP]) { values[kPhiPP] = RecoDecay::constrainAngle( - TMath::ATan2(yaxis_PP.Dot(v_CM), xaxis_PP.Dot(v_CM))); + TMath::ATan2(yaxis_PP.Dot(v_CM), xaxis_PP.Dot(v_CM))); } if (fgUsedVars[kPhiTildePP]) { if (fgUsedVars[kCosThetaPP] && fgUsedVars[kPhiPP]) { if (values[kCosThetaPP] > 0) { values[kPhiTildePP] = RecoDecay::constrainAngle( - values[kPhiPP] - - o2::constants::math::PIQuarter); // phi_tilde = phi - pi/4 + values[kPhiPP] - + o2::constants::math::PIQuarter); // phi_tilde = phi - pi/4 } else { values[kPhiTildePP] = RecoDecay::constrainAngle( - values[kPhiPP] - - 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 + values[kPhiPP] - + 3. * o2::constants::math::PIQuarter); // phi_tilde = phi - 3pi/4 } } else { values[kPhiTildePP] = -999; // not computable @@ -9832,9 +9932,9 @@ void VarManager::FillPairAlice3(T1 const &t1, T2 const &t2, float *values) { double randomCostheta = gRandom->Uniform(-1., 1.); double randomPhi = gRandom->Uniform(0., o2::constants::math::TwoPI); ROOT::Math::XYZVectorF zaxis_RM( - randomCostheta, - std::sqrt(1 - randomCostheta * randomCostheta) * std::cos(randomPhi), - std::sqrt(1 - randomCostheta * randomCostheta) * std::sin(randomPhi)); + randomCostheta, + std::sqrt(1 - randomCostheta * randomCostheta) * std::cos(randomPhi), + std::sqrt(1 - randomCostheta * randomCostheta) * std::sin(randomPhi)); if (fgUsedVars[kCosThetaRM]) { values[kCosThetaRM] = zaxis_RM.Dot(v_CM); } @@ -9859,16 +9959,16 @@ void VarManager::FillPairAlice3(T1 const &t1, T2 const &t2, float *values) { double dca2sigZ = dca2Z / std::sqrt(t2.cZZ()); values[kQuadDCAabsXY] = - std::sqrt((dca1XY * dca1XY + dca2XY * dca2XY) / 2); + std::sqrt((dca1XY * dca1XY + dca2XY * dca2XY) / 2); values[kQuadDCAsigXY] = - std::sqrt((dca1sigXY * dca1sigXY + dca2sigXY * dca2sigXY) / 2); + 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); + 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); + t1.sign() * t2.sign() * TMath::Sign(1., dca1sigXY) * + TMath::Sign(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(); @@ -9886,7 +9986,7 @@ void VarManager::FillPairAlice3(T1 const &t1, T2 const &t2, float *values) { double dca2sigXYZ = std::sqrt(std::abs(chi2t2) / 2.); values[kQuadDCAsigXYZ] = - std::sqrt((dca1sigXYZ * dca1sigXYZ + dca2sigXYZ * dca2sigXYZ) / 2); + std::sqrt((dca1sigXYZ * dca1sigXYZ + dca2sigXYZ * dca2sigXYZ) / 2); } } } @@ -9896,10 +9996,11 @@ void VarManager::FillPairAlice3(T1 const &t1, T2 const &t2, float *values) { } template -void VarManager::FillResolutions(M const &mcTrack, T const &track, - float *values) { +void VarManager::FillResolutions(M const& mcTrack, T const& track, + float* values) +{ if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } values[kDeltaPt] = track.pt() - mcTrack.pt(); @@ -9910,17 +10011,18 @@ void VarManager::FillResolutions(M const &mcTrack, T const &track, template -void VarManager::FillPairVertexingAlice3(C const &collision, T const &t1, - T const &t2, bool propToSV, - float *values) { +void VarManager::FillPairVertexingAlice3(C const& collision, T const& t1, + T const& t2, bool propToSV, + float* values) +{ // check at compile time that the event and cov matrix have the cov matrix constexpr bool eventHasVtxCov = - ((collFillMap & Collision) > 0 || (collFillMap & ReducedEventVtxCov) > 0); + ((collFillMap & Collision) > 0 || (collFillMap & ReducedEventVtxCov) > 0); constexpr bool trackHasCov = - ((fillMap & TrackCov) > 0 || (fillMap & ReducedTrackBarrelCov) > 0); + ((fillMap & TrackCov) > 0 || (fillMap & ReducedTrackBarrelCov) > 0); if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } float m1 = o2::constants::physics::MassElectron; float m2 = o2::constants::physics::MassElectron; @@ -9945,16 +10047,16 @@ void VarManager::FillPairVertexingAlice3(C const &collision, T const &t1, 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()}; + 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()}; + 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 { @@ -10017,26 +10119,26 @@ void VarManager::FillPairVertexingAlice3(C const &collision, T const &t1, double phi = std::atan2(secondaryVertex[1] - collision.posY(), secondaryVertex[0] - collision.posX()); double theta = - std::atan2(secondaryVertex[2] - collision.posZ(), - std::sqrt((secondaryVertex[0] - collision.posX()) * - (secondaryVertex[0] - collision.posX()) + - (secondaryVertex[1] - collision.posY()) * - (secondaryVertex[1] - collision.posY()))); + std::atan2(secondaryVertex[2] - collision.posZ(), + std::sqrt((secondaryVertex[0] - collision.posX()) * + (secondaryVertex[0] - collision.posX()) + + (secondaryVertex[1] - collision.posY()) * + (secondaryVertex[1] - collision.posY()))); values[kVertexingLxyzErr] = - std::sqrt(getRotatedCovMatrixXX(covMatrixPV, phi, theta) + - getRotatedCovMatrixXX(covMatrixPCA, phi, theta)); + std::sqrt(getRotatedCovMatrixXX(covMatrixPV, phi, theta) + + getRotatedCovMatrixXX(covMatrixPCA, phi, theta)); values[kVertexingLxyErr] = - std::sqrt(getRotatedCovMatrixXX(covMatrixPV, phi, 0.) + - getRotatedCovMatrixXX(covMatrixPCA, phi, 0.)); + std::sqrt(getRotatedCovMatrixXX(covMatrixPV, phi, 0.) + + getRotatedCovMatrixXX(covMatrixPCA, phi, 0.)); values[kVertexingLzErr] = - std::sqrt(getRotatedCovMatrixXX(covMatrixPV, 0, theta) + - getRotatedCovMatrixXX(covMatrixPCA, 0, theta)); + std::sqrt(getRotatedCovMatrixXX(covMatrixPV, 0, theta) + + getRotatedCovMatrixXX(covMatrixPCA, 0, theta)); values[kVertexingLxy] = (collision.posX() - secondaryVertex[0]) * - (collision.posX() - secondaryVertex[0]) + + (collision.posX() - secondaryVertex[0]) + (collision.posY() - secondaryVertex[1]) * - (collision.posY() - secondaryVertex[1]); + (collision.posY() - secondaryVertex[1]); values[kVertexingLz] = (collision.posZ() - secondaryVertex[2]) * (collision.posZ() - secondaryVertex[2]); values[kVertexingLxyz] = values[kVertexingLxy] + values[kVertexingLz]; @@ -10045,69 +10147,69 @@ void VarManager::FillPairVertexingAlice3(C const &collision, T const &t1, values[kVertexingLxyz] = std::sqrt(values[kVertexingLxyz]); values[kVertexingTauz] = - (collision.posZ() - secondaryVertex[2]) * v12.M() / - (TMath::Abs(v12.Pz()) * o2::constants::physics::LightSpeedCm2NS); + (collision.posZ() - secondaryVertex[2]) * v12.M() / + (TMath::Abs(v12.Pz()) * o2::constants::physics::LightSpeedCm2NS); values[kVertexingTauxy] = - values[kVertexingLxy] * v12.M() / - (v12.Pt() * o2::constants::physics::LightSpeedCm2NS); + values[kVertexingLxy] * v12.M() / + (v12.Pt() * o2::constants::physics::LightSpeedCm2NS); values[kVertexingPz] = TMath::Abs(v12.Pz()); values[kVertexingSV] = secondaryVertex[2]; values[kVertexingTauzErr] = - values[kVertexingLzErr] * v12.M() / - (TMath::Abs(v12.Pz()) * o2::constants::physics::LightSpeedCm2NS); + values[kVertexingLzErr] * v12.M() / + (TMath::Abs(v12.Pz()) * o2::constants::physics::LightSpeedCm2NS); values[kVertexingTauxyErr] = - values[kVertexingLxyErr] * v12.M() / - (v12.Pt() * o2::constants::physics::LightSpeedCm2NS); + values[kVertexingLxyErr] * v12.M() / + (v12.Pt() * o2::constants::physics::LightSpeedCm2NS); values[kCosPointingAngle] = - ((secondaryVertex[0] - collision.posX()) * v12.Px() + - (secondaryVertex[1] - collision.posY()) * v12.Py() + - (secondaryVertex[2] - collision.posZ()) * v12.Pz()) / - (v12.P() * values[VarManager::kVertexingLxyz]); + ((secondaryVertex[0] - collision.posX()) * v12.Px() + + (secondaryVertex[1] - collision.posY()) * v12.Py() + + (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()); + ((secondaryVertex[2] - collision.posZ()) * v12.Pz()) / + TMath::Sqrt(v12.Pz() * v12.Pz()); values[kVertexingLxyProjected] = - ((secondaryVertex[0] - collision.posX()) * v12.Px()) + - ((secondaryVertex[1] - collision.posY()) * v12.Py()); + ((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] / + TMath::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()); + ((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] / + TMath::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(); + (secondaryVertex[0] - primaryVertexNew.getX()) * v12.Px() + + (secondaryVertex[1] - primaryVertexNew.getY()) * v12.Py(); values[kVertexingLxyProjectedRecalculatePV] = - values[kVertexingLxyProjectedRecalculatePV] / v12.Pt(); + values[kVertexingLxyProjectedRecalculatePV] / v12.Pt(); } values[kVertexingTauxyProjected] = - values[kVertexingLxyProjected] * v12.M() / (v12.Pt()); + values[kVertexingLxyProjected] * v12.M() / (v12.Pt()); values[kVertexingTauxyProjectedPoleJPsiMass] = - values[kVertexingLxyProjected] * o2::constants::physics::MassJPsi / - (v12.Pt()); + values[kVertexingLxyProjected] * o2::constants::physics::MassJPsi / + (v12.Pt()); values[kVertexingTauxyProjectedNs] = - values[kVertexingTauxyProjected] / - o2::constants::physics::LightSpeedCm2NS; + values[kVertexingTauxyProjected] / + o2::constants::physics::LightSpeedCm2NS; if (fgPVrecalKF) { values[kVertexingTauxyProjectedPoleJPsiMassRecalculatePV] = - values[kVertexingLxyProjectedRecalculatePV] * - o2::constants::physics::MassJPsi / (v12.Pt()); + values[kVertexingLxyProjectedRecalculatePV] * + o2::constants::physics::MassJPsi / (v12.Pt()); } values[kVertexingTauzProjected] = - values[kVertexingLzProjected] * v12.M() / TMath::Abs(v12.Pz()); + values[kVertexingLzProjected] * v12.M() / TMath::Abs(v12.Pz()); values[kVertexingTauxyzProjected] = - values[kVertexingLxyzProjected] * v12.M() / (v12.P()); + values[kVertexingLxyzProjected] * v12.M() / (v12.P()); } } if (propToSV) { @@ -10129,15 +10231,16 @@ void VarManager::FillPairVertexingAlice3(C const &collision, T const &t1, template void VarManager::FillTripletVertexingALICE3( - C const &collision, T const &t1, T const &t2, T const &t3, - VarManager::PairCandidateType tripletType, float *values) { + 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); + ((collFillMap & Collision) > 0 || (collFillMap & ReducedEventVtxCov) > 0); bool trackHasCov = ((fillMap & ReducedTrackBarrelCov) > 0); if (!values) { - values = static_cast(fgValues); + values = static_cast(fgValues); } float m1 = o2::constants::physics::MassKaonCharged; @@ -10165,26 +10268,26 @@ void VarManager::FillTripletVertexingALICE3( 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()}; + 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()}; + 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()}; + 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); + VarManager::fgFitterThreeProngBarrel.process(pars1, pars2, pars3); } else { return; } @@ -10221,7 +10324,7 @@ void VarManager::FillTripletVertexingALICE3( secondaryVertex = fgFitterThreeProngBarrel.getPCACandidate(); std::array covMatrixPCA = - fgFitterThreeProngBarrel.calcPCACovMatrixFlat(); + fgFitterThreeProngBarrel.calcPCACovMatrixFlat(); o2::math_utils::Point3D vtxXYZ(collision.posX(), collision.posY(), collision.posZ()); @@ -10239,16 +10342,16 @@ void VarManager::FillTripletVertexingALICE3( double phi = std::atan2(secondaryVertex[1] - collision.posY(), secondaryVertex[0] - collision.posX()); double theta = - std::atan2(secondaryVertex[2] - collision.posZ(), - std::sqrt((secondaryVertex[0] - collision.posX()) * - (secondaryVertex[0] - collision.posX()) + - (secondaryVertex[1] - collision.posY()) * - (secondaryVertex[1] - collision.posY()))); + std::atan2(secondaryVertex[2] - collision.posZ(), + std::sqrt((secondaryVertex[0] - collision.posX()) * + (secondaryVertex[0] - collision.posX()) + + (secondaryVertex[1] - collision.posY()) * + (secondaryVertex[1] - collision.posY()))); values[kVertexingLxy] = (collision.posX() - secondaryVertex[0]) * - (collision.posX() - secondaryVertex[0]) + + (collision.posX() - secondaryVertex[0]) + (collision.posY() - secondaryVertex[1]) * - (collision.posY() - secondaryVertex[1]); + (collision.posY() - secondaryVertex[1]); values[kVertexingLz] = (collision.posZ() - secondaryVertex[2]) * (collision.posZ() - secondaryVertex[2]); values[kVertexingLxyz] = values[kVertexingLxy] + values[kVertexingLz]; @@ -10257,61 +10360,61 @@ void VarManager::FillTripletVertexingALICE3( values[kVertexingLxyz] = std::sqrt(values[kVertexingLxyz]); values[kVertexingLxyzErr] = - std::sqrt(getRotatedCovMatrixXX(covMatrixPV, phi, theta) + - getRotatedCovMatrixXX(covMatrixPCA, phi, theta)); + std::sqrt(getRotatedCovMatrixXX(covMatrixPV, phi, theta) + + getRotatedCovMatrixXX(covMatrixPCA, phi, theta)); values[kVertexingLxyErr] = - std::sqrt(getRotatedCovMatrixXX(covMatrixPV, phi, 0.) + - getRotatedCovMatrixXX(covMatrixPCA, phi, 0.)); + std::sqrt(getRotatedCovMatrixXX(covMatrixPV, phi, 0.) + + getRotatedCovMatrixXX(covMatrixPCA, phi, 0.)); values[kVertexingLzErr] = - std::sqrt(getRotatedCovMatrixXX(covMatrixPV, 0, theta) + - getRotatedCovMatrixXX(covMatrixPCA, 0, theta)); + 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); + (collision.posZ() - secondaryVertex[2]) * v123.M() / + (TMath::Abs(v123.Pz()) * o2::constants::physics::LightSpeedCm2NS); values[kVertexingTauxy] = - values[kVertexingLxy] * v123.M() / - (v123.Pt() * o2::constants::physics::LightSpeedCm2NS); + 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[kVertexingLzErr] * v123.M() / + (TMath::Abs(v123.Pz()) * o2::constants::physics::LightSpeedCm2NS); values[kVertexingTauxyErr] = - values[kVertexingLxyErr] * v123.M() / - (v123.Pt() * o2::constants::physics::LightSpeedCm2NS); + values[kVertexingLxyErr] * v123.M() / + (v123.Pt() * o2::constants::physics::LightSpeedCm2NS); values[kCosPointingAngle] = - ((secondaryVertex[0] - collision.posX()) * v123.Px() + - (secondaryVertex[1] - collision.posY()) * v123.Py() + - (secondaryVertex[2] - collision.posZ()) * v123.Pz()) / - (v123.P() * values[VarManager::kVertexingLxyz]); + ((secondaryVertex[0] - collision.posX()) * v123.Px() + + (secondaryVertex[1] - collision.posY()) * v123.Py() + + (secondaryVertex[2] - collision.posZ()) * v123.Pz()) / + (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(); + (secondaryVertex[2] - collision.posZ()) * v123.Pz(); values[kVertexingLzProjected] = - values[kVertexingLzProjected] / TMath::Sqrt(v123.Pz() * v123.Pz()); + values[kVertexingLzProjected] / TMath::Sqrt(v123.Pz() * v123.Pz()); values[kVertexingLxyProjected] = - ((secondaryVertex[0] - collision.posX()) * v123.Px()) + - ((secondaryVertex[1] - collision.posY()) * v123.Py()); + ((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] / + TMath::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()); + ((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] / + 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[kVertexingLzProjected] * v123.M() / TMath::Abs(v123.Pz()); values[kVertexingTauxyProjected] = - values[kVertexingLxyProjected] * v123.M() / (v123.Pt()); + values[kVertexingLxyProjected] * v123.M() / (v123.Pt()); values[kVertexingTauxyzProjected] = - values[kVertexingLxyzProjected] * v123.M() / (v123.P()); + values[kVertexingLxyzProjected] * v123.M() / (v123.P()); } } diff --git a/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx b/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx index b1c3d2b25d8..daab108389d 100644 --- a/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx +++ b/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx @@ -75,8 +75,10 @@ using namespace o2::aod; using namespace o2::common::core; // Some definitions -namespace o2::aod { -namespace dqanalysisflags { +namespace o2::aod +{ +namespace dqanalysisflags +{ DECLARE_SOA_COLUMN(MixingHash, mixingHash, int); //! Hash used in event mixing //need to understand DECLARE_SOA_BITMAP_COLUMN(IsEventSelected, isEventSelected, @@ -88,15 +90,15 @@ DECLARE_SOA_COLUMN(BarrelAmbiguityInBunch, barrelAmbiguityInBunch, DECLARE_SOA_COLUMN(BarrelAmbiguityOutOfBunch, barrelAmbiguityOutOfBunch, int8_t); //! Barrel track out of bunch ambiguity DECLARE_SOA_BITMAP_COLUMN( - IsMuonSelected, isMuonSelected, - 32); //! Muon track decisions (joinable to ReducedMuonsAssoc) + IsMuonSelected, isMuonSelected, + 32); //! Muon track decisions (joinable to ReducedMuonsAssoc) DECLARE_SOA_COLUMN(MuonAmbiguityInBunch, muonAmbiguityInBunch, int8_t); //! Muon track in-bunch ambiguity DECLARE_SOA_COLUMN(MuonAmbiguityOutOfBunch, muonAmbiguityOutOfBunch, int8_t); //! Muon track out of bunch ambiguity DECLARE_SOA_BITMAP_COLUMN( - IsBarrelSelectedPrefilter, isBarrelSelectedPrefilter, - 32); //! Barrel prefilter decisions (joinable to ReducedTracksAssoc) + IsBarrelSelectedPrefilter, isBarrelSelectedPrefilter, + 32); //! Barrel prefilter decisions (joinable to ReducedTracksAssoc) // Bcandidate columns for ML analysis of B->Jpsi+K DECLARE_SOA_COLUMN(RunNumber, runNumber, uint64_t); DECLARE_SOA_COLUMN(EventIdx, eventIdx, uint64_t); @@ -196,8 +198,8 @@ DECLARE_SOA_COLUMN(Corrassoc, corrassoc, bool); // Additional columns for prompt-non-prompt JPsi separation (BDT training), // identical to tableReader_withAssoc DECLARE_SOA_COLUMN( - PairFilter, pairFilter, - uint32_t); //! twoTrackFilter (cut bits + ambiguity bits 28-31) + PairFilter, pairFilter, + uint32_t); //! twoTrackFilter (cut bits + ambiguity bits 28-31) DECLARE_SOA_COLUMN(McDecision, mcDecision, uint32_t); //! MC signal bits, 0 in data DECLARE_SOA_COLUMN(TauxyeeErr, tauxyeeErr, @@ -207,7 +209,7 @@ DECLARE_SOA_COLUMN(TauzeeErr, tauzeeErr, float); //! kVertexingTauzErr: in ns (not cm) and with the //! reconstructed mass DECLARE_SOA_COLUMN(LxyeeProjected, lxyeeProjected, - float); //! kVertexingLxyProjected + float); //! kVertexingLxyProjected DECLARE_SOA_COLUMN(LxyeeOverErr, lxyeeOverErr, float); //! kVertexingLxyOverErr DECLARE_SOA_COLUMN(Lxyzee, lxyzee, float); //! kVertexingLxyz DECLARE_SOA_COLUMN(LxyzeeOverErr, lxyzeeOverErr, @@ -231,62 +233,62 @@ DECLARE_SOA_COLUMN(OniaVtxZ, oniaVtxZ, float); } // namespace dqanalysisflags DECLARE_SOA_TABLE( - EventCuts, "AOD", "DQANAEVCUTS", - dqanalysisflags::IsEventSelected); //! joinable to ReducedEvents + EventCuts, "AOD", "DQANAEVCUTS", + dqanalysisflags::IsEventSelected); //! joinable to ReducedEvents DECLARE_SOA_TABLE(MixingHashes, "AOD", "DQANAMIXHASHA", dqanalysisflags::MixingHash); //! joinable to ReducedEvents DECLARE_SOA_TABLE( - BarrelTrackCuts, "AOD", "DQANATRKCUTS", - dqanalysisflags::IsBarrelSelected); //! joinable to ReducedTracksAssoc + BarrelTrackCuts, "AOD", "DQANATRKCUTS", + dqanalysisflags::IsBarrelSelected); //! joinable to ReducedTracksAssoc DECLARE_SOA_TABLE( - BarrelAmbiguities, "AOD", "DQBARRELAMB", - dqanalysisflags::BarrelAmbiguityInBunch, - dqanalysisflags::BarrelAmbiguityOutOfBunch); //! joinable to - //! ReducedBarrelTracks + BarrelAmbiguities, "AOD", "DQBARRELAMB", + dqanalysisflags::BarrelAmbiguityInBunch, + dqanalysisflags::BarrelAmbiguityOutOfBunch); //! joinable to + //! ReducedBarrelTracks DECLARE_SOA_TABLE( - MuonTrackCuts, "AOD", "DQANAMUONCUTS", - dqanalysisflags::IsMuonSelected); //! joinable to ReducedMuonsAssoc + MuonTrackCuts, "AOD", "DQANAMUONCUTS", + dqanalysisflags::IsMuonSelected); //! joinable to ReducedMuonsAssoc DECLARE_SOA_TABLE( - MuonAmbiguities, "AOD", "DQMUONAMB", dqanalysisflags::MuonAmbiguityInBunch, - dqanalysisflags::MuonAmbiguityOutOfBunch); //! joinable to - //! ReducedMuonTracks + MuonAmbiguities, "AOD", "DQMUONAMB", dqanalysisflags::MuonAmbiguityInBunch, + dqanalysisflags::MuonAmbiguityOutOfBunch); //! joinable to + //! ReducedMuonTracks DECLARE_SOA_TABLE( - Prefilter, "AOD", "DQPREFILTER", - dqanalysisflags::IsBarrelSelectedPrefilter); //! joinable to - //! ReducedTracksAssoc + Prefilter, "AOD", "DQPREFILTER", + dqanalysisflags::IsBarrelSelectedPrefilter); //! joinable to + //! ReducedTracksAssoc DECLARE_SOA_TABLE( - BmesonCandidates, "AOD", "DQBMESONS", dqanalysisflags::RunNumber, - dqanalysisflags::EventIdx, dqanalysisflags::EventTimestamp, - dqanalysisflags::massBcandidate, dqanalysisflags::MassDileptonCandidate, - dqanalysisflags::deltaMassBcandidate, dqanalysisflags::pTBcandidate, - dqanalysisflags::EtaBcandidate, dqanalysisflags::PhiBcandidate, - dqanalysisflags::RapBcandidate, dqanalysisflags::LxyBcandidate, - dqanalysisflags::LxyBcandidateErr, dqanalysisflags::LxyzBcandidate, - dqanalysisflags::LxyzBcandidateErr, dqanalysisflags::LzBcandidate, - dqanalysisflags::LzBcandidateErr, dqanalysisflags::TauxyBcandidate, - dqanalysisflags::TauxyBcandidateErr, dqanalysisflags::TauzBcandidate, - dqanalysisflags::TauzBcandidateErr, dqanalysisflags::CosPBcandidate, - dqanalysisflags::Chi2Bcandidate, dqanalysisflags::MCLxyBcandidate, - dqanalysisflags::MCLxyzBcandidate, dqanalysisflags::MCLzBcandidate, - dqanalysisflags::MCTauxyBcandidate, dqanalysisflags::MCTauzBcandidate, - dqanalysisflags::MCCosPBcandidate, dqanalysisflags::GlobalIndexassoc, - dqanalysisflags::GlobalIndexleg1, dqanalysisflags::GlobalIndexleg2, - dqanalysisflags::PINassoc, dqanalysisflags::Etaassoc, - dqanalysisflags::Ptpair, dqanalysisflags::Etapair, dqanalysisflags::PINleg1, - dqanalysisflags::Etaleg1, dqanalysisflags::PINleg2, - dqanalysisflags::Etaleg2, dqanalysisflags::TPCnsigmaKaassoc, - dqanalysisflags::TPCnsigmaPiassoc, dqanalysisflags::TPCnsigmaPrassoc, - dqanalysisflags::TOFnsigmaKaassoc, dqanalysisflags::TPCnsigmaElleg1, - dqanalysisflags::TPCnsigmaPileg1, dqanalysisflags::TPCnsigmaPrleg1, - dqanalysisflags::TPCnsigmaElleg2, dqanalysisflags::TPCnsigmaPileg2, - dqanalysisflags::TPCnsigmaPrleg2, dqanalysisflags::ITSClusterMapassoc, - dqanalysisflags::ITSClusterMapleg1, dqanalysisflags::ITSClusterMapleg2, - dqanalysisflags::ITSChi2assoc, dqanalysisflags::ITSChi2leg1, - dqanalysisflags::ITSChi2leg2, dqanalysisflags::TPCNclsassoc, - dqanalysisflags::TPCNclsleg1, dqanalysisflags::TPCNclsleg2, - dqanalysisflags::TPCChi2assoc, dqanalysisflags::TPCChi2leg1, - dqanalysisflags::TPCChi2leg2, dqanalysisflags::IsJpsiFromBSelected, - dqanalysisflags::IsBarrelSelected, dqanalysisflags::McFlag); + BmesonCandidates, "AOD", "DQBMESONS", dqanalysisflags::RunNumber, + dqanalysisflags::EventIdx, dqanalysisflags::EventTimestamp, + dqanalysisflags::massBcandidate, dqanalysisflags::MassDileptonCandidate, + dqanalysisflags::deltaMassBcandidate, dqanalysisflags::pTBcandidate, + dqanalysisflags::EtaBcandidate, dqanalysisflags::PhiBcandidate, + dqanalysisflags::RapBcandidate, dqanalysisflags::LxyBcandidate, + dqanalysisflags::LxyBcandidateErr, dqanalysisflags::LxyzBcandidate, + dqanalysisflags::LxyzBcandidateErr, dqanalysisflags::LzBcandidate, + dqanalysisflags::LzBcandidateErr, dqanalysisflags::TauxyBcandidate, + dqanalysisflags::TauxyBcandidateErr, dqanalysisflags::TauzBcandidate, + dqanalysisflags::TauzBcandidateErr, dqanalysisflags::CosPBcandidate, + dqanalysisflags::Chi2Bcandidate, dqanalysisflags::MCLxyBcandidate, + dqanalysisflags::MCLxyzBcandidate, dqanalysisflags::MCLzBcandidate, + dqanalysisflags::MCTauxyBcandidate, dqanalysisflags::MCTauzBcandidate, + dqanalysisflags::MCCosPBcandidate, dqanalysisflags::GlobalIndexassoc, + dqanalysisflags::GlobalIndexleg1, dqanalysisflags::GlobalIndexleg2, + dqanalysisflags::PINassoc, dqanalysisflags::Etaassoc, + dqanalysisflags::Ptpair, dqanalysisflags::Etapair, dqanalysisflags::PINleg1, + dqanalysisflags::Etaleg1, dqanalysisflags::PINleg2, + dqanalysisflags::Etaleg2, dqanalysisflags::TPCnsigmaKaassoc, + dqanalysisflags::TPCnsigmaPiassoc, dqanalysisflags::TPCnsigmaPrassoc, + dqanalysisflags::TOFnsigmaKaassoc, dqanalysisflags::TPCnsigmaElleg1, + dqanalysisflags::TPCnsigmaPileg1, dqanalysisflags::TPCnsigmaPrleg1, + dqanalysisflags::TPCnsigmaElleg2, dqanalysisflags::TPCnsigmaPileg2, + dqanalysisflags::TPCnsigmaPrleg2, dqanalysisflags::ITSClusterMapassoc, + dqanalysisflags::ITSClusterMapleg1, dqanalysisflags::ITSClusterMapleg2, + dqanalysisflags::ITSChi2assoc, dqanalysisflags::ITSChi2leg1, + dqanalysisflags::ITSChi2leg2, dqanalysisflags::TPCNclsassoc, + dqanalysisflags::TPCNclsleg1, dqanalysisflags::TPCNclsleg2, + dqanalysisflags::TPCChi2assoc, dqanalysisflags::TPCChi2leg1, + dqanalysisflags::TPCChi2leg2, dqanalysisflags::IsJpsiFromBSelected, + dqanalysisflags::IsBarrelSelected, dqanalysisflags::McFlag); DECLARE_SOA_TABLE(JPsiMuonCandidates, "AOD", "DQJPSIMUONA", dqanalysisflags::DeltaEta, dqanalysisflags::DeltaPhi, dqanalysisflags::MassDileptonCandidate, @@ -297,26 +299,26 @@ DECLARE_SOA_TABLE(JPsiMuonCandidates, "AOD", "DQJPSIMUONA", dqanalysisflags::Ptleg2, dqanalysisflags::Etaleg2, dqanalysisflags::Phileg2, dqanalysisflags::McFlag); DECLARE_SOA_TABLE( - JPsieeCandidates, "AOD", "DQPSEUDOPROPER", dqanalysisflags::PairFilter, - dqanalysisflags::McDecision, dqanalysisflags::Massee, dqanalysisflags::Ptee, - dqanalysisflags::Etaee, dqanalysisflags::Rapee, dqanalysisflags::Phiee, - dqanalysisflags::Lxyee, dqanalysisflags::LxyeePoleMass, - dqanalysisflags::Lzee, dqanalysisflags::LxyeePoleMassPVrecomputed, - dqanalysisflags::TauxyeeErr, dqanalysisflags::TauzeeErr, - dqanalysisflags::LxyeeProjected, dqanalysisflags::LxyeeOverErr, - dqanalysisflags::Lxyzee, dqanalysisflags::LxyzeeOverErr, - dqanalysisflags::Chi2PCAee, dqanalysisflags::CosPAee, dqanalysisflags::Vx, - dqanalysisflags::Vy, dqanalysisflags::Vz, dqanalysisflags::Ptleg1, - dqanalysisflags::Etaleg1, dqanalysisflags::DcaXY1, dqanalysisflags::DcaZ1, - dqanalysisflags::DcaXYOverSig1, dqanalysisflags::DcaZOverSig1, - dqanalysisflags::ITSClusterMapleg1, dqanalysisflags::ITSChi2leg1, - dqanalysisflags::Ptleg2, dqanalysisflags::Etaleg2, dqanalysisflags::DcaXY2, - dqanalysisflags::DcaZ2, dqanalysisflags::DcaXYOverSig2, - dqanalysisflags::DcaZOverSig2, dqanalysisflags::ITSClusterMapleg2, - dqanalysisflags::ITSChi2leg2, dqanalysisflags::AmbiguousInBunchPairs, - dqanalysisflags::AmbiguousOutOfBunchPairs, dqanalysisflags::Corrassoc, - dqanalysisflags::MultiplicityFT0C, dqanalysisflags::PercentileFT0C, - dqanalysisflags::MultiplicityNContrib); + JPsieeCandidates, "AOD", "DQPSEUDOPROPER", dqanalysisflags::PairFilter, + dqanalysisflags::McDecision, dqanalysisflags::Massee, dqanalysisflags::Ptee, + dqanalysisflags::Etaee, dqanalysisflags::Rapee, dqanalysisflags::Phiee, + dqanalysisflags::Lxyee, dqanalysisflags::LxyeePoleMass, + dqanalysisflags::Lzee, dqanalysisflags::LxyeePoleMassPVrecomputed, + dqanalysisflags::TauxyeeErr, dqanalysisflags::TauzeeErr, + dqanalysisflags::LxyeeProjected, dqanalysisflags::LxyeeOverErr, + dqanalysisflags::Lxyzee, dqanalysisflags::LxyzeeOverErr, + dqanalysisflags::Chi2PCAee, dqanalysisflags::CosPAee, dqanalysisflags::Vx, + dqanalysisflags::Vy, dqanalysisflags::Vz, dqanalysisflags::Ptleg1, + dqanalysisflags::Etaleg1, dqanalysisflags::DcaXY1, dqanalysisflags::DcaZ1, + dqanalysisflags::DcaXYOverSig1, dqanalysisflags::DcaZOverSig1, + dqanalysisflags::ITSClusterMapleg1, dqanalysisflags::ITSChi2leg1, + dqanalysisflags::Ptleg2, dqanalysisflags::Etaleg2, dqanalysisflags::DcaXY2, + dqanalysisflags::DcaZ2, dqanalysisflags::DcaXYOverSig2, + dqanalysisflags::DcaZOverSig2, dqanalysisflags::ITSClusterMapleg2, + dqanalysisflags::ITSChi2leg2, dqanalysisflags::AmbiguousInBunchPairs, + dqanalysisflags::AmbiguousOutOfBunchPairs, dqanalysisflags::Corrassoc, + dqanalysisflags::MultiplicityFT0C, dqanalysisflags::PercentileFT0C, + dqanalysisflags::MultiplicityNContrib); DECLARE_SOA_TABLE(OniaMCTruth, "AOD", "MCTRUTHONIA", dqanalysisflags::OniaPt, dqanalysisflags::OniaEta, dqanalysisflags::OniaY, dqanalysisflags::OniaPhi, dqanalysisflags::OniaVz, @@ -330,84 +332,84 @@ DECLARE_SOA_TABLE(OniaMCTruth, "AOD", "MCTRUTHONIA", dqanalysisflags::OniaPt, using MyEvents = soa::Join; using MyEventsSelected = - soa::Join; + soa::Join; using MyEventsVtxCov = - soa::Join; + soa::Join; using MyEventsVtxCovSelected = - soa::Join; + soa::Join; using MyEventsVtxCovSelectedInfo = - soa::Join; + soa::Join; using MyEventsVtxCovSelectedMultExtra = - soa::Join; + soa::Join; using MyEventsVtxCovSelectedQvector = - soa::Join; + soa::Join; using MyEventsQvector = - soa::Join; + soa::Join; using MyEventsVtxCovHashSelected = - soa::Join; + soa::Join; using MyBarrelTracks = - soa::Join; + soa::Join; using MyBarrelTracksWithAmbiguities = - soa::Join; + soa::Join; using MyBarrelTracksWithCov = - soa::Join; + soa::Join; using MyBarrelTracksWithCovWithAmbiguities = - soa::Join; + soa::Join; using MyBarrelTracksWithCovWithAmbiguitiesWithColl = - soa::Join; + soa::Join; using MyDielectronCandidates = - soa::Join; + soa::Join; using MyDitrackCandidates = soa::Join; using MyDimuonCandidates = soa::Join; using MyMuonTracks = soa::Join; using MyMuonTracksWithCov = - soa::Join; + soa::Join; using MyMuonTracksWithCovWithAmbiguities = - soa::Join; + soa::Join; // using MyMuonTracksSelectedWithColl = soa::Join; // bit maps used for the Fill functions of the VarManager constexpr static uint32_t gkEventFillMap = - VarManager::ObjTypes::ReducedEvent | - VarManager::ObjTypes::ReducedEventExtended; + VarManager::ObjTypes::ReducedEvent | + VarManager::ObjTypes::ReducedEventExtended; constexpr static uint32_t gkEventFillMapWithCov = - VarManager::ObjTypes::ReducedEvent | - VarManager::ObjTypes::ReducedEventExtended | - VarManager::ObjTypes::ReducedEventVtxCov; + VarManager::ObjTypes::ReducedEvent | + VarManager::ObjTypes::ReducedEventExtended | + VarManager::ObjTypes::ReducedEventVtxCov; constexpr static uint32_t gkEventFillMapWithCovMultExtra = - VarManager::ObjTypes::ReducedEvent | - VarManager::ObjTypes::ReducedEventExtended | - VarManager::ObjTypes::ReducedEventVtxCov | - VarManager::ObjTypes::ReducedEventMultExtra; + VarManager::ObjTypes::ReducedEvent | + VarManager::ObjTypes::ReducedEventExtended | + VarManager::ObjTypes::ReducedEventVtxCov | + VarManager::ObjTypes::ReducedEventMultExtra; // constexpr static uint32_t gkEventFillMapWithQvector = // VarManager::ObjTypes::ReducedEvent | // VarManager::ObjTypes::ReducedEventExtended | @@ -417,48 +419,51 @@ constexpr static uint32_t gkEventFillMapWithCovMultExtra = // VarManager::ObjTypes::ReducedEventVtxCov | // VarManager::ObjTypes::ReducedEventQvector; constexpr static uint32_t gkTrackFillMap = - VarManager::ObjTypes::ReducedTrack | - VarManager::ObjTypes::ReducedTrackBarrel | - VarManager::ObjTypes::ReducedTrackBarrelPID; + VarManager::ObjTypes::ReducedTrack | + VarManager::ObjTypes::ReducedTrackBarrel | + VarManager::ObjTypes::ReducedTrackBarrelPID; constexpr static uint32_t gkTrackFillMapWithCov = - VarManager::ObjTypes::ReducedTrack | - VarManager::ObjTypes::ReducedTrackBarrel | - VarManager::ObjTypes::ReducedTrackBarrelCov | - VarManager::ObjTypes::ReducedTrackBarrelPID; + VarManager::ObjTypes::ReducedTrack | + VarManager::ObjTypes::ReducedTrackBarrel | + VarManager::ObjTypes::ReducedTrackBarrelCov | + VarManager::ObjTypes::ReducedTrackBarrelPID; constexpr static uint32_t gkTrackFillMapWithCovWithColl = - VarManager::ObjTypes::ReducedTrack | - VarManager::ObjTypes::ReducedTrackBarrel | - VarManager::ObjTypes::ReducedTrackBarrelCov | - VarManager::ObjTypes::ReducedTrackBarrelPID | - VarManager::ObjTypes::ReducedTrackCollInfo; + VarManager::ObjTypes::ReducedTrack | + VarManager::ObjTypes::ReducedTrackBarrel | + VarManager::ObjTypes::ReducedTrackBarrelCov | + VarManager::ObjTypes::ReducedTrackBarrelPID | + VarManager::ObjTypes::ReducedTrackCollInfo; // constexpr static uint32_t gkTrackFillMapWithColl = // VarManager::ObjTypes::ReducedTrack | VarManager::ObjTypes::ReducedTrackBarrel // | VarManager::ObjTypes::ReducedTrackBarrelPID | // VarManager::ObjTypes::ReducedTrackCollInfo; constexpr static uint32_t gkMuonFillMap = - VarManager::ObjTypes::ReducedMuon | VarManager::ObjTypes::ReducedMuonExtra; + VarManager::ObjTypes::ReducedMuon | VarManager::ObjTypes::ReducedMuonExtra; constexpr static uint32_t gkMuonFillMapWithCov = - VarManager::ObjTypes::ReducedMuon | VarManager::ObjTypes::ReducedMuonExtra | - VarManager::ObjTypes::ReducedMuonCov; + VarManager::ObjTypes::ReducedMuon | VarManager::ObjTypes::ReducedMuonExtra | + VarManager::ObjTypes::ReducedMuonCov; // constexpr static uint32_t gkMuonFillMapWithColl = // VarManager::ObjTypes::ReducedMuon | VarManager::ObjTypes::ReducedMuonExtra | // VarManager::ObjTypes::ReducedMuonCollInfo; -namespace dqefficiency_helpers { -inline float *varValues() { return static_cast(VarManager::fgValues); } -inline TString *varNames() { - return static_cast(VarManager::fgVariableNames); +namespace dqefficiency_helpers +{ +inline float* varValues() { return static_cast(VarManager::fgValues); } +inline TString* varNames() +{ + return static_cast(VarManager::fgVariableNames); } -inline TString *varUnits() { - return static_cast(VarManager::fgVariableUnits); +inline TString* varUnits() +{ + return static_cast(VarManager::fgVariableUnits); } } // namespace dqefficiency_helpers // Global function used to define needed histogram classes void DefineHistograms( - HistogramManager *histMan, const TString &histClasses, - const char *histGroups); // defines histograms for all tasks + HistogramManager* histMan, const TString& histClasses, + const char* histGroups); // defines histograms for all tasks // template // void PrintBitMap(TMap map, int nbits) @@ -476,48 +481,48 @@ struct AnalysisEventSelection { Produces JetEvents; OutputObj fOutputList{"output"}; Configurable fConfigMixingVariables{ - "cfgMixingVars", "", - "Mixing configs separated by a comma, default no mixing"}; + "cfgMixingVars", "", + "Mixing configs separated by a comma, default no mixing"}; Configurable fConfigEventCuts{"cfgEventCuts", "eventStandard", "Event selection"}; Configurable fConfigEventCutsJSON{ - "cfgEventCutsJSON", "", "Additional event cuts specified in JSON format"}; + "cfgEventCutsJSON", "", "Additional event cuts specified in JSON format"}; Configurable fConfigQA{"cfgQA", false, "If true, fill QA histograms"}; Configurable fConfigAddEventHistogram{ - "cfgAddEventHistogram", "", "Comma separated list of histograms"}; + "cfgAddEventHistogram", "", "Comma separated list of histograms"}; Configurable fConfigAddEventMCHistogram{ - "cfgAddEventMCHistogram", "generator", - "Comma separated list of histograms"}; + "cfgAddEventMCHistogram", "generator", + "Comma separated list of histograms"}; Configurable fConfigAddJSONHistograms{ - "cfgAddJSONHistograms", "", - "Add event histograms defined via JSON formatting (see " - "HistogramsLibrary)"}; + "cfgAddJSONHistograms", "", + "Add event histograms defined via JSON formatting (see " + "HistogramsLibrary)"}; Configurable fConfigSplitCollisionsDeltaZ{ - "splitCollisionsDeltaZ", 1.0, - "maximum delta-z (cm) between two collisions to consider them as split " - "candidates"}; + "splitCollisionsDeltaZ", 1.0, + "maximum delta-z (cm) between two collisions to consider them as split " + "candidates"}; Configurable fConfigSplitCollisionsDeltaBC{ - "splitCollisionsDeltaBC", 100, - "maximum delta-BC between two collisions to consider them as split " - "candidates; do not apply if value is negative"}; + "splitCollisionsDeltaBC", 100, + "maximum delta-BC between two collisions to consider them as split " + "candidates; do not apply if value is negative"}; Configurable fConfigCheckSplitCollisions{ - "checkSplitCollisions", false, - "If true, run the split collision check and fill histograms"}; + "checkSplitCollisions", false, + "If true, run the split collision check and fill histograms"}; Configurable fConfigCcdbUrl{ - "ccdb-url", "http://alice-ccdb.cern.ch", "url of the ccdb repository"}; + "ccdb-url", "http://alice-ccdb.cern.ch", "url of the ccdb repository"}; Configurable fConfigNoLaterThan{ - "ccdb-no-later-than", - std::chrono::duration_cast( - std::chrono::system_clock::now().time_since_epoch()) - .count(), - "latest acceptable timestamp of creation for the object"}; + "ccdb-no-later-than", + std::chrono::duration_cast( + std::chrono::system_clock::now().time_since_epoch()) + .count(), + "latest acceptable timestamp of creation for the object"}; - HistogramManager *fHistMan = nullptr; - MixingHandler *fMixHandler = nullptr; + HistogramManager* fHistMan = nullptr; + MixingHandler* fMixHandler = nullptr; - AnalysisCompositeCut *fEventCut = nullptr; + AnalysisCompositeCut* fEventCut = nullptr; Service fCCDB{}; o2::ccdb::CcdbApi fCCDBApi; @@ -525,12 +530,13 @@ struct AnalysisEventSelection { std::map fSelMap; // key: reduced event global index, value: // event selection decision std::map> - fBCCollMap; // key: global BC, value: vector of reduced event global - // indices + fBCCollMap; // key: global BC, value: vector of reduced event global + // indices std::map fMetadataRCT, fHeader; int fCurrentRun = -1; - void init(o2::framework::InitContext &context) { + void init(o2::framework::InitContext& context) + { if (context.mOptions.get("processDummy")) { return; } @@ -539,7 +545,7 @@ struct AnalysisEventSelection { fEventCut = new AnalysisCompositeCut(true); TString eventCutStr = fConfigEventCuts.value; if (eventCutStr != "") { - AnalysisCut *cut = dqcuts::GetAnalysisCut(eventCutStr.Data()); + AnalysisCut* cut = dqcuts::GetAnalysisCut(eventCutStr.Data()); if (cut != nullptr) { fEventCut->AddCut(cut); } @@ -547,16 +553,16 @@ struct AnalysisEventSelection { // Additional cuts via JSON TString eventCutJSONStr = fConfigEventCutsJSON.value; if (eventCutJSONStr != "") { - std::vector jsonCuts = - dqcuts::GetCutsFromJSON(eventCutJSONStr.Data()); - for (auto const &cutIt : jsonCuts) { + std::vector jsonCuts = + dqcuts::GetCutsFromJSON(eventCutJSONStr.Data()); + for (auto const& cutIt : jsonCuts) { fEventCut->AddCut(cutIt); } } VarManager::SetUseVars( - AnalysisCut::fgUsedVars); // provide the list of required variables so - // that VarManager knows what to fill + AnalysisCut::fgUsedVars); // provide the list of required variables so + // that VarManager knows what to fill if (fConfigQA) { fHistMan = new HistogramManager("analysisHistos", "", VarManager::kNVars); @@ -572,8 +578,8 @@ struct AnalysisEventSelection { DefineHistograms(fHistMan, "EventsMC", fConfigAddEventMCHistogram.value.data()); dqhistograms::AddHistogramsFromJSON( - fHistMan, fConfigAddJSONHistograms.value - .c_str()); // aditional histograms via JSON + fHistMan, fConfigAddJSONHistograms.value + .c_str()); // aditional histograms via JSON VarManager::SetUseVars(fHistMan->GetUsedVars()); fOutputList.setObject(fHistMan->GetMainHistogramList()); } @@ -597,11 +603,12 @@ struct AnalysisEventSelection { } template - void runEventSelection(TEvents const &events, TEventsMC const &mcEvents) { + void runEventSelection(TEvents const& events, TEventsMC const& mcEvents) + { if (events.size() > 0 && events.begin().runNumber() != fCurrentRun) { fHeader = fCCDBApi.retrieveHeaders( - Form("RCT/Info/RunInformation/%i", events.begin().runNumber()), - fMetadataRCT, -1); + Form("RCT/Info/RunInformation/%i", events.begin().runNumber()), + fMetadataRCT, -1); uint64_t sor = std::atol(fHeader["SOR"].c_str()); uint64_t eor = std::atol(fHeader["EOR"].c_str()); VarManager::SetSORandEOR(sor, eor); @@ -610,22 +617,22 @@ struct AnalysisEventSelection { fSelMap.clear(); fBCCollMap.clear(); - for (auto const &event : events) { + for (auto const& event : events) { // Reset the fValues array and fill event observables VarManager::ResetValues(0, VarManager::kNEventWiseVariables); VarManager::FillEvent(event); if (event.has_reducedMCevent()) { VarManager::FillEvent( - event.reducedMCevent()); + event.reducedMCevent()); } bool decision = false; // if QA is requested fill histograms before event selections if (fConfigQA) { fHistMan->FillHistClass( - "Event_BeforeCuts", - dqefficiency_helpers::varValues()); // automatically fill all the - // histograms in the class Event + "Event_BeforeCuts", + dqefficiency_helpers::varValues()); // automatically fill all the + // histograms in the class Event } if (fEventCut->IsSelected(dqefficiency_helpers::varValues())) { if (fConfigQA) { @@ -639,17 +646,17 @@ struct AnalysisEventSelection { std::vector evIndices = {event.globalIndex()}; fBCCollMap[event.globalBC()] = evIndices; } else { - auto &evIndices = fBCCollMap[event.globalBC()]; + auto& evIndices = fBCCollMap[event.globalBC()]; evIndices.push_back(event.globalIndex()); } if (fMixHandler != nullptr) { int hh = - fMixHandler->FindEventCategory(dqefficiency_helpers::varValues()); + fMixHandler->FindEventCategory(dqefficiency_helpers::varValues()); hash(hh); } } - for (auto const &event : mcEvents) { + for (auto const& event : mcEvents) { // Reset the fValues array and fill event observables VarManager::ResetValues(0, VarManager::kNEventWiseVariables); VarManager::FillEvent(event); @@ -660,10 +667,11 @@ struct AnalysisEventSelection { } template - void publishSelections(TEvents const &events) { + void publishSelections(TEvents const& events) + { std::map - collisionSplittingMap; // key: event global index, value: whether pileup - // event is a possible splitting + collisionSplittingMap; // key: event global index, value: whether pileup + // event is a possible splitting // Reset the fValues array and fill event observables VarManager::ResetValues(0, VarManager::kNEventWiseVariables); @@ -671,7 +679,7 @@ struct AnalysisEventSelection { // of bunch 2-event correlations for (auto bc1It = fBCCollMap.begin(); bc1It != fBCCollMap.end(); ++bc1It) { uint64_t bc1 = bc1It->first; - auto const &bc1Events = bc1It->second; + auto const& bc1Events = bc1It->second; // same bunch event correlations, if more than 1 collisions in this bunch if (bc1Events.size() > 1) { @@ -705,13 +713,13 @@ struct AnalysisEventSelection { fConfigSplitCollisionsDeltaBC) { break; } - auto const &bc2Events = bc2It->second; + auto const& bc2Events = bc2It->second; // loop over events in the first BC - for (const auto &ev1It : bc1Events) { + for (const auto& ev1It : bc1Events) { auto ev1 = events.rawIteratorAt(ev1It); // loop over events in the second BC - for (const auto &ev2It : bc2Events) { + for (const auto& ev2It : bc2Events) { auto ev2 = events.rawIteratorAt(ev2It); // compute 2-event quantities and mark the candidate split // collisions @@ -733,7 +741,7 @@ struct AnalysisEventSelection { // publish the table auto evSel = static_cast(0); - for (auto const &event : events) { + for (auto const& event : events) { evSel = 0; if (fSelMap[event.globalIndex()]) { // event passed the user cuts evSel |= (static_cast(1) << 0); @@ -751,23 +759,25 @@ struct AnalysisEventSelection { } } - void processSkimmed(MyEvents const &events, - aod::ReducedMCEvents const &mcEvents) { + void processSkimmed(MyEvents const& events, + aod::ReducedMCEvents const& mcEvents) + { runEventSelection(events, mcEvents); publishSelections(events); } void - processFillEvents(MyEvents const &events) // Used to forward the event table - // from tablemaker, typical use for - // now is jet analysis. + processFillEvents(MyEvents const& events) // Used to forward the event table + // from tablemaker, typical use for + // now is jet analysis. { - for (auto const &event : events) { + for (auto const& event : events) { JetEvents(event.tag_raw(), event.runNumber(), event.posX(), event.posY(), event.posZ(), event.numContrib(), event.collisionTime(), event.collisionTimeRes()); } } - void processDummy(MyEvents const &) { + void processDummy(MyEvents const&) + { // do nothing } @@ -789,19 +799,19 @@ struct AnalysisTrackSelection { OutputObj fOutputList{"output"}; Configurable fConfigCuts{ - "cfgTrackCuts", "jpsiO2MCdebugCuts2", - "Comma separated list of barrel track cuts"}; + "cfgTrackCuts", "jpsiO2MCdebugCuts2", + "Comma separated list of barrel track cuts"}; Configurable fConfigCutsJSON{ - "cfgBarrelTrackCutsJSON", "", - "Additional list of barrel track cuts in JSON format"}; + "cfgBarrelTrackCutsJSON", "", + "Additional list of barrel track cuts in JSON format"}; Configurable fConfigQA{"cfgQA", false, "If true, fill QA histograms"}; Configurable fConfigAddTrackHistogram{ - "cfgAddTrackHistogram", "", "Comma separated list of histograms"}; + "cfgAddTrackHistogram", "", "Comma separated list of histograms"}; Configurable fConfigAddJSONHistograms{ - "cfgAddJSONHistograms", "", "Histograms in JSON format"}; + "cfgAddJSONHistograms", "", "Histograms in JSON format"}; Configurable fConfigPublishAmbiguity{ - "cfgPublishAmbiguity", true, - "If true, publish ambiguity table and fill QA histograms"}; + "cfgPublishAmbiguity", true, + "If true, publish ambiguity table and fill QA histograms"}; // Re-application of the track-to-collision time compatibility on the skimmed // associations. // timeMargin and nSigma must be <= the values used by @@ -809,53 +819,53 @@ struct AnalysisTrackSelection { // usePVAssociation and maxPvContributors must be identical to those values. struct : ConfigurableGroup { Configurable cfgAssocTimeCut{ - "cfgAssocTimeCut", false, - "If true, reject associations failing the time compatibility computed " - "with the parameters below"}; + "cfgAssocTimeCut", false, + "If true, reject associations failing the time compatibility computed " + "with the parameters below"}; Configurable cfgAssocTimeMargin{ - "cfgAssocTimeMargin", 0.f, - "time margin (ns); must be <= skimming timeMargin"}; + "cfgAssocTimeMargin", 0.f, + "time margin (ns); must be <= skimming timeMargin"}; Configurable cfgAssocNSigma{ - "cfgAssocNSigma", 4.f, - "nSigmaForTimeCompat; must be <= skimming value"}; + "cfgAssocNSigma", 4.f, + "nSigmaForTimeCompat; must be <= skimming value"}; Configurable cfgAssocBcWindowForOneSigma{ - "cfgAssocBcWindowForOneSigma", 60, - "bcWindowForOneSigma; must be equal to the skimming value"}; + "cfgAssocBcWindowForOneSigma", 60, + "bcWindowForOneSigma; must be equal to the skimming value"}; Configurable cfgAssocUsePVAssociation{ - "cfgAssocUsePVAssociation", 1, - "usePVAssociation; must be equal to the skimming value"}; + "cfgAssocUsePVAssociation", 1, + "usePVAssociation; must be equal to the skimming value"}; Configurable cfgAssocMaxPvContributorsForLowMultReassoc{ - "cfgAssocMaxPvContributorsForLowMultReassoc", 10, - "maxPvContributorsForLowMultReassoc; must be equal to the skimming " - "value"}; + "cfgAssocMaxPvContributorsForLowMultReassoc", 10, + "maxPvContributorsForLowMultReassoc; must be equal to the skimming " + "value"}; } fConfigAssocTime; Configurable fConfigCcdbUrl{ - "ccdb-url", "http://alice-ccdb.cern.ch", "url of the ccdb repository"}; + "ccdb-url", "http://alice-ccdb.cern.ch", "url of the ccdb repository"}; Configurable fConfigCcdbPathTPC{ - "ccdb-path-tpc", "Users/z/zhxiong/TPCPID/PostCalib", - "base path to the ccdb object"}; + "ccdb-path-tpc", "Users/z/zhxiong/TPCPID/PostCalib", + "base path to the ccdb object"}; Configurable fConfigNoLaterThan{ - "ccdb-no-later-than", - std::chrono::duration_cast( - std::chrono::system_clock::now().time_since_epoch()) - .count(), - "latest acceptable timestamp of creation for the object"}; + "ccdb-no-later-than", + std::chrono::duration_cast( + std::chrono::system_clock::now().time_since_epoch()) + .count(), + "latest acceptable timestamp of creation for the object"}; Configurable fConfigComputeTPCpostCalib{ - "cfgTPCpostCalib", false, - "If true, compute TPC post-calibrated n-sigmas"}; + "cfgTPCpostCalib", false, + "If true, compute TPC post-calibrated n-sigmas"}; Configurable grpmagPath{"grpmagPath", "GLO/Config/GRPMagField", "CCDB path of the GRPMagField object"}; Configurable fConfigMCSignals{ - "cfgTrackMCSignals", "", "Comma separated list of MC signals"}; + "cfgTrackMCSignals", "", "Comma separated list of MC signals"}; Configurable fConfigMCSignalsJSON{ - "cfgTrackMCsignalsJSON", "", "Additional list of MC signals via JSON"}; + "cfgTrackMCsignalsJSON", "", "Additional list of MC signals via JSON"}; Service fCCDB{}; - HistogramManager *fHistMan = nullptr; - std::vector fTrackCuts; - std::vector fMCSignals; // list of signals to be checked + HistogramManager* fHistMan = nullptr; + std::vector fTrackCuts; + std::vector fMCSignals; // list of signals to be checked std::vector fHistNamesReco; std::vector fHistNamesMCMatched; @@ -863,15 +873,16 @@ struct AnalysisTrackSelection { // CCDB parameters) std::map> - fNAssocsInBunch; // key: track global index, value: vector of global index - // for events associated in-bunch (events that have - // in-bunch pileup or splitting) + fNAssocsInBunch; // key: track global index, value: vector of global index + // for events associated in-bunch (events that have + // in-bunch pileup or splitting) std::map> - fNAssocsOutOfBunch; // key: track global index, value: vector of global - // index for events associated out-of-bunch (events - // that have no in-bunch pileup) + fNAssocsOutOfBunch; // key: track global index, value: vector of global + // index for events associated out-of-bunch (events + // that have no in-bunch pileup) - void init(o2::framework::InitContext &context) { + void init(o2::framework::InitContext& context) + { if (context.mOptions.get("processDummy")) { return; } @@ -883,28 +894,28 @@ struct AnalysisTrackSelection { std::unique_ptr objArray(cutNamesStr.Tokenize(",")); for (int icut = 0; icut < objArray->GetEntries(); ++icut) { fTrackCuts.push_back( - dqcuts::GetCompositeCut(objArray->At(icut)->GetName())); + dqcuts::GetCompositeCut(objArray->At(icut)->GetName())); } } // add extra cuts from JSON TString addTrackCutsStr = fConfigCutsJSON.value; if (addTrackCutsStr != "") { - std::vector addTrackCuts = - dqcuts::GetCutsFromJSON(addTrackCutsStr.Data()); - for (auto const &t : addTrackCuts) { - fTrackCuts.push_back(dynamic_cast(t)); + std::vector addTrackCuts = + dqcuts::GetCutsFromJSON(addTrackCutsStr.Data()); + for (auto const& t : addTrackCuts) { + fTrackCuts.push_back(dynamic_cast(t)); } } VarManager::SetUseVars( - AnalysisCut::fgUsedVars); // provide the list of required variables so - // that VarManager knows what to fill + AnalysisCut::fgUsedVars); // provide the list of required variables so + // that VarManager knows what to fill TString configSigNamesStr = fConfigMCSignals.value; std::unique_ptr sigNamesArray(configSigNamesStr.Tokenize(",")); // Setting the MC signals for (int isig = 0; isig < sigNamesArray->GetEntries(); ++isig) { - MCSignal *sig = - o2::aod::dqmcsignals::GetMCSignal(sigNamesArray->At(isig)->GetName()); + MCSignal* sig = + o2::aod::dqmcsignals::GetMCSignal(sigNamesArray->At(isig)->GetName()); if (sig) { if (sig->GetNProngs() != 1) { // NOTE: only 1 prong signals continue; @@ -915,9 +926,9 @@ struct AnalysisTrackSelection { // Add the MCSignals from the JSON config TString addMCSignalsStr = fConfigMCSignalsJSON.value; if (addMCSignalsStr != "") { - std::vector addMCSignals = - dqmcsignals::GetMCSignalsFromJSON(addMCSignalsStr.Data()); - for (auto const &mcIt : addMCSignals) { + std::vector addMCSignals = + dqmcsignals::GetMCSignalsFromJSON(addMCSignalsStr.Data()); + for (auto const& mcIt : addMCSignals) { if (mcIt->GetNProngs() != 1) { // NOTE: only 1 prong signals continue; } @@ -927,7 +938,7 @@ struct AnalysisTrackSelection { if (fConfigQA) { fHistMan = - new HistogramManager("analysisHistos", "aa", VarManager::kNVars); + new HistogramManager("analysisHistos", "aa", VarManager::kNVars); fHistMan->SetUseDefaultVariableNames(kTRUE); fHistMan->SetDefaultVarNames(dqefficiency_helpers::varNames(), dqefficiency_helpers::varUnits()); @@ -936,13 +947,13 @@ struct AnalysisTrackSelection { // Add histogram classes for each track cut and for each requested MC // signal (reconstructed tracks with MC truth) TString histClasses = "AssocsBarrel_BeforeCuts;"; - for (auto const &cut : fTrackCuts) { + for (auto const& cut : fTrackCuts) { TString nameStr = Form("AssocsBarrel_%s", cut->GetName()); fHistNamesReco.push_back(nameStr); histClasses += Form("%s;", nameStr.Data()); - for (auto const &sig : fMCSignals) { + for (auto const& sig : fMCSignals) { TString nameStr2 = - Form("AssocsCorrectBarrel_%s_%s", cut->GetName(), sig->GetName()); + Form("AssocsCorrectBarrel_%s_%s", cut->GetName(), sig->GetName()); fHistNamesMCMatched.push_back(nameStr2); histClasses += Form("%s;", nameStr2.Data()); nameStr2 = Form("AssocsIncorrectBarrel_%s_%s", cut->GetName(), @@ -956,16 +967,16 @@ struct AnalysisTrackSelection { fConfigAddTrackHistogram.value.data()); if (fConfigPublishAmbiguity) { DefineHistograms( - fHistMan, - "TrackBarrel_AmbiguityInBunch;TrackBarrel_AmbiguityOutOfBunch;", - "ambiguity"); + fHistMan, + "TrackBarrel_AmbiguityInBunch;TrackBarrel_AmbiguityOutOfBunch;", + "ambiguity"); } dqhistograms::AddHistogramsFromJSON( - fHistMan, - fConfigAddJSONHistograms.value.c_str()); // ad-hoc histograms via JSON + fHistMan, + fConfigAddJSONHistograms.value.c_str()); // ad-hoc histograms via JSON VarManager::SetUseVars( - fHistMan->GetUsedVars()); // provide the list of required variables so - // that VarManager knows what to fill + fHistMan->GetUsedVars()); // provide the list of required variables so + // that VarManager knows what to fill fOutputList.setObject(fHistMan->GetMainHistogramList()); } @@ -979,10 +990,11 @@ struct AnalysisTrackSelection { template - void runTrackSelection(ReducedTracksAssoc const &assocs, - TEvents const &events, TTracks const &tracks, - TEventsMC const & /*eventsMC*/, - TTracksMC const &tracksMC) { + void runTrackSelection(ReducedTracksAssoc const& assocs, + TEvents const& events, TTracks const& tracks, + TEventsMC const& /*eventsMC*/, + TTracksMC const& tracksMC) + { fNAssocsInBunch.clear(); fNAssocsOutOfBunch.clear(); @@ -990,27 +1002,27 @@ struct AnalysisTrackSelection { if (events.size() > 0 && fCurrentRun != events.begin().runNumber()) { if (fConfigComputeTPCpostCalib) { auto calibList = fCCDB->getForTimeStamp( - fConfigCcdbPathTPC.value, events.begin().timestamp()); + fConfigCcdbPathTPC.value, events.begin().timestamp()); VarManager::SetCalibrationObject( - VarManager::kTPCElectronMean, - calibList->FindObject("mean_map_electron")); + VarManager::kTPCElectronMean, + calibList->FindObject("mean_map_electron")); VarManager::SetCalibrationObject( - VarManager::kTPCElectronSigma, - calibList->FindObject("sigma_map_electron")); + VarManager::kTPCElectronSigma, + calibList->FindObject("sigma_map_electron")); VarManager::SetCalibrationObject( - VarManager::kTPCPionMean, calibList->FindObject("mean_map_pion")); + VarManager::kTPCPionMean, calibList->FindObject("mean_map_pion")); VarManager::SetCalibrationObject( - VarManager::kTPCPionSigma, calibList->FindObject("sigma_map_pion")); + VarManager::kTPCPionSigma, calibList->FindObject("sigma_map_pion")); VarManager::SetCalibrationObject( - VarManager::kTPCProtonMean, - calibList->FindObject("mean_map_proton")); + VarManager::kTPCProtonMean, + calibList->FindObject("mean_map_proton")); VarManager::SetCalibrationObject( - VarManager::kTPCProtonSigma, - calibList->FindObject("sigma_map_proton")); + VarManager::kTPCProtonSigma, + calibList->FindObject("sigma_map_proton")); } auto grpmag = fCCDB->getForTimeStamp( - grpmagPath, events.begin().timestamp()); + grpmagPath, events.begin().timestamp()); if (grpmag != nullptr) { VarManager::SetMagneticField(grpmag->getNominalL3Field()); } else { @@ -1025,7 +1037,7 @@ struct AnalysisTrackSelection { trackAmbiguities.reserve(tracks.size()); // Loop over associations - for (auto const &assoc : assocs) { + for (auto const& assoc : assocs) { auto event = assoc.template reducedevent_as(); if (!event.isEventSelected_bit(0)) { trackSel(0); @@ -1038,7 +1050,7 @@ struct AnalysisTrackSelection { VarManager::FillEvent(event); if (event.has_reducedMCevent()) { VarManager::FillEvent( - event.reducedMCevent()); + event.reducedMCevent()); } auto track = assoc.template reducedtrack_as(); @@ -1049,11 +1061,11 @@ struct AnalysisTrackSelection { if (fConfigAssocTime.cfgAssocTimeCut) { auto origEvent = track.template reducedevent_as(); if (!VarManager::isBarrelAssocTimeCompatible( - track, event, origEvent, fConfigAssocTime.cfgAssocNSigma, - fConfigAssocTime.cfgAssocTimeMargin, - fConfigAssocTime.cfgAssocBcWindowForOneSigma, - fConfigAssocTime.cfgAssocUsePVAssociation, - fConfigAssocTime.cfgAssocMaxPvContributorsForLowMultReassoc)) { + track, event, origEvent, fConfigAssocTime.cfgAssocNSigma, + fConfigAssocTime.cfgAssocTimeMargin, + fConfigAssocTime.cfgAssocBcWindowForOneSigma, + fConfigAssocTime.cfgAssocUsePVAssociation, + fConfigAssocTime.cfgAssocMaxPvContributorsForLowMultReassoc)) { trackSel(0); continue; } @@ -1110,16 +1122,16 @@ struct AnalysisTrackSelection { if (filterMap & (static_cast(1) << icut)) { if (isCorrectAssoc) { fHistMan->FillHistClass( - fHistNamesMCMatched[icut * 2 * fMCSignals.size() + - 2 * isig] - .Data(), - dqefficiency_helpers::varValues()); + fHistNamesMCMatched[icut * 2 * fMCSignals.size() + + 2 * isig] + .Data(), + dqefficiency_helpers::varValues()); } else { fHistMan->FillHistClass( - fHistNamesMCMatched[icut * 2 * fMCSignals.size() + - 2 * isig + 1] - .Data(), - dqefficiency_helpers::varValues()); + fHistNamesMCMatched[icut * 2 * fMCSignals.size() + + 2 * isig + 1] + .Data(), + dqefficiency_helpers::varValues()); } } } // end loop over cuts @@ -1157,7 +1169,7 @@ struct AnalysisTrackSelection { std::vector evVector = {event.globalIndex()}; fNAssocsInBunch[track.globalIndex()] = evVector; } else { - auto &evVector = fNAssocsInBunch[track.globalIndex()]; + auto& evVector = fNAssocsInBunch[track.globalIndex()]; evVector.push_back(event.globalIndex()); } } else { @@ -1166,7 +1178,7 @@ struct AnalysisTrackSelection { std::vector evVector = {event.globalIndex()}; fNAssocsOutOfBunch[track.globalIndex()] = evVector; } else { - auto &evVector = fNAssocsOutOfBunch[track.globalIndex()]; + auto& evVector = fNAssocsOutOfBunch[track.globalIndex()]; evVector.push_back(event.globalIndex()); } } @@ -1179,7 +1191,7 @@ struct AnalysisTrackSelection { // So one could QA these tracks separately if (fConfigPublishAmbiguity) { if (fConfigQA) { - for (auto const &[trackIdx, evIndices] : fNAssocsInBunch) { + for (auto const& [trackIdx, evIndices] : fNAssocsInBunch) { if (evIndices.size() == 1) { continue; } @@ -1187,12 +1199,12 @@ struct AnalysisTrackSelection { VarManager::ResetValues(0, VarManager::kNBarrelTrackVariables); VarManager::FillTrack(track); VarManager::fgValues[VarManager::kBarrelNAssocsInBunch] = - static_cast(evIndices.size()); + static_cast(evIndices.size()); fHistMan->FillHistClass("TrackBarrel_AmbiguityInBunch", dqefficiency_helpers::varValues()); } // end loop over in-bunch ambiguous tracks - for (auto const &[trackIdx, evIndices] : fNAssocsOutOfBunch) { + for (auto const& [trackIdx, evIndices] : fNAssocsOutOfBunch) { if (evIndices.size() == 1) { continue; } @@ -1200,14 +1212,14 @@ struct AnalysisTrackSelection { VarManager::ResetValues(0, VarManager::kNBarrelTrackVariables); VarManager::FillTrack(track); VarManager::fgValues[VarManager::kBarrelNAssocsOutOfBunch] = - static_cast(evIndices.size()); + static_cast(evIndices.size()); fHistMan->FillHistClass("TrackBarrel_AmbiguityOutOfBunch", dqefficiency_helpers::varValues()); } // end loop over out-of-bunch ambiguous tracks } // publish the ambiguity table - for (auto const &track : tracks) { + for (auto const& track : tracks) { int8_t nInBunch = 0; if (fNAssocsInBunch.find(track.globalIndex()) != fNAssocsInBunch.end()) { @@ -1223,23 +1235,26 @@ struct AnalysisTrackSelection { } } // end runTrackSelection() - void processSkimmed(ReducedTracksAssoc const &assocs, - MyEventsSelected const &events, - MyBarrelTracks const &tracks, - ReducedMCEvents const &eventsMC, - ReducedMCTracks const &tracksMC) { + void processSkimmed(ReducedTracksAssoc const& assocs, + MyEventsSelected const& events, + MyBarrelTracks const& tracks, + ReducedMCEvents const& eventsMC, + ReducedMCTracks const& tracksMC) + { runTrackSelection(assocs, events, tracks, eventsMC, tracksMC); } - void processSkimmedWithCov(ReducedTracksAssoc const &assocs, - MyEventsVtxCovSelected const &events, - MyBarrelTracksWithCov const &tracks, - ReducedMCEvents const &eventsMC, - ReducedMCTracks const &tracksMC) { + void processSkimmedWithCov(ReducedTracksAssoc const& assocs, + MyEventsVtxCovSelected const& events, + MyBarrelTracksWithCov const& tracks, + ReducedMCEvents const& eventsMC, + ReducedMCTracks const& tracksMC) + { runTrackSelection( - assocs, events, tracks, eventsMC, tracksMC); + assocs, events, tracks, eventsMC, tracksMC); } - void processDummy(MyEvents const &) { + void processDummy(MyEvents const&) + { // do nothing } @@ -1265,51 +1280,52 @@ struct AnalysisMuonSelection { Configurable fConfigCuts{"cfgMuonCuts", "muonQualityCuts", "Comma separated list of muon cuts"}; Configurable fConfigCutsJSON{ - "cfgMuonCutsJSON", "", "Additional list of muon cuts in JSON format"}; + "cfgMuonCutsJSON", "", "Additional list of muon cuts in JSON format"}; Configurable fConfigQA{"cfgQA", false, "If true, fill QA histograms"}; Configurable fConfigAddMuonHistogram{ - "cfgAddMuonHistogram", "", "Comma separated list of histograms"}; + "cfgAddMuonHistogram", "", "Comma separated list of histograms"}; Configurable fConfigAddJSONHistograms{ - "cfgAddJSONHistograms", "", "Histograms in JSON format"}; + "cfgAddJSONHistograms", "", "Histograms in JSON format"}; Configurable fConfigPublishAmbiguity{ - "cfgPublishAmbiguity", true, - "If true, publish ambiguity table and fill QA histograms"}; + "cfgPublishAmbiguity", true, + "If true, publish ambiguity table and fill QA histograms"}; Configurable fConfigMCSignals{ - "cfgMuonMCSignals", "", "Comma separated list of MC signals"}; + "cfgMuonMCSignals", "", "Comma separated list of MC signals"}; Configurable fConfigMCSignalsJSON{ - "cfgMuonMCsignalsJSON", "", "Additional list of MC signals via JSON"}; + "cfgMuonMCsignalsJSON", "", "Additional list of MC signals via JSON"}; Configurable fConfigCcdbUrl{ - "ccdb-url", "http://alice-ccdb.cern.ch", "url of the ccdb repository"}; + "ccdb-url", "http://alice-ccdb.cern.ch", "url of the ccdb repository"}; Configurable fConfigNoLaterThan{ - "ccdb-no-later-than", - std::chrono::duration_cast( - std::chrono::system_clock::now().time_since_epoch()) - .count(), - "latest acceptable timestamp of creation for the object"}; + "ccdb-no-later-than", + std::chrono::duration_cast( + std::chrono::system_clock::now().time_since_epoch()) + .count(), + "latest acceptable timestamp of creation for the object"}; Service fCCDB{}; - HistogramManager *fHistMan = nullptr; - std::vector fMuonCuts; + HistogramManager* fHistMan = nullptr; + std::vector fMuonCuts; std::vector fHistNamesReco; std::vector fHistNamesMCMatched; - std::vector fMCSignals; // list of signals to be checked + std::vector fMCSignals; // list of signals to be checked int fCurrentRun = 0; // current run (needed to detect run changes for loading // CCDB parameters) std::map> - fNAssocsInBunch; // key: track global index, value: vector of global index - // for events associated in-bunch (events that have - // in-bunch pileup or splitting) + fNAssocsInBunch; // key: track global index, value: vector of global index + // for events associated in-bunch (events that have + // in-bunch pileup or splitting) std::map> - fNAssocsOutOfBunch; // key: track global index, value: vector of global - // index for events associated out-of-bunch (events - // that have no in-bunch pileup) + fNAssocsOutOfBunch; // key: track global index, value: vector of global + // index for events associated out-of-bunch (events + // that have no in-bunch pileup) - void init(o2::framework::InitContext &context) { + void init(o2::framework::InitContext& context) + { if (context.mOptions.get("processDummy")) { return; } @@ -1321,28 +1337,28 @@ struct AnalysisMuonSelection { std::unique_ptr objArray(cutNamesStr.Tokenize(",")); for (int icut = 0; icut < objArray->GetEntries(); ++icut) { fMuonCuts.push_back( - dqcuts::GetCompositeCut(objArray->At(icut)->GetName())); + dqcuts::GetCompositeCut(objArray->At(icut)->GetName())); } } // Add cuts configured via JSON TString addCutsStr = fConfigCutsJSON.value; if (addCutsStr != "") { - std::vector addCuts = - dqcuts::GetCutsFromJSON(addCutsStr.Data()); - for (auto const &t : addCuts) { - fMuonCuts.push_back(dynamic_cast(t)); + std::vector addCuts = + dqcuts::GetCutsFromJSON(addCutsStr.Data()); + for (auto const& t : addCuts) { + fMuonCuts.push_back(dynamic_cast(t)); } } VarManager::SetUseVars( - AnalysisCut::fgUsedVars); // provide the list of required variables so - // that VarManager knows what to fill + AnalysisCut::fgUsedVars); // provide the list of required variables so + // that VarManager knows what to fill TString configSigNamesStr = fConfigMCSignals.value; std::unique_ptr sigNamesArray(configSigNamesStr.Tokenize(",")); // Setting the MC signals for (int isig = 0; isig < sigNamesArray->GetEntries(); ++isig) { - MCSignal *sig = - o2::aod::dqmcsignals::GetMCSignal(sigNamesArray->At(isig)->GetName()); + MCSignal* sig = + o2::aod::dqmcsignals::GetMCSignal(sigNamesArray->At(isig)->GetName()); if (sig) { if (sig->GetNProngs() != 1) { // NOTE: only 1 prong signals continue; @@ -1353,9 +1369,9 @@ struct AnalysisMuonSelection { // Add the MCSignals from the JSON config TString addMCSignalsStr = fConfigMCSignalsJSON.value; if (addMCSignalsStr != "") { - std::vector addMCSignals = - dqmcsignals::GetMCSignalsFromJSON(addMCSignalsStr.Data()); - for (auto const &mcIt : addMCSignals) { + std::vector addMCSignals = + dqmcsignals::GetMCSignalsFromJSON(addMCSignalsStr.Data()); + for (auto const& mcIt : addMCSignals) { if (mcIt->GetNProngs() != 1) { // NOTE: only 1 prong signals continue; } @@ -1365,7 +1381,7 @@ struct AnalysisMuonSelection { if (fConfigQA) { fHistMan = - new HistogramManager("analysisHistos", "aa", VarManager::kNVars); + new HistogramManager("analysisHistos", "aa", VarManager::kNVars); fHistMan->SetUseDefaultVariableNames(kTRUE); fHistMan->SetDefaultVarNames(dqefficiency_helpers::varNames(), dqefficiency_helpers::varUnits()); @@ -1374,17 +1390,17 @@ struct AnalysisMuonSelection { // Add histogram classes for each track cut and for each requested MC // signal (reconstructed tracks with MC truth) TString histClasses = "AssocsMuon_BeforeCuts;"; - for (auto const &cut : fMuonCuts) { + for (auto const& cut : fMuonCuts) { TString nameStr = Form("AssocsMuon_%s", cut->GetName()); fHistNamesReco.push_back(nameStr); histClasses += Form("%s;", nameStr.Data()); - for (auto const &sig : fMCSignals) { + for (auto const& sig : fMCSignals) { TString nameStr2 = - Form("AssocsCorrectMuon_%s_%s", cut->GetName(), sig->GetName()); + Form("AssocsCorrectMuon_%s_%s", cut->GetName(), sig->GetName()); fHistNamesMCMatched.push_back(nameStr2); histClasses += Form("%s;", nameStr2.Data()); nameStr2 = - Form("AssocsIncorrectMuon_%s_%s", cut->GetName(), sig->GetName()); + Form("AssocsIncorrectMuon_%s_%s", cut->GetName(), sig->GetName()); fHistNamesMCMatched.push_back(nameStr2); histClasses += Form("%s;", nameStr2.Data()); } @@ -1394,14 +1410,14 @@ struct AnalysisMuonSelection { } DefineHistograms( - fHistMan, histClasses.Data(), - fConfigAddMuonHistogram.value.data()); // define all histograms + fHistMan, histClasses.Data(), + fConfigAddMuonHistogram.value.data()); // define all histograms dqhistograms::AddHistogramsFromJSON( - fHistMan, - fConfigAddJSONHistograms.value.c_str()); // ad-hoc histograms via JSON + fHistMan, + fConfigAddJSONHistograms.value.c_str()); // ad-hoc histograms via JSON VarManager::SetUseVars( - fHistMan->GetUsedVars()); // provide the list of required variables so - // that VarManager knows what to fill + fHistMan->GetUsedVars()); // provide the list of required variables so + // that VarManager knows what to fill fOutputList.setObject(fHistMan->GetMainHistogramList()); } @@ -1413,10 +1429,11 @@ struct AnalysisMuonSelection { template - void runMuonSelection(ReducedMuonsAssoc const &assocs, TEvents const &events, - TMuons const &muons, - ReducedMCEvents const & /*eventsMC*/, - ReducedMCTracks const &muonsMC) { + void runMuonSelection(ReducedMuonsAssoc const& assocs, TEvents const& events, + TMuons const& muons, + ReducedMCEvents const& /*eventsMC*/, + ReducedMCTracks const& muonsMC) + { fNAssocsInBunch.clear(); fNAssocsOutOfBunch.clear(); @@ -1426,12 +1443,12 @@ struct AnalysisMuonSelection { muonSel.reserve(assocs.size()); - for (auto const &assoc : assocs) { + for (auto const& assoc : assocs) { auto event = assoc.template reducedevent_as(); if (!event.has_reducedMCevent() || !event.isEventSelected_bit( - 0)) { // condition on reducedMCevent to avoid rec. events with no - // generated event + 0)) { // condition on reducedMCevent to avoid rec. events with no + // generated event muonSel(0); continue; } @@ -1440,7 +1457,7 @@ struct AnalysisMuonSelection { // combine track and event properties VarManager::FillEvent(event); VarManager::FillEvent( - event.reducedMCevent()); + event.reducedMCevent()); auto track = assoc.template reducedmuon_as(); VarManager::FillTrack(track); @@ -1507,13 +1524,13 @@ struct AnalysisMuonSelection { if (filterMap & (static_cast(1) << j)) { if (isCorrectAssoc) { fHistMan->FillHistClass( - fHistNamesMCMatched[j * 2 * fMCSignals.size() + 2 * i].Data(), - dqefficiency_helpers::varValues()); + fHistNamesMCMatched[j * 2 * fMCSignals.size() + 2 * i].Data(), + dqefficiency_helpers::varValues()); } else { fHistMan->FillHistClass( - fHistNamesMCMatched[j * 2 * fMCSignals.size() + 2 * i + 1] - .Data(), - dqefficiency_helpers::varValues()); + fHistNamesMCMatched[j * 2 * fMCSignals.size() + 2 * i + 1] + .Data(), + dqefficiency_helpers::varValues()); } } } // end loop over cuts @@ -1527,7 +1544,7 @@ struct AnalysisMuonSelection { std::vector evVector = {event.globalIndex()}; fNAssocsInBunch[track.globalIndex()] = evVector; } else { - auto &evVector = fNAssocsInBunch[track.globalIndex()]; + auto& evVector = fNAssocsInBunch[track.globalIndex()]; evVector.push_back(event.globalIndex()); } } else { @@ -1536,7 +1553,7 @@ struct AnalysisMuonSelection { std::vector evVector = {event.globalIndex()}; fNAssocsOutOfBunch[track.globalIndex()] = evVector; } else { - auto &evVector = fNAssocsOutOfBunch[track.globalIndex()]; + auto& evVector = fNAssocsOutOfBunch[track.globalIndex()]; evVector.push_back(event.globalIndex()); } } @@ -1548,7 +1565,7 @@ struct AnalysisMuonSelection { // pileup and collisions from different bunches // So one could QA these tracks separately if (fConfigPublishAmbiguity) { - for (auto const &[trackIdx, evIndices] : fNAssocsInBunch) { + for (auto const& [trackIdx, evIndices] : fNAssocsInBunch) { if (evIndices.size() == 1) { continue; } @@ -1556,14 +1573,14 @@ struct AnalysisMuonSelection { VarManager::ResetValues(0, VarManager::kNVars); VarManager::FillTrack(track); VarManager::fgValues[VarManager::kMuonNAssocsInBunch] = - static_cast(evIndices.size()); + static_cast(evIndices.size()); if (fConfigQA) { fHistMan->FillHistClass("Muon_AmbiguityInBunch", dqefficiency_helpers::varValues()); } } // end loop over in-bunch ambiguous tracks - for (auto const &[trackIdx, evIndices] : fNAssocsOutOfBunch) { + for (auto const& [trackIdx, evIndices] : fNAssocsOutOfBunch) { if (evIndices.size() == 1) { continue; } @@ -1571,7 +1588,7 @@ struct AnalysisMuonSelection { VarManager::ResetValues(0, VarManager::kNVars); VarManager::FillTrack(track); VarManager::fgValues[VarManager::kMuonNAssocsOutOfBunch] = - static_cast(evIndices.size()); + static_cast(evIndices.size()); if (fConfigQA) { fHistMan->FillHistClass("Muon_AmbiguityOutOfBunch", dqefficiency_helpers::varValues()); @@ -1579,7 +1596,7 @@ struct AnalysisMuonSelection { } // end loop over out-of-bunch ambiguous tracks // publish the ambiguity table - for (auto const &track : muons) { + for (auto const& track : muons) { int8_t nInBunch = 0; if (fNAssocsInBunch.find(track.globalIndex()) != fNAssocsInBunch.end()) { @@ -1595,23 +1612,26 @@ struct AnalysisMuonSelection { } } - void processSkimmed(ReducedMuonsAssoc const &assocs, - MyEventsSelected const &events, MyMuonTracks const &muons, - ReducedMCEvents const &eventsMC, - ReducedMCTracks const &tracksMC) { + void processSkimmed(ReducedMuonsAssoc const& assocs, + MyEventsSelected const& events, MyMuonTracks const& muons, + ReducedMCEvents const& eventsMC, + ReducedMCTracks const& tracksMC) + { runMuonSelection(assocs, events, muons, eventsMC, tracksMC); } - void processSkimmedWithCov(ReducedMuonsAssoc const &assocs, - MyEventsVtxCovSelected const &events, - MyMuonTracksWithCov const &muons, - ReducedMCEvents const &eventsMC, - ReducedMCTracks const &tracksMC) { + void processSkimmedWithCov(ReducedMuonsAssoc const& assocs, + MyEventsVtxCovSelected const& events, + MyMuonTracksWithCov const& muons, + ReducedMCEvents const& eventsMC, + ReducedMCTracks const& tracksMC) + { runMuonSelection( - assocs, events, muons, eventsMC, tracksMC); + assocs, events, muons, eventsMC, tracksMC); } - void processDummy(MyEvents const &) { + void processDummy(MyEvents const&) + { // do nothing } @@ -1641,21 +1661,22 @@ struct AnalysisPrefilterSelection { Configurable fConfigPrefilterPairCut{"cfgPrefilterPairCut", "", "Prefilter pair cut"}; Configurable fConfigTrackCuts{ - "cfgTrackCuts", "", "Track cuts for which to run the prefilter"}; + "cfgTrackCuts", "", "Track cuts for which to run the prefilter"}; // Track related options Configurable fPropTrack{"cfgPropTrack", false, "Propgate tracks to associated collision to " "recalculate DCA and momentum vector"}; std::map fPrefilterMap; - AnalysisCompositeCut *fPairCut = nullptr; + AnalysisCompositeCut* fPairCut = nullptr; uint32_t fPrefilterMask = 0; int fPrefilterCutBit = -1; Preslice trackAssocsPerCollision = - aod::reducedtrack_association::reducedeventId; + aod::reducedtrack_association::reducedeventId; - void init(o2::framework::InitContext &context) { + void init(o2::framework::InitContext& context) + { if (context.mOptions.get("processDummy")) { return; } @@ -1664,7 +1685,7 @@ struct AnalysisPrefilterSelection { bool runPrefilter = true; // get the list of track cuts to be prefiltered TString trackCutsStr = fConfigTrackCuts.value; - TObjArray *objArrayTrackCuts = nullptr; + TObjArray* objArrayTrackCuts = nullptr; if (!trackCutsStr.IsNull()) { objArrayTrackCuts = trackCutsStr.Tokenize(","); if (objArrayTrackCuts == nullptr) { @@ -1699,9 +1720,9 @@ struct AnalysisPrefilterSelection { false); TString addTrackCutsStr = trackCuts; if (addTrackCutsStr != "") { - std::vector addTrackCuts = - dqcuts::GetCutsFromJSON(addTrackCutsStr.Data()); - for (auto const &t : addTrackCuts) { + std::vector addTrackCuts = + dqcuts::GetCutsFromJSON(addTrackCutsStr.Data()); + for (auto const& t : addTrackCuts) { allTrackCutsStr += Form(",%s", t->GetName()); } } @@ -1709,7 +1730,7 @@ struct AnalysisPrefilterSelection { std::unique_ptr objArray(allTrackCutsStr.Tokenize(",")); if (objArray == nullptr) { LOG(fatal) - << " Not getting any track cuts from the barrel-track-selection "; + << " Not getting any track cuts from the barrel-track-selection "; } if (objArray->FindObject(prefilterTrackCutStr.Data()) == nullptr) { LOG(fatal) << " Prefilter track cut not among the cuts calculated by " @@ -1737,26 +1758,27 @@ struct AnalysisPrefilterSelection { } VarManager::SetUseVars( - AnalysisCut::fgUsedVars); // provide the list of required variables so - // that VarManager knows what to fill + AnalysisCut::fgUsedVars); // provide the list of required variables so + // that VarManager knows what to fill VarManager::SetupTwoProngDCAFitter( - 5.0f, true, 200.0f, 4.0f, 1.0e-3f, 0.9f, - true); // TODO: get these parameters from Configurables + 5.0f, true, 200.0f, 4.0f, 1.0e-3f, 0.9f, + true); // TODO: get these parameters from Configurables VarManager::SetupTwoProngFwdDCAFitter(5.0f, true, 200.0f, 1.0e-3f, 0.9f, true); } template void runPrefilter( - TEvent const &event, - soa::Join const &assocs, - TTracks const & /*tracks*/) { + TEvent const& event, + soa::Join const& assocs, + TTracks const& /*tracks*/) + { if (fPrefilterCutBit < 0 || fPrefilterMask == 0) { return; } - for (auto const &[assoc1, assoc2] : o2::soa::combinations(assocs, assocs)) { + for (auto const& [assoc1, assoc2] : o2::soa::combinations(assocs, assocs)) { auto track1 = assoc1.template reducedtrack_as(); auto track2 = assoc2.template reducedtrack_as(); @@ -1770,9 +1792,9 @@ struct AnalysisPrefilterSelection { // here we check the cuts fulfilled by both tracks, for both the tight and // loose selections uint32_t track1Candidate = - (assoc1.isBarrelSelected_raw() & fPrefilterMask); + (assoc1.isBarrelSelected_raw() & fPrefilterMask); uint32_t track2Candidate = - (assoc2.isBarrelSelected_raw() & fPrefilterMask); + (assoc2.isBarrelSelected_raw() & fPrefilterMask); bool track1Loose = assoc1.isBarrelSelected_bit(fPrefilterCutBit); bool track2Loose = assoc2.isBarrelSelected_bit(fPrefilterCutBit); @@ -1786,7 +1808,7 @@ struct AnalysisPrefilterSelection { track2); if (fPropTrack) { VarManager::FillPairCollision( - event, track1, track2); + event, track1, track2); } // if the pair fullfils the criteria, add an entry into the prefilter map // for the two tracks @@ -1804,15 +1826,16 @@ struct AnalysisPrefilterSelection { } void processBarrelSkimmed( - MyEvents const &events, - soa::Join const &assocs, - MyBarrelTracks const &tracks) { + MyEvents const& events, + soa::Join const& assocs, + MyBarrelTracks const& tracks) + { fPrefilterMap.clear(); - for (auto const &event : events) { + for (auto const& event : events) { auto groupedAssocs = - assocs.sliceBy(trackAssocsPerCollision, event.globalIndex()); + assocs.sliceBy(trackAssocsPerCollision, event.globalIndex()); if (groupedAssocs.size() > 1) { runPrefilter(event, groupedAssocs, tracks); } @@ -1826,7 +1849,7 @@ struct AnalysisPrefilterSelection { prefilter(mymap); } } else { - for (auto const &assoc : assocs) { + for (auto const& assoc : assocs) { // TODO: just use the index from the assoc (no need to cast the whole // track) auto track = assoc.template reducedtrack_as(); @@ -1844,7 +1867,8 @@ struct AnalysisPrefilterSelection { } } - void processDummy(MyEvents const &) { + void processDummy(MyEvents const&) + { // do nothing } @@ -1863,28 +1887,28 @@ struct AnalysisPostPrefilterTrackSelection { OutputObj fOutputList{"output"}; Configurable fConfigTrackCuts{ - "cfgTrackCuts", "", - "Comma separated list of track cuts (among those of " - "analysis-track-selection) for which to fill histograms"}; + "cfgTrackCuts", "", + "Comma separated list of track cuts (among those of " + "analysis-track-selection) for which to fill histograms"}; Configurable fConfigAddTrackHistogram{ - "cfgAddTrackHistogram", "", "Comma separated list of histograms"}; + "cfgAddTrackHistogram", "", "Comma separated list of histograms"}; Configurable fConfigAddJSONHistograms{ - "cfgAddJSONHistograms", "", "Histograms in JSON format"}; + "cfgAddJSONHistograms", "", "Histograms in JSON format"}; Configurable fConfigMCSignals{ - "cfgTrackMCSignals", "", "Comma separated list of MC signals"}; + "cfgTrackMCSignals", "", "Comma separated list of MC signals"}; Configurable fConfigMCSignalsJSON{ - "cfgTrackMCsignalsJSON", "", "Additional list of MC signals via JSON"}; + "cfgTrackMCsignalsJSON", "", "Additional list of MC signals via JSON"}; Configurable fConfigCcdbUrl{ - "ccdb-url", "http://alice-ccdb.cern.ch", "url of the ccdb repository"}; + "ccdb-url", "http://alice-ccdb.cern.ch", "url of the ccdb repository"}; Configurable grpmagPath{"grpmagPath", "GLO/Config/GRPMagField", "CCDB path of the GRPMagField object"}; Service fCCDB{}; - HistogramManager *fHistMan = nullptr; - std::vector fMCSignals; - std::vector fCutBits; // bit positions of the requested cuts in the - // track-selection task cut list + HistogramManager* fHistMan = nullptr; + std::vector fMCSignals; + std::vector fCutBits; // bit positions of the requested cuts in the + // track-selection task cut list std::vector fHistNamesSurvived; // [icut] std::vector fHistNamesVetoed; // [icut] std::vector fHistNamesMCSurvived; // [icut * nSignals + isig] @@ -1893,7 +1917,8 @@ struct AnalysisPostPrefilterTrackSelection { int fCurrentRun = 0; // current run (needed to detect run changes for loading // CCDB parameters) - void init(o2::framework::InitContext &context) { + void init(o2::framework::InitContext& context) + { if (context.mOptions.get("processDummy")) { return; } @@ -1904,7 +1929,7 @@ struct AnalysisPostPrefilterTrackSelection { std::unique_ptr objArrayCuts(trackCutsStr.Tokenize(",")); if (objArrayCuts == nullptr || objArrayCuts->GetEntries() == 0) { LOG(fatal) - << " No track cuts specified! Check the cfgTrackCuts configurable"; + << " No track cuts specified! Check the cfgTrackCuts configurable"; } // get the full list of cuts computed by the track-selection task and // resolve the requested cuts to bit positions @@ -1917,24 +1942,24 @@ struct AnalysisPostPrefilterTrackSelection { "cfgBarrelTrackCutsJSON", trackCuts, false); TString addTrackCutsStr = trackCuts; if (addTrackCutsStr != "") { - std::vector addTrackCuts = - dqcuts::GetCutsFromJSON(addTrackCutsStr.Data()); - for (auto const &t : addTrackCuts) { + std::vector addTrackCuts = + dqcuts::GetCutsFromJSON(addTrackCutsStr.Data()); + for (auto const& t : addTrackCuts) { allTrackCutsStr += Form(",%s", t->GetName()); } } std::unique_ptr objArrayAllCuts(allTrackCutsStr.Tokenize(",")); if (objArrayAllCuts == nullptr) { LOG(fatal) - << " Not getting any track cuts from the barrel-track-selection "; + << " Not getting any track cuts from the barrel-track-selection "; } std::vector cutNames; for (int icut = 0; icut < objArrayCuts->GetEntries(); ++icut) { TString cutName = objArrayCuts->At(icut)->GetName(); if (objArrayAllCuts->FindObject(cutName.Data()) == nullptr) { LOG(fatal) - << " Track cut " << cutName - << " not among the cuts calculated by the track-selection task! "; + << " Track cut " << cutName + << " not among the cuts calculated by the track-selection task! "; } for (int jcut = 0; jcut < objArrayAllCuts->GetEntries(); ++jcut) { if (cutName.CompareTo(objArrayAllCuts->At(jcut)->GetName()) == 0) { @@ -1948,8 +1973,8 @@ struct AnalysisPostPrefilterTrackSelection { TString configSigNamesStr = fConfigMCSignals.value; std::unique_ptr sigNamesArray(configSigNamesStr.Tokenize(",")); for (int isig = 0; isig < sigNamesArray->GetEntries(); ++isig) { - MCSignal *sig = - o2::aod::dqmcsignals::GetMCSignal(sigNamesArray->At(isig)->GetName()); + MCSignal* sig = + o2::aod::dqmcsignals::GetMCSignal(sigNamesArray->At(isig)->GetName()); if (sig) { if (sig->GetNProngs() != 1) { // NOTE: only 1 prong signals continue; @@ -1960,9 +1985,9 @@ struct AnalysisPostPrefilterTrackSelection { // Add the MCSignals from the JSON config TString addMCSignalsStr = fConfigMCSignalsJSON.value; if (addMCSignalsStr != "") { - std::vector addMCSignals = - dqmcsignals::GetMCSignalsFromJSON(addMCSignalsStr.Data()); - for (auto const &mcIt : addMCSignals) { + std::vector addMCSignals = + dqmcsignals::GetMCSignalsFromJSON(addMCSignalsStr.Data()); + for (auto const& mcIt : addMCSignals) { if (mcIt->GetNProngs() != 1) { // NOTE: only 1 prong signals continue; } @@ -1979,14 +2004,14 @@ struct AnalysisPostPrefilterTrackSelection { // prefilter-surviving and prefilter-vetoed tracks, // and for each requested MC signal (reconstructed tracks with MC truth) TString histClasses = ""; - for (auto const &cutName : cutNames) { + for (auto const& cutName : cutNames) { TString nameStr = Form("TrackBarrelPostPrefilter_%s", cutName.Data()); fHistNamesSurvived.push_back(nameStr); histClasses += Form("%s;", nameStr.Data()); nameStr = Form("TrackBarrelPrefilterVetoed_%s", cutName.Data()); fHistNamesVetoed.push_back(nameStr); histClasses += Form("%s;", nameStr.Data()); - for (auto const &sig : fMCSignals) { + for (auto const& sig : fMCSignals) { TString nameStr2 = Form("TrackBarrelPostPrefilter_%s_%s", cutName.Data(), sig->GetName()); fHistNamesMCSurvived.push_back(nameStr2); @@ -2001,11 +2026,11 @@ struct AnalysisPostPrefilterTrackSelection { DefineHistograms(fHistMan, histClasses.Data(), fConfigAddTrackHistogram.value.data()); dqhistograms::AddHistogramsFromJSON( - fHistMan, - fConfigAddJSONHistograms.value.c_str()); // ad-hoc histograms via JSON + fHistMan, + fConfigAddJSONHistograms.value.c_str()); // ad-hoc histograms via JSON VarManager::SetUseVars( - fHistMan->GetUsedVars()); // provide the list of required variables so - // that VarManager knows what to fill + fHistMan->GetUsedVars()); // provide the list of required variables so + // that VarManager knows what to fill fOutputList.setObject(fHistMan->GetMainHistogramList()); fCCDB->setURL(fConfigCcdbUrl.value); @@ -2016,15 +2041,16 @@ struct AnalysisPostPrefilterTrackSelection { template void runPostPrefilterTrackSelection( - soa::Join const &assocs, - TEvents const &events, TTracks const & /*tracks*/, - TTracksMC const &tracksMC) { + soa::Join const& assocs, + TEvents const& events, TTracks const& /*tracks*/, + TTracksMC const& tracksMC) + { // load the magnetic field (needed to recompute the DCA with respect to the // associated collision) if (events.size() > 0 && fCurrentRun != events.begin().runNumber()) { auto grpmag = fCCDB->getForTimeStamp( - grpmagPath, events.begin().timestamp()); + grpmagPath, events.begin().timestamp()); if (grpmag != nullptr) { VarManager::SetMagneticField(grpmag->getNominalL3Field()); } else { @@ -2035,7 +2061,7 @@ struct AnalysisPostPrefilterTrackSelection { } // Loop over associations - for (auto const &assoc : assocs) { + for (auto const& assoc : assocs) { auto event = assoc.template reducedevent_as(); if (!event.isEventSelected_bit(0)) { continue; @@ -2063,7 +2089,7 @@ struct AnalysisPostPrefilterTrackSelection { VarManager::FillEvent(event); if (event.has_reducedMCevent()) { VarManager::FillEvent( - event.reducedMCevent()); + event.reducedMCevent()); } auto track = assoc.template reducedtrack_as(); @@ -2081,20 +2107,20 @@ struct AnalysisPostPrefilterTrackSelection { } bool isVetoed = (vetoMap & (static_cast(1) << icut)) > 0; fHistMan->FillHistClass( - (isVetoed ? fHistNamesVetoed[icut] : fHistNamesSurvived[icut]) - .Data(), - dqefficiency_helpers::varValues()); + (isVetoed ? fHistNamesVetoed[icut] : fHistNamesSurvived[icut]) + .Data(), + dqefficiency_helpers::varValues()); if (track.has_reducedMCTrack()) { int isig = 0; for (auto sig = fMCSignals.begin(); sig != fMCSignals.end(); sig++, isig++) { if ((*sig)->CheckSignal(true, track.reducedMCTrack())) { fHistMan->FillHistClass( - (isVetoed - ? fHistNamesMCVetoed - : fHistNamesMCSurvived)[icut * fMCSignals.size() + isig] - .Data(), - dqefficiency_helpers::varValues()); + (isVetoed + ? fHistNamesMCVetoed + : fHistNamesMCSurvived)[icut * fMCSignals.size() + isig] + .Data(), + dqefficiency_helpers::varValues()); } } } @@ -2103,24 +2129,27 @@ struct AnalysisPostPrefilterTrackSelection { } void processSkimmed(soa::Join const &assocs, - MyEventsSelected const &events, - MyBarrelTracks const &tracks, - ReducedMCEvents const & /*eventsMC*/, - ReducedMCTracks const &tracksMC) { + aod::Prefilter> const& assocs, + MyEventsSelected const& events, + MyBarrelTracks const& tracks, + ReducedMCEvents const& /*eventsMC*/, + ReducedMCTracks const& tracksMC) + { runPostPrefilterTrackSelection( - assocs, events, tracks, tracksMC); + assocs, events, tracks, tracksMC); } void processSkimmedWithCov( - soa::Join const &assocs, - MyEventsVtxCovSelected const &events, MyBarrelTracksWithCov const &tracks, - ReducedMCEvents const & /*eventsMC*/, ReducedMCTracks const &tracksMC) { + soa::Join const& assocs, + MyEventsVtxCovSelected const& events, MyBarrelTracksWithCov const& tracks, + ReducedMCEvents const& /*eventsMC*/, ReducedMCTracks const& tracksMC) + { runPostPrefilterTrackSelection(assocs, events, tracks, tracksMC); } - void processDummy(MyEvents const &) { + void processDummy(MyEvents const&) + { // do nothing } @@ -2158,7 +2187,7 @@ struct AnalysisSameEventPairing { Produces MCTruthTableEffi; Produces dileptonPolarList; - o2::base::MatLayerCylSet *fLUT = nullptr; + o2::base::MatLayerCylSet* fLUT = nullptr; int fCurrentRun = -1; // needed to detect if the run changed and trigger // update of calibrations etc. @@ -2166,26 +2195,26 @@ struct AnalysisSameEventPairing { struct : ConfigurableGroup { Configurable track{ - "cfgTrackCuts", "jpsiO2MCdebugCuts2", - "Comma separated list of barrel track cuts"}; + "cfgTrackCuts", "jpsiO2MCdebugCuts2", + "Comma separated list of barrel track cuts"}; Configurable muon{"cfgMuonCuts", "", "Comma separated list of muon cuts"}; Configurable pair{ - "cfgPairCuts", "", - "Comma separated list of pair cuts, !!! Use only if you know what you " - "are doing, otherwise leave empty"}; + "cfgPairCuts", "", + "Comma separated list of pair cuts, !!! Use only if you know what you " + "are doing, otherwise leave empty"}; Configurable MCgenAcc{ - "cfgMCGenAccCuts", "", - "Comma separated list of MC generated particles acceptance cuts, !!! " - "Use only if you know what you are doing, otherwise leave empty"}; + "cfgMCGenAccCuts", "", + "Comma separated list of MC generated particles acceptance cuts, !!! " + "Use only if you know what you are doing, otherwise leave empty"}; // TODO: Add pair cuts via JSON } fConfigCuts; Configurable fConfigQA{"cfgQA", false, "If true, fill QA histograms"}; Configurable fConfigAddSEPHistogram{ - "cfgAddSEPHistogram", "", "Comma separated list of histograms"}; + "cfgAddSEPHistogram", "", "Comma separated list of histograms"}; Configurable fConfigAddJSONHistograms{ - "cfgAddJSONHistograms", "", "Histograms in JSON format"}; + "cfgAddJSONHistograms", "", "Histograms in JSON format"}; struct : ConfigurableGroup { Configurable url{"ccdb-url", "http://alice-ccdb.cern.ch", @@ -2198,22 +2227,22 @@ struct AnalysisSameEventPairing { struct : ConfigurableGroup { Configurable flatTables{ - "cfgFlatTables", false, - "Produce a single flat tables with all relevant information of the " - "pairs and single tracks"}; + "cfgFlatTables", false, + "Produce a single flat tables with all relevant information of the " + "pairs and single tracks"}; Configurable polarTables{ - "cfgPolarTables", false, - "Produce tables with dilepton polarization information"}; + "cfgPolarTables", false, + "Produce tables with dilepton polarization information"}; Configurable useKFVertexing{ - "cfgUseKFVertexing", false, - "Use KF Particle for secondary vertex reconstruction (DCAFitter is " - "used by default)"}; + "cfgUseKFVertexing", false, + "Use KF Particle for secondary vertex reconstruction (DCAFitter is " + "used by default)"}; Configurable useAbsDCA{"cfgUseAbsDCA", false, "Use absolute DCA minimization instead of " "chi^2 minimization in secondary vertexing"}; Configurable noCorr{ - "cfgNoCorrFwdProp", false, - "Do not correct for MCS effects in track propagation"}; + "cfgNoCorrFwdProp", false, + "Do not correct for MCS effects in track propagation"}; Configurable collisionSystem{"syst", "pp", "Collision system, pp or PbPb"}; Configurable centerMassEnergy{"energy", 13600, @@ -2222,36 +2251,36 @@ struct AnalysisSameEventPairing { struct : ConfigurableGroup { Configurable genSignals{ - "cfgBarrelMCGenSignals", "", - "Comma separated list of MC signals (generated)"}; + "cfgBarrelMCGenSignals", "", + "Comma separated list of MC signals (generated)"}; Configurable genSignalsJSON{ - "cfgMCGenSignalsJSON", "", - "Additional list of MC signals (generated) via JSON"}; + "cfgMCGenSignalsJSON", "", + "Additional list of MC signals (generated) via JSON"}; Configurable recSignals{ - "cfgBarrelMCRecSignals", "", - "Comma separated list of MC signals (reconstructed)"}; + "cfgBarrelMCRecSignals", "", + "Comma separated list of MC signals (reconstructed)"}; Configurable recSignalsJSON{ - "cfgMCRecSignalsJSON", "", - "Comma separated list of MC signals (reconstructed) via JSON"}; + "cfgMCRecSignalsJSON", "", + "Comma separated list of MC signals (reconstructed) via JSON"}; Configurable emuRecSignals{ - "cfgEmuMCRecSignals", "", - "Comma separated list of MC signals (reconstructed) for e-mu pairs"}; + "cfgEmuMCRecSignals", "", + "Comma separated list of MC signals (reconstructed) for e-mu pairs"}; Configurable emuRecSignalsJSON{ - "cfgEmuMCRecSignalsJSON", "", - "Additional list of MC signals (reconstructed) for e-mu pairs via " - "JSON"}; + "cfgEmuMCRecSignalsJSON", "", + "Additional list of MC signals (reconstructed) for e-mu pairs via " + "JSON"}; Configurable finalStateSignals{ - "cfgBarrelMCFinalStateSignals", "eFromJpsi", - "Comma separated list of MC signals (final state particles)"}; + "cfgBarrelMCFinalStateSignals", "eFromJpsi", + "Comma separated list of MC signals (final state particles)"}; Configurable skimSignalOnly{ - "cfgSkimSignalOnly", false, - "Configurable to select only matched candidates"}; + "cfgSkimSignalOnly", false, + "Configurable to select only matched candidates"}; } fConfigMC; struct : ConfigurableGroup { Configurable fConfigMiniTree{ - "useMiniTree.cfgMiniTree", false, - "Produce a single flat table with minimal information for analysis"}; + "useMiniTree.cfgMiniTree", false, + "Produce a single flat table with minimal information for analysis"}; Configurable fConfigMiniTreeMinMass{"useMiniTree.cfgMiniTreeMinMass", 2, "Min. mass cut for minitree"}; Configurable fConfigMiniTreeMaxMass{"useMiniTree.cfgMiniTreeMaxMass", @@ -2273,7 +2302,7 @@ struct AnalysisSameEventPairing { Filter eventFilter = aod::dqanalysisflags::isEventSelected > static_cast(0); - HistogramManager *fHistMan = nullptr; + HistogramManager* fHistMan = nullptr; // keep histogram class names in maps, so we don't have to buld their names in // the pair loops @@ -2283,21 +2312,21 @@ struct AnalysisSameEventPairing { std::map> fMuonHistNamesMCmatched; std::map> fTrackMuonHistNames; std::map> fTrackMuonHistNamesMCmatched; - std::vector fRecMCSignals; - std::vector fEmuRecMCSignals; - std::vector fGenMCSignals; - std::vector fFinalStateMCSignals; + std::vector fRecMCSignals; + std::vector fEmuRecMCSignals; + std::vector fGenMCSignals; + std::vector fFinalStateMCSignals; std::vector fPairCuts; - std::vector fMCGenAccCuts; + std::vector fMCGenAccCuts; bool fUseMCGenAccCut = false; uint32_t fTrackFilterMask = - 0; // mask for the track cuts required in this task to be applied on the - // barrel cuts produced upstream + 0; // mask for the track cuts required in this task to be applied on the + // barrel cuts produced upstream uint32_t fMuonFilterMask = - 0; // mask for the muon cuts required in this task to be applied on the - // muon cuts produced upstream + 0; // mask for the muon cuts required in this task to be applied on the + // muon cuts produced upstream int fNCutsBarrel = 0; int fNCutsMuon = 0; int fNPairCuts = 0; @@ -2309,16 +2338,17 @@ struct AnalysisSameEventPairing { bool fEnableBarrelMuonMixingHistos = false; Preslice< - soa::Join> - trackAssocsPerCollision = aod::reducedtrack_association::reducedeventId; + soa::Join> + trackAssocsPerCollision = aod::reducedtrack_association::reducedeventId; Preslice> - muonAssocsPerCollision = aod::reducedtrack_association::reducedeventId; + muonAssocsPerCollision = aod::reducedtrack_association::reducedeventId; Configurable fConfigMixingDepth{ - "cfgMixingDepth", 100, "Number of Events stored for event mixing"}; + "cfgMixingDepth", 100, "Number of Events stored for event mixing"}; NoBinningPolicy hashBin; - void init(o2::framework::InitContext &context) { + void init(o2::framework::InitContext& context) + { if (context.mOptions.get("processDummy")) { return; } @@ -2328,17 +2358,17 @@ struct AnalysisSameEventPairing { VarManager::SetDefaultVarNames(); fEnableBarrelHistos = - context.mOptions.get("processAllSkimmed") || - context.mOptions.get("processBarrelOnlySkimmed") || - context.mOptions.get("processBarrelOnlyWithCollSkimmed"); + context.mOptions.get("processAllSkimmed") || + context.mOptions.get("processBarrelOnlySkimmed") || + context.mOptions.get("processBarrelOnlyWithCollSkimmed"); fEnableMuonHistos = - context.mOptions.get("processAllSkimmed") || - context.mOptions.get("processMuonOnlySkimmed") || - context.mOptions.get("processMuonOnlyVertexingSkimmed"); + context.mOptions.get("processAllSkimmed") || + context.mOptions.get("processMuonOnlySkimmed") || + context.mOptions.get("processMuonOnlyVertexingSkimmed"); fEnableBarrelMuonHistos = - context.mOptions.get("processElectronMuonSkimmed"); + context.mOptions.get("processElectronMuonSkimmed"); fEnableBarrelMuonMixingHistos = - context.mOptions.get("processMixingElectronMuonSkimmed"); + context.mOptions.get("processMixingElectronMuonSkimmed"); // Keep track of all the histogram class names to avoid composing strings in // the pairing loop @@ -2348,7 +2378,7 @@ struct AnalysisSameEventPairing { std::unique_ptr objArray(cutNamesStr.Tokenize(",")); for (int icut = 0; icut < objArray->GetEntries(); ++icut) { fPairCuts.push_back( - *dqcuts::GetCompositeCut(objArray->At(icut)->GetName())); + *dqcuts::GetCompositeCut(objArray->At(icut)->GetName())); } } @@ -2357,12 +2387,12 @@ struct AnalysisSameEventPairing { // and make a mask for active cuts (barrel and muon selection tasks may // run more cuts, needed for other analyses) TString trackCutsStr = fConfigCuts.track.value; - TObjArray *objArrayTrackCuts = nullptr; + TObjArray* objArrayTrackCuts = nullptr; if (!trackCutsStr.IsNull()) { objArrayTrackCuts = trackCutsStr.Tokenize(","); } TString muonCutsStr = fConfigCuts.muon.value; - TObjArray *objArrayMuonCuts = nullptr; + TObjArray* objArrayMuonCuts = nullptr; if (!muonCutsStr.IsNull()) { objArrayMuonCuts = muonCutsStr.Tokenize(","); } @@ -2371,8 +2401,8 @@ struct AnalysisSameEventPairing { TString sigNamesStr = fConfigMC.recSignals.value; std::unique_ptr objRecSigArray(sigNamesStr.Tokenize(",")); for (int isig = 0; isig < objRecSigArray->GetEntries(); ++isig) { - MCSignal *sig = o2::aod::dqmcsignals::GetMCSignal( - objRecSigArray->At(isig)->GetName()); + MCSignal* sig = o2::aod::dqmcsignals::GetMCSignal( + objRecSigArray->At(isig)->GetName()); if (sig) { if (sig->GetNProngs() != 2) { // NOTE: 2-prong signals required continue; @@ -2384,9 +2414,9 @@ struct AnalysisSameEventPairing { // Add the MCSignals from the JSON config TString addMCSignalsStr = fConfigMC.recSignalsJSON.value; if (addMCSignalsStr != "") { - std::vector addMCSignals = - dqmcsignals::GetMCSignalsFromJSON(addMCSignalsStr.Data()); - for (auto const &mcIt : addMCSignals) { + std::vector addMCSignals = + dqmcsignals::GetMCSignalsFromJSON(addMCSignalsStr.Data()); + for (auto const& mcIt : addMCSignals) { if (mcIt->GetNProngs() != 2) { // NOTE: only 2 prong signals continue; } @@ -2399,8 +2429,8 @@ struct AnalysisSameEventPairing { TString emuSigNamesStr = fConfigMC.emuRecSignals.value; std::unique_ptr objEmuRecSigArray(emuSigNamesStr.Tokenize(",")); for (int isig = 0; isig < objEmuRecSigArray->GetEntries(); ++isig) { - MCSignal *sig = o2::aod::dqmcsignals::GetMCSignal( - objEmuRecSigArray->At(isig)->GetName()); + MCSignal* sig = o2::aod::dqmcsignals::GetMCSignal( + objEmuRecSigArray->At(isig)->GetName()); if (sig) { if (sig->GetNProngs() != 2) { // NOTE: 2-prong signals required continue; @@ -2410,9 +2440,9 @@ struct AnalysisSameEventPairing { } TString addEmuMCSignalsStr = fConfigMC.emuRecSignalsJSON.value; if (addEmuMCSignalsStr != "") { - std::vector addEmuMCSignals = - dqmcsignals::GetMCSignalsFromJSON(addEmuMCSignalsStr.Data()); - for (auto const &mcIt : addEmuMCSignals) { + std::vector addEmuMCSignals = + dqmcsignals::GetMCSignalsFromJSON(addEmuMCSignalsStr.Data()); + for (auto const& mcIt : addEmuMCSignals) { if (mcIt->GetNProngs() != 2) { continue; } @@ -2431,9 +2461,9 @@ struct AnalysisSameEventPairing { "cfgBarrelTrackCutsJSON", tempCuts, false); TString addTrackCutsStr = tempCuts; if (addTrackCutsStr != "") { - std::vector addTrackCuts = - dqcuts::GetCutsFromJSON(addTrackCutsStr.Data()); - for (auto const &t : addTrackCuts) { + std::vector addTrackCuts = + dqcuts::GetCutsFromJSON(addTrackCutsStr.Data()); + for (auto const& t : addTrackCuts) { tempCutsStr += Form(",%s", t->GetName()); } } @@ -2455,9 +2485,9 @@ struct AnalysisSameEventPairing { if (fEnableBarrelHistos) { // assign the pair hist directories for the current cut std::vector names = { - Form("PairsBarrelSEPM_%s", objArray->At(icut)->GetName()), - Form("PairsBarrelSEPP_%s", objArray->At(icut)->GetName()), - Form("PairsBarrelSEMM_%s", objArray->At(icut)->GetName())}; + Form("PairsBarrelSEPM_%s", objArray->At(icut)->GetName()), + Form("PairsBarrelSEPP_%s", objArray->At(icut)->GetName()), + Form("PairsBarrelSEMM_%s", objArray->At(icut)->GetName())}; if (fConfigQA) { // assign separate hist directories for ambiguous tracks names.push_back(Form("PairsBarrelSEPM_ambiguousInBunch_%s", @@ -2473,7 +2503,7 @@ struct AnalysisSameEventPairing { names.push_back(Form("PairsBarrelSEMM_ambiguousOutOfBunch_%s", objArray->At(icut)->GetName())); } - for (auto const &n : names) { + for (auto const& n : names) { histNames += Form("%s;", n.Data()); } fTrackHistNames[icut] = names; @@ -2486,23 +2516,23 @@ struct AnalysisSameEventPairing { TString pairCutNamesStr = fConfigCuts.pair.value; if (!pairCutNamesStr.IsNull()) { // if pair cuts std::unique_ptr objArrayPair( - pairCutNamesStr.Tokenize(",")); + pairCutNamesStr.Tokenize(",")); fNPairCuts = objArrayPair->GetEntries(); for (int iPairCut = 0; iPairCut < fNPairCuts; ++iPairCut) { // loop over pair cuts names = { - Form("PairsBarrelSEPM_%s_%s", objArray->At(icut)->GetName(), - objArrayPair->At(iPairCut)->GetName()), - Form("PairsBarrelSEPP_%s_%s", objArray->At(icut)->GetName(), - objArrayPair->At(iPairCut)->GetName()), - Form("PairsBarrelSEMM_%s_%s", objArray->At(icut)->GetName(), - objArrayPair->At(iPairCut)->GetName())}; + Form("PairsBarrelSEPM_%s_%s", objArray->At(icut)->GetName(), + objArrayPair->At(iPairCut)->GetName()), + Form("PairsBarrelSEPP_%s_%s", objArray->At(icut)->GetName(), + objArrayPair->At(iPairCut)->GetName()), + Form("PairsBarrelSEMM_%s_%s", objArray->At(icut)->GetName(), + objArrayPair->At(iPairCut)->GetName())}; histNames += Form("%s;%s;%s;", names[0].Data(), names[1].Data(), names[2].Data()); // NOTE: In the numbering scheme for the map key, we use the // number of barrel cuts in the barrel-track selection task fTrackHistNames[fNCutsBarrel + icut * fNPairCuts + iPairCut] = - names; + names; } // end loop (pair cuts) } // end if (pair cuts) @@ -2528,26 +2558,26 @@ struct AnalysisSameEventPairing { objArray->At(icut)->GetName(), sig->GetName())); names.push_back( - Form("PairsBarrelSEPM_ambiguousInBunchCorrectAssoc_%s_%s", - objArray->At(icut)->GetName(), sig->GetName())); + Form("PairsBarrelSEPM_ambiguousInBunchCorrectAssoc_%s_%s", + objArray->At(icut)->GetName(), sig->GetName())); names.push_back(Form( - "PairsBarrelSEPM_ambiguousInBunchIncorrectAssoc_%s_%s", - objArray->At(icut)->GetName(), sig->GetName())); + "PairsBarrelSEPM_ambiguousInBunchIncorrectAssoc_%s_%s", + objArray->At(icut)->GetName(), sig->GetName())); names.push_back( - Form("PairsBarrelSEPM_ambiguousOutOfBunch_%s_%s", - objArray->At(icut)->GetName(), sig->GetName())); + Form("PairsBarrelSEPM_ambiguousOutOfBunch_%s_%s", + objArray->At(icut)->GetName(), sig->GetName())); names.push_back(Form( - "PairsBarrelSEPM_ambiguousOutOfBunchCorrectAssoc_%s_%s", - objArray->At(icut)->GetName(), sig->GetName())); + "PairsBarrelSEPM_ambiguousOutOfBunchCorrectAssoc_%s_%s", + objArray->At(icut)->GetName(), sig->GetName())); names.push_back(Form( - "PairsBarrelSEPM_ambiguousOutOfBunchIncorrectAssoc_%s_%s", - objArray->At(icut)->GetName(), sig->GetName())); + "PairsBarrelSEPM_ambiguousOutOfBunchIncorrectAssoc_%s_%s", + objArray->At(icut)->GetName(), sig->GetName())); } - for (auto const &n : names) { + for (auto const& n : names) { histNames += Form("%s;", n.Data()); } fBarrelHistNamesMCmatched.try_emplace( - icut * fRecMCSignals.size() + isig, names); + icut * fRecMCSignals.size() + isig, names); } // end loop over MC signals } } // end if enableBarrelHistos @@ -2565,9 +2595,9 @@ struct AnalysisSameEventPairing { "cfgMuonCutsJSON", tempCuts, false); TString addMuonCutsStr = tempCuts; if (addMuonCutsStr != "") { - std::vector addMuonCuts = - dqcuts::GetCutsFromJSON(addMuonCutsStr.Data()); - for (auto const &t : addMuonCuts) { + std::vector addMuonCuts = + dqcuts::GetCutsFromJSON(addMuonCutsStr.Data()); + for (auto const& t : addMuonCuts) { tempCutsStr += Form(",%s", t->GetName()); } } @@ -2587,9 +2617,9 @@ struct AnalysisSameEventPairing { if (fEnableMuonHistos) { // assign pair hist directories for each required muon cut std::vector names = { - Form("PairsMuonSEPM_%s", objArray->At(icut)->GetName()), - Form("PairsMuonSEPP_%s", objArray->At(icut)->GetName()), - Form("PairsMuonSEMM_%s", objArray->At(icut)->GetName())}; + Form("PairsMuonSEPM_%s", objArray->At(icut)->GetName()), + Form("PairsMuonSEPP_%s", objArray->At(icut)->GetName()), + Form("PairsMuonSEMM_%s", objArray->At(icut)->GetName())}; if (fConfigQA) { // assign separate hist directories for ambiguous tracks names.push_back(Form("PairsMuonSEPM_ambiguousInBunch_%s", @@ -2605,7 +2635,7 @@ struct AnalysisSameEventPairing { names.push_back(Form("PairsMuonSEMM_ambiguousOutOfBunch_%s", objArray->At(icut)->GetName())); } - for (auto const &n : names) { + for (auto const& n : names) { histNames += Form("%s;", n.Data()); } fMuonHistNames[icut] = names; @@ -2615,21 +2645,21 @@ struct AnalysisSameEventPairing { TString pairCutNamesStr = fConfigCuts.pair.value; if (!pairCutNamesStr.IsNull()) { // if pair cuts std::unique_ptr objArrayPair( - pairCutNamesStr.Tokenize(",")); + pairCutNamesStr.Tokenize(",")); fNPairCuts = objArrayPair->GetEntries(); for (int iPairCut = 0; iPairCut < fNPairCuts; ++iPairCut) { // loop over pair cuts names = { - Form("PairsMuonSEPM_%s_%s", objArray->At(icut)->GetName(), - objArrayPair->At(iPairCut)->GetName()), - Form("PairsMuonSEPP_%s_%s", objArray->At(icut)->GetName(), - objArrayPair->At(iPairCut)->GetName()), - Form("PairsMuonSEMM_%s_%s", objArray->At(icut)->GetName(), - objArrayPair->At(iPairCut)->GetName())}; + Form("PairsMuonSEPM_%s_%s", objArray->At(icut)->GetName(), + objArrayPair->At(iPairCut)->GetName()), + Form("PairsMuonSEPP_%s_%s", objArray->At(icut)->GetName(), + objArrayPair->At(iPairCut)->GetName()), + Form("PairsMuonSEMM_%s_%s", objArray->At(icut)->GetName(), + objArrayPair->At(iPairCut)->GetName())}; histNames += Form("%s;%s;%s;", names[0].Data(), names[1].Data(), names[2].Data()); fMuonHistNames[fNCutsMuon + icut * fNCutsMuon + iPairCut] = - names; + names; } // end loop (pair cuts) } // end if (pair cuts) @@ -2639,12 +2669,12 @@ struct AnalysisSameEventPairing { for (unsigned int isig = 0; isig < fRecMCSignals.size(); isig++) { auto sig = fRecMCSignals.at(isig); names = { - Form("PairsMuonSEPM_%s_%s", objArray->At(icut)->GetName(), - sig->GetName()), - Form("PairsMuonSEPP_%s_%s", objArray->At(icut)->GetName(), - sig->GetName()), - Form("PairsMuonSEMM_%s_%s", objArray->At(icut)->GetName(), - sig->GetName()), + Form("PairsMuonSEPM_%s_%s", objArray->At(icut)->GetName(), + sig->GetName()), + Form("PairsMuonSEPP_%s_%s", objArray->At(icut)->GetName(), + sig->GetName()), + Form("PairsMuonSEMM_%s_%s", objArray->At(icut)->GetName(), + sig->GetName()), }; if (fConfigQA) { names.push_back(Form("PairsMuonSEPMCorrectAssoc_%s_%s", @@ -2657,26 +2687,26 @@ struct AnalysisSameEventPairing { objArray->At(icut)->GetName(), sig->GetName())); names.push_back( - Form("PairsMuonSEPM_ambiguousInBunchCorrectAssoc_%s_%s", - objArray->At(icut)->GetName(), sig->GetName())); + Form("PairsMuonSEPM_ambiguousInBunchCorrectAssoc_%s_%s", + objArray->At(icut)->GetName(), sig->GetName())); names.push_back( - Form("PairsMuonSEPM_ambiguousInBunchIncorrectAssoc_%s_%s", - objArray->At(icut)->GetName(), sig->GetName())); + Form("PairsMuonSEPM_ambiguousInBunchIncorrectAssoc_%s_%s", + objArray->At(icut)->GetName(), sig->GetName())); names.push_back( - Form("PairsMuonSEPM_ambiguousOutOfBunch_%s_%s", - objArray->At(icut)->GetName(), sig->GetName())); + Form("PairsMuonSEPM_ambiguousOutOfBunch_%s_%s", + objArray->At(icut)->GetName(), sig->GetName())); names.push_back(Form( - "PairsMuonSEPM_ambiguousOutOfBunchCorrectAssoc_%s_%s", - objArray->At(icut)->GetName(), sig->GetName())); + "PairsMuonSEPM_ambiguousOutOfBunchCorrectAssoc_%s_%s", + objArray->At(icut)->GetName(), sig->GetName())); names.push_back(Form( - "PairsMuonSEPM_ambiguousOutOfBunchIncorrectAssoc_%s_%s", - objArray->At(icut)->GetName(), sig->GetName())); + "PairsMuonSEPM_ambiguousOutOfBunchIncorrectAssoc_%s_%s", + objArray->At(icut)->GetName(), sig->GetName())); } - for (auto const &n : names) { + for (auto const& n : names) { histNames += Form("%s;", n.Data()); } fMuonHistNamesMCmatched.try_emplace( - icut * fRecMCSignals.size() + isig, names); + icut * fRecMCSignals.size() + isig, names); } // end loop over MC signals } } @@ -2698,9 +2728,9 @@ struct AnalysisSameEventPairing { tempBarrelCutsStr, false); TString barrelCutsJSONStr = tempBarrelCutsStr; if (barrelCutsJSONStr != "") { - std::vector addCuts = - dqcuts::GetCutsFromJSON(barrelCutsJSONStr.Data()); - for (auto const &t : addCuts) { + std::vector addCuts = + dqcuts::GetCutsFromJSON(barrelCutsJSONStr.Data()); + for (auto const& t : addCuts) { barrelCutsAll += Form(",%s", t->GetName()); } } @@ -2715,9 +2745,9 @@ struct AnalysisSameEventPairing { false); TString muonCutsJSONStr = tempMuonCutsStr; if (muonCutsJSONStr != "") { - std::vector addCuts = - dqcuts::GetCutsFromJSON(muonCutsJSONStr.Data()); - for (auto const &t : addCuts) { + std::vector addCuts = + dqcuts::GetCutsFromJSON(muonCutsJSONStr.Data()); + for (auto const& t : addCuts) { muonCutsAll += Form(",%s", t->GetName()); } } @@ -2725,10 +2755,10 @@ struct AnalysisSameEventPairing { TString pairCutNamesStr = fConfigCuts.pair.value; std::unique_ptr objArrayPair( - pairCutNamesStr.IsNull() ? nullptr : pairCutNamesStr.Tokenize(",")); + pairCutNamesStr.IsNull() ? nullptr : pairCutNamesStr.Tokenize(",")); int nPairCuts = (objArrayPair && objArrayPair->GetEntries() > 0) - ? objArrayPair->GetEntries() - : 1; + ? objArrayPair->GetEntries() + : 1; for (int iTrack = 0; iTrack < objArrayBarrel->GetEntries(); ++iTrack) { TString trackCutName = objArrayBarrel->At(iTrack)->GetName(); @@ -2746,12 +2776,12 @@ struct AnalysisSameEventPairing { // base (no pair-cut) entry std::vector names = { - Form("PairsEleMuSEPM_%s_%s", trackCutName.Data(), - muonCutName.Data()), - Form("PairsEleMuSEPP_%s_%s", trackCutName.Data(), - muonCutName.Data()), - Form("PairsEleMuSEMM_%s_%s", trackCutName.Data(), - muonCutName.Data())}; + Form("PairsEleMuSEPM_%s_%s", trackCutName.Data(), + muonCutName.Data()), + Form("PairsEleMuSEPP_%s_%s", trackCutName.Data(), + muonCutName.Data()), + Form("PairsEleMuSEMM_%s_%s", trackCutName.Data(), + muonCutName.Data())}; histNames += Form("%s;%s;%s;", names[0].Data(), names[1].Data(), names[2].Data()); if (fEnableBarrelMuonMixingHistos) { @@ -2826,22 +2856,22 @@ struct AnalysisSameEventPairing { trackCutName.Data(), muonCutName.Data(), sig->GetName())); names.push_back(Form( - "PairsEleMuSEPM_ambiguousInBunchCorrectAssoc_%s_%s_%s", - trackCutName.Data(), muonCutName.Data(), sig->GetName())); + "PairsEleMuSEPM_ambiguousInBunchCorrectAssoc_%s_%s_%s", + trackCutName.Data(), muonCutName.Data(), sig->GetName())); names.push_back(Form( - "PairsEleMuSEPM_ambiguousInBunchIncorrectAssoc_%s_%s_%s", - trackCutName.Data(), muonCutName.Data(), sig->GetName())); + "PairsEleMuSEPM_ambiguousInBunchIncorrectAssoc_%s_%s_%s", + trackCutName.Data(), muonCutName.Data(), sig->GetName())); names.push_back(Form( - "PairsEleMuSEPM_ambiguousOutOfBunch_%s_%s_%s", - trackCutName.Data(), muonCutName.Data(), sig->GetName())); + "PairsEleMuSEPM_ambiguousOutOfBunch_%s_%s_%s", + trackCutName.Data(), muonCutName.Data(), sig->GetName())); names.push_back(Form( - "PairsEleMuSEPM_ambiguousOutOfBunchCorrectAssoc_%s_%s_%s", - trackCutName.Data(), muonCutName.Data(), sig->GetName())); + "PairsEleMuSEPM_ambiguousOutOfBunchCorrectAssoc_%s_%s_%s", + trackCutName.Data(), muonCutName.Data(), sig->GetName())); names.push_back(Form( - "PairsEleMuSEPM_ambiguousOutOfBunchIncorrectAssoc_%s_%s_%s", - trackCutName.Data(), muonCutName.Data(), sig->GetName())); + "PairsEleMuSEPM_ambiguousOutOfBunchIncorrectAssoc_%s_%s_%s", + trackCutName.Data(), muonCutName.Data(), sig->GetName())); } - for (auto const &n : names) { + for (auto const& n : names) { histNames += Form("%s;", n.Data()); } int index = iTrack * (fNCutsMuon * fEmuRecMCSignals.size()) + @@ -2858,8 +2888,8 @@ struct AnalysisSameEventPairing { if (!mcgenCutsStr.IsNull()) { std::unique_ptr objArray(mcgenCutsStr.Tokenize(",")); for (int icut = 0; icut < objArray->GetEntries(); ++icut) { - AnalysisCut *cut = - dqcuts::GetAnalysisCut(objArray->At(icut)->GetName()); + AnalysisCut* cut = + dqcuts::GetAnalysisCut(objArray->At(icut)->GetName()); if (cut != nullptr) { fMCGenAccCuts.push_back(cut); } @@ -2873,8 +2903,8 @@ struct AnalysisSameEventPairing { TString sigGenNamesStr = fConfigMC.genSignals.value; std::unique_ptr objGenSigArray(sigGenNamesStr.Tokenize(",")); for (int isig = 0; isig < objGenSigArray->GetEntries(); isig++) { - MCSignal *sig = o2::aod::dqmcsignals::GetMCSignal( - objGenSigArray->At(isig)->GetName()); + MCSignal* sig = o2::aod::dqmcsignals::GetMCSignal( + objGenSigArray->At(isig)->GetName()); if (sig) { fGenMCSignals.push_back(sig); } @@ -2883,9 +2913,9 @@ struct AnalysisSameEventPairing { // Add the MCSignals from the JSON config TString addMCSignalsGenStr = fConfigMC.genSignalsJSON.value; if (addMCSignalsGenStr != "") { - std::vector addMCSignals = - dqmcsignals::GetMCSignalsFromJSON(addMCSignalsGenStr.Data()); - for (auto const &mcIt : addMCSignals) { + std::vector addMCSignals = + dqmcsignals::GetMCSignalsFromJSON(addMCSignalsGenStr.Data()); + for (auto const& mcIt : addMCSignals) { if (mcIt->GetNProngs() > 2) { // NOTE: only 2 prong signals continue; } @@ -2896,22 +2926,22 @@ struct AnalysisSameEventPairing { // define final state MC signals TString sigFinalStateNamesStr = fConfigMC.finalStateSignals.value; std::unique_ptr objFinalStateSigArray( - sigFinalStateNamesStr.Tokenize(",")); + sigFinalStateNamesStr.Tokenize(",")); for (int isig = 0; isig < objFinalStateSigArray->GetEntries(); isig++) { - MCSignal *sig = o2::aod::dqmcsignals::GetMCSignal( - objFinalStateSigArray->At(isig)->GetName()); + MCSignal* sig = o2::aod::dqmcsignals::GetMCSignal( + objFinalStateSigArray->At(isig)->GetName()); if (sig) { fFinalStateMCSignals.push_back(sig); } } if (isMCGen) { - for (auto const &sig : fGenMCSignals) { + for (auto const& sig : fGenMCSignals) { if (sig->GetNProngs() == 1) { histNames += - Form("MCTruthGen_%s;", - sig->GetName()); // TODO: Add these names to a std::vector to - // avoid using Form in the process function + Form("MCTruthGen_%s;", + sig->GetName()); // TODO: Add these names to a std::vector to + // avoid using Form in the process function histNames += Form("MCTruthGenSel_%s;", sig->GetName()); } else if (sig->GetNProngs() == 2) { histNames += Form("MCTruthGenPair_%s;", sig->GetName()); @@ -2922,7 +2952,7 @@ struct AnalysisSameEventPairing { // for these pair level signals, also add histograms for each MCgenAcc // cut if specified if (fUseMCGenAccCut) { - for (auto const &cut : fMCGenAccCuts) { + for (auto const& cut : fMCGenAccCuts) { histNames += Form("MCTruthGenPairSel_%s_%s;", sig->GetName(), cut->GetName()); histNames += Form("MCTruthGenPseudoPolPairSel_%s_%s;", @@ -2943,7 +2973,7 @@ struct AnalysisSameEventPairing { VarManager::SetupFwdDCAFitterNoCorr(); } else { fLUT = o2::base::MatLayerCylSet::rectifyPtrFromFile( - fCCDB->get(fConfigCCDB.lutPath)); + fCCDB->get(fConfigCCDB.lutPath)); VarManager::SetupMatLUTFwdDCAFitter(fLUT); } @@ -2953,25 +2983,26 @@ struct AnalysisSameEventPairing { dqefficiency_helpers::varUnits()); VarManager::SetCollisionSystem( - (TString)fConfigOptions.collisionSystem, - fConfigOptions.centerMassEnergy); // set collision system and center of - // mass energy + (TString)fConfigOptions.collisionSystem, + fConfigOptions.centerMassEnergy); // set collision system and center of + // mass energy DefineHistograms( - fHistMan, histNames.Data(), - fConfigAddSEPHistogram.value.data()); // define all histograms + fHistMan, histNames.Data(), + fConfigAddSEPHistogram.value.data()); // define all histograms dqhistograms::AddHistogramsFromJSON( - fHistMan, - fConfigAddJSONHistograms.value.c_str()); // ad-hoc histograms via JSON + fHistMan, + fConfigAddJSONHistograms.value.c_str()); // ad-hoc histograms via JSON VarManager::SetUseVars( - fHistMan->GetUsedVars()); // provide the list of required variables so - // that VarManager knows what to fill + fHistMan->GetUsedVars()); // provide the list of required variables so + // that VarManager knows what to fill fOutputList.setObject(fHistMan->GetMainHistogramList()); } - void initParamsFromCCDB(uint64_t timestamp, bool withTwoProngFitter = true) { + void initParamsFromCCDB(uint64_t timestamp, bool withTwoProngFitter = true) + { auto grpmag = fCCDB->getForTimeStamp( - fConfigCCDB.grpMagPath, timestamp); + fConfigCCDB.grpMagPath, timestamp); float magField = 0.0; if (grpmag != nullptr) { magField = grpmag->getNominalL3Field(); @@ -2984,19 +3015,19 @@ struct AnalysisSameEventPairing { VarManager::SetupTwoProngKFParticle(magField); } else { VarManager::SetupTwoProngDCAFitter( - magField, true, 200.0f, 4.0f, 1.0e-3f, 0.9f, - fConfigOptions.useAbsDCA - .value); // TODO: get these parameters from Configurables + magField, true, 200.0f, 4.0f, 1.0e-3f, 0.9f, + fConfigOptions.useAbsDCA + .value); // TODO: get these parameters from Configurables VarManager::SetupTwoProngFwdDCAFitter(magField, true, 200.0f, 1.0e-3f, 0.9f, fConfigOptions.useAbsDCA.value); } } else { VarManager::SetupTwoProngDCAFitter( - magField, true, 200.0f, 4.0f, 1.0e-3f, 0.9f, - fConfigOptions.useAbsDCA - .value); // needed because take in varmanager Bz from - // fgFitterTwoProngBarrel for PhiV calculations + magField, true, 200.0f, 4.0f, 1.0e-3f, 0.9f, + fConfigOptions.useAbsDCA + .value); // needed because take in varmanager Bz from + // fgFitterTwoProngBarrel for PhiV calculations } } @@ -3006,10 +3037,11 @@ struct AnalysisSameEventPairing { uint32_t TTrackFillMap, typename TEvents, typename TTrackAssocs, typename TTracks> void - runSameEventPairing(TEvents const &events, Preslice &preslice, - TTrackAssocs const &assocs, TTracks const & /*tracks*/, - ReducedMCEvents const & /*mcEvents*/, - ReducedMCTracks const &mcTracks) { + runSameEventPairing(TEvents const& events, Preslice& preslice, + TTrackAssocs const& assocs, TTracks const& /*tracks*/, + ReducedMCEvents const& /*mcEvents*/, + ReducedMCTracks const& mcTracks) + { if (events.size() == 0) { LOG(warning) << "No events in this TF, going to the next one ..."; return; @@ -3040,11 +3072,11 @@ struct AnalysisSameEventPairing { // estimate reserved size int64_t reserveSize = 0; int64_t reserveSizeGen = mcTracks.size(); - for (auto const &event : events) { + for (auto const& event : events) { if (event.isEventSelected_bit(0)) { auto groupedAssocs = assocs.sliceBy(preslice, event.globalIndex()); size_t nGood = 0; - for (auto const &t : groupedAssocs) { + for (auto const& t : groupedAssocs) { if constexpr (TPairType == VarManager::kDecayToEE) { if (t.isBarrelSelected_raw()) { nGood++; @@ -3078,15 +3110,15 @@ struct AnalysisSameEventPairing { } constexpr bool eventHasQvector = - ((TEventFillMap & VarManager::ObjTypes::ReducedEventQvector) > 0); + ((TEventFillMap & VarManager::ObjTypes::ReducedEventQvector) > 0); constexpr bool trackHasCov = - ((TTrackFillMap & VarManager::ObjTypes::ReducedTrackBarrelCov) > 0); + ((TTrackFillMap & VarManager::ObjTypes::ReducedTrackBarrelCov) > 0); - for (auto const &event : events) { + for (auto const& event : events) { if (!event.has_reducedMCevent() || !event.isEventSelected_bit( - 0)) { // condition on reducedMCevent to avoid rec. events with no - // generated event + 0)) { // condition on reducedMCevent to avoid rec. events with no + // generated event continue; } uint8_t evSel = event.isEventSelected_raw(); @@ -3095,21 +3127,21 @@ struct AnalysisSameEventPairing { VarManager::FillEvent(event, dqefficiency_helpers::varValues()); VarManager::FillEvent( - event.reducedMCevent(), dqefficiency_helpers::varValues()); + event.reducedMCevent(), dqefficiency_helpers::varValues()); auto groupedAssocs = assocs.sliceBy(preslice, event.globalIndex()); if (groupedAssocs.size() == 0) { continue; } - for (auto const &[a1, a2] : + for (auto const& [a1, a2] : o2::soa::combinations(groupedAssocs, groupedAssocs)) { if constexpr (TPairType == VarManager::kDecayToEE) { twoTrackFilter = - a1.isBarrelSelected_raw() & a2.isBarrelSelected_raw() & - a1.isBarrelSelectedPrefilter_raw() & - a2.isBarrelSelectedPrefilter_raw() & fTrackFilterMask; + a1.isBarrelSelected_raw() & a2.isBarrelSelected_raw() & + a1.isBarrelSelectedPrefilter_raw() & + a2.isBarrelSelectedPrefilter_raw() & fTrackFilterMask; if (!twoTrackFilter) { // the tracks must have at least one filter bit // in common to continue @@ -3183,95 +3215,95 @@ struct AnalysisSameEventPairing { } if constexpr (trackHasCov && TTwoProngFitter) { dielectronsExtraList( - t1.globalIndex(), t2.globalIndex(), - VarManager::fgValues[VarManager::kVertexingTauzProjected], - VarManager::fgValues[VarManager::kVertexingLzProjected], - VarManager::fgValues[VarManager::kVertexingLxyProjected]); + t1.globalIndex(), t2.globalIndex(), + VarManager::fgValues[VarManager::kVertexingTauzProjected], + VarManager::fgValues[VarManager::kVertexingLzProjected], + VarManager::fgValues[VarManager::kVertexingLxyProjected]); if constexpr ((TTrackFillMap & VarManager::ObjTypes::ReducedTrackCollInfo) > 0) { if (fConfigOptions.flatTables.value && t1.has_reducedMCTrack() && t2.has_reducedMCTrack()) { dielectronAllList( - VarManager::fgValues[VarManager::kMass], - VarManager::fgValues[VarManager::kPt], - VarManager::fgValues[VarManager::kEta], - VarManager::fgValues[VarManager::kPhi], - t1.sign() + t2.sign(), twoTrackFilter, mcDecision, - t1.pt(), t1.eta(), t1.phi(), t1.itsClusterMap(), - t1.itsChi2NCl(), t1.tpcNClsCrossedRows(), - t1.tpcNClsFound(), t1.tpcChi2NCl(), t1.dcaXY(), t1.dcaZ(), - t1.tpcSignal(), t1.tpcNSigmaEl(), t1.tpcNSigmaPi(), - t1.tpcNSigmaPr(), t1.beta(), t1.tofNSigmaEl(), - t1.tofNSigmaPi(), t1.tofNSigmaPr(), t2.pt(), t2.eta(), - t2.phi(), t2.itsClusterMap(), t2.itsChi2NCl(), - t2.tpcNClsCrossedRows(), t2.tpcNClsFound(), - t2.tpcChi2NCl(), t2.dcaXY(), t2.dcaZ(), t2.tpcSignal(), - t2.tpcNSigmaEl(), t2.tpcNSigmaPi(), t2.tpcNSigmaPr(), - t2.beta(), t2.tofNSigmaEl(), t2.tofNSigmaPi(), - t2.tofNSigmaPr(), - VarManager::fgValues[VarManager::kKFTrack0DCAxyz], - VarManager::fgValues[VarManager::kKFTrack1DCAxyz], - VarManager::fgValues[VarManager::kKFDCAxyzBetweenProngs], - VarManager::fgValues[VarManager::kKFTrack0DCAxy], - VarManager::fgValues[VarManager::kKFTrack1DCAxy], - VarManager::fgValues[VarManager::kKFDCAxyBetweenProngs], - VarManager::fgValues - [VarManager::kKFTrack0DeviationFromPV], - VarManager::fgValues - [VarManager::kKFTrack1DeviationFromPV], - VarManager::fgValues - [VarManager::kKFTrack0DeviationxyFromPV], - VarManager::fgValues - [VarManager::kKFTrack1DeviationxyFromPV], - VarManager::fgValues[VarManager::kKFMass], - VarManager::fgValues[VarManager::kKFChi2OverNDFGeo], - VarManager::fgValues[VarManager::kVertexingLxyz], - VarManager::fgValues[VarManager::kVertexingLxyzOverErr], - VarManager::fgValues[VarManager::kVertexingLxy], - VarManager::fgValues[VarManager::kVertexingLxyOverErr], - VarManager::fgValues[VarManager::kVertexingTauxy], - VarManager::fgValues[VarManager::kVertexingTauxyErr], - VarManager::fgValues[VarManager::kKFCosPA], - VarManager::fgValues[VarManager::kKFJpsiDCAxyz], - VarManager::fgValues[VarManager::kKFJpsiDCAxy], - VarManager::fgValues[VarManager::kKFPairDeviationFromPV], - VarManager::fgValues - [VarManager::kKFPairDeviationxyFromPV], - VarManager::fgValues[VarManager::kKFMassGeoTop], - VarManager::fgValues[VarManager::kKFChi2OverNDFGeoTop], - VarManager::fgValues[VarManager::kVertexingTauzProjected], - VarManager::fgValues - [VarManager::kVertexingTauxyProjected], - VarManager::fgValues[VarManager::kVertexingLzProjected], - VarManager::fgValues[VarManager::kVertexingLxyProjected]); + VarManager::fgValues[VarManager::kMass], + VarManager::fgValues[VarManager::kPt], + VarManager::fgValues[VarManager::kEta], + VarManager::fgValues[VarManager::kPhi], + t1.sign() + t2.sign(), twoTrackFilter, mcDecision, + t1.pt(), t1.eta(), t1.phi(), t1.itsClusterMap(), + t1.itsChi2NCl(), t1.tpcNClsCrossedRows(), + t1.tpcNClsFound(), t1.tpcChi2NCl(), t1.dcaXY(), t1.dcaZ(), + t1.tpcSignal(), t1.tpcNSigmaEl(), t1.tpcNSigmaPi(), + t1.tpcNSigmaPr(), t1.beta(), t1.tofNSigmaEl(), + t1.tofNSigmaPi(), t1.tofNSigmaPr(), t2.pt(), t2.eta(), + t2.phi(), t2.itsClusterMap(), t2.itsChi2NCl(), + t2.tpcNClsCrossedRows(), t2.tpcNClsFound(), + t2.tpcChi2NCl(), t2.dcaXY(), t2.dcaZ(), t2.tpcSignal(), + t2.tpcNSigmaEl(), t2.tpcNSigmaPi(), t2.tpcNSigmaPr(), + t2.beta(), t2.tofNSigmaEl(), t2.tofNSigmaPi(), + t2.tofNSigmaPr(), + VarManager::fgValues[VarManager::kKFTrack0DCAxyz], + VarManager::fgValues[VarManager::kKFTrack1DCAxyz], + VarManager::fgValues[VarManager::kKFDCAxyzBetweenProngs], + VarManager::fgValues[VarManager::kKFTrack0DCAxy], + VarManager::fgValues[VarManager::kKFTrack1DCAxy], + VarManager::fgValues[VarManager::kKFDCAxyBetweenProngs], + VarManager::fgValues + [VarManager::kKFTrack0DeviationFromPV], + VarManager::fgValues + [VarManager::kKFTrack1DeviationFromPV], + VarManager::fgValues + [VarManager::kKFTrack0DeviationxyFromPV], + VarManager::fgValues + [VarManager::kKFTrack1DeviationxyFromPV], + VarManager::fgValues[VarManager::kKFMass], + VarManager::fgValues[VarManager::kKFChi2OverNDFGeo], + VarManager::fgValues[VarManager::kVertexingLxyz], + VarManager::fgValues[VarManager::kVertexingLxyzOverErr], + VarManager::fgValues[VarManager::kVertexingLxy], + VarManager::fgValues[VarManager::kVertexingLxyOverErr], + VarManager::fgValues[VarManager::kVertexingTauxy], + VarManager::fgValues[VarManager::kVertexingTauxyErr], + VarManager::fgValues[VarManager::kKFCosPA], + VarManager::fgValues[VarManager::kKFJpsiDCAxyz], + VarManager::fgValues[VarManager::kKFJpsiDCAxy], + VarManager::fgValues[VarManager::kKFPairDeviationFromPV], + VarManager::fgValues + [VarManager::kKFPairDeviationxyFromPV], + VarManager::fgValues[VarManager::kKFMassGeoTop], + VarManager::fgValues[VarManager::kKFChi2OverNDFGeoTop], + VarManager::fgValues[VarManager::kVertexingTauzProjected], + VarManager::fgValues + [VarManager::kVertexingTauxyProjected], + VarManager::fgValues[VarManager::kVertexingLzProjected], + VarManager::fgValues[VarManager::kVertexingLxyProjected]); } if (fConfigOptions.polarTables.value && t1.has_reducedMCTrack() && t2.has_reducedMCTrack()) { dileptonPolarList( - VarManager::fgValues[VarManager::kMass], - VarManager::fgValues[VarManager::kPt], - VarManager::fgValues[VarManager::kEta], - t1.sign() + t2.sign(), twoTrackFilter, - VarManager::fgValues[VarManager::kCosThetaHE], - VarManager::fgValues[VarManager::kPhiHE], - VarManager::fgValues[VarManager::kPhiTildeHE], - VarManager::fgValues[VarManager::kCosThetaCS], - VarManager::fgValues[VarManager::kPhiCS], - VarManager::fgValues[VarManager::kPhiTildeCS], - VarManager::fgValues[VarManager::kCosThetaPP], - VarManager::fgValues[VarManager::kPhiPP], - VarManager::fgValues[VarManager::kPhiTildePP], - VarManager::fgValues[VarManager::kCosThetaRM], - VarManager::fgValues[VarManager::kCosThetaStarTPC], - VarManager::fgValues[VarManager::kCosThetaStarFT0A], - VarManager::fgValues[VarManager::kCosThetaStarFT0C], - VarManager::fgValues[VarManager::kCosThetaStarRandom]); + VarManager::fgValues[VarManager::kMass], + VarManager::fgValues[VarManager::kPt], + VarManager::fgValues[VarManager::kEta], + t1.sign() + t2.sign(), twoTrackFilter, + VarManager::fgValues[VarManager::kCosThetaHE], + VarManager::fgValues[VarManager::kPhiHE], + VarManager::fgValues[VarManager::kPhiTildeHE], + VarManager::fgValues[VarManager::kCosThetaCS], + VarManager::fgValues[VarManager::kPhiCS], + VarManager::fgValues[VarManager::kPhiTildeCS], + VarManager::fgValues[VarManager::kCosThetaPP], + VarManager::fgValues[VarManager::kPhiPP], + VarManager::fgValues[VarManager::kPhiTildePP], + VarManager::fgValues[VarManager::kCosThetaRM], + VarManager::fgValues[VarManager::kCosThetaStarTPC], + VarManager::fgValues[VarManager::kCosThetaStarFT0A], + VarManager::fgValues[VarManager::kCosThetaStarFT0C], + VarManager::fgValues[VarManager::kCosThetaStarRandom]); } } } } constexpr bool eventHasVtxCovForTable = - ((TEventFillMap & VarManager::ObjTypes::ReducedEventVtxCov) > 0); + ((TEventFillMap & VarManager::ObjTypes::ReducedEventVtxCov) > 0); if constexpr ((TTrackFillMap & VarManager::ObjTypes::ReducedTrackBarrelPID) > 0 && trackHasCov && TTwoProngFitter && @@ -3281,52 +3313,52 @@ struct AnalysisSameEventPairing { // pointing-angle variables, so they would be stale -> skip the pair if (t1.sign() * t2.sign() < 0 && mcDecision > 0) { const bool ambiInBunch = - (twoTrackFilter & (static_cast(1) << 28)) || - (twoTrackFilter & (static_cast(1) << 29)); + (twoTrackFilter & (static_cast(1) << 28)) || + (twoTrackFilter & (static_cast(1) << 29)); const bool ambiOutOfBunch = - (twoTrackFilter & (static_cast(1) << 30)) || - (twoTrackFilter & (static_cast(1) << 31)); + (twoTrackFilter & (static_cast(1) << 30)) || + (twoTrackFilter & (static_cast(1) << 31)); PromptNonPromptSepTable( - twoTrackFilter, mcDecision, - VarManager::fgValues[VarManager::kMass], - VarManager::fgValues[VarManager::kPt], - VarManager::fgValues[VarManager::kEta], - VarManager::fgValues[VarManager::kRap], - VarManager::fgValues[VarManager::kPhi], - VarManager::fgValues[VarManager::kVertexingTauxyProjected], - VarManager::fgValues - [VarManager::kVertexingTauxyProjectedPoleJPsiMass], - VarManager::fgValues[VarManager::kVertexingTauzProjected], - VarManager::fgValues - [VarManager:: - kVertexingTauxyProjectedPoleJPsiMassRecalculatePV], - VarManager::fgValues[VarManager::kVertexingTauxyErr], - VarManager::fgValues[VarManager::kVertexingTauzErr], - VarManager::fgValues[VarManager::kVertexingLxyProjected], - VarManager::fgValues[VarManager::kVertexingLxyOverErr], - VarManager::fgValues[VarManager::kVertexingLxyz], - VarManager::fgValues[VarManager::kVertexingLxyzOverErr], - VarManager::fgValues[VarManager::kVertexingChi2PCA], - VarManager::fgValues[VarManager::kCosPointingAngle], - VarManager::fgValues[VarManager::kVtxX], - VarManager::fgValues[VarManager::kVtxY], - VarManager::fgValues[VarManager::kVtxZ], t1.pt(), t1.eta(), - VarManager::fgValues[VarManager::kDCAxy1], - VarManager::fgValues[VarManager::kDCAz1], - VarManager::fgValues[VarManager::kDCAxyOverSig1], - VarManager::fgValues[VarManager::kDCAzOverSig1], - VarManager::fgValues[VarManager::kITSclusterMap1], - t1.itsChi2NCl(), t2.pt(), t2.eta(), - VarManager::fgValues[VarManager::kDCAxy2], - VarManager::fgValues[VarManager::kDCAz2], - VarManager::fgValues[VarManager::kDCAxyOverSig2], - VarManager::fgValues[VarManager::kDCAzOverSig2], - VarManager::fgValues[VarManager::kITSclusterMap2], - t2.itsChi2NCl(), ambiInBunch, ambiOutOfBunch, - isCorrectAssoc_leg1 && isCorrectAssoc_leg2, - VarManager::fgValues[VarManager::kMultFT0C], - VarManager::fgValues[VarManager::kCentFT0C], - VarManager::fgValues[VarManager::kVtxNcontribReal]); + twoTrackFilter, mcDecision, + VarManager::fgValues[VarManager::kMass], + VarManager::fgValues[VarManager::kPt], + VarManager::fgValues[VarManager::kEta], + VarManager::fgValues[VarManager::kRap], + VarManager::fgValues[VarManager::kPhi], + VarManager::fgValues[VarManager::kVertexingTauxyProjected], + VarManager::fgValues + [VarManager::kVertexingTauxyProjectedPoleJPsiMass], + VarManager::fgValues[VarManager::kVertexingTauzProjected], + VarManager::fgValues + [VarManager:: + kVertexingTauxyProjectedPoleJPsiMassRecalculatePV], + VarManager::fgValues[VarManager::kVertexingTauxyErr], + VarManager::fgValues[VarManager::kVertexingTauzErr], + VarManager::fgValues[VarManager::kVertexingLxyProjected], + VarManager::fgValues[VarManager::kVertexingLxyOverErr], + VarManager::fgValues[VarManager::kVertexingLxyz], + VarManager::fgValues[VarManager::kVertexingLxyzOverErr], + VarManager::fgValues[VarManager::kVertexingChi2PCA], + VarManager::fgValues[VarManager::kCosPointingAngle], + VarManager::fgValues[VarManager::kVtxX], + VarManager::fgValues[VarManager::kVtxY], + VarManager::fgValues[VarManager::kVtxZ], t1.pt(), t1.eta(), + VarManager::fgValues[VarManager::kDCAxy1], + VarManager::fgValues[VarManager::kDCAz1], + VarManager::fgValues[VarManager::kDCAxyOverSig1], + VarManager::fgValues[VarManager::kDCAzOverSig1], + VarManager::fgValues[VarManager::kITSclusterMap1], + t1.itsChi2NCl(), t2.pt(), t2.eta(), + VarManager::fgValues[VarManager::kDCAxy2], + VarManager::fgValues[VarManager::kDCAz2], + VarManager::fgValues[VarManager::kDCAxyOverSig2], + VarManager::fgValues[VarManager::kDCAzOverSig2], + VarManager::fgValues[VarManager::kITSclusterMap2], + t2.itsChi2NCl(), ambiInBunch, ambiOutOfBunch, + isCorrectAssoc_leg1 && isCorrectAssoc_leg2, + VarManager::fgValues[VarManager::kMultFT0C], + VarManager::fgValues[VarManager::kCentFT0C], + VarManager::fgValues[VarManager::kVtxNcontribReal]); } } } @@ -3417,47 +3449,47 @@ struct AnalysisSameEventPairing { if (fConfigOptions.flatTables.value && t1.has_reducedMCTrack() && t2.has_reducedMCTrack()) { dimuonAllList( - event.posX(), event.posY(), event.posZ(), event.numContrib(), - event.selection_raw(), evSel, event.reducedMCevent().mcPosX(), - event.reducedMCevent().mcPosY(), - event.reducedMCevent().mcPosZ(), - VarManager::fgValues[VarManager::kMass], mcDecision, - VarManager::fgValues[VarManager::kPt], - VarManager::fgValues[VarManager::kEta], - VarManager::fgValues[VarManager::kPhi], t1.sign() + t2.sign(), - VarManager::fgValues[VarManager::kVertexingChi2PCA], - VarManager::fgValues[VarManager::kVertexingTauz], - VarManager::fgValues[VarManager::kVertexingTauzErr], - VarManager::fgValues[VarManager::kVertexingTauxy], - VarManager::fgValues[VarManager::kVertexingTauxyErr], - VarManager::fgValues[VarManager::kCosPointingAngle], - VarManager::fgValues[VarManager::kPt1], - VarManager::fgValues[VarManager::kEta1], - VarManager::fgValues[VarManager::kPhi1], t1.sign(), - VarManager::fgValues[VarManager::kPt2], - VarManager::fgValues[VarManager::kEta2], - VarManager::fgValues[VarManager::kPhi2], t2.sign(), - t1.fwdDcaX(), t1.fwdDcaY(), t2.fwdDcaX(), t2.fwdDcaY(), - t1.mcMask(), t2.mcMask(), t1.chi2MatchMCHMID(), - t2.chi2MatchMCHMID(), t1.chi2MatchMCHMFT(), - t2.chi2MatchMCHMFT(), t1.chi2(), t2.chi2(), - t1.reducedMCTrack().pt(), t1.reducedMCTrack().eta(), - t1.reducedMCTrack().phi(), t1.reducedMCTrack().e(), - t2.reducedMCTrack().pt(), t2.reducedMCTrack().eta(), - t2.reducedMCTrack().phi(), t2.reducedMCTrack().e(), - t1.reducedMCTrack().vx(), t1.reducedMCTrack().vy(), - t1.reducedMCTrack().vz(), t1.reducedMCTrack().vt(), - t2.reducedMCTrack().vx(), t2.reducedMCTrack().vy(), - t2.reducedMCTrack().vz(), t2.reducedMCTrack().vt(), - (twoTrackFilter & (static_cast(1) << 28)) || - (twoTrackFilter & (static_cast(1) << 29)), - (twoTrackFilter & (static_cast(1) << 30)) || - (twoTrackFilter & (static_cast(1) << 31)), - isCorrectAssoc_leg1, isCorrectAssoc_leg2, -999.0, -999.0, - -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, - -999.0, VarManager::fgValues[VarManager::kMultDimuons], - VarManager::fgValues[VarManager::kVertexingPz], - VarManager::fgValues[VarManager::kVertexingSV]); + event.posX(), event.posY(), event.posZ(), event.numContrib(), + event.selection_raw(), evSel, event.reducedMCevent().mcPosX(), + event.reducedMCevent().mcPosY(), + event.reducedMCevent().mcPosZ(), + VarManager::fgValues[VarManager::kMass], mcDecision, + VarManager::fgValues[VarManager::kPt], + VarManager::fgValues[VarManager::kEta], + VarManager::fgValues[VarManager::kPhi], t1.sign() + t2.sign(), + VarManager::fgValues[VarManager::kVertexingChi2PCA], + VarManager::fgValues[VarManager::kVertexingTauz], + VarManager::fgValues[VarManager::kVertexingTauzErr], + VarManager::fgValues[VarManager::kVertexingTauxy], + VarManager::fgValues[VarManager::kVertexingTauxyErr], + VarManager::fgValues[VarManager::kCosPointingAngle], + VarManager::fgValues[VarManager::kPt1], + VarManager::fgValues[VarManager::kEta1], + VarManager::fgValues[VarManager::kPhi1], t1.sign(), + VarManager::fgValues[VarManager::kPt2], + VarManager::fgValues[VarManager::kEta2], + VarManager::fgValues[VarManager::kPhi2], t2.sign(), + t1.fwdDcaX(), t1.fwdDcaY(), t2.fwdDcaX(), t2.fwdDcaY(), + t1.mcMask(), t2.mcMask(), t1.chi2MatchMCHMID(), + t2.chi2MatchMCHMID(), t1.chi2MatchMCHMFT(), + t2.chi2MatchMCHMFT(), t1.chi2(), t2.chi2(), + t1.reducedMCTrack().pt(), t1.reducedMCTrack().eta(), + t1.reducedMCTrack().phi(), t1.reducedMCTrack().e(), + t2.reducedMCTrack().pt(), t2.reducedMCTrack().eta(), + t2.reducedMCTrack().phi(), t2.reducedMCTrack().e(), + t1.reducedMCTrack().vx(), t1.reducedMCTrack().vy(), + t1.reducedMCTrack().vz(), t1.reducedMCTrack().vt(), + t2.reducedMCTrack().vx(), t2.reducedMCTrack().vy(), + t2.reducedMCTrack().vz(), t2.reducedMCTrack().vt(), + (twoTrackFilter & (static_cast(1) << 28)) || + (twoTrackFilter & (static_cast(1) << 29)), + (twoTrackFilter & (static_cast(1) << 30)) || + (twoTrackFilter & (static_cast(1) << 31)), + isCorrectAssoc_leg1, isCorrectAssoc_leg2, -999.0, -999.0, + -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, + -999.0, VarManager::fgValues[VarManager::kMultDimuons], + VarManager::fgValues[VarManager::kVertexingPz], + VarManager::fgValues[VarManager::kVertexingSV]); } } // Fill histograms @@ -3466,22 +3498,22 @@ struct AnalysisSameEventPairing { for (int icut = 0; icut < ncuts; icut++) { if (twoTrackFilter & (static_cast(1) << icut)) { isAmbiInBunch = - (twoTrackFilter & (static_cast(1) << 28)) || - (twoTrackFilter & (static_cast(1) << 29)); + (twoTrackFilter & (static_cast(1) << 28)) || + (twoTrackFilter & (static_cast(1) << 29)); isAmbiOutOfBunch = - (twoTrackFilter & (static_cast(1) << 30)) || - (twoTrackFilter & (static_cast(1) << 31)); + (twoTrackFilter & (static_cast(1) << 30)) || + (twoTrackFilter & (static_cast(1) << 31)); if (sign1 * sign2 < 0) { // +- pairs fHistMan->FillHistClass( - histNames[icut][0].Data(), - dqefficiency_helpers::varValues()); // reconstructed, - // unmatched + histNames[icut][0].Data(), + dqefficiency_helpers::varValues()); // reconstructed, + // unmatched for (unsigned int isig = 0; isig < fRecMCSignals.size(); isig++) { // loop over MC signals if (mcDecision & (static_cast(1) << isig)) { fHistMan->FillHistClass( - histNamesMC[icut * fRecMCSignals.size() + isig][0].Data(), - dqefficiency_helpers::varValues()); // matched signal + histNamesMC[icut * fRecMCSignals.size() + isig][0].Data(), + dqefficiency_helpers::varValues()); // matched signal if (useMiniTree.fConfigMiniTree) { if constexpr (TPairType == VarManager::kDecayToMuMu) { twoTrackFilter = a1.isMuonSelected_raw() & @@ -3496,41 +3528,41 @@ struct AnalysisSameEventPairing { auto t2 = a2.template reducedmuon_as(); float dileptonMass = - VarManager::fgValues[VarManager::kMass]; + VarManager::fgValues[VarManager::kMass]; if (dileptonMass > useMiniTree.fConfigMiniTreeMinMass && dileptonMass < useMiniTree.fConfigMiniTreeMaxMass) { // In the miniTree the positive daughter is positioned // as first if (t1.sign() > 0) { dileptonMiniTreeRec( - mcDecision, - VarManager::fgValues[VarManager::kMass], - VarManager::fgValues[VarManager::kPt], - VarManager::fgValues[VarManager::kEta], - VarManager::fgValues[VarManager::kPhi], - VarManager::fgValues[VarManager::kCentFT0C], - t1.reducedMCTrack().pt(), - t1.reducedMCTrack().eta(), - t1.reducedMCTrack().phi(), - t2.reducedMCTrack().pt(), - t2.reducedMCTrack().eta(), - t2.reducedMCTrack().phi(), t1.pt(), t1.eta(), - t1.phi(), t2.pt(), t2.eta(), t2.phi()); + mcDecision, + VarManager::fgValues[VarManager::kMass], + VarManager::fgValues[VarManager::kPt], + VarManager::fgValues[VarManager::kEta], + VarManager::fgValues[VarManager::kPhi], + VarManager::fgValues[VarManager::kCentFT0C], + t1.reducedMCTrack().pt(), + t1.reducedMCTrack().eta(), + t1.reducedMCTrack().phi(), + t2.reducedMCTrack().pt(), + t2.reducedMCTrack().eta(), + t2.reducedMCTrack().phi(), t1.pt(), t1.eta(), + t1.phi(), t2.pt(), t2.eta(), t2.phi()); } else { dileptonMiniTreeRec( - mcDecision, - VarManager::fgValues[VarManager::kMass], - VarManager::fgValues[VarManager::kPt], - VarManager::fgValues[VarManager::kEta], - VarManager::fgValues[VarManager::kPhi], - VarManager::fgValues[VarManager::kCentFT0C], - t2.reducedMCTrack().pt(), - t2.reducedMCTrack().eta(), - t2.reducedMCTrack().phi(), - t1.reducedMCTrack().pt(), - t1.reducedMCTrack().eta(), - t1.reducedMCTrack().phi(), t2.pt(), t2.eta(), - t2.phi(), t1.pt(), t1.eta(), t1.phi()); + mcDecision, + VarManager::fgValues[VarManager::kMass], + VarManager::fgValues[VarManager::kPt], + VarManager::fgValues[VarManager::kEta], + VarManager::fgValues[VarManager::kPhi], + VarManager::fgValues[VarManager::kCentFT0C], + t2.reducedMCTrack().pt(), + t2.reducedMCTrack().eta(), + t2.reducedMCTrack().phi(), + t1.reducedMCTrack().pt(), + t1.reducedMCTrack().eta(), + t1.reducedMCTrack().phi(), t2.pt(), t2.eta(), + t2.phi(), t1.pt(), t1.eta(), t1.phi()); } } } @@ -3540,47 +3572,47 @@ struct AnalysisSameEventPairing { isCorrectAssoc_leg2) { // correct track-collision // association fHistMan->FillHistClass( - histNamesMC[icut * fRecMCSignals.size() + isig][3] - .Data(), - dqefficiency_helpers::varValues()); + histNamesMC[icut * fRecMCSignals.size() + isig][3] + .Data(), + dqefficiency_helpers::varValues()); } else { // incorrect track-collision association fHistMan->FillHistClass( - histNamesMC[icut * fRecMCSignals.size() + isig][4] - .Data(), - dqefficiency_helpers::varValues()); + histNamesMC[icut * fRecMCSignals.size() + isig][4] + .Data(), + dqefficiency_helpers::varValues()); } if (isAmbiInBunch) { // ambiguous in bunch fHistMan->FillHistClass( - histNamesMC[icut * fRecMCSignals.size() + isig][5] - .Data(), - dqefficiency_helpers::varValues()); + histNamesMC[icut * fRecMCSignals.size() + isig][5] + .Data(), + dqefficiency_helpers::varValues()); if (isCorrectAssoc_leg1 && isCorrectAssoc_leg2) { fHistMan->FillHistClass( - histNamesMC[icut * fRecMCSignals.size() + isig][6] - .Data(), - dqefficiency_helpers::varValues()); + histNamesMC[icut * fRecMCSignals.size() + isig][6] + .Data(), + dqefficiency_helpers::varValues()); } else { fHistMan->FillHistClass( - histNamesMC[icut * fRecMCSignals.size() + isig][7] - .Data(), - dqefficiency_helpers::varValues()); + histNamesMC[icut * fRecMCSignals.size() + isig][7] + .Data(), + dqefficiency_helpers::varValues()); } } if (isAmbiOutOfBunch) { // ambiguous out of bunch fHistMan->FillHistClass( - histNamesMC[icut * fRecMCSignals.size() + isig][8] - .Data(), - dqefficiency_helpers::varValues()); + histNamesMC[icut * fRecMCSignals.size() + isig][8] + .Data(), + dqefficiency_helpers::varValues()); if (isCorrectAssoc_leg1 && isCorrectAssoc_leg2) { fHistMan->FillHistClass( - histNamesMC[icut * fRecMCSignals.size() + isig][9] - .Data(), - dqefficiency_helpers::varValues()); + histNamesMC[icut * fRecMCSignals.size() + isig][9] + .Data(), + dqefficiency_helpers::varValues()); } else { fHistMan->FillHistClass( - histNamesMC[icut * fRecMCSignals.size() + isig][10] - .Data(), - dqefficiency_helpers::varValues()); + histNamesMC[icut * fRecMCSignals.size() + isig][10] + .Data(), + dqefficiency_helpers::varValues()); } } } @@ -3604,9 +3636,9 @@ struct AnalysisSameEventPairing { isig++) { // loop over MC signals if (mcDecision & (static_cast(1) << isig)) { fHistMan->FillHistClass( - histNamesMC[icut * fRecMCSignals.size() + isig][1] - .Data(), - dqefficiency_helpers::varValues()); + histNamesMC[icut * fRecMCSignals.size() + isig][1] + .Data(), + dqefficiency_helpers::varValues()); } } if (fConfigQA) { @@ -3626,9 +3658,9 @@ struct AnalysisSameEventPairing { isig++) { // loop over MC signals if (mcDecision & (static_cast(1) << isig)) { fHistMan->FillHistClass( - histNamesMC[icut * fRecMCSignals.size() + isig][2] - .Data(), - dqefficiency_helpers::varValues()); + histNamesMC[icut * fRecMCSignals.size() + isig][2] + .Data(), + dqefficiency_helpers::varValues()); } } if (fConfigQA) { @@ -3647,25 +3679,25 @@ struct AnalysisSameEventPairing { iPairCut++) { AnalysisCompositeCut cut = fPairCuts.at(iPairCut); if (!(cut.IsSelected( - dqefficiency_helpers::varValues()))) { // apply pair cuts + dqefficiency_helpers::varValues()))) { // apply pair cuts continue; } if (sign1 * sign2 < 0) { fHistMan->FillHistClass( - histNames[ncuts + icut * fPairCuts.size() + iPairCut][0] - .Data(), - dqefficiency_helpers::varValues()); + histNames[ncuts + icut * fPairCuts.size() + iPairCut][0] + .Data(), + dqefficiency_helpers::varValues()); } else { if (sign1 > 0) { fHistMan->FillHistClass( - histNames[ncuts + icut * fPairCuts.size() + iPairCut][1] - .Data(), - dqefficiency_helpers::varValues()); + histNames[ncuts + icut * fPairCuts.size() + iPairCut][1] + .Data(), + dqefficiency_helpers::varValues()); } else { fHistMan->FillHistClass( - histNames[ncuts + icut * fPairCuts.size() + iPairCut][2] - .Data(), - dqefficiency_helpers::varValues()); + histNames[ncuts + icut * fPairCuts.size() + iPairCut][2] + .Data(), + dqefficiency_helpers::varValues()); } } } // end loop (pair cuts) @@ -3676,19 +3708,20 @@ struct AnalysisSameEventPairing { } PresliceUnsorted perReducedMcEvent = - aod::reducedtrackMC::reducedMCeventId; + aod::reducedtrackMC::reducedMCeventId; template - void runMCGen(TEvents const &events, ReducedMCEvents const &mcEvents, - ReducedMCTracks const &mcTracks) { + void runMCGen(TEvents const& events, ReducedMCEvents const& mcEvents, + ReducedMCTracks const& mcTracks) + { uint32_t mcDecision = 0; int isig = 0; // Loop over all MC single particles to fill generator level histograms, // disregarding of whether they belong to selected reconstructed events or // not - for (auto const &mctrack : mcTracks) { - for (auto const &sig : fGenMCSignals) { + for (auto const& mctrack : mcTracks) { + for (auto const& sig : fGenMCSignals) { if (sig->CheckSignal(true, mctrack)) { VarManager::FillTrackMC(mcTracks, mctrack); fHistMan->FillHistClass(Form("MCTruthGen_%s", sig->GetName()), @@ -3705,7 +3738,7 @@ struct AnalysisSameEventPairing { // Now loop over reconstructed events to select only MC particles belonging // to the same MC collision as the reconstructed event - for (auto const &event : events) { + for (auto const& event : events) { if (!event.isEventSelected_bit(0)) { continue; } @@ -3716,14 +3749,14 @@ struct AnalysisSameEventPairing { FinalStateMcParticleIndices.clear(); auto groupedMCTracks = - mcTracks.sliceBy(perReducedMcEvent, event.reducedMCeventId()); + mcTracks.sliceBy(perReducedMcEvent, event.reducedMCeventId()); groupedMCTracks.bindInternalIndicesTo(&mcTracks); - for (auto const &track : groupedMCTracks) { + for (auto const& track : groupedMCTracks) { auto track_raw = mcTracks.rawIteratorAt(track.globalIndex()); mcDecision = 0; isig = 0; - for (auto const &sig : fGenMCSignals) { + for (auto const& sig : fGenMCSignals) { if (sig->CheckSignal(true, track_raw)) { if (track.reducedMCeventId() != event.reducedMCeventId()) { // check that the mc track belongs @@ -3736,20 +3769,20 @@ struct AnalysisSameEventPairing { fHistMan->FillHistClass(Form("MCTruthGenSel_%s", sig->GetName()), dqefficiency_helpers::varValues()); MCTruthTableEffi( - VarManager::fgValues[VarManager::kMCPt], - VarManager::fgValues[VarManager::kMCEta], - VarManager::fgValues[VarManager::kMCY], - VarManager::fgValues[VarManager::kMCPhi], - VarManager::fgValues[VarManager::kMCVz], - VarManager::fgValues[VarManager::kMCVtxZ], - VarManager::fgValues[VarManager::kMultFT0A], - VarManager::fgValues[VarManager::kMultFT0C], - VarManager::fgValues[VarManager::kCentFT0M], - VarManager::fgValues[VarManager::kVtxNcontribReal]); + VarManager::fgValues[VarManager::kMCPt], + VarManager::fgValues[VarManager::kMCEta], + VarManager::fgValues[VarManager::kMCY], + VarManager::fgValues[VarManager::kMCPhi], + VarManager::fgValues[VarManager::kMCVz], + VarManager::fgValues[VarManager::kMCVtxZ], + VarManager::fgValues[VarManager::kMultFT0A], + VarManager::fgValues[VarManager::kMultFT0C], + VarManager::fgValues[VarManager::kCentFT0M], + VarManager::fgValues[VarManager::kVtxNcontribReal]); if (useMiniTree.fConfigMiniTree) { auto mcEvent = - mcEvents.rawIteratorAt(track_raw.reducedMCeventId()); + mcEvents.rawIteratorAt(track_raw.reducedMCeventId()); dileptonMiniTreeGen(mcDecision, mcEvent.impactParameter(), track_raw.pt(), track_raw.eta(), track_raw.phi(), -999, -999, -999); @@ -3757,7 +3790,7 @@ struct AnalysisSameEventPairing { } isig++; } - for (auto const &sig : fFinalStateMCSignals) { + for (auto const& sig : fFinalStateMCSignals) { if (sig->CheckSignal(true, track_raw)) { FinalStateMcParticleIndices.push_back(track.globalIndex()); break; // if one of the final state signals is matched, no need to @@ -3771,9 +3804,9 @@ struct AnalysisSameEventPairing { if (fHasTwoProngGenMCsignals) { // loop over combinations of the selected mc particles to fill generator // level pair histograms - for (auto const &t1 : FinalStateMcParticleIndices) { + for (auto const& t1 : FinalStateMcParticleIndices) { auto t1_raw = mcTracks.rawIteratorAt(t1); - for (auto const &t2 : FinalStateMcParticleIndices) { + for (auto const& t2 : FinalStateMcParticleIndices) { if (t2 <= t1) { continue; // avoid double counting and self-pairing } @@ -3785,7 +3818,7 @@ struct AnalysisSameEventPairing { mcDecision = 0; isig = 0; - for (auto const &sig : fGenMCSignals) { + for (auto const& sig : fGenMCSignals) { if (sig->GetNProngs() != 2) { // NOTE: 2-prong signals required here continue; @@ -3799,38 +3832,38 @@ struct AnalysisSameEventPairing { // length related variables if (t1_raw.has_mothers() && t2_raw.has_mothers()) { auto motherMCParticle_t1 = - t1_raw.template mothers_first_as(); + t1_raw.template mothers_first_as(); auto motherMCParticle_t2 = - t2_raw.template mothers_first_as(); + t2_raw.template mothers_first_as(); if (motherMCParticle_t1 == motherMCParticle_t2) { auto mcEvent = mcEvents.rawIteratorAt( - motherMCParticle_t1.reducedMCeventId()); + motherMCParticle_t1.reducedMCeventId()); std::array collVtxPos = { - mcEvent.mcPosX(), mcEvent.mcPosY(), mcEvent.mcPosZ()}; + mcEvent.mcPosX(), mcEvent.mcPosY(), mcEvent.mcPosZ()}; VarManager::FillTrackCollisionMC( - motherMCParticle_t1, collVtxPos, - pdgDB->Mass(motherMCParticle_t1.pdgCode())); + motherMCParticle_t1, collVtxPos, + pdgDB->Mass(motherMCParticle_t1.pdgCode())); } } // cout << " Filled VarManager for the pair." << endl; fHistMan->FillHistClass( - Form("MCTruthGenPairSel_%s", sig->GetName()), - dqefficiency_helpers::varValues()); + Form("MCTruthGenPairSel_%s", sig->GetName()), + dqefficiency_helpers::varValues()); fHistMan->FillHistClass( - Form("MCTruthGenPseudoPolPairSel_%s", sig->GetName()), - dqefficiency_helpers::varValues()); + Form("MCTruthGenPseudoPolPairSel_%s", sig->GetName()), + dqefficiency_helpers::varValues()); // Fill also acceptance cut histograms if requested if (fUseMCGenAccCut) { - for (auto const &cut : fMCGenAccCuts) { + for (auto const& cut : fMCGenAccCuts) { if (cut->IsSelected(dqefficiency_helpers::varValues())) { fHistMan->FillHistClass( - Form("MCTruthGenPairSel_%s_%s", sig->GetName(), - cut->GetName()), - dqefficiency_helpers::varValues()); + Form("MCTruthGenPairSel_%s_%s", sig->GetName(), + cut->GetName()), + dqefficiency_helpers::varValues()); fHistMan->FillHistClass( - Form("MCTruthGenPseudoPolPairSel_%s_%s", - sig->GetName(), cut->GetName()), - dqefficiency_helpers::varValues()); + Form("MCTruthGenPseudoPolPairSel_%s_%s", + sig->GetName(), cut->GetName()), + dqefficiency_helpers::varValues()); } } } @@ -3861,11 +3894,12 @@ struct AnalysisSameEventPairing { uint32_t TMuonFillMap, typename TEvents, typename TTrackAssocs, typename TTracks, typename TMuonAssocs, typename TMuons> void runEmuSameEventPairing( - TEvents const &events, Preslice &preslice1, - TTrackAssocs const &assocs1, TTracks const & /*tracks1*/, - Preslice &preslice2, TMuonAssocs const &assocs2, - TMuons const & /*tracks2*/, ReducedMCEvents const & /*mcEvents*/, - ReducedMCTracks const & /*mcTracks*/) { + TEvents const& events, Preslice& preslice1, + TTrackAssocs const& assocs1, TTracks const& /*tracks1*/, + Preslice& preslice2, TMuonAssocs const& assocs2, + TMuons const& /*tracks2*/, ReducedMCEvents const& /*mcEvents*/, + ReducedMCTracks const& /*mcTracks*/) + { if (events.size() > 0) { if (fCurrentRun != events.begin().runNumber()) { initParamsFromCCDB(events.begin().timestamp(), true); @@ -3873,8 +3907,8 @@ struct AnalysisSameEventPairing { } } - const auto &histNames = fTrackMuonHistNames; - const auto &histNamesMC = fTrackMuonHistNamesMCmatched; + const auto& histNames = fTrackMuonHistNames; + const auto& histNamesMC = fTrackMuonHistNamesMCmatched; int nPairCuts = !fPairCuts.empty() ? static_cast(fPairCuts.size()) : 1; uint32_t twoTrackFilter = 0; @@ -3885,11 +3919,11 @@ struct AnalysisSameEventPairing { int sign2 = 0; constexpr bool eventHasQvector = - ((TEventFillMap & VarManager::ObjTypes::ReducedEventQvector) > 0); + ((TEventFillMap & VarManager::ObjTypes::ReducedEventQvector) > 0); constexpr bool eventHasQvectorCentr = - ((TEventFillMap & VarManager::ObjTypes::CollisionQvect) > 0); + ((TEventFillMap & VarManager::ObjTypes::CollisionQvect) > 0); - for (auto const &event : events) { + for (auto const& event : events) { if (!event.has_reducedMCevent() || !event.isEventSelected_bit(0)) { continue; } @@ -3898,7 +3932,7 @@ struct AnalysisSameEventPairing { VarManager::FillEvent(event, dqefficiency_helpers::varValues()); VarManager::FillEvent( - event.reducedMCevent(), dqefficiency_helpers::varValues()); + event.reducedMCevent(), dqefficiency_helpers::varValues()); auto groupedAssocs1 = assocs1.sliceBy(preslice1, event.globalIndex()); if (groupedAssocs1.size() == 0) { @@ -3909,9 +3943,9 @@ struct AnalysisSameEventPairing { continue; } - for (auto const &[a1, a2] : + for (auto const& [a1, a2] : o2::soa::combinations(soa::CombinationsFullIndexPolicy( - groupedAssocs1, groupedAssocs2))) { + groupedAssocs1, groupedAssocs2))) { if (!(a1.isBarrelSelected_raw() & a1.isBarrelSelectedPrefilter_raw() & fTrackFilterMask)) { continue; @@ -3965,9 +3999,9 @@ struct AnalysisSameEventPairing { } } isCorrectAssoc_leg1 = - (t1.reducedMCTrack().reducedMCevent() == event.reducedMCevent()); + (t1.reducedMCTrack().reducedMCevent() == event.reducedMCevent()); isCorrectAssoc_leg2 = - (t2.reducedMCTrack().reducedMCevent() == event.reducedMCevent()); + (t2.reducedMCTrack().reducedMCevent() == event.reducedMCevent()); } VarManager::FillPair(t1, t2); @@ -3983,11 +4017,11 @@ struct AnalysisSameEventPairing { } bool isAmbiInBunch = - (twoTrackFilter & (static_cast(1) << 28)) || - (twoTrackFilter & (static_cast(1) << 29)); + (twoTrackFilter & (static_cast(1) << 28)) || + (twoTrackFilter & (static_cast(1) << 29)); bool isAmbiOutOfBunch = - (twoTrackFilter & (static_cast(1) << 30)) || - (twoTrackFilter & (static_cast(1) << 31)); + (twoTrackFilter & (static_cast(1) << 30)) || + (twoTrackFilter & (static_cast(1) << 31)); bool isCorrectPair = isCorrectAssoc_leg1 && isCorrectAssoc_leg2; // fill reco histograms per (track cut, muon cut[, pair cut]) and the @@ -4064,7 +4098,7 @@ struct AnalysisSameEventPairing { if (itHistMC == histNamesMC.end()) { continue; } - const auto &mcNames = itHistMC->second; + const auto& mcNames = itHistMC->second; if (sign1 * sign2 < 0) { fHistMan->FillHistClass(mcNames[0].Data(), dqefficiency_helpers::varValues()); @@ -4120,25 +4154,26 @@ struct AnalysisSameEventPairing { template - void runEmuMixedPairing(TAssoc1 const &assocs1, TAssoc2 const &assocs2, - TTracks1 const & /*tracks1*/, - TTracks2 const & /*tracks2*/) { - const auto &histNames = fTrackMuonHistNames; + void runEmuMixedPairing(TAssoc1 const& assocs1, TAssoc2 const& assocs2, + TTracks1 const& /*tracks1*/, + TTracks2 const& /*tracks2*/) + { + const auto& histNames = fTrackMuonHistNames; int nPairCuts = !fPairCuts.empty() ? static_cast(fPairCuts.size()) : 1; int sign1 = 0; int sign2 = 0; constexpr bool eventHasQvector = - ((TEventFillMap & VarManager::ObjTypes::ReducedEventQvector) > 0); + ((TEventFillMap & VarManager::ObjTypes::ReducedEventQvector) > 0); constexpr bool eventHasQvectorCentr = - ((TEventFillMap & VarManager::ObjTypes::CollisionQvect) > 0); + ((TEventFillMap & VarManager::ObjTypes::CollisionQvect) > 0); - for (auto const &a1 : assocs1) { + for (auto const& a1 : assocs1) { if (!(a1.isBarrelSelected_raw() & a1.isBarrelSelectedPrefilter_raw() & fTrackFilterMask)) { continue; } - for (auto const &a2 : assocs2) { + for (auto const& a2 : assocs2) { if (!(a2.isMuonSelected_raw() & fMuonFilterMask)) { continue; } @@ -4217,14 +4252,15 @@ struct AnalysisSameEventPairing { template - void runEmuSameSideMixing(TEvents &events, Preslice &preslice1, - TTrackAssocs const &assocs1, TTracks const &tracks1, - Preslice &preslice2, - TMuonAssocs const &assocs2, TMuons const &tracks2) { + void runEmuSameSideMixing(TEvents& events, Preslice& preslice1, + TTrackAssocs const& assocs1, TTracks const& tracks1, + Preslice& preslice2, + TMuonAssocs const& assocs2, TMuons const& tracks2) + { events.bindExternalIndices(&assocs1); events.bindExternalIndices(&assocs2); int mixingDepth = fConfigMixingDepth.value; - for (auto const &[event1, event2] : + for (auto const& [event1, event2] : selfCombinations(hashBin, mixingDepth, -1, events, events)) { VarManager::ResetValues(0, VarManager::kNVars); VarManager::FillEvent(event1, @@ -4241,33 +4277,35 @@ struct AnalysisSameEventPairing { continue; } runEmuMixedPairing( - groupedAssocs1, groupedAssocs2, tracks1, tracks2); + groupedAssocs1, groupedAssocs2, tracks1, tracks2); } } void processAllSkimmed( - MyEventsVtxCovSelected const &events, - soa::Join const &barrelAssocs, - MyBarrelTracksWithCovWithAmbiguities const &barrelTracks, - soa::Join const &muonAssocs, - MyMuonTracksWithCovWithAmbiguities const &muons, - ReducedMCEvents const &mcEvents, ReducedMCTracks const &mcTracks) { + MyEventsVtxCovSelected const& events, + soa::Join const& barrelAssocs, + MyBarrelTracksWithCovWithAmbiguities const& barrelTracks, + soa::Join const& muonAssocs, + MyMuonTracksWithCovWithAmbiguities const& muons, + ReducedMCEvents const& mcEvents, ReducedMCTracks const& mcTracks) + { runSameEventPairing(events, trackAssocsPerCollision, barrelAssocs, barrelTracks, mcEvents, mcTracks); runSameEventPairing( - events, muonAssocsPerCollision, muonAssocs, muons, mcEvents, mcTracks); + events, muonAssocsPerCollision, muonAssocs, muons, mcEvents, mcTracks); } void processBarrelOnlySkimmed( - MyEventsVtxCovSelected const &events, - soa::Join const &barrelAssocs, - MyBarrelTracksWithCovWithAmbiguities const &barrelTracks, - ReducedMCEvents const &mcEvents, ReducedMCTracks const &mcTracks) { + MyEventsVtxCovSelected const& events, + soa::Join const& barrelAssocs, + MyBarrelTracksWithCovWithAmbiguities const& barrelTracks, + ReducedMCEvents const& mcEvents, ReducedMCTracks const& mcTracks) + { runSameEventPairing(events, trackAssocsPerCollision, barrelAssocs, barrelTracks, @@ -4276,26 +4314,28 @@ struct AnalysisSameEventPairing { } void processBarrelOnlyWithCollSkimmed( - MyEventsVtxCovSelectedInfo const &events, - soa::Join const &barrelAssocs, - MyBarrelTracksWithCovWithAmbiguitiesWithColl const &barrelTracks, - ReducedMCEvents const &mcEvents, ReducedMCTracks const &mcTracks) { + MyEventsVtxCovSelectedInfo const& events, + soa::Join const& barrelAssocs, + MyBarrelTracksWithCovWithAmbiguitiesWithColl const& barrelTracks, + ReducedMCEvents const& mcEvents, ReducedMCTracks const& mcTracks) + { runSameEventPairing( - events, trackAssocsPerCollision, barrelAssocs, barrelTracks, mcEvents, - mcTracks); + events, trackAssocsPerCollision, barrelAssocs, barrelTracks, mcEvents, + mcTracks); runMCGen(events, mcEvents, mcTracks); } void processMuonOnlySkimmed( - MyEventsVtxCovSelected const &events, - soa::Join const &muonAssocs, - MyMuonTracksWithCovWithAmbiguities const &muons, - ReducedMCEvents const &mcEvents, ReducedMCTracks const &mcTracks) { + MyEventsVtxCovSelected const& events, + soa::Join const& muonAssocs, + MyMuonTracksWithCovWithAmbiguities const& muons, + ReducedMCEvents const& mcEvents, ReducedMCTracks const& mcTracks) + { runSameEventPairing( - events, muonAssocsPerCollision, muonAssocs, muons, mcEvents, mcTracks); + events, muonAssocsPerCollision, muonAssocs, muons, mcEvents, mcTracks); // Feature replaced by processMCGen /* if (fConfigMC.runMCGenPair) { runMCGen(mcEvents, mcTracks); @@ -4303,26 +4343,28 @@ struct AnalysisSameEventPairing { } void processMuonOnlyVertexingSkimmed( - MyEventsVtxCovSelected const &events, - soa::Join const &muonAssocs, - MyMuonTracksWithCovWithAmbiguities const &muons, - ReducedMCEvents const &mcEvents, ReducedMCTracks const &mcTracks) { + MyEventsVtxCovSelected const& events, + soa::Join const& muonAssocs, + MyMuonTracksWithCovWithAmbiguities const& muons, + ReducedMCEvents const& mcEvents, ReducedMCTracks const& mcTracks) + { runSameEventPairing( - events, muonAssocsPerCollision, muonAssocs, muons, mcEvents, mcTracks); + events, muonAssocsPerCollision, muonAssocs, muons, mcEvents, mcTracks); } PresliceUnsorted perReducedMcGenEvent = - aod::reducedtrackMC::reducedMCeventId; + aod::reducedtrackMC::reducedMCeventId; - void processMCGen(soa::Filtered const &events, - ReducedMCEvents const &mcEvents, - ReducedMCTracks const &mcTracks) { + void processMCGen(soa::Filtered const& events, + ReducedMCEvents const& mcEvents, + ReducedMCTracks const& mcTracks) + { // Fill Generated histograms taking into account all generated tracks uint32_t mcDecision = 0; int isig = 0; - for (auto const &mctrack : mcTracks) { + for (auto const& mctrack : mcTracks) { VarManager::FillTrackMC(mcTracks, mctrack); // NOTE: Signals are checked here mostly based on the skimmed MC stack, so // depending on the requested signal, the stack could be incomplete. NOTE: @@ -4330,7 +4372,7 @@ struct AnalysisSameEventPairing { // precomputed during skimming and are stored in the mcReducedFlags // member. // TODO: Use the mcReducedFlags to select signals - for (auto const &sig : fGenMCSignals) { + for (auto const& sig : fGenMCSignals) { if (sig->CheckSignal(true, mctrack)) { fHistMan->FillHistClass(Form("MCTruthGen_%s", sig->GetName()), dqefficiency_helpers::varValues()); @@ -4339,7 +4381,7 @@ struct AnalysisSameEventPairing { } // Fill Generated histograms taking into account selected collisions - for (auto const &event : events) { + for (auto const& event : events) { if (!event.isEventSelected_bit(0)) { continue; } @@ -4349,12 +4391,12 @@ struct AnalysisSameEventPairing { VarManager::FillEvent(event, dqefficiency_helpers::varValues()); VarManager::FillEvent( - event.reducedMCevent(), dqefficiency_helpers::varValues()); + event.reducedMCevent(), dqefficiency_helpers::varValues()); // auto groupedMCTracks = mcTracks.sliceBy(perReducedMcGenEvent, // event.reducedMCeventId()); // groupedMCTracks.bindInternalIndicesTo(&mcTracks); // for (auto const& track : groupedMCTracks) { - for (auto const &track : mcTracks) { + for (auto const& track : mcTracks) { if (track.reducedMCeventId() != event.reducedMCeventId()) { continue; } @@ -4363,26 +4405,26 @@ struct AnalysisSameEventPairing { // auto track_raw = groupedMCTracks.rawIteratorAt(track.globalIndex()); mcDecision = 0; isig = 0; - for (auto const &sig : fGenMCSignals) { + for (auto const& sig : fGenMCSignals) { if (sig->CheckSignal(true, track_raw)) { mcDecision |= (static_cast(1) << isig); fHistMan->FillHistClass(Form("MCTruthGenSel_%s", sig->GetName()), dqefficiency_helpers::varValues()); MCTruthTableEffi( - VarManager::fgValues[VarManager::kMCPt], - VarManager::fgValues[VarManager::kMCEta], - VarManager::fgValues[VarManager::kMCY], - VarManager::fgValues[VarManager::kMCPhi], - VarManager::fgValues[VarManager::kMCVz], - VarManager::fgValues[VarManager::kMCVtxZ], - VarManager::fgValues[VarManager::kMultFT0A], - VarManager::fgValues[VarManager::kMultFT0C], - VarManager::fgValues[VarManager::kCentFT0M], - VarManager::fgValues[VarManager::kVtxNcontribReal]); + VarManager::fgValues[VarManager::kMCPt], + VarManager::fgValues[VarManager::kMCEta], + VarManager::fgValues[VarManager::kMCY], + VarManager::fgValues[VarManager::kMCPhi], + VarManager::fgValues[VarManager::kMCVz], + VarManager::fgValues[VarManager::kMCVtxZ], + VarManager::fgValues[VarManager::kMultFT0A], + VarManager::fgValues[VarManager::kMultFT0C], + VarManager::fgValues[VarManager::kCentFT0M], + VarManager::fgValues[VarManager::kVtxNcontribReal]); if (useMiniTree.fConfigMiniTree) { auto mcEvent = - mcEvents.rawIteratorAt(track_raw.reducedMCeventId()); + mcEvents.rawIteratorAt(track_raw.reducedMCeventId()); dileptonMiniTreeGen(mcDecision, mcEvent.impactParameter(), track_raw.pt(), track_raw.eta(), track_raw.phi(), -999, -999, -999); @@ -4393,17 +4435,17 @@ struct AnalysisSameEventPairing { } } // end loop over reconstructed events if (fHasTwoProngGenMCsignals) { - for (auto const &[t1, t2] : combinations(mcTracks, mcTracks)) { + for (auto const& [t1, t2] : combinations(mcTracks, mcTracks)) { auto t1_raw = mcTracks.rawIteratorAt(t1.globalIndex()); auto t2_raw = mcTracks.rawIteratorAt(t2.globalIndex()); if (t1_raw.reducedMCeventId() == t2_raw.reducedMCeventId()) { - for (auto const &sig : fGenMCSignals) { + for (auto const& sig : fGenMCSignals) { if (sig->GetNProngs() != 2) { // NOTE: 2-prong signals required here continue; } if (sig->CheckSignal(true, t1_raw, t2_raw)) { VarManager::FillPairMC( - t1, t2); // NOTE: This feature will only work for muons + t1, t2); // NOTE: This feature will only work for muons fHistMan->FillHistClass(Form("MCTruthGenPair_%s", sig->GetName()), dqefficiency_helpers::varValues()); } @@ -4412,7 +4454,7 @@ struct AnalysisSameEventPairing { } } // Fill Generated PAIR histograms taking into account selected collisions - for (auto const &event : events) { + for (auto const& event : events) { if (!event.isEventSelected_bit(0)) { continue; } @@ -4421,7 +4463,7 @@ struct AnalysisSameEventPairing { } if (fHasTwoProngGenMCsignals) { - for (auto const &[t1, t2] : combinations(mcTracks, mcTracks)) { + for (auto const& [t1, t2] : combinations(mcTracks, mcTracks)) { if (t1.reducedMCeventId() != event.reducedMCeventId()) { continue; } @@ -4433,7 +4475,7 @@ struct AnalysisSameEventPairing { if (t1_raw.reducedMCeventId() == t2_raw.reducedMCeventId()) { mcDecision = 0; isig = 0; - for (auto const &sig : fGenMCSignals) { + for (auto const& sig : fGenMCSignals) { if (sig->GetNProngs() != 2) { // NOTE: 2-prong signals required here continue; @@ -4441,10 +4483,10 @@ struct AnalysisSameEventPairing { if (sig->CheckSignal(true, t1_raw, t2_raw)) { mcDecision |= (static_cast(1) << isig); VarManager::FillPairMC( - t1, t2); // NOTE: This feature will only work for muons + t1, t2); // NOTE: This feature will only work for muons fHistMan->FillHistClass( - Form("MCTruthGenPairSel_%s", sig->GetName()), - dqefficiency_helpers::varValues()); + Form("MCTruthGenPairSel_%s", sig->GetName()), + dqefficiency_helpers::varValues()); if (useMiniTree.fConfigMiniTree) { // WARNING! To be checked dileptonMiniTreeGen(mcDecision, -999, t1.pt(), t1.eta(), @@ -4460,13 +4502,14 @@ struct AnalysisSameEventPairing { } void - processMCGenWithGrouping(soa::Filtered const &events, - ReducedMCEvents const &mcEvents, - ReducedMCTracks const &mcTracks) { + processMCGenWithGrouping(soa::Filtered const& events, + ReducedMCEvents const& mcEvents, + ReducedMCTracks const& mcTracks) + { uint32_t mcDecision = 0; int isig = 0; - for (auto const &mctrack : mcTracks) { + for (auto const& mctrack : mcTracks) { VarManager::FillTrackMC(mcTracks, mctrack); // NOTE: Signals are checked here mostly based on the skimmed MC stack, so // depending on the requested signal, the stack could be incomplete. NOTE: @@ -4474,7 +4517,7 @@ struct AnalysisSameEventPairing { // precomputed during skimming and are stored in the mcReducedFlags // member. // TODO: Use the mcReducedFlags to select signals - for (auto const &sig : fGenMCSignals) { + for (auto const& sig : fGenMCSignals) { if (sig->CheckSignal(true, mctrack)) { fHistMan->FillHistClass(Form("MCTruthGen_%s", sig->GetName()), dqefficiency_helpers::varValues()); @@ -4482,7 +4525,7 @@ struct AnalysisSameEventPairing { } } // Fill Generated histograms taking into account selected collisions - for (auto const &event : events) { + for (auto const& event : events) { if (!event.isEventSelected_bit(0)) { continue; } @@ -4490,7 +4533,7 @@ struct AnalysisSameEventPairing { continue; } - for (auto const &track : mcTracks) { + for (auto const& track : mcTracks) { if (track.reducedMCeventId() != event.reducedMCeventId()) { continue; } @@ -4498,26 +4541,26 @@ struct AnalysisSameEventPairing { auto track_raw = mcTracks.rawIteratorAt(track.globalIndex()); mcDecision = 0; isig = 0; - for (auto const &sig : fGenMCSignals) { + for (auto const& sig : fGenMCSignals) { if (sig->CheckSignal(true, track_raw)) { mcDecision |= (static_cast(1) << isig); fHistMan->FillHistClass(Form("MCTruthGenSel_%s", sig->GetName()), dqefficiency_helpers::varValues()); MCTruthTableEffi( - VarManager::fgValues[VarManager::kMCPt], - VarManager::fgValues[VarManager::kMCEta], - VarManager::fgValues[VarManager::kMCY], - VarManager::fgValues[VarManager::kMCPhi], - VarManager::fgValues[VarManager::kMCVz], - VarManager::fgValues[VarManager::kMCVtxZ], - VarManager::fgValues[VarManager::kMultFT0A], - VarManager::fgValues[VarManager::kMultFT0C], - VarManager::fgValues[VarManager::kCentFT0M], - VarManager::fgValues[VarManager::kVtxNcontribReal]); + VarManager::fgValues[VarManager::kMCPt], + VarManager::fgValues[VarManager::kMCEta], + VarManager::fgValues[VarManager::kMCY], + VarManager::fgValues[VarManager::kMCPhi], + VarManager::fgValues[VarManager::kMCVz], + VarManager::fgValues[VarManager::kMCVtxZ], + VarManager::fgValues[VarManager::kMultFT0A], + VarManager::fgValues[VarManager::kMultFT0C], + VarManager::fgValues[VarManager::kCentFT0M], + VarManager::fgValues[VarManager::kVtxNcontribReal]); if (useMiniTree.fConfigMiniTree) { auto mcEvent = - mcEvents.rawIteratorAt(track_raw.reducedMCeventId()); + mcEvents.rawIteratorAt(track_raw.reducedMCeventId()); dileptonMiniTreeGen(mcDecision, mcEvent.impactParameter(), track_raw.pt(), track_raw.eta(), track_raw.phi(), -999, -999, -999); @@ -4528,17 +4571,17 @@ struct AnalysisSameEventPairing { } } // end loop over reconstructed events if (fHasTwoProngGenMCsignals) { - for (auto const &[t1, t2] : combinations(mcTracks, mcTracks)) { + for (auto const& [t1, t2] : combinations(mcTracks, mcTracks)) { auto t1_raw = mcTracks.rawIteratorAt(t1.globalIndex()); auto t2_raw = mcTracks.rawIteratorAt(t2.globalIndex()); if (t1_raw.reducedMCeventId() == t2_raw.reducedMCeventId()) { - for (auto const &sig : fGenMCSignals) { + for (auto const& sig : fGenMCSignals) { if (sig->GetNProngs() != 2) { // NOTE: 2-prong signals required here continue; } if (sig->CheckSignal(true, t1_raw, t2_raw)) { VarManager::FillPairMC( - t1, t2); // NOTE: This feature will only work for muons + t1, t2); // NOTE: This feature will only work for muons fHistMan->FillHistClass(Form("MCTruthGenPair_%s", sig->GetName()), dqefficiency_helpers::varValues()); } @@ -4546,7 +4589,7 @@ struct AnalysisSameEventPairing { } } } - for (auto const &event : events) { + for (auto const& event : events) { if (!event.isEventSelected_bit(0)) { continue; } @@ -4556,16 +4599,16 @@ struct AnalysisSameEventPairing { // CURRENTLY ONLY FOR 1-GENERATION 2-PRONG SIGNALS if (fHasTwoProngGenMCsignals) { auto groupedMCTracks = - mcTracks.sliceBy(perReducedMcEvent, event.reducedMCeventId()); + mcTracks.sliceBy(perReducedMcEvent, event.reducedMCeventId()); groupedMCTracks.bindInternalIndicesTo(&mcTracks); - for (auto const &[t1, t2] : + for (auto const& [t1, t2] : combinations(groupedMCTracks, groupedMCTracks)) { auto t1_raw = groupedMCTracks.rawIteratorAt(t1.globalIndex()); auto t2_raw = groupedMCTracks.rawIteratorAt(t2.globalIndex()); if (t1_raw.reducedMCeventId() == t2_raw.reducedMCeventId()) { mcDecision = 0; isig = 0; - for (auto const &sig : fGenMCSignals) { + for (auto const& sig : fGenMCSignals) { if (sig->GetNProngs() != 2) { // NOTE: 2-prong signals required here continue; @@ -4573,10 +4616,10 @@ struct AnalysisSameEventPairing { if (sig->CheckSignal(true, t1_raw, t2_raw)) { mcDecision |= (static_cast(1) << isig); VarManager::FillPairMC( - t1, t2); // NOTE: This feature will only work for muons + t1, t2); // NOTE: This feature will only work for muons fHistMan->FillHistClass( - Form("MCTruthGenPairSel_%s", sig->GetName()), - dqefficiency_helpers::varValues()); + Form("MCTruthGenPairSel_%s", sig->GetName()), + dqefficiency_helpers::varValues()); if (useMiniTree.fConfigMiniTree) { // WARNING! To be checked dileptonMiniTreeGen(mcDecision, -999, t1.pt(), t1.eta(), @@ -4592,32 +4635,35 @@ struct AnalysisSameEventPairing { } void processElectronMuonSkimmed( - MyEventsVtxCovSelected const &events, - soa::Join const &barrelAssocs, - MyBarrelTracksWithCovWithAmbiguities const &barrelTracks, - soa::Join const &muonAssocs, - MyMuonTracksWithCovWithAmbiguities const &muons, - ReducedMCEvents const &mcEvents, ReducedMCTracks const &mcTracks) { + MyEventsVtxCovSelected const& events, + soa::Join const& barrelAssocs, + MyBarrelTracksWithCovWithAmbiguities const& barrelTracks, + soa::Join const& muonAssocs, + MyMuonTracksWithCovWithAmbiguities const& muons, + ReducedMCEvents const& mcEvents, ReducedMCTracks const& mcTracks) + { runEmuSameEventPairing( - events, trackAssocsPerCollision, barrelAssocs, barrelTracks, - muonAssocsPerCollision, muonAssocs, muons, mcEvents, mcTracks); + events, trackAssocsPerCollision, barrelAssocs, barrelTracks, + muonAssocsPerCollision, muonAssocs, muons, mcEvents, mcTracks); } void processMixingElectronMuonSkimmed( - soa::Filtered &events, - soa::Join const &barrelAssocs, - MyBarrelTracksWithCovWithAmbiguities const &barrelTracks, - soa::Join const &muonAssocs, - MyMuonTracksWithCovWithAmbiguities const &muons) { + soa::Filtered& events, + soa::Join const& barrelAssocs, + MyBarrelTracksWithCovWithAmbiguities const& barrelTracks, + soa::Join const& muonAssocs, + MyMuonTracksWithCovWithAmbiguities const& muons) + { runEmuSameSideMixing( - events, trackAssocsPerCollision, barrelAssocs, barrelTracks, - muonAssocsPerCollision, muonAssocs, muons); + events, trackAssocsPerCollision, barrelAssocs, barrelTracks, + muonAssocsPerCollision, muonAssocs, muons); } - void processDummy(MyEvents const &) { + void processDummy(MyEvents const&) + { // do nothing } @@ -4632,24 +4678,24 @@ struct AnalysisSameEventPairing { PROCESS_SWITCH(AnalysisSameEventPairing, processMuonOnlySkimmed, "Run muon only pairing, with skimmed tracks", false); PROCESS_SWITCH( - AnalysisSameEventPairing, processMuonOnlyVertexingSkimmed, - "Run muon only pairing with two-prong vertexing, with skimmed tracks", - false); + AnalysisSameEventPairing, processMuonOnlyVertexingSkimmed, + "Run muon only pairing with two-prong vertexing, with skimmed tracks", + false); PROCESS_SWITCH(AnalysisSameEventPairing, processElectronMuonSkimmed, "Run electron-muon pairing, with skimmed tracks/muons", false); PROCESS_SWITCH(AnalysisSameEventPairing, processMixingElectronMuonSkimmed, "Run electron-muon mixing pairing, with skimmed tracks/muons", false); PROCESS_SWITCH( - AnalysisSameEventPairing, processMCGen, - "Loop over MC particle stack and fill generator level histograms", false); + AnalysisSameEventPairing, processMCGen, + "Loop over MC particle stack and fill generator level histograms", false); PROCESS_SWITCH(AnalysisSameEventPairing, processMCGenWithGrouping, "Loop over MC particle stack (grouped MCTracks) and fill " "generator level histograms", false); PROCESS_SWITCH( - AnalysisSameEventPairing, processDummy, - "Dummy function, enabled only if none of the others are enabled", true); + AnalysisSameEventPairing, processDummy, + "Dummy function, enabled only if none of the others are enabled", true); }; // Run pairing for resonance with legs fulfilling separate cuts (asymmetric @@ -4659,7 +4705,7 @@ struct AnalysisAsymmetricPairing { Produces ditrackList; Produces ditrackExtraList; - o2::base::MatLayerCylSet *fLUT = nullptr; + o2::base::MatLayerCylSet* fLUT = nullptr; int fCurrentRun = -1; // needed to detect if the run changed and trigger // update of calibrations etc. @@ -4668,85 +4714,85 @@ struct AnalysisAsymmetricPairing { // Configurables Configurable fConfigLegCuts{ - "cfgLegCuts", "", - ":[:],[:[:],...]"}; + "cfgLegCuts", "", + ":[:],[:[:],...]"}; Configurable fConfigLegAFilterMask{ - "cfgLegAFilterMask", 0, - "Filter mask corresponding to cuts in event-selection"}; + "cfgLegAFilterMask", 0, + "Filter mask corresponding to cuts in event-selection"}; Configurable fConfigLegBFilterMask{ - "cfgLegBFilterMask", 0, - "Filter mask corresponding to cuts in event-selection"}; + "cfgLegBFilterMask", 0, + "Filter mask corresponding to cuts in event-selection"}; Configurable fConfigLegCFilterMask{ - "cfgLegCFilterMask", 0, - "Filter mask corresponding to cuts in event-selection"}; + "cfgLegCFilterMask", 0, + "Filter mask corresponding to cuts in event-selection"}; Configurable fConfigCommonTrackCuts{ - "cfgCommonTrackCuts", "", - "Comma separated list of cuts to be applied to all legs"}; + "cfgCommonTrackCuts", "", + "Comma separated list of cuts to be applied to all legs"}; Configurable fConfigPairCuts{ - "cfgPairCuts", "", "Comma separated list of pair cuts"}; + "cfgPairCuts", "", "Comma separated list of pair cuts"}; Configurable fConfigPairCutsJSON{ - "cfgPairCutsJSON", "", "Additional list of pair cuts in JSON format"}; + "cfgPairCutsJSON", "", "Additional list of pair cuts in JSON format"}; Configurable fConfigSkipAmbiguousIdCombinations{ - "cfgSkipAmbiguousIdCombinations", true, - "Choose whether to skip pairs/triples which pass a stricter combination " - "of cuts, e.g. KKPi triplets for D+ -> KPiPi"}; + "cfgSkipAmbiguousIdCombinations", true, + "Choose whether to skip pairs/triples which pass a stricter combination " + "of cuts, e.g. KKPi triplets for D+ -> KPiPi"}; Configurable fConfigHistogramSubgroups{ - "cfgAsymmetricPairingHistogramsSubgroups", "barrel,vertexing", - "Comma separated list of asymmetric-pairing histogram subgroups"}; + "cfgAsymmetricPairingHistogramsSubgroups", "barrel,vertexing", + "Comma separated list of asymmetric-pairing histogram subgroups"}; Configurable fConfigSameSignHistograms{ - "cfgSameSignHistograms", false, - "Include same sign pair histograms for 2-prong decays"}; + "cfgSameSignHistograms", false, + "Include same sign pair histograms for 2-prong decays"}; // Configurable fConfigAmbiguousHistograms{"cfgAmbiguousHistograms", // false, "Include separate histograms for pairs/triplets with ambiguous // tracks"}; Configurable fConfigReflectedHistograms{ - "cfgReflectedHistograms", false, - "Include separate histograms for pairs which are reflections of " - "previously counted pairs"}; + "cfgReflectedHistograms", false, + "Include separate histograms for pairs which are reflections of " + "previously counted pairs"}; Configurable fConfigQA{"cfgQA", false, "If true, fill QA histograms"}; Configurable fConfigAddJSONHistograms{ - "cfgAddJSONHistograms", "", "Histograms in JSON format"}; + "cfgAddJSONHistograms", "", "Histograms in JSON format"}; Configurable fConfigCcdbUrl{ - "ccdb-url", "http://alice-ccdb.cern.ch", "url of the ccdb repository"}; + "ccdb-url", "http://alice-ccdb.cern.ch", "url of the ccdb repository"}; Configurable fConfigGRPMagPath{ - "grpmagPath", "GLO/Config/GRPMagField", - "CCDB path of the GRPMagField object"}; + "grpmagPath", "GLO/Config/GRPMagField", + "CCDB path of the GRPMagField object"}; Configurable fConfigUseKFVertexing{ - "cfgUseKFVertexing", false, - "Use KF Particle for secondary vertex reconstruction (DCAFitter is used " - "by default)"}; + "cfgUseKFVertexing", false, + "Use KF Particle for secondary vertex reconstruction (DCAFitter is used " + "by default)"}; Configurable fConfigUseAbsDCA{ - "cfgUseAbsDCA", false, - "Use absolute DCA minimization instead of chi^2 minimization in " - "secondary vertexing"}; + "cfgUseAbsDCA", false, + "Use absolute DCA minimization instead of chi^2 minimization in " + "secondary vertexing"}; Configurable fConfigLutPath{"lutPath", "GLO/Param/MatLUT", "Path of the Lut parametrization"}; Configurable fConfigMCGenSignals{ - "cfgBarrelMCGenSignals", "", - "Comma separated list of MC signals (generated)"}; + "cfgBarrelMCGenSignals", "", + "Comma separated list of MC signals (generated)"}; Configurable fConfigMCRecSignals{ - "cfgBarrelMCRecSignals", "", - "Comma separated list of MC signals (reconstructed)"}; + "cfgBarrelMCRecSignals", "", + "Comma separated list of MC signals (reconstructed)"}; Configurable fConfigMCRecSignalsJSON{ - "cfgMCRecSignalsJSON", "", - "Additional list of MC signals (reconstructed) via JSON"}; + "cfgMCRecSignalsJSON", "", + "Additional list of MC signals (reconstructed) via JSON"}; Configurable fConfigMCGenSignalsJSON{ - "cfgMCGenSignalsJSON", "", - "Comma separated list of MC signals (generated) via JSON"}; + "cfgMCGenSignalsJSON", "", + "Comma separated list of MC signals (generated) via JSON"}; Service fCCDB{}; - HistogramManager *fHistMan = nullptr; + HistogramManager* fHistMan = nullptr; - std::vector fPairCuts; + std::vector fPairCuts; int fNPairHistPrefixes = 0; - std::vector fRecMCSignals; - std::vector fGenMCSignals; + std::vector fRecMCSignals; + std::vector fGenMCSignals; // Filter masks to find legs in BarrelTrackCuts table uint32_t fLegAFilterMask = 0; @@ -4775,23 +4821,24 @@ struct AnalysisAsymmetricPairing { static_cast(0); Preslice> - trackAssocsPerCollision = aod::reducedtrack_association::reducedeventId; + trackAssocsPerCollision = aod::reducedtrack_association::reducedeventId; // Partitions for triplets and asymmetric pairs Partition> - legACandidateAssocs = (o2::aod::dqanalysisflags::isBarrelSelected & - fConfigLegAFilterMask) > static_cast(0); + legACandidateAssocs = (o2::aod::dqanalysisflags::isBarrelSelected & + fConfigLegAFilterMask) > static_cast(0); Partition> - legBCandidateAssocs = (o2::aod::dqanalysisflags::isBarrelSelected & - fConfigLegBFilterMask) > static_cast(0); + legBCandidateAssocs = (o2::aod::dqanalysisflags::isBarrelSelected & + fConfigLegBFilterMask) > static_cast(0); Partition> - legCCandidateAssocs = (o2::aod::dqanalysisflags::isBarrelSelected & - fConfigLegCFilterMask) > static_cast(0); + legCCandidateAssocs = (o2::aod::dqanalysisflags::isBarrelSelected & + fConfigLegCFilterMask) > static_cast(0); // Map to track how many times a pair of tracks has been encountered std::map, int8_t> fPairCount; - void init(o2::framework::InitContext &context) { + void init(o2::framework::InitContext& context) + { bool isMCGen = context.mOptions.get("processMCGen") || context.mOptions.get("processMCGenWithEventSelection"); if (context.mOptions.get("processDummy")) { @@ -4815,16 +4862,16 @@ struct AnalysisAsymmetricPairing { std::unique_ptr objArray(cutNamesStr.Tokenize(",")); for (int icut = 0; icut < objArray->GetEntries(); ++icut) { fPairCuts.push_back( - dqcuts::GetCompositeCut(objArray->At(icut)->GetName())); + dqcuts::GetCompositeCut(objArray->At(icut)->GetName())); } } // Extra pair cuts via JSON TString addPairCutsStr = fConfigPairCutsJSON.value; if (addPairCutsStr != "") { - std::vector addPairCuts = - dqcuts::GetCutsFromJSON(addPairCutsStr.Data()); - for (auto const &t : addPairCuts) { - fPairCuts.push_back(dynamic_cast(t)); + std::vector addPairCuts = + dqcuts::GetCutsFromJSON(addPairCutsStr.Data()); + for (auto const& t : addPairCuts) { + fPairCuts.push_back(dynamic_cast(t)); cutNamesStr += Form(",%s", t->GetName()); } } @@ -4838,8 +4885,8 @@ struct AnalysisAsymmetricPairing { TString sigNamesStr = fConfigMCRecSignals.value; std::unique_ptr objRecSigArray(sigNamesStr.Tokenize(",")); for (int isig = 0; isig < objRecSigArray->GetEntries(); ++isig) { - MCSignal *sig = o2::aod::dqmcsignals::GetMCSignal( - objRecSigArray->At(isig)->GetName()); + MCSignal* sig = o2::aod::dqmcsignals::GetMCSignal( + objRecSigArray->At(isig)->GetName()); if (sig) { fRecMCSignals.push_back(sig); } @@ -4847,9 +4894,9 @@ struct AnalysisAsymmetricPairing { // Add the reco MCSignals from the JSON config TString addMCSignalsStr = fConfigMCRecSignalsJSON.value; if (addMCSignalsStr != "") { - std::vector addMCSignals = - dqmcsignals::GetMCSignalsFromJSON(addMCSignalsStr.Data()); - for (auto const &mcIt : addMCSignals) { + std::vector addMCSignals = + dqmcsignals::GetMCSignalsFromJSON(addMCSignalsStr.Data()); + for (auto const& mcIt : addMCSignals) { if (mcIt->GetNProngs() != 2 && mcIt->GetNProngs() != 3) { LOG(fatal) << "Signal at reconstructed level requested (" << mcIt->GetName() << ") " @@ -4876,9 +4923,9 @@ struct AnalysisAsymmetricPairing { "cfgBarrelTrackCutsJSON", tempCuts, false); TString addTrackCutsStr = tempCuts; if (addTrackCutsStr != "") { - std::vector addTrackCuts = - dqcuts::GetCutsFromJSON(addTrackCutsStr.Data()); - for (auto const &t : addTrackCuts) { + std::vector addTrackCuts = + dqcuts::GetCutsFromJSON(addTrackCutsStr.Data()); + for (auto const& t : addTrackCuts) { tempCutsStr += Form(",%s", t->GetName()); } } @@ -4895,8 +4942,8 @@ struct AnalysisAsymmetricPairing { fCommonTrackCutMask |= static_cast(1) << objArray->IndexOf(objArrayCommon->At(icut)); fCommonTrackCutFilterMasks[icut] = - static_cast(1) - << objArray->IndexOf(objArrayCommon->At(icut)); + static_cast(1) + << objArray->IndexOf(objArrayCommon->At(icut)); fCommonCutNames.push_back(objArrayCommon->At(icut)->GetName()); } else { LOGF(fatal, @@ -5004,8 +5051,8 @@ struct AnalysisAsymmetricPairing { fConfigHistogramSubgroups.value.data()); if (fConfigQA) { DefineHistograms( - fHistMan, Form("TripletsBarrelSE_ambiguous_%s", legsStr.Data()), - fConfigHistogramSubgroups.value.data()); + fHistMan, Form("TripletsBarrelSE_ambiguous_%s", legsStr.Data()), + fConfigHistogramSubgroups.value.data()); } std::unique_ptr objArrayCommon(commonNamesStr.Tokenize(",")); @@ -5019,7 +5066,7 @@ struct AnalysisAsymmetricPairing { TString pairCutNamesStr = fConfigPairCuts.value; if (!pairCutNamesStr.IsNull()) { // if pair cuts std::unique_ptr objArrayPair( - pairCutNamesStr.Tokenize(",")); + pairCutNamesStr.Tokenize(",")); fNPairCuts = objArrayPair->GetEntries(); for (int iPairCut = 0; iPairCut < fNPairCuts; ++iPairCut) { // loop over pair cuts @@ -5044,9 +5091,9 @@ struct AnalysisAsymmetricPairing { for (unsigned int isig = 0; isig < fRecMCSignals.size(); isig++) { auto sig = fRecMCSignals.at(isig); DefineHistograms( - fHistMan, - Form("TripletsBarrelSE_%s_%s", legsStr.Data(), sig->GetName()), - fConfigHistogramSubgroups.value.data()); + fHistMan, + Form("TripletsBarrelSE_%s_%s", legsStr.Data(), sig->GetName()), + fConfigHistogramSubgroups.value.data()); for (int iCommonCut = 0; iCommonCut < fNCommonTrackCuts; ++iCommonCut) { @@ -5059,23 +5106,23 @@ struct AnalysisAsymmetricPairing { if (!cutNamesStr.IsNull()) { // if pair cuts std::unique_ptr objArrayPair( - cutNamesStr.Tokenize(",")); + cutNamesStr.Tokenize(",")); for (int iPairCut = 0; iPairCut < fNPairCuts; ++iPairCut) { // loop over pair cuts DefineHistograms( - fHistMan, - Form("TripletsBarrelSE_%s_%s_%s", legsStr.Data(), - objArrayPair->At(iPairCut)->GetName(), sig->GetName()), - fConfigHistogramSubgroups.value.data()); + fHistMan, + Form("TripletsBarrelSE_%s_%s_%s", legsStr.Data(), + objArrayPair->At(iPairCut)->GetName(), sig->GetName()), + fConfigHistogramSubgroups.value.data()); for (int iCommonCut = 0; iCommonCut < fNCommonTrackCuts; ++iCommonCut) { DefineHistograms( - fHistMan, - Form("TripletsBarrelSE_%s_%s_%s_%s", legsStr.Data(), - objArrayCommon->At(iCommonCut)->GetName(), - objArrayPair->At(iPairCut)->GetName(), - sig->GetName()), - fConfigHistogramSubgroups.value.data()); + fHistMan, + Form("TripletsBarrelSE_%s_%s_%s_%s", legsStr.Data(), + objArrayCommon->At(iCommonCut)->GetName(), + objArrayPair->At(iPairCut)->GetName(), + sig->GetName()), + fConfigHistogramSubgroups.value.data()); } // end loop (common cuts) } // end loop (pair cuts) } // end if (pair cuts) @@ -5091,9 +5138,9 @@ struct AnalysisAsymmetricPairing { for (int iPrefix = 0; iPrefix < fNPairHistPrefixes; ++iPrefix) { DefineHistograms( - fHistMan, - Form("%s_%s", pairHistPrefixes[iPrefix].Data(), legsStr.Data()), - fConfigHistogramSubgroups.value.data()); + fHistMan, + Form("%s_%s", pairHistPrefixes[iPrefix].Data(), legsStr.Data()), + fConfigHistogramSubgroups.value.data()); } if (fConfigQA) { for (int iPrefix = 0; iPrefix < fNPairHistPrefixes; ++iPrefix) { @@ -5132,10 +5179,10 @@ struct AnalysisAsymmetricPairing { ++iPairCut) { // loop over pair cuts for (int iPrefix = 0; iPrefix < fNPairHistPrefixes; ++iPrefix) { DefineHistograms( - fHistMan, - Form("%s_%s_%s", pairHistPrefixes[iPrefix].Data(), - legsStr.Data(), objArrayPair->At(iPairCut)->GetName()), - fConfigHistogramSubgroups.value.data()); + fHistMan, + Form("%s_%s_%s", pairHistPrefixes[iPrefix].Data(), + legsStr.Data(), objArrayPair->At(iPairCut)->GetName()), + fConfigHistogramSubgroups.value.data()); } for (int iCommonCut = 0; iCommonCut < fNCommonTrackCuts; ++iCommonCut) { @@ -5189,7 +5236,7 @@ struct AnalysisAsymmetricPairing { if (!cutNamesStr.IsNull()) { // if pair cuts std::unique_ptr objArrayPair( - cutNamesStr.Tokenize(",")); + cutNamesStr.Tokenize(",")); for (int iPairCut = 0; iPairCut < fNPairCuts; ++iPairCut) { // loop over pair cuts for (int iPrefix = 0; iPrefix < fNPairHistPrefixes; ++iPrefix) { @@ -5206,13 +5253,13 @@ struct AnalysisAsymmetricPairing { for (int iPrefix = 0; iPrefix < fNPairHistPrefixes; ++iPrefix) { DefineHistograms( - fHistMan, - Form("%s_%s_%s_%s_%s", pairHistPrefixes[iPrefix].Data(), - legsStr.Data(), - objArrayCommon->At(iCommonCut)->GetName(), - objArrayPair->At(iPairCut)->GetName(), - sig->GetName()), - fConfigHistogramSubgroups.value.data()); + fHistMan, + Form("%s_%s_%s_%s_%s", pairHistPrefixes[iPrefix].Data(), + legsStr.Data(), + objArrayCommon->At(iCommonCut)->GetName(), + objArrayPair->At(iPairCut)->GetName(), + sig->GetName()), + fConfigHistogramSubgroups.value.data()); } } // end loop (common cuts) } // end loop (pair cuts) @@ -5228,21 +5275,21 @@ struct AnalysisAsymmetricPairing { TString sigGenNamesStr = fConfigMCGenSignals.value; std::unique_ptr objGenSigArray(sigGenNamesStr.Tokenize(",")); for (int isig = 0; isig < objGenSigArray->GetEntries(); isig++) { - MCSignal *sig = o2::aod::dqmcsignals::GetMCSignal( - objGenSigArray->At(isig)->GetName()); + MCSignal* sig = o2::aod::dqmcsignals::GetMCSignal( + objGenSigArray->At(isig)->GetName()); if (sig) { if (sig->GetNProngs() == 1) { // NOTE: 1-prong signals required fGenMCSignals.push_back(sig); DefineHistograms( - fHistMan, Form("MCTruthGen_%s;", sig->GetName()), - fConfigHistogramSubgroups.value - .data()); // TODO: Add these names to a std::vector to avoid - // using Form in the process function + fHistMan, Form("MCTruthGen_%s;", sig->GetName()), + fConfigHistogramSubgroups.value + .data()); // TODO: Add these names to a std::vector to avoid + // using Form in the process function DefineHistograms( - fHistMan, Form("MCTruthGenSel_%s;", sig->GetName()), - fConfigHistogramSubgroups.value - .data()); // TODO: Add these names to a std::vector to avoid - // using Form in the process function + fHistMan, Form("MCTruthGenSel_%s;", sig->GetName()), + fConfigHistogramSubgroups.value + .data()); // TODO: Add these names to a std::vector to avoid + // using Form in the process function } } } @@ -5250,21 +5297,21 @@ struct AnalysisAsymmetricPairing { // Add the gen MCSignals from the JSON config addMCSignalsStr = fConfigMCGenSignalsJSON.value; if (addMCSignalsStr != "") { - std::vector addMCSignals = - dqmcsignals::GetMCSignalsFromJSON(addMCSignalsStr.Data()); - for (auto const &mcIt : addMCSignals) { + std::vector addMCSignals = + dqmcsignals::GetMCSignalsFromJSON(addMCSignalsStr.Data()); + for (auto const& mcIt : addMCSignals) { if (mcIt->GetNProngs() == 1) { fGenMCSignals.push_back(mcIt); DefineHistograms( - fHistMan, Form("MCTruthGen_%s;", mcIt->GetName()), - fConfigHistogramSubgroups.value - .data()); // TODO: Add these names to a std::vector to avoid - // using Form in the process function + fHistMan, Form("MCTruthGen_%s;", mcIt->GetName()), + fConfigHistogramSubgroups.value + .data()); // TODO: Add these names to a std::vector to avoid + // using Form in the process function DefineHistograms( - fHistMan, Form("MCTruthGenSel_%s;", mcIt->GetName()), - fConfigHistogramSubgroups.value - .data()); // TODO: Add these names to a std::vector to avoid - // using Form in the process function + fHistMan, Form("MCTruthGenSel_%s;", mcIt->GetName()), + fConfigHistogramSubgroups.value + .data()); // TODO: Add these names to a std::vector to avoid + // using Form in the process function } } } @@ -5290,10 +5337,11 @@ struct AnalysisAsymmetricPairing { } // Make sure only pairs or only triplets of leg cuts were given int tripletCheckSum = - std::count(isThreeProng.begin(), isThreeProng.end(), true); + std::count(isThreeProng.begin(), isThreeProng.end(), true); if (tripletCheckSum != 0 && tripletCheckSum != fNLegCuts) { - LOGF(fatal, "A mix of pairs and triplets was given as leg cuts. Check " - "your config!"); + LOGF(fatal, + "A mix of pairs and triplets was given as leg cuts. Check " + "your config!"); } fCurrentRun = 0; @@ -5303,21 +5351,22 @@ struct AnalysisAsymmetricPairing { fCCDB->setLocalObjectValidityChecking(); fLUT = o2::base::MatLayerCylSet::rectifyPtrFromFile( - fCCDB->get(fConfigLutPath)); + fCCDB->get(fConfigLutPath)); VarManager::SetupMatLUTFwdDCAFitter(fLUT); dqhistograms::AddHistogramsFromJSON( - fHistMan, - fConfigAddJSONHistograms.value.c_str()); // ad-hoc histograms via JSON + fHistMan, + fConfigAddJSONHistograms.value.c_str()); // ad-hoc histograms via JSON VarManager::SetUseVars( - fHistMan->GetUsedVars()); // provide the list of required variables so - // that VarManager knows what to fill + fHistMan->GetUsedVars()); // provide the list of required variables so + // that VarManager knows what to fill fOutputList.setObject(fHistMan->GetMainHistogramList()); } - void initParamsFromCCDB(uint64_t timestamp, bool isTriplets) { + void initParamsFromCCDB(uint64_t timestamp, bool isTriplets) + { auto grpmag = fCCDB->getForTimeStamp( - fConfigGRPMagPath, timestamp); + fConfigGRPMagPath, timestamp); float magField = 0.0; if (grpmag != nullptr) { magField = grpmag->getNominalL3Field(); @@ -5338,9 +5387,9 @@ struct AnalysisAsymmetricPairing { VarManager::SetupTwoProngKFParticle(magField); } else { VarManager::SetupTwoProngDCAFitter( - magField, true, 200.0f, 4.0f, 1.0e-3f, 0.9f, - fConfigUseAbsDCA - .value); // TODO: get these parameters from Configurables + magField, true, 200.0f, 4.0f, 1.0e-3f, 0.9f, + fConfigUseAbsDCA + .value); // TODO: get these parameters from Configurables } } } @@ -5350,12 +5399,13 @@ struct AnalysisAsymmetricPairing { template - void runAsymmetricPairing(TEvents const &events, - Preslice &preslice, - TTrackAssocs const & /*assocs*/, - TTracks const & /*tracks*/, - ReducedMCEvents const & /*mcEvents*/, - ReducedMCTracks const & /*mcTracks*/) { + void runAsymmetricPairing(TEvents const& events, + Preslice& preslice, + TTrackAssocs const& /*assocs*/, + TTracks const& /*tracks*/, + ReducedMCEvents const& /*mcEvents*/, + ReducedMCTracks const& /*mcTracks*/) + { fPairCount.clear(); if (events.size() > 0) { // Additional protection to avoid crashing of @@ -5373,10 +5423,10 @@ struct AnalysisAsymmetricPairing { ditrackExtraList.reserve(1); constexpr bool trackHasCov = - ((TTrackFillMap & VarManager::ObjTypes::TrackCov) > 0 || - (TTrackFillMap & VarManager::ObjTypes::ReducedTrackBarrelCov) > 0); + ((TTrackFillMap & VarManager::ObjTypes::TrackCov) > 0 || + (TTrackFillMap & VarManager::ObjTypes::ReducedTrackBarrelCov) > 0); - for (auto const &event : events) { + for (auto const& event : events) { if (!event.isEventSelected_bit(0)) { continue; } @@ -5386,18 +5436,18 @@ struct AnalysisAsymmetricPairing { dqefficiency_helpers::varValues()); auto groupedLegAAssocs = - legACandidateAssocs.sliceBy(preslice, event.globalIndex()); + legACandidateAssocs.sliceBy(preslice, event.globalIndex()); if (groupedLegAAssocs.size() == 0) { continue; } auto groupedLegBAssocs = - legBCandidateAssocs.sliceBy(preslice, event.globalIndex()); + legBCandidateAssocs.sliceBy(preslice, event.globalIndex()); if (groupedLegBAssocs.size() == 0) { continue; } - for (auto const &[a1, a2] : combinations(soa::CombinationsFullIndexPolicy( - groupedLegAAssocs, groupedLegBAssocs))) { + for (auto const& [a1, a2] : combinations(soa::CombinationsFullIndexPolicy( + groupedLegAAssocs, groupedLegBAssocs))) { uint32_t twoTrackFilter = 0; uint32_t twoTrackCommonFilter = 0; @@ -5492,9 +5542,9 @@ struct AnalysisAsymmetricPairing { (twoTrackFilter & (static_cast(1) << 31)); if (sign1 * sign2 < 0) { // +- pairs fHistMan->FillHistClass( - Form("PairsBarrelSEPM_%s", fLegCutNames[icut].Data()), - dqefficiency_helpers::varValues()); // reconstructed, - // unmatched + Form("PairsBarrelSEPM_%s", fLegCutNames[icut].Data()), + dqefficiency_helpers::varValues()); // reconstructed, + // unmatched if (isAmbi && fConfigQA) { fHistMan->FillHistClass(Form("PairsBarrelSEPM_ambiguous_%s", fLegCutNames[icut].Data()), @@ -5508,8 +5558,8 @@ struct AnalysisAsymmetricPairing { } else if (fConfigSameSignHistograms.value) { if (sign1 > 0) { // ++ pairs fHistMan->FillHistClass( - Form("PairsBarrelSEPP_%s", fLegCutNames[icut].Data()), - dqefficiency_helpers::varValues()); + Form("PairsBarrelSEPP_%s", fLegCutNames[icut].Data()), + dqefficiency_helpers::varValues()); if (isAmbi && fConfigQA) { fHistMan->FillHistClass(Form("PairsBarrelSEPP_ambiguous_%s", fLegCutNames[icut].Data()), @@ -5522,8 +5572,8 @@ struct AnalysisAsymmetricPairing { } } else { // -- pairs fHistMan->FillHistClass( - Form("PairsBarrelSEMM_%s", fLegCutNames[icut].Data()), - dqefficiency_helpers::varValues()); + Form("PairsBarrelSEMM_%s", fLegCutNames[icut].Data()), + dqefficiency_helpers::varValues()); if (isAmbi && fConfigQA) { fHistMan->FillHistClass(Form("PairsBarrelSEMM_ambiguous_%s", fLegCutNames[icut].Data()), @@ -5546,35 +5596,35 @@ struct AnalysisAsymmetricPairing { dqefficiency_helpers::varValues()); if (isReflected && fConfigReflectedHistograms.value) { fHistMan->FillHistClass( - Form("PairsBarrelSEPM_reflected_%s_%s", - fLegCutNames[icut].Data(), - fRecMCSignalNames[isig].Data()), - dqefficiency_helpers::varValues()); + Form("PairsBarrelSEPM_reflected_%s_%s", + fLegCutNames[icut].Data(), + fRecMCSignalNames[isig].Data()), + dqefficiency_helpers::varValues()); } } else if (fConfigSameSignHistograms.value) { if (sign1 > 0) { fHistMan->FillHistClass( - Form("PairsBarrelSEPP_%s_%s", fLegCutNames[icut].Data(), - fRecMCSignalNames[isig].Data()), - dqefficiency_helpers::varValues()); + Form("PairsBarrelSEPP_%s_%s", fLegCutNames[icut].Data(), + fRecMCSignalNames[isig].Data()), + dqefficiency_helpers::varValues()); if (isReflected && fConfigReflectedHistograms.value) { fHistMan->FillHistClass( - Form("PairsBarrelSEPP_reflected_%s_%s", - fLegCutNames[icut].Data(), - fRecMCSignalNames[isig].Data()), - dqefficiency_helpers::varValues()); + Form("PairsBarrelSEPP_reflected_%s_%s", + fLegCutNames[icut].Data(), + fRecMCSignalNames[isig].Data()), + dqefficiency_helpers::varValues()); } } else { fHistMan->FillHistClass( - Form("PairsBarrelSEMM_%s_%s", fLegCutNames[icut].Data(), - fRecMCSignalNames[isig].Data()), - dqefficiency_helpers::varValues()); + Form("PairsBarrelSEMM_%s_%s", fLegCutNames[icut].Data(), + fRecMCSignalNames[isig].Data()), + dqefficiency_helpers::varValues()); if (isReflected && fConfigReflectedHistograms.value) { fHistMan->FillHistClass( - Form("PairsBarrelSEMM_reflected_%s_%s", - fLegCutNames[icut].Data(), - fRecMCSignalNames[isig].Data()), - dqefficiency_helpers::varValues()); + Form("PairsBarrelSEMM_reflected_%s_%s", + fLegCutNames[icut].Data(), + fRecMCSignalNames[isig].Data()), + dqefficiency_helpers::varValues()); } } } @@ -5586,20 +5636,20 @@ struct AnalysisAsymmetricPairing { fCommonTrackCutFilterMasks[iCommonCut]) { if (sign1 * sign2 < 0) { fHistMan->FillHistClass( - Form("PairsBarrelSEPM_%s_%s", fLegCutNames[icut].Data(), - fCommonCutNames[iCommonCut].Data()), - dqefficiency_helpers::varValues()); + Form("PairsBarrelSEPM_%s_%s", fLegCutNames[icut].Data(), + fCommonCutNames[iCommonCut].Data()), + dqefficiency_helpers::varValues()); } else if (fConfigSameSignHistograms.value) { if (sign1 > 0) { fHistMan->FillHistClass( - Form("PairsBarrelSEPP_%s_%s", fLegCutNames[icut].Data(), - fCommonCutNames[iCommonCut].Data()), - dqefficiency_helpers::varValues()); + Form("PairsBarrelSEPP_%s_%s", fLegCutNames[icut].Data(), + fCommonCutNames[iCommonCut].Data()), + dqefficiency_helpers::varValues()); } else { fHistMan->FillHistClass( - Form("PairsBarrelSEMM_%s_%s", fLegCutNames[icut].Data(), - fCommonCutNames[iCommonCut].Data()), - dqefficiency_helpers::varValues()); + Form("PairsBarrelSEMM_%s_%s", fLegCutNames[icut].Data(), + fCommonCutNames[iCommonCut].Data()), + dqefficiency_helpers::varValues()); } } for (unsigned int isig = 0; isig < fRecMCSignals.size(); @@ -5607,26 +5657,26 @@ struct AnalysisAsymmetricPairing { if (mcDecision & (static_cast(1) << isig)) { if (sign1 * sign2 < 0) { fHistMan->FillHistClass( - Form("PairsBarrelSEPM_%s_%s_%s", + Form("PairsBarrelSEPM_%s_%s_%s", + fLegCutNames[icut].Data(), + fCommonCutNames[iCommonCut].Data(), + fRecMCSignalNames[isig].Data()), + dqefficiency_helpers::varValues()); + } else if (fConfigSameSignHistograms.value) { + if (sign1 > 0) { + fHistMan->FillHistClass( + Form("PairsBarrelSEPP_%s_%s_%s", fLegCutNames[icut].Data(), fCommonCutNames[iCommonCut].Data(), fRecMCSignalNames[isig].Data()), dqefficiency_helpers::varValues()); - } else if (fConfigSameSignHistograms.value) { - if (sign1 > 0) { - fHistMan->FillHistClass( - Form("PairsBarrelSEPP_%s_%s_%s", - fLegCutNames[icut].Data(), - fCommonCutNames[iCommonCut].Data(), - fRecMCSignalNames[isig].Data()), - dqefficiency_helpers::varValues()); } else { fHistMan->FillHistClass( - Form("PairsBarrelSEMM_%s_%s_%s", - fLegCutNames[icut].Data(), - fCommonCutNames[iCommonCut].Data(), - fRecMCSignalNames[isig].Data()), - dqefficiency_helpers::varValues()); + Form("PairsBarrelSEMM_%s_%s_%s", + fLegCutNames[icut].Data(), + fCommonCutNames[iCommonCut].Data(), + fRecMCSignalNames[isig].Data()), + dqefficiency_helpers::varValues()); } } } @@ -5637,7 +5687,7 @@ struct AnalysisAsymmetricPairing { for (auto cut = fPairCuts.begin(); cut != fPairCuts.end(); cut++, iPairCut++) { if (!((*cut)->IsSelected( - dqefficiency_helpers::varValues()))) { // apply pair cuts + dqefficiency_helpers::varValues()))) { // apply pair cuts continue; } pairFilter |= (static_cast(1) << iPairCut); @@ -5665,26 +5715,26 @@ struct AnalysisAsymmetricPairing { if (mcDecision & (static_cast(1) << isig)) { if (sign1 * sign2 < 0) { fHistMan->FillHistClass( - Form("PairsBarrelSEPM_%s_%s_%s", + Form("PairsBarrelSEPM_%s_%s_%s", + fLegCutNames[icut].Data(), + fPairCutNames[iPairCut].Data(), + fRecMCSignalNames[isig].Data()), + dqefficiency_helpers::varValues()); + } else if (fConfigSameSignHistograms.value) { + if (sign1 > 0) { + fHistMan->FillHistClass( + Form("PairsBarrelSEPP_%s_%s_%s", fLegCutNames[icut].Data(), fPairCutNames[iPairCut].Data(), fRecMCSignalNames[isig].Data()), dqefficiency_helpers::varValues()); - } else if (fConfigSameSignHistograms.value) { - if (sign1 > 0) { - fHistMan->FillHistClass( - Form("PairsBarrelSEPP_%s_%s_%s", - fLegCutNames[icut].Data(), - fPairCutNames[iPairCut].Data(), - fRecMCSignalNames[isig].Data()), - dqefficiency_helpers::varValues()); } else { fHistMan->FillHistClass( - Form("PairsBarrelSEMM_%s_%s_%s", - fLegCutNames[icut].Data(), - fPairCutNames[iPairCut].Data(), - fRecMCSignalNames[isig].Data()), - dqefficiency_helpers::varValues()); + Form("PairsBarrelSEMM_%s_%s_%s", + fLegCutNames[icut].Data(), + fPairCutNames[iPairCut].Data(), + fRecMCSignalNames[isig].Data()), + dqefficiency_helpers::varValues()); } } } @@ -5696,26 +5746,26 @@ struct AnalysisAsymmetricPairing { fCommonTrackCutFilterMasks[iCommonCut]) { if (sign1 * sign2 < 0) { fHistMan->FillHistClass( - Form("PairsBarrelSEPM_%s_%s_%s", + Form("PairsBarrelSEPM_%s_%s_%s", + fLegCutNames[icut].Data(), + fCommonCutNames[iCommonCut].Data(), + fPairCutNames[iPairCut].Data()), + dqefficiency_helpers::varValues()); + } else if (fConfigSameSignHistograms.value) { + if (sign1 > 0) { + fHistMan->FillHistClass( + Form("PairsBarrelSEPP_%s_%s_%s", fLegCutNames[icut].Data(), fCommonCutNames[iCommonCut].Data(), fPairCutNames[iPairCut].Data()), dqefficiency_helpers::varValues()); - } else if (fConfigSameSignHistograms.value) { - if (sign1 > 0) { - fHistMan->FillHistClass( - Form("PairsBarrelSEPP_%s_%s_%s", - fLegCutNames[icut].Data(), - fCommonCutNames[iCommonCut].Data(), - fPairCutNames[iPairCut].Data()), - dqefficiency_helpers::varValues()); } else { fHistMan->FillHistClass( - Form("PairsBarrelSEMM_%s_%s_%s", - fLegCutNames[icut].Data(), - fCommonCutNames[iCommonCut].Data(), - fPairCutNames[iPairCut].Data()), - dqefficiency_helpers::varValues()); + Form("PairsBarrelSEMM_%s_%s_%s", + fLegCutNames[icut].Data(), + fCommonCutNames[iCommonCut].Data(), + fPairCutNames[iPairCut].Data()), + dqefficiency_helpers::varValues()); } } for (unsigned int isig = 0; isig < fRecMCSignals.size(); @@ -5723,29 +5773,29 @@ struct AnalysisAsymmetricPairing { if (mcDecision & (static_cast(1) << isig)) { if (sign1 * sign2 < 0) { fHistMan->FillHistClass( - Form("PairsBarrelSEPM_%s_%s_%s_%s", + Form("PairsBarrelSEPM_%s_%s_%s_%s", + fLegCutNames[icut].Data(), + fCommonCutNames[iCommonCut].Data(), + fPairCutNames[iPairCut].Data(), + fRecMCSignalNames[isig].Data()), + dqefficiency_helpers::varValues()); + } else if (fConfigSameSignHistograms.value) { + if (sign1 > 0) { + fHistMan->FillHistClass( + Form("PairsBarrelSEPP_%s_%s_%s_%s", fLegCutNames[icut].Data(), fCommonCutNames[iCommonCut].Data(), fPairCutNames[iPairCut].Data(), fRecMCSignalNames[isig].Data()), dqefficiency_helpers::varValues()); - } else if (fConfigSameSignHistograms.value) { - if (sign1 > 0) { - fHistMan->FillHistClass( - Form("PairsBarrelSEPP_%s_%s_%s_%s", - fLegCutNames[icut].Data(), - fCommonCutNames[iCommonCut].Data(), - fPairCutNames[iPairCut].Data(), - fRecMCSignalNames[isig].Data()), - dqefficiency_helpers::varValues()); } else { fHistMan->FillHistClass( - Form("PairsBarrelSEMM_%s_%s_%s_%s", - fLegCutNames[icut].Data(), - fCommonCutNames[iCommonCut].Data(), - fPairCutNames[iPairCut].Data(), - fRecMCSignalNames[isig].Data()), - dqefficiency_helpers::varValues()); + Form("PairsBarrelSEMM_%s_%s_%s_%s", + fLegCutNames[icut].Data(), + fCommonCutNames[iCommonCut].Data(), + fPairCutNames[iPairCut].Data(), + fRecMCSignalNames[isig].Data()), + dqefficiency_helpers::varValues()); } } } @@ -5756,17 +5806,17 @@ struct AnalysisAsymmetricPairing { } } // end loop (cuts) ditrackList( - event.globalIndex(), VarManager::fgValues[VarManager::kMass], - VarManager::fgValues[VarManager::kPt], - VarManager::fgValues[VarManager::kEta], - VarManager::fgValues[VarManager::kPhi], t1.sign() + t2.sign(), - twoTrackFilter, pairFilter, twoTrackCommonFilter); + event.globalIndex(), VarManager::fgValues[VarManager::kMass], + VarManager::fgValues[VarManager::kPt], + VarManager::fgValues[VarManager::kEta], + VarManager::fgValues[VarManager::kPhi], t1.sign() + t2.sign(), + twoTrackFilter, pairFilter, twoTrackCommonFilter); if constexpr (trackHasCov && TTwoProngFitter) { ditrackExtraList( - t1.globalIndex(), t2.globalIndex(), - VarManager::fgValues[VarManager::kVertexingTauzProjected], - VarManager::fgValues[VarManager::kVertexingLzProjected], - VarManager::fgValues[VarManager::kVertexingLxyProjected]); + t1.globalIndex(), t2.globalIndex(), + VarManager::fgValues[VarManager::kVertexingTauzProjected], + VarManager::fgValues[VarManager::kVertexingLzProjected], + VarManager::fgValues[VarManager::kVertexingLxyProjected]); } } // end inner assoc loop (leg A) } // end event loop @@ -5776,11 +5826,12 @@ struct AnalysisAsymmetricPairing { template - void runThreeProng(TEvents const &events, Preslice &preslice, - TTrackAssocs const & /*assocs*/, TTracks const &tracks, - ReducedMCEvents const & /*mcEvents*/, - ReducedMCTracks const & /*mcTracks*/, - VarManager::PairCandidateType tripletType) { + void runThreeProng(TEvents const& events, Preslice& preslice, + TTrackAssocs const& /*assocs*/, TTracks const& tracks, + ReducedMCEvents const& /*mcEvents*/, + ReducedMCTracks const& /*mcTracks*/, + VarManager::PairCandidateType tripletType) + { if (events.size() > 0) { // Additional protection to avoid crashing of // events.begin().runNumber() if (fCurrentRun != events.begin().runNumber()) { @@ -5789,7 +5840,7 @@ struct AnalysisAsymmetricPairing { } } - for (auto const &event : events) { + for (auto const& event : events) { if (!event.isEventSelected_bit(0)) { continue; } @@ -5799,35 +5850,35 @@ struct AnalysisAsymmetricPairing { dqefficiency_helpers::varValues()); auto groupedLegAAssocs = - legACandidateAssocs.sliceBy(preslice, event.globalIndex()); + legACandidateAssocs.sliceBy(preslice, event.globalIndex()); if (groupedLegAAssocs.size() == 0) { continue; } auto groupedLegBAssocs = - legBCandidateAssocs.sliceBy(preslice, event.globalIndex()); + legBCandidateAssocs.sliceBy(preslice, event.globalIndex()); if (groupedLegBAssocs.size() == 0) { continue; } auto groupedLegCAssocs = - legCCandidateAssocs.sliceBy(preslice, event.globalIndex()); + legCCandidateAssocs.sliceBy(preslice, event.globalIndex()); if (groupedLegCAssocs.size() == 0) { continue; } // Based on triplet type, make suitable combinations of the partitions if (tripletType == VarManager::kTripleCandidateToPKPi) { - for (auto const &[a1, a2, a3] : + for (auto const& [a1, a2, a3] : combinations(soa::CombinationsFullIndexPolicy( - groupedLegAAssocs, groupedLegBAssocs, groupedLegCAssocs))) { + groupedLegAAssocs, groupedLegBAssocs, groupedLegCAssocs))) { readTriplet( - a1, a2, a3, tracks, event, tripletType); + a1, a2, a3, tracks, event, tripletType); } } else if (tripletType == VarManager::kTripleCandidateToKPiPi) { - for (auto const &a1 : groupedLegAAssocs) { - for (auto const &[a2, a3] : + for (auto const& a1 : groupedLegAAssocs) { + for (auto const& [a2, a3] : combinations(groupedLegBAssocs, groupedLegCAssocs)) { readTriplet( - a1, a2, a3, tracks, event, tripletType); + a1, a2, a3, tracks, event, tripletType); } } } else { @@ -5841,10 +5892,11 @@ struct AnalysisAsymmetricPairing { template - void readTriplet(TTrackAssoc const &a1, TTrackAssoc const &a2, - TTrackAssoc const &a3, TTracks const & /*tracks*/, - TEvent const &event, - VarManager::PairCandidateType tripletType) { + void readTriplet(TTrackAssoc const& a1, TTrackAssoc const& a2, + TTrackAssoc const& a3, TTracks const& /*tracks*/, + TEvent const& event, + VarManager::PairCandidateType tripletType) + { uint32_t mcDecision = 0; uint32_t threeTrackFilter = 0; @@ -5941,7 +5993,7 @@ struct AnalysisAsymmetricPairing { tripletType); if constexpr (TThreeProngFitter) { VarManager::FillTripletVertexing( - event, t1, t2, t3, tripletType); + event, t1, t2, t3, tripletType); } // Fill histograms @@ -5952,21 +6004,21 @@ struct AnalysisAsymmetricPairing { (threeTrackFilter & (static_cast(1) << 31)); if (threeTrackFilter & (static_cast(1) << icut)) { fHistMan->FillHistClass( - Form("TripletsBarrelSE_%s", fLegCutNames[icut].Data()), - dqefficiency_helpers::varValues()); + Form("TripletsBarrelSE_%s", fLegCutNames[icut].Data()), + dqefficiency_helpers::varValues()); for (unsigned int isig = 0; isig < fRecMCSignals.size(); isig++) { // loop over MC signals if (mcDecision & (static_cast(1) << isig)) { fHistMan->FillHistClass( - Form("TripletsBarrelSE_%s_%s", fLegCutNames[icut].Data(), - fRecMCSignalNames[isig].Data()), - dqefficiency_helpers::varValues()); // matched signal + Form("TripletsBarrelSE_%s_%s", fLegCutNames[icut].Data(), + fRecMCSignalNames[isig].Data()), + dqefficiency_helpers::varValues()); // matched signal } } // end loop (MC signals) if (fConfigQA && isAmbi) { fHistMan->FillHistClass( - Form("TripletsBarrelSE_ambiguous_%s", fLegCutNames[icut].Data()), - dqefficiency_helpers::varValues()); + Form("TripletsBarrelSE_ambiguous_%s", fLegCutNames[icut].Data()), + dqefficiency_helpers::varValues()); } for (int iCommonCut = 0; iCommonCut < fNCommonTrackCuts; iCommonCut++) { if (threeTrackCommonFilter & fCommonTrackCutFilterMasks[iCommonCut]) { @@ -5978,10 +6030,10 @@ struct AnalysisAsymmetricPairing { isig++) { // loop over MC signals if (mcDecision & (static_cast(1) << isig)) { fHistMan->FillHistClass( - Form("TripletsBarrelSE_%s_%s_%s", fLegCutNames[icut].Data(), - fCommonCutNames[iCommonCut].Data(), - fRecMCSignalNames[isig].Data()), - dqefficiency_helpers::varValues()); // matched signal + Form("TripletsBarrelSE_%s_%s_%s", fLegCutNames[icut].Data(), + fCommonCutNames[iCommonCut].Data(), + fRecMCSignalNames[isig].Data()), + dqefficiency_helpers::varValues()); // matched signal } } // end loop (MC signals) } @@ -5990,7 +6042,7 @@ struct AnalysisAsymmetricPairing { for (auto cut = fPairCuts.begin(); cut != fPairCuts.end(); cut++, iPairCut++) { if (!((*cut)->IsSelected( - dqefficiency_helpers::varValues()))) { // apply pair cuts + dqefficiency_helpers::varValues()))) { // apply pair cuts continue; } // Histograms with pair cuts @@ -6002,10 +6054,10 @@ struct AnalysisAsymmetricPairing { isig++) { // loop over MC signals if (mcDecision & (static_cast(1) << isig)) { fHistMan->FillHistClass( - Form("TripletsBarrelSE_%s_%s_%s", fLegCutNames[icut].Data(), - fPairCutNames[iPairCut].Data(), - fRecMCSignalNames[isig].Data()), - dqefficiency_helpers::varValues()); // matched signal + Form("TripletsBarrelSE_%s_%s_%s", fLegCutNames[icut].Data(), + fPairCutNames[iPairCut].Data(), + fRecMCSignalNames[isig].Data()), + dqefficiency_helpers::varValues()); // matched signal } } // end loop (MC signals) // Histograms with pair cuts and common track cuts @@ -6022,12 +6074,12 @@ struct AnalysisAsymmetricPairing { isig++) { // loop over MC signals if (mcDecision & (static_cast(1) << isig)) { fHistMan->FillHistClass( - Form("TripletsBarrelSE_%s_%s_%s_%s", - fLegCutNames[icut].Data(), - fCommonCutNames[iCommonCut].Data(), - fPairCutNames[iPairCut].Data(), - fRecMCSignalNames[isig].Data()), - dqefficiency_helpers::varValues()); // matched signal + Form("TripletsBarrelSE_%s_%s_%s_%s", + fLegCutNames[icut].Data(), + fCommonCutNames[iCommonCut].Data(), + fPairCutNames[iPairCut].Data(), + fRecMCSignalNames[isig].Data()), + dqefficiency_helpers::varValues()); // matched signal } } // end loop (MC signals) } @@ -6038,11 +6090,11 @@ struct AnalysisAsymmetricPairing { } void processKaonPionSkimmed( - MyEventsVtxCovSelected const &events, - soa::Join const - &barrelAssocs, - MyBarrelTracksWithCovWithAmbiguities const &barrelTracks, - ReducedMCEvents const &mcEvents, ReducedMCTracks const &mcTracks) { + MyEventsVtxCovSelected const& events, + soa::Join const& barrelAssocs, + MyBarrelTracksWithCovWithAmbiguities const& barrelTracks, + ReducedMCEvents const& mcEvents, ReducedMCTracks const& mcTracks) + { runAsymmetricPairing(events, trackAssocsPerCollision, barrelAssocs, barrelTracks, @@ -6050,35 +6102,36 @@ struct AnalysisAsymmetricPairing { } void processKaonPionSkimmedMultExtra( - MyEventsVtxCovSelectedMultExtra const &events, - soa::Join const - &barrelAssocs, - MyBarrelTracksWithCovWithAmbiguities const &barrelTracks, - ReducedMCEvents const &mcEvents, ReducedMCTracks const &mcTracks) { + MyEventsVtxCovSelectedMultExtra const& events, + soa::Join const& barrelAssocs, + MyBarrelTracksWithCovWithAmbiguities const& barrelTracks, + ReducedMCEvents const& mcEvents, ReducedMCTracks const& mcTracks) + { runAsymmetricPairing( - events, trackAssocsPerCollision, barrelAssocs, barrelTracks, mcEvents, - mcTracks); + events, trackAssocsPerCollision, barrelAssocs, barrelTracks, mcEvents, + mcTracks); } void processKaonPionPionSkimmed( - MyEventsVtxCovSelected const &events, - soa::Join const - &barrelAssocs, - MyBarrelTracksWithCovWithAmbiguities const &barrelTracks, - ReducedMCEvents const &mcEvents, ReducedMCTracks const &mcTracks) { + MyEventsVtxCovSelected const& events, + soa::Join const& barrelAssocs, + MyBarrelTracksWithCovWithAmbiguities const& barrelTracks, + ReducedMCEvents const& mcEvents, ReducedMCTracks const& mcTracks) + { runThreeProng( - events, trackAssocsPerCollision, barrelAssocs, barrelTracks, mcEvents, - mcTracks, VarManager::kTripleCandidateToKPiPi); + events, trackAssocsPerCollision, barrelAssocs, barrelTracks, mcEvents, + mcTracks, VarManager::kTripleCandidateToKPiPi); } - void processMCGen(ReducedMCTracks const &mcTracks) { + void processMCGen(ReducedMCTracks const& mcTracks) + { // loop over mc stack and fill histograms for pure MC truth signals // group all the MC tracks which belong to the MC event corresponding to the // current reconstructed event auto groupedMCTracks = // tracksMC.sliceBy(aod::reducedtrackMC::reducedMCeventId, // event.reducedMCevent().globalIndex()); - for (auto const &mctrack : mcTracks) { + for (auto const& mctrack : mcTracks) { VarManager::FillTrackMC(mcTracks, mctrack); // NOTE: Signals are checked here mostly based on the skimmed MC stack, so @@ -6087,7 +6140,7 @@ struct AnalysisAsymmetricPairing { // precomputed during skimming and are stored in the mcReducedFlags // member. // TODO: Use the mcReducedFlags to select signals - for (auto const &sig : fGenMCSignals) { + for (auto const& sig : fGenMCSignals) { if (sig->CheckSignal(true, mctrack)) { fHistMan->FillHistClass(Form("MCTruthGen_%s", sig->GetName()), dqefficiency_helpers::varValues()); @@ -6097,12 +6150,13 @@ struct AnalysisAsymmetricPairing { } PresliceUnsorted perReducedMcEvent = - aod::reducedtrackMC::reducedMCeventId; + aod::reducedtrackMC::reducedMCeventId; void processMCGenWithEventSelection( - soa::Filtered const &events, - ReducedMCEvents const & /*mcEvents*/, ReducedMCTracks const &mcTracks) { - for (auto const &event : events) { + soa::Filtered const& events, + ReducedMCEvents const& /*mcEvents*/, ReducedMCTracks const& mcTracks) + { + for (auto const& event : events) { if (!event.isEventSelected_bit(0)) { continue; } @@ -6111,14 +6165,14 @@ struct AnalysisAsymmetricPairing { } auto groupedMCTracks = - mcTracks.sliceBy(perReducedMcEvent, event.reducedMCeventId()); + mcTracks.sliceBy(perReducedMcEvent, event.reducedMCeventId()); groupedMCTracks.bindInternalIndicesTo(&mcTracks); - for (auto const &track : groupedMCTracks) { + for (auto const& track : groupedMCTracks) { VarManager::FillTrackMC(mcTracks, track); auto track_raw = groupedMCTracks.rawIteratorAt(track.globalIndex()); - for (auto const &sig : fGenMCSignals) { + for (auto const& sig : fGenMCSignals) { if (sig->CheckSignal(true, track_raw)) { fHistMan->FillHistClass(Form("MCTruthGenSel_%s", sig->GetName()), dqefficiency_helpers::varValues()); @@ -6128,7 +6182,8 @@ struct AnalysisAsymmetricPairing { } // end loop over reconstructed events } - void processDummy(MyEvents const &) { + void processDummy(MyEvents const&) + { // do nothing } @@ -6139,14 +6194,14 @@ struct AnalysisAsymmetricPairing { PROCESS_SWITCH(AnalysisAsymmetricPairing, processKaonPionPionSkimmed, "Run kaon pion pion triplets, with skimmed tracks", false); PROCESS_SWITCH( - AnalysisAsymmetricPairing, processMCGen, - "Loop over MC particle stack and fill generator level histograms", false); + AnalysisAsymmetricPairing, processMCGen, + "Loop over MC particle stack and fill generator level histograms", false); PROCESS_SWITCH( - AnalysisAsymmetricPairing, processMCGenWithEventSelection, - "Loop over MC particle stack and fill generator level histograms", false); + AnalysisAsymmetricPairing, processMCGenWithEventSelection, + "Loop over MC particle stack and fill generator level histograms", false); PROCESS_SWITCH( - AnalysisAsymmetricPairing, processDummy, - "Dummy function, enabled only if none of the others are enabled", true); + AnalysisAsymmetricPairing, processDummy, + "Dummy function, enabled only if none of the others are enabled", true); }; // Combines dileptons with barrel or muon tracks for either resonance or @@ -6160,92 +6215,92 @@ struct AnalysisDileptonTrack { OutputObj fOutputList{"output"}; Configurable fConfigTrackCuts{ - "cfgTrackCuts", "kaonPID", - "Comma separated list of track cuts to be correlated with the dileptons"}; + "cfgTrackCuts", "kaonPID", + "Comma separated list of track cuts to be correlated with the dileptons"}; Configurable fConfigDileptonLowMass{ - "cfgDileptonLowMass", 2.8, - "Low mass cut for the dileptons used in analysis"}; + "cfgDileptonLowMass", 2.8, + "Low mass cut for the dileptons used in analysis"}; Configurable fConfigDileptonHighMass{ - "cfgDileptonHighMass", 3.2, - "High mass cut for the dileptons used in analysis"}; + "cfgDileptonHighMass", 3.2, + "High mass cut for the dileptons used in analysis"}; Configurable fConfigDileptonpTCut{ - "cfgDileptonpTCut", 0.0, - "pT cut for dileptons used in the triplet vertexing"}; + "cfgDileptonpTCut", 0.0, + "pT cut for dileptons used in the triplet vertexing"}; Configurable fConfigDileptonLxyCut{ - "cfgDileptonLxyCut", 0.0, - "Lxy cut for dileptons used in the triplet vertexing"}; + "cfgDileptonLxyCut", 0.0, + "Lxy cut for dileptons used in the triplet vertexing"}; Configurable fConfigUseKFVertexing{ - "cfgUseKFVertexing", false, - "Use KF Particle for secondary vertex reconstruction (DCAFitter is used " - "by default)"}; + "cfgUseKFVertexing", false, + "Use KF Particle for secondary vertex reconstruction (DCAFitter is used " + "by default)"}; Configurable fConfigDileptonLowpTCut{ - "cfgDileptonLowpTCut", 0.0, - "Low pT cut for dileptons used in the triplet vertexing"}; + "cfgDileptonLowpTCut", 0.0, + "Low pT cut for dileptons used in the triplet vertexing"}; Configurable fConfigDileptonHighpTCut{ - "cfgDileptonHighpTCut", 1E5, - "High pT cut for dileptons used in the triplet vertexing"}; + "cfgDileptonHighpTCut", 1E5, + "High pT cut for dileptons used in the triplet vertexing"}; Configurable fConfigDileptonRapCutAbs{ - "cfgDileptonRapCutAbs", 1.0, - "Rap cut for dileptons used in the triplet vertexing"}; + "cfgDileptonRapCutAbs", 1.0, + "Rap cut for dileptons used in the triplet vertexing"}; Configurable fConfigHistogramSubgroups{ - "cfgDileptonTrackHistogramsSubgroups", "invmass,vertexing", - "Comma separated list of dilepton-track histogram subgroups"}; + "cfgDileptonTrackHistogramsSubgroups", "invmass,vertexing", + "Comma separated list of dilepton-track histogram subgroups"}; Configurable fConfigAddJSONHistograms{ - "cfgAddJSONHistograms", "", "Histograms in JSON format"}; + "cfgAddJSONHistograms", "", "Histograms in JSON format"}; Configurable fConfigGRPmagPath{ - "cfgGrpmagPath", "GLO/Config/GRPMagField", - "CCDB path of the GRPMagField object"}; + "cfgGrpmagPath", "GLO/Config/GRPMagField", + "CCDB path of the GRPMagField object"}; Configurable fConfigCcdbUrl{ - "ccdb-url", "http://alice-ccdb.cern.ch", "url of the ccdb repository"}; + "ccdb-url", "http://alice-ccdb.cern.ch", "url of the ccdb repository"}; Configurable grpmagPath{"grpmagPath", "GLO/Config/GRPMagField", "CCDB path of the GRPMagField object"}; Configurable fConfigNoLaterThan{ - "ccdb-no-later-than", - std::chrono::duration_cast( - std::chrono::system_clock::now().time_since_epoch()) - .count(), - "latest acceptable timestamp of creation for the object"}; + "ccdb-no-later-than", + std::chrono::duration_cast( + std::chrono::system_clock::now().time_since_epoch()) + .count(), + "latest acceptable timestamp of creation for the object"}; Configurable fConfigGeoPath{ - "geoPath", "GLO/Config/GeometryAligned", "Path of the geometry file"}; + "geoPath", "GLO/Config/GeometryAligned", "Path of the geometry file"}; Configurable fConfigMCRecSignals{ - "cfgMCRecSignals", "", - "Comma separated list of MC signals (reconstructed)"}; + "cfgMCRecSignals", "", + "Comma separated list of MC signals (reconstructed)"}; Configurable fConfigMCGenSignals{ - "cfgMCGenSignals", "", "Comma separated list of MC signals (generated)"}; + "cfgMCGenSignals", "", "Comma separated list of MC signals (generated)"}; Configurable fConfigMCRecSignalsJSON{ - "cfgMCRecSignalsJSON", "", - "Additional list of MC signals (reconstructed) via JSON"}; + "cfgMCRecSignalsJSON", "", + "Additional list of MC signals (reconstructed) via JSON"}; Configurable fConfigMCGenSignalsJSON{ - "cfgMCGenSignalsJSON", "", - "Comma separated list of MC signals (generated) via JSON"}; + "cfgMCGenSignalsJSON", "", + "Comma separated list of MC signals (generated) via JSON"}; Configurable fConfigMCGenSignalDileptonLegPos{ - "cfgMCGenSignalDileptonLegPos", 0, - "generator level positive dilepton leg signal (bit number according to " - "table-maker)"}; + "cfgMCGenSignalDileptonLegPos", 0, + "generator level positive dilepton leg signal (bit number according to " + "table-maker)"}; Configurable fConfigMCGenSignalDileptonLegNeg{ - "cfgMCGenSignalDileptonLegNeg", 0, - "generator level negative dilepton leg signal (bit number according to " - "table-maker)"}; + "cfgMCGenSignalDileptonLegNeg", 0, + "generator level negative dilepton leg signal (bit number according to " + "table-maker)"}; Configurable fConfigMCGenSignalHadron{ - "cfgMCGenSignalHadron", 0, - "generator level associated hadron signal (bit number according to " - "table-maker)"}; + "cfgMCGenSignalHadron", 0, + "generator level associated hadron signal (bit number according to " + "table-maker)"}; Configurable fConfigMCGenDileptonLegPtMin{ - "cfgMCGenDileptonLegPtMin", 1.0f, "minimum pt for the dilepton leg"}; + "cfgMCGenDileptonLegPtMin", 1.0f, "minimum pt for the dilepton leg"}; Configurable fConfigMCGenHadronPtMin{"cfgMCGenHadronPtMin", 1.0f, "minimum pt for the hadron"}; Configurable fConfigMCGenDileptonLegEtaAbs{ - "cfgMCGenDileptonLegEtaAbs", 0.9f, "eta abs range for the dilepton leg"}; + "cfgMCGenDileptonLegEtaAbs", 0.9f, "eta abs range for the dilepton leg"}; Configurable fConfigMCGenHadronEtaAbs{"cfgMCGenHadronEtaAbs", 0.9f, "eta abs range for the hadron"}; Configurable fConfigUseMCRapcut{ - "cfgUseMCRapcut", false, - "Use Rap cut for dileptons used in the triplet vertexing(reconstructed)"}; + "cfgUseMCRapcut", false, + "Use Rap cut for dileptons used in the triplet vertexing(reconstructed)"}; Configurable fConfigUseCorrectlyAssociatedMC{ - "cfgUseCorrectlyAssociatedMC", true, - "Use only correctly associated track to construct triplet"}; + "cfgUseCorrectlyAssociatedMC", true, + "Use only correctly associated track to construct triplet"}; Configurable fConfigMixingDepth{"cfgMixingDepth", 5, "Event mixing pool depth"}; @@ -6274,34 +6329,33 @@ struct AnalysisDileptonTrack { Filter eventFilter = aod::dqanalysisflags::isEventSelected > static_cast(0); Filter dileptonFilter = - aod::reducedpair::pt > - fConfigDileptonLowpTCut - &&aod::reducedpair::pt fConfigDileptonLowMass - &&aod::reducedpair::mass - fConfigDileptonLxyCut; + aod::reducedpair::pt > + fConfigDileptonLowpTCut&& aod::reducedpair::pt fConfigDileptonLowMass&& aod::reducedpair::mass + fConfigDileptonLxyCut; Filter filterBarrel = aod::dqanalysisflags::isBarrelSelected > static_cast(0); Filter filterMuon = aod::dqanalysisflags::isMuonSelected > static_cast(0); constexpr static uint32_t fgDileptonFillMap = - VarManager::ObjTypes::ReducedTrack | - VarManager::ObjTypes::Pair; // fill map + VarManager::ObjTypes::ReducedTrack | + VarManager::ObjTypes::Pair; // fill map // use two values array to avoid mixing up the quantities - float *fValuesDilepton = nullptr; - float *fValuesHadron = nullptr; - HistogramManager *fHistMan = nullptr; + float* fValuesDilepton = nullptr; + float* fValuesHadron = nullptr; + HistogramManager* fHistMan = nullptr; - std::vector fRecMCSignals; - std::vector fGenMCSignals; + std::vector fRecMCSignals; + std::vector fGenMCSignals; NoBinningPolicy fHashBin; - void init(o2::framework::InitContext &context) { + void init(o2::framework::InitContext& context) + { bool isBarrel = context.mOptions.get("processBarrelSkimmed"); bool isBarrelAsymmetric = context.mOptions.get("processDstarToD0Pi"); bool isMuon = context.mOptions.get("processMuonSkimmed"); @@ -6309,11 +6363,11 @@ struct AnalysisDileptonTrack { context.mOptions.get("processMCGenWithEventSelection"); bool isDummy = context.mOptions.get("processDummy"); bool isMCGen_energycorrelators = - context.mOptions.get("processMCGenEnergyCorrelators") || - context.mOptions.get("processMCGenEnergyCorrelatorsPion"); + context.mOptions.get("processMCGenEnergyCorrelators") || + context.mOptions.get("processMCGenEnergyCorrelatorsPion"); bool isMCGen_energycorrelatorsME = - context.mOptions.get("processMCGenEnergyCorrelatorsME") || - context.mOptions.get("processMCGenEnergyCorrelatorsPionME"); + context.mOptions.get("processMCGenEnergyCorrelatorsME") || + context.mOptions.get("processMCGenEnergyCorrelatorsPionME"); if (isDummy) { if (isBarrel || isMuon || isBarrelAsymmetric || isMCGen) { @@ -6349,8 +6403,8 @@ struct AnalysisDileptonTrack { std::unique_ptr objRecSigArray(sigNamesStr.Tokenize(",")); if (!sigNamesStr.IsNull()) { for (int isig = 0; isig < objRecSigArray->GetEntries(); ++isig) { - MCSignal *sig = o2::aod::dqmcsignals::GetMCSignal( - objRecSigArray->At(isig)->GetName()); + MCSignal* sig = o2::aod::dqmcsignals::GetMCSignal( + objRecSigArray->At(isig)->GetName()); if (sig) { if (sig->GetNProngs() != 3) { LOG(fatal) << "Signal at reconstructed level requested (" @@ -6369,9 +6423,9 @@ struct AnalysisDileptonTrack { // Add the reco MCSignals from the JSON config TString addMCSignalsStr = fConfigMCRecSignalsJSON.value; if (addMCSignalsStr != "") { - std::vector addMCSignals = - dqmcsignals::GetMCSignalsFromJSON(addMCSignalsStr.Data()); - for (auto const &mcIt : addMCSignals) { + std::vector addMCSignals = + dqmcsignals::GetMCSignalsFromJSON(addMCSignalsStr.Data()); + for (auto const& mcIt : addMCSignals) { if (mcIt->GetNProngs() != 3) { LOG(fatal) << "Signal at reconstructed level requested (" << mcIt->GetName() << ") " @@ -6387,8 +6441,8 @@ struct AnalysisDileptonTrack { TString sigGenNamesStr = fConfigMCGenSignals.value; std::unique_ptr objGenSigArray(sigGenNamesStr.Tokenize(",")); for (int isig = 0; isig < objGenSigArray->GetEntries(); isig++) { - MCSignal *sig = o2::aod::dqmcsignals::GetMCSignal( - objGenSigArray->At(isig)->GetName()); + MCSignal* sig = o2::aod::dqmcsignals::GetMCSignal( + objGenSigArray->At(isig)->GetName()); if (sig) { if (sig->GetNProngs() == 1) { // NOTE: 1-prong signals required fGenMCSignals.push_back(sig); @@ -6399,9 +6453,9 @@ struct AnalysisDileptonTrack { // Add the gen MCSignals from the JSON config addMCSignalsStr = fConfigMCGenSignalsJSON.value; if (addMCSignalsStr != "") { - std::vector addMCSignals = - dqmcsignals::GetMCSignalsFromJSON(addMCSignalsStr.Data()); - for (auto const &mcIt : addMCSignals) { + std::vector addMCSignals = + dqmcsignals::GetMCSignalsFromJSON(addMCSignalsStr.Data()); + for (auto const& mcIt : addMCSignals) { if (mcIt->GetNProngs() == 1) { fGenMCSignals.push_back(mcIt); } @@ -6426,10 +6480,10 @@ struct AnalysisDileptonTrack { "cfgMuonCuts", cfgTrackSelection_TrackCuts, false); } - TObjArray *cfgTrackSelection_objArrayTrackCuts = nullptr; + TObjArray* cfgTrackSelection_objArrayTrackCuts = nullptr; if (!cfgTrackSelection_TrackCuts.empty()) { cfgTrackSelection_objArrayTrackCuts = - TString(cfgTrackSelection_TrackCuts).Tokenize(","); + TString(cfgTrackSelection_TrackCuts).Tokenize(","); } // get also the list of cuts specified via the JSON parameters if (isBarrel || isBarrelAsymmetric) { @@ -6445,9 +6499,9 @@ struct AnalysisDileptonTrack { if (cfgTrackSelection_objArrayTrackCuts == nullptr) { cfgTrackSelection_objArrayTrackCuts = new TObjArray(); } - std::vector addTrackCuts = - dqcuts::GetCutsFromJSON(cfgTrackSelection_TrackCuts.data()); - for (auto const &t : addTrackCuts) { + std::vector addTrackCuts = + dqcuts::GetCutsFromJSON(cfgTrackSelection_TrackCuts.data()); + for (auto const& t : addTrackCuts) { auto tempObjStr = new TObjString(t->GetName()); cfgTrackSelection_objArrayTrackCuts->Add(tempObjStr); } @@ -6459,14 +6513,14 @@ struct AnalysisDileptonTrack { for (int icut = 0; icut < cfgTrackSelection_objArrayTrackCuts->GetEntries(); icut++) { fTrackCutNames.push_back( - cfgTrackSelection_objArrayTrackCuts->At(icut)->GetName()); + cfgTrackSelection_objArrayTrackCuts->At(icut)->GetName()); } // get the list of associated track cuts to be combined with the dileptons, // check that these were computed upstream, and create a bit mask - TObjArray *cfgDileptonTrack_objArrayTrackCuts = nullptr; + TObjArray* cfgDileptonTrack_objArrayTrackCuts = nullptr; if (!fConfigTrackCuts.value.empty()) { cfgDileptonTrack_objArrayTrackCuts = - TString(fConfigTrackCuts.value).Tokenize(","); + TString(fConfigTrackCuts.value).Tokenize(","); } else { LOG(fatal) << " No track cuts specified! Check it out!"; } @@ -6475,7 +6529,7 @@ struct AnalysisDileptonTrack { for (int icut = 0; icut < cfgDileptonTrack_objArrayTrackCuts->GetEntries(); icut++) { if (!cfgTrackSelection_objArrayTrackCuts->FindObject( - cfgDileptonTrack_objArrayTrackCuts->At(icut)->GetName())) { + cfgDileptonTrack_objArrayTrackCuts->At(icut)->GetName())) { LOG(fatal) << "Specified track cut (" << cfgDileptonTrack_objArrayTrackCuts->At(icut)->GetName() << ") not found in the list of computed cuts by the single " @@ -6487,7 +6541,7 @@ struct AnalysisDileptonTrack { for (int icut = 0; icut < cfgTrackSelection_objArrayTrackCuts->GetEntries(); icut++) { if (cfgDileptonTrack_objArrayTrackCuts->FindObject( - cfgTrackSelection_objArrayTrackCuts->At(icut)->GetName())) { + cfgTrackSelection_objArrayTrackCuts->At(icut)->GetName())) { fTrackCutBitMap |= (static_cast(1) << icut); } } @@ -6539,15 +6593,15 @@ struct AnalysisDileptonTrack { TString cfgPairing_strCommonTrackCuts = cfgPairing_CommonTrackCuts; if (!cfgPairing_strCommonTrackCuts.IsNull()) { // if common track cuts std::unique_ptr objArrayCommon( - cfgPairing_strCommonTrackCuts.Tokenize(",")); + cfgPairing_strCommonTrackCuts.Tokenize(",")); fNCommonTrackCuts = objArrayCommon->GetEntries(); for (int icut = 0; icut < fNCommonTrackCuts; ++icut) { for (int iicut = 0; iicut < cfgTrackSelection_objArrayTrackCuts->GetEntries(); iicut++) { if (std::strcmp( - cfgTrackSelection_objArrayTrackCuts->At(iicut)->GetName(), - objArrayCommon->At(icut)->GetName()) == 0) { + cfgTrackSelection_objArrayTrackCuts->At(iicut)->GetName(), + objArrayCommon->At(icut)->GetName()) == 0) { fCommonTrackCutMap[icut] = iicut; fCommonPairCutNames.push_back(objArrayCommon->At(icut)->GetName()); } @@ -6562,16 +6616,16 @@ struct AnalysisDileptonTrack { cfgPairing_PairCutsJSON, false); TString addPairCutsStr = cfgPairing_PairCutsJSON; if (addPairCutsStr != "") { - std::vector addPairCuts = - dqcuts::GetCutsFromJSON(addPairCutsStr.Data()); - for (auto const &t : addPairCuts) { + std::vector addPairCuts = + dqcuts::GetCutsFromJSON(addPairCutsStr.Data()); + for (auto const& t : addPairCuts) { cfgPairing_PairCuts += Form(",%s", t->GetName()); } } } std::unique_ptr objArrayPairCuts( - TString(cfgPairing_PairCuts).Tokenize(",")); + TString(cfgPairing_PairCuts).Tokenize(",")); fNPairCuts = objArrayPairCuts->GetEntries(); for (int j = 0; j < fNPairCuts; j++) { fPairCutNames.push_back(objArrayPairCuts->At(j)->GetName()); @@ -6579,7 +6633,7 @@ struct AnalysisDileptonTrack { // array of single lepton cuts specified in the same-analysis-pairing task std::unique_ptr cfgPairing_objArrayTrackCuts( - TString(cfgPairing_TrackCuts).Tokenize(",")); + TString(cfgPairing_TrackCuts).Tokenize(",")); // If asymmetric pairs are used, the number of cuts should come from the // asymmetric-pairing task if (isBarrelAsymmetric) { @@ -6598,15 +6652,15 @@ struct AnalysisDileptonTrack { // dileptons if (!isBarrelAsymmetric) { if (!cfgPairing_objArrayTrackCuts->FindObject( - fTrackCutNames[icut].Data())) { + fTrackCutNames[icut].Data())) { continue; } pairLegCutName = fTrackCutNames[icut].Data(); } else { // For asymmetric pairs we access the leg cuts instead pairLegCutName = - dynamic_cast(cfgPairing_objArrayTrackCuts->At(icut)) - ->GetString(); + dynamic_cast(cfgPairing_objArrayTrackCuts->At(icut)) + ->GetString(); } fLegCutNames.push_back(pairLegCutName); @@ -6629,17 +6683,17 @@ struct AnalysisDileptonTrack { Form("DileptonTrack_%s_%s", pairLegCutName.Data(), fTrackCutNames[iCutTrack].Data()), fConfigHistogramSubgroups.value.data()); - for (auto const &sig : fRecMCSignals) { + for (auto const& sig : fRecMCSignals) { DefineHistograms( - fHistMan, - Form("DileptonTrackMCMatched_%s_%s_%s", pairLegCutName.Data(), - fTrackCutNames[iCutTrack].Data(), sig->GetName()), - fConfigHistogramSubgroups.value.data()); + fHistMan, + Form("DileptonTrackMCMatched_%s_%s_%s", pairLegCutName.Data(), + fTrackCutNames[iCutTrack].Data(), sig->GetName()), + fConfigHistogramSubgroups.value.data()); } if (!cfgPairing_strCommonTrackCuts.IsNull()) { std::unique_ptr objArrayCommon( - cfgPairing_strCommonTrackCuts.Tokenize(",")); + cfgPairing_strCommonTrackCuts.Tokenize(",")); for (int iCommonCut = 0; iCommonCut < fNCommonTrackCuts; ++iCommonCut) { DefineHistograms(fHistMan, @@ -6653,7 +6707,7 @@ struct AnalysisDileptonTrack { fCommonPairCutNames[iCommonCut].Data(), fTrackCutNames[iCutTrack].Data()), fConfigHistogramSubgroups.value.data()); - for (auto const &sig : fRecMCSignals) { + for (auto const& sig : fRecMCSignals) { DefineHistograms(fHistMan, Form("DileptonTrackMCMatched_%s_%s_%s_%s", pairLegCutName.Data(), @@ -6679,18 +6733,18 @@ struct AnalysisDileptonTrack { fPairCutNames[iPairCut].Data(), fTrackCutNames[iCutTrack].Data()), fConfigHistogramSubgroups.value.data()); - for (auto const &sig : fRecMCSignals) { + for (auto const& sig : fRecMCSignals) { DefineHistograms( - fHistMan, - Form("DileptonTrackMCMatched_%s_%s_%s_%s", - pairLegCutName.Data(), fPairCutNames[iPairCut].Data(), - fTrackCutNames[iCutTrack].Data(), sig->GetName()), - fConfigHistogramSubgroups.value.data()); + fHistMan, + Form("DileptonTrackMCMatched_%s_%s_%s_%s", + pairLegCutName.Data(), fPairCutNames[iPairCut].Data(), + fTrackCutNames[iCutTrack].Data(), sig->GetName()), + fConfigHistogramSubgroups.value.data()); } if (!cfgPairing_strCommonTrackCuts.IsNull()) { std::unique_ptr objArrayCommon( - cfgPairing_strCommonTrackCuts.Tokenize(",")); + cfgPairing_strCommonTrackCuts.Tokenize(",")); for (int iCommonCut = 0; iCommonCut < fNCommonTrackCuts; ++iCommonCut) { DefineHistograms(fHistMan, @@ -6706,15 +6760,15 @@ struct AnalysisDileptonTrack { fPairCutNames[iPairCut].Data(), fTrackCutNames[iCutTrack].Data()), fConfigHistogramSubgroups.value.data()); - for (auto const &sig : fRecMCSignals) { + for (auto const& sig : fRecMCSignals) { DefineHistograms( - fHistMan, - Form("DileptonTrack_%s_%s_%s_%s_%s", - pairLegCutName.Data(), - fCommonPairCutNames[iCommonCut].Data(), - fPairCutNames[iPairCut].Data(), - fTrackCutNames[iCutTrack].Data(), sig->GetName()), - fConfigHistogramSubgroups.value.data()); + fHistMan, + Form("DileptonTrack_%s_%s_%s_%s_%s", + pairLegCutName.Data(), + fCommonPairCutNames[iCommonCut].Data(), + fPairCutNames[iPairCut].Data(), + fTrackCutNames[iCutTrack].Data(), sig->GetName()), + fConfigHistogramSubgroups.value.data()); } } } @@ -6725,28 +6779,28 @@ struct AnalysisDileptonTrack { } // end if (isBarrel || isBarrelAsymmetric || isMuon) if (isMCGen) { - for (auto const &sig : fGenMCSignals) { + for (auto const& sig : fGenMCSignals) { DefineHistograms(fHistMan, Form("MCTruthGen_%s", sig->GetName()), ""); DefineHistograms(fHistMan, Form("MCTruthGenSel_%s", sig->GetName()), ""); } - for (auto const &sig : fRecMCSignals) { + for (auto const& sig : fRecMCSignals) { DefineHistograms(fHistMan, Form("MCTruthGenSelBR_%s", sig->GetName()), ""); DefineHistograms( - fHistMan, Form("MCTruthGenSelBRAccepted_%s", sig->GetName()), ""); + fHistMan, Form("MCTruthGenSelBRAccepted_%s", sig->GetName()), ""); } } if (isMCGen_energycorrelators) { - for (auto const &sig : fGenMCSignals) { + for (auto const& sig : fGenMCSignals) { DefineHistograms( - fHistMan, Form("MCTruthEenergyCorrelators_%s", sig->GetName()), ""); + fHistMan, Form("MCTruthEenergyCorrelators_%s", sig->GetName()), ""); } } if (isMCGen_energycorrelatorsME) { - for (auto const &sig : fGenMCSignals) { + for (auto const& sig : fGenMCSignals) { DefineHistograms(fHistMan, Form("MCTruthEenergyCorrelatorsME_%s", sig->GetName()), ""); @@ -6762,9 +6816,10 @@ struct AnalysisDileptonTrack { } // init parameters from CCDB - void initParamsFromCCDB(uint64_t timestamp) { + void initParamsFromCCDB(uint64_t timestamp) + { auto grpmag = fCCDB->getForTimeStamp( - fConfigGRPmagPath.value, timestamp); + fConfigGRPmagPath.value, timestamp); float magField = 0.0; if (grpmag != nullptr) { magField = grpmag->getNominalL3Field(); @@ -6776,8 +6831,8 @@ struct AnalysisDileptonTrack { VarManager::SetupThreeProngKFParticle(magField); } else { VarManager::SetupThreeProngDCAFitter( - magField, true, 200.0f, 4.0f, 1.0e-3f, 0.9f, - false); // TODO: get these parameters from Configurables + magField, true, 200.0f, 4.0f, 1.0e-3f, 0.9f, + false); // TODO: get these parameters from Configurables } } @@ -6785,18 +6840,19 @@ struct AnalysisDileptonTrack { template - void runDileptonHadron(TEvent const &event, TTrackAssocs const &assocs, - TTracks const &tracks, TDileptons const &dileptons, - ReducedMCEvents const & /*mcEvents*/, - ReducedMCTracks const &mcTracks) { + void runDileptonHadron(TEvent const& event, TTrackAssocs const& assocs, + TTracks const& tracks, TDileptons const& dileptons, + ReducedMCEvents const& /*mcEvents*/, + ReducedMCTracks const& mcTracks) + { VarManager::ResetValues(0, VarManager::kNVars, fValuesHadron); VarManager::ResetValues(0, VarManager::kNVars, fValuesDilepton); VarManager::FillEvent(event, fValuesHadron); VarManager::FillEvent( - event.reducedMCevent(), fValuesHadron); + event.reducedMCevent(), fValuesHadron); VarManager::FillEvent(event, fValuesDilepton); VarManager::FillEvent( - event.reducedMCevent(), fValuesDilepton); + event.reducedMCevent(), fValuesDilepton); auto mcDecision = static_cast(0); size_t iSigMc = 0; @@ -6804,7 +6860,7 @@ struct AnalysisDileptonTrack { bool isCorrectAssoc_lepton2 = false; bool isCorrectAssoc_assoc = false; - for (auto const &dilepton : dileptons) { + for (auto const& dilepton : dileptons) { // get full track info of tracks based on the index auto lepton1 = tracks.rawIteratorAt(dilepton.index0Id()); auto lepton2 = tracks.rawIteratorAt(dilepton.index1Id()); @@ -6826,9 +6882,9 @@ struct AnalysisDileptonTrack { // Correct association if (fConfigUseCorrectlyAssociatedMC) { isCorrectAssoc_lepton1 = - (lepton1MC.reducedMCevent() == event.reducedMCevent()); + (lepton1MC.reducedMCevent() == event.reducedMCevent()); isCorrectAssoc_lepton2 = - (lepton2MC.reducedMCevent() == event.reducedMCevent()); + (lepton2MC.reducedMCevent() == event.reducedMCevent()); } VarManager::FillTrack(dilepton, fValuesDilepton); @@ -6842,8 +6898,8 @@ struct AnalysisDileptonTrack { // regular dileptons fHistMan->FillHistClass( - Form("DileptonsSelected_%s", fLegCutNames[icut].Data()), - fValuesDilepton); + Form("DileptonsSelected_%s", fLegCutNames[icut].Data()), + fValuesDilepton); // other pairs, e.g.: D0s if constexpr (TCandidateType == @@ -6854,9 +6910,9 @@ struct AnalysisDileptonTrack { iCommonCut++) { if (dilepton.commonFilterMap_bit(fCommonTrackCutMap[iCommonCut])) { fHistMan->FillHistClass( - Form("DileptonsSelected_%s_%s", fLegCutNames[icut].Data(), - fCommonPairCutNames[iCommonCut].Data()), - fValuesDilepton); + Form("DileptonsSelected_%s_%s", fLegCutNames[icut].Data(), + fCommonPairCutNames[iCommonCut].Data()), + fValuesDilepton); } } for (int iPairCut = 0; iPairCut < fNPairCuts; iPairCut++) { @@ -6868,13 +6924,13 @@ struct AnalysisDileptonTrack { for (int iCommonCut = 0; iCommonCut < fNCommonTrackCuts; iCommonCut++) { if (dilepton.commonFilterMap_bit( - fCommonTrackCutMap[iCommonCut])) { + fCommonTrackCutMap[iCommonCut])) { fHistMan->FillHistClass( - Form("DileptonsSelected_%s_%s_%s", - fLegCutNames[icut].Data(), - fCommonPairCutNames[iCommonCut].Data(), - fPairCutNames[icut].Data()), - fValuesDilepton); + Form("DileptonsSelected_%s_%s_%s", + fLegCutNames[icut].Data(), + fCommonPairCutNames[iCommonCut].Data(), + fPairCutNames[icut].Data()), + fValuesDilepton); } } } @@ -6883,7 +6939,7 @@ struct AnalysisDileptonTrack { } // loop over track associations - for (auto const &assoc : assocs) { + for (auto const& assoc : assocs) { VarManager::ResetValues(0, VarManager::kNVars, fValuesHadron); VarManager::ResetValues(0, VarManager::kNVars, fValuesDilepton); @@ -6907,7 +6963,7 @@ struct AnalysisDileptonTrack { if (fConfigUseCorrectlyAssociatedMC) { // check if correctly // associated isCorrectAssoc_assoc = - (trackMC.reducedMCevent() == event.reducedMCevent()); + (trackMC.reducedMCevent() == event.reducedMCevent()); } bool isCorrect_triplet = isCorrectAssoc_lepton1 && isCorrectAssoc_lepton2 && @@ -6922,7 +6978,7 @@ struct AnalysisDileptonTrack { VarManager::FillDileptonHadron(dilepton, track, fValuesHadron); VarManager::FillDileptonTrackVertexing( - event, lepton1, lepton2, track, fValuesHadron); + event, lepton1, lepton2, track, fValuesHadron); mcDecision = 0; iSigMc = 0; @@ -6939,11 +6995,11 @@ struct AnalysisDileptonTrack { while (true) { if (currentMCParticle.has_mothers()) { currentMCParticle = - currentMCParticle - .template mothers_first_as(); + currentMCParticle + .template mothers_first_as(); if (std::abs(currentMCParticle.pdgCode()) > 500 && std::abs(currentMCParticle.pdgCode()) < - 549) { // nb! hardcoded pdgcodes + 549) { // nb! hardcoded pdgcodes VarManager::FillTrackMC(mcTracks, currentMCParticle, fValuesHadron); break; @@ -6957,51 +7013,51 @@ struct AnalysisDileptonTrack { // PV) VarManager::FillTrackCollisionMC( - trackMC, currentMCParticle, event.reducedMCevent(), - fValuesHadron); + trackMC, currentMCParticle, event.reducedMCevent(), + fValuesHadron); } // table to be written out for ML analysis BmesonsTable( - event.runNumber(), event.globalIndex(), event.timestamp(), - fValuesHadron[VarManager::kPairMass], dilepton.mass(), - fValuesHadron[VarManager::kDeltaMass], - fValuesHadron[VarManager::kPairPt], - fValuesHadron[VarManager::kPairEta], - fValuesHadron[VarManager::kPairPhi], - fValuesHadron[VarManager::kPairRap], - fValuesHadron[VarManager::kVertexingLxy], - fValuesHadron[VarManager::kVertexingLxyErr], - fValuesHadron[VarManager::kVertexingLxyz], - fValuesHadron[VarManager::kVertexingLxyzErr], - fValuesHadron[VarManager::kVertexingLz], - fValuesHadron[VarManager::kVertexingLzErr], - fValuesHadron[VarManager::kVertexingTauxy], - fValuesHadron[VarManager::kVertexingTauxyErr], - fValuesHadron[VarManager::kVertexingTauz], - fValuesHadron[VarManager::kVertexingTauzErr], - fValuesHadron[VarManager::kCosPointingAngle], - fValuesHadron[VarManager::kVertexingChi2PCA], - fValuesHadron[VarManager::kMCVertexingLxy], - fValuesHadron[VarManager::kMCVertexingLxyz], - fValuesHadron[VarManager::kMCVertexingLz], - fValuesHadron[VarManager::kMCVertexingTauxy], - fValuesHadron[VarManager::kMCVertexingTauz], - fValuesHadron[VarManager::kMCCosPointingAngle], - track.globalIndex(), lepton1.globalIndex(), lepton2.globalIndex(), - track.tpcInnerParam(), track.eta(), dilepton.pt(), dilepton.eta(), - lepton1.tpcInnerParam(), lepton1.eta(), lepton2.tpcInnerParam(), - lepton2.eta(), track.tpcNSigmaKa(), track.tpcNSigmaPi(), - track.tpcNSigmaPr(), track.tofNSigmaKa(), lepton1.tpcNSigmaEl(), - lepton1.tpcNSigmaPi(), lepton1.tpcNSigmaPr(), - lepton2.tpcNSigmaEl(), lepton2.tpcNSigmaPi(), - lepton2.tpcNSigmaPr(), track.itsClusterMap(), - lepton1.itsClusterMap(), lepton2.itsClusterMap(), - track.itsChi2NCl(), lepton1.itsChi2NCl(), lepton2.itsChi2NCl(), - track.tpcNClsFound(), lepton1.tpcNClsFound(), - lepton2.tpcNClsFound(), track.tpcChi2NCl(), lepton1.tpcChi2NCl(), - lepton2.tpcChi2NCl(), dilepton.filterMap_raw(), trackSelection, - mcDecision); + event.runNumber(), event.globalIndex(), event.timestamp(), + fValuesHadron[VarManager::kPairMass], dilepton.mass(), + fValuesHadron[VarManager::kDeltaMass], + fValuesHadron[VarManager::kPairPt], + fValuesHadron[VarManager::kPairEta], + fValuesHadron[VarManager::kPairPhi], + fValuesHadron[VarManager::kPairRap], + fValuesHadron[VarManager::kVertexingLxy], + fValuesHadron[VarManager::kVertexingLxyErr], + fValuesHadron[VarManager::kVertexingLxyz], + fValuesHadron[VarManager::kVertexingLxyzErr], + fValuesHadron[VarManager::kVertexingLz], + fValuesHadron[VarManager::kVertexingLzErr], + fValuesHadron[VarManager::kVertexingTauxy], + fValuesHadron[VarManager::kVertexingTauxyErr], + fValuesHadron[VarManager::kVertexingTauz], + fValuesHadron[VarManager::kVertexingTauzErr], + fValuesHadron[VarManager::kCosPointingAngle], + fValuesHadron[VarManager::kVertexingChi2PCA], + fValuesHadron[VarManager::kMCVertexingLxy], + fValuesHadron[VarManager::kMCVertexingLxyz], + fValuesHadron[VarManager::kMCVertexingLz], + fValuesHadron[VarManager::kMCVertexingTauxy], + fValuesHadron[VarManager::kMCVertexingTauz], + fValuesHadron[VarManager::kMCCosPointingAngle], + track.globalIndex(), lepton1.globalIndex(), lepton2.globalIndex(), + track.tpcInnerParam(), track.eta(), dilepton.pt(), dilepton.eta(), + lepton1.tpcInnerParam(), lepton1.eta(), lepton2.tpcInnerParam(), + lepton2.eta(), track.tpcNSigmaKa(), track.tpcNSigmaPi(), + track.tpcNSigmaPr(), track.tofNSigmaKa(), lepton1.tpcNSigmaEl(), + lepton1.tpcNSigmaPi(), lepton1.tpcNSigmaPr(), + lepton2.tpcNSigmaEl(), lepton2.tpcNSigmaPi(), + lepton2.tpcNSigmaPr(), track.itsClusterMap(), + lepton1.itsClusterMap(), lepton2.itsClusterMap(), + track.itsChi2NCl(), lepton1.itsChi2NCl(), lepton2.itsChi2NCl(), + track.tpcNClsFound(), lepton1.tpcNClsFound(), + lepton2.tpcNClsFound(), track.tpcChi2NCl(), lepton1.tpcChi2NCl(), + lepton2.tpcChi2NCl(), dilepton.filterMap_raw(), trackSelection, + mcDecision); } if constexpr (TCandidateType == VarManager::kDstarToD0KPiPi) { @@ -7026,7 +7082,7 @@ struct AnalysisDileptonTrack { VarManager::FillDileptonHadron(dilepton, track, fValuesHadron); VarManager::FillDileptonTrackVertexing( - event, lepton1, lepton2, track, fValuesHadron); + event, lepton1, lepton2, track, fValuesHadron); auto trackMC = track.reducedMCTrack(); mcDecision = 0; @@ -7054,7 +7110,7 @@ struct AnalysisDileptonTrack { VarManager::FillDileptonHadron(dilepton, track, fValuesHadron); VarManager::FillDileptonTrackVertexing( - event, lepton1, lepton2, track, fValuesHadron); + event, lepton1, lepton2, track, fValuesHadron); if (!track.has_reducedMCTrack()) { continue; @@ -7115,21 +7171,21 @@ struct AnalysisDileptonTrack { for (int iCommonCut = 0; iCommonCut < fNCommonTrackCuts; iCommonCut++) { if (dilepton.commonFilterMap_bit( - fCommonTrackCutMap[iCommonCut])) { + fCommonTrackCutMap[iCommonCut])) { fHistMan->FillHistClass( - Form("DileptonTrack_%s_%s_%s", fLegCutNames[icut].Data(), - fCommonPairCutNames[iCommonCut].Data(), - fTrackCutNames[iTrackCut].Data()), - fValuesHadron); + Form("DileptonTrack_%s_%s_%s", fLegCutNames[icut].Data(), + fCommonPairCutNames[iCommonCut].Data(), + fTrackCutNames[iTrackCut].Data()), + fValuesHadron); for (uint32_t isig = 0; isig < fRecMCSignals.size(); isig++) { if (mcDecision & (static_cast(1) << isig)) { fHistMan->FillHistClass( - Form("DileptonTrackMCMatched_%s_%s_%s_%s", - fLegCutNames[icut].Data(), - fCommonPairCutNames[iCommonCut].Data(), - fTrackCutNames[iTrackCut].Data(), - fRecMCSignals[isig]->GetName()), - fValuesHadron); + Form("DileptonTrackMCMatched_%s_%s_%s_%s", + fLegCutNames[icut].Data(), + fCommonPairCutNames[iCommonCut].Data(), + fTrackCutNames[iTrackCut].Data(), + fRecMCSignals[isig]->GetName()), + fValuesHadron); } } } @@ -7137,43 +7193,43 @@ struct AnalysisDileptonTrack { for (int iPairCut = 0; iPairCut < fNPairCuts; iPairCut++) { if (dilepton.pairFilterMap_bit(iPairCut)) { fHistMan->FillHistClass( - Form("DileptonTrack_%s_%s_%s", fLegCutNames[icut].Data(), - fPairCutNames[iPairCut].Data(), - fTrackCutNames[iTrackCut].Data()), - fValuesHadron); + Form("DileptonTrack_%s_%s_%s", fLegCutNames[icut].Data(), + fPairCutNames[iPairCut].Data(), + fTrackCutNames[iTrackCut].Data()), + fValuesHadron); for (uint32_t isig = 0; isig < fRecMCSignals.size(); isig++) { if (mcDecision & (static_cast(1) << isig)) { fHistMan->FillHistClass( - Form("DileptonTrackMCMatched_%s_%s_%s_%s", - fLegCutNames[icut].Data(), - fPairCutNames[iPairCut].Data(), - fTrackCutNames[iTrackCut].Data(), - fRecMCSignals[isig]->GetName()), - fValuesHadron); + Form("DileptonTrackMCMatched_%s_%s_%s_%s", + fLegCutNames[icut].Data(), + fPairCutNames[iPairCut].Data(), + fTrackCutNames[iTrackCut].Data(), + fRecMCSignals[isig]->GetName()), + fValuesHadron); } } for (int iCommonCut = 0; iCommonCut < fNCommonTrackCuts; iCommonCut++) { if (dilepton.commonFilterMap_bit( - fCommonTrackCutMap[iCommonCut])) { + fCommonTrackCutMap[iCommonCut])) { fHistMan->FillHistClass( - Form("DileptonTrack_%s_%s_%s_%s", - fLegCutNames[icut].Data(), - fCommonPairCutNames[iCommonCut].Data(), - fPairCutNames[iPairCut].Data(), - fTrackCutNames[iTrackCut].Data()), - fValuesHadron); + Form("DileptonTrack_%s_%s_%s_%s", + fLegCutNames[icut].Data(), + fCommonPairCutNames[iCommonCut].Data(), + fPairCutNames[iPairCut].Data(), + fTrackCutNames[iTrackCut].Data()), + fValuesHadron); for (uint32_t isig = 0; isig < fRecMCSignals.size(); isig++) { if (mcDecision & (static_cast(1) << isig)) { fHistMan->FillHistClass( - Form("DileptonTrackMCMatched_%s_%s_%s_%s_%s", - fLegCutNames[icut].Data(), - fCommonPairCutNames[iCommonCut].Data(), - fPairCutNames[iPairCut].Data(), - fTrackCutNames[iTrackCut].Data(), - fRecMCSignals[isig]->GetName()), - fValuesHadron); + Form("DileptonTrackMCMatched_%s_%s_%s_%s_%s", + fLegCutNames[icut].Data(), + fCommonPairCutNames[iCommonCut].Data(), + fPairCutNames[iPairCut].Data(), + fTrackCutNames[iTrackCut].Data(), + fRecMCSignals[isig]->GetName()), + fValuesHadron); } } } @@ -7188,19 +7244,20 @@ struct AnalysisDileptonTrack { } Preslice trackAssocsPerCollision = - aod::reducedtrack_association::reducedeventId; + aod::reducedtrack_association::reducedeventId; Preslice dielectronsPerCollision = - aod::reducedpair::reducedeventId; + aod::reducedpair::reducedeventId; Preslice ditracksPerCollision = - aod::reducedpair::reducedeventId; + aod::reducedpair::reducedeventId; void processBarrelSkimmed( - soa::Filtered const &events, - soa::Filtered> const &assocs, - MyBarrelTracksWithCov const &tracks, - soa::Filtered const &dileptons, - ReducedMCEvents const &mcEvents, ReducedMCTracks const &mcTracks) { + soa::Filtered const& events, + soa::Filtered> const& assocs, + MyBarrelTracksWithCov const& tracks, + soa::Filtered const& dileptons, + ReducedMCEvents const& mcEvents, ReducedMCTracks const& mcTracks) + { // set up KF or DCAfitter if (events.size() == 0) { return; @@ -7209,14 +7266,14 @@ struct AnalysisDileptonTrack { initParamsFromCCDB(events.begin().timestamp()); fCurrentRun = events.begin().runNumber(); } // end: runNumber - for (auto const &event : events) { + for (auto const& event : events) { if (!event.isEventSelected_bit(0)) { continue; } auto groupedBarrelAssocs = - assocs.sliceBy(trackAssocsPerCollision, event.globalIndex()); + assocs.sliceBy(trackAssocsPerCollision, event.globalIndex()); auto groupedDielectrons = - dileptons.sliceBy(dielectronsPerCollision, event.globalIndex()); + dileptons.sliceBy(dielectronsPerCollision, event.globalIndex()); runDileptonHadron(event, groupedBarrelAssocs, tracks, groupedDielectrons, @@ -7225,12 +7282,13 @@ struct AnalysisDileptonTrack { } void processDstarToD0Pi( - soa::Filtered const &events, - soa::Filtered> const &assocs, - MyBarrelTracksWithCov const &tracks, - soa::Filtered const &ditracks, - ReducedMCEvents const &mcEvents, ReducedMCTracks const &mcTracks) { + soa::Filtered const& events, + soa::Filtered> const& assocs, + MyBarrelTracksWithCov const& tracks, + soa::Filtered const& ditracks, + ReducedMCEvents const& mcEvents, ReducedMCTracks const& mcTracks) + { // set up KF or DCAfitter if (events.size() == 0) { return; @@ -7239,11 +7297,11 @@ struct AnalysisDileptonTrack { initParamsFromCCDB(events.begin().timestamp()); fCurrentRun = events.begin().runNumber(); } // end: runNumber - for (auto const &event : events) { + for (auto const& event : events) { auto groupedBarrelAssocs = - assocs.sliceBy(trackAssocsPerCollision, event.globalIndex()); + assocs.sliceBy(trackAssocsPerCollision, event.globalIndex()); auto groupedDitracks = - ditracks.sliceBy(ditracksPerCollision, event.globalIndex()); + ditracks.sliceBy(ditracksPerCollision, event.globalIndex()); runDileptonHadron(event, groupedBarrelAssocs, tracks, groupedDitracks, @@ -7252,17 +7310,17 @@ struct AnalysisDileptonTrack { } Preslice muonAssocsPerCollision = - aod::reducedtrack_association::reducedeventId; + aod::reducedtrack_association::reducedeventId; Preslice dimuonsPerCollision = - aod::reducedpair::reducedeventId; + aod::reducedpair::reducedeventId; void processMuonSkimmed( - soa::Filtered const &events, - soa::Filtered> const - &assocs, - MyMuonTracksWithCov const &tracks, - soa::Filtered const &dileptons, - ReducedMCEvents const &mcEvents, ReducedMCTracks const &mcTracks) { + soa::Filtered const& events, + soa::Filtered> const& assocs, + MyMuonTracksWithCov const& tracks, + soa::Filtered const& dileptons, + ReducedMCEvents const& mcEvents, ReducedMCTracks const& mcTracks) + { // set up KF or DCAfitter if (events.size() == 0) { return; @@ -7271,27 +7329,28 @@ struct AnalysisDileptonTrack { initParamsFromCCDB(events.begin().timestamp()); fCurrentRun = events.begin().runNumber(); } // end: runNumber - for (auto const &event : events) { + for (auto const& event : events) { if (!event.isEventSelected_bit(0)) { continue; } auto groupedMuonAssocs = - assocs.sliceBy(muonAssocsPerCollision, event.globalIndex()); + assocs.sliceBy(muonAssocsPerCollision, event.globalIndex()); auto groupedDimuons = - dileptons.sliceBy(dimuonsPerCollision, event.globalIndex()); + dileptons.sliceBy(dimuonsPerCollision, event.globalIndex()); runDileptonHadron( - event, groupedMuonAssocs, tracks, groupedDimuons, mcEvents, mcTracks); + event, groupedMuonAssocs, tracks, groupedDimuons, mcEvents, mcTracks); } } - void processMCGen(ReducedMCTracks const &mcTracks) { + void processMCGen(ReducedMCTracks const& mcTracks) + { // loop over mc stack and fill histograms for pure MC truth signals // group all the MC tracks which belong to the MC event corresponding to the // current reconstructed event auto groupedMCTracks = // tracksMC.sliceBy(aod::reducedtrackMC::reducedMCeventId, // event.reducedMCevent().globalIndex()); - for (auto const &mctrack : mcTracks) { + for (auto const& mctrack : mcTracks) { // if ((std::abs(mctrack.pdgCode()) > 400 && std::abs(mctrack.pdgCode()) < // 599) || @@ -7331,7 +7390,7 @@ struct AnalysisDileptonTrack { // precomputed during skimming and are stored in the mcReducedFlags // member. // TODO: Use the mcReducedFlags to select signals - for (auto const &sig : fGenMCSignals) { + for (auto const& sig : fGenMCSignals) { if (sig->CheckSignal(true, mctrack)) { fHistMan->FillHistClass(Form("MCTruthGen_%s", sig->GetName()), dqefficiency_helpers::varValues()); @@ -7341,12 +7400,13 @@ struct AnalysisDileptonTrack { } PresliceUnsorted perReducedMcEvent = - aod::reducedtrackMC::reducedMCeventId; + aod::reducedtrackMC::reducedMCeventId; void processMCGenWithEventSelection( - soa::Filtered const &events, - ReducedMCEvents const & /*mcEvents*/, ReducedMCTracks const &mcTracks) { - for (auto const &event : events) { + soa::Filtered const& events, + ReducedMCEvents const& /*mcEvents*/, ReducedMCTracks const& mcTracks) + { + for (auto const& event : events) { if (!event.isEventSelected_bit(0)) { continue; } @@ -7355,14 +7415,14 @@ struct AnalysisDileptonTrack { } auto groupedMCTracks = - mcTracks.sliceBy(perReducedMcEvent, event.reducedMCeventId()); + mcTracks.sliceBy(perReducedMcEvent, event.reducedMCeventId()); groupedMCTracks.bindInternalIndicesTo(&mcTracks); - for (auto const &track : groupedMCTracks) { + for (auto const& track : groupedMCTracks) { VarManager::FillTrackMC(mcTracks, track); auto track_raw = groupedMCTracks.rawIteratorAt(track.globalIndex()); - for (auto const &sig : fGenMCSignals) { + for (auto const& sig : fGenMCSignals) { if (sig->CheckSignal(true, track_raw)) { fHistMan->FillHistClass(Form("MCTruthGenSel_%s", sig->GetName()), dqefficiency_helpers::varValues()); @@ -7373,20 +7433,20 @@ struct AnalysisDileptonTrack { // make a list of all MC tracks in the MC collision corresponding to the // current reconstructed event std::vector mcTrackIndices; - for (auto const &t : groupedMCTracks) { + for (auto const& t : groupedMCTracks) { mcTrackIndices.push_back(t.globalIndex()); } // make a three nested for loop over all MC tracks in the vector - for (const auto &t1 : mcTrackIndices) { + for (const auto& t1 : mcTrackIndices) { auto track1 = mcTracks.rawIteratorAt(t1); - for (const auto &t2 : mcTrackIndices) { + for (const auto& t2 : mcTrackIndices) { if (t1 == t2) { continue; } // if (t2 < t1) continue; auto track2 = mcTracks.rawIteratorAt(t2); - for (const auto &t3 : mcTrackIndices) { + for (const auto& t3 : mcTrackIndices) { if (t3 == t1) { continue; } @@ -7395,27 +7455,27 @@ struct AnalysisDileptonTrack { } auto track3 = mcTracks.rawIteratorAt(t3); - for (auto const &sig : fRecMCSignals) { + for (auto const& sig : fRecMCSignals) { if (sig->CheckSignal(true, track1, track2, track3)) { VarManager::FillTripleMC( - track1, track2, track3, - dqefficiency_helpers::varValues()); // nb! hardcoded for - // jpsiK + track1, track2, track3, + dqefficiency_helpers::varValues()); // nb! hardcoded for + // jpsiK fHistMan->FillHistClass( - Form("MCTruthGenSelBR_%s", sig->GetName()), - dqefficiency_helpers::varValues()); + Form("MCTruthGenSelBR_%s", sig->GetName()), + dqefficiency_helpers::varValues()); // apply kinematic cuts if (track1.pt() < fConfigMCGenDileptonLegPtMin.value || std::abs(track1.eta()) > - fConfigMCGenDileptonLegEtaAbs.value) { + fConfigMCGenDileptonLegEtaAbs.value) { continue; } if (track2.pt() < fConfigMCGenDileptonLegPtMin.value || std::abs(track2.eta()) > - fConfigMCGenDileptonLegEtaAbs.value) { + fConfigMCGenDileptonLegEtaAbs.value) { continue; } if (track3.pt() < fConfigMCGenHadronPtMin.value || @@ -7423,8 +7483,8 @@ struct AnalysisDileptonTrack { continue; } fHistMan->FillHistClass( - Form("MCTruthGenSelBRAccepted_%s", sig->GetName()), - dqefficiency_helpers::varValues()); + Form("MCTruthGenSelBRAccepted_%s", sig->GetName()), + dqefficiency_helpers::varValues()); } } } @@ -7434,11 +7494,12 @@ struct AnalysisDileptonTrack { } template - void runEnergyCorrelators(TEvent const &event, TMCTracks const &mcTracks) { + void runEnergyCorrelators(TEvent const& event, TMCTracks const& mcTracks) + { auto groupedMCTracks = - mcTracks.sliceBy(perReducedMcEvent, event.reducedMCeventId()); + mcTracks.sliceBy(perReducedMcEvent, event.reducedMCeventId()); groupedMCTracks.bindInternalIndicesTo(&mcTracks); - for (auto const &t1 : groupedMCTracks) { + for (auto const& t1 : groupedMCTracks) { auto t1_raw = mcTracks.rawIteratorAt(t1.globalIndex()); // apply kinematic cuts for signal if ((t1_raw.pt() < fConfigDileptonLowpTCut || @@ -7449,7 +7510,7 @@ struct AnalysisDileptonTrack { continue; } // for the energy correlators - for (auto const &t2 : groupedMCTracks) { + for (auto const& t2 : groupedMCTracks) { auto t2_raw = groupedMCTracks.rawIteratorAt(t2.globalIndex()); if (std::abs(t2_raw.pdgCode()) == o2::constants::physics::Pdg::kJPsi || std::abs(t2_raw.pdgCode()) == PDG_t::kElectron || @@ -7464,25 +7525,26 @@ struct AnalysisDileptonTrack { continue; } VarManager::FillEnergyCorrelatorsMC( - t1_raw, t2_raw, dqefficiency_helpers::varValues()); - for (auto const &sig : fGenMCSignals) { + t1_raw, t2_raw, dqefficiency_helpers::varValues()); + for (auto const& sig : fGenMCSignals) { if (sig->CheckSignal(true, t1_raw)) { fHistMan->FillHistClass( - Form("MCTruthEenergyCorrelators_%s", sig->GetName()), - dqefficiency_helpers::varValues()); + Form("MCTruthEenergyCorrelators_%s", sig->GetName()), + dqefficiency_helpers::varValues()); } } } } } void processMCGenEnergyCorrelators( - soa::Filtered const &events, - ReducedMCEvents const & /*mcEvents*/, ReducedMCTracks const &mcTracks) { + soa::Filtered const& events, + ReducedMCEvents const& /*mcEvents*/, ReducedMCTracks const& mcTracks) + { if (events.size() == 0) { LOG(warning) << "No events in this TF, going to the next one ..."; return; } - for (auto const &event : events) { + for (auto const& event : events) { if (!event.isEventSelected_bit(0)) { continue; } @@ -7494,13 +7556,14 @@ struct AnalysisDileptonTrack { } void processMCGenEnergyCorrelatorsPion( - soa::Filtered const &events, - ReducedMCEvents const & /*mcEvents*/, ReducedMCTracks const &mcTracks) { + soa::Filtered const& events, + ReducedMCEvents const& /*mcEvents*/, ReducedMCTracks const& mcTracks) + { if (events.size() == 0) { LOG(warning) << "No events in this TF, going to the next one ..."; return; } - for (auto const &event : events) { + for (auto const& event : events) { if (!event.isEventSelected_bit(0)) { continue; } @@ -7512,16 +7575,17 @@ struct AnalysisDileptonTrack { } template - void runEnergyCorrelatorsMixedEvent(TEvent const &event1, - TEvent const &event2, - TMCTracks const &mcTracks) { + void runEnergyCorrelatorsMixedEvent(TEvent const& event1, + TEvent const& event2, + TMCTracks const& mcTracks) + { auto groupedMCTracks1 = - mcTracks.sliceBy(perReducedMcEvent, event1.reducedMCeventId()); + mcTracks.sliceBy(perReducedMcEvent, event1.reducedMCeventId()); auto groupedMCTracks2 = - mcTracks.sliceBy(perReducedMcEvent, event2.reducedMCeventId()); + mcTracks.sliceBy(perReducedMcEvent, event2.reducedMCeventId()); groupedMCTracks1.bindInternalIndicesTo(&mcTracks); groupedMCTracks2.bindInternalIndicesTo(&mcTracks); - for (auto const &t1 : groupedMCTracks1) { + for (auto const& t1 : groupedMCTracks1) { auto t1_raw = mcTracks.rawIteratorAt(t1.globalIndex()); // apply kinematic cuts for signal if ((t1_raw.pt() < fConfigDileptonLowpTCut || @@ -7532,7 +7596,7 @@ struct AnalysisDileptonTrack { continue; } // for the energy correlators - for (auto const &t2 : groupedMCTracks2) { + for (auto const& t2 : groupedMCTracks2) { auto t2_raw = groupedMCTracks2.rawIteratorAt(t2.globalIndex()); if (std::abs(t2_raw.pdgCode()) == o2::constants::physics::Pdg::kJPsi || std::abs(t2_raw.pdgCode()) == PDG_t::kElectron || @@ -7547,12 +7611,12 @@ struct AnalysisDileptonTrack { continue; } VarManager::FillEnergyCorrelatorsMC( - t1_raw, t2_raw, dqefficiency_helpers::varValues()); - for (auto const &sig : fGenMCSignals) { + t1_raw, t2_raw, dqefficiency_helpers::varValues()); + for (auto const& sig : fGenMCSignals) { if (sig->CheckSignal(true, t1_raw)) { fHistMan->FillHistClass( - Form("MCTruthEenergyCorrelatorsME_%s", sig->GetName()), - dqefficiency_helpers::varValues()); + Form("MCTruthEenergyCorrelatorsME_%s", sig->GetName()), + dqefficiency_helpers::varValues()); } } } @@ -7560,15 +7624,16 @@ struct AnalysisDileptonTrack { } void processMCGenEnergyCorrelatorsME( - soa::Filtered const &events, - ReducedMCEvents const & /*mcEvents*/, ReducedMCTracks const &mcTracks) { + soa::Filtered const& events, + ReducedMCEvents const& /*mcEvents*/, ReducedMCTracks const& mcTracks) + { if (events.size() == 0) { LOG(warning) << "No events in this TF, going to the next one ..."; return; } // loop over two event comibnations - for (auto const &[event1, event2] : selfCombinations( - fHashBin, fConfigMixingDepth.value, -1, events, events)) { + for (auto const& [event1, event2] : selfCombinations( + fHashBin, fConfigMixingDepth.value, -1, events, events)) { if (!event1.isEventSelected_bit(0) || !event2.isEventSelected_bit(0)) { continue; } @@ -7576,20 +7641,21 @@ struct AnalysisDileptonTrack { continue; } runEnergyCorrelatorsMixedEvent( - event1, event2, mcTracks); + event1, event2, mcTracks); } } void processMCGenEnergyCorrelatorsPionME( - soa::Filtered const &events, - ReducedMCEvents const & /*mcEvents*/, ReducedMCTracks const &mcTracks) { + soa::Filtered const& events, + ReducedMCEvents const& /*mcEvents*/, ReducedMCTracks const& mcTracks) + { if (events.size() == 0) { LOG(warning) << "No events in this TF, going to the next one ..."; return; } // loop over two event comibnations - for (auto const &[event1, event2] : selfCombinations( - fHashBin, fConfigMixingDepth.value, -1, events, events)) { + for (auto const& [event1, event2] : selfCombinations( + fHashBin, fConfigMixingDepth.value, -1, events, events)) { if (!event1.isEventSelected_bit(0) || !event2.isEventSelected_bit(0)) { continue; } @@ -7601,7 +7667,8 @@ struct AnalysisDileptonTrack { } } - void processDummy(MyEvents const &) { + void processDummy(MyEvents const&) + { // do nothing } @@ -7615,11 +7682,11 @@ struct AnalysisDileptonTrack { PROCESS_SWITCH(AnalysisDileptonTrack, processMuonSkimmed, "Run muon dilepton-track pairing, using skimmed data", false); PROCESS_SWITCH( - AnalysisDileptonTrack, processMCGen, - "Loop over MC particle stack and fill generator level histograms", false); + AnalysisDileptonTrack, processMCGen, + "Loop over MC particle stack and fill generator level histograms", false); PROCESS_SWITCH( - AnalysisDileptonTrack, processMCGenWithEventSelection, - "Loop over MC particle stack and fill generator level histograms", false); + AnalysisDileptonTrack, processMCGenWithEventSelection, + "Loop over MC particle stack and fill generator level histograms", false); PROCESS_SWITCH(AnalysisDileptonTrack, processMCGenEnergyCorrelators, "Loop over MC particle stack and fill generator level " "histograms(energy correlators)", @@ -7639,20 +7706,22 @@ struct AnalysisDileptonTrack { PROCESS_SWITCH(AnalysisDileptonTrack, processDummy, "Dummy function", true); }; -WorkflowSpec defineDataProcessing(ConfigContext const &cfgc) { +WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) +{ return WorkflowSpec{ - adaptAnalysisTask(cfgc), - adaptAnalysisTask(cfgc), - adaptAnalysisTask(cfgc), - adaptAnalysisTask(cfgc), - adaptAnalysisTask(cfgc), - adaptAnalysisTask(cfgc), - adaptAnalysisTask(cfgc), - adaptAnalysisTask(cfgc)}; + adaptAnalysisTask(cfgc), + adaptAnalysisTask(cfgc), + adaptAnalysisTask(cfgc), + adaptAnalysisTask(cfgc), + adaptAnalysisTask(cfgc), + adaptAnalysisTask(cfgc), + adaptAnalysisTask(cfgc), + adaptAnalysisTask(cfgc)}; } -void DefineHistograms(HistogramManager *histMan, const TString &histClasses, - const char *histGroups) { +void DefineHistograms(HistogramManager* histMan, const TString& histClasses, + const char* histGroups) +{ // // Define here the histograms for all the classes required in analysis. // The histogram classes are provided in the histClasses string, separated by @@ -7700,7 +7769,7 @@ void DefineHistograms(HistogramManager *histMan, const TString &histClasses, } if (classStr.Contains("Ambiguity")) { dqhistograms::DefineHistograms( - histMan, objArray->At(iclass)->GetName(), "track", "ambiguity"); + histMan, objArray->At(iclass)->GetName(), "track", "ambiguity"); } } } diff --git a/PWGDQ/Tasks/tableReader_withAssoc.h b/PWGDQ/Tasks/tableReader_withAssoc.h index f2d8f7cb4bf..973964f3a01 100644 --- a/PWGDQ/Tasks/tableReader_withAssoc.h +++ b/PWGDQ/Tasks/tableReader_withAssoc.h @@ -82,8 +82,10 @@ #include // Some definitions -namespace o2::aod { -namespace dqanalysisflags { +namespace o2::aod +{ +namespace dqanalysisflags +{ DECLARE_SOA_COLUMN(MixingHash, mixingHash, int); //! Hash used in event mixing DECLARE_SOA_BITMAP_COLUMN(IsEventSelected, isEventSelected, 8); //! Event decision @@ -94,8 +96,8 @@ DECLARE_SOA_COLUMN(BarrelAmbiguityInBunch, barrelAmbiguityInBunch, DECLARE_SOA_COLUMN(BarrelAmbiguityOutOfBunch, barrelAmbiguityOutOfBunch, int8_t); //! Barrel track out of bunch ambiguity DECLARE_SOA_BITMAP_COLUMN( - IsMuonSelected, isMuonSelected, - 32); //! Muon track decisions (joinable to o2::aod::ReducedMuonsAssoc) + IsMuonSelected, isMuonSelected, + 32); //! Muon track decisions (joinable to o2::aod::ReducedMuonsAssoc) DECLARE_SOA_COLUMN(MuonAmbiguityInBunch, muonAmbiguityInBunch, int8_t); //! Muon track in-bunch ambiguity DECLARE_SOA_COLUMN(MuonAmbiguityOutOfBunch, muonAmbiguityOutOfBunch, @@ -191,13 +193,13 @@ DECLARE_SOA_COLUMN(MultiplicityNContrib, multiplicityNContribJPsi2ee, float); // Additional columns for prompt-non-prompt JPsi separation (BDT training) DECLARE_SOA_COLUMN(PairSign, pairSign, int8_t); //! t1.sign() + t2.sign() DECLARE_SOA_COLUMN( - PairFilter, pairFilter, - uint32_t); //! twoTrackFilter (cut bits + ambiguity bits 28-31) + PairFilter, pairFilter, + uint32_t); //! twoTrackFilter (cut bits + ambiguity bits 28-31) DECLARE_SOA_COLUMN(McDecision, mcDecision, uint32_t); //! MC signal bits, 0 in data DECLARE_SOA_COLUMN( - Corrassoc, corrassoc, - bool); //! correct collision association (MC only, true in data) + Corrassoc, corrassoc, + bool); //! correct collision association (MC only, true in data) DECLARE_SOA_COLUMN(TauxyeeErr, tauxyeeErr, float); //! kVertexingTauxyErr: in ns (not cm) and with the //! reconstructed mass @@ -205,7 +207,7 @@ DECLARE_SOA_COLUMN(TauzeeErr, tauzeeErr, float); //! kVertexingTauzErr: in ns (not cm) and with the //! reconstructed mass DECLARE_SOA_COLUMN(LxyeeProjected, lxyeeProjected, - float); //! kVertexingLxyProjected + float); //! kVertexingLxyProjected DECLARE_SOA_COLUMN(LxyeeOverErr, lxyeeOverErr, float); //! kVertexingLxyOverErr DECLARE_SOA_COLUMN(Lxyzee, lxyzee, float); //! kVertexingLxyz DECLARE_SOA_COLUMN(LxyzeeOverErr, lxyzeeOverErr, @@ -223,59 +225,59 @@ DECLARE_SOA_COLUMN(DeltaPhi, deltaPhi, float); } // namespace dqanalysisflags DECLARE_SOA_TABLE( - EventCuts, "AOD", "DQANAEVCUTSA", - dqanalysisflags::IsEventSelected); //! joinable to ReducedEvents + EventCuts, "AOD", "DQANAEVCUTSA", + dqanalysisflags::IsEventSelected); //! joinable to ReducedEvents DECLARE_SOA_TABLE(MixingHashes, "AOD", "DQANAMIXHASHA", dqanalysisflags::MixingHash); //! joinable to ReducedEvents DECLARE_SOA_TABLE( - BarrelTrackCuts, "AOD", "DQANATRKCUTSA", - dqanalysisflags::IsBarrelSelected); //! joinable to - //! o2::aod::ReducedTracksAssoc + BarrelTrackCuts, "AOD", "DQANATRKCUTSA", + dqanalysisflags::IsBarrelSelected); //! joinable to + //! o2::aod::ReducedTracksAssoc DECLARE_SOA_TABLE( - BarrelAmbiguities, "AOD", "DQBARRELAMBA", - dqanalysisflags::BarrelAmbiguityInBunch, - dqanalysisflags::BarrelAmbiguityOutOfBunch); //! joinable to - //! ReducedBarrelTracks + BarrelAmbiguities, "AOD", "DQBARRELAMBA", + dqanalysisflags::BarrelAmbiguityInBunch, + dqanalysisflags::BarrelAmbiguityOutOfBunch); //! joinable to + //! ReducedBarrelTracks DECLARE_SOA_TABLE( - MuonTrackCuts, "AOD", "DQANAMUONCUTSA", - dqanalysisflags::IsMuonSelected); //! joinable to - //! o2::aod::ReducedMuonsAssoc + MuonTrackCuts, "AOD", "DQANAMUONCUTSA", + dqanalysisflags::IsMuonSelected); //! joinable to + //! o2::aod::ReducedMuonsAssoc DECLARE_SOA_TABLE( - MuonAmbiguities, "AOD", "DQMUONAMBA", dqanalysisflags::MuonAmbiguityInBunch, - dqanalysisflags::MuonAmbiguityOutOfBunch); //! joinable to - //! ReducedMuonTracks + MuonAmbiguities, "AOD", "DQMUONAMBA", dqanalysisflags::MuonAmbiguityInBunch, + dqanalysisflags::MuonAmbiguityOutOfBunch); //! joinable to + //! ReducedMuonTracks DECLARE_SOA_TABLE( - Prefilter, "AOD", "DQPREFILTERA", - dqanalysisflags:: - IsBarrelSelectedPrefilter); //! joinable to o2::aod::ReducedTracksAssoc + Prefilter, "AOD", "DQPREFILTERA", + dqanalysisflags:: + IsBarrelSelectedPrefilter); //! joinable to o2::aod::ReducedTracksAssoc DECLARE_SOA_TABLE( - BmesonCandidates, "AOD", "DQBMESONSA", dqanalysisflags::RunNumber, - dqanalysisflags::EventIdx, dqanalysisflags::EventTimestamp, - dqanalysisflags::massBcandidate, dqanalysisflags::MassDileptonCandidate, - dqanalysisflags::deltamassBcandidate, dqanalysisflags::pTBcandidate, - dqanalysisflags::EtaBcandidate, dqanalysisflags::PhiBcandidate, - dqanalysisflags::RapBcandidate, dqanalysisflags::LxyBcandidate, - dqanalysisflags::LxyzBcandidate, dqanalysisflags::LzBcandidate, - dqanalysisflags::TauxyBcandidate, dqanalysisflags::TauzBcandidate, - dqanalysisflags::CosPBcandidate, dqanalysisflags::Chi2Bcandidate, - dqanalysisflags::GlobalIndexassoc, dqanalysisflags::GlobalIndexleg1, - dqanalysisflags::GlobalIndexleg2, dqanalysisflags::PINassoc, - dqanalysisflags::Etaassoc, dqanalysisflags::Ptpair, - dqanalysisflags::Etapair, dqanalysisflags::PINleg1, - dqanalysisflags::Etaleg1, dqanalysisflags::PINleg2, - dqanalysisflags::Etaleg2, dqanalysisflags::TPCnsigmaKaassoc, - dqanalysisflags::TPCnsigmaPiassoc, dqanalysisflags::TPCnsigmaPrassoc, - dqanalysisflags::TOFnsigmaKaassoc, dqanalysisflags::TPCnsigmaElleg1, - dqanalysisflags::TPCnsigmaPileg1, dqanalysisflags::TPCnsigmaPrleg1, - dqanalysisflags::TPCnsigmaElleg2, dqanalysisflags::TPCnsigmaPileg2, - dqanalysisflags::TPCnsigmaPrleg2, dqanalysisflags::ITSClusterMapassoc, - dqanalysisflags::ITSClusterMapleg1, dqanalysisflags::ITSClusterMapleg2, - dqanalysisflags::ITSChi2assoc, dqanalysisflags::ITSChi2leg1, - dqanalysisflags::ITSChi2leg2, dqanalysisflags::TPCNclsassoc, - dqanalysisflags::TPCNclsleg1, dqanalysisflags::TPCNclsleg2, - dqanalysisflags::TPCChi2assoc, dqanalysisflags::TPCChi2leg1, - dqanalysisflags::TPCChi2leg2, dqanalysisflags::IsJpsiFromBSelected, - dqanalysisflags::IsBarrelSelected); + BmesonCandidates, "AOD", "DQBMESONSA", dqanalysisflags::RunNumber, + dqanalysisflags::EventIdx, dqanalysisflags::EventTimestamp, + dqanalysisflags::massBcandidate, dqanalysisflags::MassDileptonCandidate, + dqanalysisflags::deltamassBcandidate, dqanalysisflags::pTBcandidate, + dqanalysisflags::EtaBcandidate, dqanalysisflags::PhiBcandidate, + dqanalysisflags::RapBcandidate, dqanalysisflags::LxyBcandidate, + dqanalysisflags::LxyzBcandidate, dqanalysisflags::LzBcandidate, + dqanalysisflags::TauxyBcandidate, dqanalysisflags::TauzBcandidate, + dqanalysisflags::CosPBcandidate, dqanalysisflags::Chi2Bcandidate, + dqanalysisflags::GlobalIndexassoc, dqanalysisflags::GlobalIndexleg1, + dqanalysisflags::GlobalIndexleg2, dqanalysisflags::PINassoc, + dqanalysisflags::Etaassoc, dqanalysisflags::Ptpair, + dqanalysisflags::Etapair, dqanalysisflags::PINleg1, + dqanalysisflags::Etaleg1, dqanalysisflags::PINleg2, + dqanalysisflags::Etaleg2, dqanalysisflags::TPCnsigmaKaassoc, + dqanalysisflags::TPCnsigmaPiassoc, dqanalysisflags::TPCnsigmaPrassoc, + dqanalysisflags::TOFnsigmaKaassoc, dqanalysisflags::TPCnsigmaElleg1, + dqanalysisflags::TPCnsigmaPileg1, dqanalysisflags::TPCnsigmaPrleg1, + dqanalysisflags::TPCnsigmaElleg2, dqanalysisflags::TPCnsigmaPileg2, + dqanalysisflags::TPCnsigmaPrleg2, dqanalysisflags::ITSClusterMapassoc, + dqanalysisflags::ITSClusterMapleg1, dqanalysisflags::ITSClusterMapleg2, + dqanalysisflags::ITSChi2assoc, dqanalysisflags::ITSChi2leg1, + dqanalysisflags::ITSChi2leg2, dqanalysisflags::TPCNclsassoc, + dqanalysisflags::TPCNclsleg1, dqanalysisflags::TPCNclsleg2, + dqanalysisflags::TPCChi2assoc, dqanalysisflags::TPCChi2leg1, + dqanalysisflags::TPCChi2leg2, dqanalysisflags::IsJpsiFromBSelected, + dqanalysisflags::IsBarrelSelected); DECLARE_SOA_TABLE(JPsiMuonCandidates, "AOD", "DQJPSIMUONA", dqanalysisflags::DeltaEta, dqanalysisflags::DeltaPhi, dqanalysisflags::MassDileptonCandidate, @@ -286,238 +288,238 @@ DECLARE_SOA_TABLE(JPsiMuonCandidates, "AOD", "DQJPSIMUONA", dqanalysisflags::Ptleg2, dqanalysisflags::Etaleg2, dqanalysisflags::Phileg2); DECLARE_SOA_TABLE( - JPsieeCandidates, "AOD", "DQPSEUDOPROPER", dqanalysisflags::PairFilter, - dqanalysisflags::McDecision, dqanalysisflags::Massee, dqanalysisflags::Ptee, - dqanalysisflags::Etaee, dqanalysisflags::Rapee, dqanalysisflags::Phiee, - dqanalysisflags::Lxyee, dqanalysisflags::LxyeePoleMass, - dqanalysisflags::Lzee, dqanalysisflags::LxyeePoleMassPVrecomputed, - dqanalysisflags::TauxyeeErr, dqanalysisflags::TauzeeErr, - dqanalysisflags::LxyeeProjected, dqanalysisflags::LxyeeOverErr, - dqanalysisflags::Lxyzee, dqanalysisflags::LxyzeeOverErr, - dqanalysisflags::Chi2PCAee, dqanalysisflags::CosPAee, dqanalysisflags::Vx, - dqanalysisflags::Vy, dqanalysisflags::Vz, dqanalysisflags::Ptleg1, - dqanalysisflags::Etaleg1, dqanalysisflags::DcaXY1, dqanalysisflags::DcaZ1, - dqanalysisflags::DcaXYOverSig1, dqanalysisflags::DcaZOverSig1, - dqanalysisflags::ITSClusterMapleg1, dqanalysisflags::ITSChi2leg1, - dqanalysisflags::Ptleg2, dqanalysisflags::Etaleg2, dqanalysisflags::DcaXY2, - dqanalysisflags::DcaZ2, dqanalysisflags::DcaXYOverSig2, - dqanalysisflags::DcaZOverSig2, dqanalysisflags::ITSClusterMapleg2, - dqanalysisflags::ITSChi2leg2, dqanalysisflags::AmbiguousInBunchPairs, - dqanalysisflags::AmbiguousOutOfBunchPairs, dqanalysisflags::Corrassoc, - dqanalysisflags::MultiplicityFT0C, dqanalysisflags::PercentileFT0C, - dqanalysisflags::MultiplicityNContrib); + JPsieeCandidates, "AOD", "DQPSEUDOPROPER", dqanalysisflags::PairFilter, + dqanalysisflags::McDecision, dqanalysisflags::Massee, dqanalysisflags::Ptee, + dqanalysisflags::Etaee, dqanalysisflags::Rapee, dqanalysisflags::Phiee, + dqanalysisflags::Lxyee, dqanalysisflags::LxyeePoleMass, + dqanalysisflags::Lzee, dqanalysisflags::LxyeePoleMassPVrecomputed, + dqanalysisflags::TauxyeeErr, dqanalysisflags::TauzeeErr, + dqanalysisflags::LxyeeProjected, dqanalysisflags::LxyeeOverErr, + dqanalysisflags::Lxyzee, dqanalysisflags::LxyzeeOverErr, + dqanalysisflags::Chi2PCAee, dqanalysisflags::CosPAee, dqanalysisflags::Vx, + dqanalysisflags::Vy, dqanalysisflags::Vz, dqanalysisflags::Ptleg1, + dqanalysisflags::Etaleg1, dqanalysisflags::DcaXY1, dqanalysisflags::DcaZ1, + dqanalysisflags::DcaXYOverSig1, dqanalysisflags::DcaZOverSig1, + dqanalysisflags::ITSClusterMapleg1, dqanalysisflags::ITSChi2leg1, + dqanalysisflags::Ptleg2, dqanalysisflags::Etaleg2, dqanalysisflags::DcaXY2, + dqanalysisflags::DcaZ2, dqanalysisflags::DcaXYOverSig2, + dqanalysisflags::DcaZOverSig2, dqanalysisflags::ITSClusterMapleg2, + dqanalysisflags::ITSChi2leg2, dqanalysisflags::AmbiguousInBunchPairs, + dqanalysisflags::AmbiguousOutOfBunchPairs, dqanalysisflags::Corrassoc, + dqanalysisflags::MultiplicityFT0C, dqanalysisflags::PercentileFT0C, + dqanalysisflags::MultiplicityNContrib); } // namespace o2::aod // Declarations of various short names using MyEvents = - o2::soa::Join; + o2::soa::Join; using MyEventsBasic = - o2::soa::Join; + o2::soa::Join; using MyEventsMultExtraNoQvector = - o2::soa::Join; + o2::soa::Join; using MyEventsMultExtra = - o2::soa::Join; + o2::soa::Join; using MyEventsMultExtraQVector = - o2::soa::Join; + o2::soa::Join; using MyEventsZdc = - o2::soa::Join; + o2::soa::Join; using MyEventsMultExtraZdc = - o2::soa::Join; + o2::soa::Join; using MyEventsMultExtraZdcFit = - o2::soa::Join; + o2::soa::Join; using MyEventsSelected = - o2::soa::Join; + o2::soa::Join; using MyEventsMultExtraSelected = - o2::soa::Join; + o2::soa::Join; using MyEventsVtxCovSelectedMultExtra = - o2::soa::Join; + o2::soa::Join; using MyEventsHashSelected = - o2::soa::Join; + o2::soa::Join; using MyEventsVtxCov = - o2::soa::Join; + o2::soa::Join; using MyEventsVtxCovSelected = - o2::soa::Join; + o2::soa::Join; using MyEventsVtxCovSelectedInfo = - o2::soa::Join; + o2::soa::Join; using MyEventsVtxCovSelectedQvector = - o2::soa::Join; + o2::soa::Join; using MyEventsVtxCovSelectedQvectorWithHash = - o2::soa::Join; + o2::soa::Join; using MyEventsVtxCovZdcFitSelected = - o2::soa::Join; + o2::soa::Join; using MyEventsVtxCovZdcFitSelectedMultExtra = - o2::soa::Join; + o2::soa::Join; using MyEventsQvector = - o2::soa::Join; + o2::soa::Join; using MyEventsHashSelectedQvector = - o2::soa::Join; + o2::soa::Join; using MyEventsQvectorCentr = - o2::soa::Join; + o2::soa::Join; using MyEventsQvectorCentrMerge = - o2::soa::Join; + o2::soa::Join; using MyEventsQvectorCentrSelected = - o2::soa::Join; + o2::soa::Join; using MyEventsHashSelectedQvectorCentr = - o2::soa::Join; + o2::soa::Join; using MyBarrelTracks = - o2::soa::Join; + o2::soa::Join; using MyBarrelTracksWithAmbiguities = - o2::soa::Join; + o2::soa::Join; using MyBarrelTracksWithCov = - o2::soa::Join; + o2::soa::Join; using MyBarrelTracksWithCovWithAmbiguities = - o2::soa::Join; + o2::soa::Join; using MyBarrelTracksWithCovWithAmbiguitiesWithColl = - o2::soa::Join; + o2::soa::Join; using MyBarrelTracksWithEMCal = - o2::soa::Join; + o2::soa::Join; using MyBarrelTracksWithCovWithEMCal = - o2::soa::Join; + o2::soa::Join; using MyDielectronCandidates = - o2::soa::Join; + o2::soa::Join; using MyDitrackCandidates = - o2::soa::Join; + o2::soa::Join; using MyDimuonCandidates = - o2::soa::Join; + o2::soa::Join; using MyMuonTracks = - o2::soa::Join; + o2::soa::Join; using MyMuonTracksWithCov = - o2::soa::Join; + o2::soa::Join; using MyMuonTracksWithCovWithAmbiguities = - o2::soa::Join; + o2::soa::Join; using MyMuonTracksSelectedWithColl = - o2::soa::Join; + o2::soa::Join; // bit maps used for the Fill functions of the VarManager constexpr static uint32_t gkEventFillMap = - VarManager::ObjTypes::ReducedEvent | - VarManager::ObjTypes::ReducedEventExtended; + VarManager::ObjTypes::ReducedEvent | + VarManager::ObjTypes::ReducedEventExtended; constexpr static uint32_t gkEventFillMapWithZdc = - VarManager::ObjTypes::ReducedEvent | - VarManager::ObjTypes::ReducedEventExtended | VarManager::ReducedZdc; + VarManager::ObjTypes::ReducedEvent | + VarManager::ObjTypes::ReducedEventExtended | VarManager::ReducedZdc; constexpr static uint32_t gkEventFillMapWithCov = - VarManager::ObjTypes::ReducedEvent | - VarManager::ObjTypes::ReducedEventExtended | - VarManager::ObjTypes::ReducedEventVtxCov; + VarManager::ObjTypes::ReducedEvent | + VarManager::ObjTypes::ReducedEventExtended | + VarManager::ObjTypes::ReducedEventVtxCov; // constexpr static uint32_t gkEventFillMapWithCovFlow = // VarManager::ObjTypes::ReducedEvent | // VarManager::ObjTypes::ReducedEventExtended | // VarManager::ObjTypes::ReducedEventVtxCov | // VarManager::ObjTypes::ReducedEventQvector; constexpr static uint32_t gkEventFillMapWithCovZdcFit = - VarManager::ObjTypes::ReducedEvent | - VarManager::ObjTypes::ReducedEventExtended | - VarManager::ObjTypes::ReducedEventVtxCov | VarManager::ReducedZdc | - VarManager::ReducedFit; + VarManager::ObjTypes::ReducedEvent | + VarManager::ObjTypes::ReducedEventExtended | + VarManager::ObjTypes::ReducedEventVtxCov | VarManager::ReducedZdc | + VarManager::ReducedFit; constexpr static uint32_t gkEventFillMapWithMultExtra = - VarManager::ObjTypes::ReducedEvent | - VarManager::ObjTypes::ReducedEventExtended | - VarManager::ObjTypes::ReducedEventMultExtra; + VarManager::ObjTypes::ReducedEvent | + VarManager::ObjTypes::ReducedEventExtended | + VarManager::ObjTypes::ReducedEventMultExtra; // New fillmap constexpr static uint32_t gkEventFillMapWithMultExtraWithQVector = - VarManager::ObjTypes::ReducedEvent | - VarManager::ObjTypes::ReducedEventExtended | - VarManager::ObjTypes::ReducedEventMultExtra | - VarManager::ObjTypes::CollisionQvect; + VarManager::ObjTypes::ReducedEvent | + VarManager::ObjTypes::ReducedEventExtended | + VarManager::ObjTypes::ReducedEventMultExtra | + VarManager::ObjTypes::CollisionQvect; // constexpr static uint32_t gkEventFillMapWithMultExtraWithQVector = // VarManager::ObjTypes::ReducedEvent | // VarManager::ObjTypes::ReducedEventExtended | // VarManager::ObjTypes::ReducedEventMultExtra | // VarManager::ObjTypes::ReducedEventQvector; constexpr static uint32_t gkEventFillMapWithMultExtraZdc = - VarManager::ObjTypes::ReducedEvent | - VarManager::ObjTypes::ReducedEventExtended | - VarManager::ObjTypes::ReducedEventMultExtra | VarManager::ReducedZdc; + VarManager::ObjTypes::ReducedEvent | + VarManager::ObjTypes::ReducedEventExtended | + VarManager::ObjTypes::ReducedEventMultExtra | VarManager::ReducedZdc; constexpr static uint32_t gkEventFillMapWithMultExtraZdcFit = - VarManager::ObjTypes::ReducedEvent | - VarManager::ObjTypes::ReducedEventExtended | - VarManager::ObjTypes::ReducedEventMultExtra | VarManager::ReducedZdc | - VarManager::ReducedFit; + VarManager::ObjTypes::ReducedEvent | + VarManager::ObjTypes::ReducedEventExtended | + VarManager::ObjTypes::ReducedEventMultExtra | VarManager::ReducedZdc | + VarManager::ReducedFit; constexpr static uint32_t gkEventFillMapWithCovZdcFitMultExtra = - VarManager::ObjTypes::ReducedEvent | - VarManager::ObjTypes::ReducedEventExtended | - VarManager::ObjTypes::ReducedEventVtxCov | VarManager::ReducedZdc | - VarManager::ReducedFit | VarManager::ReducedEventMultExtra; + VarManager::ObjTypes::ReducedEvent | + VarManager::ObjTypes::ReducedEventExtended | + VarManager::ObjTypes::ReducedEventVtxCov | VarManager::ReducedZdc | + VarManager::ReducedFit | VarManager::ReducedEventMultExtra; constexpr static uint32_t gkEventFillMapWithQvectorCentr = - VarManager::ObjTypes::ReducedEvent | - VarManager::ObjTypes::ReducedEventExtended | - VarManager::ObjTypes::CollisionQvect | - VarManager::ObjTypes::ReducedEventMultExtra; + VarManager::ObjTypes::ReducedEvent | + VarManager::ObjTypes::ReducedEventExtended | + VarManager::ObjTypes::CollisionQvect | + VarManager::ObjTypes::ReducedEventMultExtra; // constexpr static uint32_t gkEventFillMapWithQvector = // VarManager::ObjTypes::ReducedEvent | // VarManager::ObjTypes::ReducedEventExtended | @@ -527,30 +529,30 @@ constexpr static uint32_t gkEventFillMapWithQvectorCentr = // VarManager::ObjTypes::ReducedEventVtxCov | // VarManager::ObjTypes::ReducedEventQvector; constexpr static uint32_t gkTrackFillMap = - VarManager::ObjTypes::ReducedTrack | - VarManager::ObjTypes::ReducedTrackBarrel | - VarManager::ObjTypes::ReducedTrackBarrelPID; + VarManager::ObjTypes::ReducedTrack | + VarManager::ObjTypes::ReducedTrackBarrel | + VarManager::ObjTypes::ReducedTrackBarrelPID; constexpr static uint32_t gkTrackFillMapWithCov = - VarManager::ObjTypes::ReducedTrack | - VarManager::ObjTypes::ReducedTrackBarrel | - VarManager::ObjTypes::ReducedTrackBarrelCov | - VarManager::ObjTypes::ReducedTrackBarrelPID; + VarManager::ObjTypes::ReducedTrack | + VarManager::ObjTypes::ReducedTrackBarrel | + VarManager::ObjTypes::ReducedTrackBarrelCov | + VarManager::ObjTypes::ReducedTrackBarrelPID; constexpr static uint32_t gkTrackFillMapWithCovWithColl = - VarManager::ObjTypes::ReducedTrack | - VarManager::ObjTypes::ReducedTrackBarrel | - VarManager::ObjTypes::ReducedTrackBarrelCov | - VarManager::ObjTypes::ReducedTrackBarrelPID | - VarManager::ObjTypes::ReducedTrackCollInfo; + VarManager::ObjTypes::ReducedTrack | + VarManager::ObjTypes::ReducedTrackBarrel | + VarManager::ObjTypes::ReducedTrackBarrelCov | + VarManager::ObjTypes::ReducedTrackBarrelPID | + VarManager::ObjTypes::ReducedTrackCollInfo; constexpr static uint32_t gkTrackFillMapWithEMCal = - gkTrackFillMap | VarManager::ObjTypes::TrackEMCal; + gkTrackFillMap | VarManager::ObjTypes::TrackEMCal; constexpr static uint32_t gkTrackFillMapWithCovWithEMCal = - gkTrackFillMapWithCov | VarManager::ObjTypes::TrackEMCal; + gkTrackFillMapWithCov | VarManager::ObjTypes::TrackEMCal; // constexpr static uint32_t gkMuonFillMap = VarManager::ObjTypes::ReducedMuon | // VarManager::ObjTypes::ReducedMuonExtra; constexpr static uint32_t gkMuonFillMapWithCov = - VarManager::ObjTypes::ReducedMuon | VarManager::ObjTypes::ReducedMuonExtra | - VarManager::ObjTypes::ReducedMuonCov; + VarManager::ObjTypes::ReducedMuon | VarManager::ObjTypes::ReducedMuonExtra | + VarManager::ObjTypes::ReducedMuonCov; // constexpr static uint32_t gkMuonFillMapWithColl = // VarManager::ObjTypes::ReducedMuon | VarManager::ObjTypes::ReducedMuonExtra | // VarManager::ObjTypes::ReducedMuonCollInfo; @@ -559,22 +561,27 @@ constexpr static int pairTypeEE = VarManager::kDecayToEE; constexpr static int pairTypeMuMu = VarManager::kDecayToMuMu; // constexpr static int pairTypeEMu = VarManager::kElectronMuon; -namespace dqtablereader_helpers { -inline float *varValues() { return static_cast(VarManager::fgValues); } -inline TString *varNames() { - return static_cast(VarManager::fgVariableNames); +namespace dqtablereader_helpers +{ +inline float* varValues() { return static_cast(VarManager::fgValues); } +inline TString* varNames() +{ + return static_cast(VarManager::fgVariableNames); } -inline TString *varUnits() { - return static_cast(VarManager::fgVariableUnits); +inline TString* varUnits() +{ + return static_cast(VarManager::fgVariableUnits); } } // namespace dqtablereader_helpers // Global function used to define needed histogram classes void DefineHistograms( - HistogramManager *histMan, const TString &histClasses, - const char *histGroups); // defines histograms for all tasks + HistogramManager* histMan, const TString& histClasses, + const char* histGroups); // defines histograms for all tasks -template void PrintBitMap(TMap map, int nbits) { +template +void PrintBitMap(TMap map, int nbits) +{ std::string bits; bits.reserve(nbits); for (int i = 0; i < nbits; i++) { @@ -595,66 +602,66 @@ struct AnalysisEventSelection { // TODO: Provide the mixing variables and binning directly via configurables // (e.g. vectors of float) o2::framework::Configurable fConfigMixingVariables{ - "cfgMixingVars", "", - "Mixing configs separated by a comma, default no mixing"}; + "cfgMixingVars", "", + "Mixing configs separated by a comma, default no mixing"}; o2::framework::Configurable fConfigMixingVariablesJson{ - "cfgMixingVarsJSON", "", "Mixing configs in JSON format"}; + "cfgMixingVarsJSON", "", "Mixing configs in JSON format"}; o2::framework::Configurable fConfigEventCuts{ - "cfgEventCuts", "eventStandard", "Event selection"}; + "cfgEventCuts", "eventStandard", "Event selection"}; o2::framework::Configurable fConfigEventCutsJSON{ - "cfgEventCutsJSON", "", "Additional event cuts specified in JSON format"}; + "cfgEventCutsJSON", "", "Additional event cuts specified in JSON format"}; o2::framework::Configurable fConfigAddEventHistogram{ - "cfgAddEventHistogram", "", "Comma separated list of histograms"}; + "cfgAddEventHistogram", "", "Comma separated list of histograms"}; o2::framework::Configurable fConfigAddJSONHistograms{ - "cfgAddJSONHistograms", "", - "Add event histograms defined via JSON formatting (see " - "HistogramsLibrary)"}; + "cfgAddJSONHistograms", "", + "Add event histograms defined via JSON formatting (see " + "HistogramsLibrary)"}; o2::framework::Configurable fConfigQA{ - "cfgQA", true, "If true, QA histograms will be created and filled"}; + "cfgQA", true, "If true, QA histograms will be created and filled"}; o2::framework::Configurable fConfigITSROFrameStartBorderMargin{ - "cfgITSROFrameStartBorderMargin", -1, - "Number of bcs at the start of ITS RO Frame border. Take from CCDB if " - "-1"}; + "cfgITSROFrameStartBorderMargin", -1, + "Number of bcs at the start of ITS RO Frame border. Take from CCDB if " + "-1"}; o2::framework::Configurable fConfigITSROFrameEndBorderMargin{ - "cfgITSROFrameEndBorderMargin", -1, - "Number of bcs at the end of ITS RO Frame border. Take from CCDB if -1"}; + "cfgITSROFrameEndBorderMargin", -1, + "Number of bcs at the end of ITS RO Frame border. Take from CCDB if -1"}; o2::framework::Configurable fConfigSplitCollisionsDeltaZ{ - "cfgSplitCollisionsDeltaZ", 1.0, - "maximum delta-z (cm) between two collisions to consider them as split " - "candidates"}; + "cfgSplitCollisionsDeltaZ", 1.0, + "maximum delta-z (cm) between two collisions to consider them as split " + "candidates"}; o2::framework::Configurable fConfigSplitCollisionsDeltaBC{ - "cfgSplitCollisionsDeltaBC", 100, - "maximum delta-BC between two collisions to consider them as split " - "candidates; do not apply if value is negative"}; + "cfgSplitCollisionsDeltaBC", 100, + "maximum delta-BC between two collisions to consider them as split " + "candidates; do not apply if value is negative"}; o2::framework::Configurable fConfigCheckSplitCollisions{ - "cfgCheckSplitCollisions", false, - "If true, run the split collision check and fill histograms"}; + "cfgCheckSplitCollisions", false, + "If true, run the split collision check and fill histograms"}; o2::framework::Configurable fConfigRunZorro{ - "cfgRunZorro", false, - "Enable event selection with zorro [WARNING: under debug, do not " - "enable!]"}; + "cfgRunZorro", false, + "Enable event selection with zorro [WARNING: under debug, do not " + "enable!]"}; o2::framework::Configurable fConfigCcdbUrl{ - "ccdb-url", "http://alice-ccdb.cern.ch", "url of the ccdb repository"}; + "ccdb-url", "http://alice-ccdb.cern.ch", "url of the ccdb repository"}; o2::framework::Configurable fConfigNoLaterThan{ - "ccdb-no-later-than", - std::chrono::duration_cast( - std::chrono::system_clock::now().time_since_epoch()) - .count(), - "latest acceptable timestamp of creation for the object"}; + "ccdb-no-later-than", + std::chrono::duration_cast( + std::chrono::system_clock::now().time_since_epoch()) + .count(), + "latest acceptable timestamp of creation for the object"}; o2::framework::Configurable fConfigFetchInteractionRate{ - "cfgFetchInteractionRate", false, - "Fetch event-wise interaction rate from the CCDB"}; + "cfgFetchInteractionRate", false, + "Fetch event-wise interaction rate from the CCDB"}; o2::framework::Configurable fConfigIRSource{ - "cfgIRSource", "ZNC hadronic", - "Estimator of the interaction rate (Recommended: pp --> T0VTX, Pb-Pb --> " - "ZNC hadronic)"}; + "cfgIRSource", "ZNC hadronic", + "Estimator of the interaction rate (Recommended: pp --> T0VTX, Pb-Pb --> " + "ZNC hadronic)"}; - HistogramManager *fHistMan = nullptr; - MixingHandler *fMixHandler = nullptr; - AnalysisCompositeCut *fEventCut = nullptr; + HistogramManager* fHistMan = nullptr; + MixingHandler* fMixHandler = nullptr; + AnalysisCompositeCut* fEventCut = nullptr; o2::framework::Service fCCDB{}; o2::ccdb::CcdbApi fCCDBApi; @@ -663,22 +670,23 @@ struct AnalysisEventSelection { std::map fSelMap; // key: reduced event global index, value: // event selection decision std::map> - fBCCollMap; // key: global BC, value: vector of reduced event global - // indices + fBCCollMap; // key: global BC, value: vector of reduced event global + // indices int fCurrentRun = -1; - void init(o2::framework::InitContext &context) { + void init(o2::framework::InitContext& context) + { bool isAnyProcessEnabled = - context.mOptions.get("processSkimmed") || - context.mOptions.get("processSkimmedBasic") || - context.mOptions.get("processSkimmedWithZdc") || - context.mOptions.get("processSkimmedWithMultExtra") || - context.mOptions.get("processSkimmedWithMultExtraNoQvector") || - context.mOptions.get("processSkimmedWithMultExtraZdc") || - context.mOptions.get("processSkimmedWithMultExtraZdcFit") || - context.mOptions.get("processSkimmedWithQvectorCentr") || - context.mOptions.get("processSkimmedWithQvectorCentrMerge"); + context.mOptions.get("processSkimmed") || + context.mOptions.get("processSkimmedBasic") || + context.mOptions.get("processSkimmedWithZdc") || + context.mOptions.get("processSkimmedWithMultExtra") || + context.mOptions.get("processSkimmedWithMultExtraNoQvector") || + context.mOptions.get("processSkimmedWithMultExtraZdc") || + context.mOptions.get("processSkimmedWithMultExtraZdcFit") || + context.mOptions.get("processSkimmedWithQvectorCentr") || + context.mOptions.get("processSkimmedWithQvectorCentrMerge"); bool isDummyEnabled = context.mOptions.get("processDummy"); if (isDummyEnabled) { @@ -697,7 +705,7 @@ struct AnalysisEventSelection { fEventCut = new AnalysisCompositeCut(true); TString eventCutStr = fConfigEventCuts.value; if (eventCutStr != "") { - AnalysisCut *cut = o2::aod::dqcuts::GetAnalysisCut(eventCutStr.Data()); + AnalysisCut* cut = o2::aod::dqcuts::GetAnalysisCut(eventCutStr.Data()); if (cut != nullptr) { fEventCut->AddCut(cut); } @@ -705,16 +713,16 @@ struct AnalysisEventSelection { // Additional cuts via JSON TString eventCutJSONStr = fConfigEventCutsJSON.value; if (eventCutJSONStr != "") { - std::vector jsonCuts = - o2::aod::dqcuts::GetCutsFromJSON(eventCutJSONStr.Data()); - for (auto const &cutIt : jsonCuts) { + std::vector jsonCuts = + o2::aod::dqcuts::GetCutsFromJSON(eventCutJSONStr.Data()); + for (auto const& cutIt : jsonCuts) { fEventCut->AddCut(cutIt); } } VarManager::SetUseVars( - AnalysisCut::fgUsedVars); // provide the list of required variables so - // that VarManager knows what to fill + AnalysisCut::fgUsedVars); // provide the list of required variables so + // that VarManager knows what to fill if (fConfigQA) { fHistMan = new HistogramManager("analysisHistos", "", VarManager::kNVars); @@ -729,7 +737,7 @@ struct AnalysisEventSelection { } // Additional histograms via JSON o2::aod::dqhistograms::AddHistogramsFromJSON( - fHistMan, fConfigAddJSONHistograms.value.c_str()); + fHistMan, fConfigAddJSONHistograms.value.c_str()); VarManager::SetUseVars(fHistMan->GetUsedVars()); fOutputList.setObject(fHistMan->GetMainHistogramList()); } @@ -761,46 +769,47 @@ struct AnalysisEventSelection { } template - void runEventSelection(TEvents const &events) { + void runEventSelection(TEvents const& events) + { if (events.size() > 0 && events.begin().runNumber() != fCurrentRun) { std::map metadataRCT, header; header = fCCDBApi.retrieveHeaders( - Form("RCT/Info/RunInformation/%i", events.begin().runNumber()), - metadataRCT, -1); + Form("RCT/Info/RunInformation/%i", events.begin().runNumber()), + metadataRCT, -1); uint64_t sor = std::atol(header["SOR"].c_str()); uint64_t eor = std::atol(header["EOR"].c_str()); VarManager::SetSORandEOR(sor, eor); auto alppar = fCCDB->getForTimeStamp>( - "ITS/Config/AlpideParam", events.begin().timestamp()); + "ITS/Config/AlpideParam", events.begin().timestamp()); auto par = fCCDB->getForTimeStamp( - "EventSelection/EventSelectionParams", events.begin().timestamp()); + "EventSelection/EventSelectionParams", events.begin().timestamp()); int itsROFrameStartBorderMargin = - fConfigITSROFrameStartBorderMargin < 0 - ? par->fITSROFrameStartBorderMargin - : fConfigITSROFrameStartBorderMargin; + fConfigITSROFrameStartBorderMargin < 0 + ? par->fITSROFrameStartBorderMargin + : fConfigITSROFrameStartBorderMargin; int itsROFrameEndBorderMargin = fConfigITSROFrameEndBorderMargin < 0 - ? par->fITSROFrameEndBorderMargin - : fConfigITSROFrameEndBorderMargin; + ? par->fITSROFrameEndBorderMargin + : fConfigITSROFrameEndBorderMargin; VarManager::SetITSROFBorderselection( - alppar->roFrameBiasInBC, alppar->roFrameLengthInBC, - itsROFrameStartBorderMargin, itsROFrameEndBorderMargin); + alppar->roFrameBiasInBC, alppar->roFrameLengthInBC, + itsROFrameStartBorderMargin, itsROFrameEndBorderMargin); fCurrentRun = events.begin().runNumber(); } fSelMap.clear(); fBCCollMap.clear(); - for (auto const &event : events) { + for (auto const& event : events) { // Reset the fValues array and fill event observables VarManager::ResetValues(0, VarManager::kNEventWiseVariables); VarManager::FillEvent(event); // Get the instantaneous IR from the CCDB if (fConfigFetchInteractionRate.value) { VarManager::fgValues[VarManager::kInteractionRate] = - rateFetcher.fetch(fCCDB.service, event.timestamp(), fCurrentRun, - fConfigIRSource.value, true) / - 1000.; // kHz + rateFetcher.fetch(fCCDB.service, event.timestamp(), fCurrentRun, + fConfigIRSource.value, true) / + 1000.; // kHz } bool decision = false; @@ -839,14 +848,14 @@ struct AnalysisEventSelection { std::vector evIndices = {event.globalIndex()}; fBCCollMap[event.globalBC()] = evIndices; } else { - auto &evIndices = fBCCollMap[event.globalBC()]; + auto& evIndices = fBCCollMap[event.globalBC()]; evIndices.push_back(event.globalIndex()); } // create the mixing hash and publish it into the hash table if (fMixHandler != nullptr) { int hh = - fMixHandler->FindEventCategory(dqtablereader_helpers::varValues()); + fMixHandler->FindEventCategory(dqtablereader_helpers::varValues()); // events outside the mixing limits (-1) get a distinct negative hash so // that they are not mixed with each other if (hh < 0) { @@ -858,7 +867,8 @@ struct AnalysisEventSelection { } template - void publishSelections(TEvents const &events) { + void publishSelections(TEvents const& events) + { // Create a map for collisions which are candidate of being split // key: event global index, value: whether pileup event is a possible // splitting @@ -872,7 +882,7 @@ struct AnalysisEventSelection { for (auto bc1It = fBCCollMap.begin(); bc1It != fBCCollMap.end(); ++bc1It) { uint64_t bc1 = bc1It->first; - auto const &bc1Events = bc1It->second; + auto const& bc1Events = bc1It->second; // same bunch event correlations, if more than 1 collisions in this // bunch @@ -908,13 +918,13 @@ struct AnalysisEventSelection { fConfigSplitCollisionsDeltaBC) { break; } - auto const &bc2Events = bc2It->second; + auto const& bc2Events = bc2It->second; // loop over events in the first BC - for (auto const &ev1It : bc1Events) { + for (auto const& ev1It : bc1Events) { auto ev1 = events.rawIteratorAt(ev1It); // loop over events in the second BC - for (auto const &ev2It : bc2Events) { + for (auto const& ev2It : bc2Events) { auto ev2 = events.rawIteratorAt(ev2It); // compute 2-event quantities and mark the candidate split // collisions @@ -937,7 +947,7 @@ struct AnalysisEventSelection { // publish the table auto evSel = static_cast(0); - for (auto const &event : events) { + for (auto const& event : events) { evSel = 0; if (fSelMap[event.globalIndex()]) { // event passed the user cuts evSel |= (static_cast(1) << 0); @@ -955,57 +965,66 @@ struct AnalysisEventSelection { } } - void processSkimmed(MyEvents const &events) { + void processSkimmed(MyEvents const& events) + { runEventSelection(events); publishSelections(events); } - void processSkimmedBasic(MyEventsBasic const &events) { + void processSkimmedBasic(MyEventsBasic const& events) + { runEventSelection(events); publishSelections(events); } - void processSkimmedWithZdc(MyEventsZdc const &events) { + void processSkimmedWithZdc(MyEventsZdc const& events) + { runEventSelection(events); publishSelections(events); } - void processSkimmedWithMultExtra(MyEventsMultExtra const &events) { + void processSkimmedWithMultExtra(MyEventsMultExtra const& events) + { runEventSelection(events); publishSelections(events); } void processSkimmedWithMultExtraNoQvector( - MyEventsMultExtraNoQvector const &events) { + MyEventsMultExtraNoQvector const& events) + { runEventSelection(events); publishSelections(events); } - void processSkimmedWithMultExtraZdc(MyEventsMultExtraZdc const &events) { + void processSkimmedWithMultExtraZdc(MyEventsMultExtraZdc const& events) + { runEventSelection(events); publishSelections(events); } void - processSkimmedWithMultExtraZdcFit(MyEventsMultExtraZdcFit const &events) { + processSkimmedWithMultExtraZdcFit(MyEventsMultExtraZdcFit const& events) + { runEventSelection(events); publishSelections(events); } - void processSkimmedWithQvectorCentr(MyEventsQvectorCentr const &events) { + void processSkimmedWithQvectorCentr(MyEventsQvectorCentr const& events) + { runEventSelection(events); publishSelections(events); } void - processSkimmedWithQvectorCentrMerge(MyEventsQvectorCentrMerge const &events) { + processSkimmedWithQvectorCentrMerge(MyEventsQvectorCentrMerge const& events) + { runEventSelection(events); publishSelections(events); } void processFillEvents( - MyEventsBasic const - &events) // Used to forward the event table from tablemaker, typical - // use for now is jet analysis. + MyEventsBasic const& events) // Used to forward the event table from tablemaker, typical + // use for now is jet analysis. { - for (auto const &event : events) { + for (auto const& event : events) { JetEvents(event.tag_raw(), event.runNumber(), event.posX(), event.posY(), event.posZ(), event.numContrib(), event.collisionTime(), event.collisionTimeRes()); } } - void processDummy(MyEventsBasic const &) { + void processDummy(MyEventsBasic const&) + { // do nothing } @@ -1024,13 +1043,13 @@ struct AnalysisEventSelection { "and without Q-vector", false); PROCESS_SWITCH( - AnalysisEventSelection, processSkimmedWithMultExtraZdc, - "Run event selection on DQ skimmed events, with mult extra and ZDC", - false); + AnalysisEventSelection, processSkimmedWithMultExtraZdc, + "Run event selection on DQ skimmed events, with mult extra and ZDC", + false); PROCESS_SWITCH( - AnalysisEventSelection, processSkimmedWithMultExtraZdcFit, - "Run event selection on DQ skimmed events, with mult extra, ZDC and FIT", - false); + AnalysisEventSelection, processSkimmedWithMultExtraZdcFit, + "Run event selection on DQ skimmed events, with mult extra, ZDC and FIT", + false); PROCESS_SWITCH(AnalysisEventSelection, processSkimmedWithQvectorCentr, "Run event selection on DQ skimmed events, with Q-vector", false); @@ -1054,20 +1073,20 @@ struct AnalysisTrackSelection { o2::framework::OutputObj fOutputList{"output"}; o2::framework::Configurable fConfigCuts{ - "cfgTrackCuts", "jpsiO2MCdebugCuts2", - "Comma separated list of barrel track cuts"}; + "cfgTrackCuts", "jpsiO2MCdebugCuts2", + "Comma separated list of barrel track cuts"}; o2::framework::Configurable fConfigCutsJSON{ - "cfgBarrelTrackCutsJSON", "", - "Additional list of barrel track cuts in JSON format"}; + "cfgBarrelTrackCutsJSON", "", + "Additional list of barrel track cuts in JSON format"}; o2::framework::Configurable fConfigAddTrackHistogram{ - "cfgAddTrackHistogram", "", "Comma separated list of histograms"}; + "cfgAddTrackHistogram", "", "Comma separated list of histograms"}; o2::framework::Configurable fConfigAddJSONHistograms{ - "cfgAddJSONHistograms", "", "Histograms in JSON format"}; + "cfgAddJSONHistograms", "", "Histograms in JSON format"}; o2::framework::Configurable fConfigQA{"cfgQA", false, "If true, fill QA histograms"}; o2::framework::Configurable fConfigPublishAmbiguity{ - "cfgPublishAmbiguity", true, - "If true, publish ambiguity table and fill QA histograms"}; + "cfgPublishAmbiguity", true, + "If true, publish ambiguity table and fill QA histograms"}; // Re-application of the track-to-collision time compatibility on the skimmed // associations. // timeMargin and nSigma must be <= the values used by @@ -1075,77 +1094,78 @@ struct AnalysisTrackSelection { // usePVAssociation and maxPvContributors must be identical to those values. struct : o2::framework::ConfigurableGroup { o2::framework::Configurable cfgAssocTimeCut{ - "cfgAssocTimeCut", false, - "If true, reject associations failing the time compatibility computed " - "with the parameters below"}; + "cfgAssocTimeCut", false, + "If true, reject associations failing the time compatibility computed " + "with the parameters below"}; o2::framework::Configurable cfgAssocTimeMargin{ - "cfgAssocTimeMargin", 0.f, - "time margin (ns); must be <= skimming timeMargin"}; + "cfgAssocTimeMargin", 0.f, + "time margin (ns); must be <= skimming timeMargin"}; o2::framework::Configurable cfgAssocNSigma{ - "cfgAssocNSigma", 4.f, - "nSigmaForTimeCompat; must be <= skimming value"}; + "cfgAssocNSigma", 4.f, + "nSigmaForTimeCompat; must be <= skimming value"}; o2::framework::Configurable cfgAssocBcWindowForOneSigma{ - "cfgAssocBcWindowForOneSigma", 60, - "bcWindowForOneSigma; must be equal to the skimming value"}; + "cfgAssocBcWindowForOneSigma", 60, + "bcWindowForOneSigma; must be equal to the skimming value"}; o2::framework::Configurable cfgAssocUsePVAssociation{ - "cfgAssocUsePVAssociation", 1, - "usePVAssociation; must be equal to the skimming value"}; + "cfgAssocUsePVAssociation", 1, + "usePVAssociation; must be equal to the skimming value"}; o2::framework::Configurable cfgAssocMaxPvContributorsForLowMultReassoc{ - "cfgAssocMaxPvContributorsForLowMultReassoc", 10, - "maxPvContributorsForLowMultReassoc; must be equal to the skimming " - "value"}; + "cfgAssocMaxPvContributorsForLowMultReassoc", 10, + "maxPvContributorsForLowMultReassoc; must be equal to the skimming " + "value"}; } fConfigAssocTime; o2::framework::Configurable fConfigCcdbUrl{ - "ccdb-url", "http://alice-ccdb.cern.ch", "url of the ccdb repository"}; + "ccdb-url", "http://alice-ccdb.cern.ch", "url of the ccdb repository"}; o2::framework::Configurable fConfigCcdbPathTPC{ - "ccdb-path-tpc", "Users/z/zhxiong/TPCPID/PostCalib", - "base path to the ccdb object"}; + "ccdb-path-tpc", "Users/z/zhxiong/TPCPID/PostCalib", + "base path to the ccdb object"}; o2::framework::Configurable fConfigNoLaterThan{ - "ccdb-no-later-than", - std::chrono::duration_cast( - std::chrono::system_clock::now().time_since_epoch()) - .count(), - "latest acceptable timestamp of creation for the object"}; + "ccdb-no-later-than", + std::chrono::duration_cast( + std::chrono::system_clock::now().time_since_epoch()) + .count(), + "latest acceptable timestamp of creation for the object"}; o2::framework::Configurable fConfigComputeTPCpostCalib{ - "cfgTPCpostCalib", false, - "If true, compute TPC post-calibrated n-sigmas"}; + "cfgTPCpostCalib", false, + "If true, compute TPC post-calibrated n-sigmas"}; o2::framework::Configurable fConfigTPCpostCalibType{ - "cfgTPCpostCalibType", 1, - "1: (TPCncls,pIN,eta) calibration typically for pp, 2: " - "(eta,nPV,nLong,tLong) calibration typically for PbPb"}; + "cfgTPCpostCalibType", 1, + "1: (TPCncls,pIN,eta) calibration typically for pp, 2: " + "(eta,nPV,nLong,tLong) calibration typically for PbPb"}; o2::framework::Configurable fConfigTPCuseInterpolatedCalib{ - "cfgTPCpostCalibUseInterpolation", true, - "If true, use interpolated calibration values (default: true)"}; + "cfgTPCpostCalibUseInterpolation", true, + "If true, use interpolated calibration values (default: true)"}; o2::framework::Configurable grpmagPath{ - "grpmagPath", "GLO/Config/GRPMagField", - "CCDB path of the GRPMagField object"}; + "grpmagPath", "GLO/Config/GRPMagField", + "CCDB path of the GRPMagField object"}; // Track related options o2::framework::Configurable fPropTrack{ - "cfgPropTrack", true, - "Propgate tracks to associated collision to recalculate DCA and momentum " - "vector"}; + "cfgPropTrack", true, + "Propgate tracks to associated collision to recalculate DCA and momentum " + "vector"}; o2::framework::Service fCCDB{}; o2::ccdb::CcdbApi fCCDBApi; - HistogramManager *fHistMan = nullptr; - std::vector fTrackCuts; + HistogramManager* fHistMan = nullptr; + std::vector fTrackCuts; int fCurrentRun = 0; // current run kept to detect run changes and trigger // loading params from CCDB std::map> - fNAssocsInBunch; // key: track global index, value: vector of global index - // for events associated in-bunch (events that have - // in-bunch pileup or splitting) + fNAssocsInBunch; // key: track global index, value: vector of global index + // for events associated in-bunch (events that have + // in-bunch pileup or splitting) std::map> - fNAssocsOutOfBunch; // key: track global index, value: vector of global - // index for events associated out-of-bunch (events - // that have no in-bunch pileup) + fNAssocsOutOfBunch; // key: track global index, value: vector of global + // index for events associated out-of-bunch (events + // that have no in-bunch pileup) - void init(o2::framework::InitContext &context) { + void init(o2::framework::InitContext& context) + { if (context.mOptions.get("processDummy")) { return; } @@ -1157,49 +1177,49 @@ struct AnalysisTrackSelection { std::unique_ptr objArray(cutNamesStr.Tokenize(",")); for (int icut = 0; icut < objArray->GetEntries(); ++icut) { fTrackCuts.push_back( - o2::aod::dqcuts::GetCompositeCut(objArray->At(icut)->GetName())); + o2::aod::dqcuts::GetCompositeCut(objArray->At(icut)->GetName())); } } // Extra cuts via JSON TString addTrackCutsStr = fConfigCutsJSON.value; if (addTrackCutsStr != "") { - std::vector addTrackCuts = - o2::aod::dqcuts::GetCutsFromJSON(addTrackCutsStr.Data()); - for (auto const &t : addTrackCuts) { - fTrackCuts.push_back(dynamic_cast(t)); + std::vector addTrackCuts = + o2::aod::dqcuts::GetCutsFromJSON(addTrackCutsStr.Data()); + for (auto const& t : addTrackCuts) { + fTrackCuts.push_back(dynamic_cast(t)); } } VarManager::SetUseVars( - AnalysisCut::fgUsedVars); // provide the list of required variables so - // that VarManager knows what to fill + AnalysisCut::fgUsedVars); // provide the list of required variables so + // that VarManager knows what to fill if (fConfigQA) { fHistMan = - new HistogramManager("analysisHistos", "aa", VarManager::kNVars); + new HistogramManager("analysisHistos", "aa", VarManager::kNVars); fHistMan->SetUseDefaultVariableNames(kTRUE); fHistMan->SetDefaultVarNames(dqtablereader_helpers::varNames(), dqtablereader_helpers::varUnits()); // set one histogram directory for each defined track cut TString histDirNames = "TrackBarrel_BeforeCuts;"; - for (auto const &cut : fTrackCuts) { + for (auto const& cut : fTrackCuts) { histDirNames += Form("TrackBarrel_%s;", cut->GetName()); } if (fConfigPublishAmbiguity) { histDirNames += - "TrackBarrel_AmbiguityInBunch;TrackBarrel_AmbiguityOutOfBunch;"; + "TrackBarrel_AmbiguityInBunch;TrackBarrel_AmbiguityOutOfBunch;"; } DefineHistograms( - fHistMan, histDirNames.Data(), - fConfigAddTrackHistogram.value.data()); // define all histograms + fHistMan, histDirNames.Data(), + fConfigAddTrackHistogram.value.data()); // define all histograms o2::aod::dqhistograms::AddHistogramsFromJSON( - fHistMan, - fConfigAddJSONHistograms.value.c_str()); // ad-hoc histograms via JSON + fHistMan, + fConfigAddJSONHistograms.value.c_str()); // ad-hoc histograms via JSON VarManager::SetUseVars( - fHistMan->GetUsedVars()); // provide the list of required variables so - // that VarManager knows what to fill + fHistMan->GetUsedVars()); // provide the list of required variables so + // that VarManager knows what to fill fOutputList.setObject(fHistMan->GetMainHistogramList()); } @@ -1212,48 +1232,49 @@ struct AnalysisTrackSelection { template - void runTrackSelection(o2::aod::ReducedTracksAssoc const &assocs, - TEvents const &events, TTracks const &tracks) { + void runTrackSelection(o2::aod::ReducedTracksAssoc const& assocs, + TEvents const& events, TTracks const& tracks) + { fNAssocsInBunch.clear(); fNAssocsOutOfBunch.clear(); if (events.size() > 0 && fCurrentRun != events.begin().runNumber()) { if (fConfigComputeTPCpostCalib) { auto calibList = fCCDB->getForTimeStamp( - fConfigCcdbPathTPC.value, events.begin().timestamp()); + fConfigCcdbPathTPC.value, events.begin().timestamp()); VarManager::SetCalibrationObject( - VarManager::kTPCElectronMean, - calibList->FindObject("mean_map_electron")); + VarManager::kTPCElectronMean, + calibList->FindObject("mean_map_electron")); VarManager::SetCalibrationObject( - VarManager::kTPCElectronSigma, - calibList->FindObject("sigma_map_electron")); + VarManager::kTPCElectronSigma, + calibList->FindObject("sigma_map_electron")); VarManager::SetCalibrationObject( - VarManager::kTPCPionMean, calibList->FindObject("mean_map_pion")); + VarManager::kTPCPionMean, calibList->FindObject("mean_map_pion")); VarManager::SetCalibrationObject( - VarManager::kTPCPionSigma, calibList->FindObject("sigma_map_pion")); + VarManager::kTPCPionSigma, calibList->FindObject("sigma_map_pion")); VarManager::SetCalibrationObject( - VarManager::kTPCProtonMean, - calibList->FindObject("mean_map_proton")); + VarManager::kTPCProtonMean, + calibList->FindObject("mean_map_proton")); VarManager::SetCalibrationObject( - VarManager::kTPCProtonSigma, - calibList->FindObject("sigma_map_proton")); + VarManager::kTPCProtonSigma, + calibList->FindObject("sigma_map_proton")); if (fConfigTPCpostCalibType == 2) { VarManager::SetCalibrationObject( - VarManager::kTPCElectronStatus, - calibList->FindObject("status_map_electron")); + VarManager::kTPCElectronStatus, + calibList->FindObject("status_map_electron")); VarManager::SetCalibrationObject( - VarManager::kTPCPionStatus, - calibList->FindObject("status_map_pion")); + VarManager::kTPCPionStatus, + calibList->FindObject("status_map_pion")); VarManager::SetCalibrationObject( - VarManager::kTPCProtonStatus, - calibList->FindObject("status_map_proton")); + VarManager::kTPCProtonStatus, + calibList->FindObject("status_map_proton")); } VarManager::SetCalibrationType(fConfigTPCpostCalibType, fConfigTPCuseInterpolatedCalib); } auto grpmag = fCCDB->getForTimeStamp( - grpmagPath, events.begin().timestamp()); + grpmagPath, events.begin().timestamp()); if (grpmag != nullptr) { VarManager::SetMagneticField(grpmag->getNominalL3Field()); } else { @@ -1263,8 +1284,8 @@ struct AnalysisTrackSelection { std::map metadataRCT, header; header = fCCDBApi.retrieveHeaders( - Form("RCT/Info/RunInformation/%i", events.begin().runNumber()), - metadataRCT, -1); + Form("RCT/Info/RunInformation/%i", events.begin().runNumber()), + metadataRCT, -1); uint64_t sor = std::atol(header["SOR"].c_str()); uint64_t eor = std::atol(header["EOR"].c_str()); VarManager::SetSORandEOR(sor, eor); @@ -1277,7 +1298,7 @@ struct AnalysisTrackSelection { auto filterMap = static_cast(0); int iCut = 0; - for (auto const &assoc : assocs) { + for (auto const& assoc : assocs) { // if the event from this association is not selected, reject also the // association @@ -1299,11 +1320,11 @@ struct AnalysisTrackSelection { if (fConfigAssocTime.cfgAssocTimeCut) { auto origEvent = track.template reducedevent_as(); if (!VarManager::isBarrelAssocTimeCompatible( - track, event, origEvent, fConfigAssocTime.cfgAssocNSigma, - fConfigAssocTime.cfgAssocTimeMargin, - fConfigAssocTime.cfgAssocBcWindowForOneSigma, - fConfigAssocTime.cfgAssocUsePVAssociation, - fConfigAssocTime.cfgAssocMaxPvContributorsForLowMultReassoc)) { + track, event, origEvent, fConfigAssocTime.cfgAssocNSigma, + fConfigAssocTime.cfgAssocTimeMargin, + fConfigAssocTime.cfgAssocBcWindowForOneSigma, + fConfigAssocTime.cfgAssocUsePVAssociation, + fConfigAssocTime.cfgAssocMaxPvContributorsForLowMultReassoc)) { trackSel(0); continue; } @@ -1323,7 +1344,7 @@ struct AnalysisTrackSelection { VarManager::ObjTypes::TrackEMCal)) { if (track.has_matchedEMCalCluster()) { auto cluster = - track.template matchedEMCalCluster_as(); + track.template matchedEMCalCluster_as(); VarManager::FillTrackEMCal(cluster, track.p(), track.emcalMatchDeltaEta(), track.emcalMatchDeltaPhi()); @@ -1358,7 +1379,7 @@ struct AnalysisTrackSelection { std::vector evVector = {event.globalIndex()}; fNAssocsInBunch[track.globalIndex()] = evVector; } else { - auto &evVector = fNAssocsInBunch[track.globalIndex()]; + auto& evVector = fNAssocsInBunch[track.globalIndex()]; evVector.push_back(event.globalIndex()); } } else { @@ -1367,7 +1388,7 @@ struct AnalysisTrackSelection { std::vector evVector = {event.globalIndex()}; fNAssocsOutOfBunch[track.globalIndex()] = evVector; } else { - auto &evVector = fNAssocsOutOfBunch[track.globalIndex()]; + auto& evVector = fNAssocsOutOfBunch[track.globalIndex()]; evVector.push_back(event.globalIndex()); } } @@ -1377,7 +1398,7 @@ struct AnalysisTrackSelection { if (fConfigPublishAmbiguity) { // QA the collision-track associations if (fConfigQA) { - for (auto const &[trackIdx, evIndices] : fNAssocsInBunch) { + for (auto const& [trackIdx, evIndices] : fNAssocsInBunch) { if (evIndices.size() == 1) { continue; } @@ -1387,12 +1408,12 @@ struct AnalysisTrackSelection { // Exceptionally, set the VarManager ambiguity number here, to be used // in histograms VarManager::fgValues[VarManager::kBarrelNAssocsInBunch] = - static_cast(evIndices.size()); + static_cast(evIndices.size()); fHistMan->FillHistClass("TrackBarrel_AmbiguityInBunch", dqtablereader_helpers::varValues()); } // end loop over in-bunch ambiguous tracks - for (auto const &[trackIdx, evIndices] : fNAssocsOutOfBunch) { + for (auto const& [trackIdx, evIndices] : fNAssocsOutOfBunch) { if (evIndices.size() == 1) { continue; } @@ -1401,14 +1422,14 @@ struct AnalysisTrackSelection { VarManager::FillTrack(track); // Exceptionally, set the VarManager ambiguity number here VarManager::fgValues[VarManager::kBarrelNAssocsOutOfBunch] = - static_cast(evIndices.size()); + static_cast(evIndices.size()); fHistMan->FillHistClass("TrackBarrel_AmbiguityOutOfBunch", dqtablereader_helpers::varValues()); } // end loop over out-of-bunch ambiguous tracks } // publish the ambiguity table - for (auto const &track : tracks) { + for (auto const& track : tracks) { int8_t nInBunch = 0; if (fNAssocsInBunch.find(track.globalIndex()) != fNAssocsInBunch.end()) { @@ -1425,39 +1446,45 @@ struct AnalysisTrackSelection { } // end runTrackSelection() - void processSkimmed(o2::aod::ReducedTracksAssoc const &assocs, - MyEventsSelected const &events, - MyBarrelTracks const &tracks) { + void processSkimmed(o2::aod::ReducedTracksAssoc const& assocs, + MyEventsSelected const& events, + MyBarrelTracks const& tracks) + { runTrackSelection(assocs, events, tracks); } - void processSkimmedWithMultExtra(o2::aod::ReducedTracksAssoc const &assocs, - MyEventsMultExtraSelected const &events, - MyBarrelTracks const &tracks) { + void processSkimmedWithMultExtra(o2::aod::ReducedTracksAssoc const& assocs, + MyEventsMultExtraSelected const& events, + MyBarrelTracks const& tracks) + { runTrackSelection( - assocs, events, tracks); + assocs, events, tracks); } - void processSkimmedWithCov(o2::aod::ReducedTracksAssoc const &assocs, - MyEventsVtxCovSelected const &events, - MyBarrelTracksWithCov const &tracks) { + void processSkimmedWithCov(o2::aod::ReducedTracksAssoc const& assocs, + MyEventsVtxCovSelected const& events, + MyBarrelTracksWithCov const& tracks) + { runTrackSelection( - assocs, events, tracks); + assocs, events, tracks); } - void processSkimmedWithEMCal(o2::aod::ReducedTracksAssoc const &assocs, - MyEventsSelected const &events, - MyBarrelTracksWithEMCal const &tracks, - o2::aod::ReducedEMCals const & /*emcals*/) { + void processSkimmedWithEMCal(o2::aod::ReducedTracksAssoc const& assocs, + MyEventsSelected const& events, + MyBarrelTracksWithEMCal const& tracks, + o2::aod::ReducedEMCals const& /*emcals*/) + { runTrackSelection(assocs, events, tracks); } void - processSkimmedWithCovWithEMCal(o2::aod::ReducedTracksAssoc const &assocs, - MyEventsVtxCovSelected const &events, - MyBarrelTracksWithCovWithEMCal const &tracks, - o2::aod::ReducedEMCals const & /*emcals*/) { + processSkimmedWithCovWithEMCal(o2::aod::ReducedTracksAssoc const& assocs, + MyEventsVtxCovSelected const& events, + MyBarrelTracksWithCovWithEMCal const& tracks, + o2::aod::ReducedEMCals const& /*emcals*/) + { runTrackSelection( - assocs, events, tracks); + assocs, events, tracks); } - void processDummy(MyEventsBasic const &) { + void processDummy(MyEventsBasic const&) + { // do nothing } @@ -1493,46 +1520,47 @@ struct AnalysisMuonSelection { o2::framework::OutputObj fOutputList{"output"}; o2::framework::Configurable fConfigCuts{ - "cfgMuonCuts", "muonQualityCuts", "Comma separated list of muon cuts"}; + "cfgMuonCuts", "muonQualityCuts", "Comma separated list of muon cuts"}; o2::framework::Configurable fConfigCutsJSON{ - "cfgMuonCutsJSON", "", "Additional list of muon cuts in JSON format"}; + "cfgMuonCutsJSON", "", "Additional list of muon cuts in JSON format"}; o2::framework::Configurable fConfigQA{"cfgQA", false, "If true, fill QA histograms"}; o2::framework::Configurable fConfigAddMuonHistogram{ - "cfgAddMuonHistogram", "", "Comma separated list of histograms"}; + "cfgAddMuonHistogram", "", "Comma separated list of histograms"}; o2::framework::Configurable fConfigAddJSONHistograms{ - "cfgAddJSONHistograms", "", "Histograms in JSON format"}; + "cfgAddJSONHistograms", "", "Histograms in JSON format"}; o2::framework::Configurable fConfigPublishAmbiguity{ - "cfgPublishAmbiguity", true, - "If true, publish ambiguity table and fill QA histograms"}; + "cfgPublishAmbiguity", true, + "If true, publish ambiguity table and fill QA histograms"}; o2::framework::Configurable fConfigCcdbUrl{ - "ccdb-url", "http://alice-ccdb.cern.ch", "url of the ccdb repository"}; + "ccdb-url", "http://alice-ccdb.cern.ch", "url of the ccdb repository"}; o2::framework::Configurable fConfigNoLaterThan{ - "ccdb-no-later-than", - std::chrono::duration_cast( - std::chrono::system_clock::now().time_since_epoch()) - .count(), - "latest acceptable timestamp of creation for the object"}; + "ccdb-no-later-than", + std::chrono::duration_cast( + std::chrono::system_clock::now().time_since_epoch()) + .count(), + "latest acceptable timestamp of creation for the object"}; o2::framework::Service fCCDB{}; - HistogramManager *fHistMan = nullptr; - std::vector fMuonCuts; + HistogramManager* fHistMan = nullptr; + std::vector fMuonCuts; int fCurrentRun = 0; // current run kept to detect run changes and trigger // loading params from CCDB std::map> - fNAssocsInBunch; // key: muon global index, value: vector of global index - // for events associated in-bunch (events that have - // in-bunch pileup or splitting) + fNAssocsInBunch; // key: muon global index, value: vector of global index + // for events associated in-bunch (events that have + // in-bunch pileup or splitting) std::map> - fNAssocsOutOfBunch; // key: muon global index, value: vector of global - // index for events associated out-of-bunch (events - // that have no in-bunch pileup) + fNAssocsOutOfBunch; // key: muon global index, value: vector of global + // index for events associated out-of-bunch (events + // that have no in-bunch pileup) - void init(o2::framework::InitContext &context) { + void init(o2::framework::InitContext& context) + { if (context.mOptions.get("processDummy")) { return; } @@ -1544,49 +1572,49 @@ struct AnalysisMuonSelection { std::unique_ptr objArray(cutNamesStr.Tokenize(",")); for (int icut = 0; icut < objArray->GetEntries(); ++icut) { fMuonCuts.push_back( - o2::aod::dqcuts::GetCompositeCut(objArray->At(icut)->GetName())); + o2::aod::dqcuts::GetCompositeCut(objArray->At(icut)->GetName())); } } // extra cuts from JSON TString addCutsStr = fConfigCutsJSON.value; if (addCutsStr != "") { - std::vector addCuts = - o2::aod::dqcuts::GetCutsFromJSON(addCutsStr.Data()); - for (auto const &t : addCuts) { - fMuonCuts.push_back(dynamic_cast(t)); + std::vector addCuts = + o2::aod::dqcuts::GetCutsFromJSON(addCutsStr.Data()); + for (auto const& t : addCuts) { + fMuonCuts.push_back(dynamic_cast(t)); } } VarManager::SetUseVars( - AnalysisCut::fgUsedVars); // provide the list of required variables so - // that VarManager knows what to fill + AnalysisCut::fgUsedVars); // provide the list of required variables so + // that VarManager knows what to fill if (fConfigQA) { fHistMan = - new HistogramManager("analysisHistos", "aa", VarManager::kNVars); + new HistogramManager("analysisHistos", "aa", VarManager::kNVars); fHistMan->SetUseDefaultVariableNames(kTRUE); fHistMan->SetDefaultVarNames(dqtablereader_helpers::varNames(), dqtablereader_helpers::varUnits()); // set one histogram directory for each defined track cut TString histDirNames = "TrackMuon_BeforeCuts;"; - for (auto const &cut : fMuonCuts) { + for (auto const& cut : fMuonCuts) { histDirNames += Form("TrackMuon_%s;", cut->GetName()); } if (fConfigPublishAmbiguity) { histDirNames += - "TrackMuon_AmbiguityInBunch;TrackMuon_AmbiguityOutOfBunch;"; + "TrackMuon_AmbiguityInBunch;TrackMuon_AmbiguityOutOfBunch;"; } DefineHistograms( - fHistMan, histDirNames.Data(), - fConfigAddMuonHistogram.value.data()); // define all histograms + fHistMan, histDirNames.Data(), + fConfigAddMuonHistogram.value.data()); // define all histograms o2::aod::dqhistograms::AddHistogramsFromJSON( - fHistMan, - fConfigAddJSONHistograms.value.c_str()); // ad-hoc histograms via JSON + fHistMan, + fConfigAddJSONHistograms.value.c_str()); // ad-hoc histograms via JSON VarManager::SetUseVars( - fHistMan->GetUsedVars()); // provide the list of required variables so - // that VarManager knows what to fill + fHistMan->GetUsedVars()); // provide the list of required variables so + // that VarManager knows what to fill fOutputList.setObject(fHistMan->GetMainHistogramList()); } @@ -1598,8 +1626,9 @@ struct AnalysisMuonSelection { template - void runMuonSelection(o2::aod::ReducedMuonsAssoc const &assocs, - TEvents const &events, TMuons const &muons) { + void runMuonSelection(o2::aod::ReducedMuonsAssoc const& assocs, + TEvents const& events, TMuons const& muons) + { fNAssocsInBunch.clear(); fNAssocsOutOfBunch.clear(); @@ -1612,7 +1641,7 @@ struct AnalysisMuonSelection { auto filterMap = static_cast(0); int iCut = 0; - for (auto const &assoc : assocs) { + for (auto const& assoc : assocs) { auto event = assoc.template reducedevent_as(); if (!event.isEventSelected_bit(0)) { muonSel(0); @@ -1651,7 +1680,7 @@ struct AnalysisMuonSelection { std::vector evVector = {event.globalIndex()}; fNAssocsInBunch[track.globalIndex()] = evVector; } else { - auto &evVector = fNAssocsInBunch[track.globalIndex()]; + auto& evVector = fNAssocsInBunch[track.globalIndex()]; evVector.push_back(event.globalIndex()); } } else { @@ -1660,7 +1689,7 @@ struct AnalysisMuonSelection { std::vector evVector = {event.globalIndex()}; fNAssocsOutOfBunch[track.globalIndex()] = evVector; } else { - auto &evVector = fNAssocsOutOfBunch[track.globalIndex()]; + auto& evVector = fNAssocsOutOfBunch[track.globalIndex()]; evVector.push_back(event.globalIndex()); } } @@ -1670,7 +1699,7 @@ struct AnalysisMuonSelection { if (fConfigPublishAmbiguity) { // QA the collision-track associations if (fConfigQA) { - for (auto const &[trackIdx, evIndices] : fNAssocsInBunch) { + for (auto const& [trackIdx, evIndices] : fNAssocsInBunch) { if (evIndices.size() == 1) { continue; } @@ -1678,12 +1707,12 @@ struct AnalysisMuonSelection { VarManager::ResetValues(0, VarManager::kNMuonTrackVariables); VarManager::FillTrack(track); VarManager::fgValues[VarManager::kMuonNAssocsInBunch] = - static_cast(evIndices.size()); + static_cast(evIndices.size()); fHistMan->FillHistClass("TrackMuon_AmbiguityInBunch", dqtablereader_helpers::varValues()); } // end loop over in-bunch ambiguous tracks - for (auto const &[trackIdx, evIndices] : fNAssocsOutOfBunch) { + for (auto const& [trackIdx, evIndices] : fNAssocsOutOfBunch) { if (evIndices.size() == 1) { continue; } @@ -1691,14 +1720,14 @@ struct AnalysisMuonSelection { VarManager::ResetValues(0, VarManager::kNMuonTrackVariables); VarManager::FillTrack(track); VarManager::fgValues[VarManager::kMuonNAssocsOutOfBunch] = - static_cast(evIndices.size()); + static_cast(evIndices.size()); fHistMan->FillHistClass("TrackMuon_AmbiguityOutOfBunch", dqtablereader_helpers::varValues()); } // end loop over out-of-bunch ambiguous tracks } // publish the ambiguity table - for (auto const &track : muons) { + for (auto const& track : muons) { int8_t nInBunch = 0; if (fNAssocsInBunch.find(track.globalIndex()) != fNAssocsInBunch.end()) { @@ -1714,13 +1743,15 @@ struct AnalysisMuonSelection { } } - void processSkimmed(o2::aod::ReducedMuonsAssoc const &assocs, - MyEventsVtxCovSelected const &events, - MyMuonTracksWithCov const &muons) { + void processSkimmed(o2::aod::ReducedMuonsAssoc const& assocs, + MyEventsVtxCovSelected const& events, + MyMuonTracksWithCov const& muons) + { runMuonSelection( - assocs, events, muons); + assocs, events, muons); } - void processDummy(MyEventsBasic const &) { + void processDummy(MyEventsBasic const&) + { // do nothing } @@ -1738,27 +1769,28 @@ struct AnalysisMuonSelection { // analysis. struct AnalysisPrefilterSelection { o2::framework::Produces - prefilter; // joinable with o2::aod::ReducedTracksAssoc + prefilter; // joinable with o2::aod::ReducedTracksAssoc // Configurables o2::framework::Configurable fConfigPrefilterTrackCut{ - "cfgPrefilterTrackCut", "", "Prefilter track cut"}; + "cfgPrefilterTrackCut", "", "Prefilter track cut"}; o2::framework::Configurable fConfigPrefilterPairCut{ - "cfgPrefilterPairCut", "", "Prefilter pair cut"}; + "cfgPrefilterPairCut", "", "Prefilter pair cut"}; o2::framework::Configurable fConfigTrackCuts{ - "cfgTrackCuts", "", "Track cuts for which to run the prefilter"}; + "cfgTrackCuts", "", "Track cuts for which to run the prefilter"}; // TODO: Add prefilter pair cut via JSON std::map fPrefilterMap; - AnalysisCompositeCut *fPairCut = nullptr; + AnalysisCompositeCut* fPairCut = nullptr; uint32_t fPrefilterMask = 0; int fPrefilterCutBit = -1; o2::framework::Preslice trackAssocsPerCollision = - o2::aod::reducedtrack_association::reducedeventId; + o2::aod::reducedtrack_association::reducedeventId; - void init(o2::framework::InitContext &context) { + void init(o2::framework::InitContext& context) + { if (context.mOptions.get("processDummy")) { return; } @@ -1767,7 +1799,7 @@ struct AnalysisPrefilterSelection { bool runPrefilter = true; // get the list of track cuts to be prefiltered TString trackCutsStr = fConfigTrackCuts.value; - TObjArray *objArrayTrackCuts = nullptr; + TObjArray* objArrayTrackCuts = nullptr; if (!trackCutsStr.IsNull()) { objArrayTrackCuts = trackCutsStr.Tokenize(","); if (objArrayTrackCuts == nullptr) { @@ -1793,18 +1825,18 @@ struct AnalysisPrefilterSelection { // to mark just the ones we want to apply a prefilter on std::string trackCuts; o2::common::core::getTaskOptionValue( - context, "analysis-track-selection", "cfgTrackCuts", trackCuts, - false); + context, "analysis-track-selection", "cfgTrackCuts", trackCuts, + false); TString allTrackCutsStr = trackCuts; // check also the cuts added via JSON and add them to the string of cuts o2::common::core::getTaskOptionValue( - context, "analysis-track-selection", "cfgBarrelTrackCutsJSON", - trackCuts, false); + context, "analysis-track-selection", "cfgBarrelTrackCutsJSON", + trackCuts, false); TString addTrackCutsStr = trackCuts; if (addTrackCutsStr != "") { - std::vector addTrackCuts = - o2::aod::dqcuts::GetCutsFromJSON(addTrackCutsStr.Data()); - for (auto const &t : addTrackCuts) { + std::vector addTrackCuts = + o2::aod::dqcuts::GetCutsFromJSON(addTrackCutsStr.Data()); + for (auto const& t : addTrackCuts) { allTrackCutsStr += Form(",%s", t->GetName()); } } @@ -1812,7 +1844,7 @@ struct AnalysisPrefilterSelection { std::unique_ptr objArray(allTrackCutsStr.Tokenize(",")); if (objArray == nullptr) { LOG(fatal) - << " Not getting any track cuts from the barrel-track-selection "; + << " Not getting any track cuts from the barrel-track-selection "; } if (objArray->FindObject(prefilterTrackCutStr.Data()) == nullptr) { LOG(fatal) << " Prefilter track cut not among the cuts calculated by " @@ -1840,24 +1872,25 @@ struct AnalysisPrefilterSelection { } VarManager::SetUseVars( - AnalysisCut::fgUsedVars); // provide the list of required variables so - // that VarManager knows what to fill + AnalysisCut::fgUsedVars); // provide the list of required variables so + // that VarManager knows what to fill VarManager::SetupTwoProngDCAFitter( - 5.0f, true, 200.0f, 4.0f, 1.0e-3f, 0.9f, - true); // TODO: get these parameters from Configurables + 5.0f, true, 200.0f, 4.0f, 1.0e-3f, 0.9f, + true); // TODO: get these parameters from Configurables // VarManager::SetupTwoProngFwdDCAFitter(5.0f, true, 200.0f, 1.0e-3f, 0.9f, // true); } template void runPrefilter(o2::soa::Join const &assocs, - TTracks const & /*tracks*/) { + o2::aod::BarrelTrackCuts> const& assocs, + TTracks const& /*tracks*/) + { if (fPrefilterCutBit < 0 || fPrefilterMask == 0) { return; } - for (auto const &[assoc1, assoc2] : o2::soa::combinations(assocs, assocs)) { + for (auto const& [assoc1, assoc2] : o2::soa::combinations(assocs, assocs)) { auto track1 = assoc1.template reducedtrack_as(); auto track2 = assoc2.template reducedtrack_as(); @@ -1871,9 +1904,9 @@ struct AnalysisPrefilterSelection { // here we check the cuts fulfilled by both tracks, for both the tight and // loose selections uint32_t track1Candidate = - (assoc1.isBarrelSelected_raw() & fPrefilterMask); + (assoc1.isBarrelSelected_raw() & fPrefilterMask); uint32_t track2Candidate = - (assoc2.isBarrelSelected_raw() & fPrefilterMask); + (assoc2.isBarrelSelected_raw() & fPrefilterMask); bool track1Loose = assoc1.isBarrelSelected_bit(fPrefilterCutBit); bool track2Loose = assoc2.isBarrelSelected_bit(fPrefilterCutBit); @@ -1902,15 +1935,15 @@ struct AnalysisPrefilterSelection { } void processBarrelSkimmed( - MyEventsBasic const &events, - o2::soa::Join const - &assocs, - MyBarrelTracks const &tracks) { + MyEventsBasic const& events, + o2::soa::Join const& assocs, + MyBarrelTracks const& tracks) + { fPrefilterMap.clear(); - for (auto const &event : events) { + for (auto const& event : events) { auto groupedAssocs = - assocs.sliceBy(trackAssocsPerCollision, event.globalIndex()); + assocs.sliceBy(trackAssocsPerCollision, event.globalIndex()); if (groupedAssocs.size() > 1) { runPrefilter(groupedAssocs, tracks); } @@ -1924,7 +1957,7 @@ struct AnalysisPrefilterSelection { prefilter(mymap); } } else { - for (auto const &assoc : assocs) { + for (auto const& assoc : assocs) { // TODO: just use the index from the assoc (no need to cast the whole // track) auto track = assoc.template reducedtrack_as(); @@ -1942,7 +1975,8 @@ struct AnalysisPrefilterSelection { } } - void processDummy(MyEventsBasic const &) { + void processDummy(MyEventsBasic const&) + { // do nothing } @@ -1975,9 +2009,9 @@ struct AnalysisSameEventPairing { o2::framework::Produces dileptonEventInfoList; o2::framework::Produces dileptonMiniTree; - o2::base::MatLayerCylSet *fLUT = nullptr; - TH1D *ResoFlowSP = nullptr; - TH1D *ResoFlowEP = nullptr; + o2::base::MatLayerCylSet* fLUT = nullptr; + TH1D* ResoFlowSP = nullptr; + TH1D* ResoFlowEP = nullptr; int fCurrentRun = -1; // needed to detect if the run changed and trigger // update of calibrations etc. @@ -1985,154 +2019,154 @@ struct AnalysisSameEventPairing { struct : o2::framework::ConfigurableGroup { o2::framework::Configurable track{ - "cfgTrackCuts", "jpsiO2MCdebugCuts2", - "Comma separated list of barrel track cuts"}; + "cfgTrackCuts", "jpsiO2MCdebugCuts2", + "Comma separated list of barrel track cuts"}; o2::framework::Configurable muon{ - "cfgMuonCuts", "", "Comma separated list of muon cuts"}; + "cfgMuonCuts", "", "Comma separated list of muon cuts"}; o2::framework::Configurable pair{ - "cfgPairCuts", "", "Comma separated list of pair cuts"}; + "cfgPairCuts", "", "Comma separated list of pair cuts"}; o2::framework::Configurable qVector{ - "cfgQvectorTrackCut", "", - "Track cut of Q-vector, enable this if you want to remove the " - "auto-correlation in TPC"}; + "cfgQvectorTrackCut", "", + "Track cut of Q-vector, enable this if you want to remove the " + "auto-correlation in TPC"}; o2::framework::Configurable event{ - "cfgRemoveCollSplittingCandidates", false, - "If true, remove collision splitting candidates as determined by the " - "event selection task upstream"}; + "cfgRemoveCollSplittingCandidates", false, + "If true, remove collision splitting candidates as determined by the " + "event selection task upstream"}; // TODO: Add pair cuts via JSON } fConfigCuts; o2::framework::Configurable fConfigMixingDepth{ - "cfgMixingDepth", 100, "Number of Events stored for event mixing"}; + "cfgMixingDepth", 100, "Number of Events stored for event mixing"}; o2::framework::Configurable fConfigMixingVariables{ - "cfgMixingVars", "", - "Mixing configs separated by a comma, default no mixing"}; + "cfgMixingVars", "", + "Mixing configs separated by a comma, default no mixing"}; o2::framework::Configurable fConfigMixingVariablesJson{ - "cfgMixingVarsJSON", "", "Mixing configs in JSON format"}; + "cfgMixingVarsJSON", "", "Mixing configs in JSON format"}; o2::framework::Configurable fConfigRunMixingAcrossTFs{ - "cfgRunMixingAcrossTFs", false, - "If true, run event mixing using the MixingHandler which accumulates " - "events across multiple TFs"}; + "cfgRunMixingAcrossTFs", false, + "If true, run event mixing using the MixingHandler which accumulates " + "events across multiple TFs"}; // o2::framework::Configurable // fConfigAddEventMixingHistogram{"cfgAddEventMixingHistogram", "", "Comma // separated list of histograms"}; o2::framework::Configurable fConfigAddSEPHistogram{ - "cfgAddSEPHistogram", "", "Comma separated list of histograms"}; + "cfgAddSEPHistogram", "", "Comma separated list of histograms"}; o2::framework::Configurable fConfigAddJSONHistograms{ - "cfgAddJSONHistograms", "", "Histograms in JSON format"}; + "cfgAddJSONHistograms", "", "Histograms in JSON format"}; o2::framework::Configurable fConfigQA{ - "cfgQA", true, "If true, fill output histograms"}; + "cfgQA", true, "If true, fill output histograms"}; o2::framework::Configurable fConfigAmbiguousMuonHistograms{ - "cfgAmbiguousMuonHistograms", true, "If true, fill ambiguous histograms"}; + "cfgAmbiguousMuonHistograms", true, "If true, fill ambiguous histograms"}; // option for TR pair fill o2::framework::Configurable fConfigTRPairs{ - "cfgFillTRPairs", false, "If true, fill Track rotation pairs"}; + "cfgFillTRPairs", false, "If true, fill Track rotation pairs"}; o2::framework::Configurable fConfigNRotations{ - "cfgNRotations", 3, - "Number of rotations for event plane preserving track rotation method, " - "only 1 or 3 are supported"}; + "cfgNRotations", 3, + "Number of rotations for event plane preserving track rotation method, " + "only 1 or 3 are supported"}; struct : o2::framework::ConfigurableGroup { o2::framework::Configurable url{ - "ccdb-url", "http://alice-ccdb.cern.ch", "url of the ccdb repository"}; + "ccdb-url", "http://alice-ccdb.cern.ch", "url of the ccdb repository"}; o2::framework::Configurable grpMagPath{ - "grpmagPath", "GLO/Config/GRPMagField", - "CCDB path of the GRPMagField object"}; + "grpmagPath", "GLO/Config/GRPMagField", + "CCDB path of the GRPMagField object"}; o2::framework::Configurable lutPath{ - "lutPath", "GLO/Param/MatLUT", "Path of the Lut parametrization"}; + "lutPath", "GLO/Param/MatLUT", "Path of the Lut parametrization"}; o2::framework::Configurable GrpLhcIfPath{ - "grplhcif", "GLO/Config/GRPLHCIF", - "Path on the CCDB for the GRPLHCIF object"}; + "grplhcif", "GLO/Config/GRPLHCIF", + "Path on the CCDB for the GRPLHCIF object"}; o2::framework::Configurable efficiencyPath{ - "effHistPath", "Users/z/zhxiong/efficiency", - "Path on the CCDB for the efficiency histograms"}; + "effHistPath", "Users/z/zhxiong/efficiency", + "Path on the CCDB for the efficiency histograms"}; o2::framework::Configurable flowPath{ - "flowPath", "Users/y/yiping/FlowResolution", - "Path to the flow resolution object"}; + "flowPath", "Users/y/yiping/FlowResolution", + "Path to the flow resolution object"}; o2::framework::Configurable phiPath{ - "phiPath", "Users/h/hxiaoyu/TrackPhi/LHC23", - "Path to load phi distribution for track rotation"}; + "phiPath", "Users/h/hxiaoyu/TrackPhi/LHC23", + "Path to load phi distribution for track rotation"}; } fConfigCCDB; struct : o2::framework::ConfigurableGroup { o2::framework::Configurable flatTables{ - "cfgFlatTables", false, - "Produce a single flat tables with all relevant information of the " - "pairs and single tracks"}; + "cfgFlatTables", false, + "Produce a single flat tables with all relevant information of the " + "pairs and single tracks"}; o2::framework::Configurable polarTables{ - "cfgPolarTables", false, - "Produce tables with dilepton polarization information"}; + "cfgPolarTables", false, + "Produce tables with dilepton polarization information"}; o2::framework::Configurable useKFVertexing{ - "cfgUseKFVertexing", false, - "Use KF Particle for secondary vertex reconstruction (DCAFitter is " - "used by default)"}; + "cfgUseKFVertexing", false, + "Use KF Particle for secondary vertex reconstruction (DCAFitter is " + "used by default)"}; o2::framework::Configurable useAbsDCA{ - "cfgUseAbsDCA", false, - "Use absolute DCA minimization instead of chi^2 minimization in " - "secondary vertexing"}; + "cfgUseAbsDCA", false, + "Use absolute DCA minimization instead of chi^2 minimization in " + "secondary vertexing"}; o2::framework::Configurable noCorr{ - "cfgNoCorrFwdProp", false, - "Do not correct for MCS effects in track propagation"}; + "cfgNoCorrFwdProp", false, + "Do not correct for MCS effects in track propagation"}; o2::framework::Configurable collisionSystem{ - "syst", "pp", "Collision system, pp or PbPb"}; + "syst", "pp", "Collision system, pp or PbPb"}; o2::framework::Configurable centerMassEnergy{ - "energy", 13600, "Center of mass energy in GeV"}; + "energy", 13600, "Center of mass energy in GeV"}; o2::framework::Configurable propTrack{ - "cfgPropTrack", true, - "Propgate tracks to associated collision to recalculate DCA and " - "momentum vector"}; + "cfgPropTrack", true, + "Propgate tracks to associated collision to recalculate DCA and " + "momentum vector"}; o2::framework::Configurable useRemoteCollisionInfo{ - "cfgUseRemoteCollisionInfo", false, - "Use remote collision information from CCDB"}; + "cfgUseRemoteCollisionInfo", false, + "Use remote collision information from CCDB"}; o2::framework::Configurable useEfficiencyWeighting{ - "cfgUseEfficiencyWeighting", false, - "Apply efficiency weighting to the pairs from CCDB"}; + "cfgUseEfficiencyWeighting", false, + "Apply efficiency weighting to the pairs from CCDB"}; o2::framework::Configurable efficiencyType{ - "cfgEfficiencyType", 0, - "Type of efficiency to apply from CCDB: 0 no efficiency, 1 " - "pt-cent-costhetastar"}; + "cfgEfficiencyType", 0, + "Type of efficiency to apply from CCDB: 0 no efficiency, 1 " + "pt-cent-costhetastar"}; o2::framework::Configurable useFlowReso{ - "cfgUseFlowReso", false, "Use remote flow information from CCDB"}; + "cfgUseFlowReso", false, "Use remote flow information from CCDB"}; o2::framework::Configurable usePhiDistribution{ - "cfgUsePhiDistribution", false, - "Use phi distribution to correct track rotation"}; + "cfgUsePhiDistribution", false, + "Use phi distribution to correct track rotation"}; } fConfigOptions; struct : o2::framework::ConfigurableGroup { o2::framework::Configurable applyBDT{"applyBDT", false, "Flag to apply ML selections"}; o2::framework::Configurable fConfigBdtCutsJSON{ - "fConfigBdtCutsJSON", "", "Additional list of BDT cuts in JSON format"}; + "fConfigBdtCutsJSON", "", "Additional list of BDT cuts in JSON format"}; o2::framework::Configurable> modelPathsCCDB{ - "modelPathsCCDB", - std::vector{"Users/j/jseo/ML/PbPbPsi/default/"}, - "Paths of models on CCDB"}; + "modelPathsCCDB", + std::vector{"Users/j/jseo/ML/PbPbPsi/default/"}, + "Paths of models on CCDB"}; o2::framework::Configurable timestampCCDB{ - "timestampCCDB", -1, - "timestamp of the ONNX file for ML model used to query in CCDB"}; + "timestampCCDB", -1, + "timestamp of the ONNX file for ML model used to query in CCDB"}; o2::framework::Configurable loadModelsFromCCDB{ - "loadModelsFromCCDB", false, - "Flag to enable or disable the loading of models from CCDB"}; + "loadModelsFromCCDB", false, + "Flag to enable or disable the loading of models from CCDB"}; } fConfigML; struct : o2::framework::ConfigurableGroup { o2::framework::Configurable fConfigMiniTree{ - "useMiniTree.cfgMiniTree", false, - "Produce a single flat table with minimal information for analysis"}; + "useMiniTree.cfgMiniTree", false, + "Produce a single flat table with minimal information for analysis"}; o2::framework::Configurable fConfigMiniTreeMinMass{ - "useMiniTree.cfgMiniTreeMinMass", 2, "Min. mass cut for minitree"}; + "useMiniTree.cfgMiniTreeMinMass", 2, "Min. mass cut for minitree"}; o2::framework::Configurable fConfigMiniTreeMaxMass{ - "useMiniTree.cfgMiniTreeMaxMass", 5, "Max. mass cut for minitree"}; + "useMiniTree.cfgMiniTreeMaxMass", 5, "Max. mass cut for minitree"}; } useMiniTree; o2::framework::Service fCCDB{}; o2::ccdb::CcdbApi fCCDBApi; o2::framework::expressions::Filter - filterEventSelected = o2::aod::dqanalysisflags::isEventSelected > - static_cast(0); + filterEventSelected = o2::aod::dqanalysisflags::isEventSelected > + static_cast(0); - HistogramManager *fHistMan = nullptr; + HistogramManager* fHistMan = nullptr; MixingHandler fMixingHandler; o2::analysis::DQMlResponse fDQMlResponse; @@ -2149,14 +2183,14 @@ struct AnalysisSameEventPairing { std::map, uint32_t> fAmbiguousPairs; uint32_t fTrackFilterMask = - 0; // mask for the track cuts required in this task to be applied on the - // barrel cuts produced upstream + 0; // mask for the track cuts required in this task to be applied on the + // barrel cuts produced upstream uint32_t fMuonFilterMask = - 0; // mask for the muon cuts required in this task to be applied on the - // muon cuts produced upstream + 0; // mask for the muon cuts required in this task to be applied on the + // muon cuts produced upstream uint32_t fQvectorFilterMask = - 0; // mask for the track cuts applied in TPC Q-vector calculation, used to - // remove auto-correlation in flow analysis + 0; // mask for the track cuts applied in TPC Q-vector calculation, used to + // remove auto-correlation in flow analysis int fNCutsBarrel = 0; int fNCutsMuon = 0; int fNPairCuts = 0; @@ -2172,47 +2206,48 @@ struct AnalysisSameEventPairing { o2::framework::NoBinningPolicy hashBin; o2::framework::Preslice< - o2::soa::Join> - trackAssocsPerCollision = - o2::aod::reducedtrack_association::reducedeventId; + o2::soa::Join> + trackAssocsPerCollision = + o2::aod::reducedtrack_association::reducedeventId; o2::framework::Preslice< - o2::soa::Join> - muonAssocsPerCollision = - o2::aod::reducedtrack_association::reducedeventId; + o2::soa::Join> + muonAssocsPerCollision = + o2::aod::reducedtrack_association::reducedeventId; - void init(o2::framework::InitContext &context) { + void init(o2::framework::InitContext& context) + { fEnableBarrelHistos = - context.mOptions.get("processAllSkimmed") || - context.mOptions.get("processBarrelOnlySkimmed") || - context.mOptions.get("processBarrelOnlyWithCollSkimmed") || - context.mOptions.get("processBarrelOnlySkimmedNoCov") || - context.mOptions.get( - "processBarrelOnlySkimmedNoCovWithMultExtra") || - context.mOptions.get( - "processBarrelOnlyWithQvectorCentrSkimmedNoCov") || - context.mOptions.get("processBarrelOnlyWithQvectorCentrSkimmed"); + context.mOptions.get("processAllSkimmed") || + context.mOptions.get("processBarrelOnlySkimmed") || + context.mOptions.get("processBarrelOnlyWithCollSkimmed") || + context.mOptions.get("processBarrelOnlySkimmedNoCov") || + context.mOptions.get( + "processBarrelOnlySkimmedNoCovWithMultExtra") || + context.mOptions.get( + "processBarrelOnlyWithQvectorCentrSkimmedNoCov") || + context.mOptions.get("processBarrelOnlyWithQvectorCentrSkimmed"); fEnableBarrelMixingHistos = - context.mOptions.get("processMixingAllSkimmed") || - context.mOptions.get("processMixingBarrelSkimmed") || - context.mOptions.get("processMixingBarrelSkimmedFlow") || - context.mOptions.get( - "processMixingBarrelWithQvectorCentrSkimmedNoCov"); + context.mOptions.get("processMixingAllSkimmed") || + context.mOptions.get("processMixingBarrelSkimmed") || + context.mOptions.get("processMixingBarrelSkimmedFlow") || + context.mOptions.get( + "processMixingBarrelWithQvectorCentrSkimmedNoCov"); fEnableBarrelMixingHistos |= fConfigRunMixingAcrossTFs; fEnableMuonHistos = - context.mOptions.get("processAllSkimmed") || - context.mOptions.get("processMuonOnlySkimmed") || - context.mOptions.get("processMuonOnlySkimmedMultExtra") || - context.mOptions.get("processMuonOnlySkimmedFlow") || - context.mOptions.get("processMuonOnlyVertexingSkimmed"); + context.mOptions.get("processAllSkimmed") || + context.mOptions.get("processMuonOnlySkimmed") || + context.mOptions.get("processMuonOnlySkimmedMultExtra") || + context.mOptions.get("processMuonOnlySkimmedFlow") || + context.mOptions.get("processMuonOnlyVertexingSkimmed"); fEnableMuonMixingHistos = - context.mOptions.get("processMixingAllSkimmed") || - context.mOptions.get("processMixingMuonSkimmed") || - context.mOptions.get("processMixingMuonSkimmedFlow"); + context.mOptions.get("processMixingAllSkimmed") || + context.mOptions.get("processMixingMuonSkimmed") || + context.mOptions.get("processMixingMuonSkimmedFlow"); fEnableBarrelMuonHistos = - context.mOptions.get("processElectronMuonSkimmed"); + context.mOptions.get("processElectronMuonSkimmed"); fEnableBarrelMuonMixingHistos = - context.mOptions.get("processMixingElectronMuonSkimmed"); + context.mOptions.get("processMixingElectronMuonSkimmed"); if (context.mOptions.get("processDummy")) { if (fEnableBarrelHistos || fEnableBarrelMixingHistos || @@ -2249,7 +2284,7 @@ struct AnalysisSameEventPairing { std::unique_ptr objArray(cutNamesStr.Tokenize(",")); for (int icut = 0; icut < objArray->GetEntries(); ++icut) { fPairCuts.push_back( - *o2::aod::dqcuts::GetCompositeCut(objArray->At(icut)->GetName())); + *o2::aod::dqcuts::GetCompositeCut(objArray->At(icut)->GetName())); } } @@ -2258,12 +2293,12 @@ struct AnalysisSameEventPairing { // and make a mask for active cuts (barrel and muon selection tasks may // run more cuts, needed for other analyses) TString trackCutsStr = fConfigCuts.track.value; - TObjArray *objArrayTrackCuts = nullptr; + TObjArray* objArrayTrackCuts = nullptr; if (!trackCutsStr.IsNull()) { objArrayTrackCuts = trackCutsStr.Tokenize(","); } TString muonCutsStr = fConfigCuts.muon.value; - TObjArray *objArrayMuonCuts = nullptr; + TObjArray* objArrayMuonCuts = nullptr; if (!muonCutsStr.IsNull()) { objArrayMuonCuts = muonCutsStr.Tokenize(","); } @@ -2279,11 +2314,11 @@ struct AnalysisSameEventPairing { std::vector onnxFileNames; auto config = o2::aod::dqmlcuts::GetBdtScoreCutsAndConfigFromJSON( - fConfigML.fConfigBdtCutsJSON.value.c_str()); + fConfigML.fConfigBdtCutsJSON.value.c_str()); if (std::holds_alternative( - config)) { - auto &cfg = std::get(config); + config)) { + auto& cfg = std::get(config); binsMl = cfg.binsMl; nClassesMl = 1; cutsMl = cfg.cutsMl; @@ -2295,8 +2330,8 @@ struct AnalysisSameEventPairing { fDQMlResponse.setCentType(cfg.centType); LOG(info) << "Using BDT cuts for binary classification"; } else { - auto &cfg = - std::get(config); + auto& cfg = + std::get(config); binsMl = cfg.binsMl; nClassesMl = 3; cutsMl = cfg.cutsMl; @@ -2325,17 +2360,17 @@ struct AnalysisSameEventPairing { // get the barrel track selection cuts std::string tempCuts; o2::common::core::getTaskOptionValue( - context, "analysis-track-selection", "cfgTrackCuts", tempCuts, false); + context, "analysis-track-selection", "cfgTrackCuts", tempCuts, false); TString tempCutsStr = tempCuts; // check also the cuts added via JSON and add them to the string of cuts o2::common::core::getTaskOptionValue( - context, "analysis-track-selection", "cfgBarrelTrackCutsJSON", tempCuts, - false); + context, "analysis-track-selection", "cfgBarrelTrackCutsJSON", tempCuts, + false); TString addTrackCutsStr = tempCuts; if (addTrackCutsStr != "") { - std::vector addTrackCuts = - o2::aod::dqcuts::GetCutsFromJSON(addTrackCutsStr.Data()); - for (auto const &t : addTrackCuts) { + std::vector addTrackCuts = + o2::aod::dqcuts::GetCutsFromJSON(addTrackCutsStr.Data()); + for (auto const& t : addTrackCuts) { tempCutsStr += Form(",%s", t->GetName()); } } @@ -2368,45 +2403,45 @@ struct AnalysisSameEventPairing { names[5].Data()); if (fConfigTRPairs) { names.push_back( - Form("PairsBarrelTRPM_%s", objArray->At(icut)->GetName())); + Form("PairsBarrelTRPM_%s", objArray->At(icut)->GetName())); names.push_back(Form("PairsBarrelTRPM_ambiguousextra_%s", objArray->At(icut)->GetName())); names.push_back( - Form("PairsBarrelTR_MEPM_%s", objArray->At(icut)->GetName())); + Form("PairsBarrelTR_MEPM_%s", objArray->At(icut)->GetName())); histNames += Form("%s;%s;%s;", names[6].Data(), names[7].Data(), names[8].Data()); } if (fEnableBarrelMixingHistos) { names.push_back( - Form("PairsBarrelMEPM_%s", objArray->At(icut)->GetName())); + Form("PairsBarrelMEPM_%s", objArray->At(icut)->GetName())); names.push_back( - Form("PairsBarrelMEPP_%s", objArray->At(icut)->GetName())); + Form("PairsBarrelMEPP_%s", objArray->At(icut)->GetName())); names.push_back( - Form("PairsBarrelMEMM_%s", objArray->At(icut)->GetName())); + Form("PairsBarrelMEMM_%s", objArray->At(icut)->GetName())); histNames += - Form("%s;%s;%s;", names[(fConfigTRPairs ? 9 : 6)].Data(), - names[(fConfigTRPairs ? 10 : 7)].Data(), - names[(fConfigTRPairs ? 11 : 8)].Data()); + Form("%s;%s;%s;", names[(fConfigTRPairs ? 9 : 6)].Data(), + names[(fConfigTRPairs ? 10 : 7)].Data(), + names[(fConfigTRPairs ? 11 : 8)].Data()); } fTrackHistNames[icut] = names; if (!cutNamesStr.IsNull()) { // if pair cuts std::unique_ptr objArrayPair( - cutNamesStr.Tokenize(",")); + cutNamesStr.Tokenize(",")); fNPairCuts = objArrayPair->GetEntries(); for (int iPairCut = 0; iPairCut < fNPairCuts; ++iPairCut) { // loop over pair cuts names = { - Form("PairsBarrelSEPM_%s_%s", objArray->At(icut)->GetName(), - objArrayPair->At(iPairCut)->GetName()), - Form("PairsBarrelSEPP_%s_%s", objArray->At(icut)->GetName(), - objArrayPair->At(iPairCut)->GetName()), - Form("PairsBarrelSEMM_%s_%s", objArray->At(icut)->GetName(), - objArrayPair->At(iPairCut)->GetName())}; + Form("PairsBarrelSEPM_%s_%s", objArray->At(icut)->GetName(), + objArrayPair->At(iPairCut)->GetName()), + Form("PairsBarrelSEPP_%s_%s", objArray->At(icut)->GetName(), + objArrayPair->At(iPairCut)->GetName()), + Form("PairsBarrelSEMM_%s_%s", objArray->At(icut)->GetName(), + objArrayPair->At(iPairCut)->GetName())}; histNames += Form("%s;%s;%s;", names[0].Data(), names[1].Data(), names[2].Data()); fTrackHistNames[fNCutsBarrel + icut * fNPairCuts + iPairCut] = - names; + names; } // end loop (pair cuts) } // end if (pair cuts) } // end if enableBarrelHistos @@ -2416,16 +2451,16 @@ struct AnalysisSameEventPairing { // get the muon track selection cuts o2::common::core::getTaskOptionValue( - context, "analysis-muon-selection", "cfgMuonCuts", tempCuts, false); + context, "analysis-muon-selection", "cfgMuonCuts", tempCuts, false); tempCutsStr = tempCuts; // check also the cuts added via JSON and add them to the string of cuts o2::common::core::getTaskOptionValue( - context, "analysis-muon-selection", "cfgMuonCutsJSON", tempCuts, false); + context, "analysis-muon-selection", "cfgMuonCutsJSON", tempCuts, false); TString addMuonCutsStr = tempCuts; if (addMuonCutsStr != "") { - std::vector addMuonCuts = - o2::aod::dqcuts::GetCutsFromJSON(addMuonCutsStr.Data()); - for (auto const &t : addMuonCuts) { + std::vector addMuonCuts = + o2::aod::dqcuts::GetCutsFromJSON(addMuonCutsStr.Data()); + for (auto const& t : addMuonCuts) { tempCutsStr += Form(",%s", t->GetName()); } } @@ -2448,11 +2483,11 @@ struct AnalysisSameEventPairing { names[2].Data()); if (fEnableMuonMixingHistos) { names.push_back( - Form("PairsMuonMEPM_%s", objArray->At(icut)->GetName())); + Form("PairsMuonMEPM_%s", objArray->At(icut)->GetName())); names.push_back( - Form("PairsMuonMEPP_%s", objArray->At(icut)->GetName())); + Form("PairsMuonMEPP_%s", objArray->At(icut)->GetName())); names.push_back( - Form("PairsMuonMEMM_%s", objArray->At(icut)->GetName())); + Form("PairsMuonMEMM_%s", objArray->At(icut)->GetName())); histNames += Form("%s;%s;%s;", names[3].Data(), names[4].Data(), names[5].Data()); } @@ -2476,17 +2511,17 @@ struct AnalysisSameEventPairing { names.push_back(Form("PairsMuonSEMM_unambiguous_%s", objArray->At(icut)->GetName())); histNames += Form( - "%s;%s;%s;", names[(fEnableMuonMixingHistos ? 6 : 3)].Data(), - names[(fEnableMuonMixingHistos ? 7 : 4)].Data(), - names[(fEnableMuonMixingHistos ? 8 : 5)].Data()); + "%s;%s;%s;", names[(fEnableMuonMixingHistos ? 6 : 3)].Data(), + names[(fEnableMuonMixingHistos ? 7 : 4)].Data(), + names[(fEnableMuonMixingHistos ? 8 : 5)].Data()); histNames += Form( - "%s;%s;%s;", names[(fEnableMuonMixingHistos ? 9 : 6)].Data(), - names[(fEnableMuonMixingHistos ? 10 : 7)].Data(), - names[(fEnableMuonMixingHistos ? 11 : 8)].Data()); + "%s;%s;%s;", names[(fEnableMuonMixingHistos ? 9 : 6)].Data(), + names[(fEnableMuonMixingHistos ? 10 : 7)].Data(), + names[(fEnableMuonMixingHistos ? 11 : 8)].Data()); histNames += Form( - "%s;%s;%s;", names[(fEnableMuonMixingHistos ? 12 : 9)].Data(), - names[(fEnableMuonMixingHistos ? 13 : 10)].Data(), - names[(fEnableMuonMixingHistos ? 14 : 11)].Data()); + "%s;%s;%s;", names[(fEnableMuonMixingHistos ? 12 : 9)].Data(), + names[(fEnableMuonMixingHistos ? 13 : 10)].Data(), + names[(fEnableMuonMixingHistos ? 14 : 11)].Data()); if (fEnableMuonMixingHistos) { names.push_back(Form("PairsMuonMEPM_ambiguousInBunch_%s", objArray->At(icut)->GetName())); @@ -2518,21 +2553,21 @@ struct AnalysisSameEventPairing { if (!cutNamesStr.IsNull()) { // if pair cuts std::unique_ptr objArrayPair( - cutNamesStr.Tokenize(",")); + cutNamesStr.Tokenize(",")); fNPairCuts = objArrayPair->GetEntries(); for (int iPairCut = 0; iPairCut < fNPairCuts; ++iPairCut) { // loop over pair cuts names = { - Form("PairsMuonSEPM_%s_%s", objArray->At(icut)->GetName(), - objArrayPair->At(iPairCut)->GetName()), - Form("PairsMuonSEPP_%s_%s", objArray->At(icut)->GetName(), - objArrayPair->At(iPairCut)->GetName()), - Form("PairsMuonSEMM_%s_%s", objArray->At(icut)->GetName(), - objArrayPair->At(iPairCut)->GetName())}; + Form("PairsMuonSEPM_%s_%s", objArray->At(icut)->GetName(), + objArrayPair->At(iPairCut)->GetName()), + Form("PairsMuonSEPP_%s_%s", objArray->At(icut)->GetName(), + objArrayPair->At(iPairCut)->GetName()), + Form("PairsMuonSEMM_%s_%s", objArray->At(icut)->GetName(), + objArrayPair->At(iPairCut)->GetName())}; histNames += Form("%s;%s;%s;", names[0].Data(), names[1].Data(), names[2].Data()); fMuonHistNames[fNCutsMuon + icut * fNCutsMuon + iPairCut] = - names; + names; } // end loop (pair cuts) } // end if (pair cuts) } @@ -2579,7 +2614,7 @@ struct AnalysisSameEventPairing { VarManager::SetupFwdDCAFitterNoCorr(); } else { fLUT = o2::base::MatLayerCylSet::rectifyPtrFromFile( - fCCDB->get(fConfigCCDB.lutPath)); + fCCDB->get(fConfigCCDB.lutPath)); VarManager::SetupMatLUTFwdDCAFitter(fLUT); } @@ -2657,42 +2692,43 @@ struct AnalysisSameEventPairing { if (fConfigQA) { fHistMan = - new HistogramManager("analysisHistos", "aa", VarManager::kNVars); + new HistogramManager("analysisHistos", "aa", VarManager::kNVars); fHistMan->SetUseDefaultVariableNames(true); fHistMan->SetDefaultVarNames(dqtablereader_helpers::varNames(), dqtablereader_helpers::varUnits()); VarManager::SetCollisionSystem( - (TString)fConfigOptions.collisionSystem, - fConfigOptions.centerMassEnergy); // set collision system and center - // of mass energy + (TString)fConfigOptions.collisionSystem, + fConfigOptions.centerMassEnergy); // set collision system and center + // of mass energy DefineHistograms( - fHistMan, histNames.Data(), - fConfigAddSEPHistogram.value.data()); // define all histograms + fHistMan, histNames.Data(), + fConfigAddSEPHistogram.value.data()); // define all histograms if (fEnableBarrelHistos) { DefineHistograms( - fHistMan, "PairingSEQA", - "sameevent-pairing"); // histograms for QA of the pairing + fHistMan, "PairingSEQA", + "sameevent-pairing"); // histograms for QA of the pairing } if (fEnableBarrelMixingHistos) { DefineHistograms( - fHistMan, "PairingMEQA", - "mixedevent-pairing"); // histograms for QA of the pairing + fHistMan, "PairingMEQA", + "mixedevent-pairing"); // histograms for QA of the pairing } o2::aod::dqhistograms::AddHistogramsFromJSON( - fHistMan, - fConfigAddJSONHistograms.value.c_str()); // ad-hoc histograms via JSON + fHistMan, + fConfigAddJSONHistograms.value.c_str()); // ad-hoc histograms via JSON VarManager::SetUseVars( - fHistMan->GetUsedVars()); // provide the list of required variables so - // that VarManager knows what to fill + fHistMan->GetUsedVars()); // provide the list of required variables so + // that VarManager knows what to fill fOutputList.setObject(fHistMan->GetMainHistogramList()); } } void initParamsFromCCDB(uint64_t timestamp, int runNumber, - bool withTwoProngFitter = true) { + bool withTwoProngFitter = true) + { auto grpmag = fCCDB->getForTimeStamp( - fConfigCCDB.grpMagPath, timestamp); + fConfigCCDB.grpMagPath, timestamp); float magField = 0.0; if (grpmag != nullptr) { magField = grpmag->getNominalL3Field(); @@ -2705,37 +2741,37 @@ struct AnalysisSameEventPairing { VarManager::SetupTwoProngKFParticle(magField); } else { VarManager::SetupTwoProngDCAFitter( - magField, true, 200.0f, 4.0f, 1.0e-3f, 0.9f, - fConfigOptions.useAbsDCA - .value); // TODO: get these parameters from Configurables + magField, true, 200.0f, 4.0f, 1.0e-3f, 0.9f, + fConfigOptions.useAbsDCA + .value); // TODO: get these parameters from Configurables VarManager::SetupTwoProngFwdDCAFitter(magField, true, 200.0f, 1.0e-3f, 0.9f, fConfigOptions.useAbsDCA.value); } } else { VarManager::SetupTwoProngDCAFitter( - magField, true, 200.0f, 4.0f, 1.0e-3f, 0.9f, - fConfigOptions.useAbsDCA - .value); // needed because take in varmanager Bz from - // fgFitterTwoProngBarrel for PhiV calculations + magField, true, 200.0f, 4.0f, 1.0e-3f, 0.9f, + fConfigOptions.useAbsDCA + .value); // needed because take in varmanager Bz from + // fgFitterTwoProngBarrel for PhiV calculations } std::map metadataRCT, header; header = fCCDBApi.retrieveHeaders( - Form("RCT/Info/RunInformation/%i", runNumber), metadataRCT, -1); + Form("RCT/Info/RunInformation/%i", runNumber), metadataRCT, -1); uint64_t sor = std::atol(header["SOR"].c_str()); uint64_t eor = std::atol(header["EOR"].c_str()); VarManager::SetSORandEOR(sor, eor); if (fConfigOptions.useRemoteCollisionInfo) { auto grpo = fCCDB->getForTimeStamp( - fConfigCCDB.GrpLhcIfPath, timestamp); + fConfigCCDB.GrpLhcIfPath, timestamp); VarManager::SetCollisionSystem(grpo); } if (fConfigOptions.useEfficiencyWeighting) { auto effList = fCCDB->getForTimeStamp( - fConfigCCDB.efficiencyPath.value, timestamp); + fConfigCCDB.efficiencyPath.value, timestamp); VarManager::SetEfficiencyObject(fConfigOptions.efficiencyType.value, effList->FindObject("efficiency")); } @@ -2745,9 +2781,9 @@ struct AnalysisSameEventPairing { TString ccdbPathFlowSP = Form("%s/ScalarProduct", PathFlow.Data()); TString ccdbPathFlowEP = Form("%s/EventPlane", PathFlow.Data()); ResoFlowSP = - fCCDB->getForTimeStamp(ccdbPathFlowSP.Data(), timestamp); + fCCDB->getForTimeStamp(ccdbPathFlowSP.Data(), timestamp); ResoFlowEP = - fCCDB->getForTimeStamp(ccdbPathFlowEP.Data(), timestamp); + fCCDB->getForTimeStamp(ccdbPathFlowEP.Data(), timestamp); if (ResoFlowSP == nullptr || ResoFlowEP == nullptr) { LOGF(fatal, "Flow resolution histograms not available in CCDB at " @@ -2761,9 +2797,9 @@ struct AnalysisSameEventPairing { TString ccdbPathPhiPosi = Form("%s/hPtPhiPositive", PathPhi.Data()); TString ccdbPathPhiNega = Form("%s/hPtPhiNegative", PathPhi.Data()); auto phiPosi = - fCCDB->getForTimeStamp(ccdbPathPhiPosi.Data(), timestamp); + fCCDB->getForTimeStamp(ccdbPathPhiPosi.Data(), timestamp); auto phiNega = - fCCDB->getForTimeStamp(ccdbPathPhiNega.Data(), timestamp); + fCCDB->getForTimeStamp(ccdbPathPhiNega.Data(), timestamp); if (phiPosi == nullptr || phiNega == nullptr) { LOGF(fatal, "Phi distribution histograms not available in CCDB at " @@ -2780,10 +2816,11 @@ struct AnalysisSameEventPairing { template - void runSameEventPairing(TEvents const &events, - o2::framework::Preslice &preslice, - TTrackAssocs const &assocs, - TTracks const & /*tracks*/) { + void runSameEventPairing(TEvents const& events, + o2::framework::Preslice& preslice, + TTrackAssocs const& assocs, + TTracks const& /*tracks*/) + { if (events.size() > 0) { // Additional protection to avoid crashing of // events.begin().runNumber() if (fCurrentRun != events.begin().runNumber()) { @@ -2821,7 +2858,7 @@ struct AnalysisSameEventPairing { auto twoTrackFilter = static_cast(0); auto dileptonMcDecision = static_cast( - 0); // placeholder, copy of the dqEfficiency.cxx one + 0); // placeholder, copy of the dqEfficiency.cxx one int sign1 = 0; int sign2 = 0; // Reserve capacity for the output tables to avoid repeated reallocations @@ -2829,11 +2866,11 @@ struct AnalysisSameEventPairing { // only — pages are not faulted in until written. // estimate reserved size int64_t reserveSize = 0; - for (auto const &event : events) { + for (auto const& event : events) { if (event.isEventSelected_bit(0)) { auto groupedAssocs = assocs.sliceBy(preslice, event.globalIndex()); size_t nGood = 0; - for (auto const &t : groupedAssocs) { + for (auto const& t : groupedAssocs) { if constexpr (TPairType == VarManager::kDecayToEE) { if (t.isBarrelSelected_raw()) { nGood++; @@ -2870,17 +2907,17 @@ struct AnalysisSameEventPairing { fAmbiguousPairs.clear(); constexpr bool eventHasQvector = - ((TEventFillMap & VarManager::ObjTypes::ReducedEventQvector) > 0); + ((TEventFillMap & VarManager::ObjTypes::ReducedEventQvector) > 0); constexpr bool eventHasQvectorCentr = - ((TEventFillMap & VarManager::ObjTypes::CollisionQvect) > 0); + ((TEventFillMap & VarManager::ObjTypes::CollisionQvect) > 0); constexpr bool trackHasCov = - ((TTrackFillMap & VarManager::ObjTypes::TrackCov) > 0 || - (TTrackFillMap & VarManager::ObjTypes::ReducedTrackBarrelCov) > 0); + ((TTrackFillMap & VarManager::ObjTypes::TrackCov) > 0 || + (TTrackFillMap & VarManager::ObjTypes::ReducedTrackBarrelCov) > 0); // constexpr bool fillFlowReso = eventHasQvector || eventHasQvectorCentr; bool isSelectedBDT = false; fNPairPerEvent = 0; - for (auto const &event : events) { + for (auto const& event : events) { if (!event.isEventSelected_bit(0)) { continue; } @@ -2902,25 +2939,26 @@ struct AnalysisSameEventPairing { if (fConfigOptions.useFlowReso) { if (ResoFlowSP == nullptr || ResoFlowEP == nullptr) { - LOGF(fatal, "Flow resolution histograms are not available, cannot " - "fill flow variables!"); + LOGF(fatal, + "Flow resolution histograms are not available, cannot " + "fill flow variables!"); } VarManager::FillEventFlowResoFactor(ResoFlowSP, ResoFlowEP); } int mixingCategory = -1; if (fConfigRunMixingAcrossTFs) { mixingCategory = fMixingHandler.FindEventCategory( - dqtablereader_helpers::varValues()); + dqtablereader_helpers::varValues()); } bool isFirst = true; - for (auto const &[a1, a2] : + for (auto const& [a1, a2] : o2::soa::combinations(groupedAssocs, groupedAssocs)) { if constexpr (TPairType == VarManager::kDecayToEE) { twoTrackFilter = - a1.isBarrelSelected_raw() & a2.isBarrelSelected_raw() & - a1.isBarrelSelectedPrefilter_raw() & - a2.isBarrelSelectedPrefilter_raw() & fTrackFilterMask; + a1.isBarrelSelected_raw() & a2.isBarrelSelected_raw() & + a1.isBarrelSelectedPrefilter_raw() & + a2.isBarrelSelectedPrefilter_raw() & fTrackFilterMask; if (!twoTrackFilter) { // the tracks must have at least one filter bit // in common to continue @@ -3000,38 +3038,38 @@ struct AnalysisSameEventPairing { } if (fConfigOptions.polarTables.value) { dileptonPolarList( - VarManager::fgValues[VarManager::kMass], - VarManager::fgValues[VarManager::kPt], - VarManager::fgValues[VarManager::kEta], t1.sign() + t2.sign(), - twoTrackFilter, VarManager::fgValues[VarManager::kCosThetaHE], - VarManager::fgValues[VarManager::kPhiHE], - VarManager::fgValues[VarManager::kPhiTildeHE], - VarManager::fgValues[VarManager::kCosThetaCS], - VarManager::fgValues[VarManager::kPhiCS], - VarManager::fgValues[VarManager::kPhiTildeCS], - VarManager::fgValues[VarManager::kCosThetaPP], - VarManager::fgValues[VarManager::kPhiPP], - VarManager::fgValues[VarManager::kPhiTildePP], - VarManager::fgValues[VarManager::kCosThetaRM], - VarManager::fgValues[VarManager::kCosThetaStarTPC], - VarManager::fgValues[VarManager::kCosThetaStarFT0A], - VarManager::fgValues[VarManager::kCosThetaStarFT0C], - VarManager::fgValues[VarManager::kCosThetaStarRandom]); + VarManager::fgValues[VarManager::kMass], + VarManager::fgValues[VarManager::kPt], + VarManager::fgValues[VarManager::kEta], t1.sign() + t2.sign(), + twoTrackFilter, VarManager::fgValues[VarManager::kCosThetaHE], + VarManager::fgValues[VarManager::kPhiHE], + VarManager::fgValues[VarManager::kPhiTildeHE], + VarManager::fgValues[VarManager::kCosThetaCS], + VarManager::fgValues[VarManager::kPhiCS], + VarManager::fgValues[VarManager::kPhiTildeCS], + VarManager::fgValues[VarManager::kCosThetaPP], + VarManager::fgValues[VarManager::kPhiPP], + VarManager::fgValues[VarManager::kPhiTildePP], + VarManager::fgValues[VarManager::kCosThetaRM], + VarManager::fgValues[VarManager::kCosThetaStarTPC], + VarManager::fgValues[VarManager::kCosThetaStarFT0A], + VarManager::fgValues[VarManager::kCosThetaStarFT0C], + VarManager::fgValues[VarManager::kCosThetaStarRandom]); dileptonEventInfoList( - VarManager::fgValues[VarManager::kCentFT0C], - VarManager::fgValues[VarManager::kVtxZ], - VarManager::fgValues[VarManager::kVtxNcontrib], - VarManager::fgValues[VarManager::kRandomPsi2], - VarManager::fgValues[VarManager::kPsi2A], - VarManager::fgValues[VarManager::kPsi2B], - VarManager::fgValues[VarManager::kPsi2C]); + VarManager::fgValues[VarManager::kCentFT0C], + VarManager::fgValues[VarManager::kVtxZ], + VarManager::fgValues[VarManager::kVtxNcontrib], + VarManager::fgValues[VarManager::kRandomPsi2], + VarManager::fgValues[VarManager::kPsi2A], + VarManager::fgValues[VarManager::kPsi2B], + VarManager::fgValues[VarManager::kPsi2C]); } if constexpr (trackHasCov && TTwoProngFitter) { dielectronsExtraList( - t1.globalIndex(), t2.globalIndex(), - VarManager::fgValues[VarManager::kVertexingTauzProjected], - VarManager::fgValues[VarManager::kVertexingLzProjected], - VarManager::fgValues[VarManager::kVertexingLxyProjected]); + t1.globalIndex(), t2.globalIndex(), + VarManager::fgValues[VarManager::kVertexingTauzProjected], + VarManager::fgValues[VarManager::kVertexingLzProjected], + VarManager::fgValues[VarManager::kVertexingLxyProjected]); } if constexpr ((TTrackFillMap & VarManager::ObjTypes::ReducedTrackBarrelPID) > 0) { @@ -3039,8 +3077,8 @@ struct AnalysisSameEventPairing { fOutputMlPsi2ee.clear(); if (fConfigML.applyBDT) { std::vector dqInputFeatures = - fDQMlResponse.getInputFeatures( - t1, t2, dqtablereader_helpers::varValues()); + fDQMlResponse.getInputFeatures( + t1, t2, dqtablereader_helpers::varValues()); if (dqInputFeatures.empty()) { LOG(fatal) << "Input features for ML selection are empty! " @@ -3049,22 +3087,22 @@ struct AnalysisSameEventPairing { } int modelIndex = -1; - const auto &binsCent = fDQMlResponse.getBinsCent(); - const auto &binsPt = fDQMlResponse.getBinsPt(); - const std::string ¢Type = fDQMlResponse.getCentType(); + const auto& binsCent = fDQMlResponse.getBinsCent(); + const auto& binsPt = fDQMlResponse.getBinsPt(); + const std::string& centType = fDQMlResponse.getCentType(); if ("kCentFT0C" == centType) { modelIndex = o2::aod::dqmlcuts::getMlBinIndex( - VarManager::fgValues[VarManager::kCentFT0C], - VarManager::fgValues[VarManager::kPt], binsCent, binsPt); + VarManager::fgValues[VarManager::kCentFT0C], + VarManager::fgValues[VarManager::kPt], binsCent, binsPt); } else if ("kCentFT0A" == centType) { modelIndex = o2::aod::dqmlcuts::getMlBinIndex( - VarManager::fgValues[VarManager::kCentFT0A], - VarManager::fgValues[VarManager::kPt], binsCent, binsPt); + VarManager::fgValues[VarManager::kCentFT0A], + VarManager::fgValues[VarManager::kPt], binsCent, binsPt); } else if ("kCentFT0M" == centType) { modelIndex = o2::aod::dqmlcuts::getMlBinIndex( - VarManager::fgValues[VarManager::kCentFT0M], - VarManager::fgValues[VarManager::kPt], binsCent, binsPt); + VarManager::fgValues[VarManager::kCentFT0M], + VarManager::fgValues[VarManager::kPt], binsCent, binsPt); } else { LOG(fatal) << "Unknown centrality estimation type: " << centType; @@ -3073,8 +3111,8 @@ struct AnalysisSameEventPairing { if (modelIndex < 0) { LOG(debug) - << "Ml index is negative! This means that the " - "centrality/pt is not in the range of the model bins."; + << "Ml index is negative! This means that the " + "centrality/pt is not in the range of the model bins."; continue; } @@ -3083,7 +3121,7 @@ struct AnalysisSameEventPairing { << ", centrality (kCentFT0C): " << VarManager::fgValues[VarManager::kCentFT0C]; isSelectedBDT = fDQMlResponse.isSelectedMl( - dqInputFeatures, modelIndex, fOutputMlPsi2ee); + dqInputFeatures, modelIndex, fOutputMlPsi2ee); VarManager::FillBdtScore(fOutputMlPsi2ee); } @@ -3093,118 +3131,118 @@ struct AnalysisSameEventPairing { if (fConfigOptions.flatTables.value) { dielectronAllList( - VarManager::fgValues[VarManager::kMass], - VarManager::fgValues[VarManager::kPt], - VarManager::fgValues[VarManager::kEta], - VarManager::fgValues[VarManager::kPhi], t1.sign() + t2.sign(), - twoTrackFilter, dileptonMcDecision, t1.pt(), t1.eta(), - t1.phi(), t1.itsClusterMap(), t1.itsChi2NCl(), - t1.tpcNClsCrossedRows(), t1.tpcNClsFound(), t1.tpcChi2NCl(), - t1.dcaXY(), t1.dcaZ(), t1.tpcSignal(), t1.tpcNSigmaEl(), - t1.tpcNSigmaPi(), t1.tpcNSigmaPr(), t1.beta(), - t1.tofNSigmaEl(), t1.tofNSigmaPi(), t1.tofNSigmaPr(), t2.pt(), - t2.eta(), t2.phi(), t2.itsClusterMap(), t2.itsChi2NCl(), - t2.tpcNClsCrossedRows(), t2.tpcNClsFound(), t2.tpcChi2NCl(), - t2.dcaXY(), t2.dcaZ(), t2.tpcSignal(), t2.tpcNSigmaEl(), - t2.tpcNSigmaPi(), t2.tpcNSigmaPr(), t2.beta(), - t2.tofNSigmaEl(), t2.tofNSigmaPi(), t2.tofNSigmaPr(), - VarManager::fgValues[VarManager::kKFTrack0DCAxyz], - VarManager::fgValues[VarManager::kKFTrack1DCAxyz], - VarManager::fgValues[VarManager::kKFDCAxyzBetweenProngs], - VarManager::fgValues[VarManager::kKFTrack0DCAxy], - VarManager::fgValues[VarManager::kKFTrack1DCAxy], - VarManager::fgValues[VarManager::kKFDCAxyBetweenProngs], - VarManager::fgValues[VarManager::kKFTrack0DeviationFromPV], - VarManager::fgValues[VarManager::kKFTrack1DeviationFromPV], - VarManager::fgValues[VarManager::kKFTrack0DeviationxyFromPV], - VarManager::fgValues[VarManager::kKFTrack1DeviationxyFromPV], - VarManager::fgValues[VarManager::kKFMass], - VarManager::fgValues[VarManager::kKFChi2OverNDFGeo], - VarManager::fgValues[VarManager::kVertexingLxyz], - VarManager::fgValues[VarManager::kVertexingLxyzOverErr], - VarManager::fgValues[VarManager::kVertexingLxy], - VarManager::fgValues[VarManager::kVertexingLxyOverErr], - VarManager::fgValues[VarManager::kVertexingTauxy], - VarManager::fgValues[VarManager::kVertexingTauxyErr], - VarManager::fgValues[VarManager::kKFCosPA], - VarManager::fgValues[VarManager::kKFJpsiDCAxyz], - VarManager::fgValues[VarManager::kKFJpsiDCAxy], - VarManager::fgValues[VarManager::kKFPairDeviationFromPV], - VarManager::fgValues[VarManager::kKFPairDeviationxyFromPV], - VarManager::fgValues[VarManager::kKFMassGeoTop], - VarManager::fgValues[VarManager::kKFChi2OverNDFGeoTop], - VarManager::fgValues[VarManager::kVertexingTauzProjected], - VarManager::fgValues[VarManager::kVertexingTauxyProjected], - VarManager::fgValues[VarManager::kVertexingLzProjected], - VarManager::fgValues[VarManager::kVertexingLxyProjected]); + VarManager::fgValues[VarManager::kMass], + VarManager::fgValues[VarManager::kPt], + VarManager::fgValues[VarManager::kEta], + VarManager::fgValues[VarManager::kPhi], t1.sign() + t2.sign(), + twoTrackFilter, dileptonMcDecision, t1.pt(), t1.eta(), + t1.phi(), t1.itsClusterMap(), t1.itsChi2NCl(), + t1.tpcNClsCrossedRows(), t1.tpcNClsFound(), t1.tpcChi2NCl(), + t1.dcaXY(), t1.dcaZ(), t1.tpcSignal(), t1.tpcNSigmaEl(), + t1.tpcNSigmaPi(), t1.tpcNSigmaPr(), t1.beta(), + t1.tofNSigmaEl(), t1.tofNSigmaPi(), t1.tofNSigmaPr(), t2.pt(), + t2.eta(), t2.phi(), t2.itsClusterMap(), t2.itsChi2NCl(), + t2.tpcNClsCrossedRows(), t2.tpcNClsFound(), t2.tpcChi2NCl(), + t2.dcaXY(), t2.dcaZ(), t2.tpcSignal(), t2.tpcNSigmaEl(), + t2.tpcNSigmaPi(), t2.tpcNSigmaPr(), t2.beta(), + t2.tofNSigmaEl(), t2.tofNSigmaPi(), t2.tofNSigmaPr(), + VarManager::fgValues[VarManager::kKFTrack0DCAxyz], + VarManager::fgValues[VarManager::kKFTrack1DCAxyz], + VarManager::fgValues[VarManager::kKFDCAxyzBetweenProngs], + VarManager::fgValues[VarManager::kKFTrack0DCAxy], + VarManager::fgValues[VarManager::kKFTrack1DCAxy], + VarManager::fgValues[VarManager::kKFDCAxyBetweenProngs], + VarManager::fgValues[VarManager::kKFTrack0DeviationFromPV], + VarManager::fgValues[VarManager::kKFTrack1DeviationFromPV], + VarManager::fgValues[VarManager::kKFTrack0DeviationxyFromPV], + VarManager::fgValues[VarManager::kKFTrack1DeviationxyFromPV], + VarManager::fgValues[VarManager::kKFMass], + VarManager::fgValues[VarManager::kKFChi2OverNDFGeo], + VarManager::fgValues[VarManager::kVertexingLxyz], + VarManager::fgValues[VarManager::kVertexingLxyzOverErr], + VarManager::fgValues[VarManager::kVertexingLxy], + VarManager::fgValues[VarManager::kVertexingLxyOverErr], + VarManager::fgValues[VarManager::kVertexingTauxy], + VarManager::fgValues[VarManager::kVertexingTauxyErr], + VarManager::fgValues[VarManager::kKFCosPA], + VarManager::fgValues[VarManager::kKFJpsiDCAxyz], + VarManager::fgValues[VarManager::kKFJpsiDCAxy], + VarManager::fgValues[VarManager::kKFPairDeviationFromPV], + VarManager::fgValues[VarManager::kKFPairDeviationxyFromPV], + VarManager::fgValues[VarManager::kKFMassGeoTop], + VarManager::fgValues[VarManager::kKFChi2OverNDFGeoTop], + VarManager::fgValues[VarManager::kVertexingTauzProjected], + VarManager::fgValues[VarManager::kVertexingTauxyProjected], + VarManager::fgValues[VarManager::kVertexingLzProjected], + VarManager::fgValues[VarManager::kVertexingLxyProjected]); dielectronMlList( - VarManager::fgValues[VarManager::kCentFT0C], - (fConfigML.applyBDT && !fOutputMlPsi2ee.empty()) - ? VarManager::fgValues[VarManager::kBdtBackground] - : -999.f, - (fConfigML.applyBDT && fOutputMlPsi2ee.size() > 1) - ? VarManager::fgValues[VarManager::kBdtPrompt] - : -999.f, - (fConfigML.applyBDT && fOutputMlPsi2ee.size() > 2) - ? VarManager::fgValues[VarManager::kBdtNonprompt] - : -999.f); + VarManager::fgValues[VarManager::kCentFT0C], + (fConfigML.applyBDT && !fOutputMlPsi2ee.empty()) + ? VarManager::fgValues[VarManager::kBdtBackground] + : -999.f, + (fConfigML.applyBDT && fOutputMlPsi2ee.size() > 1) + ? VarManager::fgValues[VarManager::kBdtPrompt] + : -999.f, + (fConfigML.applyBDT && fOutputMlPsi2ee.size() > 2) + ? VarManager::fgValues[VarManager::kBdtNonprompt] + : -999.f); } constexpr bool eventHasVtxCovForTable = - ((TEventFillMap & VarManager::ObjTypes::ReducedEventVtxCov) > - 0); + ((TEventFillMap & VarManager::ObjTypes::ReducedEventVtxCov) > + 0); if constexpr (trackHasCov && TTwoProngFitter && eventHasVtxCovForTable) { const bool ambiInBunch = - (twoTrackFilter & (static_cast(1) << 28)) || - (twoTrackFilter & (static_cast(1) << 29)); + (twoTrackFilter & (static_cast(1) << 28)) || + (twoTrackFilter & (static_cast(1) << 29)); const bool ambiOutOfBunch = - (twoTrackFilter & (static_cast(1) << 30)) || - (twoTrackFilter & (static_cast(1) << 31)); + (twoTrackFilter & (static_cast(1) << 30)) || + (twoTrackFilter & (static_cast(1) << 31)); // kVertexingProcCode == 0: the fit failed; FillPairVertexing then // returns early without updating the projected / pseudo-proper / // pointing-angle variables, so they would be stale -> skip the // pair if (t1.sign() * t2.sign() < 0) { PromptNonPromptSepTable( - twoTrackFilter, dileptonMcDecision, - VarManager::fgValues[VarManager::kMass], - VarManager::fgValues[VarManager::kPt], - VarManager::fgValues[VarManager::kEta], - VarManager::fgValues[VarManager::kRap], - VarManager::fgValues[VarManager::kPhi], - VarManager::fgValues[VarManager::kVertexingTauxyProjected], - VarManager::fgValues - [VarManager::kVertexingTauxyProjectedPoleJPsiMass], - VarManager::fgValues[VarManager::kVertexingTauzProjected], - VarManager::fgValues - [VarManager:: - kVertexingTauxyProjectedPoleJPsiMassRecalculatePV], - VarManager::fgValues[VarManager::kVertexingTauxyErr], - VarManager::fgValues[VarManager::kVertexingTauzErr], - VarManager::fgValues[VarManager::kVertexingLxyProjected], - VarManager::fgValues[VarManager::kVertexingLxyOverErr], - VarManager::fgValues[VarManager::kVertexingLxyz], - VarManager::fgValues[VarManager::kVertexingLxyzOverErr], - VarManager::fgValues[VarManager::kVertexingChi2PCA], - VarManager::fgValues[VarManager::kCosPointingAngle], - VarManager::fgValues[VarManager::kVtxX], - VarManager::fgValues[VarManager::kVtxY], - VarManager::fgValues[VarManager::kVtxZ], t1.pt(), t1.eta(), - VarManager::fgValues[VarManager::kDCAxy1], - VarManager::fgValues[VarManager::kDCAz1], - VarManager::fgValues[VarManager::kDCAxyOverSig1], - VarManager::fgValues[VarManager::kDCAzOverSig1], - VarManager::fgValues[VarManager::kITSclusterMap1], - t1.itsChi2NCl(), t2.pt(), t2.eta(), - VarManager::fgValues[VarManager::kDCAxy2], - VarManager::fgValues[VarManager::kDCAz2], - VarManager::fgValues[VarManager::kDCAxyOverSig2], - VarManager::fgValues[VarManager::kDCAzOverSig2], - VarManager::fgValues[VarManager::kITSclusterMap2], - t2.itsChi2NCl(), ambiInBunch, ambiOutOfBunch, true, - VarManager::fgValues[VarManager::kMultFT0C], - VarManager::fgValues[VarManager::kCentFT0C], - VarManager::fgValues[VarManager::kVtxNcontribReal]); + twoTrackFilter, dileptonMcDecision, + VarManager::fgValues[VarManager::kMass], + VarManager::fgValues[VarManager::kPt], + VarManager::fgValues[VarManager::kEta], + VarManager::fgValues[VarManager::kRap], + VarManager::fgValues[VarManager::kPhi], + VarManager::fgValues[VarManager::kVertexingTauxyProjected], + VarManager::fgValues + [VarManager::kVertexingTauxyProjectedPoleJPsiMass], + VarManager::fgValues[VarManager::kVertexingTauzProjected], + VarManager::fgValues + [VarManager:: + kVertexingTauxyProjectedPoleJPsiMassRecalculatePV], + VarManager::fgValues[VarManager::kVertexingTauxyErr], + VarManager::fgValues[VarManager::kVertexingTauzErr], + VarManager::fgValues[VarManager::kVertexingLxyProjected], + VarManager::fgValues[VarManager::kVertexingLxyOverErr], + VarManager::fgValues[VarManager::kVertexingLxyz], + VarManager::fgValues[VarManager::kVertexingLxyzOverErr], + VarManager::fgValues[VarManager::kVertexingChi2PCA], + VarManager::fgValues[VarManager::kCosPointingAngle], + VarManager::fgValues[VarManager::kVtxX], + VarManager::fgValues[VarManager::kVtxY], + VarManager::fgValues[VarManager::kVtxZ], t1.pt(), t1.eta(), + VarManager::fgValues[VarManager::kDCAxy1], + VarManager::fgValues[VarManager::kDCAz1], + VarManager::fgValues[VarManager::kDCAxyOverSig1], + VarManager::fgValues[VarManager::kDCAzOverSig1], + VarManager::fgValues[VarManager::kITSclusterMap1], + t1.itsChi2NCl(), t2.pt(), t2.eta(), + VarManager::fgValues[VarManager::kDCAxy2], + VarManager::fgValues[VarManager::kDCAz2], + VarManager::fgValues[VarManager::kDCAxyOverSig2], + VarManager::fgValues[VarManager::kDCAzOverSig2], + VarManager::fgValues[VarManager::kITSclusterMap2], + t2.itsChi2NCl(), ambiInBunch, ambiOutOfBunch, true, + VarManager::fgValues[VarManager::kMultFT0C], + VarManager::fgValues[VarManager::kCentFT0C], + VarManager::fgValues[VarManager::kVtxNcontribReal]); } } } @@ -3281,80 +3319,80 @@ struct AnalysisSameEventPairing { VarManager::fgValues[VarManager::kVertexingLxy]); if (fConfigOptions.flatTables.value) { dimuonAllList( - event.posX(), event.posY(), event.posZ(), event.numContrib(), - event.selection_raw(), evSel, -999., -999., -999., - VarManager::fgValues[VarManager::kMass], false, + event.posX(), event.posY(), event.posZ(), event.numContrib(), + event.selection_raw(), evSel, -999., -999., -999., + VarManager::fgValues[VarManager::kMass], false, + VarManager::fgValues[VarManager::kPt], + VarManager::fgValues[VarManager::kEta], + VarManager::fgValues[VarManager::kPhi], t1.sign() + t2.sign(), + VarManager::fgValues[VarManager::kVertexingChi2PCA], + VarManager::fgValues[VarManager::kVertexingTauz], + VarManager::fgValues[VarManager::kVertexingTauzErr], + VarManager::fgValues[VarManager::kVertexingTauxy], + VarManager::fgValues[VarManager::kVertexingTauxyErr], + VarManager::fgValues[VarManager::kCosPointingAngle], + VarManager::fgValues[VarManager::kPt1], + VarManager::fgValues[VarManager::kEta1], + VarManager::fgValues[VarManager::kPhi1], t1.sign(), + VarManager::fgValues[VarManager::kPt2], + VarManager::fgValues[VarManager::kEta2], + VarManager::fgValues[VarManager::kPhi2], t2.sign(), + t1.fwdDcaX(), t1.fwdDcaY(), t2.fwdDcaX(), t2.fwdDcaY(), 0., 0., + t1.chi2MatchMCHMID(), t2.chi2MatchMCHMID(), + t1.chi2MatchMCHMFT(), t2.chi2MatchMCHMFT(), t1.chi2(), + t2.chi2(), -999., -999., -999., -999., -999., -999., -999., + -999., -999., -999., -999., -999., -999., -999., -999., -999., + (twoTrackFilter & (static_cast(1) << 28)) || + (twoTrackFilter & (static_cast(1) << 29)), + (twoTrackFilter & (static_cast(1) << 30)) || + (twoTrackFilter & (static_cast(1) << 31)), + true, true, VarManager::fgValues[VarManager::kU2Q2], + VarManager::fgValues[VarManager::kU3Q3], + VarManager::fgValues[VarManager::kR2EP_AB], + VarManager::fgValues[VarManager::kR2SP_AB], + VarManager::fgValues[VarManager::kCentFT0C], + VarManager::fgValues[VarManager::kCos2DeltaPhi], + VarManager::fgValues[VarManager::kCos3DeltaPhi], + VarManager::fgValues[VarManager::kCORR2POI], + VarManager::fgValues[VarManager::kCORR4POI], + VarManager::fgValues[VarManager::kM01POI], + VarManager::fgValues[VarManager::kM0111POI], + VarManager::fgValues[VarManager::kMultDimuons], + VarManager::fgValues[VarManager::kVertexingPz], + VarManager::fgValues[VarManager::kVertexingSV]); + } + + if constexpr ((TTrackFillMap & + VarManager::ObjTypes::ReducedMuonCollInfo) > 0) { + if constexpr (eventHasQvector || eventHasQvectorCentr) { + dileptonFlowList( + event.collisionId(), VarManager::fgValues[VarManager::kMass], + VarManager::fgValues[VarManager::kCentFT0C], VarManager::fgValues[VarManager::kPt], VarManager::fgValues[VarManager::kEta], VarManager::fgValues[VarManager::kPhi], t1.sign() + t2.sign(), - VarManager::fgValues[VarManager::kVertexingChi2PCA], - VarManager::fgValues[VarManager::kVertexingTauz], - VarManager::fgValues[VarManager::kVertexingTauzErr], - VarManager::fgValues[VarManager::kVertexingTauxy], - VarManager::fgValues[VarManager::kVertexingTauxyErr], - VarManager::fgValues[VarManager::kCosPointingAngle], - VarManager::fgValues[VarManager::kPt1], - VarManager::fgValues[VarManager::kEta1], - VarManager::fgValues[VarManager::kPhi1], t1.sign(), - VarManager::fgValues[VarManager::kPt2], - VarManager::fgValues[VarManager::kEta2], - VarManager::fgValues[VarManager::kPhi2], t2.sign(), - t1.fwdDcaX(), t1.fwdDcaY(), t2.fwdDcaX(), t2.fwdDcaY(), 0., 0., - t1.chi2MatchMCHMID(), t2.chi2MatchMCHMID(), - t1.chi2MatchMCHMFT(), t2.chi2MatchMCHMFT(), t1.chi2(), - t2.chi2(), -999., -999., -999., -999., -999., -999., -999., - -999., -999., -999., -999., -999., -999., -999., -999., -999., - (twoTrackFilter & (static_cast(1) << 28)) || - (twoTrackFilter & (static_cast(1) << 29)), - (twoTrackFilter & (static_cast(1) << 30)) || - (twoTrackFilter & (static_cast(1) << 31)), - true, true, VarManager::fgValues[VarManager::kU2Q2], - VarManager::fgValues[VarManager::kU3Q3], - VarManager::fgValues[VarManager::kR2EP_AB], + isFirst, VarManager::fgValues[VarManager::kU2Q2], VarManager::fgValues[VarManager::kR2SP_AB], - VarManager::fgValues[VarManager::kCentFT0C], + VarManager::fgValues[VarManager::kR2SP_AC], + VarManager::fgValues[VarManager::kR2SP_BC], + VarManager::fgValues[VarManager::kU3Q3], + VarManager::fgValues[VarManager::kR3SP], VarManager::fgValues[VarManager::kCos2DeltaPhi], + VarManager::fgValues[VarManager::kR2EP_AB], + VarManager::fgValues[VarManager::kR2EP_AC], + VarManager::fgValues[VarManager::kR2EP_BC], VarManager::fgValues[VarManager::kCos3DeltaPhi], + VarManager::fgValues[VarManager::kR3EP], VarManager::fgValues[VarManager::kCORR2POI], VarManager::fgValues[VarManager::kCORR4POI], VarManager::fgValues[VarManager::kM01POI], VarManager::fgValues[VarManager::kM0111POI], + VarManager::fgValues[VarManager::kCORR2REF], + VarManager::fgValues[VarManager::kCORR4REF], + VarManager::fgValues[VarManager::kM11REF], + VarManager::fgValues[VarManager::kM1111REF], VarManager::fgValues[VarManager::kMultDimuons], - VarManager::fgValues[VarManager::kVertexingPz], - VarManager::fgValues[VarManager::kVertexingSV]); - } - - if constexpr ((TTrackFillMap & - VarManager::ObjTypes::ReducedMuonCollInfo) > 0) { - if constexpr (eventHasQvector || eventHasQvectorCentr) { - dileptonFlowList( - event.collisionId(), VarManager::fgValues[VarManager::kMass], - VarManager::fgValues[VarManager::kCentFT0C], - VarManager::fgValues[VarManager::kPt], - VarManager::fgValues[VarManager::kEta], - VarManager::fgValues[VarManager::kPhi], t1.sign() + t2.sign(), - isFirst, VarManager::fgValues[VarManager::kU2Q2], - VarManager::fgValues[VarManager::kR2SP_AB], - VarManager::fgValues[VarManager::kR2SP_AC], - VarManager::fgValues[VarManager::kR2SP_BC], - VarManager::fgValues[VarManager::kU3Q3], - VarManager::fgValues[VarManager::kR3SP], - VarManager::fgValues[VarManager::kCos2DeltaPhi], - VarManager::fgValues[VarManager::kR2EP_AB], - VarManager::fgValues[VarManager::kR2EP_AC], - VarManager::fgValues[VarManager::kR2EP_BC], - VarManager::fgValues[VarManager::kCos3DeltaPhi], - VarManager::fgValues[VarManager::kR3EP], - VarManager::fgValues[VarManager::kCORR2POI], - VarManager::fgValues[VarManager::kCORR4POI], - VarManager::fgValues[VarManager::kM01POI], - VarManager::fgValues[VarManager::kM0111POI], - VarManager::fgValues[VarManager::kCORR2REF], - VarManager::fgValues[VarManager::kCORR4REF], - VarManager::fgValues[VarManager::kM11REF], - VarManager::fgValues[VarManager::kM1111REF], - VarManager::fgValues[VarManager::kMultDimuons], - VarManager::fgValues[VarManager::kMultA]); + VarManager::fgValues[VarManager::kMultA]); } } if (t1.sign() != t2.sign()) { @@ -3384,11 +3422,11 @@ struct AnalysisSameEventPairing { for (int icut = 0; icut < ncuts; icut++) { if (twoTrackFilter & (static_cast(1) << icut)) { isAmbiInBunch = - (twoTrackFilter & (static_cast(1) << 28)) || - (twoTrackFilter & (static_cast(1) << 29)); + (twoTrackFilter & (static_cast(1) << 28)) || + (twoTrackFilter & (static_cast(1) << 29)); isAmbiOutOfBunch = - (twoTrackFilter & (static_cast(1) << 30)) || - (twoTrackFilter & (static_cast(1) << 31)); + (twoTrackFilter & (static_cast(1) << 30)) || + (twoTrackFilter & (static_cast(1) << 31)); isUnambiguous = !(isAmbiInBunch || isAmbiOutOfBunch); isLeg1Ambi = (twoTrackFilter & (static_cast(1) << 28) || (twoTrackFilter & (static_cast(1) << 30))); @@ -3430,40 +3468,40 @@ struct AnalysisSameEventPairing { // first if (t1.sign() > 0) { dileptonMiniTree( - VarManager::fgValues[VarManager::kMass], - VarManager::fgValues[VarManager::kPt], - VarManager::fgValues[VarManager::kRap], - VarManager::fgValues[VarManager::kCentFT0C], - VarManager::fgValues[VarManager::kCos2DeltaPhi], - t1.pt(), t1.eta(), t1.phi(), t2.pt(), t2.eta(), - t2.phi()); + VarManager::fgValues[VarManager::kMass], + VarManager::fgValues[VarManager::kPt], + VarManager::fgValues[VarManager::kRap], + VarManager::fgValues[VarManager::kCentFT0C], + VarManager::fgValues[VarManager::kCos2DeltaPhi], + t1.pt(), t1.eta(), t1.phi(), t2.pt(), t2.eta(), + t2.phi()); } else { dileptonMiniTree( - VarManager::fgValues[VarManager::kMass], - VarManager::fgValues[VarManager::kPt], - VarManager::fgValues[VarManager::kRap], - VarManager::fgValues[VarManager::kCentFT0C], - VarManager::fgValues[VarManager::kCos2DeltaPhi], - t2.pt(), t2.eta(), t2.phi(), t1.pt(), t1.eta(), - t1.phi()); + VarManager::fgValues[VarManager::kMass], + VarManager::fgValues[VarManager::kPt], + VarManager::fgValues[VarManager::kRap], + VarManager::fgValues[VarManager::kCentFT0C], + VarManager::fgValues[VarManager::kCos2DeltaPhi], + t2.pt(), t2.eta(), t2.phi(), t1.pt(), t1.eta(), + t1.phi()); } } } if (fConfigQA && fConfigAmbiguousMuonHistograms) { if (isAmbiInBunch) { fHistMan->FillHistClass( - histNames[icut][3 + histIdxOffset].Data(), - dqtablereader_helpers::varValues()); + histNames[icut][3 + histIdxOffset].Data(), + dqtablereader_helpers::varValues()); } if (isAmbiOutOfBunch) { fHistMan->FillHistClass( - histNames[icut][3 + histIdxOffset + 3].Data(), - dqtablereader_helpers::varValues()); + histNames[icut][3 + histIdxOffset + 3].Data(), + dqtablereader_helpers::varValues()); } if (isUnambiguous) { fHistMan->FillHistClass( - histNames[icut][3 + histIdxOffset + 6].Data(), - dqtablereader_helpers::varValues()); + histNames[icut][3 + histIdxOffset + 6].Data(), + dqtablereader_helpers::varValues()); } } } @@ -3485,18 +3523,18 @@ struct AnalysisSameEventPairing { if (fConfigAmbiguousMuonHistograms) { if (isAmbiInBunch) { fHistMan->FillHistClass( - histNames[icut][4 + histIdxOffset].Data(), - dqtablereader_helpers::varValues()); + histNames[icut][4 + histIdxOffset].Data(), + dqtablereader_helpers::varValues()); } if (isAmbiOutOfBunch) { fHistMan->FillHistClass( - histNames[icut][4 + histIdxOffset + 3].Data(), - dqtablereader_helpers::varValues()); + histNames[icut][4 + histIdxOffset + 3].Data(), + dqtablereader_helpers::varValues()); } if (isUnambiguous) { fHistMan->FillHistClass( - histNames[icut][4 + histIdxOffset + 6].Data(), - dqtablereader_helpers::varValues()); + histNames[icut][4 + histIdxOffset + 6].Data(), + dqtablereader_helpers::varValues()); } } } @@ -3515,18 +3553,18 @@ struct AnalysisSameEventPairing { if (fConfigAmbiguousMuonHistograms) { if (isAmbiInBunch) { fHistMan->FillHistClass( - histNames[icut][5 + histIdxOffset].Data(), - dqtablereader_helpers::varValues()); + histNames[icut][5 + histIdxOffset].Data(), + dqtablereader_helpers::varValues()); } if (isAmbiOutOfBunch) { fHistMan->FillHistClass( - histNames[icut][5 + histIdxOffset + 3].Data(), - dqtablereader_helpers::varValues()); + histNames[icut][5 + histIdxOffset + 3].Data(), + dqtablereader_helpers::varValues()); } if (isUnambiguous) { fHistMan->FillHistClass( - histNames[icut][5 + histIdxOffset + 6].Data(), - dqtablereader_helpers::varValues()); + histNames[icut][5 + histIdxOffset + 6].Data(), + dqtablereader_helpers::varValues()); } } } @@ -3545,23 +3583,23 @@ struct AnalysisSameEventPairing { iPairCut++) { AnalysisCompositeCut cut = fPairCuts.at(iPairCut); if (!(cut.IsSelected( - dqtablereader_helpers::varValues()))) { // apply pair - // cuts + dqtablereader_helpers::varValues()))) { // apply pair + // cuts continue; } if (sign1 * sign2 < 0) { fHistMan->FillHistClass( - histNames[ncuts + icut * ncuts + iPairCut][0].Data(), - dqtablereader_helpers::varValues()); + histNames[ncuts + icut * ncuts + iPairCut][0].Data(), + dqtablereader_helpers::varValues()); } else { if (sign1 > 0) { fHistMan->FillHistClass( - histNames[ncuts + icut * ncuts + iPairCut][1].Data(), - dqtablereader_helpers::varValues()); + histNames[ncuts + icut * ncuts + iPairCut][1].Data(), + dqtablereader_helpers::varValues()); } else { fHistMan->FillHistClass( - histNames[ncuts + icut * ncuts + iPairCut][2].Data(), - dqtablereader_helpers::varValues()); + histNames[ncuts + icut * ncuts + iPairCut][2].Data(), + dqtablereader_helpers::varValues()); } } } // end loop (pair cuts) @@ -3574,9 +3612,9 @@ struct AnalysisSameEventPairing { if (fConfigTRPairs) { if constexpr (TPairType == VarManager::kDecayToEE) { twoTrackFilter = - a1.isBarrelSelected_raw() & a2.isBarrelSelected_raw() & - a1.isBarrelSelectedPrefilter_raw() & - a2.isBarrelSelectedPrefilter_raw() & fTrackFilterMask; + a1.isBarrelSelected_raw() & a2.isBarrelSelected_raw() & + a1.isBarrelSelectedPrefilter_raw() & + a2.isBarrelSelectedPrefilter_raw() & fTrackFilterMask; if (!twoTrackFilter) { // the tracks must have at least one filter // bit in common to continue @@ -3603,18 +3641,18 @@ struct AnalysisSameEventPairing { for (int icut = 0; icut < ncuts; icut++) { if (twoTrackFilter & (static_cast(1) << icut)) { isAmbiInBunch = - (twoTrackFilter & (static_cast(1) << 28)) || - (twoTrackFilter & (static_cast(1) << 29)); + (twoTrackFilter & (static_cast(1) << 28)) || + (twoTrackFilter & (static_cast(1) << 29)); isAmbiOutOfBunch = - (twoTrackFilter & (static_cast(1) << 30)) || - (twoTrackFilter & (static_cast(1) << 31)); + (twoTrackFilter & (static_cast(1) << 30)) || + (twoTrackFilter & (static_cast(1) << 31)); isUnambiguous = !(isAmbiInBunch || isAmbiOutOfBunch); isLeg1Ambi = - (twoTrackFilter & (static_cast(1) << 28) || - (twoTrackFilter & (static_cast(1) << 30))); + (twoTrackFilter & (static_cast(1) << 28) || + (twoTrackFilter & (static_cast(1) << 30))); isLeg2Ambi = - (twoTrackFilter & (static_cast(1) << 29) || - (twoTrackFilter & (static_cast(1) << 31))); + (twoTrackFilter & (static_cast(1) << 29) || + (twoTrackFilter & (static_cast(1) << 31))); if constexpr (TPairType == VarManager::kDecayToEE) { if (isLeg1Ambi && isLeg2Ambi) { std::pair iPair(a1.reducedtrackId(), @@ -3637,17 +3675,17 @@ struct AnalysisSameEventPairing { if (sign1 * sign2 < 0) { if (fConfigNRotations.value == 1) { VarManager::FillPairRotation( - t1, t2, fConfigNRotations.value); + t1, t2, fConfigNRotations.value); if constexpr (TPairType == VarManager::kDecayToEE) { if (fConfigQA) { fHistMan->FillHistClass( - Form("PairsBarrelTRPM_%s", fTrackCuts[icut].Data()), - dqtablereader_helpers::varValues()); + Form("PairsBarrelTRPM_%s", fTrackCuts[icut].Data()), + dqtablereader_helpers::varValues()); if (isAmbiExtra) { fHistMan->FillHistClass( - Form("PairsBarrelTRPM_ambiguousextra_%s", - fTrackCuts[icut].Data()), - dqtablereader_helpers::varValues()); + Form("PairsBarrelTRPM_ambiguousextra_%s", + fTrackCuts[icut].Data()), + dqtablereader_helpers::varValues()); } } } @@ -3655,18 +3693,18 @@ struct AnalysisSameEventPairing { for (int irot = 1; irot <= fConfigNRotations.value; irot++) { VarManager::FillPairRotation( - t1, t2, irot); + t1, t2, irot); if constexpr (TPairType == VarManager::kDecayToEE) { if (fConfigQA) { fHistMan->FillHistClass( - Form("PairsBarrelTRPM_%s", - fTrackCuts[icut].Data()), - dqtablereader_helpers::varValues()); + Form("PairsBarrelTRPM_%s", + fTrackCuts[icut].Data()), + dqtablereader_helpers::varValues()); if (isAmbiExtra) { fHistMan->FillHistClass( - Form("PairsBarrelTRPM_ambiguousextra_%s", - fTrackCuts[icut].Data()), - dqtablereader_helpers::varValues()); + Form("PairsBarrelTRPM_ambiguousextra_%s", + fTrackCuts[icut].Data()), + dqtablereader_helpers::varValues()); } } } @@ -3698,7 +3736,7 @@ struct AnalysisSameEventPairing { // 1) create a MixingEvent and fill it with the relevant tracks MixingHandler::MixingEvent mixingEvent; uint32_t trackFilterForMixing = 0; - for (auto const &assoc : groupedAssocs) { + for (auto const& assoc : groupedAssocs) { if constexpr (TPairType == VarManager::kDecayToEE) { trackFilterForMixing = assoc.isBarrelSelected_raw() & assoc.isBarrelSelectedPrefilter_raw() & @@ -3721,14 +3759,14 @@ struct AnalysisSameEventPairing { } // 2) run the mixing with the events in the pool corresponding to this // event - auto &pool = fMixingHandler.GetPool(mixingCategory); - for (auto const &poolEvent : pool.GetEvents()) { - for (auto const &t1 : mixingEvent.tracks1) { + auto& pool = fMixingHandler.GetPool(mixingCategory); + for (auto const& poolEvent : pool.GetEvents()) { + for (auto const& t1 : mixingEvent.tracks1) { // run +- pairing - for (auto const &t2 : poolEvent.tracks2) { + for (auto const& t2 : poolEvent.tracks2) { // check the two-track filter for the mixed pair uint32_t mixedTwoTrackFilter = - t1.filteringFlags & t2.filteringFlags; + t1.filteringFlags & t2.filteringFlags; if (!mixedTwoTrackFilter) { continue; } @@ -3737,8 +3775,8 @@ struct AnalysisSameEventPairing { if (mixedTwoTrackFilter & (static_cast(1) << icut)) { if (fConfigQA) { fHistMan->FillHistClass( - Form("PairsBarrelMEPM_%s", fTrackCuts[icut].Data()), - dqtablereader_helpers::varValues()); + Form("PairsBarrelMEPM_%s", fTrackCuts[icut].Data()), + dqtablereader_helpers::varValues()); } } } @@ -3757,19 +3795,19 @@ struct AnalysisSameEventPairing { if (mixedTwoTrackFilter & (static_cast(1) << icut)) { fHistMan->FillHistClass( - Form("PairsBarrelTR_MEPM_%s", - fTrackCuts[icut].Data()), - dqtablereader_helpers::varValues()); + Form("PairsBarrelTR_MEPM_%s", + fTrackCuts[icut].Data()), + dqtablereader_helpers::varValues()); } } } } } // run ++ pairing - for (auto const &t2 : poolEvent.tracks1) { + for (auto const& t2 : poolEvent.tracks1) { // check the two-track filter for the mixed pair uint32_t mixedTwoTrackFilter = - t1.filteringFlags & t2.filteringFlags; + t1.filteringFlags & t2.filteringFlags; if (!mixedTwoTrackFilter) { continue; } @@ -3778,19 +3816,19 @@ struct AnalysisSameEventPairing { if (mixedTwoTrackFilter & (static_cast(1) << icut)) { if (fConfigQA) { fHistMan->FillHistClass( - Form("PairsBarrelMEPP_%s", fTrackCuts[icut].Data()), - dqtablereader_helpers::varValues()); + Form("PairsBarrelMEPP_%s", fTrackCuts[icut].Data()), + dqtablereader_helpers::varValues()); } } } } } - for (auto const &t1 : mixingEvent.tracks2) { + for (auto const& t1 : mixingEvent.tracks2) { // run -+ pairing - for (auto const &t2 : poolEvent.tracks1) { + for (auto const& t2 : poolEvent.tracks1) { // check the two-track filter for the mixed pair uint32_t mixedTwoTrackFilter = - t1.filteringFlags & t2.filteringFlags; + t1.filteringFlags & t2.filteringFlags; if (!mixedTwoTrackFilter) { continue; } @@ -3799,8 +3837,8 @@ struct AnalysisSameEventPairing { if (mixedTwoTrackFilter & (static_cast(1) << icut)) { if (fConfigQA) { fHistMan->FillHistClass( - Form("PairsBarrelMEPM_%s", fTrackCuts[icut].Data()), - dqtablereader_helpers::varValues()); + Form("PairsBarrelMEPM_%s", fTrackCuts[icut].Data()), + dqtablereader_helpers::varValues()); } } } @@ -3818,19 +3856,19 @@ struct AnalysisSameEventPairing { if (mixedTwoTrackFilter & (static_cast(1) << icut)) { fHistMan->FillHistClass( - Form("PairsBarrelTR_MEPM_%s", - fTrackCuts[icut].Data()), - dqtablereader_helpers::varValues()); + Form("PairsBarrelTR_MEPM_%s", + fTrackCuts[icut].Data()), + dqtablereader_helpers::varValues()); } } } } } // run -- pairing - for (auto const &t2 : poolEvent.tracks2) { + for (auto const& t2 : poolEvent.tracks2) { // check the two-track filter for the mixed pair uint32_t mixedTwoTrackFilter = - t1.filteringFlags & t2.filteringFlags; + t1.filteringFlags & t2.filteringFlags; if (!mixedTwoTrackFilter) { continue; } @@ -3839,8 +3877,8 @@ struct AnalysisSameEventPairing { if (mixedTwoTrackFilter & (static_cast(1) << icut)) { if (fConfigQA) { fHistMan->FillHistClass( - Form("PairsBarrelMEMM_%s", fTrackCuts[icut].Data()), - dqtablereader_helpers::varValues()); + Form("PairsBarrelMEMM_%s", fTrackCuts[icut].Data()), + dqtablereader_helpers::varValues()); } } } @@ -3857,20 +3895,21 @@ struct AnalysisSameEventPairing { template - void runMixedPairing(TAssoc1 const &assocs1, TAssoc2 const &assocs2, - TTracks1 const & /*tracks1*/, - TTracks2 const & /*tracks2*/) { + void runMixedPairing(TAssoc1 const& assocs1, TAssoc2 const& assocs2, + TTracks1 const& /*tracks1*/, + TTracks2 const& /*tracks2*/) + { std::map> histNames = fTrackHistNames; int pairSign = 0; int ncuts = 0; auto twoTrackFilter = static_cast(0); - for (auto const &a1 : assocs1) { - for (auto const &a2 : assocs2) { + for (auto const& a1 : assocs1) { + for (auto const& a2 : assocs2) { if constexpr (TPairType == VarManager::kDecayToEE) { twoTrackFilter = - a1.isBarrelSelected_raw() & a2.isBarrelSelected_raw() & - a1.isBarrelSelectedPrefilter_raw() & - a2.isBarrelSelectedPrefilter_raw() & fTrackFilterMask; + a1.isBarrelSelected_raw() & a2.isBarrelSelected_raw() & + a1.isBarrelSelectedPrefilter_raw() & + a2.isBarrelSelectedPrefilter_raw() & fTrackFilterMask; if (!twoTrackFilter) { // the tracks must have at least one filter bit // in common to continue continue; @@ -3936,42 +3975,42 @@ struct AnalysisSameEventPairing { if (fConfigOptions.flatTables.value) { dimuonAllList( - -999., -999., -999., -999., 0, 0, -999., -999., -999., - VarManager::fgValues[VarManager::kMass], false, - VarManager::fgValues[VarManager::kPt], - VarManager::fgValues[VarManager::kEta], - VarManager::fgValues[VarManager::kPhi], t1.sign() + t2.sign(), - VarManager::fgValues[VarManager::kVertexingChi2PCA], - VarManager::fgValues[VarManager::kVertexingTauz], - VarManager::fgValues[VarManager::kVertexingTauzErr], - VarManager::fgValues[VarManager::kVertexingTauxy], - VarManager::fgValues[VarManager::kVertexingTauxyErr], - VarManager::fgValues[VarManager::kCosPointingAngle], t1.pt(), - t1.eta(), t1.phi(), t1.sign(), t2.pt(), t2.eta(), t2.phi(), - t2.sign(), t1.fwdDcaX(), t1.fwdDcaY(), t2.fwdDcaX(), - t2.fwdDcaY(), 0., 0., t1.chi2MatchMCHMID(), - t2.chi2MatchMCHMID(), t1.chi2MatchMCHMFT(), - t2.chi2MatchMCHMFT(), t1.chi2(), t2.chi2(), -999., -999., -999., - -999., -999., -999., -999., -999., -999., -999., -999., -999., - -999., -999., -999., -999., - (twoTrackFilter & (static_cast(1) << 28)) || - (twoTrackFilter & (static_cast(1) << 29)), - (twoTrackFilter & (static_cast(1) << 30)) || - (twoTrackFilter & (static_cast(1) << 31)), - true, true, VarManager::fgValues[VarManager::kU2Q2], - VarManager::fgValues[VarManager::kU3Q3], - VarManager::fgValues[VarManager::kR2EP_AB], - VarManager::fgValues[VarManager::kR2SP_AB], - VarManager::fgValues[VarManager::kCentFT0C], - VarManager::fgValues[VarManager::kCos2DeltaPhi], - VarManager::fgValues[VarManager::kCos3DeltaPhi], - VarManager::fgValues[VarManager::kCORR2POI], - VarManager::fgValues[VarManager::kCORR4POI], - VarManager::fgValues[VarManager::kM01POI], - VarManager::fgValues[VarManager::kM0111POI], - VarManager::fgValues[VarManager::kMultDimuons], - VarManager::fgValues[VarManager::kVertexingPz], - VarManager::fgValues[VarManager::kVertexingSV]); + -999., -999., -999., -999., 0, 0, -999., -999., -999., + VarManager::fgValues[VarManager::kMass], false, + VarManager::fgValues[VarManager::kPt], + VarManager::fgValues[VarManager::kEta], + VarManager::fgValues[VarManager::kPhi], t1.sign() + t2.sign(), + VarManager::fgValues[VarManager::kVertexingChi2PCA], + VarManager::fgValues[VarManager::kVertexingTauz], + VarManager::fgValues[VarManager::kVertexingTauzErr], + VarManager::fgValues[VarManager::kVertexingTauxy], + VarManager::fgValues[VarManager::kVertexingTauxyErr], + VarManager::fgValues[VarManager::kCosPointingAngle], t1.pt(), + t1.eta(), t1.phi(), t1.sign(), t2.pt(), t2.eta(), t2.phi(), + t2.sign(), t1.fwdDcaX(), t1.fwdDcaY(), t2.fwdDcaX(), + t2.fwdDcaY(), 0., 0., t1.chi2MatchMCHMID(), + t2.chi2MatchMCHMID(), t1.chi2MatchMCHMFT(), + t2.chi2MatchMCHMFT(), t1.chi2(), t2.chi2(), -999., -999., -999., + -999., -999., -999., -999., -999., -999., -999., -999., -999., + -999., -999., -999., -999., + (twoTrackFilter & (static_cast(1) << 28)) || + (twoTrackFilter & (static_cast(1) << 29)), + (twoTrackFilter & (static_cast(1) << 30)) || + (twoTrackFilter & (static_cast(1) << 31)), + true, true, VarManager::fgValues[VarManager::kU2Q2], + VarManager::fgValues[VarManager::kU3Q3], + VarManager::fgValues[VarManager::kR2EP_AB], + VarManager::fgValues[VarManager::kR2SP_AB], + VarManager::fgValues[VarManager::kCentFT0C], + VarManager::fgValues[VarManager::kCos2DeltaPhi], + VarManager::fgValues[VarManager::kCos3DeltaPhi], + VarManager::fgValues[VarManager::kCORR2POI], + VarManager::fgValues[VarManager::kCORR4POI], + VarManager::fgValues[VarManager::kM01POI], + VarManager::fgValues[VarManager::kM0111POI], + VarManager::fgValues[VarManager::kMultDimuons], + VarManager::fgValues[VarManager::kVertexingPz], + VarManager::fgValues[VarManager::kVertexingSV]); } } /*if constexpr (TPairType == VarManager::kElectronMuon) { @@ -3990,13 +4029,13 @@ struct AnalysisSameEventPairing { isAmbiInBunch = (twoTrackFilter & (static_cast(1) << 28)) || (twoTrackFilter & (static_cast(1) << 29)); isAmbiOutOfBunch = - (twoTrackFilter & (static_cast(1) << 30)) || - (twoTrackFilter & (static_cast(1) << 31)); + (twoTrackFilter & (static_cast(1) << 30)) || + (twoTrackFilter & (static_cast(1) << 31)); isUnambiguous = - !((twoTrackFilter & (static_cast(1) << 28)) || - (twoTrackFilter & (static_cast(1) << 29)) || - (twoTrackFilter & (static_cast(1) << 30)) || - (twoTrackFilter & (static_cast(1) << 31))); + !((twoTrackFilter & (static_cast(1) << 28)) || + (twoTrackFilter & (static_cast(1) << 29)) || + (twoTrackFilter & (static_cast(1) << 30)) || + (twoTrackFilter & (static_cast(1) << 31))); if (fConfigQA) { if (pairSign == 0) { if constexpr (TPairType == VarManager::kDecayToMuMu) { @@ -4019,8 +4058,8 @@ struct AnalysisSameEventPairing { } if constexpr (TPairType == VarManager::kDecayToEE) { fHistMan->FillHistClass( - Form("PairsBarrelMEPM_%s", fTrackCuts[icut].Data()), - dqtablereader_helpers::varValues()); + Form("PairsBarrelMEPM_%s", fTrackCuts[icut].Data()), + dqtablereader_helpers::varValues()); } } else { if (pairSign > 0) { @@ -4030,25 +4069,25 @@ struct AnalysisSameEventPairing { if (fConfigAmbiguousMuonHistograms) { if (isAmbiInBunch) { fHistMan->FillHistClass( - histNames[icut][16].Data(), - dqtablereader_helpers::varValues()); + histNames[icut][16].Data(), + dqtablereader_helpers::varValues()); } if (isAmbiOutOfBunch) { fHistMan->FillHistClass( - histNames[icut][19].Data(), - dqtablereader_helpers::varValues()); + histNames[icut][19].Data(), + dqtablereader_helpers::varValues()); } if (isUnambiguous) { fHistMan->FillHistClass( - histNames[icut][22].Data(), - dqtablereader_helpers::varValues()); + histNames[icut][22].Data(), + dqtablereader_helpers::varValues()); } } } if constexpr (TPairType == VarManager::kDecayToEE) { fHistMan->FillHistClass( - Form("PairsBarrelMEPP_%s", fTrackCuts[icut].Data()), - dqtablereader_helpers::varValues()); + Form("PairsBarrelMEPP_%s", fTrackCuts[icut].Data()), + dqtablereader_helpers::varValues()); } } else { if constexpr (TPairType == VarManager::kDecayToMuMu) { @@ -4057,25 +4096,25 @@ struct AnalysisSameEventPairing { if (fConfigAmbiguousMuonHistograms) { if (isAmbiInBunch) { fHistMan->FillHistClass( - histNames[icut][17].Data(), - dqtablereader_helpers::varValues()); + histNames[icut][17].Data(), + dqtablereader_helpers::varValues()); } if (isAmbiOutOfBunch) { fHistMan->FillHistClass( - histNames[icut][20].Data(), - dqtablereader_helpers::varValues()); + histNames[icut][20].Data(), + dqtablereader_helpers::varValues()); } if (isUnambiguous) { fHistMan->FillHistClass( - histNames[icut][23].Data(), - dqtablereader_helpers::varValues()); + histNames[icut][23].Data(), + dqtablereader_helpers::varValues()); } } } if constexpr (TPairType == VarManager::kDecayToEE) { fHistMan->FillHistClass( - Form("PairsBarrelMEMM_%s", fTrackCuts[icut].Data()), - dqtablereader_helpers::varValues()); + Form("PairsBarrelMEMM_%s", fTrackCuts[icut].Data()), + dqtablereader_helpers::varValues()); } } } @@ -4088,9 +4127,10 @@ struct AnalysisSameEventPairing { // barrel-barrel and muon-muon event mixing template - void runSameSideMixing(TEvents &events, TAssocs const &assocs, - TTracks const &tracks, - o2::framework::Preslice &preSlice) { + void runSameSideMixing(TEvents& events, TAssocs const& assocs, + TTracks const& tracks, + o2::framework::Preslice& preSlice) + { if (ResoFlowSP == nullptr || ResoFlowEP == nullptr) { LOG(info) << "Flow resolution objects not set, flow will not be filled " "for mixed events"; @@ -4102,7 +4142,7 @@ struct AnalysisSameEventPairing { events.bindExternalIndices(&assocs); int mixingDepth = fConfigMixingDepth.value; fAmbiguousPairs.clear(); - for (auto const &[event1, event2] : + for (auto const& [event1, event2] : selfCombinations(hashBin, mixingDepth, -1, events, events)) { VarManager::ResetValues(0, VarManager::kNVars); VarManager::FillEvent(event1, @@ -4134,13 +4174,14 @@ struct AnalysisSameEventPairing { uint32_t TTrackFillMap, uint32_t TMuonFillMap, typename TEvents, typename TTrackAssocs, typename TTracks, typename TMuonAssocs, typename TMuons> - void runEmuSameEventPairing(TEvents const &events, - o2::framework::Preslice &preslice1, - TTrackAssocs const &assocs1, - TTracks const & /*tracks1*/, - o2::framework::Preslice &preslice2, - TMuonAssocs const &assocs2, - TMuons const & /*tracks2*/) { + void runEmuSameEventPairing(TEvents const& events, + o2::framework::Preslice& preslice1, + TTrackAssocs const& assocs1, + TTracks const& /*tracks1*/, + o2::framework::Preslice& preslice2, + TMuonAssocs const& assocs2, + TMuons const& /*tracks2*/) + { if (events.size() > 0) { if (fCurrentRun != events.begin().runNumber()) { initParamsFromCCDB(events.begin().timestamp(), @@ -4149,7 +4190,7 @@ struct AnalysisSameEventPairing { } } - const auto &histNames = fTrackMuonHistNames; + const auto& histNames = fTrackMuonHistNames; int nPairCuts = !fPairCuts.empty() ? static_cast(fPairCuts.size()) : 1; electronmuonList.reserve(assocs1.size()); @@ -4159,11 +4200,11 @@ struct AnalysisSameEventPairing { int sign2 = 0; constexpr bool eventHasQvector = - ((TEventFillMap & VarManager::ObjTypes::ReducedEventQvector) > 0); + ((TEventFillMap & VarManager::ObjTypes::ReducedEventQvector) > 0); constexpr bool eventHasQvectorCentr = - ((TEventFillMap & VarManager::ObjTypes::CollisionQvect) > 0); + ((TEventFillMap & VarManager::ObjTypes::CollisionQvect) > 0); - for (auto const &event : events) { + for (auto const& event : events) { if (!event.isEventSelected_bit(0)) { continue; } @@ -4185,9 +4226,9 @@ struct AnalysisSameEventPairing { } // Custom combination policy - for (auto const &[a1, a2] : + for (auto const& [a1, a2] : o2::soa::combinations(o2::soa::CombinationsFullIndexPolicy( - groupedAssocs1, groupedAssocs2))) { + groupedAssocs1, groupedAssocs2))) { if (!(a1.isBarrelSelected_raw() & a1.isBarrelSelectedPrefilter_raw() & fTrackFilterMask)) { continue; @@ -4293,24 +4334,25 @@ struct AnalysisSameEventPairing { template - void runEmuMixedPairing(TAssoc1 const &assocs1, TAssoc2 const &assocs2, - TTracks1 const & /*tracks1*/, - TTracks2 const & /*tracks2*/) { - const auto &histNames = fTrackMuonHistNames; + void runEmuMixedPairing(TAssoc1 const& assocs1, TAssoc2 const& assocs2, + TTracks1 const& /*tracks1*/, + TTracks2 const& /*tracks2*/) + { + const auto& histNames = fTrackMuonHistNames; int sign1 = 0; int sign2 = 0; int nPairCuts = !fPairCuts.empty() ? static_cast(fPairCuts.size()) : 1; constexpr bool eventHasQvector = - ((TEventFillMap & VarManager::ObjTypes::ReducedEventQvector) > 0); + ((TEventFillMap & VarManager::ObjTypes::ReducedEventQvector) > 0); constexpr bool eventHasQvectorCentr = - ((TEventFillMap & VarManager::ObjTypes::CollisionQvect) > 0); + ((TEventFillMap & VarManager::ObjTypes::CollisionQvect) > 0); - for (auto const &a1 : assocs1) { + for (auto const& a1 : assocs1) { if (!(a1.isBarrelSelected_raw() & a1.isBarrelSelectedPrefilter_raw() & fTrackFilterMask)) { continue; } - for (auto const &a2 : assocs2) { + for (auto const& a2 : assocs2) { if (!(a2.isMuonSelected_raw() & fMuonFilterMask)) { continue; } @@ -4375,15 +4417,16 @@ struct AnalysisSameEventPairing { template - void runEmuSameSideMixing(TEvents &events, - o2::framework::Preslice &preslice1, - TTrackAssocs const &assocs1, TTracks const &tracks1, - o2::framework::Preslice &preslice2, - TMuonAssocs const &assocs2, TMuons const &tracks2) { + void runEmuSameSideMixing(TEvents& events, + o2::framework::Preslice& preslice1, + TTrackAssocs const& assocs1, TTracks const& tracks1, + o2::framework::Preslice& preslice2, + TMuonAssocs const& assocs2, TMuons const& tracks2) + { events.bindExternalIndices(&assocs1); events.bindExternalIndices(&assocs2); int mixingDepth = fConfigMixingDepth.value; - for (auto const &[event1, event2] : + for (auto const& [event1, event2] : selfCombinations(hashBin, mixingDepth, -1, events, events)) { VarManager::ResetValues(0, VarManager::kNVars); VarManager::FillEvent(event1, @@ -4407,13 +4450,13 @@ struct AnalysisSameEventPairing { } void processAllSkimmed( - MyEventsVtxCovSelected const &events, - o2::soa::Join const &barrelAssocs, - MyBarrelTracksWithCovWithAmbiguities const &barrelTracks, - o2::soa::Join const - &muonAssocs, - MyMuonTracksWithCovWithAmbiguities const &muons) { + MyEventsVtxCovSelected const& events, + o2::soa::Join const& barrelAssocs, + MyBarrelTracksWithCovWithAmbiguities const& barrelTracks, + o2::soa::Join const& muonAssocs, + MyMuonTracksWithCovWithAmbiguities const& muons) + { runSameEventPairing(events, trackAssocsPerCollision, barrelAssocs, barrelTracks); @@ -4425,100 +4468,107 @@ struct AnalysisSameEventPairing { } void processBarrelOnlySkimmed( - MyEventsVtxCovSelected const &events, - o2::soa::Join const &barrelAssocs, - MyBarrelTracksWithCovWithAmbiguities const &barrelTracks) { + MyEventsVtxCovSelected const& events, + o2::soa::Join const& barrelAssocs, + MyBarrelTracksWithCovWithAmbiguities const& barrelTracks) + { runSameEventPairing(events, trackAssocsPerCollision, barrelAssocs, barrelTracks); } void processBarrelOnlySkimmedFlow( - MyEventsVtxCovSelectedQvector const &events, - o2::soa::Join const &barrelAssocs, - MyBarrelTracksWithAmbiguities const &barrelTracks) { + MyEventsVtxCovSelectedQvector const& events, + o2::soa::Join const& barrelAssocs, + MyBarrelTracksWithAmbiguities const& barrelTracks) + { runSameEventPairing( - events, trackAssocsPerCollision, barrelAssocs, barrelTracks); + events, trackAssocsPerCollision, barrelAssocs, barrelTracks); } void processBarrelOnlySkimmedNoCov( - MyEventsSelected const &events, - o2::soa::Join const &barrelAssocs, - MyBarrelTracksWithAmbiguities const &barrelTracks) { + MyEventsSelected const& events, + o2::soa::Join const& barrelAssocs, + MyBarrelTracksWithAmbiguities const& barrelTracks) + { runSameEventPairing(events, trackAssocsPerCollision, barrelAssocs, barrelTracks); } void processBarrelOnlySkimmedNoCovWithMultExtra( - MyEventsMultExtraSelected const &events, - o2::soa::Join const &barrelAssocs, - MyBarrelTracksWithAmbiguities const &barrelTracks) { + MyEventsMultExtraSelected const& events, + o2::soa::Join const& barrelAssocs, + MyBarrelTracksWithAmbiguities const& barrelTracks) + { runSameEventPairing( - events, trackAssocsPerCollision, barrelAssocs, barrelTracks); + events, trackAssocsPerCollision, barrelAssocs, barrelTracks); } void processBarrelOnlyWithCollSkimmed( - MyEventsVtxCovSelectedInfo const &events, - o2::soa::Join const &barrelAssocs, - MyBarrelTracksWithCovWithAmbiguitiesWithColl const &barrelTracks) { + MyEventsVtxCovSelectedInfo const& events, + o2::soa::Join const& barrelAssocs, + MyBarrelTracksWithCovWithAmbiguitiesWithColl const& barrelTracks) + { runSameEventPairing( - events, trackAssocsPerCollision, barrelAssocs, barrelTracks); + events, trackAssocsPerCollision, barrelAssocs, barrelTracks); } void processBarrelOnlyWithQvectorCentrSkimmedNoCov( - MyEventsQvectorCentrSelected const &events, - o2::soa::Join const &barrelAssocs, - MyBarrelTracksWithAmbiguities const &barrelTracks) { + MyEventsQvectorCentrSelected const& events, + o2::soa::Join const& barrelAssocs, + MyBarrelTracksWithAmbiguities const& barrelTracks) + { runSameEventPairing( - events, trackAssocsPerCollision, barrelAssocs, barrelTracks); + events, trackAssocsPerCollision, barrelAssocs, barrelTracks); } void processBarrelOnlyWithQvectorCentrSkimmed( - MyEventsQvectorCentrSelected const &events, - o2::soa::Join const &barrelAssocs, - MyBarrelTracksWithCovWithAmbiguities const &barrelTracks) { + MyEventsQvectorCentrSelected const& events, + o2::soa::Join const& barrelAssocs, + MyBarrelTracksWithCovWithAmbiguities const& barrelTracks) + { runSameEventPairing( - events, trackAssocsPerCollision, barrelAssocs, barrelTracks); + events, trackAssocsPerCollision, barrelAssocs, barrelTracks); } void processMuonOnlySkimmed( - MyEventsVtxCovSelected const &events, - o2::soa::Join const - &muonAssocs, - MyMuonTracksWithCovWithAmbiguities const &muons) { + MyEventsVtxCovSelected const& events, + o2::soa::Join const& muonAssocs, + MyMuonTracksWithCovWithAmbiguities const& muons) + { runSameEventPairing(events, muonAssocsPerCollision, muonAssocs, muons); } void processMuonOnlySkimmedMultExtra( - MyEventsVtxCovSelectedMultExtra const &events, - o2::soa::Join const - &muonAssocs, - MyMuonTracksWithCovWithAmbiguities const &muons) { + MyEventsVtxCovSelectedMultExtra const& events, + o2::soa::Join const& muonAssocs, + MyMuonTracksWithCovWithAmbiguities const& muons) + { runSameEventPairing( - events, muonAssocsPerCollision, muonAssocs, muons); + events, muonAssocsPerCollision, muonAssocs, muons); } void processMuonOnlySkimmedFlow( - MyEventsQvectorCentrSelected const &events, - o2::soa::Join const - &muonAssocs, - MyMuonTracksWithCovWithAmbiguities const &muons) { + MyEventsQvectorCentrSelected const& events, + o2::soa::Join const& muonAssocs, + MyMuonTracksWithCovWithAmbiguities const& muons) + { runSameEventPairing(events, muonAssocsPerCollision, @@ -4526,39 +4576,38 @@ struct AnalysisSameEventPairing { } void processMuonOnlyVertexingSkimmed( - MyEventsVtxCovSelected const &events, - o2::soa::Join const - &muonAssocs, - MyMuonTracksWithCovWithAmbiguities const &muons) { + MyEventsVtxCovSelected const& events, + o2::soa::Join const& muonAssocs, + MyMuonTracksWithCovWithAmbiguities const& muons) + { runSameEventPairing(events, muonAssocsPerCollision, muonAssocs, muons); } void processElectronMuonSkimmed( - MyEventsVtxCovSelected const &events, - o2::soa::Join const &barrelAssocs, - MyBarrelTracksWithCovWithAmbiguities const &barrelTracks, - o2::soa::Join const - &muonAssocs, - MyMuonTracksWithCovWithAmbiguities const &muons) { + MyEventsVtxCovSelected const& events, + o2::soa::Join const& barrelAssocs, + MyBarrelTracksWithCovWithAmbiguities const& barrelTracks, + o2::soa::Join const& muonAssocs, + MyMuonTracksWithCovWithAmbiguities const& muons) + { runEmuSameEventPairing( - events, trackAssocsPerCollision, barrelAssocs, barrelTracks, - muonAssocsPerCollision, muonAssocs, muons); + events, trackAssocsPerCollision, barrelAssocs, barrelTracks, + muonAssocsPerCollision, muonAssocs, muons); } void processMixingAllSkimmed( - o2::soa::Filtered - &events, // o2-linter: disable=const-ref-in-process - o2::soa::Join const &trackAssocs, - MyBarrelTracksWithCov const &tracks, - o2::soa::Join const - &muonAssocs, - MyMuonTracksWithCovWithAmbiguities const &muons) { + o2::soa::Filtered& events, // o2-linter: disable=const-ref-in-process + o2::soa::Join const& trackAssocs, + MyBarrelTracksWithCov const& tracks, + o2::soa::Join const& muonAssocs, + MyMuonTracksWithCovWithAmbiguities const& muons) + { runSameSideMixing(events, trackAssocs, tracks, trackAssocsPerCollision); runSameSideMixing(events, muonAssocs, muons, @@ -4566,70 +4615,68 @@ struct AnalysisSameEventPairing { } void processMixingBarrelSkimmed( - o2::soa::Filtered - &events, // o2-linter: disable=const-ref-in-process - o2::soa::Join const &trackAssocs, - o2::aod::ReducedTracks const &tracks) { + o2::soa::Filtered& events, // o2-linter: disable=const-ref-in-process + o2::soa::Join const& trackAssocs, + o2::aod::ReducedTracks const& tracks) + { runSameSideMixing(events, trackAssocs, tracks, trackAssocsPerCollision); } void processMixingBarrelSkimmedFlow( - o2::soa::Filtered - &events, // o2-linter: disable=const-ref-in-process - o2::soa::Join const &trackAssocs, - o2::aod::ReducedTracks const &tracks) { + o2::soa::Filtered& events, // o2-linter: disable=const-ref-in-process + o2::soa::Join const& trackAssocs, + o2::aod::ReducedTracks const& tracks) + { runSameSideMixing( - events, trackAssocs, tracks, trackAssocsPerCollision); + events, trackAssocs, tracks, trackAssocsPerCollision); } void processMixingBarrelWithQvectorCentrSkimmedNoCov( - o2::soa::Filtered - &events, // o2-linter: disable=const-ref-in-process - o2::soa::Join const &trackAssocs, - MyBarrelTracksWithAmbiguities const &tracks) { + o2::soa::Filtered& events, // o2-linter: disable=const-ref-in-process + o2::soa::Join const& trackAssocs, + MyBarrelTracksWithAmbiguities const& tracks) + { runSameSideMixing( - events, trackAssocs, tracks, trackAssocsPerCollision); + events, trackAssocs, tracks, trackAssocsPerCollision); } void processMixingMuonSkimmed( - o2::soa::Filtered - &events, // o2-linter: disable=const-ref-in-process - o2::soa::Join const - &muonAssocs, - MyMuonTracksWithCovWithAmbiguities const &muons) { + o2::soa::Filtered& events, // o2-linter: disable=const-ref-in-process + o2::soa::Join const& muonAssocs, + MyMuonTracksWithCovWithAmbiguities const& muons) + { runSameSideMixing(events, muonAssocs, muons, muonAssocsPerCollision); } void processMixingMuonSkimmedFlow( - o2::soa::Filtered - &events, // o2-linter: disable=const-ref-in-process - o2::soa::Join const - &muonAssocs, - MyMuonTracksWithCovWithAmbiguities const &muons) { + o2::soa::Filtered& events, // o2-linter: disable=const-ref-in-process + o2::soa::Join const& muonAssocs, + MyMuonTracksWithCovWithAmbiguities const& muons) + { runSameSideMixing( - events, muonAssocs, muons, muonAssocsPerCollision); + events, muonAssocs, muons, muonAssocsPerCollision); } void processMixingElectronMuonSkimmed( - o2::soa::Filtered - &events, // o2-linter: disable=const-ref-in-process - o2::soa::Join const &barrelAssocs, - o2::aod::ReducedTracks const &barrelTracks, - o2::soa::Join const - &muonAssocs, - MyMuonTracksWithCovWithAmbiguities const &muons) { + o2::soa::Filtered& events, // o2-linter: disable=const-ref-in-process + o2::soa::Join const& barrelAssocs, + o2::aod::ReducedTracks const& barrelTracks, + o2::soa::Join const& muonAssocs, + MyMuonTracksWithCovWithAmbiguities const& muons) + { runEmuSameSideMixing( - events, trackAssocsPerCollision, barrelAssocs, barrelTracks, - muonAssocsPerCollision, muonAssocs, muons); + events, trackAssocsPerCollision, barrelAssocs, barrelTracks, + muonAssocsPerCollision, muonAssocs, muons); } - void processDummy(MyEventsBasic const &) { + void processDummy(MyEventsBasic const&) + { // do nothing } @@ -4656,10 +4703,10 @@ struct AnalysisSameEventPairing { "tracks, with Qvector from central framework", false); PROCESS_SWITCH( - AnalysisSameEventPairing, processBarrelOnlyWithQvectorCentrSkimmed, - "Run barrel only pairing (no covariances), with skimmed tracks, with " - "collision information, with Qvector from central framework", - false); + AnalysisSameEventPairing, processBarrelOnlyWithQvectorCentrSkimmed, + "Run barrel only pairing (no covariances), with skimmed tracks, with " + "collision information, with Qvector from central framework", + false); PROCESS_SWITCH(AnalysisSameEventPairing, processBarrelOnlySkimmedFlow, "Run barrel only pairing, with skimmed tracks and with flow", false); @@ -4670,9 +4717,9 @@ struct AnalysisSameEventPairing { PROCESS_SWITCH(AnalysisSameEventPairing, processMuonOnlySkimmedFlow, "Run muon only pairing, with skimmed tracks and flow", false); PROCESS_SWITCH( - AnalysisSameEventPairing, processMuonOnlyVertexingSkimmed, - "Run muon only pairing with two-prong vertexing, with skimmed tracks", - false); + AnalysisSameEventPairing, processMuonOnlyVertexingSkimmed, + "Run muon only pairing with two-prong vertexing, with skimmed tracks", + false); PROCESS_SWITCH(AnalysisSameEventPairing, processElectronMuonSkimmed, "Run electron-muon pairing, with skimmed tracks/muons", false); PROCESS_SWITCH(AnalysisSameEventPairing, processMixingAllSkimmed, @@ -4681,8 +4728,8 @@ struct AnalysisSameEventPairing { PROCESS_SWITCH(AnalysisSameEventPairing, processMixingBarrelSkimmed, "Run barrel type mixing pairing, with skimmed tracks", false); PROCESS_SWITCH( - AnalysisSameEventPairing, processMixingBarrelSkimmedFlow, - "Run barrel type mixing pairing, with flow, with skimmed tracks", false); + AnalysisSameEventPairing, processMixingBarrelSkimmedFlow, + "Run barrel type mixing pairing, with flow, with skimmed tracks", false); PROCESS_SWITCH(AnalysisSameEventPairing, processMixingBarrelWithQvectorCentrSkimmedNoCov, "Run barrel type mixing pairing, with skimmed tracks and with " @@ -4697,8 +4744,8 @@ struct AnalysisSameEventPairing { "Run electron-muon mixing pairing, with skimmed tracks/muons", false); PROCESS_SWITCH( - AnalysisSameEventPairing, processDummy, - "Dummy function, enabled only if none of the others are enabled", true); + AnalysisSameEventPairing, processDummy, + "Dummy function, enabled only if none of the others are enabled", true); }; // Run pairing for resonance with legs fulfilling separate cuts (asymmetric @@ -4708,7 +4755,7 @@ struct AnalysisAsymmetricPairing { o2::framework::Produces ditrackList; o2::framework::Produces ditrackExtraList; - o2::base::MatLayerCylSet *fLUT = nullptr; + o2::base::MatLayerCylSet* fLUT = nullptr; int fCurrentRun = -1; // needed to detect if the run changed and trigger // update of calibrations etc. @@ -4717,82 +4764,82 @@ struct AnalysisAsymmetricPairing { // Configurables o2::framework::Configurable fConfigLegCuts{ - "cfgLegCuts", "", - ":[:],[:[:],...]"}; + "cfgLegCuts", "", + ":[:],[:[:],...]"}; o2::framework::Configurable fConfigLegAFilterMask{ - "cfgLegAFilterMask", 0, - "o2::framework::expressions::Filter mask corresponding to cuts in " - "track-selection"}; + "cfgLegAFilterMask", 0, + "o2::framework::expressions::Filter mask corresponding to cuts in " + "track-selection"}; o2::framework::Configurable fConfigLegBFilterMask{ - "cfgLegBFilterMask", 0, - "o2::framework::expressions::Filter mask corresponding to cuts in " - "track-selection"}; + "cfgLegBFilterMask", 0, + "o2::framework::expressions::Filter mask corresponding to cuts in " + "track-selection"}; o2::framework::Configurable fConfigLegCFilterMask{ - "cfgLegCFilterMask", 0, - "o2::framework::expressions::Filter mask corresponding to cuts in " - "track-selection"}; + "cfgLegCFilterMask", 0, + "o2::framework::expressions::Filter mask corresponding to cuts in " + "track-selection"}; o2::framework::Configurable fConfigCommonTrackCuts{ - "cfgCommonTrackCuts", "", - "Comma separated list of cuts to be applied to all legs"}; + "cfgCommonTrackCuts", "", + "Comma separated list of cuts to be applied to all legs"}; o2::framework::Configurable fConfigPairCuts{ - "cfgPairCuts", "", "Comma separated list of pair cuts"}; + "cfgPairCuts", "", "Comma separated list of pair cuts"}; o2::framework::Configurable fConfigPairCutsJSON{ - "cfgPairCutsJSON", "", "Additional list of pair cuts in JSON format"}; + "cfgPairCutsJSON", "", "Additional list of pair cuts in JSON format"}; o2::framework::Configurable fConfigRemoveCollSplittingCandidates{ - "cfgRemoveCollSplittingCandidates", false, - "If true, remove collision splitting candidates as determined by the " - "event selection task upstream"}; + "cfgRemoveCollSplittingCandidates", false, + "If true, remove collision splitting candidates as determined by the " + "event selection task upstream"}; o2::framework::Configurable fConfigSkipAmbiguousIdCombinations{ - "cfgSkipAmbiguousIdCombinations", true, - "Choose whether to skip pairs/triples which pass a stricter combination " - "of cuts, e.g. KKPi triplets for D+ -> KPiPi"}; + "cfgSkipAmbiguousIdCombinations", true, + "Choose whether to skip pairs/triples which pass a stricter combination " + "of cuts, e.g. KKPi triplets for D+ -> KPiPi"}; o2::framework::Configurable fConfigHistogramSubgroups{ - "cfgAsymmetricPairingHistogramsSubgroups", "barrel,vertexing", - "Comma separated list of asymmetric-pairing histogram subgroups"}; + "cfgAsymmetricPairingHistogramsSubgroups", "barrel,vertexing", + "Comma separated list of asymmetric-pairing histogram subgroups"}; o2::framework::Configurable fConfigSameSignHistograms{ - "cfgSameSignHistograms", false, - "Include same sign pair histograms for 2-prong decays"}; + "cfgSameSignHistograms", false, + "Include same sign pair histograms for 2-prong decays"}; o2::framework::Configurable fConfigAmbiguousHistograms{ - "cfgAmbiguousHistograms", false, - "Include separate histograms for pairs/triplets with ambiguous tracks"}; + "cfgAmbiguousHistograms", false, + "Include separate histograms for pairs/triplets with ambiguous tracks"}; o2::framework::Configurable fConfigReflectedHistograms{ - "cfgReflectedHistograms", false, - "Include separate histograms for pairs which are reflections of " - "previously counted pairs"}; + "cfgReflectedHistograms", false, + "Include separate histograms for pairs which are reflections of " + "previously counted pairs"}; o2::framework::Configurable fConfigAddJSONHistograms{ - "cfgAddJSONHistograms", "", "Histograms in JSON format"}; + "cfgAddJSONHistograms", "", "Histograms in JSON format"}; o2::framework::Configurable fConfigCcdbUrl{ - "ccdb-url", "http://alice-ccdb.cern.ch", "url of the ccdb repository"}; + "ccdb-url", "http://alice-ccdb.cern.ch", "url of the ccdb repository"}; o2::framework::Configurable fConfigGRPMagPath{ - "grpmagPath", "GLO/Config/GRPMagField", - "CCDB path of the GRPMagField object"}; + "grpmagPath", "GLO/Config/GRPMagField", + "CCDB path of the GRPMagField object"}; o2::framework::Configurable fConfigUseKFVertexing{ - "cfgUseKFVertexing", false, - "Use KF Particle for secondary vertex reconstruction (DCAFitter is used " - "by default)"}; + "cfgUseKFVertexing", false, + "Use KF Particle for secondary vertex reconstruction (DCAFitter is used " + "by default)"}; o2::framework::Configurable fConfigUseAbsDCA{ - "cfgUseAbsDCA", false, - "Use absolute DCA minimization instead of chi^2 minimization in " - "secondary vertexing"}; + "cfgUseAbsDCA", false, + "Use absolute DCA minimization instead of chi^2 minimization in " + "secondary vertexing"}; o2::framework::Configurable fConfigLutPath{ - "lutPath", "GLO/Param/MatLUT", "Path of the Lut parametrization"}; + "lutPath", "GLO/Param/MatLUT", "Path of the Lut parametrization"}; o2::framework::Configurable fConfigFetchInteractionRate{ - "cfgFetchInteractionRate", false, - "Fetch event-wise interaction rate from the CCDB"}; + "cfgFetchInteractionRate", false, + "Fetch event-wise interaction rate from the CCDB"}; o2::framework::Configurable fConfigIRSource{ - "cfgIRSource", "ZNC hadronic", - "Estimator of the interaction rate (Recommended: pp --> T0VTX, Pb-Pb --> " - "ZNC hadronic)"}; + "cfgIRSource", "ZNC hadronic", + "Estimator of the interaction rate (Recommended: pp --> T0VTX, Pb-Pb --> " + "ZNC hadronic)"}; o2::framework::Service fCCDB{}; o2::ctpRateFetcher rateFetcher; - HistogramManager *fHistMan = nullptr; + HistogramManager* fHistMan = nullptr; - std::vector fPairCuts; + std::vector fPairCuts; int fNPairHistPrefixes = 0; // o2::framework::expressions::Filter masks to find legs in BarrelTrackCuts @@ -4819,28 +4866,29 @@ struct AnalysisAsymmetricPairing { std::vector fCommonCutNames; o2::framework::Preslice< - o2::soa::Join> - trackAssocsPerCollision = - o2::aod::reducedtrack_association::reducedeventId; + o2::soa::Join> + trackAssocsPerCollision = + o2::aod::reducedtrack_association::reducedeventId; // Partitions for triplets and asymmetric pairs o2::framework::Partition< - o2::soa::Join> - legACandidateAssocs = (o2::aod::dqanalysisflags::isBarrelSelected & - fConfigLegAFilterMask) > static_cast(0); + o2::soa::Join> + legACandidateAssocs = (o2::aod::dqanalysisflags::isBarrelSelected & + fConfigLegAFilterMask) > static_cast(0); o2::framework::Partition< - o2::soa::Join> - legBCandidateAssocs = (o2::aod::dqanalysisflags::isBarrelSelected & - fConfigLegBFilterMask) > static_cast(0); + o2::soa::Join> + legBCandidateAssocs = (o2::aod::dqanalysisflags::isBarrelSelected & + fConfigLegBFilterMask) > static_cast(0); o2::framework::Partition< - o2::soa::Join> - legCCandidateAssocs = (o2::aod::dqanalysisflags::isBarrelSelected & - fConfigLegCFilterMask) > static_cast(0); + o2::soa::Join> + legCCandidateAssocs = (o2::aod::dqanalysisflags::isBarrelSelected & + fConfigLegCFilterMask) > static_cast(0); // Map to track how many times a pair of tracks has been encountered std::map, int8_t> fPairCount; - void init(o2::framework::InitContext &context) { + void init(o2::framework::InitContext& context) + { if (context.mOptions.get("processDummy")) { return; } @@ -4861,16 +4909,16 @@ struct AnalysisAsymmetricPairing { std::unique_ptr objArray(cutNamesStr.Tokenize(",")); for (int icut = 0; icut < objArray->GetEntries(); ++icut) { fPairCuts.push_back( - o2::aod::dqcuts::GetCompositeCut(objArray->At(icut)->GetName())); + o2::aod::dqcuts::GetCompositeCut(objArray->At(icut)->GetName())); } } // Extra pair cuts via JSON TString addPairCutsStr = fConfigPairCutsJSON.value; if (addPairCutsStr != "") { - std::vector addPairCuts = - o2::aod::dqcuts::GetCutsFromJSON(addPairCutsStr.Data()); - for (auto const &t : addPairCuts) { - fPairCuts.push_back(dynamic_cast(t)); + std::vector addPairCuts = + o2::aod::dqcuts::GetCutsFromJSON(addPairCutsStr.Data()); + for (auto const& t : addPairCuts) { + fPairCuts.push_back(dynamic_cast(t)); cutNamesStr += Form(",%s", t->GetName()); } } @@ -4882,17 +4930,17 @@ struct AnalysisAsymmetricPairing { // Get the barrel track selection cuts std::string tempCuts; o2::common::core::getTaskOptionValue( - context, "analysis-track-selection", "cfgTrackCuts", tempCuts, false); + context, "analysis-track-selection", "cfgTrackCuts", tempCuts, false); TString tempCutsStr = tempCuts; // check also the cuts added via JSON and add them to the string of cuts o2::common::core::getTaskOptionValue( - context, "analysis-track-selection", "cfgBarrelTrackCutsJSON", tempCuts, - false); + context, "analysis-track-selection", "cfgBarrelTrackCutsJSON", tempCuts, + false); TString addTrackCutsStr = tempCuts; if (addTrackCutsStr != "") { - std::vector addTrackCuts = - o2::aod::dqcuts::GetCutsFromJSON(addTrackCutsStr.Data()); - for (auto const &t : addTrackCuts) { + std::vector addTrackCuts = + o2::aod::dqcuts::GetCutsFromJSON(addTrackCutsStr.Data()); + for (auto const& t : addTrackCuts) { tempCutsStr += Form(",%s", t->GetName()); } } @@ -4909,8 +4957,8 @@ struct AnalysisAsymmetricPairing { fCommonTrackCutMask |= static_cast(1) << objArray->IndexOf(objArrayCommon->At(icut)); fCommonTrackCutFilterMasks[icut] = - static_cast(1) - << objArray->IndexOf(objArrayCommon->At(icut)); + static_cast(1) + << objArray->IndexOf(objArrayCommon->At(icut)); fCommonCutNames.push_back(objArrayCommon->At(icut)->GetName()); } else { LOGF(fatal, @@ -5017,8 +5065,8 @@ struct AnalysisAsymmetricPairing { fConfigHistogramSubgroups.value.data()); if (fConfigAmbiguousHistograms.value) { DefineHistograms( - fHistMan, Form("TripletsBarrelSE_ambiguous_%s", legsStr.Data()), - fConfigHistogramSubgroups.value.data()); + fHistMan, Form("TripletsBarrelSE_ambiguous_%s", legsStr.Data()), + fConfigHistogramSubgroups.value.data()); } std::unique_ptr objArrayCommon(commonNamesStr.Tokenize(",")); @@ -5058,9 +5106,9 @@ struct AnalysisAsymmetricPairing { for (int iPrefix = 0; iPrefix < fNPairHistPrefixes; ++iPrefix) { DefineHistograms( - fHistMan, - Form("%s_%s", pairHistPrefixes[iPrefix].Data(), legsStr.Data()), - fConfigHistogramSubgroups.value.data()); + fHistMan, + Form("%s_%s", pairHistPrefixes[iPrefix].Data(), legsStr.Data()), + fConfigHistogramSubgroups.value.data()); } if (fConfigAmbiguousHistograms.value) { for (int iPrefix = 0; iPrefix < fNPairHistPrefixes; ++iPrefix) { @@ -5099,10 +5147,10 @@ struct AnalysisAsymmetricPairing { ++iPairCut) { // loop over pair cuts for (int iPrefix = 0; iPrefix < fNPairHistPrefixes; ++iPrefix) { DefineHistograms( - fHistMan, - Form("%s_%s_%s", pairHistPrefixes[iPrefix].Data(), - legsStr.Data(), objArrayPair->At(iPairCut)->GetName()), - fConfigHistogramSubgroups.value.data()); + fHistMan, + Form("%s_%s_%s", pairHistPrefixes[iPrefix].Data(), + legsStr.Data(), objArrayPair->At(iPairCut)->GetName()), + fConfigHistogramSubgroups.value.data()); } for (int iCommonCut = 0; iCommonCut < fNCommonTrackCuts; ++iCommonCut) { @@ -5142,10 +5190,11 @@ struct AnalysisAsymmetricPairing { } // Make sure only pairs or only triplets of leg cuts were given int tripletCheckSum = - std::count(isThreeProng.begin(), isThreeProng.end(), true); + std::count(isThreeProng.begin(), isThreeProng.end(), true); if (tripletCheckSum != 0 && tripletCheckSum != fNLegCuts) { - LOGF(fatal, "A mix of pairs and triplets was given as leg cuts. Check " - "your config!"); + LOGF(fatal, + "A mix of pairs and triplets was given as leg cuts. Check " + "your config!"); } fCurrentRun = 0; @@ -5155,21 +5204,22 @@ struct AnalysisAsymmetricPairing { fCCDB->setLocalObjectValidityChecking(); fLUT = o2::base::MatLayerCylSet::rectifyPtrFromFile( - fCCDB->get(fConfigLutPath)); + fCCDB->get(fConfigLutPath)); VarManager::SetupMatLUTFwdDCAFitter(fLUT); o2::aod::dqhistograms::AddHistogramsFromJSON( - fHistMan, - fConfigAddJSONHistograms.value.c_str()); // ad-hoc histograms via JSON + fHistMan, + fConfigAddJSONHistograms.value.c_str()); // ad-hoc histograms via JSON VarManager::SetUseVars( - fHistMan->GetUsedVars()); // provide the list of required variables so - // that VarManager knows what to fill + fHistMan->GetUsedVars()); // provide the list of required variables so + // that VarManager knows what to fill fOutputList.setObject(fHistMan->GetMainHistogramList()); } - void initParamsFromCCDB(uint64_t timestamp, bool isTriplets) { + void initParamsFromCCDB(uint64_t timestamp, bool isTriplets) + { auto grpmag = fCCDB->getForTimeStamp( - fConfigGRPMagPath, timestamp); + fConfigGRPMagPath, timestamp); float magField = 0.0; if (grpmag != nullptr) { magField = grpmag->getNominalL3Field(); @@ -5190,9 +5240,9 @@ struct AnalysisAsymmetricPairing { VarManager::SetupTwoProngKFParticle(magField); } else { VarManager::SetupTwoProngDCAFitter( - magField, true, 200.0f, 4.0f, 1.0e-3f, 0.9f, - fConfigUseAbsDCA - .value); // TODO: get these parameters from Configurables + magField, true, 200.0f, 4.0f, 1.0e-3f, 0.9f, + fConfigUseAbsDCA + .value); // TODO: get these parameters from Configurables } } } @@ -5202,10 +5252,11 @@ struct AnalysisAsymmetricPairing { template - void runAsymmetricPairing(TEvents const &events, - o2::framework::Preslice &preslice, - TTrackAssocs const & /*assocs*/, - TTracks const & /*tracks*/) { + void runAsymmetricPairing(TEvents const& events, + o2::framework::Preslice& preslice, + TTrackAssocs const& /*assocs*/, + TTracks const& /*tracks*/) + { fPairCount.clear(); if (events.size() > 0) { // Additional protection to avoid crashing of @@ -5221,7 +5272,7 @@ struct AnalysisAsymmetricPairing { // Reserve capacity for the output tables int64_t reserveSize = 0; - for (auto const &event : events) { + for (auto const& event : events) { if (!event.isEventSelected_bit(0)) { continue; } @@ -5230,9 +5281,9 @@ struct AnalysisAsymmetricPairing { continue; } auto groupedLegAAssocs = - legACandidateAssocs.sliceBy(preslice, event.globalIndex()); + legACandidateAssocs.sliceBy(preslice, event.globalIndex()); auto groupedLegBAssocs = - legBCandidateAssocs.sliceBy(preslice, event.globalIndex()); + legBCandidateAssocs.sliceBy(preslice, event.globalIndex()); reserveSize += static_cast(groupedLegAAssocs.size()) * static_cast(groupedLegBAssocs.size()); } @@ -5240,10 +5291,10 @@ struct AnalysisAsymmetricPairing { ditrackExtraList.reserve(reserveSize); constexpr bool trackHasCov = - ((TTrackFillMap & VarManager::ObjTypes::TrackCov) > 0 || - (TTrackFillMap & VarManager::ObjTypes::ReducedTrackBarrelCov) > 0); + ((TTrackFillMap & VarManager::ObjTypes::TrackCov) > 0 || + (TTrackFillMap & VarManager::ObjTypes::ReducedTrackBarrelCov) > 0); - for (auto const &event : events) { + for (auto const& event : events) { if (!event.isEventSelected_bit(0)) { continue; } @@ -5258,25 +5309,25 @@ struct AnalysisAsymmetricPairing { // Get the instantaneous IR from the CCDB if (fConfigFetchInteractionRate.value) { VarManager::fgValues[VarManager::kInteractionRate] = - rateFetcher.fetch(fCCDB.service, event.timestamp(), fCurrentRun, - fConfigIRSource.value, true) / - 1000.; // kHz + rateFetcher.fetch(fCCDB.service, event.timestamp(), fCurrentRun, + fConfigIRSource.value, true) / + 1000.; // kHz } auto groupedLegAAssocs = - legACandidateAssocs.sliceBy(preslice, event.globalIndex()); + legACandidateAssocs.sliceBy(preslice, event.globalIndex()); if (groupedLegAAssocs.size() == 0) { continue; } auto groupedLegBAssocs = - legBCandidateAssocs.sliceBy(preslice, event.globalIndex()); + legBCandidateAssocs.sliceBy(preslice, event.globalIndex()); if (groupedLegBAssocs.size() == 0) { continue; } - for (auto const &[a1, a2] : + for (auto const& [a1, a2] : combinations(o2::soa::CombinationsFullIndexPolicy( - groupedLegAAssocs, groupedLegBAssocs))) { + groupedLegAAssocs, groupedLegBAssocs))) { auto twoTrackFilter = static_cast(0); auto twoTrackCommonFilter = static_cast(0); @@ -5355,9 +5406,9 @@ struct AnalysisAsymmetricPairing { (twoTrackFilter & (static_cast(1) << 31)); if (sign1 * sign2 < 0) { fHistMan->FillHistClass( - Form("PairsBarrelSEPM_%s", fLegCutNames[icut].Data()), - dqtablereader_helpers::varValues()); // reconstructed, - // unmatched + Form("PairsBarrelSEPM_%s", fLegCutNames[icut].Data()), + dqtablereader_helpers::varValues()); // reconstructed, + // unmatched if (isAmbi && fConfigAmbiguousHistograms.value) { fHistMan->FillHistClass(Form("PairsBarrelSEPM_ambiguous_%s", fLegCutNames[icut].Data()), @@ -5371,8 +5422,8 @@ struct AnalysisAsymmetricPairing { } else if (fConfigSameSignHistograms.value) { if (sign1 > 0) { fHistMan->FillHistClass( - Form("PairsBarrelSEPP_%s", fLegCutNames[icut].Data()), - dqtablereader_helpers::varValues()); + Form("PairsBarrelSEPP_%s", fLegCutNames[icut].Data()), + dqtablereader_helpers::varValues()); if (isAmbi && fConfigAmbiguousHistograms.value) { fHistMan->FillHistClass(Form("PairsBarrelSEPP_ambiguous_%s", fLegCutNames[icut].Data()), @@ -5385,8 +5436,8 @@ struct AnalysisAsymmetricPairing { } } else { fHistMan->FillHistClass( - Form("PairsBarrelSEMM_%s", fLegCutNames[icut].Data()), - dqtablereader_helpers::varValues()); + Form("PairsBarrelSEMM_%s", fLegCutNames[icut].Data()), + dqtablereader_helpers::varValues()); if (isAmbi && fConfigAmbiguousHistograms.value) { fHistMan->FillHistClass(Form("PairsBarrelSEMM_ambiguous_%s", fLegCutNames[icut].Data()), @@ -5405,20 +5456,20 @@ struct AnalysisAsymmetricPairing { fCommonTrackCutFilterMasks[iCommonCut]) { if (sign1 * sign2 < 0) { fHistMan->FillHistClass( - Form("PairsBarrelSEPM_%s_%s", fLegCutNames[icut].Data(), - fCommonCutNames[iCommonCut].Data()), - dqtablereader_helpers::varValues()); + Form("PairsBarrelSEPM_%s_%s", fLegCutNames[icut].Data(), + fCommonCutNames[iCommonCut].Data()), + dqtablereader_helpers::varValues()); } else if (fConfigSameSignHistograms.value) { if (sign1 > 0) { fHistMan->FillHistClass( - Form("PairsBarrelSEPP_%s_%s", fLegCutNames[icut].Data(), - fCommonCutNames[iCommonCut].Data()), - dqtablereader_helpers::varValues()); + Form("PairsBarrelSEPP_%s_%s", fLegCutNames[icut].Data(), + fCommonCutNames[iCommonCut].Data()), + dqtablereader_helpers::varValues()); } else { fHistMan->FillHistClass( - Form("PairsBarrelSEMM_%s_%s", fLegCutNames[icut].Data(), - fCommonCutNames[iCommonCut].Data()), - dqtablereader_helpers::varValues()); + Form("PairsBarrelSEMM_%s_%s", fLegCutNames[icut].Data(), + fCommonCutNames[iCommonCut].Data()), + dqtablereader_helpers::varValues()); } } } @@ -5427,7 +5478,7 @@ struct AnalysisAsymmetricPairing { for (auto cut = fPairCuts.begin(); cut != fPairCuts.end(); cut++, iPairCut++) { if (!((*cut)->IsSelected( - dqtablereader_helpers::varValues()))) { // apply pair cuts + dqtablereader_helpers::varValues()))) { // apply pair cuts continue; } pairFilter |= (static_cast(1) << iPairCut); @@ -5457,26 +5508,26 @@ struct AnalysisAsymmetricPairing { fCommonTrackCutFilterMasks[iCommonCut]) { if (sign1 * sign2 < 0) { fHistMan->FillHistClass( - Form("PairsBarrelSEPM_%s_%s_%s", + Form("PairsBarrelSEPM_%s_%s_%s", + fLegCutNames[icut].Data(), + fCommonCutNames[iCommonCut].Data(), + fPairCutNames[iPairCut].Data()), + dqtablereader_helpers::varValues()); + } else if (fConfigSameSignHistograms.value) { + if (sign1 > 0) { + fHistMan->FillHistClass( + Form("PairsBarrelSEPP_%s_%s_%s", fLegCutNames[icut].Data(), fCommonCutNames[iCommonCut].Data(), fPairCutNames[iPairCut].Data()), dqtablereader_helpers::varValues()); - } else if (fConfigSameSignHistograms.value) { - if (sign1 > 0) { - fHistMan->FillHistClass( - Form("PairsBarrelSEPP_%s_%s_%s", - fLegCutNames[icut].Data(), - fCommonCutNames[iCommonCut].Data(), - fPairCutNames[iPairCut].Data()), - dqtablereader_helpers::varValues()); } else { fHistMan->FillHistClass( - Form("PairsBarrelSEMM_%s_%s_%s", - fLegCutNames[icut].Data(), - fCommonCutNames[iCommonCut].Data(), - fPairCutNames[iPairCut].Data()), - dqtablereader_helpers::varValues()); + Form("PairsBarrelSEMM_%s_%s_%s", + fLegCutNames[icut].Data(), + fCommonCutNames[iCommonCut].Data(), + fPairCutNames[iPairCut].Data()), + dqtablereader_helpers::varValues()); } } } @@ -5485,17 +5536,17 @@ struct AnalysisAsymmetricPairing { } } // end loop (cuts) ditrackList( - event.globalIndex(), VarManager::fgValues[VarManager::kMass], - VarManager::fgValues[VarManager::kPt], - VarManager::fgValues[VarManager::kEta], - VarManager::fgValues[VarManager::kPhi], t1.sign() + t2.sign(), - twoTrackFilter, pairFilter, twoTrackCommonFilter); + event.globalIndex(), VarManager::fgValues[VarManager::kMass], + VarManager::fgValues[VarManager::kPt], + VarManager::fgValues[VarManager::kEta], + VarManager::fgValues[VarManager::kPhi], t1.sign() + t2.sign(), + twoTrackFilter, pairFilter, twoTrackCommonFilter); if constexpr (trackHasCov && TTwoProngFitter) { ditrackExtraList( - t1.globalIndex(), t2.globalIndex(), - VarManager::fgValues[VarManager::kVertexingTauzProjected], - VarManager::fgValues[VarManager::kVertexingLzProjected], - VarManager::fgValues[VarManager::kVertexingLxyProjected]); + t1.globalIndex(), t2.globalIndex(), + VarManager::fgValues[VarManager::kVertexingTauzProjected], + VarManager::fgValues[VarManager::kVertexingLzProjected], + VarManager::fgValues[VarManager::kVertexingLxyProjected]); } } // end inner assoc loop (leg A) } // end event loop @@ -5505,10 +5556,11 @@ struct AnalysisAsymmetricPairing { template - void runThreeProng(TEvents const &events, - o2::framework::Preslice &preslice, - TTrackAssocs const & /*assocs*/, TTracks const &tracks, - VarManager::PairCandidateType tripletType) { + void runThreeProng(TEvents const& events, + o2::framework::Preslice& preslice, + TTrackAssocs const& /*assocs*/, TTracks const& tracks, + VarManager::PairCandidateType tripletType) + { if (events.size() > 0) { // Additional protection to avoid crashing of // events.begin().runNumber() if (fCurrentRun != events.begin().runNumber()) { @@ -5517,7 +5569,7 @@ struct AnalysisAsymmetricPairing { } } - for (auto const &event : events) { + for (auto const& event : events) { if (!event.isEventSelected_bit(0)) { continue; } @@ -5531,35 +5583,35 @@ struct AnalysisAsymmetricPairing { dqtablereader_helpers::varValues()); auto groupedLegAAssocs = - legACandidateAssocs.sliceBy(preslice, event.globalIndex()); + legACandidateAssocs.sliceBy(preslice, event.globalIndex()); if (groupedLegAAssocs.size() == 0) { continue; } auto groupedLegBAssocs = - legBCandidateAssocs.sliceBy(preslice, event.globalIndex()); + legBCandidateAssocs.sliceBy(preslice, event.globalIndex()); if (groupedLegBAssocs.size() == 0) { continue; } auto groupedLegCAssocs = - legCCandidateAssocs.sliceBy(preslice, event.globalIndex()); + legCCandidateAssocs.sliceBy(preslice, event.globalIndex()); if (groupedLegCAssocs.size() == 0) { continue; } // Based on triplet type, make suitable combinations of the partitions if (tripletType == VarManager::kTripleCandidateToPKPi) { - for (auto const &[a1, a2, a3] : + for (auto const& [a1, a2, a3] : combinations(o2::soa::CombinationsFullIndexPolicy( - groupedLegAAssocs, groupedLegBAssocs, groupedLegCAssocs))) { + groupedLegAAssocs, groupedLegBAssocs, groupedLegCAssocs))) { readTriplet( - a1, a2, a3, tracks, event, tripletType); + a1, a2, a3, tracks, event, tripletType); } } else if (tripletType == VarManager::kTripleCandidateToKPiPi) { - for (auto const &a1 : groupedLegAAssocs) { - for (auto const &[a2, a3] : + for (auto const& a1 : groupedLegAAssocs) { + for (auto const& [a2, a3] : combinations(groupedLegBAssocs, groupedLegCAssocs)) { readTriplet( - a1, a2, a3, tracks, event, tripletType); + a1, a2, a3, tracks, event, tripletType); } } } else { @@ -5573,10 +5625,11 @@ struct AnalysisAsymmetricPairing { template - void readTriplet(TTrackAssoc const &a1, TTrackAssoc const &a2, - TTrackAssoc const &a3, TTracks const & /*tracks*/, - TEvent const &event, - VarManager::PairCandidateType tripletType) { + void readTriplet(TTrackAssoc const& a1, TTrackAssoc const& a2, + TTrackAssoc const& a3, TTracks const& /*tracks*/, + TEvent const& event, + VarManager::PairCandidateType tripletType) + { auto threeTrackFilter = static_cast(0); auto threeTrackCommonFilter = static_cast(0); for (int icut = 0; icut < fNLegCuts; ++icut) { @@ -5662,22 +5715,22 @@ struct AnalysisAsymmetricPairing { tripletType); if constexpr (TThreeProngFitter) { VarManager::FillTripletVertexing( - event, t1, t2, t3, tripletType); + event, t1, t2, t3, tripletType); } // Fill histograms for (int icut = 0; icut < fNLegCuts; icut++) { if (threeTrackFilter & (static_cast(1) << icut)) { fHistMan->FillHistClass( - Form("TripletsBarrelSE_%s", fLegCutNames[icut].Data()), - dqtablereader_helpers::varValues()); + Form("TripletsBarrelSE_%s", fLegCutNames[icut].Data()), + dqtablereader_helpers::varValues()); if (fConfigAmbiguousHistograms.value && ((threeTrackFilter & (static_cast(1) << 29)) || (threeTrackFilter & (static_cast(1) << 30)) || (threeTrackFilter & (static_cast(1) << 31)))) { fHistMan->FillHistClass( - Form("TripletsBarrelSE_ambiguous_%s", fLegCutNames[icut].Data()), - dqtablereader_helpers::varValues()); + Form("TripletsBarrelSE_ambiguous_%s", fLegCutNames[icut].Data()), + dqtablereader_helpers::varValues()); } for (int iCommonCut = 0; iCommonCut < fNCommonTrackCuts; iCommonCut++) { if (threeTrackCommonFilter & fCommonTrackCutFilterMasks[iCommonCut]) { @@ -5691,7 +5744,7 @@ struct AnalysisAsymmetricPairing { for (auto cut = fPairCuts.begin(); cut != fPairCuts.end(); cut++, iPairCut++) { if (!((*cut)->IsSelected( - dqtablereader_helpers::varValues()))) { // apply pair cuts + dqtablereader_helpers::varValues()))) { // apply pair cuts continue; } // Histograms with pair cuts @@ -5717,20 +5770,20 @@ struct AnalysisAsymmetricPairing { } void processKaonPionSkimmed( - MyEventsVtxCovZdcFitSelected const &events, - o2::soa::Join const - &barrelAssocs, - MyBarrelTracksWithCovWithAmbiguities const &barrelTracks) { + MyEventsVtxCovZdcFitSelected const& events, + o2::soa::Join const& barrelAssocs, + MyBarrelTracksWithCovWithAmbiguities const& barrelTracks) + { runAsymmetricPairing( - events, trackAssocsPerCollision, barrelAssocs, barrelTracks); + events, trackAssocsPerCollision, barrelAssocs, barrelTracks); } void processKaonPionSkimmedMultExtra( - MyEventsVtxCovZdcFitSelectedMultExtra const &events, - o2::soa::Join const - &barrelAssocs, - MyBarrelTracksWithCovWithAmbiguities const &barrelTracks) { + MyEventsVtxCovZdcFitSelectedMultExtra const& events, + o2::soa::Join const& barrelAssocs, + MyBarrelTracksWithCovWithAmbiguities const& barrelTracks) + { runAsymmetricPairing(events, trackAssocsPerCollision, @@ -5738,20 +5791,20 @@ struct AnalysisAsymmetricPairing { } void processKaonPionPionSkimmed( - MyEventsVtxCovZdcFitSelected const &events, - o2::soa::Join const - &barrelAssocs, - MyBarrelTracksWithCovWithAmbiguities const &barrelTracks) { + MyEventsVtxCovZdcFitSelected const& events, + o2::soa::Join const& barrelAssocs, + MyBarrelTracksWithCovWithAmbiguities const& barrelTracks) + { runThreeProng( - events, trackAssocsPerCollision, barrelAssocs, barrelTracks, - VarManager::kTripleCandidateToKPiPi); + events, trackAssocsPerCollision, barrelAssocs, barrelTracks, + VarManager::kTripleCandidateToKPiPi); } void processKaonPionPionSkimmedMultExtra( - MyEventsVtxCovZdcFitSelectedMultExtra const &events, - o2::soa::Join const - &barrelAssocs, - MyBarrelTracksWithCovWithAmbiguities const &barrelTracks) { + MyEventsVtxCovZdcFitSelectedMultExtra const& events, + o2::soa::Join const& barrelAssocs, + MyBarrelTracksWithCovWithAmbiguities const& barrelTracks) + { runThreeProng(events, trackAssocsPerCollision, barrelAssocs, barrelTracks, @@ -5759,16 +5812,17 @@ struct AnalysisAsymmetricPairing { } void processProtonKaonPionSkimmed( - MyEventsVtxCovZdcFitSelected const &events, - o2::soa::Join const - &barrelAssocs, - MyBarrelTracksWithCovWithAmbiguities const &barrelTracks) { + MyEventsVtxCovZdcFitSelected const& events, + o2::soa::Join const& barrelAssocs, + MyBarrelTracksWithCovWithAmbiguities const& barrelTracks) + { runThreeProng( - events, trackAssocsPerCollision, barrelAssocs, barrelTracks, - VarManager::kTripleCandidateToPKPi); + events, trackAssocsPerCollision, barrelAssocs, barrelTracks, + VarManager::kTripleCandidateToPKPi); } - void processDummy(MyEventsBasic const &) { + void processDummy(MyEventsBasic const&) + { // do nothing } @@ -5783,8 +5837,8 @@ struct AnalysisAsymmetricPairing { PROCESS_SWITCH(AnalysisAsymmetricPairing, processProtonKaonPionSkimmed, "Run proton kaon pion triplets, with skimmed tracks", false); PROCESS_SWITCH( - AnalysisAsymmetricPairing, processDummy, - "Dummy function, enabled only if none of the others are enabled", true); + AnalysisAsymmetricPairing, processDummy, + "Dummy function, enabled only if none of the others are enabled", true); }; // Combines dileptons with barrel or muon tracks for either resonance or @@ -5798,82 +5852,82 @@ struct AnalysisDileptonTrack { o2::framework::OutputObj fOutputList{"output"}; o2::framework::Configurable fConfigTrackCuts{ - "cfgTrackCuts", "kaonPID", - "Comma separated list of cuts for the track to be correlated with the " - "dileptons"}; + "cfgTrackCuts", "kaonPID", + "Comma separated list of cuts for the track to be correlated with the " + "dileptons"}; o2::framework::Configurable fConfigDileptonLowMass{ - "cfgDileptonLowMass", 2.8, - "Low mass cut for the dileptons used in analysis"}; + "cfgDileptonLowMass", 2.8, + "Low mass cut for the dileptons used in analysis"}; o2::framework::Configurable fConfigDileptonHighMass{ - "cfgDileptonHighMass", 3.2, - "High mass cut for the dileptons used in analysis"}; + "cfgDileptonHighMass", 3.2, + "High mass cut for the dileptons used in analysis"}; o2::framework::Configurable fConfigDileptonLowpTCut{ - "cfgDileptonLowpTCut", 0.0, - "Low pT cut for dileptons used in the triplet vertexing"}; + "cfgDileptonLowpTCut", 0.0, + "Low pT cut for dileptons used in the triplet vertexing"}; o2::framework::Configurable fConfigDileptonHighpTCut{ - "cfgDileptonHighpTCut", 1E5, - "High pT cut for dileptons used in the triplet vertexing"}; + "cfgDileptonHighpTCut", 1E5, + "High pT cut for dileptons used in the triplet vertexing"}; o2::framework::Configurable fConfigDileptonRapCutAbs{ - "cfgDileptonRapCutAbs", 1.0, - "Rap cut for dileptons used in the triplet vertexing"}; + "cfgDileptonRapCutAbs", 1.0, + "Rap cut for dileptons used in the triplet vertexing"}; o2::framework::Configurable fConfigDileptonLxyCut{ - "cfgDileptonLxyCut", 0.0, - "Lxy cut for dileptons used in the triplet vertexing"}; + "cfgDileptonLxyCut", 0.0, + "Lxy cut for dileptons used in the triplet vertexing"}; o2::framework::Configurable fConfigDileptonTauxyCut{ - "cfgDileptonTauxyCut", -10000, - "Tauxy cut for dileptons used to select the non-prompt Jpsi"}; + "cfgDileptonTauxyCut", -10000, + "Tauxy cut for dileptons used to select the non-prompt Jpsi"}; o2::framework::Configurable fConfigUseKFVertexing{ - "cfgUseKFVertexing", false, - "Use KF Particle for secondary vertex reconstruction (DCAFitter is used " - "by default)"}; + "cfgUseKFVertexing", false, + "Use KF Particle for secondary vertex reconstruction (DCAFitter is used " + "by default)"}; o2::framework::Configurable fConfigHistogramSubgroups{ - "cfgDileptonTrackHistogramsSubgroups", "invmass,vertexing", - "Comma separated list of dilepton-track histogram subgroups"}; + "cfgDileptonTrackHistogramsSubgroups", "invmass,vertexing", + "Comma separated list of dilepton-track histogram subgroups"}; o2::framework::Configurable fConfigAddJSONHistograms{ - "cfgAddJSONHistograms", "", "Histograms in JSON format"}; + "cfgAddJSONHistograms", "", "Histograms in JSON format"}; o2::framework::Configurable fConfigMixingDepth{ - "cfgMixingDepth", 5, "Event mixing pool depth"}; + "cfgMixingDepth", 5, "Event mixing pool depth"}; o2::framework::Configurable fConfigGRPmagPath{ - "cfgGrpmagPath", "GLO/Config/GRPMagField", - "CCDB path of the GRPMagField object"}; + "cfgGrpmagPath", "GLO/Config/GRPMagField", + "CCDB path of the GRPMagField object"}; o2::framework::Configurable fConfigCcdbUrl{ - "ccdb-url", "http://alice-ccdb.cern.ch", "url of the ccdb repository"}; + "ccdb-url", "http://alice-ccdb.cern.ch", "url of the ccdb repository"}; o2::framework::Configurable fConfigNoLaterThan{ - "ccdb-no-later-than", - std::chrono::duration_cast( - std::chrono::system_clock::now().time_since_epoch()) - .count(), - "latest acceptable timestamp of creation for the object"}; + "ccdb-no-later-than", + std::chrono::duration_cast( + std::chrono::system_clock::now().time_since_epoch()) + .count(), + "latest acceptable timestamp of creation for the object"}; o2::framework::Configurable fConfigGeoPath{ - "geoPath", "GLO/Config/GeometryAligned", "Path of the geometry file"}; + "geoPath", "GLO/Config/GeometryAligned", "Path of the geometry file"}; o2::framework::Configurable fConfigUseRapcut{ - "cfgUseMCRapcut", false, - "Use Rap cut for dileptons used in the triplet vertexing"}; + "cfgUseMCRapcut", false, + "Use Rap cut for dileptons used in the triplet vertexing"}; o2::framework::Configurable fConfigEnergycorrelator{ - "cfgEnergycorrelator", false, - "Add some hist for energy correlator study"}; + "cfgEnergycorrelator", false, + "Add some hist for energy correlator study"}; o2::framework::Configurable fConfigApplyMassEC{ - "cfgApplyMassEC", false, - "Apply fit mass for sideband for the energy correlator study"}; + "cfgApplyMassEC", false, + "Apply fit mass for sideband for the energy correlator study"}; o2::framework::Configurable> fConfigFitmassEC{ - "cfgTFitmassEC", std::vector{-0.541438, 2.8, 3.2}, - "parameter from the fit fuction and fit range"}; + "cfgTFitmassEC", std::vector{-0.541438, 2.8, 3.2}, + "parameter from the fit fuction and fit range"}; o2::framework::Configurable> fConfigTransRange{ - "cfgTransRange", std::vector{0.333333, 0.666667}, - "Transverse region for the energy correlstor analysis"}; + "cfgTransRange", std::vector{0.333333, 0.666667}, + "Transverse region for the energy correlstor analysis"}; o2::framework::Configurable fConfigApplyEfficiency{ - "cfgApplyEfficiency", false, - "If true, apply efficiency correction for the energy correlator study"}; + "cfgApplyEfficiency", false, + "If true, apply efficiency correction for the energy correlator study"}; o2::framework::Configurable fConfigApplyEfficiencyME{ - "cfgApplyEfficiencyME", false, - "If true, apply efficiency correction for the energy correlator study"}; + "cfgApplyEfficiencyME", false, + "If true, apply efficiency correction for the energy correlator study"}; o2::framework::Configurable fConfigAccCCDBPath{ - "AccCCDBPath", "Users/y/yalin/pptest/test2", - "Path of the efficiency corrections"}; + "AccCCDBPath", "Users/y/yalin/pptest/test2", + "Path of the efficiency corrections"}; int fCurrentRun = -1; // needed to detect if the run changed and trigger // update of calibrations etc. @@ -5898,44 +5952,42 @@ struct AnalysisDileptonTrack { // TODO: The filter expressions seem to always use the default value of // configurables, not the values from the actual configuration file o2::framework::expressions::Filter - eventFilter = o2::aod::dqanalysisflags::isEventSelected > - static_cast(0); + eventFilter = o2::aod::dqanalysisflags::isEventSelected > + static_cast(0); o2::framework::expressions::Filter dileptonFilter = - o2::aod::reducedpair::pt > - fConfigDileptonLowpTCut &&o2::aod::reducedpair::pt< - fConfigDileptonHighpTCut && - o2::aod::reducedpair::mass> fConfigDileptonLowMass - &&o2::aod::reducedpair::mass< - fConfigDileptonHighMass && o2::aod::reducedpair::sign == 0 && - o2::aod::reducedpair::lxy> fConfigDileptonLxyCut - &&o2::aod::reducedpair::tauxy > fConfigDileptonTauxyCut; - o2::framework::expressions::Filter - filterBarrel = o2::aod::dqanalysisflags::isBarrelSelected > - static_cast(0); + o2::aod::reducedpair::pt > + fConfigDileptonLowpTCut&& o2::aod::reducedpair::pt< + fConfigDileptonHighpTCut && + o2::aod::reducedpair::mass> fConfigDileptonLowMass&& o2::aod::reducedpair::mass fConfigDileptonLxyCut&& o2::aod::reducedpair::tauxy > fConfigDileptonTauxyCut; o2::framework::expressions::Filter - filterMuon = o2::aod::dqanalysisflags::isMuonSelected > + filterBarrel = o2::aod::dqanalysisflags::isBarrelSelected > static_cast(0); + o2::framework::expressions::Filter + filterMuon = o2::aod::dqanalysisflags::isMuonSelected > + static_cast(0); constexpr static uint32_t fgDileptonFillMap = - VarManager::ObjTypes::ReducedTrack | - VarManager::ObjTypes::Pair; // fill map + VarManager::ObjTypes::ReducedTrack | + VarManager::ObjTypes::Pair; // fill map // use two values array to avoid mixing up the quantities - float *fValuesDilepton = nullptr; - float *fValuesHadron = nullptr; - HistogramManager *fHistMan = nullptr; + float* fValuesDilepton = nullptr; + float* fValuesHadron = nullptr; + HistogramManager* fHistMan = nullptr; o2::framework::NoBinningPolicy fHashBin; - TF1 *fMassBkg = nullptr; + TF1* fMassBkg = nullptr; - TH2F *hAcceptance_rec = nullptr; - TH2F *hAcceptance_gen = nullptr; - TH2F *hEfficiency_dilepton = nullptr; - TH2F *hEfficiency_hadron = nullptr; - TH1F *hMasswindow = nullptr; + TH2F* hAcceptance_rec = nullptr; + TH2F* hAcceptance_gen = nullptr; + TH2F* hEfficiency_dilepton = nullptr; + TH2F* hEfficiency_hadron = nullptr; + TH1F* hMasswindow = nullptr; - void init(o2::framework::InitContext &context) { + void init(o2::framework::InitContext& context) + { bool isBarrel = context.mOptions.get("processBarrelSkimmed"); bool isBarrelME = context.mOptions.get("processBarrelMixedEvent"); bool isBarrelAsymmetric = context.mOptions.get("processDstarToD0Pi"); @@ -5972,65 +6024,65 @@ struct AnalysisDileptonTrack { std::string cfgTrackSelection_TrackCuts; if (isBarrel || isBarrelAsymmetric) { o2::common::core::getTaskOptionValue( - context, "analysis-track-selection", "cfgTrackCuts", - cfgTrackSelection_TrackCuts, false); + context, "analysis-track-selection", "cfgTrackCuts", + cfgTrackSelection_TrackCuts, false); } else { o2::common::core::getTaskOptionValue( - context, "analysis-muon-selection", "cfgMuonCuts", - cfgTrackSelection_TrackCuts, false); + context, "analysis-muon-selection", "cfgMuonCuts", + cfgTrackSelection_TrackCuts, false); } - TObjArray *cfgTrackSelection_objArrayTrackCuts = nullptr; + TObjArray* cfgTrackSelection_objArrayTrackCuts = nullptr; if (!cfgTrackSelection_TrackCuts.empty()) { cfgTrackSelection_objArrayTrackCuts = - TString(cfgTrackSelection_TrackCuts).Tokenize(","); + TString(cfgTrackSelection_TrackCuts).Tokenize(","); } // get also the list of cuts specified via the JSON parameters if (isBarrel || isBarrelAsymmetric) { o2::common::core::getTaskOptionValue( - context, "analysis-track-selection", "cfgBarrelTrackCutsJSON", - cfgTrackSelection_TrackCuts, false); + context, "analysis-track-selection", "cfgBarrelTrackCutsJSON", + cfgTrackSelection_TrackCuts, false); } else { o2::common::core::getTaskOptionValue( - context, "analysis-muon-selection", "cfgMuonCutsJSON", - cfgTrackSelection_TrackCuts, false); + context, "analysis-muon-selection", "cfgMuonCutsJSON", + cfgTrackSelection_TrackCuts, false); } if (!cfgTrackSelection_TrackCuts.empty()) { if (cfgTrackSelection_objArrayTrackCuts == nullptr) { cfgTrackSelection_objArrayTrackCuts = new TObjArray(); } - std::vector addTrackCuts = - o2::aod::dqcuts::GetCutsFromJSON( - cfgTrackSelection_TrackCuts.data()); - for (auto const &t : addTrackCuts) { + std::vector addTrackCuts = + o2::aod::dqcuts::GetCutsFromJSON( + cfgTrackSelection_TrackCuts.data()); + for (auto const& t : addTrackCuts) { auto tempObjStr = new TObjString(t->GetName()); cfgTrackSelection_objArrayTrackCuts->Add(tempObjStr); } } if (cfgTrackSelection_objArrayTrackCuts->GetEntries() == 0) { LOG(fatal) - << " No track cuts found in the barrel or muon upstream tasks"; + << " No track cuts found in the barrel or muon upstream tasks"; } // store all the computed track cut names in a vector for (int icut = 0; icut < cfgTrackSelection_objArrayTrackCuts->GetEntries(); icut++) { fTrackCutNames.push_back( - cfgTrackSelection_objArrayTrackCuts->At(icut)->GetName()); + cfgTrackSelection_objArrayTrackCuts->At(icut)->GetName()); } // get the list of associated track cuts to be combined with the dileptons // and // check that these were computed upstream and create a bit mask - TObjArray *cfgDileptonTrack_objArrayTrackCuts = nullptr; + TObjArray* cfgDileptonTrack_objArrayTrackCuts = nullptr; if (!fConfigTrackCuts.value.empty()) { cfgDileptonTrack_objArrayTrackCuts = - TString(fConfigTrackCuts.value).Tokenize(","); + TString(fConfigTrackCuts.value).Tokenize(","); } else { LOG(fatal) << " No track cuts specified! Check it out!"; } for (int icut = 0; icut < cfgDileptonTrack_objArrayTrackCuts->GetEntries(); icut++) { if (!cfgTrackSelection_objArrayTrackCuts->FindObject( - cfgDileptonTrack_objArrayTrackCuts->At(icut)->GetName())) { + cfgDileptonTrack_objArrayTrackCuts->At(icut)->GetName())) { LOG(fatal) << "Specified track cut (" << cfgDileptonTrack_objArrayTrackCuts->At(icut)->GetName() << ") not found in the list of computed cuts by the " @@ -6040,7 +6092,7 @@ struct AnalysisDileptonTrack { for (int icut = 0; icut < cfgTrackSelection_objArrayTrackCuts->GetEntries(); icut++) { if (cfgDileptonTrack_objArrayTrackCuts->FindObject( - cfgTrackSelection_objArrayTrackCuts->At(icut)->GetName())) { + cfgTrackSelection_objArrayTrackCuts->At(icut)->GetName())) { fTrackCutBitMap |= (static_cast(1) << icut); } } @@ -6059,28 +6111,28 @@ struct AnalysisDileptonTrack { std::string cfgPairing_CommonTrackCuts; if (isBarrel) { o2::common::core::getTaskOptionValue( - context, "analysis-same-event-pairing", "cfgTrackCuts", - cfgPairing_TrackCuts, false); + context, "analysis-same-event-pairing", "cfgTrackCuts", + cfgPairing_TrackCuts, false); o2::common::core::getTaskOptionValue( - context, "analysis-same-event-pairing", "cfgPairCuts", - cfgPairing_PairCuts, false); + context, "analysis-same-event-pairing", "cfgPairCuts", + cfgPairing_PairCuts, false); } else if (isMuon) { o2::common::core::getTaskOptionValue( - context, "analysis-same-event-pairing", "cfgMuonCuts", - cfgPairing_TrackCuts, false); + context, "analysis-same-event-pairing", "cfgMuonCuts", + cfgPairing_TrackCuts, false); o2::common::core::getTaskOptionValue( - context, "analysis-same-event-pairing", "cfgPairCuts", - cfgPairing_PairCuts, false); + context, "analysis-same-event-pairing", "cfgPairCuts", + cfgPairing_PairCuts, false); } else if (isBarrelAsymmetric) { o2::common::core::getTaskOptionValue( - context, "analysis-asymmetric-pairing", "cfgLegCuts", - cfgPairing_TrackCuts, false); + context, "analysis-asymmetric-pairing", "cfgLegCuts", + cfgPairing_TrackCuts, false); o2::common::core::getTaskOptionValue( - context, "analysis-asymmetric-pairing", "cfgPairCuts", - cfgPairing_PairCuts, false); + context, "analysis-asymmetric-pairing", "cfgPairCuts", + cfgPairing_PairCuts, false); o2::common::core::getTaskOptionValue( - context, "analysis-asymmetric-pairing", "cfgCommonTrackCuts", - cfgPairing_CommonTrackCuts, false); + context, "analysis-asymmetric-pairing", "cfgCommonTrackCuts", + cfgPairing_CommonTrackCuts, false); } if (cfgPairing_TrackCuts.empty()) { LOG(fatal) << "There are no dilepton cuts specified in the upstream in " @@ -6091,18 +6143,18 @@ struct AnalysisDileptonTrack { TString cfgPairing_strCommonTrackCuts = cfgPairing_CommonTrackCuts; if (!cfgPairing_strCommonTrackCuts.IsNull()) { // if common track cuts std::unique_ptr objArrayCommon( - cfgPairing_strCommonTrackCuts.Tokenize(",")); + cfgPairing_strCommonTrackCuts.Tokenize(",")); fNCommonTrackCuts = objArrayCommon->GetEntries(); for (int icut = 0; icut < fNCommonTrackCuts; ++icut) { for (int iicut = 0; iicut < cfgTrackSelection_objArrayTrackCuts->GetEntries(); iicut++) { if (std::strcmp( - cfgTrackSelection_objArrayTrackCuts->At(iicut)->GetName(), - objArrayCommon->At(icut)->GetName()) == 0) { + cfgTrackSelection_objArrayTrackCuts->At(iicut)->GetName(), + objArrayCommon->At(icut)->GetName()) == 0) { fCommonTrackCutMap[icut] = iicut; fCommonPairCutNames.push_back( - objArrayCommon->At(icut)->GetName()); + objArrayCommon->At(icut)->GetName()); } } } @@ -6110,20 +6162,20 @@ struct AnalysisDileptonTrack { // Get also the pair cuts specified via the JSON parameters if (isBarrelAsymmetric) { o2::common::core::getTaskOptionValue( - context, "analysis-asymmetric-pairing", "cfgPairCutsJSON", - cfgPairing_PairCutsJSON, false); + context, "analysis-asymmetric-pairing", "cfgPairCutsJSON", + cfgPairing_PairCutsJSON, false); TString addPairCutsStr = cfgPairing_PairCutsJSON; if (addPairCutsStr != "") { - std::vector addPairCuts = - o2::aod::dqcuts::GetCutsFromJSON(addPairCutsStr.Data()); - for (auto const &t : addPairCuts) { + std::vector addPairCuts = + o2::aod::dqcuts::GetCutsFromJSON(addPairCutsStr.Data()); + for (auto const& t : addPairCuts) { cfgPairing_PairCuts += Form(",%s", t->GetName()); } } } std::unique_ptr objArrayPairCuts( - TString(cfgPairing_PairCuts).Tokenize(",")); + TString(cfgPairing_PairCuts).Tokenize(",")); fNPairCuts = objArrayPairCuts->GetEntries(); for (int j = 0; j < fNPairCuts; j++) { fPairCutNames.push_back(objArrayPairCuts->At(j)->GetName()); @@ -6131,7 +6183,7 @@ struct AnalysisDileptonTrack { // array of single lepton cuts specified in the same-analysis-pairing task std::unique_ptr cfgPairing_objArrayTrackCuts( - TString(cfgPairing_TrackCuts).Tokenize(",")); + TString(cfgPairing_TrackCuts).Tokenize(",")); // If asymmetric pairs are used, the number of cuts should come from the // asymmetric-pairing task if (isBarrelAsymmetric) { @@ -6148,15 +6200,15 @@ struct AnalysisDileptonTrack { // dileptons if (!isBarrelAsymmetric) { if (!cfgPairing_objArrayTrackCuts->FindObject( - fTrackCutNames[icut].Data())) { + fTrackCutNames[icut].Data())) { continue; } pairLegCutName = fTrackCutNames[icut].Data(); } else { // For asymmetric pairs we access the leg cuts instead pairLegCutName = - dynamic_cast(cfgPairing_objArrayTrackCuts->At(icut)) - ->GetString(); + dynamic_cast(cfgPairing_objArrayTrackCuts->At(icut)) + ->GetString(); } fLegCutNames.push_back(pairLegCutName); @@ -6182,7 +6234,7 @@ struct AnalysisDileptonTrack { if (!cfgPairing_strCommonTrackCuts.IsNull()) { std::unique_ptr objArrayCommon( - cfgPairing_strCommonTrackCuts.Tokenize(",")); + cfgPairing_strCommonTrackCuts.Tokenize(",")); for (int iCommonCut = 0; iCommonCut < fNCommonTrackCuts; ++iCommonCut) { DefineHistograms(fHistMan, @@ -6216,7 +6268,7 @@ struct AnalysisDileptonTrack { if (!cfgPairing_strCommonTrackCuts.IsNull()) { std::unique_ptr objArrayCommon( - cfgPairing_strCommonTrackCuts.Tokenize(",")); + cfgPairing_strCommonTrackCuts.Tokenize(",")); for (int iCommonCut = 0; iCommonCut < fNCommonTrackCuts; ++iCommonCut) { DefineHistograms(fHistMan, @@ -6239,10 +6291,10 @@ struct AnalysisDileptonTrack { if (isBarrelME || isMuonME) { DefineHistograms( - fHistMan, - Form("DileptonTrackME_%s_%s", pairLegCutName.Data(), - fTrackCutNames[iCutTrack].Data()), - "dilepton-hadron-array-correlation"); // define ME histograms + fHistMan, + Form("DileptonTrackME_%s_%s", pairLegCutName.Data(), + fTrackCutNames[iCutTrack].Data()), + "dilepton-hadron-array-correlation"); // define ME histograms if (fConfigEnergycorrelator) { DefineHistograms(fHistMan, Form("DileptonTrackECME_%s_%s", @@ -6256,8 +6308,8 @@ struct AnalysisDileptonTrack { } o2::aod::dqhistograms::AddHistogramsFromJSON( - fHistMan, - fConfigAddJSONHistograms.value.c_str()); // ad-hoc histograms via JSON + fHistMan, + fConfigAddJSONHistograms.value.c_str()); // ad-hoc histograms via JSON VarManager::SetUseVars(fHistMan->GetUsedVars()); fOutputList.setObject(fHistMan->GetMainHistogramList()); @@ -6274,15 +6326,16 @@ struct AnalysisDileptonTrack { // the background mass distribution in signal region std::vector fMassBkgpar = fConfigFitmassEC; fMassBkg = - new TF1("fMassBkg", " exp([0]*x)", fMassBkgpar[1], fMassBkgpar[2]); + new TF1("fMassBkg", " exp([0]*x)", fMassBkgpar[1], fMassBkgpar[2]); fMassBkg->SetParameters(fMassBkgpar[0]); fMassBkg->SetNpx(1000); } // init parameters from CCDB - void initParamsFromCCDB(uint64_t timestamp) { + void initParamsFromCCDB(uint64_t timestamp) + { auto grpmag = fCCDB->getForTimeStamp( - fConfigGRPmagPath.value, timestamp); + fConfigGRPmagPath.value, timestamp); float magField = 0.0; if (grpmag != nullptr) { magField = grpmag->getNominalL3Field(); @@ -6294,26 +6347,27 @@ struct AnalysisDileptonTrack { VarManager::SetupThreeProngKFParticle(magField); } else { VarManager::SetupThreeProngDCAFitter( - magField, true, 200.0f, 4.0f, 1.0e-3f, 0.9f, - false); // TODO: get these parameters from Configurables + magField, true, 200.0f, 4.0f, 1.0e-3f, 0.9f, + false); // TODO: get these parameters from Configurables } } - void initAccFromCCDB(uint64_t timestamp) { + void initAccFromCCDB(uint64_t timestamp) + { auto listAccs = - fCCDB->getForTimeStamp(fConfigAccCCDBPath, timestamp); + fCCDB->getForTimeStamp(fConfigAccCCDBPath, timestamp); if (!listAccs) { LOG(fatal) << "Problem getting TList object with efficiencies!"; } hEfficiency_dilepton = - dynamic_cast(listAccs->FindObject("hEfficiency_dilepton")); + dynamic_cast(listAccs->FindObject("hEfficiency_dilepton")); hEfficiency_hadron = - dynamic_cast(listAccs->FindObject("hEfficiency_hadron")); + dynamic_cast(listAccs->FindObject("hEfficiency_hadron")); hAcceptance_rec = - dynamic_cast(listAccs->FindObject("hAcceptance_rec")); + dynamic_cast(listAccs->FindObject("hAcceptance_rec")); hAcceptance_gen = - dynamic_cast(listAccs->FindObject("hAcceptance_gen")); - hMasswindow = dynamic_cast(listAccs->FindObject("hMasswindow")); + dynamic_cast(listAccs->FindObject("hAcceptance_gen")); + hMasswindow = dynamic_cast(listAccs->FindObject("hMasswindow")); if (!hAcceptance_rec || !hAcceptance_gen || !hEfficiency_dilepton || !hEfficiency_hadron || !hMasswindow) { LOG(fatal) << "Problem getting histograms from the TList object with " @@ -6321,7 +6375,8 @@ struct AnalysisDileptonTrack { } } - float GetSafeInterpolationWeight(TH2 *hEff, float x, float y) { + float GetSafeInterpolationWeight(TH2* hEff, float x, float y) + { if (!hEff) { return 1.0; } @@ -6341,14 +6396,15 @@ struct AnalysisDileptonTrack { template - void runDileptonHadron(TEvent const &event, TTrackAssocs const &assocs, - TTracks const &tracks, TDileptons const &dileptons) { + void runDileptonHadron(TEvent const& event, TTrackAssocs const& assocs, + TTracks const& tracks, TDileptons const& dileptons) + { VarManager::ResetValues(0, VarManager::kNVars, fValuesHadron); VarManager::ResetValues(0, VarManager::kNVars, fValuesDilepton); VarManager::FillEvent(event, fValuesHadron); VarManager::FillEvent(event, fValuesDilepton); - for (auto const &dilepton : dileptons) { + for (auto const& dilepton : dileptons) { // get full track info of tracks based on the index auto lepton1 = tracks.rawIteratorAt(dilepton.index0Id()); auto lepton2 = tracks.rawIteratorAt(dilepton.index1Id()); @@ -6373,8 +6429,8 @@ struct AnalysisDileptonTrack { // regular dileptons fHistMan->FillHistClass( - Form("DileptonsSelected_%s", fLegCutNames[icut].Data()), - fValuesDilepton); + Form("DileptonsSelected_%s", fLegCutNames[icut].Data()), + fValuesDilepton); // other pairs, e.g.: D0s if constexpr (TCandidateType == @@ -6385,9 +6441,9 @@ struct AnalysisDileptonTrack { iCommonCut++) { if (dilepton.commonFilterMap_bit(fCommonTrackCutMap[iCommonCut])) { fHistMan->FillHistClass( - Form("DileptonsSelected_%s_%s", fLegCutNames[icut].Data(), - fCommonPairCutNames[iCommonCut].Data()), - fValuesDilepton); + Form("DileptonsSelected_%s_%s", fLegCutNames[icut].Data(), + fCommonPairCutNames[iCommonCut].Data()), + fValuesDilepton); } } for (int iPairCut = 0; iPairCut < fNPairCuts; iPairCut++) { @@ -6399,13 +6455,13 @@ struct AnalysisDileptonTrack { for (int iCommonCut = 0; iCommonCut < fNCommonTrackCuts; iCommonCut++) { if (dilepton.commonFilterMap_bit( - fCommonTrackCutMap[iCommonCut])) { + fCommonTrackCutMap[iCommonCut])) { fHistMan->FillHistClass( - Form("DileptonsSelected_%s_%s_%s", - fLegCutNames[icut].Data(), - fCommonPairCutNames[iCommonCut].Data(), - fPairCutNames[icut].Data()), - fValuesDilepton); + Form("DileptonsSelected_%s_%s_%s", + fLegCutNames[icut].Data(), + fCommonPairCutNames[iCommonCut].Data(), + fPairCutNames[icut].Data()), + fValuesDilepton); } } } @@ -6414,7 +6470,7 @@ struct AnalysisDileptonTrack { } // end loop over single lepton selections // loop over hadrons - for (auto const &assoc : assocs) { + for (auto const& assoc : assocs) { uint32_t trackSelection = 0; if constexpr (TCandidateType == VarManager::kBtoJpsiEEK) { @@ -6436,7 +6492,7 @@ struct AnalysisDileptonTrack { VarManager::FillDileptonHadron(dilepton, track, fValuesHadron); VarManager::FillDileptonTrackVertexing( - event, lepton1, lepton2, track, fValuesHadron); + event, lepton1, lepton2, track, fValuesHadron); // for the energy correlator analysis float Effweight_rec = 1.0f; @@ -6446,53 +6502,53 @@ struct AnalysisDileptonTrack { float hadron_eta = track.eta(); float hadron_phi = track.phi(); float deltaphi = RecoDecay::constrainAngle( - dilepton_phi - hadron_phi, -0.5 * o2::constants::math::PI); + dilepton_phi - hadron_phi, -0.5 * o2::constants::math::PI); Effweight_rec = GetSafeInterpolationWeight( - hAcceptance_rec, dilepton_eta - hadron_eta, deltaphi); + hAcceptance_rec, dilepton_eta - hadron_eta, deltaphi); float Effdilepton = GetSafeInterpolationWeight( - hEfficiency_dilepton, dilepton.rap(), dilepton.pt()); + hEfficiency_dilepton, dilepton.rap(), dilepton.pt()); float Effhadron = GetSafeInterpolationWeight( - hEfficiency_hadron, track.eta(), track.pt()); + hEfficiency_hadron, track.eta(), track.pt()); float Masswindow = hMasswindow->Interpolate(dilepton.pt()); Effweight_rec = - Effweight_rec * Effdilepton * Effhadron * Masswindow; + Effweight_rec * Effdilepton * Effhadron * Masswindow; } std::vector fTransRange = fConfigTransRange; VarManager::FillEnergyCorrelatorTriple( - event, lepton1, lepton2, track, fValuesHadron, fTransRange[0], - fTransRange[1], fConfigApplyMassEC, fMassBkg->GetRandom(), - 1. / Effweight_rec); + event, lepton1, lepton2, track, fValuesHadron, fTransRange[0], + fTransRange[1], fConfigApplyMassEC, fMassBkg->GetRandom(), + 1. / Effweight_rec); // table to be written out for ML analysis BmesonsTable( - event.runNumber(), event.globalIndex(), event.timestamp(), - fValuesHadron[VarManager::kPairMass], dilepton.mass(), - fValuesHadron[VarManager::kDeltaMass], - fValuesHadron[VarManager::kPairPt], - fValuesHadron[VarManager::kPairEta], - fValuesHadron[VarManager::kPairPhi], - fValuesHadron[VarManager::kPairRap], - fValuesHadron[VarManager::kVertexingLxy], - fValuesHadron[VarManager::kVertexingLxyz], - fValuesHadron[VarManager::kVertexingLz], - fValuesHadron[VarManager::kVertexingTauxy], - fValuesHadron[VarManager::kVertexingTauz], - fValuesHadron[VarManager::kCosPointingAngle], - fValuesHadron[VarManager::kVertexingChi2PCA], track.globalIndex(), - lepton1.globalIndex(), lepton2.globalIndex(), - track.tpcInnerParam(), track.eta(), dilepton.pt(), dilepton.eta(), - lepton1.tpcInnerParam(), lepton1.eta(), lepton2.tpcInnerParam(), - lepton2.eta(), track.tpcNSigmaKa(), track.tpcNSigmaPi(), - track.tpcNSigmaPr(), track.tofNSigmaKa(), lepton1.tpcNSigmaEl(), - lepton1.tpcNSigmaPi(), lepton1.tpcNSigmaPr(), - lepton2.tpcNSigmaEl(), lepton2.tpcNSigmaPi(), - lepton2.tpcNSigmaPr(), track.itsClusterMap(), - lepton1.itsClusterMap(), lepton2.itsClusterMap(), - track.itsChi2NCl(), lepton1.itsChi2NCl(), lepton2.itsChi2NCl(), - track.tpcNClsFound(), lepton1.tpcNClsFound(), - lepton2.tpcNClsFound(), track.tpcChi2NCl(), lepton1.tpcChi2NCl(), - lepton2.tpcChi2NCl(), dilepton.filterMap_raw(), trackSelection); + event.runNumber(), event.globalIndex(), event.timestamp(), + fValuesHadron[VarManager::kPairMass], dilepton.mass(), + fValuesHadron[VarManager::kDeltaMass], + fValuesHadron[VarManager::kPairPt], + fValuesHadron[VarManager::kPairEta], + fValuesHadron[VarManager::kPairPhi], + fValuesHadron[VarManager::kPairRap], + fValuesHadron[VarManager::kVertexingLxy], + fValuesHadron[VarManager::kVertexingLxyz], + fValuesHadron[VarManager::kVertexingLz], + fValuesHadron[VarManager::kVertexingTauxy], + fValuesHadron[VarManager::kVertexingTauz], + fValuesHadron[VarManager::kCosPointingAngle], + fValuesHadron[VarManager::kVertexingChi2PCA], track.globalIndex(), + lepton1.globalIndex(), lepton2.globalIndex(), + track.tpcInnerParam(), track.eta(), dilepton.pt(), dilepton.eta(), + lepton1.tpcInnerParam(), lepton1.eta(), lepton2.tpcInnerParam(), + lepton2.eta(), track.tpcNSigmaKa(), track.tpcNSigmaPi(), + track.tpcNSigmaPr(), track.tofNSigmaKa(), lepton1.tpcNSigmaEl(), + lepton1.tpcNSigmaPi(), lepton1.tpcNSigmaPr(), + lepton2.tpcNSigmaEl(), lepton2.tpcNSigmaPi(), + lepton2.tpcNSigmaPr(), track.itsClusterMap(), + lepton1.itsClusterMap(), lepton2.itsClusterMap(), + track.itsChi2NCl(), lepton1.itsChi2NCl(), lepton2.itsChi2NCl(), + track.tpcNClsFound(), lepton1.tpcNClsFound(), + lepton2.tpcNClsFound(), track.tpcChi2NCl(), lepton1.tpcChi2NCl(), + lepton2.tpcChi2NCl(), dilepton.filterMap_raw(), trackSelection); } if constexpr (TCandidateType == VarManager::kDstarToD0KPiPi) { trackSelection = (assoc.isBarrelSelected_raw() & fTrackCutBitMap); @@ -6515,7 +6571,7 @@ struct AnalysisDileptonTrack { VarManager::FillDileptonHadron(dilepton, track, fValuesHadron); VarManager::FillDileptonTrackVertexing( - event, lepton1, lepton2, track, fValuesHadron); + event, lepton1, lepton2, track, fValuesHadron); } if constexpr (TCandidateType == VarManager::kBcToThreeMuons) { trackSelection = (assoc.isMuonSelected_raw() & fTrackCutBitMap); @@ -6531,7 +6587,7 @@ struct AnalysisDileptonTrack { VarManager::FillDileptonHadron(dilepton, track, fValuesHadron); VarManager::FillDileptonTrackVertexing( - event, lepton1, lepton2, track, fValuesHadron); + event, lepton1, lepton2, track, fValuesHadron); // Fill table for correlation analysis DileptonTrackTable(fValuesHadron[VarManager::kDeltaEta], fValuesHadron[VarManager::kDeltaPhi], @@ -6569,32 +6625,32 @@ struct AnalysisDileptonTrack { for (int iCommonCut = 0; iCommonCut < fNCommonTrackCuts; iCommonCut++) { if (dilepton.commonFilterMap_bit( - fCommonTrackCutMap[iCommonCut])) { + fCommonTrackCutMap[iCommonCut])) { fHistMan->FillHistClass( - Form("DileptonTrack_%s_%s_%s", fLegCutNames[icut].Data(), - fCommonPairCutNames[iCommonCut].Data(), - fTrackCutNames[iTrackCut].Data()), - fValuesHadron); + Form("DileptonTrack_%s_%s_%s", fLegCutNames[icut].Data(), + fCommonPairCutNames[iCommonCut].Data(), + fTrackCutNames[iTrackCut].Data()), + fValuesHadron); } } for (int iPairCut = 0; iPairCut < fNPairCuts; iPairCut++) { if (dilepton.pairFilterMap_bit(iPairCut)) { fHistMan->FillHistClass( - Form("DileptonTrack_%s_%s_%s", fLegCutNames[icut].Data(), - fPairCutNames[iPairCut].Data(), - fTrackCutNames[iTrackCut].Data()), - fValuesHadron); + Form("DileptonTrack_%s_%s_%s", fLegCutNames[icut].Data(), + fPairCutNames[iPairCut].Data(), + fTrackCutNames[iTrackCut].Data()), + fValuesHadron); for (int iCommonCut = 0; iCommonCut < fNCommonTrackCuts; iCommonCut++) { if (dilepton.commonFilterMap_bit( - fCommonTrackCutMap[iCommonCut])) { + fCommonTrackCutMap[iCommonCut])) { fHistMan->FillHistClass( - Form("DileptonTrack_%s_%s_%s_%s", - fLegCutNames[icut].Data(), - fCommonPairCutNames[iCommonCut].Data(), - fPairCutNames[iPairCut].Data(), - fTrackCutNames[iTrackCut].Data()), - fValuesHadron); + Form("DileptonTrack_%s_%s_%s_%s", + fLegCutNames[icut].Data(), + fCommonPairCutNames[iCommonCut].Data(), + fPairCutNames[iPairCut].Data(), + fTrackCutNames[iTrackCut].Data()), + fValuesHadron); } } } @@ -6607,18 +6663,19 @@ struct AnalysisDileptonTrack { } o2::framework::Preslice trackAssocsPerCollision = - o2::aod::reducedtrack_association::reducedeventId; + o2::aod::reducedtrack_association::reducedeventId; o2::framework::Preslice dielectronsPerCollision = - o2::aod::reducedpair::reducedeventId; + o2::aod::reducedpair::reducedeventId; o2::framework::Preslice ditracksPerCollision = - o2::aod::reducedpair::reducedeventId; + o2::aod::reducedpair::reducedeventId; void processBarrelSkimmed( - o2::soa::Filtered const &events, - o2::soa::Filtered> const &assocs, - MyBarrelTracksWithCov const &tracks, - o2::soa::Filtered const &dileptons) { + o2::soa::Filtered const& events, + o2::soa::Filtered> const& assocs, + MyBarrelTracksWithCov const& tracks, + o2::soa::Filtered const& dileptons) + { // set up KF or DCAfitter if (events.size() == 0) { return; @@ -6630,11 +6687,11 @@ struct AnalysisDileptonTrack { } fCurrentRun = events.begin().runNumber(); } // end: runNumber - for (auto const &event : events) { + for (auto const& event : events) { auto groupedBarrelAssocs = - assocs.sliceBy(trackAssocsPerCollision, event.globalIndex()); + assocs.sliceBy(trackAssocsPerCollision, event.globalIndex()); auto groupedDielectrons = - dileptons.sliceBy(dielectronsPerCollision, event.globalIndex()); + dileptons.sliceBy(dielectronsPerCollision, event.globalIndex()); runDileptonHadron(event, groupedBarrelAssocs, tracks, groupedDielectrons); @@ -6642,11 +6699,12 @@ struct AnalysisDileptonTrack { } void processDstarToD0Pi( - o2::soa::Filtered const &events, - o2::soa::Filtered> const &assocs, - MyBarrelTracksWithCov const &tracks, - o2::soa::Filtered const &ditracks) { + o2::soa::Filtered const& events, + o2::soa::Filtered> const& assocs, + MyBarrelTracksWithCov const& tracks, + o2::soa::Filtered const& ditracks) + { // set up KF or DCAfitter if (events.size() == 0) { return; @@ -6655,28 +6713,29 @@ struct AnalysisDileptonTrack { initParamsFromCCDB(events.begin().timestamp()); fCurrentRun = events.begin().runNumber(); } // end: runNumber - for (auto const &event : events) { + for (auto const& event : events) { auto groupedBarrelAssocs = - assocs.sliceBy(trackAssocsPerCollision, event.globalIndex()); + assocs.sliceBy(trackAssocsPerCollision, event.globalIndex()); auto groupedDitracks = - ditracks.sliceBy(ditracksPerCollision, event.globalIndex()); + ditracks.sliceBy(ditracksPerCollision, event.globalIndex()); runDileptonHadron( - event, groupedBarrelAssocs, tracks, groupedDitracks); + event, groupedBarrelAssocs, tracks, groupedDitracks); } } o2::framework::Preslice muonAssocsPerCollision = - o2::aod::reducedtrack_association::reducedeventId; + o2::aod::reducedtrack_association::reducedeventId; o2::framework::Preslice dimuonsPerCollision = - o2::aod::reducedpair::reducedeventId; + o2::aod::reducedpair::reducedeventId; void processMuonSkimmed( - o2::soa::Filtered const &events, - o2::soa::Filtered> const &assocs, - MyMuonTracksWithCov const &tracks, - o2::soa::Filtered const &dileptons) { + o2::soa::Filtered const& events, + o2::soa::Filtered> const& assocs, + MyMuonTracksWithCov const& tracks, + o2::soa::Filtered const& dileptons) + { // set up KF or DCAfitter if (events.size() == 0) { return; @@ -6685,11 +6744,11 @@ struct AnalysisDileptonTrack { initParamsFromCCDB(events.begin().timestamp()); fCurrentRun = events.begin().runNumber(); } // end: runNumber - for (auto const &event : events) { + for (auto const& event : events) { auto groupedMuonAssocs = - assocs.sliceBy(muonAssocsPerCollision, event.globalIndex()); + assocs.sliceBy(muonAssocsPerCollision, event.globalIndex()); auto groupedDimuons = - dileptons.sliceBy(dimuonsPerCollision, event.globalIndex()); + dileptons.sliceBy(dimuonsPerCollision, event.globalIndex()); runDileptonHadron(event, groupedMuonAssocs, tracks, groupedDimuons); @@ -6697,12 +6756,12 @@ struct AnalysisDileptonTrack { } void processBarrelMixedEvent( - o2::soa::Filtered - &events, // o2-linter: disable=const-ref-in-process - o2::soa::Filtered> const &assocs, - MyBarrelTracksWithCov const &tracks, - o2::soa::Filtered const &dileptons) { + o2::soa::Filtered& events, // o2-linter: disable=const-ref-in-process + o2::soa::Filtered> const& assocs, + MyBarrelTracksWithCov const& tracks, + o2::soa::Filtered const& dileptons) + { if (events.size() == 0) { return; } @@ -6718,8 +6777,8 @@ struct AnalysisDileptonTrack { events.bindExternalIndices(&assocs); // loop over two event comibnations - for (auto const &[event1, event2] : selfCombinations( - fHashBin, fConfigMixingDepth.value, -1, events, events)) { + for (auto const& [event1, event2] : selfCombinations( + fHashBin, fConfigMixingDepth.value, -1, events, events)) { // fill event quantities VarManager::ResetValues(0, VarManager::kNVars); VarManager::FillEvent(event1, @@ -6727,20 +6786,20 @@ struct AnalysisDileptonTrack { // get the dilepton slice for event1 auto evDileptons = - dileptons.sliceBy(dielectronsPerCollision, event1.globalIndex()); + dileptons.sliceBy(dielectronsPerCollision, event1.globalIndex()); evDileptons.bindExternalIndices(&events); // get the track associations slice for event2 auto evAssocs = - assocs.sliceBy(trackAssocsPerCollision, event2.globalIndex()); + assocs.sliceBy(trackAssocsPerCollision, event2.globalIndex()); evAssocs.bindExternalIndices(&events); // loop over associations - for (auto const &assoc : evAssocs) { + for (auto const& assoc : evAssocs) { // check that this track fulfills at least one of the specified cuts uint32_t trackSelection = - (assoc.isBarrelSelected_raw() & fTrackCutBitMap); + (assoc.isBarrelSelected_raw() & fTrackCutBitMap); if (trackSelection == 0) { continue; } @@ -6749,7 +6808,7 @@ struct AnalysisDileptonTrack { auto track = assoc.template reducedtrack_as(); // loop over dileptons - for (auto const &dilepton : evDileptons) { + for (auto const& dilepton : evDileptons) { // get full track info of tracks based on the index auto lepton1 = tracks.rawIteratorAt(dilepton.index0Id()); auto lepton2 = tracks.rawIteratorAt(dilepton.index1Id()); @@ -6775,21 +6834,21 @@ struct AnalysisDileptonTrack { float hadron_eta = track.eta(); float hadron_phi = track.phi(); float deltaphi = RecoDecay::constrainAngle( - dilepton_phi - hadron_phi, -0.5 * o2::constants::math::PI); + dilepton_phi - hadron_phi, -0.5 * o2::constants::math::PI); Effweight_rec = GetSafeInterpolationWeight( - hAcceptance_rec, dilepton_eta - hadron_eta, deltaphi); + hAcceptance_rec, dilepton_eta - hadron_eta, deltaphi); float Effdilepton = GetSafeInterpolationWeight( - hEfficiency_dilepton, dilepton.rap(), dilepton.pt()); + hEfficiency_dilepton, dilepton.rap(), dilepton.pt()); float Effhadron = GetSafeInterpolationWeight( - hEfficiency_hadron, track.eta(), track.pt()); + hEfficiency_hadron, track.eta(), track.pt()); float Masswindow = hMasswindow->Interpolate(dilepton.pt()); if (fConfigApplyEfficiencyME) { Effweight_rec = - Effdilepton * Effhadron * - Masswindow; // for the moment, apply the efficiency correction - // also for the mixed event pairs, but this can be - // changed in case we want to apply it only for - // the same event pairs + Effdilepton * Effhadron * + Masswindow; // for the moment, apply the efficiency correction + // also for the mixed event pairs, but this can be + // changed in case we want to apply it only for + // the same event pairs } else { Effweight_rec = Effweight_rec * Effdilepton * Effhadron * Masswindow; // apply acceptance and efficiency @@ -6800,10 +6859,10 @@ struct AnalysisDileptonTrack { VarManager::FillEnergyCorrelatorTriple( - event1, lepton1, lepton2, track, - dqtablereader_helpers::varValues(), fTransRange[0], - fTransRange[1], fConfigApplyMassEC, fMassBkg->GetRandom(), - 1. / Effweight_rec); + event1, lepton1, lepton2, track, + dqtablereader_helpers::varValues(), fTransRange[0], + fTransRange[1], fConfigApplyMassEC, fMassBkg->GetRandom(), + 1. / Effweight_rec); // loop over dilepton leg cuts and track cuts and fill histograms // separately for each combination @@ -6821,10 +6880,10 @@ struct AnalysisDileptonTrack { dqtablereader_helpers::varValues()); if (fConfigEnergycorrelator) { fHistMan->FillHistClass( - Form("DileptonTrackECME_%s_%s", - fTrackCutNames[icut].Data(), - fTrackCutNames[iTrackCut].Data()), - dqtablereader_helpers::varValues()); + Form("DileptonTrackECME_%s_%s", + fTrackCutNames[icut].Data(), + fTrackCutNames[iTrackCut].Data()), + dqtablereader_helpers::varValues()); } } } @@ -6835,33 +6894,33 @@ struct AnalysisDileptonTrack { } void processMuonMixedEvent( - o2::soa::Filtered - &events, // o2-linter: disable=const-ref-in-process - o2::soa::Filtered> const &assocs, - MyMuonTracksWithCov const &, - o2::soa::Filtered const &dileptons) { + o2::soa::Filtered& events, // o2-linter: disable=const-ref-in-process + o2::soa::Filtered> const& assocs, + MyMuonTracksWithCov const&, + o2::soa::Filtered const& dileptons) + { if (events.size() == 0) { return; } events.bindExternalIndices(&dileptons); events.bindExternalIndices(&assocs); - for (auto const &[event1, event2] : selfCombinations( - fHashBin, fConfigMixingDepth.value, -1, events, events)) { + for (auto const& [event1, event2] : selfCombinations( + fHashBin, fConfigMixingDepth.value, -1, events, events)) { VarManager::ResetValues(0, VarManager::kNVars); VarManager::FillEvent(event1, dqtablereader_helpers::varValues()); auto evDileptons = - dileptons.sliceBy(dimuonsPerCollision, event1.globalIndex()); + dileptons.sliceBy(dimuonsPerCollision, event1.globalIndex()); evDileptons.bindExternalIndices(&events); auto evAssocs = - assocs.sliceBy(muonAssocsPerCollision, event2.globalIndex()); + assocs.sliceBy(muonAssocsPerCollision, event2.globalIndex()); evAssocs.bindExternalIndices(&events); - for (auto const &assoc : evAssocs) { + for (auto const& assoc : evAssocs) { uint32_t muonSelection = assoc.isMuonSelected_raw() & fTrackCutBitMap; if (muonSelection == 0) { @@ -6869,7 +6928,7 @@ struct AnalysisDileptonTrack { } auto track = assoc.template reducedmuon_as(); - for (auto const &dilepton : evDileptons) { + for (auto const& dilepton : evDileptons) { VarManager::FillDileptonHadron(dilepton, track, dqtablereader_helpers::varValues()); for (int icut = 0; icut < fNCuts; icut++) { @@ -6892,7 +6951,8 @@ struct AnalysisDileptonTrack { } // end event loop } - void processDummy(MyEventsBasic const &) { + void processDummy(MyEventsBasic const&) + { // do nothing } @@ -6916,37 +6976,37 @@ struct AnalysisDileptonTrackTrack { o2::framework::OutputObj fOutputList{"output"}; o2::framework::Configurable fConfigTrackCut1{ - "cfgTrackCut1", "pionPIDCut1", - "track1 cut"}; // used for select the tracks from SelectedTracks + "cfgTrackCut1", "pionPIDCut1", + "track1 cut"}; // used for select the tracks from SelectedTracks o2::framework::Configurable fConfigTrackCut2{ - "cfgTrackCut2", "pionPIDCut2", - "track2 cut"}; // used for select the tracks from SelectedTracks + "cfgTrackCut2", "pionPIDCut2", + "track2 cut"}; // used for select the tracks from SelectedTracks o2::framework::Configurable fConfigDileptonCut{ - "cfgDiLeptonCut", "pairJpsi2", "Dilepton cut"}; + "cfgDiLeptonCut", "pairJpsi2", "Dilepton cut"}; o2::framework::Configurable fConfigQuadrupletCuts{ - "cfgQuadrupletCuts", "pairX3872Cut1", - "Comma separated list of Dilepton-Track-Track cut"}; + "cfgQuadrupletCuts", "pairX3872Cut1", + "Comma separated list of Dilepton-Track-Track cut"}; o2::framework::Configurable fConfigAddDileptonHistogram{ - "cfgAddDileptonHistogram", "barrel", - "Comma separated list of histograms"}; + "cfgAddDileptonHistogram", "barrel", + "Comma separated list of histograms"}; o2::framework::Configurable fConfigAddQuadrupletHistogram{ - "cfgAddQuadrupletHistogram", "xtojpsipipi", - "Comma separated list of histograms"}; + "cfgAddQuadrupletHistogram", "xtojpsipipi", + "Comma separated list of histograms"}; o2::framework::Configurable fConfigSetupFourProngFitter{ - "cfgSetupFourProngFitter", false, - "Use DCA for secondary vertex reconstruction (DCAFitter is used by " - "default)"}; + "cfgSetupFourProngFitter", false, + "Use DCA for secondary vertex reconstruction (DCAFitter is used by " + "default)"}; o2::framework::Configurable fConfigUseKFVertexing{ - "cfgUseKFVertexing", false, - "Use KF Particle for secondary vertex reconstruction (DCAFitter is used " - "by default)"}; + "cfgUseKFVertexing", false, + "Use KF Particle for secondary vertex reconstruction (DCAFitter is used " + "by default)"}; o2::framework::Configurable fConfigGRPmagPath{ - "cfgGrpmagPath", "GLO/Config/GRPMagField", - "CCDB path of the GRPMagField object"}; + "cfgGrpmagPath", "GLO/Config/GRPMagField", + "CCDB path of the GRPMagField object"}; o2::framework::Produces - DileptonTrackTrackTable; + DileptonTrackTrackTable; int fCurrentRun = -1; // needed to detect if the run changed and trigger // update of calibrations etc. @@ -6962,23 +7022,24 @@ struct AnalysisDileptonTrackTrack { o2::framework::Service fCCDB{}; o2::framework::expressions::Filter - eventFilter = o2::aod::dqanalysisflags::isEventSelected > - static_cast(0); + eventFilter = o2::aod::dqanalysisflags::isEventSelected > + static_cast(0); o2::framework::expressions::Filter dileptonFilter = - o2::aod::reducedpair::sign == 0; + o2::aod::reducedpair::sign == 0; o2::framework::expressions::Filter - filterBarrelTrackSelected = o2::aod::dqanalysisflags::isBarrelSelected > - static_cast(0); + filterBarrelTrackSelected = o2::aod::dqanalysisflags::isBarrelSelected > + static_cast(0); constexpr static uint32_t fgDileptonFillMap = - VarManager::ObjTypes::ReducedTrack | - VarManager::ObjTypes::Pair; // fill map + VarManager::ObjTypes::ReducedTrack | + VarManager::ObjTypes::Pair; // fill map // use some values array to avoid mixing up the quantities - float *fValuesQuadruplet = nullptr; - HistogramManager *fHistMan = nullptr; + float* fValuesQuadruplet = nullptr; + HistogramManager* fHistMan = nullptr; - void init(o2::framework::InitContext &context) { + void init(o2::framework::InitContext& context) + { // bool isBarrel = context.mOptions.get("processJpsiPiPi"); if (context.mOptions.get("processDummy")) { @@ -7002,15 +7063,15 @@ struct AnalysisDileptonTrackTrack { } TString configDileptonCutNamesStr = fConfigDileptonCut.value; fDileptonCut = - *o2::aod::dqcuts::GetCompositeCut(configDileptonCutNamesStr.Data()); + *o2::aod::dqcuts::GetCompositeCut(configDileptonCutNamesStr.Data()); TString configQuadruletCutNamesStr = fConfigQuadrupletCuts.value; std::unique_ptr objArray( - configQuadruletCutNamesStr.Tokenize(",")); + configQuadruletCutNamesStr.Tokenize(",")); for (Int_t icut = 0; icut < objArray->GetEntries(); ++icut) { TString cutName = objArray->At(icut)->GetName(); fQuadrupletCutNames.push_back(cutName); fQuadrupletCuts.push_back( - *o2::aod::dqcuts::GetCompositeCut(cutName.Data())); + *o2::aod::dqcuts::GetCompositeCut(cutName.Data())); } if (!context.mOptions.get("processDummy")) { @@ -7021,27 +7082,27 @@ struct AnalysisDileptonTrackTrack { for (std::size_t icut = 0; icut < fQuadrupletCutNames.size(); ++icut) { if (fIsSameTrackCut) { DefineHistograms( - fHistMan, - Form("QuadrupletSEPM_%s", fQuadrupletCutNames[icut].Data()), - fConfigAddQuadrupletHistogram.value.data()); + fHistMan, + Form("QuadrupletSEPM_%s", fQuadrupletCutNames[icut].Data()), + fConfigAddQuadrupletHistogram.value.data()); } else { DefineHistograms( - fHistMan, - Form("QuadrupletSEPM_%s", fQuadrupletCutNames[icut].Data()), - fConfigAddQuadrupletHistogram.value.data()); - DefineHistograms( - fHistMan, - Form("QuadrupletSEMP_%s", fQuadrupletCutNames[icut].Data()), - fConfigAddQuadrupletHistogram.value.data()); - } - DefineHistograms( fHistMan, - Form("QuadrupletSEPP_%s", fQuadrupletCutNames[icut].Data()), + Form("QuadrupletSEPM_%s", fQuadrupletCutNames[icut].Data()), fConfigAddQuadrupletHistogram.value.data()); - DefineHistograms( + DefineHistograms( fHistMan, - Form("QuadrupletSEMM_%s", fQuadrupletCutNames[icut].Data()), + Form("QuadrupletSEMP_%s", fQuadrupletCutNames[icut].Data()), fConfigAddQuadrupletHistogram.value.data()); + } + DefineHistograms( + fHistMan, + Form("QuadrupletSEPP_%s", fQuadrupletCutNames[icut].Data()), + fConfigAddQuadrupletHistogram.value.data()); + DefineHistograms( + fHistMan, + Form("QuadrupletSEMM_%s", fQuadrupletCutNames[icut].Data()), + fConfigAddQuadrupletHistogram.value.data()); } } } @@ -7051,9 +7112,10 @@ struct AnalysisDileptonTrackTrack { } // init parameters from CCDB - void initParamsFromCCDB(uint64_t timestamp) { + void initParamsFromCCDB(uint64_t timestamp) + { auto grpmag = fCCDB->getForTimeStamp( - fConfigGRPmagPath.value, timestamp); + fConfigGRPmagPath.value, timestamp); float magField = 0.0; if (grpmag != nullptr) { magField = grpmag->getNominalL3Field(); @@ -7066,11 +7128,11 @@ struct AnalysisDileptonTrackTrack { VarManager::SetupFourProngKFParticle(magField); } else if (fConfigSetupFourProngFitter.value) { VarManager::SetupTwoProngDCAFitter( - magField, true, 200.0f, 4.0f, 1.0e-3f, 0.9f, - false); // TODO: get these parameters from Configurables + magField, true, 200.0f, 4.0f, 1.0e-3f, 0.9f, + false); // TODO: get these parameters from Configurables VarManager::SetupFourProngDCAFitter( - magField, true, 200.0f, 4.0f, 1.0e-3f, 0.9f, - false); // TODO: get these parameters from Configurables + magField, true, 200.0f, 4.0f, 1.0e-3f, 0.9f, + false); // TODO: get these parameters from Configurables } } @@ -7078,15 +7140,16 @@ struct AnalysisDileptonTrackTrack { template - void runDileptonTrackTrack(TEvent const &event, TTrackAssocs const &assocs, - TTracks const &tracks, - TDileptons const &dileptons) { + void runDileptonTrackTrack(TEvent const& event, TTrackAssocs const& assocs, + TTracks const& tracks, + TDileptons const& dileptons) + { VarManager::ResetValues(0, VarManager::kNVars, fValuesQuadruplet); VarManager::FillEvent(event, fValuesQuadruplet); // int indexOffset = -999; // std::vector trackGlobalIndexes; - for (auto const &dilepton : dileptons) { + for (auto const& dilepton : dileptons) { // get full track info of tracks based on the index int indexLepton1 = dilepton.index0Id(); @@ -7110,16 +7173,16 @@ struct AnalysisDileptonTrackTrack { fValuesQuadruplet); // loop over hadrons pairs - for (auto const &[a1, a2] : o2::soa::combinations(assocs, assocs)) { + for (auto const& [a1, a2] : o2::soa::combinations(assocs, assocs)) { uint32_t trackSelection = 0; if (fIsSameTrackCut) { trackSelection = - ((a1.isBarrelSelected_raw() & (static_cast(1) << 1)) || - (a2.isBarrelSelected_raw() & (static_cast(1) << 1))); + ((a1.isBarrelSelected_raw() & (static_cast(1) << 1)) || + (a2.isBarrelSelected_raw() & (static_cast(1) << 1))); } else { trackSelection = - ((a1.isBarrelSelected_raw() & (static_cast(1) << 1)) && - (a2.isBarrelSelected_raw() & (static_cast(1) << 2))); + ((a1.isBarrelSelected_raw() & (static_cast(1) << 1)) && + (a2.isBarrelSelected_raw() & (static_cast(1) << 2))); } // LOGP(info, "trackSelection: {}, a1: {}, a2: {}", trackSelection, // a1.isBarrelSelected_raw(), a2.isBarrelSelected_raw()); @@ -7140,12 +7203,12 @@ struct AnalysisDileptonTrackTrack { // fill variables VarManager::FillDileptonTrackTrack( - dilepton, track1, track2, fValuesQuadruplet); + dilepton, track1, track2, fValuesQuadruplet); if (fConfigSetupFourProngFitter || fConfigUseKFVertexing) { // LOGP(info, "Using KF or DCA fitter for secondary vertexing"); VarManager::FillDileptonTrackTrackVertexing< - TCandidateType, TEventFillMap, TTrackFillMap>( - event, lepton1, lepton2, track1, track2, fValuesQuadruplet); + TCandidateType, TEventFillMap, TTrackFillMap>( + event, lepton1, lepton2, track1, track2, fValuesQuadruplet); } int iCut = 0; @@ -7158,28 +7221,28 @@ struct AnalysisDileptonTrackTrack { if (fIsSameTrackCut) { if (track1.sign() * track2.sign() < 0) { fHistMan->FillHistClass( - Form("QuadrupletSEPM_%s", fQuadrupletCutNames[iCut].Data()), - fValuesQuadruplet); + Form("QuadrupletSEPM_%s", fQuadrupletCutNames[iCut].Data()), + fValuesQuadruplet); } } else { if ((track1.sign() < 0) && (track2.sign() > 0)) { fHistMan->FillHistClass( - Form("QuadrupletSEMP_%s", fQuadrupletCutNames[iCut].Data()), - fValuesQuadruplet); + Form("QuadrupletSEMP_%s", fQuadrupletCutNames[iCut].Data()), + fValuesQuadruplet); } else if ((track1.sign() > 0) && (track2.sign() < 0)) { fHistMan->FillHistClass( - Form("QuadrupletSEPM_%s", fQuadrupletCutNames[iCut].Data()), - fValuesQuadruplet); + Form("QuadrupletSEPM_%s", fQuadrupletCutNames[iCut].Data()), + fValuesQuadruplet); } } if ((track1.sign() > 0) && (track2.sign() > 0)) { fHistMan->FillHistClass( - Form("QuadrupletSEPP_%s", fQuadrupletCutNames[iCut].Data()), - fValuesQuadruplet); + Form("QuadrupletSEPP_%s", fQuadrupletCutNames[iCut].Data()), + fValuesQuadruplet); } else if ((track1.sign() < 0) && (track2.sign() < 0)) { fHistMan->FillHistClass( - Form("QuadrupletSEMM_%s", fQuadrupletCutNames[iCut].Data()), - fValuesQuadruplet); + Form("QuadrupletSEMM_%s", fQuadrupletCutNames[iCut].Data()), + fValuesQuadruplet); } } } // loop over dilepton-track-track cuts @@ -7189,61 +7252,62 @@ struct AnalysisDileptonTrackTrack { continue; } DileptonTrackTrackTable( - fValuesQuadruplet[VarManager::kQuadMass], - fValuesQuadruplet[VarManager::kQuadPt], - fValuesQuadruplet[VarManager::kQuadEta], - fValuesQuadruplet[VarManager::kQuadPhi], - fValuesQuadruplet[VarManager::kRap], - fValuesQuadruplet[VarManager::kQ], - fValuesQuadruplet[VarManager::kDeltaR1], - fValuesQuadruplet[VarManager::kDeltaR2], - fValuesQuadruplet[VarManager::kDeltaR], dilepton.mass(), - dilepton.pt(), dilepton.eta(), dilepton.phi(), dilepton.sign(), - lepton1.tpcNSigmaEl(), lepton1.tpcNSigmaPi(), lepton1.tpcNSigmaPr(), - lepton1.tpcNClsFound(), lepton2.tpcNSigmaEl(), - lepton2.tpcNSigmaPi(), lepton2.tpcNSigmaPr(), - lepton2.tpcNClsFound(), fValuesQuadruplet[VarManager::kDitrackMass], - fValuesQuadruplet[VarManager::kDitrackPt], track1.pt(), track2.pt(), - track1.eta(), track2.eta(), track1.phi(), track2.phi(), - track1.sign(), track2.sign(), track1.tpcNSigmaPi(), - track2.tpcNSigmaPi(), track1.tpcNSigmaKa(), track2.tpcNSigmaKa(), - track1.tpcNSigmaPr(), track1.tpcNSigmaPr(), track1.tpcNClsFound(), - track2.tpcNClsFound(), fValuesQuadruplet[VarManager::kKFMass], - fValuesQuadruplet[VarManager::kVertexingProcCode], - fValuesQuadruplet[VarManager::kVertexingChi2PCA], - fValuesQuadruplet[VarManager::kCosPointingAngle], - fValuesQuadruplet[VarManager::kKFDCAxyzBetweenProngs], - fValuesQuadruplet[VarManager::kKFChi2OverNDFGeo], - fValuesQuadruplet[VarManager::kVertexingLz], - fValuesQuadruplet[VarManager::kVertexingLxy], - fValuesQuadruplet[VarManager::kVertexingLxyz], - fValuesQuadruplet[VarManager::kVertexingTauz], - fValuesQuadruplet[VarManager::kVertexingTauxy], - fValuesQuadruplet[VarManager::kVertexingLzErr], - fValuesQuadruplet[VarManager::kVertexingLxyzErr], - fValuesQuadruplet[VarManager::kVertexingTauzErr], - fValuesQuadruplet[VarManager::kVertexingLzProjected], - fValuesQuadruplet[VarManager::kVertexingLxyProjected], - fValuesQuadruplet[VarManager::kVertexingLxyzProjected], - fValuesQuadruplet[VarManager::kVertexingTauzProjected], - fValuesQuadruplet[VarManager::kVertexingTauxyProjected]); + fValuesQuadruplet[VarManager::kQuadMass], + fValuesQuadruplet[VarManager::kQuadPt], + fValuesQuadruplet[VarManager::kQuadEta], + fValuesQuadruplet[VarManager::kQuadPhi], + fValuesQuadruplet[VarManager::kRap], + fValuesQuadruplet[VarManager::kQ], + fValuesQuadruplet[VarManager::kDeltaR1], + fValuesQuadruplet[VarManager::kDeltaR2], + fValuesQuadruplet[VarManager::kDeltaR], dilepton.mass(), + dilepton.pt(), dilepton.eta(), dilepton.phi(), dilepton.sign(), + lepton1.tpcNSigmaEl(), lepton1.tpcNSigmaPi(), lepton1.tpcNSigmaPr(), + lepton1.tpcNClsFound(), lepton2.tpcNSigmaEl(), + lepton2.tpcNSigmaPi(), lepton2.tpcNSigmaPr(), + lepton2.tpcNClsFound(), fValuesQuadruplet[VarManager::kDitrackMass], + fValuesQuadruplet[VarManager::kDitrackPt], track1.pt(), track2.pt(), + track1.eta(), track2.eta(), track1.phi(), track2.phi(), + track1.sign(), track2.sign(), track1.tpcNSigmaPi(), + track2.tpcNSigmaPi(), track1.tpcNSigmaKa(), track2.tpcNSigmaKa(), + track1.tpcNSigmaPr(), track1.tpcNSigmaPr(), track1.tpcNClsFound(), + track2.tpcNClsFound(), fValuesQuadruplet[VarManager::kKFMass], + fValuesQuadruplet[VarManager::kVertexingProcCode], + fValuesQuadruplet[VarManager::kVertexingChi2PCA], + fValuesQuadruplet[VarManager::kCosPointingAngle], + fValuesQuadruplet[VarManager::kKFDCAxyzBetweenProngs], + fValuesQuadruplet[VarManager::kKFChi2OverNDFGeo], + fValuesQuadruplet[VarManager::kVertexingLz], + fValuesQuadruplet[VarManager::kVertexingLxy], + fValuesQuadruplet[VarManager::kVertexingLxyz], + fValuesQuadruplet[VarManager::kVertexingTauz], + fValuesQuadruplet[VarManager::kVertexingTauxy], + fValuesQuadruplet[VarManager::kVertexingLzErr], + fValuesQuadruplet[VarManager::kVertexingLxyzErr], + fValuesQuadruplet[VarManager::kVertexingTauzErr], + fValuesQuadruplet[VarManager::kVertexingLzProjected], + fValuesQuadruplet[VarManager::kVertexingLxyProjected], + fValuesQuadruplet[VarManager::kVertexingLxyzProjected], + fValuesQuadruplet[VarManager::kVertexingTauzProjected], + fValuesQuadruplet[VarManager::kVertexingTauxyProjected]); } } } o2::framework::Preslice trackAssocsPerCollision = - o2::aod::reducedtrack_association::reducedeventId; + o2::aod::reducedtrack_association::reducedeventId; o2::framework::Preslice dielectronsPerCollision = - o2::aod::reducedpair::reducedeventId; + o2::aod::reducedpair::reducedeventId; o2::framework::Preslice ditracksPerCollision = - o2::aod::reducedpair::reducedeventId; + o2::aod::reducedpair::reducedeventId; void processJpsiPiPi( - o2::soa::Filtered const &events, - o2::soa::Filtered> const &assocs, - MyBarrelTracksWithCov const &tracks, - o2::soa::Filtered const &dileptons) { + o2::soa::Filtered const& events, + o2::soa::Filtered> const& assocs, + MyBarrelTracksWithCov const& tracks, + o2::soa::Filtered const& dileptons) + { if (events.size() == 0) { return; } @@ -7251,18 +7315,19 @@ struct AnalysisDileptonTrackTrack { initParamsFromCCDB(events.begin().timestamp()); fCurrentRun = events.begin().runNumber(); } // end: runNumber - for (auto const &event : events) { + for (auto const& event : events) { auto groupedBarrelAssocs = - assocs.sliceBy(trackAssocsPerCollision, event.globalIndex()); + assocs.sliceBy(trackAssocsPerCollision, event.globalIndex()); auto groupedDielectrons = - dileptons.sliceBy(dielectronsPerCollision, event.globalIndex()); + dileptons.sliceBy(dielectronsPerCollision, event.globalIndex()); runDileptonTrackTrack(event, groupedBarrelAssocs, tracks, groupedDielectrons); } } - void processDummy(MyEventsBasic const &) { + void processDummy(MyEventsBasic const&) + { // do nothing } @@ -7272,8 +7337,9 @@ struct AnalysisDileptonTrackTrack { true); }; -void DefineHistograms(HistogramManager *histMan, const TString &histClasses, - const char *histGroups) { +void DefineHistograms(HistogramManager* histMan, const TString& histClasses, + const char* histGroups) +{ // // Define here the histograms for all the classes required in analysis. // The histogram classes are provided in the histClasses string, separated by @@ -7290,90 +7356,90 @@ void DefineHistograms(HistogramManager *histMan, const TString &histClasses, // configurables if (classStr.Contains("Event")) { o2::aod::dqhistograms::DefineHistograms( - histMan, objArray->At(iclass)->GetName(), "event", histName); + histMan, objArray->At(iclass)->GetName(), "event", histName); } if (classStr.Contains("SameBunchCorrelations") || classStr.Contains("OutOfBunchCorrelations")) { o2::aod::dqhistograms::DefineHistograms( - histMan, objArray->At(iclass)->GetName(), "two-collisions", histName); + histMan, objArray->At(iclass)->GetName(), "two-collisions", histName); } if (classStr.Contains("Track") && !classStr.Contains("Pairs")) { if (classStr.Contains("Barrel")) { o2::aod::dqhistograms::DefineHistograms( - histMan, objArray->At(iclass)->GetName(), "track", histName); + histMan, objArray->At(iclass)->GetName(), "track", histName); if (classStr.Contains("PIDCalibElectron")) { o2::aod::dqhistograms::DefineHistograms( - histMan, objArray->At(iclass)->GetName(), "track", - "postcalib_electron"); + histMan, objArray->At(iclass)->GetName(), "track", + "postcalib_electron"); } if (classStr.Contains("PIDCalibPion")) { o2::aod::dqhistograms::DefineHistograms( - histMan, objArray->At(iclass)->GetName(), "track", - "postcalib_pion"); + histMan, objArray->At(iclass)->GetName(), "track", + "postcalib_pion"); } if (classStr.Contains("PIDCalibProton")) { o2::aod::dqhistograms::DefineHistograms( - histMan, objArray->At(iclass)->GetName(), "track", - "postcalib_proton"); + histMan, objArray->At(iclass)->GetName(), "track", + "postcalib_proton"); } if (classStr.Contains("Ambiguity")) { o2::aod::dqhistograms::DefineHistograms( - histMan, objArray->At(iclass)->GetName(), "track", "ambiguity"); + histMan, objArray->At(iclass)->GetName(), "track", "ambiguity"); } } if (classStr.Contains("Muon")) { o2::aod::dqhistograms::DefineHistograms( - histMan, objArray->At(iclass)->GetName(), "track", histName); + histMan, objArray->At(iclass)->GetName(), "track", histName); } } if (classStr.Contains("Pairs")) { o2::aod::dqhistograms::DefineHistograms( - histMan, objArray->At(iclass)->GetName(), "pair", histName); + histMan, objArray->At(iclass)->GetName(), "pair", histName); } if (classStr.Contains("Pairing")) { o2::aod::dqhistograms::DefineHistograms( - histMan, objArray->At(iclass)->GetName(), "event", histName); + histMan, objArray->At(iclass)->GetName(), "event", histName); } if (classStr.Contains("Triplets")) { o2::aod::dqhistograms::DefineHistograms( - histMan, objArray->At(iclass)->GetName(), "pair", histName); + histMan, objArray->At(iclass)->GetName(), "pair", histName); } if (classStr.Contains("DileptonsSelected")) { o2::aod::dqhistograms::DefineHistograms( - histMan, objArray->At(iclass)->GetName(), "pair", "barrel,vertexing"); + histMan, objArray->At(iclass)->GetName(), "pair", "barrel,vertexing"); } if (classStr.Contains("DileptonTrack") && !classStr.Contains("ME")) { o2::aod::dqhistograms::DefineHistograms( - histMan, objArray->At(iclass)->GetName(), "dilepton-track", histName); + histMan, objArray->At(iclass)->GetName(), "dilepton-track", histName); } if (classStr.Contains("DileptonTrackME")) { o2::aod::dqhistograms::DefineHistograms( - histMan, objArray->At(iclass)->GetName(), "dilepton-track", - "dilepton-hadron-array-correlation"); + histMan, objArray->At(iclass)->GetName(), "dilepton-track", + "dilepton-hadron-array-correlation"); } if (classStr.Contains("DileptonTrackECME")) { o2::aod::dqhistograms::DefineHistograms( - histMan, objArray->At(iclass)->GetName(), "dilepton-track", - "energy-correlator"); + histMan, objArray->At(iclass)->GetName(), "dilepton-track", + "energy-correlator"); } if (classStr.Contains("HadronsSelected")) { o2::aod::dqhistograms::DefineHistograms( - histMan, objArray->At(iclass)->GetName(), "track", histName); + histMan, objArray->At(iclass)->GetName(), "track", histName); } if (classStr.Contains("DileptonHadronInvMass")) { o2::aod::dqhistograms::DefineHistograms( - histMan, objArray->At(iclass)->GetName(), "dilepton-hadron-mass"); + histMan, objArray->At(iclass)->GetName(), "dilepton-hadron-mass"); } if (classStr.Contains("DileptonHadronCorrelation")) {