]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HBTAN/AliHBTFunction.h
Coding violations corrected
[u/mrichter/AliRoot.git] / HBTAN / AliHBTFunction.h
index 1e28e382e1eb8d6caf3856675c902faf66bdee3b..0a03880350a0fdf7fde2857312576ce6ed3791fe 100644 (file)
@@ -1,6 +1,8 @@
 #ifndef ALIHBTFUNCTION_H
 #define ALIHBTFUNCTION_H
-//____________________
+
+/* Id: $ */
+
 ///////////////////////////////////////////////////////
 //                                                   //
 // AliHBTFunction                                    //
 ///////////////////////////////////////////////////////
 
 #include <TH1.h>
+#include <TH2D.h>
+#include <TH3D.h>
 
-#include "AliHBTPairCut.h"
+#include "AliAODPairCut.h"
 #include "AliHBTPair.h"
 
-class TH2D;
-class TH3D;
 
 class AliHBTAnalysis;
-class AliHBTParticleCut;
+class AliVAODParticleCut;
 
 class AliHBTFunction: public TNamed
 {
   public:
     AliHBTFunction();
-    AliHBTFunction(const char* name,const char* title);
+    AliHBTFunction(const char* name, const char* title);
+    AliHBTFunction(const AliHBTFunction & source);
+    
     virtual ~AliHBTFunction();
     
+    AliHBTFunction & operator= (const AliHBTFunction & source);
+
     virtual TH1* GetNumerator() const = 0;
     virtual TH1* GetDenominator() const = 0;
     virtual TH1* GetResult() = 0;
 
-    virtual void Write();
-    virtual void Init();
+    virtual void WriteFunction();
+    virtual void InitFunction();
     
     TH1* GetRatio(Double_t normfactor = 1.0);
     void Rename(const Char_t * name); //renames the function and histograms ==title is the same that name
     void Rename(const Char_t * name, const Char_t * title); //renames and retitle the function and histograms
     
-    void SetPairCut(AliHBTPairCut* cut);
+    void SetPairCut(AliAODPairCut* cut);
     
     virtual AliHBTPair* CheckPair(AliHBTPair* pair);
-    
+    void  SetWriteNumAndDen(Bool_t flag = kFALSE){fWriteNumAndDen = flag;}
   protected:
     virtual void BuildHistos() = 0;//builds default histograms
-    AliHBTPairCut*   fPairCut;     //pair cut
-    
-  public:  
-   ClassDef(AliHBTFunction,2)
+    AliAODPairCut*   fPairCut;     //pair cut
+    Bool_t           fWriteNumAndDen; //flag indicating whether numerator and denominator should be writted together with a result
+    ClassDef(AliHBTFunction,3)
 };
 /******************************************************************/
 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(pair)
-     if(fPairCut->Pass(pair)) //so try reverse combination
-       { 
-        return 0x0;//it is BAD as well - so return
-       }
-   }
+  if(fPairCut->Rejected(pair)) return 0x0; //if the pair is BAD
+
+//   It is notallowed to change the order here beacause analysis enforce the order
+
+//   {//it is BAD 
+//    pair = pair->GetSwappedPair();
+//    if(pair)
+//     if(fPairCut->Rejected(pair)) //so try reverse combination
+//       { 
+//        return 0x0;//it is BAD as well - so return
+//       }
+//   }
+
   return pair; 
 }
 
+/******************************************************************/
+/******************************************************************/
+/******************************************************************/
+class AliHBTCorrelFunction
+{
+  public:
+    AliHBTCorrelFunction():fRatio(0x0){}
+    AliHBTCorrelFunction(const AliHBTCorrelFunction& in):fRatio((in.fRatio)?(TH1*)in.fRatio->Clone():0x0){}
+    virtual ~AliHBTCorrelFunction(){delete fRatio;}
+    
+    AliHBTCorrelFunction& operator=(const AliHBTCorrelFunction& in);
+   
+  protected:
+    TH1* fRatio;//!pointer to the ratio(result)
+    
+  ClassDef(AliHBTCorrelFunction,1)
+};
+
 /******************************************************************/
 /******************************************************************/
 /******************************************************************/
@@ -96,9 +123,8 @@ class AliHBTOnePairFctn
 
     virtual void Init() = 0;
     virtual void Write() = 0;
+    virtual const char* Name() = 0;
     
-  protected:
-  public:  
    ClassDef(AliHBTOnePairFctn,2)
 };
 /******************************************************************/
@@ -135,9 +161,8 @@ class AliHBTTwoPairFctn
     
     virtual void Init() = 0;
     virtual void Write() = 0;
+    virtual const char* Name() = 0;
             
-  protected:
-  public:  
    ClassDef(AliHBTTwoPairFctn,2)
   
 };
@@ -160,19 +185,16 @@ class AliHBTTwoPairFctn
 
 class AliHBTFunction1D: public AliHBTFunction
 {
- private:
-  //this must be declared before constructors because they are used as a default arguments
-  static const Int_t fgkDefaultNBins;//default number of Bins in histograms
-  static const Float_t fgkDefaultMin;//Default min value of histograms
-  static const Float_t fgkDefaultMax;//Default max value of histograms
-  static const UInt_t fgkDefaultNBinsToScale;//Default number of bins used for scaling to tale
-
  public:
   AliHBTFunction1D();//default conmstructor
   AliHBTFunction1D(Int_t nbins, Float_t maxXval, Float_t minXval);
   AliHBTFunction1D(const Char_t *name, const Char_t *title);
   AliHBTFunction1D(const Char_t *name, const Char_t *title,
                    Int_t nbins, Float_t maxXval, Float_t minXval);
+
+  AliHBTFunction1D(const AliHBTFunction1D & source);
+  AliHBTFunction1D & operator= (const AliHBTFunction1D& /*source*/);
+
   virtual ~AliHBTFunction1D();
   
   TH1* GetNumerator() const {return fNumerator;}//returns numerator histogram
@@ -182,16 +204,22 @@ class AliHBTFunction1D: public AliHBTFunction
   void SetNumberOfBinsToScale(Int_t n = fgkDefaultNBinsToScale){fNBinsToScale = n;}
 
  protected:
-  //retruns velue to be histogrammed
+  //returns value to be histogrammed
   virtual void BuildHistos(Int_t nbins, Float_t max, Float_t min);
   virtual void BuildHistos();
   Double_t Scale(TH1D* num,TH1D* den);
   
-  TH1D* fNumerator;
-  TH1D* fDenominator;
-  UInt_t fNBinsToScale;
+  TH1D* fNumerator; // Numerator histogram
+  TH1D* fDenominator; // Denumerator histogram
+  UInt_t fNBinsToScale; // Number of bins to scale
+
+ private:
+  //this must be declared before constructors because they are used as a default arguments
+  static const Int_t fgkDefaultNBins;//default number of Bins in histograms
+  static const Float_t fgkDefaultMin;//Default min value of histograms
+  static const Float_t fgkDefaultMax;//Default max value of histograms
+  static const UInt_t fgkDefaultNBinsToScale;//Default number of bins used for scaling to tale
 
- public:
   ClassDef(AliHBTFunction1D,2)
 };
 
@@ -213,18 +241,6 @@ class AliHBTFunction1D: public AliHBTFunction
  
 class AliHBTFunction2D: public AliHBTFunction
 {
- private:
-  //this must be declared before constructors because they are used as a default arguments
-  static const Int_t fgkDefaultNBinsX;//default number of Bins in X axis in histograms
-  static const Float_t fgkDefaultMinX;//Default min value of X axis in histograms
-  static const Float_t fgkDefaultMaxX;//Default max value of X axis inhistograms
-  static const Int_t fgkDefaultNBinsY;//default number of Bins in histograms
-  static const Float_t fgkDefaultMinY;//Default min value of histograms
-  static const Float_t fgkDefaultMaxY;//Default max value of histograms
-
-  static const UInt_t fgkDefaultNBinsToScaleX;//Default number of X bins used for scaling to tale
-  static const UInt_t fgkDefaultNBinsToScaleY;//Default number of bins used for scaling to tale
-
  public:
   AliHBTFunction2D();
 
@@ -237,6 +253,10 @@ class AliHBTFunction2D: public AliHBTFunction
                       Int_t nXbins, Double_t maxXval, Double_t minXval, 
                       Int_t nYbins, Double_t maxYval, Double_t minYval);
          
+  AliHBTFunction2D(const AliHBTFunction2D & source);
+
+  AliHBTFunction2D & operator= (const AliHBTFunction2D & /*source*/);
+
   virtual ~AliHBTFunction2D();
   
   TH1* GetNumerator() const {return fNumerator;}
@@ -251,15 +271,26 @@ class AliHBTFunction2D: public AliHBTFunction
                            Int_t nybins, Float_t ymax, Float_t ymin);
   virtual void BuildHistos();
   
-  TH2D* fNumerator;
-  TH2D* fDenominator;
+  TH2D* fNumerator; // Numerator histogram
+  TH2D* fDenominator; // Denominator histogram
   
   //definition of area used for scaling -> Scale is calculated this 
   //way that after division tale is on 1
   UInt_t fNBinsToScaleX;//number of bins on X axis
   UInt_t fNBinsToScaleY;//number of bins on Y axis
 
- public:
+ private:
+  //this must be declared before constructors because they are used as a default arguments
+  static const Int_t fgkDefaultNBinsX;//default number of Bins in X axis in histograms
+  static const Float_t fgkDefaultMinX;//Default min value of X axis in histograms
+  static const Float_t fgkDefaultMaxX;//Default max value of X axis inhistograms
+  static const Int_t fgkDefaultNBinsY;//default number of Bins in histograms
+  static const Float_t fgkDefaultMinY;//Default min value of histograms
+  static const Float_t fgkDefaultMaxY;//Default max value of histograms
+
+  static const UInt_t fgkDefaultNBinsToScaleX;//Default number of X bins used for scaling to tale
+  static const UInt_t fgkDefaultNBinsToScaleY;//Default number of bins used for scaling to tale
+
   ClassDef(AliHBTFunction2D,2)
 };
 /******************************************************************/
@@ -281,22 +312,6 @@ class AliHBTFunction2D: public AliHBTFunction
 
 class AliHBTFunction3D: public AliHBTFunction
 {
- private:
-  //this must be declared before constructors because they are used as a default arguments
-  static const Int_t fgkDefaultNBinsX;//default number of Bins in X axis in histograms
-  static const Float_t fgkDefaultMinX;//Default min value of X axis in histograms
-  static const Float_t fgkDefaultMaxX;//Default max value of X axis inhistograms
-  static const Int_t fgkDefaultNBinsY;//default number of Bins in Y axis in histograms
-  static const Float_t fgkDefaultMinY;//Default min value of Y axis in histograms
-  static const Float_t fgkDefaultMaxY;//Default max value of Y axis inhistograms
-  static const Int_t fgkDefaultNBinsZ;//default number of Bins in Z axis in histograms
-  static const Float_t fgkDefaultMinZ;//Default min value of Z axis in histograms
-  static const Float_t fgkDefaultMaxZ;//Default max value of Z axis inhistograms
-
-  static const UInt_t fgkDefaultNBinsToScaleX;//Default number of X bins used for scaling to tale
-  static const UInt_t fgkDefaultNBinsToScaleY;//Default number of Y bins used for scaling to tale
-  static const UInt_t fgkDefaultNBinsToScaleZ;//Default number of Z bins used for scaling to tale
-  
  public:
   AliHBTFunction3D();
 
@@ -310,7 +325,10 @@ class AliHBTFunction3D: public AliHBTFunction
                    Int_t nXbins, Double_t maxXval, Double_t minXval, 
                    Int_t nYbins, Double_t maxYval, Double_t minYval, 
                    Int_t nZbins, Double_t maxZval, Double_t minZval);
-   
+
+  AliHBTFunction3D(const AliHBTFunction3D & source);
+  AliHBTFunction3D & operator= (const AliHBTFunction3D & /*source*/);
+
   virtual ~AliHBTFunction3D();//destructor
 
   TH1* GetNumerator() const {return fNumerator;}
@@ -329,8 +347,8 @@ class AliHBTFunction3D: public AliHBTFunction
               Int_t nzbins, Float_t zmax, Float_t zmin);
   virtual void BuildHistos();
   
-  TH3D* fNumerator;
-  TH3D* fDenominator;
+  TH3F* fNumerator; // Numerator histogram
+  TH3F* fDenominator; // Denominator histogram
   
   //definition of area used for scaling -> Scale is calculated this 
   //way that after division tale is on 1
@@ -338,7 +356,22 @@ class AliHBTFunction3D: public AliHBTFunction
   UInt_t fNBinsToScaleY;//number of bins on Y axis
   UInt_t fNBinsToScaleZ;//number of bins on Z axis
   
- public:
+ private:
+  //this must be declared before constructors because they are used as a default arguments
+  static const Int_t fgkDefaultNBinsX;//default number of Bins in X axis in histograms
+  static const Float_t fgkDefaultMinX;//Default min value of X axis in histograms
+  static const Float_t fgkDefaultMaxX;//Default max value of X axis inhistograms
+  static const Int_t fgkDefaultNBinsY;//default number of Bins in Y axis in histograms
+  static const Float_t fgkDefaultMinY;//Default min value of Y axis in histograms
+  static const Float_t fgkDefaultMaxY;//Default max value of Y axis inhistograms
+  static const Int_t fgkDefaultNBinsZ;//default number of Bins in Z axis in histograms
+  static const Float_t fgkDefaultMinZ;//Default min value of Z axis in histograms
+  static const Float_t fgkDefaultMaxZ;//Default max value of Z axis inhistograms
+
+  static const UInt_t fgkDefaultNBinsToScaleX;//Default number of X bins used for scaling to tale
+  static const UInt_t fgkDefaultNBinsToScaleY;//Default number of Y bins used for scaling to tale
+  static const UInt_t fgkDefaultNBinsToScaleZ;//Default number of Z bins used for scaling to tale
+  
   ClassDef(AliHBTFunction3D,2)
 };
 /******************************************************************/
@@ -370,11 +403,13 @@ class AliHBTOnePairFctn1D: public AliHBTOnePairFctn, public AliHBTFunction1D
 
   void ProcessSameEventParticles(AliHBTPair* pair);
   void ProcessDiffEventParticles(AliHBTPair* pair);
-  void Write(){AliHBTFunction::Write();}
-  void Init(){AliHBTFunction::Init();}
+  void Write(){WriteFunction();}
+  void Init(){InitFunction();}
+  const char* Name(){return GetName();}
+  
  protected:
   //retruns velue to be histogrammed
-  virtual Double_t GetValue(AliHBTPair* pair) = 0; 
+  virtual Double_t GetValue(AliHBTPair* pair) const = 0; 
   ClassDef(AliHBTOnePairFctn1D,2)
 };
 /******************************************************************/
@@ -412,10 +447,11 @@ class AliHBTOnePairFctn2D: public AliHBTOnePairFctn, public AliHBTFunction2D
   
   void ProcessSameEventParticles(AliHBTPair* pair);
   void ProcessDiffEventParticles(AliHBTPair* pair);
-  void Write(){AliHBTFunction::Write();}
-  void Init(){AliHBTFunction::Init();}
+  void Write(){WriteFunction();}
+  void Init(){InitFunction();}
+  const char* Name(){return GetName();}
  protected:
-  virtual void GetValues(AliHBTPair* pair, Double_t& x, Double_t& y) = 0;
+  virtual void GetValues(AliHBTPair* pair, Double_t& x, Double_t& y) const = 0;
   ClassDef(AliHBTOnePairFctn2D,2)
 };
 /******************************************************************/
@@ -455,10 +491,11 @@ class AliHBTOnePairFctn3D: public AliHBTOnePairFctn, public AliHBTFunction3D
 
   void ProcessSameEventParticles(AliHBTPair* pair);
   void ProcessDiffEventParticles(AliHBTPair* pair);
-  void Write(){AliHBTFunction::Write();}
-  void Init(){AliHBTFunction::Init();}
+  void Write(){WriteFunction();}
+  void Init(){InitFunction();}
+  const char* Name(){return GetName();}
  protected:
-  virtual void GetValues(AliHBTPair* pair, Double_t& x, Double_t& y, Double_t& z) = 0;
+  virtual void GetValues(AliHBTPair* pair, Double_t& x, Double_t& y, Double_t& z) const = 0;
  ClassDef(AliHBTOnePairFctn3D,2)
 };
 /******************************************************************/
@@ -491,11 +528,13 @@ class AliHBTTwoPairFctn1D: public AliHBTTwoPairFctn, public AliHBTFunction1D
 
   void ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
   void ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
-  void Write(){AliHBTFunction::Write();}
-  void Init(){AliHBTFunction::Init();}
+  void Write(){WriteFunction();}
+  void Init(){InitFunction();}
+  const char* Name(){return GetName();}
+  
  protected:
-  virtual Double_t GetValue(AliHBTPair* trackpair, AliHBTPair* partpair) = 0;
- public: 
+  virtual Double_t GetValue(AliHBTPair* trackpair, AliHBTPair* partpair) const = 0;
+
   ClassDef(AliHBTTwoPairFctn1D,2)
 };
 /******************************************************************/
@@ -534,13 +573,13 @@ class AliHBTTwoPairFctn2D: public AliHBTTwoPairFctn, public AliHBTFunction2D
   
   void ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
   void ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
-  void Write(){AliHBTFunction::Write();}
-  void Init(){AliHBTFunction::Init();}
+  void Write(){WriteFunction();}
+  void Init(){InitFunction();}
+  const char* Name(){return GetName();}
 
  protected:
-  virtual void GetValues(AliHBTPair* trackpair, AliHBTPair* partpair, Double_t& x, Double_t& y) = 0;
+  virtual void GetValues(AliHBTPair* trackpair, AliHBTPair* partpair, Double_t& x, Double_t& y) const = 0;
 
- public:
   ClassDef(AliHBTTwoPairFctn2D,2)
 };
 /******************************************************************/
@@ -581,13 +620,13 @@ class AliHBTTwoPairFctn3D: public AliHBTTwoPairFctn, public AliHBTFunction3D
 
   void ProcessSameEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
   void ProcessDiffEventParticles(AliHBTPair* trackpair, AliHBTPair* partpair);
-  void Write(){AliHBTFunction::Write();}
-  void Init(){AliHBTFunction::Init();}
+  void Write(){WriteFunction();}
+  void Init(){InitFunction();}
+  const char* Name(){return GetName();}
 
  protected:
-  virtual void GetValues(AliHBTPair* trackpair, AliHBTPair* partpair, Double_t& x, Double_t& y, Double_t& z) = 0;
+  virtual void GetValues(AliHBTPair* trackpair, AliHBTPair* partpair, Double_t& x, Double_t& y, Double_t& z) const = 0;
 
- public:
   ClassDef(AliHBTTwoPairFctn3D,2)
 };