ROOT logo
/*************************************************************************
* Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
*                                                                        *
* Author: The ALICE Off-line Project.                                    *
* Contributors are mentioned in the code where appropriate.              *
*                                                                        *
* Permission to use, copy, modify and distribute this software and its   *
* documentation strictly for non-commercial purposes is hereby granted   *
* without fee, provided that the above copyright notice appears in all   *
* copies and that both the copyright notice and this permission notice   *
* appear in the supporting documentation. The authors make no claims     *
* about the suitability of this software for any purpose. It is          *
* provided "as is" without express or implied warranty.                  *
**************************************************************************/

///////////////////////////////////////////////////////////////////////////
//                                                                       //
//  Dielectron Pair class. Internally it makes use of AliKFParticle.     //
//                                                                       //
///////////////////////////////////////////////////////////////////////////


#include <TDatabasePDG.h>
#include <AliVTrack.h>
#include <AliVVertex.h>
#include <AliPID.h>
#include <AliExternalTrackParam.h>
#include <AliESDEvent.h>

#include "AliDielectronPair.h"

ClassImp(AliDielectronPair)

Double_t AliDielectronPair::fBeamEnergy=-1.;

AliDielectronPair::AliDielectronPair() :
  fType(-1),
  fLabel(-1),
  fPdgCode(0),
  fPair(),
  fD1(),
  fD2(),
  fRefD1(),
  fRefD2(),
  fKFUsage(kTRUE)
{
  //
  // Default Constructor
  //
  
}

//______________________________________________
AliDielectronPair::AliDielectronPair(AliVTrack * const particle1, Int_t pid1,
                                     AliVTrack * const particle2, Int_t pid2, Char_t type) :
  fType(type),
  fLabel(-1),
  fPdgCode(0),
  fPair(),
  fD1(),
  fD2(),
  fRefD1(),
  fRefD2(),
  fKFUsage(kTRUE)
{
  //
  // Constructor with tracks
  //
  SetTracks(particle1, pid1, particle2, pid2);
}

//______________________________________________
AliDielectronPair::AliDielectronPair(const AliKFParticle * const particle1,
                                     const AliKFParticle * const particle2,
                                     AliVTrack * const refParticle1,
                                     AliVTrack * const refParticle2, Char_t type) :
  fType(type),
  fLabel(-1),
  fPdgCode(0),
  fPair(),
  fD1(),
  fD2(),
  fRefD1(),
  fRefD2(),
  fKFUsage(kTRUE)
{
  //
  // Constructor with tracks
  //
  SetTracks(particle1, particle2,refParticle1,refParticle2);
}

//______________________________________________
AliDielectronPair::~AliDielectronPair()
{
  //
  // Default Destructor
  //
  
}

//______________________________________________
void AliDielectronPair::SetTracks(AliVTrack * const particle1, Int_t pid1,
                                  AliVTrack * const particle2, Int_t pid2)
{
  //
  // Sort particles by pt, first particle larget Pt
  // set AliKF daughters and pair
  // refParticle1 and 2 are the original tracks. In the case of track rotation
  // they are needed in the framework
  //
  fPair.Initialize();
  fD1.Initialize();
  fD2.Initialize();

  AliKFParticle kf1(*particle1,pid1);
  AliKFParticle kf2(*particle2,pid2);

  fPair.AddDaughter(kf1);
  fPair.AddDaughter(kf2);

  if (particle1->Pt()>particle2->Pt()){
    fRefD1 = particle1;
    fRefD2 = particle2;
    fD1+=kf1;
    fD2+=kf2;
  } else {
    fRefD1 = particle2;
    fRefD2 = particle1;
    fD1+=kf2;
    fD2+=kf1;
  }
}
//______________________________________________
void AliDielectronPair::SetGammaTracks(AliVTrack * const particle1, Int_t pid1,
				       AliVTrack * const particle2, Int_t pid2)
{
  //
  // Sort particles by pt, first particle larget Pt
  // set AliKF daughters and a GAMMA pair
  // refParticle1 and 2 are the original tracks. In the case of track rotation
  // they are needed in the framework
  //
  fD1.Initialize();
  fD2.Initialize();

  AliKFParticle kf1(*particle1,pid1);
  AliKFParticle kf2(*particle2,pid2);
  fPair.ConstructGamma(kf1,kf2);

  if (particle1->Pt()>particle2->Pt()){
    fRefD1 = particle1;
    fRefD2 = particle2;
    fD1+=kf1;
    fD2+=kf2;
  } else {
    fRefD1 = particle2;
    fRefD2 = particle1;
    fD1+=kf2;
    fD2+=kf1;
  }
}

//______________________________________________
void AliDielectronPair::SetTracks(const AliKFParticle * const particle1,
                                  const AliKFParticle * const particle2,
                                  AliVTrack * const refParticle1,
                                  AliVTrack * const refParticle2)
{
  //
  // Sort particles by pt, first particle larget Pt
  // set AliKF daughters and pair
  // refParticle1 and 2 are the original tracks. In the case of track rotation
  // they are needed in the framework
  //
  fPair.Initialize();
  fD1.Initialize();
  fD2.Initialize();
  
  AliKFParticle kf1(*particle1);
  AliKFParticle kf2(*particle2);
  
  fPair.AddDaughter(kf1);
  fPair.AddDaughter(kf2);
  
  if (kf1.GetPt()>kf2.GetPt()){
    fRefD1 = refParticle1;
    fRefD2 = refParticle2;
    fD1+=kf1;
    fD2+=kf2;
  } else {
    fRefD1 = refParticle2;
    fRefD2 = refParticle1;
    fD1+=kf2;
    fD2+=kf1;
  }
}

//______________________________________________
void AliDielectronPair::GetThetaPhiCM(Double_t &thetaHE, Double_t &phiHE, Double_t &thetaCS, Double_t &phiCS) const
{
  //
  // Calculate theta and phi in helicity and Collins-Soper coordinate frame
  //
  Double_t pxyz1[3]={fD1.GetPx(),fD1.GetPy(),fD1.GetPz()};
  Double_t pxyz2[3]={fD2.GetPx(),fD2.GetPy(),fD2.GetPz()};
  Double_t eleMass=AliPID::ParticleMass(AliPID::kElectron);
  Double_t proMass=AliPID::ParticleMass(AliPID::kProton);
  
//   AliVParticle *d1 = static_cast<AliVParticle*>(fRefD1.GetObject());
//   AliVParticle *d2 = static_cast<AliVParticle*>(fRefD2.GetObject());

//   d1->PxPyPz(pxyz1);
//   d2->PxPyPz(pxyz2);
  
  TLorentzVector projMom(0.,0.,-fBeamEnergy,TMath::Sqrt(fBeamEnergy*fBeamEnergy+proMass*proMass));
  TLorentzVector targMom(0.,0., fBeamEnergy,TMath::Sqrt(fBeamEnergy*fBeamEnergy+proMass*proMass));
  
  // first & second daughter 4-mom
  TLorentzVector p1Mom(pxyz1[0],pxyz1[1],pxyz1[2],
                       TMath::Sqrt(pxyz1[0]*pxyz1[0]+pxyz1[1]*pxyz1[1]+pxyz1[2]*pxyz1[2]+eleMass*eleMass));
  TLorentzVector p2Mom(pxyz2[0],pxyz2[1],pxyz2[2],
                       TMath::Sqrt(pxyz2[0]*pxyz2[0]+pxyz2[1]*pxyz2[1]+pxyz2[2]*pxyz2[2]+eleMass*eleMass));
  // J/Psi 4-momentum vector
  TLorentzVector motherMom=p1Mom+p2Mom;
  
  // boost all the 4-mom vectors to the mother rest frame
  TVector3 beta = (-1.0/motherMom.E())*motherMom.Vect();
  p1Mom.Boost(beta);
  p2Mom.Boost(beta);
  projMom.Boost(beta);
  targMom.Boost(beta);

    // x,y,z axes
  TVector3 zAxisHE = (motherMom.Vect()).Unit();
  TVector3 zAxisCS = ((projMom.Vect()).Unit()-(targMom.Vect()).Unit()).Unit();
  TVector3 yAxis = ((projMom.Vect()).Cross(targMom.Vect())).Unit();
  TVector3 xAxisHE = (yAxis.Cross(zAxisHE)).Unit();
  TVector3 xAxisCS = (yAxis.Cross(zAxisCS)).Unit();
  
  // fill theta and phi
  if(fD1.GetQ()>0){
    thetaHE = zAxisHE.Dot((p1Mom.Vect()).Unit());
    thetaCS = zAxisCS.Dot((p1Mom.Vect()).Unit());
    phiHE   = TMath::ATan2((p1Mom.Vect()).Dot(yAxis), (p1Mom.Vect()).Dot(xAxisHE));
    phiCS   = TMath::ATan2((p1Mom.Vect()).Dot(yAxis), (p1Mom.Vect()).Dot(xAxisCS));
  } else {
    thetaHE = zAxisHE.Dot((p2Mom.Vect()).Unit());
    thetaCS = zAxisCS.Dot((p2Mom.Vect()).Unit());
    phiHE   = TMath::ATan2((p2Mom.Vect()).Dot(yAxis), (p2Mom.Vect()).Dot(xAxisHE));
    phiCS   = TMath::ATan2((p2Mom.Vect()).Dot(yAxis), (p2Mom.Vect()).Dot(xAxisCS));
  }
}


//______________________________________________
Double_t AliDielectronPair::PsiPair(Double_t MagField) const
{
  //Following idea to use opening of colinear pairs in magnetic field from e.g. PHENIX
  //to ID conversions. Adapted from AliTRDv0Info class
  Double_t x, y;//, z;
  x = fPair.GetX();
  y = fPair.GetY();
  //  z = fPair.GetZ();

  Double_t m1[3] = {0,0,0};
  Double_t m2[3] = {0,0,0};

  m1[0] = fD1.GetPx();
  m1[1] = fD1.GetPy();
  m1[2] = fD1.GetPz();  

  m2[0] = fD2.GetPx();
  m2[1] = fD2.GetPy();
  m2[2] = fD2.GetPz();

  Double_t deltat = 1.;
  deltat = TMath::ATan(m2[2]/(TMath::Sqrt(m2[0]*m2[0] + m2[1]*m2[1])+1.e-13))-
	TMath::ATan(m1[2]/(TMath::Sqrt(m1[0]*m1[0] + m1[1]*m1[1])+1.e-13));//difference of angles of the two daughter tracks with z-axis

  Double_t radiussum = TMath::Sqrt(x*x + y*y) + 50;//radius to which tracks shall be propagated

  Double_t mom1Prop[3];
  Double_t mom2Prop[3];

  AliExternalTrackParam *d1 = static_cast<AliExternalTrackParam*>(fRefD1.GetObject());
  AliExternalTrackParam *d2 = static_cast<AliExternalTrackParam*>(fRefD2.GetObject());

  AliExternalTrackParam nt(*d1), pt(*d2);

  Double_t fPsiPair = 4.;
  if(nt.PropagateTo(radiussum,MagField) == 0)//propagate tracks to the outside
	fPsiPair =  -5.;
  if(pt.PropagateTo(radiussum,MagField) == 0)
	fPsiPair = -5.;
  pt.GetPxPyPz(mom1Prop);//Get momentum vectors of tracks after propagation
  nt.GetPxPyPz(mom2Prop);



  Double_t pEle =
	TMath::Sqrt(mom2Prop[0]*mom2Prop[0]+mom2Prop[1]*mom2Prop[1]+mom2Prop[2]*mom2Prop[2]);//absolute momentum val
  Double_t pPos =
	TMath::Sqrt(mom1Prop[0]*mom1Prop[0]+mom1Prop[1]*mom1Prop[1]+mom1Prop[2]*mom1Prop[2]);//absolute momentum val

  Double_t scalarproduct =
	mom1Prop[0]*mom2Prop[0]+mom1Prop[1]*mom2Prop[1]+mom1Prop[2]*mom2Prop[2];//scalar product of propagated posit

  Double_t chipair = TMath::ACos(scalarproduct/(pEle*pPos));//Angle between propagated daughter tracks

  fPsiPair =  TMath::Abs(TMath::ASin(deltat/chipair));

  return fPsiPair;

}

//______________________________________________
Double_t AliDielectronPair::ThetaPhiCM(const AliVParticle* d1, const AliVParticle* d2, 
                                       Bool_t isHE, Bool_t isTheta)
{
  // The function calculates theta and phi in the mother rest frame with
  // respect to the helicity coordinate system and Collins-Soper coordinate system
  // TO DO: generalize for different decays (only J/Psi->e+e- now)

  // Laboratory frame 4-vectors:
  // projectile beam & target beam 4-mom
  Double_t px1=d1->Px();
  Double_t py1=d1->Py();
  Double_t pz1=d1->Pz();
  Double_t px2=d2->Px();
  Double_t py2=d2->Py();
  Double_t pz2=d2->Pz();
  Double_t eleMass=AliPID::ParticleMass(AliPID::kElectron);
  Double_t proMass=AliPID::ParticleMass(AliPID::kProton);
//   printf(" beam energy %f \n ", fBeamEnergy);
  TLorentzVector projMom(0.,0.,-fBeamEnergy,TMath::Sqrt(fBeamEnergy*fBeamEnergy+proMass*proMass));
  TLorentzVector targMom(0.,0., fBeamEnergy,TMath::Sqrt(fBeamEnergy*fBeamEnergy+proMass*proMass));
  
  // first & second daughter 4-mom
  TLorentzVector p1Mom(px1,py1,pz1,TMath::Sqrt(px1*px1+py1*py1+pz1*pz1+eleMass*eleMass));
  TLorentzVector p2Mom(px2,py2,pz2,TMath::Sqrt(px2*px2+py2*py2+pz2*pz2+eleMass*eleMass));
  // J/Psi 4-momentum vector
  TLorentzVector motherMom=p1Mom+p2Mom;
  
  // boost all the 4-mom vectors to the mother rest frame
  TVector3 beta = (-1.0/motherMom.E())*motherMom.Vect();
  p1Mom.Boost(beta);
  p2Mom.Boost(beta);
  projMom.Boost(beta);
  targMom.Boost(beta);
  
  // x,y,z axes 
  TVector3 zAxis;
  if(isHE) zAxis = (motherMom.Vect()).Unit();
  else zAxis = ((projMom.Vect()).Unit()-(targMom.Vect()).Unit()).Unit();
  TVector3 yAxis = ((projMom.Vect()).Cross(targMom.Vect())).Unit();
  TVector3 xAxis = (yAxis.Cross(zAxis)).Unit();
  
  // return either theta or phi
  if(isTheta) {
    if(d1->Charge()>0)
      return zAxis.Dot((p1Mom.Vect()).Unit());
    else 
      return zAxis.Dot((p2Mom.Vect()).Unit());

  }
  else {
    if(d1->Charge()>0)
      return TMath::ATan2((p1Mom.Vect()).Dot(yAxis), (p1Mom.Vect()).Dot(xAxis));
    else
      return TMath::ATan2((p2Mom.Vect()).Dot(yAxis), (p2Mom.Vect()).Dot(xAxis));
  }
}

//______________________________________________
Double_t AliDielectronPair::ThetaPhiCM(Bool_t isHE, Bool_t isTheta) const {
  // The function calculates theta and phi in the mother rest frame with 
  // respect to the helicity coordinate system and Collins-Soper coordinate system
  // TO DO: generalize for different decays (only J/Psi->e+e- now)

  // Laboratory frame 4-vectors:
  // projectile beam & target beam 4-mom
  AliVParticle *d1 = static_cast<AliVParticle*>(fRefD1.GetObject());
  AliVParticle *d2 = static_cast<AliVParticle*>(fRefD2.GetObject());
  
  Double_t px1=d1->Px();
  Double_t py1=d1->Py();
  Double_t pz1=d1->Pz();
  Double_t px2=d2->Px();
  Double_t py2=d2->Py();
  Double_t pz2=d2->Pz();
  Double_t eleMass=AliPID::ParticleMass(AliPID::kElectron);
  Double_t proMass=AliPID::ParticleMass(AliPID::kProton);
  
  TLorentzVector projMom(0.,0.,-fBeamEnergy,TMath::Sqrt(fBeamEnergy*fBeamEnergy+proMass*proMass));
  TLorentzVector targMom(0.,0., fBeamEnergy,TMath::Sqrt(fBeamEnergy*fBeamEnergy+proMass*proMass));
  
  // first & second daughter 4-mom
  // first & second daughter 4-mom
  TLorentzVector p1Mom(px1,py1,pz1,TMath::Sqrt(px1*px1+py1*py1+pz1*pz1+eleMass*eleMass));
  TLorentzVector p2Mom(px2,py2,pz2,TMath::Sqrt(px2*px2+py2*py2+pz2*pz2+eleMass*eleMass));
  // J/Psi 4-momentum vector
  TLorentzVector motherMom=p1Mom+p2Mom;

  // boost all the 4-mom vectors to the mother rest frame
  TVector3 beta = (-1.0/motherMom.E())*motherMom.Vect();
  p1Mom.Boost(beta);
  p2Mom.Boost(beta);
  projMom.Boost(beta);
  targMom.Boost(beta);

  // x,y,z axes 
  TVector3 zAxis;
  if(isHE) zAxis = (motherMom.Vect()).Unit();
  else zAxis = ((projMom.Vect()).Unit()-(targMom.Vect()).Unit()).Unit();
  TVector3 yAxis = ((projMom.Vect()).Cross(targMom.Vect())).Unit();
  TVector3 xAxis = (yAxis.Cross(zAxis)).Unit();

  // return either theta or phi
  if(isTheta) {
    if(fD1.GetQ()>0) 
      return zAxis.Dot((p1Mom.Vect()).Unit());
    else
      return zAxis.Dot((p2Mom.Vect()).Unit());
  }
  else {
    if(fD1.GetQ()>0)
      return TMath::ATan2((p1Mom.Vect()).Dot(yAxis), (p1Mom.Vect()).Dot(xAxis));
    else
      return TMath::ATan2((p2Mom.Vect()).Dot(yAxis), (p2Mom.Vect()).Dot(xAxis));
  }
}
//______________________________________________
Double_t AliDielectronPair::GetCosPointingAngle(const AliVVertex *primVtx) const
{
  //
  // Calculate the poiting angle of the pair to the primary vertex and take the cosine
  //
  if(!primVtx) return -1.;

  Double_t deltaPos[3]; //vector between the reference point and the V0 vertex
  deltaPos[0] = fPair.GetX() - primVtx->GetX();
  deltaPos[1] = fPair.GetY() - primVtx->GetY();
  deltaPos[2] = fPair.GetZ() - primVtx->GetZ();

  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]*Px() + deltaPos[1]*Py() + deltaPos[2]*Pz()) / TMath::Sqrt(momV02 * deltaPos2);
  
  return TMath::Abs(cosinePointingAngle);

}

//______________________________________________
Double_t AliDielectronPair::GetArmAlpha() const
{
  //
  // Calculate the Armenteros-Podolanski Alpha
  //
  Int_t qD1 = fD1.GetQ();

  TVector3 momNeg( (qD1<0?fD1.GetPx():fD2.GetPx()),
		   (qD1<0?fD1.GetPy():fD2.GetPy()),
		   (qD1<0?fD1.GetPz():fD2.GetPz()) );
  TVector3 momPos( (qD1<0?fD2.GetPx():fD1.GetPx()),
		   (qD1<0?fD2.GetPy():fD1.GetPy()),
		   (qD1<0?fD2.GetPz():fD1.GetPz()) );
  TVector3 momTot(Px(),Py(),Pz());

  Double_t lQlNeg = momNeg.Dot(momTot)/momTot.Mag();
  Double_t lQlPos = momPos.Dot(momTot)/momTot.Mag();

  return ((lQlPos - lQlNeg)/(lQlPos + lQlNeg));
}

//______________________________________________
Double_t AliDielectronPair::GetArmPt() const
{
  //
  // Calculate the Armenteros-Podolanski Pt
  //
  Int_t qD1 = fD1.GetQ();

  TVector3 momNeg( (qD1<0?fD1.GetPx():fD2.GetPx()),
		   (qD1<0?fD1.GetPy():fD2.GetPy()),
		   (qD1<0?fD1.GetPz():fD2.GetPz()) );
  TVector3 momTot(Px(),Py(),Pz());

  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
// {
//   //
//   // Calculate the decay length in XY taking into account the primary vertex position
//   //
//   if(!vtx) return 0;
//   return ( (Xv()-vtx->GetX()) * Px() + (Yv()-vtx->GetY()) * Py() )/Pt()  ;
// }

// //______________________________________________
// Double_t AliDielectronPair::GetPseudoProperTime(const AliVVertex * const vtx) const
// {
//   //
//   // Calculate the pseudo proper time
//   //
//   Double_t lxy=GetLXY(vtx);
//   Double_t psProperDecayLength = lxy*(TDatabasePDG::Instance()->GetParticle(443)->Mass())/Pt();
//   return psProperDecayLength;
// }


//______________________________________________
Double_t AliDielectronPair::PhivPair(Double_t MagField) const
{
  //Following idea to use opening of colinear pairs in magnetic field from e.g. PHENIX
  //to ID conversions. Angle between ee plane and magnetic field is calculated.

  //Define local buffer variables for leg properties                                                                                                               
  Double_t px1=-9999.,py1=-9999.,pz1=-9999.;
  Double_t px2=-9999.,py2=-9999.,pz2=-9999.;

  if(MagField>0){
    if(fD1.GetQ()>0){
      px1 = fD1.GetPx();
      py1 = fD1.GetPy();
      pz1 = fD1.GetPz();

      px2 = fD2.GetPx();
      py2 = fD2.GetPy();
      pz2 = fD2.GetPz();
    }else{
      px1 = fD2.GetPx();
      py1 = fD2.GetPy();
      pz1 = fD2.GetPz();

      px2 = fD1.GetPx();
      py2 = fD1.GetPy();
      pz2 = fD1.GetPz();
    }
  }else{
    if(fD1.GetQ()>0){
      px1 = fD2.GetPx();
      py1 = fD2.GetPy();
      pz1 = fD2.GetPz();

      px2 = fD1.GetPx();
      py2 = fD1.GetPy();
      pz2 = fD1.GetPz();
    }else{
      px1 = fD1.GetPx();
      py1 = fD1.GetPy();
      pz1 = fD1.GetPz();

      px2 = fD2.GetPx();
      py2 = fD2.GetPy();
      pz2 = fD2.GetPz();
    }
  }    

  Double_t px = px1+px2;
  Double_t py = py1+py2;
  Double_t pz = pz1+pz2;
  Double_t dppair = TMath::Sqrt(px*px+py*py+pz*pz);

  //unit vector of (pep+pem) 
  Double_t pl = dppair;
  Double_t ux = px/pl;
  Double_t uy = py/pl;
  Double_t uz = pz/pl;
  Double_t ax = uy/TMath::Sqrt(ux*ux+uy*uy);
  Double_t ay = -ux/TMath::Sqrt(ux*ux+uy*uy); 
  
  //momentum of e+ and e- in (ax,ay,az) axis. Note that az=0 by 
  //definition. 
  //Double_t ptep = iep->Px()*ax + iep->Py()*ay; 
  //Double_t ptem = iem->Px()*ax + iem->Py()*ay; 
  
  Double_t pxep = px1;
  Double_t pyep = py1;
  Double_t pzep = pz1;
  Double_t pxem = px2;
  Double_t pyem = py2;
  Double_t pzem = pz2;
  
  //vector product of pep X pem 
  Double_t vpx = pyep*pzem - pzep*pyem; 
  Double_t vpy = pzep*pxem - pxep*pzem; 
  Double_t vpz = pxep*pyem - pyep*pxem; 
  Double_t vp = sqrt(vpx*vpx+vpy*vpy+vpz*vpz); 
  //Double_t thev = acos(vpz/vp); 
  
  //unit vector of pep X pem 
  Double_t vx = vpx/vp; 
  Double_t vy = vpy/vp; 
  Double_t vz = vpz/vp; 

  //The third axis defined by vector product (ux,uy,uz)X(vx,vy,vz) 
  Double_t wx = uy*vz - uz*vy; 
  Double_t wy = uz*vx - ux*vz; 
  //Double_t wz = ux*vy - uy*vx; 
  //Double_t wl = sqrt(wx*wx+wy*wy+wz*wz); 
  // by construction, (wx,wy,wz) must be a unit vector. 
  // measure angle between (wx,wy,wz) and (ax,ay,0). The angle between them 
  // should be small if the pair is conversion 
  //
  Double_t cosPhiV = wx*ax + wy*ay; 
  Double_t phiv = TMath::ACos(cosPhiV); 

  return phiv;

}

//______________________________________________
Double_t AliDielectronPair::GetPairPlaneAngle(Double_t v0rpH2, Int_t VariNum)const
{

  // Calculate the angle between electron pair plane and variables
  // kv0rpH2 is reaction plane angle using V0-A,C,AC,Random

  Double_t px1=-9999.,py1=-9999.,pz1=-9999.;
  Double_t px2=-9999.,py2=-9999.,pz2=-9999.;

  px1 = fD1.GetPx();
  py1 = fD1.GetPy();
  pz1 = fD1.GetPz();

  px2 = fD2.GetPx();
  py2 = fD2.GetPy();
  pz2 = fD2.GetPz();

  //p1+p2
  Double_t px = px1+px2;
  Double_t py = py1+py2;
  Double_t pz = pz1+pz2;

  // normal vector of ee plane
  Double_t pnorx = py1*pz2 - pz1*py2;
  Double_t pnory = pz1*px2 - px1*pz2;
  Double_t pnorz = px1*py2 - py1*px2;
  Double_t pnor  = TMath::Sqrt( pnorx*pnorx + pnory*pnory + pnorz*pnorz );

  //unit vector
  Double_t upnx = -9999.;
  Double_t upny = -9999.;
  Double_t upnz = -9999.;

  if (pnor !=0)
    {
      upnx= pnorx/pnor;
      upny= pnory/pnor;
      upnz= pnorz/pnor;
    }


  Double_t ax = -9999.;
  Double_t ay = -9999.;
  Double_t az = -9999.;

  //variable 1
  //seeing the angle between ee decay plane and reaction plane by using V0-A,C,AC,Random
	  if(VariNum == 1){
		ax = TMath::Sin(v0rpH2);
		ay = -TMath::Cos(v0rpH2);
		az = 0.0;
	  }


	//variable 2
	//seeing the angle between ee decay plane and (p1+p2) rot ez
	  else if (VariNum == 2 ){
		ax = py;
		ay = -px;
		az = 0.0;
	  }

	//variable 3
	//seeing the angle between ee decay plane and (p1+p2) rot (p1+p2)x'z
	  else if (VariNum == 3 ){
		Double_t rotpx = px*TMath::Cos(v0rpH2)+py*TMath::Sin(v0rpH2);
		//Double_t rotpy = 0.0;
		// Double_t rotpz = pz;

		ax = py*pz;
		ay = pz*rotpx-pz*px;
		az = -rotpx*py;
	  }

	//variable 4
	//seeing the angle between ee decay plane and (p1+p2) rot ey'
	  else if (VariNum == 4){
		ax = 0.0;
		ay = 0.0;
		az = pz;
	  }

	Double_t denomHelper = ax*ax + ay*ay +az*az;
	Double_t uax = -9999.;
	Double_t uay = -9999.;
	Double_t uaz = -9999.;

	if (denomHelper !=0) {
	  uax = ax/TMath::Sqrt(denomHelper);
	  uay = ay/TMath::Sqrt(denomHelper);
	  uaz = az/TMath::Sqrt(denomHelper);
	}

	//PM is the angle between Pair plane and a plane decided by using variable 1-4

	Double_t cosPM = upnx*uax + upny*uay + upnz*uaz;
	Double_t PM = TMath::ACos(cosPM);
	
	//keep interval [0,pi/2]
	if(PM > TMath::Pi()/2){
	  PM -= TMath::Pi();
	  PM *= -1.0;
	  
	}
	return PM;
}


//_______________________________________________
Double_t AliDielectronPair::PairPlaneMagInnerProduct(Double_t ZDCrpH1) const
{

  // Calculate inner product of the strong magnetic field and electron pair plane

  if(TMath::Abs(ZDCrpH1 - 999.) < 1e-10) return -9999.;

  Double_t px1=-9999.,py1=-9999.,pz1=-9999.;
  Double_t px2=-9999.,py2=-9999.,pz2=-9999.;

  if(fD1.GetQ()<0){
    px1 = fD1.GetPx();
    py1 = fD1.GetPy();
    pz1 = fD1.GetPz();

    px2 = fD2.GetPx();
    py2 = fD2.GetPy();
    pz2 = fD2.GetPz();

  }else{
    px1 = fD2.GetPx();
    py1 = fD2.GetPy();
    pz1 = fD2.GetPz();

    px2 = fD1.GetPx();
    py2 = fD1.GetPy();
    pz2 = fD1.GetPz();

  }


  // normal vector of ee plane
  Double_t pnorx = py1*pz2 - pz1*py2;
  Double_t pnory = pz1*px2 - px1*pz2;
  Double_t pnorz = px1*py2 - py1*px2;
  Double_t pnor  = TMath::Sqrt( pnorx*pnorx + pnory*pnory + pnorz*pnorz );

  //unit vector
  Double_t upnx = -9999.;
  Double_t upny = -9999.;
  //Double_t upnz = -9999.;

  if (TMath::Abs(pnor) < 1e-10) return -9999.;

  upnx= pnorx/pnor;
  upny= pnory/pnor;
  //upnz= pnorz/pnor;

  //direction of strong magnetic field
  Double_t magx = TMath::Cos(ZDCrpH1+(TMath::Pi()/2));
  Double_t magy = TMath::Sin(ZDCrpH1+(TMath::Pi()/2));

  //inner product of strong magnetic field and  ee plane
  Double_t upnmag = upnx*magx + upny*magy;

  return upnmag;
}


//______________________________________________
void AliDielectronPair::SetBeamEnergy(AliVEvent *ev, Double_t beamEbyHand)
{
  //
  // set the beam energy (by hand in case of AODs)
  //
  if(ev->IsA()==AliESDEvent::Class())
    fBeamEnergy = ((AliESDEvent*)ev)->GetBeamEnergy();
  else
    fBeamEnergy = beamEbyHand;
}


 AliDielectronPair.cxx:1
 AliDielectronPair.cxx:2
 AliDielectronPair.cxx:3
 AliDielectronPair.cxx:4
 AliDielectronPair.cxx:5
 AliDielectronPair.cxx:6
 AliDielectronPair.cxx:7
 AliDielectronPair.cxx:8
 AliDielectronPair.cxx:9
 AliDielectronPair.cxx:10
 AliDielectronPair.cxx:11
 AliDielectronPair.cxx:12
 AliDielectronPair.cxx:13
 AliDielectronPair.cxx:14
 AliDielectronPair.cxx:15
 AliDielectronPair.cxx:16
 AliDielectronPair.cxx:17
 AliDielectronPair.cxx:18
 AliDielectronPair.cxx:19
 AliDielectronPair.cxx:20
 AliDielectronPair.cxx:21
 AliDielectronPair.cxx:22
 AliDielectronPair.cxx:23
 AliDielectronPair.cxx:24
 AliDielectronPair.cxx:25
 AliDielectronPair.cxx:26
 AliDielectronPair.cxx:27
 AliDielectronPair.cxx:28
 AliDielectronPair.cxx:29
 AliDielectronPair.cxx:30
 AliDielectronPair.cxx:31
 AliDielectronPair.cxx:32
 AliDielectronPair.cxx:33
 AliDielectronPair.cxx:34
 AliDielectronPair.cxx:35
 AliDielectronPair.cxx:36
 AliDielectronPair.cxx:37
 AliDielectronPair.cxx:38
 AliDielectronPair.cxx:39
 AliDielectronPair.cxx:40
 AliDielectronPair.cxx:41
 AliDielectronPair.cxx:42
 AliDielectronPair.cxx:43
 AliDielectronPair.cxx:44
 AliDielectronPair.cxx:45
 AliDielectronPair.cxx:46
 AliDielectronPair.cxx:47
 AliDielectronPair.cxx:48
 AliDielectronPair.cxx:49
 AliDielectronPair.cxx:50
 AliDielectronPair.cxx:51
 AliDielectronPair.cxx:52
 AliDielectronPair.cxx:53
 AliDielectronPair.cxx:54
 AliDielectronPair.cxx:55
 AliDielectronPair.cxx:56
 AliDielectronPair.cxx:57
 AliDielectronPair.cxx:58
 AliDielectronPair.cxx:59
 AliDielectronPair.cxx:60
 AliDielectronPair.cxx:61
 AliDielectronPair.cxx:62
 AliDielectronPair.cxx:63
 AliDielectronPair.cxx:64
 AliDielectronPair.cxx:65
 AliDielectronPair.cxx:66
 AliDielectronPair.cxx:67
 AliDielectronPair.cxx:68
 AliDielectronPair.cxx:69
 AliDielectronPair.cxx:70
 AliDielectronPair.cxx:71
 AliDielectronPair.cxx:72
 AliDielectronPair.cxx:73
 AliDielectronPair.cxx:74
 AliDielectronPair.cxx:75
 AliDielectronPair.cxx:76
 AliDielectronPair.cxx:77
 AliDielectronPair.cxx:78
 AliDielectronPair.cxx:79
 AliDielectronPair.cxx:80
 AliDielectronPair.cxx:81
 AliDielectronPair.cxx:82
 AliDielectronPair.cxx:83
 AliDielectronPair.cxx:84
 AliDielectronPair.cxx:85
 AliDielectronPair.cxx:86
 AliDielectronPair.cxx:87
 AliDielectronPair.cxx:88
 AliDielectronPair.cxx:89
 AliDielectronPair.cxx:90
 AliDielectronPair.cxx:91
 AliDielectronPair.cxx:92
 AliDielectronPair.cxx:93
 AliDielectronPair.cxx:94
 AliDielectronPair.cxx:95
 AliDielectronPair.cxx:96
 AliDielectronPair.cxx:97
 AliDielectronPair.cxx:98
 AliDielectronPair.cxx:99
 AliDielectronPair.cxx:100
 AliDielectronPair.cxx:101
 AliDielectronPair.cxx:102
 AliDielectronPair.cxx:103
 AliDielectronPair.cxx:104
 AliDielectronPair.cxx:105
 AliDielectronPair.cxx:106
 AliDielectronPair.cxx:107
 AliDielectronPair.cxx:108
 AliDielectronPair.cxx:109
 AliDielectronPair.cxx:110
 AliDielectronPair.cxx:111
 AliDielectronPair.cxx:112
 AliDielectronPair.cxx:113
 AliDielectronPair.cxx:114
 AliDielectronPair.cxx:115
 AliDielectronPair.cxx:116
 AliDielectronPair.cxx:117
 AliDielectronPair.cxx:118
 AliDielectronPair.cxx:119
 AliDielectronPair.cxx:120
 AliDielectronPair.cxx:121
 AliDielectronPair.cxx:122
 AliDielectronPair.cxx:123
 AliDielectronPair.cxx:124
 AliDielectronPair.cxx:125
 AliDielectronPair.cxx:126
 AliDielectronPair.cxx:127
 AliDielectronPair.cxx:128
 AliDielectronPair.cxx:129
 AliDielectronPair.cxx:130
 AliDielectronPair.cxx:131
 AliDielectronPair.cxx:132
 AliDielectronPair.cxx:133
 AliDielectronPair.cxx:134
 AliDielectronPair.cxx:135
 AliDielectronPair.cxx:136
 AliDielectronPair.cxx:137
 AliDielectronPair.cxx:138
 AliDielectronPair.cxx:139
 AliDielectronPair.cxx:140
 AliDielectronPair.cxx:141
 AliDielectronPair.cxx:142
 AliDielectronPair.cxx:143
 AliDielectronPair.cxx:144
 AliDielectronPair.cxx:145
 AliDielectronPair.cxx:146
 AliDielectronPair.cxx:147
 AliDielectronPair.cxx:148
 AliDielectronPair.cxx:149
 AliDielectronPair.cxx:150
 AliDielectronPair.cxx:151
 AliDielectronPair.cxx:152
 AliDielectronPair.cxx:153
 AliDielectronPair.cxx:154
 AliDielectronPair.cxx:155
 AliDielectronPair.cxx:156
 AliDielectronPair.cxx:157
 AliDielectronPair.cxx:158
 AliDielectronPair.cxx:159
 AliDielectronPair.cxx:160
 AliDielectronPair.cxx:161
 AliDielectronPair.cxx:162
 AliDielectronPair.cxx:163
 AliDielectronPair.cxx:164
 AliDielectronPair.cxx:165
 AliDielectronPair.cxx:166
 AliDielectronPair.cxx:167
 AliDielectronPair.cxx:168
 AliDielectronPair.cxx:169
 AliDielectronPair.cxx:170
 AliDielectronPair.cxx:171
 AliDielectronPair.cxx:172
 AliDielectronPair.cxx:173
 AliDielectronPair.cxx:174
 AliDielectronPair.cxx:175
 AliDielectronPair.cxx:176
 AliDielectronPair.cxx:177
 AliDielectronPair.cxx:178
 AliDielectronPair.cxx:179
 AliDielectronPair.cxx:180
 AliDielectronPair.cxx:181
 AliDielectronPair.cxx:182
 AliDielectronPair.cxx:183
 AliDielectronPair.cxx:184
 AliDielectronPair.cxx:185
 AliDielectronPair.cxx:186
 AliDielectronPair.cxx:187
 AliDielectronPair.cxx:188
 AliDielectronPair.cxx:189
 AliDielectronPair.cxx:190
 AliDielectronPair.cxx:191
 AliDielectronPair.cxx:192
 AliDielectronPair.cxx:193
 AliDielectronPair.cxx:194
 AliDielectronPair.cxx:195
 AliDielectronPair.cxx:196
 AliDielectronPair.cxx:197
 AliDielectronPair.cxx:198
 AliDielectronPair.cxx:199
 AliDielectronPair.cxx:200
 AliDielectronPair.cxx:201
 AliDielectronPair.cxx:202
 AliDielectronPair.cxx:203
 AliDielectronPair.cxx:204
 AliDielectronPair.cxx:205
 AliDielectronPair.cxx:206
 AliDielectronPair.cxx:207
 AliDielectronPair.cxx:208
 AliDielectronPair.cxx:209
 AliDielectronPair.cxx:210
 AliDielectronPair.cxx:211
 AliDielectronPair.cxx:212
 AliDielectronPair.cxx:213
 AliDielectronPair.cxx:214
 AliDielectronPair.cxx:215
 AliDielectronPair.cxx:216
 AliDielectronPair.cxx:217
 AliDielectronPair.cxx:218
 AliDielectronPair.cxx:219
 AliDielectronPair.cxx:220
 AliDielectronPair.cxx:221
 AliDielectronPair.cxx:222
 AliDielectronPair.cxx:223
 AliDielectronPair.cxx:224
 AliDielectronPair.cxx:225
 AliDielectronPair.cxx:226
 AliDielectronPair.cxx:227
 AliDielectronPair.cxx:228
 AliDielectronPair.cxx:229
 AliDielectronPair.cxx:230
 AliDielectronPair.cxx:231
 AliDielectronPair.cxx:232
 AliDielectronPair.cxx:233
 AliDielectronPair.cxx:234
 AliDielectronPair.cxx:235
 AliDielectronPair.cxx:236
 AliDielectronPair.cxx:237
 AliDielectronPair.cxx:238
 AliDielectronPair.cxx:239
 AliDielectronPair.cxx:240
 AliDielectronPair.cxx:241
 AliDielectronPair.cxx:242
 AliDielectronPair.cxx:243
 AliDielectronPair.cxx:244
 AliDielectronPair.cxx:245
 AliDielectronPair.cxx:246
 AliDielectronPair.cxx:247
 AliDielectronPair.cxx:248
 AliDielectronPair.cxx:249
 AliDielectronPair.cxx:250
 AliDielectronPair.cxx:251
 AliDielectronPair.cxx:252
 AliDielectronPair.cxx:253
 AliDielectronPair.cxx:254
 AliDielectronPair.cxx:255
 AliDielectronPair.cxx:256
 AliDielectronPair.cxx:257
 AliDielectronPair.cxx:258
 AliDielectronPair.cxx:259
 AliDielectronPair.cxx:260
 AliDielectronPair.cxx:261
 AliDielectronPair.cxx:262
 AliDielectronPair.cxx:263
 AliDielectronPair.cxx:264
 AliDielectronPair.cxx:265
 AliDielectronPair.cxx:266
 AliDielectronPair.cxx:267
 AliDielectronPair.cxx:268
 AliDielectronPair.cxx:269
 AliDielectronPair.cxx:270
 AliDielectronPair.cxx:271
 AliDielectronPair.cxx:272
 AliDielectronPair.cxx:273
 AliDielectronPair.cxx:274
 AliDielectronPair.cxx:275
 AliDielectronPair.cxx:276
 AliDielectronPair.cxx:277
 AliDielectronPair.cxx:278
 AliDielectronPair.cxx:279
 AliDielectronPair.cxx:280
 AliDielectronPair.cxx:281
 AliDielectronPair.cxx:282
 AliDielectronPair.cxx:283
 AliDielectronPair.cxx:284
 AliDielectronPair.cxx:285
 AliDielectronPair.cxx:286
 AliDielectronPair.cxx:287
 AliDielectronPair.cxx:288
 AliDielectronPair.cxx:289
 AliDielectronPair.cxx:290
 AliDielectronPair.cxx:291
 AliDielectronPair.cxx:292
 AliDielectronPair.cxx:293
 AliDielectronPair.cxx:294
 AliDielectronPair.cxx:295
 AliDielectronPair.cxx:296
 AliDielectronPair.cxx:297
 AliDielectronPair.cxx:298
 AliDielectronPair.cxx:299
 AliDielectronPair.cxx:300
 AliDielectronPair.cxx:301
 AliDielectronPair.cxx:302
 AliDielectronPair.cxx:303
 AliDielectronPair.cxx:304
 AliDielectronPair.cxx:305
 AliDielectronPair.cxx:306
 AliDielectronPair.cxx:307
 AliDielectronPair.cxx:308
 AliDielectronPair.cxx:309
 AliDielectronPair.cxx:310
 AliDielectronPair.cxx:311
 AliDielectronPair.cxx:312
 AliDielectronPair.cxx:313
 AliDielectronPair.cxx:314
 AliDielectronPair.cxx:315
 AliDielectronPair.cxx:316
 AliDielectronPair.cxx:317
 AliDielectronPair.cxx:318
 AliDielectronPair.cxx:319
 AliDielectronPair.cxx:320
 AliDielectronPair.cxx:321
 AliDielectronPair.cxx:322
 AliDielectronPair.cxx:323
 AliDielectronPair.cxx:324
 AliDielectronPair.cxx:325
 AliDielectronPair.cxx:326
 AliDielectronPair.cxx:327
 AliDielectronPair.cxx:328
 AliDielectronPair.cxx:329
 AliDielectronPair.cxx:330
 AliDielectronPair.cxx:331
 AliDielectronPair.cxx:332
 AliDielectronPair.cxx:333
 AliDielectronPair.cxx:334
 AliDielectronPair.cxx:335
 AliDielectronPair.cxx:336
 AliDielectronPair.cxx:337
 AliDielectronPair.cxx:338
 AliDielectronPair.cxx:339
 AliDielectronPair.cxx:340
 AliDielectronPair.cxx:341
 AliDielectronPair.cxx:342
 AliDielectronPair.cxx:343
 AliDielectronPair.cxx:344
 AliDielectronPair.cxx:345
 AliDielectronPair.cxx:346
 AliDielectronPair.cxx:347
 AliDielectronPair.cxx:348
 AliDielectronPair.cxx:349
 AliDielectronPair.cxx:350
 AliDielectronPair.cxx:351
 AliDielectronPair.cxx:352
 AliDielectronPair.cxx:353
 AliDielectronPair.cxx:354
 AliDielectronPair.cxx:355
 AliDielectronPair.cxx:356
 AliDielectronPair.cxx:357
 AliDielectronPair.cxx:358
 AliDielectronPair.cxx:359
 AliDielectronPair.cxx:360
 AliDielectronPair.cxx:361
 AliDielectronPair.cxx:362
 AliDielectronPair.cxx:363
 AliDielectronPair.cxx:364
 AliDielectronPair.cxx:365
 AliDielectronPair.cxx:366
 AliDielectronPair.cxx:367
 AliDielectronPair.cxx:368
 AliDielectronPair.cxx:369
 AliDielectronPair.cxx:370
 AliDielectronPair.cxx:371
 AliDielectronPair.cxx:372
 AliDielectronPair.cxx:373
 AliDielectronPair.cxx:374
 AliDielectronPair.cxx:375
 AliDielectronPair.cxx:376
 AliDielectronPair.cxx:377
 AliDielectronPair.cxx:378
 AliDielectronPair.cxx:379
 AliDielectronPair.cxx:380
 AliDielectronPair.cxx:381
 AliDielectronPair.cxx:382
 AliDielectronPair.cxx:383
 AliDielectronPair.cxx:384
 AliDielectronPair.cxx:385
 AliDielectronPair.cxx:386
 AliDielectronPair.cxx:387
 AliDielectronPair.cxx:388
 AliDielectronPair.cxx:389
 AliDielectronPair.cxx:390
 AliDielectronPair.cxx:391
 AliDielectronPair.cxx:392
 AliDielectronPair.cxx:393
 AliDielectronPair.cxx:394
 AliDielectronPair.cxx:395
 AliDielectronPair.cxx:396
 AliDielectronPair.cxx:397
 AliDielectronPair.cxx:398
 AliDielectronPair.cxx:399
 AliDielectronPair.cxx:400
 AliDielectronPair.cxx:401
 AliDielectronPair.cxx:402
 AliDielectronPair.cxx:403
 AliDielectronPair.cxx:404
 AliDielectronPair.cxx:405
 AliDielectronPair.cxx:406
 AliDielectronPair.cxx:407
 AliDielectronPair.cxx:408
 AliDielectronPair.cxx:409
 AliDielectronPair.cxx:410
 AliDielectronPair.cxx:411
 AliDielectronPair.cxx:412
 AliDielectronPair.cxx:413
 AliDielectronPair.cxx:414
 AliDielectronPair.cxx:415
 AliDielectronPair.cxx:416
 AliDielectronPair.cxx:417
 AliDielectronPair.cxx:418
 AliDielectronPair.cxx:419
 AliDielectronPair.cxx:420
 AliDielectronPair.cxx:421
 AliDielectronPair.cxx:422
 AliDielectronPair.cxx:423
 AliDielectronPair.cxx:424
 AliDielectronPair.cxx:425
 AliDielectronPair.cxx:426
 AliDielectronPair.cxx:427
 AliDielectronPair.cxx:428
 AliDielectronPair.cxx:429
 AliDielectronPair.cxx:430
 AliDielectronPair.cxx:431
 AliDielectronPair.cxx:432
 AliDielectronPair.cxx:433
 AliDielectronPair.cxx:434
 AliDielectronPair.cxx:435
 AliDielectronPair.cxx:436
 AliDielectronPair.cxx:437
 AliDielectronPair.cxx:438
 AliDielectronPair.cxx:439
 AliDielectronPair.cxx:440
 AliDielectronPair.cxx:441
 AliDielectronPair.cxx:442
 AliDielectronPair.cxx:443
 AliDielectronPair.cxx:444
 AliDielectronPair.cxx:445
 AliDielectronPair.cxx:446
 AliDielectronPair.cxx:447
 AliDielectronPair.cxx:448
 AliDielectronPair.cxx:449
 AliDielectronPair.cxx:450
 AliDielectronPair.cxx:451
 AliDielectronPair.cxx:452
 AliDielectronPair.cxx:453
 AliDielectronPair.cxx:454
 AliDielectronPair.cxx:455
 AliDielectronPair.cxx:456
 AliDielectronPair.cxx:457
 AliDielectronPair.cxx:458
 AliDielectronPair.cxx:459
 AliDielectronPair.cxx:460
 AliDielectronPair.cxx:461
 AliDielectronPair.cxx:462
 AliDielectronPair.cxx:463
 AliDielectronPair.cxx:464
 AliDielectronPair.cxx:465
 AliDielectronPair.cxx:466
 AliDielectronPair.cxx:467
 AliDielectronPair.cxx:468
 AliDielectronPair.cxx:469
 AliDielectronPair.cxx:470
 AliDielectronPair.cxx:471
 AliDielectronPair.cxx:472
 AliDielectronPair.cxx:473
 AliDielectronPair.cxx:474
 AliDielectronPair.cxx:475
 AliDielectronPair.cxx:476
 AliDielectronPair.cxx:477
 AliDielectronPair.cxx:478
 AliDielectronPair.cxx:479
 AliDielectronPair.cxx:480
 AliDielectronPair.cxx:481
 AliDielectronPair.cxx:482
 AliDielectronPair.cxx:483
 AliDielectronPair.cxx:484
 AliDielectronPair.cxx:485
 AliDielectronPair.cxx:486
 AliDielectronPair.cxx:487
 AliDielectronPair.cxx:488
 AliDielectronPair.cxx:489
 AliDielectronPair.cxx:490
 AliDielectronPair.cxx:491
 AliDielectronPair.cxx:492
 AliDielectronPair.cxx:493
 AliDielectronPair.cxx:494
 AliDielectronPair.cxx:495
 AliDielectronPair.cxx:496
 AliDielectronPair.cxx:497
 AliDielectronPair.cxx:498
 AliDielectronPair.cxx:499
 AliDielectronPair.cxx:500
 AliDielectronPair.cxx:501
 AliDielectronPair.cxx:502
 AliDielectronPair.cxx:503
 AliDielectronPair.cxx:504
 AliDielectronPair.cxx:505
 AliDielectronPair.cxx:506
 AliDielectronPair.cxx:507
 AliDielectronPair.cxx:508
 AliDielectronPair.cxx:509
 AliDielectronPair.cxx:510
 AliDielectronPair.cxx:511
 AliDielectronPair.cxx:512
 AliDielectronPair.cxx:513
 AliDielectronPair.cxx:514
 AliDielectronPair.cxx:515
 AliDielectronPair.cxx:516
 AliDielectronPair.cxx:517
 AliDielectronPair.cxx:518
 AliDielectronPair.cxx:519
 AliDielectronPair.cxx:520
 AliDielectronPair.cxx:521
 AliDielectronPair.cxx:522
 AliDielectronPair.cxx:523
 AliDielectronPair.cxx:524
 AliDielectronPair.cxx:525
 AliDielectronPair.cxx:526
 AliDielectronPair.cxx:527
 AliDielectronPair.cxx:528
 AliDielectronPair.cxx:529
 AliDielectronPair.cxx:530
 AliDielectronPair.cxx:531
 AliDielectronPair.cxx:532
 AliDielectronPair.cxx:533
 AliDielectronPair.cxx:534
 AliDielectronPair.cxx:535
 AliDielectronPair.cxx:536
 AliDielectronPair.cxx:537
 AliDielectronPair.cxx:538
 AliDielectronPair.cxx:539
 AliDielectronPair.cxx:540
 AliDielectronPair.cxx:541
 AliDielectronPair.cxx:542
 AliDielectronPair.cxx:543
 AliDielectronPair.cxx:544
 AliDielectronPair.cxx:545
 AliDielectronPair.cxx:546
 AliDielectronPair.cxx:547
 AliDielectronPair.cxx:548
 AliDielectronPair.cxx:549
 AliDielectronPair.cxx:550
 AliDielectronPair.cxx:551
 AliDielectronPair.cxx:552
 AliDielectronPair.cxx:553
 AliDielectronPair.cxx:554
 AliDielectronPair.cxx:555
 AliDielectronPair.cxx:556
 AliDielectronPair.cxx:557
 AliDielectronPair.cxx:558
 AliDielectronPair.cxx:559
 AliDielectronPair.cxx:560
 AliDielectronPair.cxx:561
 AliDielectronPair.cxx:562
 AliDielectronPair.cxx:563
 AliDielectronPair.cxx:564
 AliDielectronPair.cxx:565
 AliDielectronPair.cxx:566
 AliDielectronPair.cxx:567
 AliDielectronPair.cxx:568
 AliDielectronPair.cxx:569
 AliDielectronPair.cxx:570
 AliDielectronPair.cxx:571
 AliDielectronPair.cxx:572
 AliDielectronPair.cxx:573
 AliDielectronPair.cxx:574
 AliDielectronPair.cxx:575
 AliDielectronPair.cxx:576
 AliDielectronPair.cxx:577
 AliDielectronPair.cxx:578
 AliDielectronPair.cxx:579
 AliDielectronPair.cxx:580
 AliDielectronPair.cxx:581
 AliDielectronPair.cxx:582
 AliDielectronPair.cxx:583
 AliDielectronPair.cxx:584
 AliDielectronPair.cxx:585
 AliDielectronPair.cxx:586
 AliDielectronPair.cxx:587
 AliDielectronPair.cxx:588
 AliDielectronPair.cxx:589
 AliDielectronPair.cxx:590
 AliDielectronPair.cxx:591
 AliDielectronPair.cxx:592
 AliDielectronPair.cxx:593
 AliDielectronPair.cxx:594
 AliDielectronPair.cxx:595
 AliDielectronPair.cxx:596
 AliDielectronPair.cxx:597
 AliDielectronPair.cxx:598
 AliDielectronPair.cxx:599
 AliDielectronPair.cxx:600
 AliDielectronPair.cxx:601
 AliDielectronPair.cxx:602
 AliDielectronPair.cxx:603
 AliDielectronPair.cxx:604
 AliDielectronPair.cxx:605
 AliDielectronPair.cxx:606
 AliDielectronPair.cxx:607
 AliDielectronPair.cxx:608
 AliDielectronPair.cxx:609
 AliDielectronPair.cxx:610
 AliDielectronPair.cxx:611
 AliDielectronPair.cxx:612
 AliDielectronPair.cxx:613
 AliDielectronPair.cxx:614
 AliDielectronPair.cxx:615
 AliDielectronPair.cxx:616
 AliDielectronPair.cxx:617
 AliDielectronPair.cxx:618
 AliDielectronPair.cxx:619
 AliDielectronPair.cxx:620
 AliDielectronPair.cxx:621
 AliDielectronPair.cxx:622
 AliDielectronPair.cxx:623
 AliDielectronPair.cxx:624
 AliDielectronPair.cxx:625
 AliDielectronPair.cxx:626
 AliDielectronPair.cxx:627
 AliDielectronPair.cxx:628
 AliDielectronPair.cxx:629
 AliDielectronPair.cxx:630
 AliDielectronPair.cxx:631
 AliDielectronPair.cxx:632
 AliDielectronPair.cxx:633
 AliDielectronPair.cxx:634
 AliDielectronPair.cxx:635
 AliDielectronPair.cxx:636
 AliDielectronPair.cxx:637
 AliDielectronPair.cxx:638
 AliDielectronPair.cxx:639
 AliDielectronPair.cxx:640
 AliDielectronPair.cxx:641
 AliDielectronPair.cxx:642
 AliDielectronPair.cxx:643
 AliDielectronPair.cxx:644
 AliDielectronPair.cxx:645
 AliDielectronPair.cxx:646
 AliDielectronPair.cxx:647
 AliDielectronPair.cxx:648
 AliDielectronPair.cxx:649
 AliDielectronPair.cxx:650
 AliDielectronPair.cxx:651
 AliDielectronPair.cxx:652
 AliDielectronPair.cxx:653
 AliDielectronPair.cxx:654
 AliDielectronPair.cxx:655
 AliDielectronPair.cxx:656
 AliDielectronPair.cxx:657
 AliDielectronPair.cxx:658
 AliDielectronPair.cxx:659
 AliDielectronPair.cxx:660
 AliDielectronPair.cxx:661
 AliDielectronPair.cxx:662
 AliDielectronPair.cxx:663
 AliDielectronPair.cxx:664
 AliDielectronPair.cxx:665
 AliDielectronPair.cxx:666
 AliDielectronPair.cxx:667
 AliDielectronPair.cxx:668
 AliDielectronPair.cxx:669
 AliDielectronPair.cxx:670
 AliDielectronPair.cxx:671
 AliDielectronPair.cxx:672
 AliDielectronPair.cxx:673
 AliDielectronPair.cxx:674
 AliDielectronPair.cxx:675
 AliDielectronPair.cxx:676
 AliDielectronPair.cxx:677
 AliDielectronPair.cxx:678
 AliDielectronPair.cxx:679
 AliDielectronPair.cxx:680
 AliDielectronPair.cxx:681
 AliDielectronPair.cxx:682
 AliDielectronPair.cxx:683
 AliDielectronPair.cxx:684
 AliDielectronPair.cxx:685
 AliDielectronPair.cxx:686
 AliDielectronPair.cxx:687
 AliDielectronPair.cxx:688
 AliDielectronPair.cxx:689
 AliDielectronPair.cxx:690
 AliDielectronPair.cxx:691
 AliDielectronPair.cxx:692
 AliDielectronPair.cxx:693
 AliDielectronPair.cxx:694
 AliDielectronPair.cxx:695
 AliDielectronPair.cxx:696
 AliDielectronPair.cxx:697
 AliDielectronPair.cxx:698
 AliDielectronPair.cxx:699
 AliDielectronPair.cxx:700
 AliDielectronPair.cxx:701
 AliDielectronPair.cxx:702
 AliDielectronPair.cxx:703
 AliDielectronPair.cxx:704
 AliDielectronPair.cxx:705
 AliDielectronPair.cxx:706
 AliDielectronPair.cxx:707
 AliDielectronPair.cxx:708
 AliDielectronPair.cxx:709
 AliDielectronPair.cxx:710
 AliDielectronPair.cxx:711
 AliDielectronPair.cxx:712
 AliDielectronPair.cxx:713
 AliDielectronPair.cxx:714
 AliDielectronPair.cxx:715
 AliDielectronPair.cxx:716
 AliDielectronPair.cxx:717
 AliDielectronPair.cxx:718
 AliDielectronPair.cxx:719
 AliDielectronPair.cxx:720
 AliDielectronPair.cxx:721
 AliDielectronPair.cxx:722
 AliDielectronPair.cxx:723
 AliDielectronPair.cxx:724
 AliDielectronPair.cxx:725
 AliDielectronPair.cxx:726
 AliDielectronPair.cxx:727
 AliDielectronPair.cxx:728
 AliDielectronPair.cxx:729
 AliDielectronPair.cxx:730
 AliDielectronPair.cxx:731
 AliDielectronPair.cxx:732
 AliDielectronPair.cxx:733
 AliDielectronPair.cxx:734
 AliDielectronPair.cxx:735
 AliDielectronPair.cxx:736
 AliDielectronPair.cxx:737
 AliDielectronPair.cxx:738
 AliDielectronPair.cxx:739
 AliDielectronPair.cxx:740
 AliDielectronPair.cxx:741
 AliDielectronPair.cxx:742
 AliDielectronPair.cxx:743
 AliDielectronPair.cxx:744
 AliDielectronPair.cxx:745
 AliDielectronPair.cxx:746
 AliDielectronPair.cxx:747
 AliDielectronPair.cxx:748
 AliDielectronPair.cxx:749
 AliDielectronPair.cxx:750
 AliDielectronPair.cxx:751
 AliDielectronPair.cxx:752
 AliDielectronPair.cxx:753
 AliDielectronPair.cxx:754
 AliDielectronPair.cxx:755
 AliDielectronPair.cxx:756
 AliDielectronPair.cxx:757
 AliDielectronPair.cxx:758
 AliDielectronPair.cxx:759
 AliDielectronPair.cxx:760
 AliDielectronPair.cxx:761
 AliDielectronPair.cxx:762
 AliDielectronPair.cxx:763
 AliDielectronPair.cxx:764
 AliDielectronPair.cxx:765
 AliDielectronPair.cxx:766
 AliDielectronPair.cxx:767
 AliDielectronPair.cxx:768
 AliDielectronPair.cxx:769
 AliDielectronPair.cxx:770
 AliDielectronPair.cxx:771
 AliDielectronPair.cxx:772
 AliDielectronPair.cxx:773
 AliDielectronPair.cxx:774
 AliDielectronPair.cxx:775
 AliDielectronPair.cxx:776
 AliDielectronPair.cxx:777
 AliDielectronPair.cxx:778
 AliDielectronPair.cxx:779
 AliDielectronPair.cxx:780
 AliDielectronPair.cxx:781
 AliDielectronPair.cxx:782
 AliDielectronPair.cxx:783
 AliDielectronPair.cxx:784
 AliDielectronPair.cxx:785
 AliDielectronPair.cxx:786
 AliDielectronPair.cxx:787
 AliDielectronPair.cxx:788
 AliDielectronPair.cxx:789
 AliDielectronPair.cxx:790
 AliDielectronPair.cxx:791
 AliDielectronPair.cxx:792
 AliDielectronPair.cxx:793
 AliDielectronPair.cxx:794
 AliDielectronPair.cxx:795
 AliDielectronPair.cxx:796
 AliDielectronPair.cxx:797
 AliDielectronPair.cxx:798
 AliDielectronPair.cxx:799
 AliDielectronPair.cxx:800
 AliDielectronPair.cxx:801
 AliDielectronPair.cxx:802
 AliDielectronPair.cxx:803
 AliDielectronPair.cxx:804
 AliDielectronPair.cxx:805
 AliDielectronPair.cxx:806
 AliDielectronPair.cxx:807
 AliDielectronPair.cxx:808
 AliDielectronPair.cxx:809
 AliDielectronPair.cxx:810
 AliDielectronPair.cxx:811
 AliDielectronPair.cxx:812
 AliDielectronPair.cxx:813