]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ANALYSIS/AliAODPair.cxx
Retrofit from Release developement
[u/mrichter/AliRoot.git] / ANALYSIS / AliAODPair.cxx
index 31de69be0aaa4e9b905983835351d0b6d5a2f408..57fac0f2ddc4be9f2ed7ca4d653588f1550ac68f 100644 (file)
@@ -13,7 +13,6 @@
 
 #include "AliVAODParticle.h"
 #include "AliTrackPoints.h"
-
 ClassImp(AliAODPair)
 
 /************************************************************************/
@@ -27,6 +26,10 @@ AliAODPair::AliAODPair(Bool_t rev):
  fQOutLCMSNotCalc(kTRUE),
  fQLongLCMS(0.0),
  fQLongLCMSNotCalc(kTRUE),
+ fQtLCMS(0.0),
+ fQtLCMSNotCalc(kTRUE),
+ fQt(0.0),
+ fQtNotCalc(kTRUE),
  fQInv(0.0),
  fQInvNotCalc(kTRUE),
  fInvMass(0.0),
@@ -35,6 +38,10 @@ AliAODPair::AliAODPair(Bool_t rev):
  fKtNotCalc(kTRUE),
  fKStar(0.0),
  fKStarNotCalc(kTRUE),
+ fKStarOut(0.0),
+ fKStarSide(0.0),
+ fKStarLong(0.0),
+ fKStarCompNotCalc(kTRUE),
  fPInv(0.0),
  fQSide(0.0),
  fOut(0.0),
@@ -80,6 +87,8 @@ AliAODPair::AliAODPair(AliVAODParticle* part1, AliVAODParticle* part2, Bool_t re
  fQOutLCMSNotCalc(kTRUE),
  fQLongLCMS(0.0),
  fQLongLCMSNotCalc(kTRUE),
+ fQtLCMS(0.0),
+ fQtLCMSNotCalc(kTRUE),
  fQInv(0.0),
  fQInvNotCalc(kTRUE),
  fInvMass(0.0),
@@ -88,6 +97,10 @@ AliAODPair::AliAODPair(AliVAODParticle* part1, AliVAODParticle* part2, Bool_t re
  fKtNotCalc(kTRUE),
  fKStar(0.0),
  fKStarNotCalc(kTRUE),
+ fKStarOut(0.0),
+ fKStarSide(0.0),
+ fKStarLong(0.0),
+ fKStarCompNotCalc(kTRUE),
  fPInv(0.0),
  fQSide(0.0),
  fOut(0.0),
@@ -133,6 +146,8 @@ AliAODPair::AliAODPair(const AliAODPair& in):
  fQOutLCMSNotCalc(kTRUE),
  fQLongLCMS(0.0),
  fQLongLCMSNotCalc(kTRUE),
+ fQtLCMS(0.0),
+ fQtLCMSNotCalc(kTRUE),
  fQInv(0.0),
  fQInvNotCalc(kTRUE),
  fInvMass(0.0),
@@ -141,6 +156,10 @@ AliAODPair::AliAODPair(const AliAODPair& in):
  fKtNotCalc(kTRUE),
  fKStar(0.0),
  fKStarNotCalc(kTRUE),
+ fKStarOut(0.0),
+ fKStarSide(0.0),
+ fKStarLong(0.0),
+ fKStarCompNotCalc(kTRUE),
  fPInv(0.0),
  fQSide(0.0),
  fOut(0.0),
@@ -298,6 +317,48 @@ Double_t AliAODPair::GetQLongLCMS()
 }
 /************************************************************************/
 
+Double_t AliAODPair::GetQtLCMS()
+{
+ //returns Q transverse CMS longitudionally co-moving
+ if (fQtLCMSNotCalc)
+  {
+    fQtLCMS = TMath::Hypot(GetQOutLCMS(),GetQSideLCMS());
+    fQtLCMSNotCalc = kFALSE;
+  }
+ return fQtLCMS; 
+}
+/************************************************************************/
+
+Double_t AliAODPair::GetQt()
+{
+ //returns Q transverse CMS longitudionally co-moving
+ if (fQtNotCalc)
+  {
+    CalculateSums();
+    CalculateDiffs();
+    
+    Double_t dotprod = fPxSum*fPxDiff + fPySum*fPyDiff + fPzSum*fPzDiff;
+    Double_t klen =    fPxSum*fPxSum  + fPySum*fPySum  + fPzSum*fPzSum;
+    klen = TMath::Sqrt(klen);
+    Double_t qlen =    fPxDiff*fPxDiff + fPyDiff*fPyDiff + fPzDiff*fPzDiff;
+    qlen = TMath::Sqrt(qlen);
+    Double_t tmp = klen*qlen;
+    if (tmp == 0.0)
+     {
+       fQt = 10e5;
+       fQtNotCalc = kFALSE;
+       return fQt;
+     }
+    Double_t cosopenangle = dotprod/tmp;
+    Double_t sinopenangle = TMath::Sqrt(1.0 - cosopenangle*cosopenangle);
+    
+    fQt = sinopenangle*qlen;
+    fQtNotCalc = kFALSE;
+  }
+ return fQt; 
+}
+/************************************************************************/
+
 Double_t AliAODPair::GetKt()
 {
  //calculates the evarage momentum of the pair
@@ -359,6 +420,24 @@ Double_t AliAODPair::GetKStar()
   return fKStar;
 }
 /************************************************************************/
+Double_t AliAODPair::GetKStarOut()
+{
+    CalculateKStarComp();
+    return fKStarOut;
+}
+/************************************************************************/
+Double_t AliAODPair::GetKStarSide()
+{
+    CalculateKStarComp();
+    return fKStarSide;
+}
+/************************************************************************/
+Double_t AliAODPair::GetKStarLong()
+{
+    CalculateKStarComp();
+    return fKStarLong;
+}
+/************************************************************************/
 
 Double_t AliAODPair::GetQInv()
 {
@@ -388,6 +467,16 @@ Double_t AliAODPair::GetGammaToLCMS()
 }
 /************************************************************************/
 
+Double_t AliAODPair::GetGammaToTransverse()
+{
+  //calculates gamma factor of the boost to LCMS
+  Double_t beta = 2.0*GetKt() / GetMt();
+  Double_t gamma = 1.0/TMath::Sqrt(1.0 - beta*beta);
+
+  return gamma;
+}
+/************************************************************************/
+
 Double_t AliAODPair::GetMt()
 {
   //Calculates transverse mass of the pair
@@ -436,3 +525,129 @@ Double_t AliAODPair::AvDistance()
 
   return tpts1->AvarageDistance(*tpts2);
 }
+/************************************************************************/
+
+Double_t AliAODPair::GetR() 
+{
+//Returns distance between particles vertexes in thir CMS
+
+  CalculateDiffs();
+  
+  Double_t  vxDiff = fPart1->Vx() - fPart2->Vx();
+  Double_t  vyDiff = fPart1->Vy() - fPart2->Vy();
+  Double_t  vzDiff = fPart1->Vz() - fPart2->Vz();
+  
+  Double_t r = TMath::Sqrt( vxDiff*vxDiff + vyDiff*vyDiff + vzDiff*vzDiff );
+  return r;
+  
+}
+/************************************************************************/
+
+Double_t AliAODPair::GetRStar() 
+{
+//Returns distance between particles vertexes in thir CMS
+
+
+  CalculateSums();
+
+  Double_t klen =    fPxSum*fPxSum  + fPySum*fPySum  + fPzSum*fPzSum;
+  klen = TMath::Sqrt(klen);
+
+  Double_t aBeta  = klen/fESum;
+  Double_t aGamma = 1.0/TMath::Sqrt(1.0 - aBeta*aBeta);
+
+
+  Double_t alpha = -TMath::ATan2(fPySum,fPzSum);
+  Double_t beta =  TMath::ATan2(fPxSum,TMath::Hypot(fPySum,fPzSum));
+
+  Double_t sinalpha = TMath::Sin(alpha);
+  Double_t cosalpha = TMath::Cos(alpha);
+  Double_t sinbeta = TMath::Sin(beta);
+  Double_t cosbeta = TMath::Cos(beta);
+
+  Double_t v1xP = fPart1->Vx();
+  Double_t v2xP = fPart2->Vx();
+  Double_t v1yP = fPart1->Vy()*cosalpha + fPart1->Vz()*sinalpha;
+  Double_t v2yP = fPart2->Vy()*cosalpha + fPart2->Vz()*sinalpha;
+  Double_t v1zP =-fPart1->Vy()*sinalpha + fPart1->Vz()*cosalpha;
+  Double_t v2zP =-fPart2->Vy()*sinalpha + fPart2->Vz()*cosalpha;
+
+
+///////////////////////////////////////////////////
+
+//  Double_t p1yP = fPart1->Py()*cosalpha + fPart1->Pz()*sinalpha;
+//  Double_t p2yP = fPart2->Py()*cosalpha + fPart2->Pz()*sinalpha;
+//
+//  Double_t p1zP =-fPart1->Py()*sinalpha + fPart1->Pz()*cosalpha;
+//  Double_t p2zP =-fPart2->Py()*sinalpha + fPart2->Pz()*cosalpha;
+//
+//
+//  Double_t p1x = fPart1->Px()*cosbeta - p1zP*sinbeta;
+//  Double_t p2x = fPart2->Px()*cosbeta - p2zP*sinbeta;
+//  Double_t p1z = fPart1->Px()*sinbeta + p1zP*cosbeta;
+//  Double_t p2z = fPart2->Px()*sinbeta + p2zP*cosbeta;
+
+//  Info("","%f %f %f",p1yP,p2yP,p1yP+p2yP);
+//  Info("","%f %f %f",p1x,p2x,p1x+p2x);
+  
+//  Info("","%f %f ",p1x+p2x,p1yP+p2yP);
+  
+///////////////////////////////////////////////////
+  
+
+  Double_t v1x = v1xP*cosbeta - v1zP*sinbeta;
+  Double_t v2x = v2xP*cosbeta - v2zP*sinbeta;
+  Double_t v1y = v1yP;
+  Double_t v2y = v2yP;
+  Double_t v1z = v1xP*sinbeta + v1zP*cosbeta;
+  Double_t v2z = v2xP*sinbeta + v2zP*cosbeta;
+
+
+  Double_t v1zB=aGamma*(v1z-aBeta*fPart1->T());
+  Double_t v2zB=aGamma*(v2z-aBeta*fPart2->T());
+
+
+  
+  Double_t dx = v1x - v2x;
+  Double_t dy = v1y - v2y;
+  Double_t dz = v1zB - v2zB;
+  
+  Double_t rstar = TMath::Sqrt( dx*dx + dy*dy + dz*dz);
+
+  return rstar;
+}
+/************************************************************************/
+
+void   AliAODPair::MirrorSecond()
+{
+//makes local copy of the second particle and mirrors their momenta
+//for its deletion is responsible who calls this method
+  fPart2 = (AliVAODParticle*)fPart2->Clone();
+  fPart2->SetMomentum(-fPart2->Px(),-fPart2->Py(),-fPart2->Pz(),fPart2->E());
+  Changed();
+}
+/************************************************************************/
+
+void   AliAODPair::DeleteSecond()
+{
+//Deletes second particle
+  delete fPart2;
+  fPart2 = 0x0;
+}
+
+void   AliAODPair::Print(Option_t* /*option*/) 
+{
+  if (fPart1) fPart1->Print();
+  if (fPart2) fPart2->Print();
+  
+  Info("Print","GetKStar() %f",GetKStar());
+  Info("Print","GetKt() %f",GetKt() );
+  Info("Print","QInv %f", GetQInv() );
+  Info("Print","GetQOutLCMS() %f",GetQOutLCMS() );
+  Info("Print","GetQSideLCMS %f",GetQSideLCMS() );
+  Info("Print","GetQLongLCMS() %f", GetQLongLCMS());
+  Info("Print","GetDeltaTheta() %f", GetDeltaTheta());
+  Info("Print","GetDeltaPhi() %f", GetDeltaPhi());
+  
+  
+}