virtual destructors
[u/mrichter/AliRoot.git] / HBTAN / AliHBTFunction.h
index d45571bbde26c83bfe6a710583c165dad2cffd45..df22f2912ef97a3ee72a93de1551ed3c70eb61ba 100644 (file)
@@ -18,12 +18,13 @@ class AliHBTFunction: public TNamed
 {
   public:
     AliHBTFunction();
-    virtual ~AliHBTFunction(){}
+    AliHBTFunction(const char* name,const char* title);
+    virtual ~AliHBTFunction();
     
     virtual TH1* GetNumerator() =0;
     virtual TH1* GetDenominator() =0;
     virtual TH1* GetResult() = 0;
-    
+
     virtual void Write();
     
     TH1* GetRatio(Double_t normfactor = 1.0);
@@ -41,57 +42,61 @@ class AliHBTFunction: public TNamed
   public:  
    ClassDef(AliHBTFunction,1)
 };
+/******************************************************************/
 inline AliHBTPair* AliHBTFunction::CheckPair(AliHBTPair* pair)
 {
   //check if pair and both particles meets the cut criteria
   if(fPairCut->Pass(pair)) //if the pair is BAD
    {//it is BAD 
     pair = pair->GetSwapedPair();
-    if(fPairCut->Pass(pair)) //so try reverse combination
-     { 
-       return 0x0;//it is BAD as well - so return
-     }
+    if(pair)
+     if(fPairCut->Pass(pair)) //so try reverse combination
+       { 
+        return 0x0;//it is BAD as well - so return
+       }
    }
   return pair; 
 }
 
-
-
 /******************************************************************/
 /******************************************************************/
 /******************************************************************/
-class AliHBTTwoPartFctn: public AliHBTFunction
+class AliHBTOnePairFctn: public AliHBTFunction
 {
   public:
-    AliHBTTwoPartFctn(){}
-    virtual ~AliHBTTwoPartFctn(){}
+    AliHBTOnePairFctn(){}
+    AliHBTOnePairFctn(const Char_t *name, const Char_t *title):AliHBTFunction(name,title){}
+    virtual ~AliHBTOnePairFctn(){}
     
     virtual void ProcessSameEventParticles(AliHBTPair* pair) = 0;
     virtual void ProcessDiffEventParticles(AliHBTPair* pair) = 0;
-    
+
+
     
   protected:
   public:  
-   ClassDef(AliHBTTwoPartFctn,1)
+   ClassDef(AliHBTOnePairFctn,1)
   
 };
 /******************************************************************/
 /******************************************************************/
 /******************************************************************/
-class AliHBTFourPartFctn: public AliHBTFunction
+class AliHBTTwoPairFctn: public AliHBTFunction
 {
   public:
-    AliHBTFourPartFctn(){};
-    virtual ~AliHBTFourPartFctn(){};
+    AliHBTTwoPairFctn(){};
+    AliHBTTwoPairFctn(const Char_t *name, const Char_t *title):AliHBTFunction(name,title){}
+    virtual ~AliHBTTwoPairFctn(){};
     
     virtual void 
     ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair) = 0;
     virtual void 
     ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair) = 0;
+
             
   protected:
   public:  
-   ClassDef(AliHBTFourPartFctn,1)
+   ClassDef(AliHBTTwoPairFctn,1)
   
 };
 /******************************************************************/
@@ -99,11 +104,14 @@ class AliHBTFourPartFctn: public AliHBTFunction
 /******************************************************************/
 
 
-class AliHBTTwoPartFctn1D: public AliHBTTwoPartFctn
+class AliHBTOnePairFctn1D: public AliHBTOnePairFctn
 {
  public:
-  AliHBTTwoPartFctn1D(Int_t nbins = 100, Double_t maxXval = 0.15, Double_t minXval = 0.0);
-  virtual ~AliHBTTwoPartFctn1D();
+  AliHBTOnePairFctn1D();
+  AliHBTOnePairFctn1D(Int_t nbins, Double_t maxXval, Double_t minXval);
+  AliHBTOnePairFctn1D(const Char_t *name, const Char_t *title,
+                      Int_t nbins = 100, Double_t maxXval = 0.15, Double_t minXval = 0.0);
+  virtual ~AliHBTOnePairFctn1D();
   
   
   TH1* GetNumerator(){return fNumerator;}
@@ -111,45 +119,30 @@ class AliHBTTwoPartFctn1D: public AliHBTTwoPartFctn
 
   void ProcessSameEventParticles(AliHBTPair* pair);
   void ProcessDiffEventParticles(AliHBTPair* pair);
-  
+  Double_t Scale();  
+  void SetNumberOfBinsToScale(Int_t n = 30){fNBinsToScale = n;}
  protected:
   //retruns velue to be histogrammed
   virtual Double_t GetValue(AliHBTPair* pair) = 0; 
-  
+
   TH1D* fNumerator;
   TH1D* fDenominator;
+  Int_t fNBinsToScale;
   
  public:
-  ClassDef(AliHBTTwoPartFctn1D,1)
+  ClassDef(AliHBTOnePairFctn1D,2)
 };
 
-inline void 
-AliHBTTwoPartFctn1D::ProcessSameEventParticles(AliHBTPair* pair)
-{
- //Fills the numerator
-   pair = CheckPair(pair);
-   if(pair) fNumerator->Fill(GetValue(pair));
-}
-  
-  
-inline void
-AliHBTTwoPartFctn1D::ProcessDiffEventParticles(AliHBTPair* pair)
- {
-  //fills denumerator
-   pair = CheckPair(pair);
-   if(pair) fDenominator->Fill(GetValue(pair));
-
-  }
 /******************************************************************/
 /******************************************************************/
 /******************************************************************/
-
-class AliHBTTwoPartFctn2D: public AliHBTTwoPartFctn
+class AliHBTOnePairFctn2D: public AliHBTOnePairFctn
 {
  public:
-  AliHBTTwoPartFctn2D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0, 
+  AliHBTOnePairFctn2D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0, 
                       Int_t nYbins = 200, Double_t maxYval = .15, Double_t minYval =-0.15);
-  ~AliHBTTwoPartFctn2D();
+  virtual ~AliHBTOnePairFctn2D();
   
   TH1* GetNumerator(){return fNumerator;}
   TH1* GetDenominator(){return fDenominator;}
@@ -157,27 +150,28 @@ class AliHBTTwoPartFctn2D: public AliHBTTwoPartFctn
   void ProcessSameEventParticles(AliHBTPair* pair);
   void ProcessDiffEventParticles(AliHBTPair* pair);
  
-  virtual void GetValues(AliHBTPair* pair, Double_t&, Double_t&) = 0;
-  
+
  protected:
+  virtual void GetValues(AliHBTPair* pair, Double_t&, Double_t&) = 0;
+
   TH2D* fNumerator;
   TH2D* fDenominator;
   
  public:
-  ClassDef(AliHBTTwoPartFctn2D,1)
+  ClassDef(AliHBTOnePairFctn2D,1)
 };
 /******************************************************************/
 /******************************************************************/
 /******************************************************************/
 
-class AliHBTTwoPartFctn3D: public AliHBTTwoPartFctn
+class AliHBTOnePairFctn3D: public AliHBTOnePairFctn
 {
  public:
-  AliHBTTwoPartFctn3D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0, 
+  AliHBTOnePairFctn3D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0, 
                       Int_t nYbins = 200, Double_t maxYval = .15, Double_t minYval =-0.15, 
                       Int_t nZbins = 200, Double_t maxZval = .15, Double_t minZval =-0.15);
            
-  virtual ~AliHBTTwoPartFctn3D();
+  virtual ~AliHBTOnePairFctn3D();
 
   TH1* GetNumerator(){return fNumerator;}
   TH1* GetDenominator(){return fDenominator;}
@@ -186,23 +180,51 @@ class AliHBTTwoPartFctn3D: public AliHBTTwoPartFctn
   TH3D* fNumerator;
   TH3D* fDenominator;
  public:
-  ClassDef(AliHBTTwoPartFctn3D,1)
+  ClassDef(AliHBTOnePairFctn3D,1)
 };
 /******************************************************************/
 /******************************************************************/
 /******************************************************************/
 
+class AliHBTTwoPairFctn1D: public AliHBTTwoPairFctn
+{
+ public:
+  AliHBTTwoPairFctn1D(Int_t nbins = 200, Double_t maxval = 1.5, Double_t minval = 0.0);
+  AliHBTTwoPairFctn1D(const char*,const char*,
+                      Int_t nbins = 200, Double_t maxval = 1.5, Double_t minval = 0.0);
+  virtual ~AliHBTTwoPairFctn1D();
+  
+  TH1* GetNumerator(){return fNumerator;}
+  TH1* GetDenominator(){return fDenominator;}
+  
+  void ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
+  void ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
+  
+  Double_t Scale();  
+  void SetNumberOfBinsToScale(Int_t n = 30){fNBinsToScale = n;} 
+ protected:
+  virtual Double_t GetValue(AliHBTPair* trackpair, AliHBTPair* partpair) = 0;
+
+  TH1D* fNumerator;
+  TH1D* fDenominator;
+
+  Int_t fNBinsToScale;
+
+ public:
+  ClassDef(AliHBTTwoPairFctn1D,1)
+};
 
 
 /******************************************************************/
 /******************************************************************/
 /******************************************************************/
-class AliHBTFourPartFctn2D: public AliHBTFourPartFctn
+class AliHBTTwoPairFctn2D: public AliHBTTwoPairFctn
 {
  public:
-  AliHBTFourPartFctn2D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0, 
+  AliHBTTwoPairFctn2D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0, 
                        Int_t nYbins = 200, Double_t maxYval = .15, Double_t minYval =-0.15);
-  ~AliHBTFourPartFctn2D();
+  virtual ~AliHBTTwoPairFctn2D();
   
   TH1* GetNumerator(){return fNumerator;}
   TH1* GetDenominator(){return fDenominator;}
@@ -210,20 +232,45 @@ class AliHBTFourPartFctn2D: public AliHBTFourPartFctn
   void ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
   void ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
  
-  virtual void GetValues(AliHBTPair*,AliHBTPair*, Double_t&, Double_t&) = 0;
   
  protected:
+  virtual void GetValues(AliHBTPair*,AliHBTPair*, Double_t&, Double_t&) = 0;
+
   TH2D* fNumerator;
   TH2D* fDenominator;
   
  public:
-  ClassDef(AliHBTFourPartFctn2D,1)
+  ClassDef(AliHBTTwoPairFctn2D,1)
 };
 
 
 /******************************************************************/
 /******************************************************************/
 /******************************************************************/
+class AliHBTTwoPairFctn3D: public AliHBTTwoPairFctn
+{
+ public:
+  AliHBTTwoPairFctn3D(Int_t nXbins = 200, Double_t maxXval = 1.5, Double_t minXval = 0.0, 
+                       Int_t nYbins = 200, Double_t maxYval = .15, Double_t minYval =-0.15, 
+                       Int_t nZbins = 200, Double_t maxZval = .15, Double_t minZval =-0.15){}
+  virtual ~AliHBTTwoPairFctn3D(){}
+  
+  TH1* GetNumerator(){return fNumerator;}
+  TH1* GetDenominator(){return fDenominator;}
+  
+  void ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
+  void ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
+  
+ protected:
+  virtual void GetValues(AliHBTPair*,AliHBTPair*, Double_t&, Double_t&,Double_t&) = 0;
+
+  TH3D* fNumerator;
+  TH3D* fDenominator;
+  
+ public:
+  ClassDef(AliHBTTwoPairFctn3D,1)
+};
 
 /******************************************************************/
 /******************************************************************/