#include <TH2D.h>
#include <TH3D.h>
-#include "AliHBTPairCut.h"
+#include "AliAODPairCut.h"
#include "AliHBTPair.h"
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(const AliHBTFunction & source) {
- // Copy constructor needed by the coding conventions byt not used
- Fatal("AliHBTFunction(const AliHBTFunction & source)",
- "not implemented");
- }
-
- AliHBTFunction & operator= (const AliHBTFunction & source) {
- // Assignment needed by the coding conventions byt not used
- Fatal("Assignment operator","not implemented");
- return * this;
- }
+ 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
-
- 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->Pass(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->Pass(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)
+};
+
/******************************************************************/
/******************************************************************/
/******************************************************************/
virtual void Init() = 0;
virtual void Write() = 0;
+ virtual const char* Name() = 0;
ClassDef(AliHBTOnePairFctn,2)
};
virtual void Init() = 0;
virtual void Write() = 0;
+ virtual const char* Name() = 0;
ClassDef(AliHBTTwoPairFctn,2)
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) {
- // Copy constructor needed by the coding conventions byt not used
- Fatal("AliHBTFunction1D(const AliHBTFunction1D & source)",
- "not implemented");
- }
- AliHBTFunction1D & operator= (const AliHBTFunction1D & source) {
- // Assignment needed by the coding conventions byt not used
- Fatal("Assignment operator","not implemented");
- return * this;
- }
+
+ AliHBTFunction1D(const AliHBTFunction1D & source);
+ AliHBTFunction1D & operator= (const AliHBTFunction1D& /*source*/);
virtual ~AliHBTFunction1D();
Int_t nXbins, Double_t maxXval, Double_t minXval,
Int_t nYbins, Double_t maxYval, Double_t minYval);
- AliHBTFunction2D(const AliHBTFunction2D & source) {
- // Copy constructor needed by the coding conventions byt not used
- Fatal("AliHBTFunction2D(const AliHBTFunction2D & source)",
- "not implemented");
- }
-
- AliHBTFunction2D & operator= (const AliHBTFunction2D & source) {
- // Assignment needed by the coding conventions byt not used
- Fatal("Assignment operator","not implemented");
- return * this;
- }
+ AliHBTFunction2D(const AliHBTFunction2D & source);
+
+ AliHBTFunction2D & operator= (const AliHBTFunction2D & /*source*/);
virtual ~AliHBTFunction2D();
Int_t nYbins, Double_t maxYval, Double_t minYval,
Int_t nZbins, Double_t maxZval, Double_t minZval);
- AliHBTFunction3D(const AliHBTFunction3D & source) {
- // Copy constructor needed by the coding conventions byt not used
- Fatal("AliHBTFunction3D(const AliHBTFunction3D & source)",
- "not implemented");
- }
-
- AliHBTFunction3D & operator= (const AliHBTFunction3D & source) {
- // Assignment needed by the coding conventions byt not used
- Fatal("Assignment operator","not implemented");
- return * this;
- }
+ AliHBTFunction3D(const AliHBTFunction3D & source);
+ AliHBTFunction3D & operator= (const AliHBTFunction3D & /*source*/);
virtual ~AliHBTFunction3D();//destructor
Int_t nzbins, Float_t zmax, Float_t zmin);
virtual void BuildHistos();
- TH3D* fNumerator; // Numerator histogram
- TH3D* fDenominator; // Denominator histogram
+ 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
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)
};
/******************************************************************/
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)
};
/******************************************************************/
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)
};
/******************************************************************/
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;
+ virtual Double_t GetValue(AliHBTPair* trackpair, AliHBTPair* partpair) const = 0;
ClassDef(AliHBTTwoPairFctn1D,2)
};
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;
ClassDef(AliHBTTwoPairFctn2D,2)
};
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;
ClassDef(AliHBTTwoPairFctn3D,2)
};