#include "AliVAODParticle.h"
#include "AliTrackPoints.h"
-
ClassImp(AliAODPair)
/************************************************************************/
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),
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),
fQOutLCMSNotCalc(kTRUE),
fQLongLCMS(0.0),
fQLongLCMSNotCalc(kTRUE),
+ fQtLCMS(0.0),
+ fQtLCMSNotCalc(kTRUE),
fQInv(0.0),
fQInvNotCalc(kTRUE),
fInvMass(0.0),
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),
fQOutLCMSNotCalc(kTRUE),
fQLongLCMS(0.0),
fQLongLCMSNotCalc(kTRUE),
+ fQtLCMS(0.0),
+ fQtLCMSNotCalc(kTRUE),
fQInv(0.0),
fQInvNotCalc(kTRUE),
fInvMass(0.0),
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),
}
/************************************************************************/
+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
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()
{
}
/************************************************************************/
+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
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());
+
+
+}