]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ANALYSIS/AliAODPair.cxx
fix for the corrupt data
[u/mrichter/AliRoot.git] / ANALYSIS / AliAODPair.cxx
index ae445c35aeab9a75be53ff245c2cf04bf59064bb..a6ed0fad041bacd62c9acda79ec61b39405ba8e4 100644 (file)
@@ -7,13 +7,12 @@
 // class implements pair of particles and taking care of caluclation (almost)
 // all of pair properties (Qinv, InvMass,...)
 // 
-// more info: http://alisoft.cern.ch/people/skowron/analyzer/index.html
+// more info: http://aliweb.cern.ch/people/skowron/analyzer/index.html
 //
 ////////////////////////////////////////////////////////////////////////////
 
 #include "AliVAODParticle.h"
 #include "AliTrackPoints.h"
-
 ClassImp(AliAODPair)
 
 /************************************************************************/
@@ -90,6 +89,8 @@ AliAODPair::AliAODPair(AliVAODParticle* part1, AliVAODParticle* part2, Bool_t re
  fQLongLCMSNotCalc(kTRUE),
  fQtLCMS(0.0),
  fQtLCMSNotCalc(kTRUE),
+ fQt(0.0),
+ fQtNotCalc(kTRUE),
  fQInv(0.0),
  fQInvNotCalc(kTRUE),
  fInvMass(0.0),
@@ -149,6 +150,8 @@ AliAODPair::AliAODPair(const AliAODPair& in):
  fQLongLCMSNotCalc(kTRUE),
  fQtLCMS(0.0),
  fQtLCMSNotCalc(kTRUE),
+ fQt(0.0),
+ fQtNotCalc(kTRUE),
  fQInv(0.0),
  fQInvNotCalc(kTRUE),
  fInvMass(0.0),
@@ -468,6 +471,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
@@ -516,3 +529,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() 
+{
+  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());
+  
+  
+}