X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=ANALYSIS%2FAliAODPair.cxx;h=a6ed0fad041bacd62c9acda79ec61b39405ba8e4;hb=91e6e2a097b6f3531776ef4d1cf52bb3dbb8961f;hp=ae445c35aeab9a75be53ff245c2cf04bf59064bb;hpb=a40c04338b31d237db1dd14cd14bdd636dc4c587;p=u%2Fmrichter%2FAliRoot.git diff --git a/ANALYSIS/AliAODPair.cxx b/ANALYSIS/AliAODPair.cxx index ae445c35aea..a6ed0fad041 100644 --- a/ANALYSIS/AliAODPair.cxx +++ b/ANALYSIS/AliAODPair.cxx @@ -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()); + + +}