]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HBTAN/AliHBTPair.cxx
new method Load added to AliPMDClusterFinder
[u/mrichter/AliRoot.git] / HBTAN / AliHBTPair.cxx
index 1751a2ec3bf3f1a7b6ec5f87854e77d02e37296d..cda72337e4e971cd321d3feb341fd45b6f5a6ca5 100644 (file)
@@ -1,6 +1,19 @@
 #include "AliHBTPair.h"
+//_________________________________________________________________________
+///////////////////////////////////////////////////////////////////////////
+//
+// class AliHBTPair
+//
+// 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
+//
+////////////////////////////////////////////////////////////////////////////
+
 #include "AliHBTParticle.h"
-#include "AliHBTLLWeights.h"
+#include "AliHBTWeights.h"
+#include "AliHBTTrackPoints.h"
 
 ClassImp(AliHBTPair)
 
@@ -33,8 +46,10 @@ AliHBTPair::AliHBTPair(Bool_t rev):
  fMassSqrNotCalc(kTRUE),
  fQInvL(0.0),
  fQInvLNotCalc(kTRUE),
- fLLWeight(0.0),
- ffLLWeightNotCalc(kTRUE),
+ fWeight(0.0),
+ fWeightNotCalc(kTRUE),
+ fAvarageDistance(0.0),
+ fAvarageDistanceNotCalc(kTRUE),
  fPxSum(0.0),
  fPySum(0.0),
  fPzSum(0.0),
@@ -86,8 +101,10 @@ AliHBTPair::AliHBTPair(AliHBTParticle* part1, AliHBTParticle* part2, Bool_t rev)
  fMassSqrNotCalc(kTRUE),
  fQInvL(0.0),
  fQInvLNotCalc(kTRUE),
- fLLWeight(0.0),
- ffLLWeightNotCalc(kTRUE),
+ fWeight(0.0),
+ fWeightNotCalc(kTRUE),
+ fAvarageDistance(0.0),
+ fAvarageDistanceNotCalc(kTRUE),
  fPxSum(0.0),
  fPySum(0.0),
  fPzSum(0.0),
@@ -110,6 +127,65 @@ AliHBTPair::AliHBTPair(AliHBTParticle* part1, AliHBTParticle* part2, Bool_t rev)
   
  }
 /************************************************************************/
+AliHBTPair::AliHBTPair(const AliHBTPair& in):
+ TObject(in),
+ fPart1(0x0),
+ fPart2(0x0),
+ fSwapedPair(0x0),
+ fQSideCMSLC(0.0),
+ fQSideCMSLCNotCalc(kTRUE),
+ fQOutCMSLC(0.0),
+ fQOutCMSLCNotCalc(kTRUE),
+ fQLongCMSLC(0.0),
+ fQLongCMSLCNotCalc(kTRUE),
+ fQInv(0.0),
+ fQInvNotCalc(kTRUE),
+ fInvMass(0.0),
+ fInvMassNotCalc(kTRUE),
+ fKt(0.0),
+ fKtNotCalc(kTRUE),
+ fKStar(0.0),
+ fKStarNotCalc(kTRUE),
+ fPInv(0.0),
+ fQSide(0.0),
+ fOut(0.0),
+ fQLong(0.0),
+ fMt(0.0),
+ fMtNotCalc(kTRUE),
+ fInvMassSqr(0.0),
+ fMassSqrNotCalc(kTRUE),
+ fQInvL(0.0),
+ fQInvLNotCalc(kTRUE),
+ fWeight(0.0),
+ fWeightNotCalc(kTRUE),
+ fAvarageDistance(0.0),
+ fAvarageDistanceNotCalc(kTRUE),
+ fPxSum(0.0),
+ fPySum(0.0),
+ fPzSum(0.0),
+ fESum(0.0),
+ fSumsNotCalc(kTRUE),
+ fPxDiff(0.0),
+ fPyDiff(0.0),
+ fPzDiff(0.0),
+ fEDiff(0.0),
+ fDiffsNotCalc(kTRUE),
+ fGammaCMSLC(0.0),
+ fGammaCMSLCNotCalc(kTRUE),
+ fChanged(kTRUE)
+{
+ //cpy constructor
+ in.Copy(*this);
+}
+/************************************************************************/
+
+AliHBTPair& AliHBTPair::operator=(const AliHBTPair& in)
+{
+ //Assigment operator
+ in.Copy(*this);
+ return *this;
+}
+/************************************************************************/
 
 Double_t AliHBTPair::GetInvMass()
 {
@@ -126,9 +202,10 @@ Double_t AliHBTPair::GetInvMass()
   return fInvMass;
 }
 /************************************************************************/
+
 Double_t AliHBTPair::GetQSideCMSLC()
 {
-  //return Q Side in Central Of Mass System in Longitudialy Comoving Frame
+//return Q Side in Central Of Mass System in Longitudialy Comoving Frame
  
   if (fQSideCMSLCNotCalc)
    {
@@ -138,8 +215,10 @@ Double_t AliHBTPair::GetQSideCMSLC()
   return fQSideCMSLC;
 }
 /************************************************************************/
+
 Double_t AliHBTPair::GetQOutCMSLC()
 {
+ //caculates Qout in Center Of Mass Longitudionally Co-Moving
  if(fQOutCMSLCNotCalc)
   {
    CalculateSums();
@@ -210,8 +289,10 @@ Double_t AliHBTPair::GetQOutCMSLC()
  return fQOutCMSLC;
 }
 /************************************************************************/
+
 Double_t AliHBTPair::GetQLongCMSLC()
 {
+ //return Q Long in Central Of Mass System in Longitudialy Comoving Frame
  if (fQLongCMSLCNotCalc)
   {
     CalculateSums();
@@ -223,8 +304,10 @@ Double_t AliHBTPair::GetQLongCMSLC()
  return fQLongCMSLC; 
 }
 /************************************************************************/
+
 Double_t AliHBTPair::GetKt()
 {
+ //calculates the evarage momentum of the pair
   if(fKtNotCalc)
    { 
      CalculateSums();
@@ -237,20 +320,30 @@ Double_t AliHBTPair::GetKt()
 
 Double_t AliHBTPair::GetKStar()
 {
+  //calculates invariant velocity difference
   if (fKStarNotCalc)
    { 
     CalculateSums();
 
-    Double_t Ptrans = fPxSum*fPxSum + fPySum*fPySum;
-    Double_t Mtrans = fESum*fESum - fPzSum*fPzSum;
-    Double_t Pinv =   TMath::Sqrt(Mtrans - Ptrans);
+    Double_t ptrans = fPxSum*fPxSum + fPySum*fPySum;
+    Double_t mtrans = fESum*fESum - fPzSum*fPzSum;
+    Double_t pinv =   TMath::Sqrt(mtrans - ptrans);
 
-    Double_t Q = (fPart1->GetMass()*fPart1->GetMass() - fPart2->GetMass()*fPart2->GetMass())/Pinv;
+    Double_t q = (fPart1->GetMass()*fPart1->GetMass() - fPart2->GetMass()*fPart2->GetMass())/pinv;
     
     CalculateQInvL();
     
-    Q = TMath::Sqrt( Q*Q - fQInvL);
-    fKStar = Q/2.;
+    q = q*q - fQInvL;
+    if ( q < 0)
+     {
+        Info("GetKStar","q = %f",q);
+        fPart1->Print();
+        fPart2->Print();
+        q = TMath::Abs(q);
+     }
+     
+    q = TMath::Sqrt(q);
+    fKStar = q/2.;
     fKStarNotCalc = kFALSE;
    }
   return fKStar;
@@ -273,6 +366,7 @@ Double_t AliHBTPair::GetQInv()
 
 Double_t AliHBTPair::GetGammaToCMSLC()
 {
+  //calculates gamma factor of the boost to CMSLC
   if(fGammaCMSLCNotCalc)
    {
      CalculateSums();
@@ -286,6 +380,7 @@ Double_t AliHBTPair::GetGammaToCMSLC()
 
 Double_t AliHBTPair::GetMt()
 {
+  //Calculates transverse mass of the pair
   if (fMtNotCalc)
    {
      CalculateSums();
@@ -296,11 +391,50 @@ Double_t AliHBTPair::GetMt()
 }
 /************************************************************************/
 
-Double_t AliHBTPair::GetLLWeight()
+Double_t AliHBTPair::GetWeight()
 {
-  if (ffLLWeightNotCalc)
+  //returns and buffers weight for this pair
+  if (fWeightNotCalc)
    {
-      fLLWeight = AliHBTLLWeights::Instance()->GetWeight(this);
+      fWeight = AliHBTWeights::Weight(this);
+      fWeightNotCalc = kFALSE;  
    }
-  return fLLWeight; 
+  return fWeight; 
+}
+/************************************************************************/
+
+Double_t AliHBTPair::GetAvarageDistance()
+{
+//returns and buffers avarage distance between two tracks calculated 
+// out of track points (see AliHBTTrackPoints class)
+
+  if (fAvarageDistanceNotCalc)
+   {
+     fAvarageDistance = AvDistance();
+     fAvarageDistanceNotCalc = kFALSE;
+   }
+  return fAvarageDistance;
+}
+/************************************************************************/
+
+Double_t AliHBTPair::AvDistance()
+{
+  //returns avarage distance between two tracks in range 
+  //as defined in Track-Points of AliHBTParticle
+  //returns negative value if error uccured f.g. tracks do not have track-points
+  AliHBTTrackPoints* tpts1 = fPart1->GetTrackPoints();
+  if ( tpts1 == 0x0)
+   {//it could be simulated pair
+//     Warning("GetValue","Track 1 does not have Track Points. Pair NOT Passed.");
+     return -1.0;
+   }
+
+  AliHBTTrackPoints* tpts2 = fPart2->GetTrackPoints();
+  if ( tpts2 == 0x0)
+   {
+//     Warning("GetValue","Track 2 does not have Track Points. Pair NOT Passed.");
+     return -1.0;
+   }
+
+  return tpts1->AvarageDistance(*tpts2);
 }