From 1598d5809d48198f51586f4be5920e6e2fc7f43e Mon Sep 17 00:00:00 2001 From: Julian Book Date: Tue, 10 Dec 2013 13:32:52 +0100 Subject: [PATCH] -dca pair --- PWGDQ/dielectron/AliDielectronPair.cxx | 20 ++++++++++++++++++-- PWGDQ/dielectron/AliDielectronPair.h | 7 ++++--- PWGDQ/dielectron/AliDielectronVarManager.h | 8 ++++++++ 3 files changed, 30 insertions(+), 5 deletions(-) diff --git a/PWGDQ/dielectron/AliDielectronPair.cxx b/PWGDQ/dielectron/AliDielectronPair.cxx index 2ce04a40e95..a26219000ee 100644 --- a/PWGDQ/dielectron/AliDielectronPair.cxx +++ b/PWGDQ/dielectron/AliDielectronPair.cxx @@ -443,10 +443,10 @@ Double_t AliDielectronPair::GetCosPointingAngle(const AliVVertex *primVtx) const deltaPos[1] = fPair.GetY() - primVtx->GetY(); deltaPos[2] = fPair.GetZ() - primVtx->GetZ(); - Double_t momV02 = fPair.GetPx()*fPair.GetPx() + fPair.GetPy()*fPair.GetPy() + fPair.GetPz()*fPair.GetPz(); + Double_t momV02 = Px()*Px() + Py()*Py() + Pz()*Pz(); Double_t deltaPos2 = deltaPos[0]*deltaPos[0] + deltaPos[1]*deltaPos[1] + deltaPos[2]*deltaPos[2]; - Double_t cosinePointingAngle = (deltaPos[0]*fPair.GetPx() + deltaPos[1]*fPair.GetPy() + deltaPos[2]*fPair.GetPz()) / TMath::Sqrt(momV02 * deltaPos2); + Double_t cosinePointingAngle = (deltaPos[0]*Px() + deltaPos[1]*Py() + deltaPos[2]*Pz()) / TMath::Sqrt(momV02 * deltaPos2); return TMath::Abs(cosinePointingAngle); @@ -490,6 +490,22 @@ Double_t AliDielectronPair::GetArmPt() const return (momNeg.Perp(momTot)); } +//______________________________________________ +void AliDielectronPair::GetDCA(const AliVVertex *primVtx, Double_t d0z0[2]) const +{ + // + // Calculate the dca of the mother with respect to the primary vertex + // + if(!primVtx) return; + + d0z0[0] = TMath::Sqrt(TMath::Power(Xv()-primVtx->GetX(),2) + + TMath::Power(Yv()-primVtx->GetY(),2) ); + + d0z0[1] = Zv() - primVtx->GetZ(); + return; + +} + // //______________________________________________ // Double_t AliDielectronPair::GetLXY(const AliVVertex * const vtx) const // { diff --git a/PWGDQ/dielectron/AliDielectronPair.h b/PWGDQ/dielectron/AliDielectronPair.h index b71c73db149..8283093c7f0 100644 --- a/PWGDQ/dielectron/AliDielectronPair.h +++ b/PWGDQ/dielectron/AliDielectronPair.h @@ -134,13 +134,14 @@ public: Double_t PsiPair(Double_t MagField)const; //Angle cut w.r.t. to magnetic field Double_t PhivPair(Double_t MagField)const; //Angle of ee plane w.r.t. to magnetic field - - //Calculate the angle between ee decay plane and variables - Double_t GetPairPlaneAngle(const Double_t kv0CrpH2, const Int_t VariNum) const; + + //Calculate the angle between ee decay plane and variables + Double_t GetPairPlaneAngle(const Double_t kv0CrpH2, const Int_t VariNum) const; Double_t GetCosPointingAngle(const AliVVertex *primVtx) const; Double_t GetArmAlpha() const; Double_t GetArmPt() const; + void GetDCA(const AliVVertex *primVtx, Double_t d0z0[2]) const; // internal KF particle const AliKFParticle& GetKFParticle() const { return fPair; } diff --git a/PWGDQ/dielectron/AliDielectronVarManager.h b/PWGDQ/dielectron/AliDielectronVarManager.h index 70aef816e39..7db8f933101 100644 --- a/PWGDQ/dielectron/AliDielectronVarManager.h +++ b/PWGDQ/dielectron/AliDielectronVarManager.h @@ -1268,6 +1268,14 @@ inline void AliDielectronVarManager::FillVarDielectronPair(const AliDielectronPa // values[AliDielectronVarManager::kPseudoProperTime] = fgEvent ? pair->GetPseudoProperTime(fgEvent->GetPrimaryVertex()): -1e10; values[AliDielectronVarManager::kPseudoProperTimeErr] = (errPseudoProperTime2 > 0) ? TMath::Sqrt(errPseudoProperTime2) : -1e10; + // impact parameter + Double_t d0z0[2]; + d0z0[0]=-999.; + d0z0[1]=-999.; + if(fgEvent) pair->GetDCA(fgEvent->GetPrimaryVertex(), d0z0); + values[AliDielectronVarManager::kImpactParXY] = d0z0[0]; + values[AliDielectronVarManager::kImpactParZ] = d0z0[1]; + if (!(pair->GetKFUsage())) { //if KF Pairing is not enabled, overwrite values that can be easily derived from legs -- 2.43.0