]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HBTAN/AliHBTPair.h
Pi0 identification with PID was wrongly done, changes in GetEllipseParameters
[u/mrichter/AliRoot.git] / HBTAN / AliHBTPair.h
index 9195f2fcadcf47a6c46e90e24417db529522914b..4f82aa5557e1dd6ace91f290bbb8e0950cd17266 100644 (file)
@@ -1,42 +1,65 @@
 #ifndef ALIHBTPAIR_H
 #define 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 <TObject.h>
-
-
 #include "AliHBTParticle.h"
-//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
+
 
 class AliHBTPair: public TObject
 {
  public:
    AliHBTPair(Bool_t rev = kFALSE); //contructor
-   ~AliHBTPair(){}
-   void SetParticles(AliHBTParticle*,AliHBTParticle*); //sets particles in the pair
+   AliHBTPair(AliHBTParticle* part1, AliHBTParticle* part2, Bool_t rev = kFALSE); //contructor
+   AliHBTPair(const AliHBTPair& in);
+   
+   virtual ~AliHBTPair(){}
+   
+   AliHBTPair& operator=(const AliHBTPair& in);
+   
+   void SetParticles(AliHBTParticle* p1,AliHBTParticle* p2); //sets particles in the pair
    AliHBTPair* GetSwapedPair() {return fSwapedPair;} //returns pair with swapped particles
    
    AliHBTParticle* Particle1() const {return fPart1;} //returns pointer to first particle
    AliHBTParticle* Particle2() const {return fPart2;} //returns pointer to decond particle
    
+   void Changed();
    //Center Mass System - Longitudinally Comoving
    
-   Double_t GetInvMass(); //returns invariant mass of the pair
+   virtual Double_t GetInvMass(); //returns invariant mass of the pair
+   virtual Double_t GetMt();
+   virtual Double_t GetQInv(); //returns Q invariant
+   virtual Double_t GetQSideCMSLC(); //returns Q Side CMS longitudionally co-moving
+   virtual Double_t GetQOutCMSLC(); //returns Q out CMS longitudionally co-moving
+   virtual Double_t GetQLongCMSLC(); //returns Q Long CMS longitudionally co-moving
    
-   Double_t GetQSideCMSLC(); //returns Q Side CMS longitudionally co-moving
-   Double_t GetQOutCMSLC(); //returns Q out CMS longitudionally co-moving
-   Double_t GetQLongCMSLC(); //returns Q Long CMS longitudionally co-moving
    
+   virtual Double_t GetKt();  //returns K transverse
+   virtual Double_t GetKStar();
    
-   Double_t GetKt();  //returns K transverse
-   Double_t GetKStar();
+   virtual Double_t GetAvarageDistance();//returns avarage distnace between two tracks
    
-   Double_t GetQInv(); //returns Q invariant
-   Double_t GetQSide(); //returns Q side
-   Double_t GetQLong(); //returns Q long 
-   Double_t GetQOut(); //returns Q out
+   virtual Double_t GetDeltaP(); //return difference of momenta
+   virtual Double_t GetDeltaPt();
+   virtual Double_t GetDeltaPx();
+   virtual Double_t GetDeltaPy();
+   virtual Double_t GetDeltaPz();
    
+   virtual Double_t GetDeltaTheta();
+   virtual Double_t GetDeltaPhi();
+   
+   virtual Double_t GetGammaToCMSLC();
+   virtual Double_t GetWeight();
+   virtual Double_t GetPIDProb() const {return fPart1->GetPidProb()*fPart2->GetPidProb();}
    
  protected:
    AliHBTParticle* fPart1;  //pointer to first particle
@@ -68,45 +91,56 @@ class AliHBTPair: public TObject
    Double_t fKt; //K == sum vector of particle's momenta. Kt transverse component
    Bool_t   fKtNotCalc;//flag indicating if fKt is already calculated for this pair
    
-   Double_t fKStar; //
-   Bool_t   fKStarNotCalc;
+   Double_t fKStar; // KStar
+   Bool_t   fKStarNotCalc;// flag indicating if fKStar is calculated
    
    Double_t fPInv;  //invariant momentum
+   
    Double_t fQSide; //Q Side
    Double_t fOut;//Q Out
    Double_t fQLong;//Q Long
 
-   
+   Double_t fMt;//Transverse coordinate of Inv. Mass
+   Bool_t   fMtNotCalc;//flag indicating if Mt is calculated for current pair
+      
    Double_t fInvMassSqr;//squre of invariant mass
-   Bool_t   fMassSqrNotCalc; //
+   Bool_t   fMassSqrNotCalc; //flag indicating if fInvMassSqr for this pair
    void     CalculateInvMassSqr();
    
-   Double_t fQInvL;
-   Bool_t   fQInvLNotCalc;
+   Double_t fQInvL; //Qinv in longitudional direction
+   Bool_t   fQInvLNotCalc;//flag indicating if fQInvL is calculated for current pair
    void     CalculateQInvL();
+
+   Double_t fWeight;//Value of the weight
+   Bool_t   fWeightNotCalc;//flag indicating if fWeight is calculated for current pair
    
-   Double_t fPxSum;
-   Double_t fPySum;
-   Double_t fPzSum;
-   Double_t fESum;
-   Bool_t   fSumsNotCalc;
+   Double_t fAvarageDistance;//value of the avarage distance calculated out of track points
+   Bool_t   fAvarageDistanceNotCalc;//flag indicating if the avarage distance is calculated
+   
+   Double_t fPxSum;// Sum of Px momenta
+   Double_t fPySum;// Sum of Py momenta
+   Double_t fPzSum;// Sum of Pz momenta
+   Double_t fESum;// Sum of energies
+   Bool_t   fSumsNotCalc;//flag indicating if fPxSum,fPxSum,fPxSum and fESum is calculated for current pair
    void     CalculateSums();
    
-   Double_t fPxDiff;
-   Double_t fPyDiff;
-   Double_t fPzDiff;
-   Double_t fEDiff;
-   Bool_t   fDiffsNotCalc;
+   Double_t fPxDiff;// Difference of Px momenta
+   Double_t fPyDiff;// Difference of Px momenta
+   Double_t fPzDiff;// Difference of Px momenta
+   Double_t fEDiff;// Difference of Px momenta
+   Bool_t   fDiffsNotCalc;//flag indicating if fPxDiff,fPxDiff,fPxDiff and fEDiff is calculated for current pair
    void     CalculateDiffs();
    
-   
+   Double_t fGammaCMSLC;//gamma of boost in CMSLC
+   Bool_t   fGammaCMSLCNotCalc;//flag indicating if fGammaCMSLC is calculated for current pair
    /***************************************************/
-   void CalculateBase();
-   Bool_t fChanged;
+   Bool_t   fChanged;//flag indicating if object has been changed
+
+   void     CalculateBase();
+   Double_t AvDistance();
    
    
  private:
- public:
   ClassDef(AliHBTPair,1)
 };
 /****************************************************************/
@@ -119,29 +153,37 @@ void AliHBTPair::SetParticles(AliHBTParticle* p1,AliHBTParticle* p2)
  fPart2 = p2;
  if (fSwapedPair) //if we have Swaped (so we are not)
    fSwapedPair->SetParticles(p2,p1); //set particles for him too
- // Resel all calculations (flags)
+ Changed();
+ //and do nothing until will be asked for
+} 
+/****************************************************************/
 
+inline
+void AliHBTPair::Changed()
+{
+ // Resel all calculations (flags)
  fChanged           = kTRUE;
  fSumsNotCalc       = kTRUE;
  fDiffsNotCalc      = kTRUE;
  fMassSqrNotCalc    = kTRUE;
  fInvMassNotCalc    = kTRUE;
  fQInvNotCalc       = kTRUE;
+ fMtNotCalc         = kTRUE;
  fQSideCMSLCNotCalc = kTRUE;
  fQOutCMSLCNotCalc  = kTRUE;
  fQLongCMSLCNotCalc = kTRUE;
  fKtNotCalc         = kTRUE;
  fKStarNotCalc      = kTRUE;
  fQInvLNotCalc      = kTRUE;
- //and do nothing until will be asked for
+ fGammaCMSLCNotCalc = kTRUE;
+ fWeightNotCalc = kTRUE;
+ fAvarageDistanceNotCalc = kTRUE;
 }
 /****************************************************************/
-/****************************************************************/
 inline 
 void AliHBTPair::CalculateInvMassSqr()
  {
+  //calculates square of qinv
   if (fMassSqrNotCalc)
    {
      CalculateSums();
@@ -157,6 +199,7 @@ void AliHBTPair::CalculateInvMassSqr()
 inline 
 void AliHBTPair::CalculateQInvL()
  {
+ //Calculates square root of Qinv
   if (fQInvLNotCalc)
   {
    CalculateDiffs();
@@ -168,6 +211,7 @@ void AliHBTPair::CalculateQInvL()
 inline 
 void AliHBTPair::CalculateSums()
  {
+   //calculates momenta and energy sums
    if(fSumsNotCalc)
     {
      fPxSum = fPart1->Px()+fPart2->Px();
@@ -181,6 +225,7 @@ void AliHBTPair::CalculateSums()
 inline 
 void AliHBTPair::CalculateDiffs()
  {
+   //calculates momenta and energy differences 
    if(fDiffsNotCalc)
     {
      fPxDiff = fPart1->Px()-fPart2->Px();
@@ -191,4 +236,65 @@ void AliHBTPair::CalculateDiffs()
     }
  }
 
+/****************************************************************/
+inline 
+Double_t AliHBTPair::GetDeltaP() //return difference of momenta
+{
+ //returns difference of momenta (length of vector)
+ CalculateDiffs();
+ return TMath::Sqrt(fPxDiff*fPxDiff + fPyDiff*fPyDiff + fPzDiff*fPzDiff);
+}
+/****************************************************************/
+
+inline 
+Double_t AliHBTPair::GetDeltaPt()
+ {
+   //returns difference of Pz
+   return fPart1->Pt()-fPart2->Pt();
+ }
+/****************************************************************/
+
+inline 
+Double_t AliHBTPair::GetDeltaPx()
+ {
+   //returns difference of Pz
+   CalculateDiffs();
+   return fPxDiff;
+ }
+/****************************************************************/
+inline 
+Double_t AliHBTPair::GetDeltaPy()
+ {
+   //returns difference of Py
+   CalculateDiffs();
+   return fPyDiff;
+ }
+
+/****************************************************************/
+inline 
+Double_t AliHBTPair::GetDeltaPz()
+ {
+   //returns difference of Pz
+   CalculateDiffs();
+   return fPzDiff;
+ }
+/****************************************************************/
+
+inline 
+Double_t AliHBTPair::GetDeltaPhi()
+ {
+   //returns difference of Pz
+   return fPart1->Phi()-fPart2->Phi();
+ }
+/****************************************************************/
+
+inline 
+Double_t AliHBTPair::GetDeltaTheta()
+ {
+   //returns difference of Pz
+   return fPart1->Theta()-fPart2->Theta();
+ }
+/****************************************************************/
+
+
 #endif