Skip to content

Commit 4805577

Browse files
authored
Add files via upload
1 parent cd4f071 commit 4805577

File tree

1 file changed

+112
-0
lines changed

1 file changed

+112
-0
lines changed

PWGDQ/Core/VarManager.h

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1362,6 +1362,10 @@ class VarManager : public TObject
13621362
static void FillDileptonTrackVertexing(C const& collision, T1 const& lepton1, T1 const& lepton2, T1 const& track, float* values);
13631363
template <typename T1, typename T2>
13641364
static void FillDileptonHadron(T1 const& dilepton, T2 const& hadron, float* values = nullptr, float hadronMass = 0.0f);
1365+
template <typename T1, typename T2, typename T3>
1366+
static void FillEnergyCorrelatorTriple(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);
1367+
template <int pairType, typename T1, typename T2, typename T3, typename T4, typename T5>
1368+
static void FillEnergyCorrelatorsUnfoldingTriple(T1 const& lepton1, T2 const& lepton2, T3 const& hadron, T4 const& track, T5 const& t1, float* values = nullptr);
13651369
template <typename T1, typename T2>
13661370
static void FillEnergyCorrelator(T1 const& dilepton, T2 const& hadron, float* values = nullptr, float Translow = 1. / 3, float Transhigh = 2. / 3, bool applyFitMass = false, float sidebandMass = 0.0f);
13671371
template <typename T1, typename T2>
@@ -5872,6 +5876,114 @@ void VarManager::FillEnergyCorrelator(T1 const& dilepton, T2 const& hadron, floa
58725876
}
58735877
}
58745878
}
5879+
5880+
template <typename T1, typename T2, typename T3>
5881+
void VarManager::FillEnergyCorrelatorTriple(T1 const& lepton1, T2 const& lepton2, T3 const& hadron, float* values, float Translow, float Transhigh, bool applyFitMass, float sidebandMass)
5882+
{
5883+
float m1 = o2::constants::physics::MassElectron;
5884+
float m2 = o2::constants::physics::MassElectron;
5885+
5886+
ROOT::Math::PtEtaPhiMVector v_lepton1(lepton1.pt(), lepton1.eta(), lepton1.phi(), m1);
5887+
ROOT::Math::PtEtaPhiMVector v_lepton2(lepton2.pt(), lepton2.eta(), lepton2.phi(), m2);
5888+
ROOT::Math::PtEtaPhiMVector dilepton = v_lepton1 + v_lepton2;
5889+
5890+
float dileptonmass = o2::constants::physics::MassJPsi;
5891+
if (applyFitMass) {
5892+
dileptonmass = dilepton.mass();
5893+
}
5894+
if (applyFitMass && sidebandMass > 0) {
5895+
dileptonmass = sidebandMass;
5896+
}
5897+
5898+
if (fgUsedVars[kCosChi] || fgUsedVars[kECWeight] || fgUsedVars[kCosTheta] || fgUsedVars[kEWeight_before] || fgUsedVars[kPtDau] || fgUsedVars[kEtaDau] || fgUsedVars[kPhiDau] || fgUsedVars[kCosChi_randomPhi_trans] || fgUsedVars[kCosChi_randomPhi_toward] || fgUsedVars[kCosChi_randomPhi_away]) {
5899+
values[kdileptonmass] = dileptonmass;
5900+
ROOT::Math::PtEtaPhiMVector v1(dilepton.pt(), dilepton.eta(), dilepton.phi(), dileptonmass);
5901+
ROOT::Math::PtEtaPhiMVector v2(hadron.pt(), hadron.eta(), hadron.phi(), o2::constants::physics::MassPionCharged);
5902+
values[kCosChi] = LorentzTransformJpsihadroncosChi("coschi", v1, v2);
5903+
float E_boost = LorentzTransformJpsihadroncosChi("weight_boost", v1, v2);
5904+
values[kECWeight] = E_boost / v1.M();
5905+
values[kCosTheta] = LorentzTransformJpsihadroncosChi("costheta", v1, v2);
5906+
values[kEWeight_before] = v2.Pt() / v1.M();
5907+
values[kPtDau] = v2.pt();
5908+
values[kEtaDau] = v2.eta();
5909+
values[kPhiDau] = RecoDecay::constrainAngle(v2.phi(), -o2::constants::math::PIHalf);
5910+
5911+
float deltaphi = RecoDecay::constrainAngle(v1.phi() - v2.phi(), -o2::constants::math::PI);
5912+
values[kDeltaPhi] = deltaphi;
5913+
values[kDeltaEta] = v1.eta() - v2.eta();
5914+
values[kCosChi_randomPhi_trans] = -999.9f;
5915+
values[kCosChi_randomPhi_toward] = -999.9f;
5916+
values[kCosChi_randomPhi_away] = -999.9f;
5917+
5918+
values[kdeltaphi_randomPhi_trans] = -999.9f;
5919+
values[kdeltaphi_randomPhi_toward] = -999.9f;
5920+
values[kdeltaphi_randomPhi_away] = -999.9f;
5921+
5922+
float randomPhi_trans = -o2::constants::math::PIHalf;
5923+
float randomPhi_toward = -o2::constants::math::PIHalf;
5924+
float randomPhi_away = -o2::constants::math::PIHalf;
5925+
5926+
if ((deltaphi > -Transhigh * TMath::Pi() && deltaphi < -Translow * TMath::Pi()) || (deltaphi > Translow * TMath::Pi() && deltaphi < Transhigh * TMath::Pi())) {
5927+
randomPhi_trans = gRandom->Uniform(-o2::constants::math::PIHalf, 3. * o2::constants::math::PIHalf);
5928+
randomPhi_toward = gRandom->Uniform(-o2::constants::math::PIHalf, 3. * o2::constants::math::PIHalf);
5929+
randomPhi_away = gRandom->Uniform(-o2::constants::math::PIHalf, 3. * o2::constants::math::PIHalf);
5930+
5931+
ROOT::Math::PtEtaPhiMVector v2_randomPhi_trans(v2.pt(), v2.eta(), randomPhi_trans, o2::constants::physics::MassPionCharged);
5932+
values[kCosChi_randomPhi_trans] = LorentzTransformJpsihadroncosChi("coschi", v1, v2_randomPhi_trans);
5933+
values[kWeight_randomPhi_trans] = LorentzTransformJpsihadroncosChi("weight_boost", v1, v2_randomPhi_trans) / v1.M();
5934+
5935+
ROOT::Math::PtEtaPhiMVector v2_randomPhi_toward(v2.pt(), v2.eta(), randomPhi_toward, o2::constants::physics::MassPionCharged);
5936+
values[kCosChi_randomPhi_toward] = LorentzTransformJpsihadroncosChi("coschi", v1, v2_randomPhi_toward);
5937+
values[kWeight_randomPhi_toward] = LorentzTransformJpsihadroncosChi("weight_boost", v1, v2_randomPhi_toward) / v1.M();
5938+
5939+
ROOT::Math::PtEtaPhiMVector v2_randomPhi_away(v2.pt(), v2.eta(), randomPhi_away, o2::constants::physics::MassPionCharged);
5940+
values[kCosChi_randomPhi_away] = LorentzTransformJpsihadroncosChi("coschi", v1, v2_randomPhi_away);
5941+
values[kWeight_randomPhi_away] = LorentzTransformJpsihadroncosChi("weight_boost", v1, v2_randomPhi_away) / v1.M();
5942+
5943+
values[kdeltaphi_randomPhi_trans] = RecoDecay::constrainAngle(v1.phi() - randomPhi_trans, -o2::constants::math::PIHalf);
5944+
values[kdeltaphi_randomPhi_toward] = RecoDecay::constrainAngle(v1.phi() - randomPhi_toward, -o2::constants::math::PIHalf);
5945+
values[kdeltaphi_randomPhi_away] = RecoDecay::constrainAngle(v1.phi() - randomPhi_away, -o2::constants::math::PIHalf);
5946+
}
5947+
}
5948+
}
5949+
5950+
template <int pairType, typename T1, typename T2, typename T3, typename T4, typename T5>
5951+
void VarManager::FillEnergyCorrelatorsUnfoldingTriple(T1 const& lepton1, T2 const& lepton2, T3 const& hadron, T4 const& track, T5 const& t1, float* values)
5952+
{
5953+
if (fgUsedVars[kMCCosChi_gen] || fgUsedVars[kMCWeight_gen] || fgUsedVars[kMCdeltaeta_gen] || fgUsedVars[kMCCosChi_rec] || fgUsedVars[kMCWeight_rec] || fgUsedVars[kMCdeltaeta_rec]) {
5954+
// energy correlators
5955+
5956+
float m1 = o2::constants::physics::MassElectron;
5957+
float m2 = o2::constants::physics::MassElectron;
5958+
5959+
ROOT::Math::PtEtaPhiMVector v_lepton1(lepton1.pt(), lepton1.eta(), lepton1.phi(), m1);
5960+
ROOT::Math::PtEtaPhiMVector v_lepton2(lepton2.pt(), lepton2.eta(), lepton2.phi(), m2);
5961+
ROOT::Math::PtEtaPhiMVector dilepton = v_lepton1 + v_lepton2;
5962+
5963+
float MassHadron;
5964+
if constexpr (pairType == kJpsiHadronMass) {
5965+
MassHadron = TMath::Sqrt(t1.e() * t1.e() - t1.p() * t1.p());
5966+
}
5967+
if constexpr (pairType == kJpsiPionMass) {
5968+
MassHadron = o2::constants::physics::MassPionCharged;
5969+
}
5970+
ROOT::Math::PtEtaPhiMVector v1_gen(track.pt(), track.eta(), track.phi(), o2::constants::physics::MassJPsi);
5971+
ROOT::Math::PtEtaPhiMVector v2_gen(t1.pt(), t1.eta(), t1.phi(), MassHadron);
5972+
float E_boost_gen = LorentzTransformJpsihadroncosChi("weight_boost", v1_gen, v2_gen);
5973+
float CosChi_gen = LorentzTransformJpsihadroncosChi("coschi", v1_gen, v2_gen);
5974+
values[kMCCosChi_gen] = CosChi_gen;
5975+
values[kMCWeight_gen] = E_boost_gen / o2::constants::physics::MassJPsi;
5976+
values[kMCdeltaeta_gen] = track.eta() - t1.eta();
5977+
5978+
ROOT::Math::PtEtaPhiMVector v1_rec(dilepton.pt(), dilepton.eta(), dilepton.phi(), dilepton.mass());
5979+
ROOT::Math::PtEtaPhiMVector v2_rec(hadron.pt(), hadron.eta(), hadron.phi(), o2::constants::physics::MassPionCharged);
5980+
values[kMCCosChi_rec] = LorentzTransformJpsihadroncosChi("coschi", v1_rec, v2_rec);
5981+
float E_boost_rec = LorentzTransformJpsihadroncosChi("weight_boost", v1_rec, v2_rec);
5982+
values[kMCWeight_rec] = E_boost_rec / v1_rec.M();
5983+
values[kMCdeltaeta_rec] = dilepton.eta() - hadron.eta();
5984+
}
5985+
}
5986+
58755987
template <typename T1, typename T2>
58765988
void VarManager::FillDileptonPhoton(T1 const& dilepton, T2 const& photon, float* values)
58775989
{

0 commit comments

Comments
 (0)