]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HBTAN/AliHBTPair.cxx
Avarage separation correlation function introduced
[u/mrichter/AliRoot.git] / HBTAN / AliHBTPair.cxx
index 02e3e0a4a1ea66d17b5dde3c75f2e2870ffe96cd..ed5b36e36a1f6ac7f2f5dc769aaeeb89a8c9d444 100644 (file)
@@ -6,12 +6,14 @@
 //
 // 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 "AliHBTWeights.h"
+#include "AliHBTTrackPoints.h"
 
 ClassImp(AliHBTPair)
 
@@ -121,6 +123,63 @@ 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),
+ 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()
 {
@@ -256,25 +315,25 @@ Double_t AliHBTPair::GetKStar()
    { 
     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 = Q*Q - fQInvL;
-    if ( Q < 0)
+    q = q*q - fQInvL;
+    if ( q < 0)
      {
-        Info("GetKStar","Q = %f",Q);
+        Info("GetKStar","q = %f",q);
         fPart1->Print();
         fPart2->Print();
-        Q = TMath::Abs(Q);
+        q = TMath::Abs(q);
      }
      
-    Q = TMath::Sqrt(Q);
-    fKStar = Q/2.;
+    q = TMath::Sqrt(q);
+    fKStar = q/2.;
     fKStarNotCalc = kFALSE;
    }
   return fKStar;
@@ -332,3 +391,27 @@ Double_t AliHBTPair::GetWeight()
    }
   return fWeight; 
 }
+
+/************************************************************************/
+
+Double_t AliHBTPair::GetAvarageDistance()
+{
+  //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);
+}