053eb8c711e132ffb9109de36728c3a34e80c235
[u/mrichter/AliRoot.git] / PWG2 / FEMTOSCOPY / AliFemto / AliFemtoBPLCMS3DCorrFctn.h
1 ///////////////////////////////////////////////////////////////////////////
2 //                                                                       //
3 // AliFemtoBPLCMS3DCorrFctn: a class to calculate 3D correlation         //
4 // for pairs of identical particles.                                     //
5 //                                                                       //
6 ///////////////////////////////////////////////////////////////////////////
7
8 #ifndef ALIFEMTOBPLCMS3DCORRFCTN_H
9 #define ALIFEMTOBPLCMS3DCORRFCTN_H
10
11 #include "AliFemtoCorrFctn.h"
12 //#include "AliFemtoCoulomb.h"
13 #include "AliFemtoPairCut.h"
14 //#include "AliFemtoHisto.h"
15 #include "TH3D.h"
16 //#include "AliFemtoSmearPair.h"
17
18 class AliFemtoBPLCMS3DCorrFctn : public AliFemtoCorrFctn {
19 public:
20   AliFemtoBPLCMS3DCorrFctn(char* title, const int& nbins, const float& QLo, const float& QHi);
21   AliFemtoBPLCMS3DCorrFctn(const AliFemtoBPLCMS3DCorrFctn& aCorrFctn);
22   virtual ~AliFemtoBPLCMS3DCorrFctn();
23
24   AliFemtoBPLCMS3DCorrFctn& operator=(const AliFemtoBPLCMS3DCorrFctn& aCorrFctn);
25
26   virtual AliFemtoString Report();
27   virtual void AddRealPair( AliFemtoPair* aPair);
28   virtual void AddMixedPair( AliFemtoPair* aPair);
29
30   virtual void Finish();
31
32   TH3D* Numerator();
33   TH3D* Denominator();
34   TH3D* Ratio();
35   TH3D* QinvHisto();
36
37   // here are get and set for the range over which the correlation function 
38   // is normalized (in Qinv).  The range is set to 0.15..0.18 in the constuctor
39   // by default, but the Set's below override this
40   void SetNormRangeLo(float qLo);
41   void SetNormRangeHi(float qHi);
42   float GetNormRangeLo() const;
43   float GetNormRangeHi() const;
44
45   void WriteOutHistos();
46   virtual TList* GetOutputList();
47
48   //  void SetCoulombCorrection(AliFemtoCoulomb* Correction);
49
50   void SetUseRPSelection(unsigned short aRPSel);
51
52   //  void SetSmearPair(AliFemtoSmearPair*);
53   void SetRout(double guess);
54   void SetRside(double guess);
55   void SetRlong(double guess);
56   void SetLambda(double guess);
57
58 private:
59 /*   // here are a whole bunch of histos that get filled if we do resolution correction */
60 /*   TH3D* fIDNumHisto;        // true pairs numerator   */
61 /*   TH3D* fIDDenHisto;        // true pairs denominator */
62 /*   TH3D* fIDRatHisto;        // true pairs ratio       */
63 /*   //  */
64 /*   TH3D* fSMNumHisto;        // mixed pairs numerator   */
65 /*   TH3D* fSMDenHisto;     // mixed pairs denominator */
66 /*   TH3D* fSMRatHisto;     // mixed pairs ratio       */
67 /*   // */
68 /*   TH3D* fCorrectionHisto;   // correction histogram */
69 /*   TH3D* fCorrCFHisto;       // Corrected CF */
70
71   TH3D* fNumerator;         // numerator
72   TH3D* fDenominator;       // denominator
73   //  TH3D* fUncorrectedDenominator;
74   TH3D* fRatio;             // ratio - the correlation function
75   TH3D* fQinvHisto;         // Qinv weights
76
77   // for resolution correction
78   //  AliFemtoSmearPair* fSmearPair; //!
79   double fLambda;           // lambda for smearing correction
80   double fRout2;            // Rout for smearing correction
81   double fRside2;           // Rside for smearing correction
82   double fRlong2;           // Rlong for smearing correction
83
84   // upper and lower bounds of Qinv region where to do normalization
85   float fQinvNormLo;        // Lower bound of Qinv normalization range
86   float fQinvNormHi;        // Upper bound of Qinv normalization range
87
88   // and here are the number of pairs in that region...
89   unsigned long int fNumRealsNorm; // pairs in numerator in Qinv normalization range
90   unsigned long int fNumMixedNorm; // pairs in denominator in Qinv normalization range
91
92  protected:
93   unsigned short fUseRPSelection;  // The pair cut uses RP selection
94
95   //  AliFemtoCoulomb* fCorrection; //!
96   
97
98 #ifdef __ROOT__
99   ClassDef(AliFemtoBPLCMS3DCorrFctn, 1)
100 #endif
101 };
102
103 inline  TH3D* AliFemtoBPLCMS3DCorrFctn::Numerator(){return fNumerator;}
104 inline  TH3D* AliFemtoBPLCMS3DCorrFctn::Denominator(){return fDenominator;}
105 //inline  TH3D* AliFemtoBPLCMS3DCorrFctn::UncorrectedDenominator(){return fUncorrectedDenominator;}
106 inline  TH3D* AliFemtoBPLCMS3DCorrFctn::Ratio(){return fRatio;}
107 inline  TH3D* AliFemtoBPLCMS3DCorrFctn::QinvHisto(){return fQinvHisto;}
108 inline  void AliFemtoBPLCMS3DCorrFctn::SetNormRangeLo(float qLo){fQinvNormLo = qLo;}
109 inline  void AliFemtoBPLCMS3DCorrFctn::SetNormRangeHi(float qHi){fQinvNormHi = qHi;}
110 inline  float AliFemtoBPLCMS3DCorrFctn::GetNormRangeLo() const{return fQinvNormLo;}
111 inline  float AliFemtoBPLCMS3DCorrFctn::GetNormRangeHi() const{return fQinvNormHi;}
112 //inline  void AliFemtoBPLCMS3DCorrFctn::SetCoulombCorrection(AliFemtoCoulomb* Correction){fCorrection = Correction;}
113 //inline  void AliFemtoBPLCMS3DCorrFctn::SetSmearPair(AliFemtoSmearPair* sp){fSmearPair = sp;}
114
115 inline  void AliFemtoBPLCMS3DCorrFctn::SetRout(double r){fRout2 = r*r;}
116 inline  void AliFemtoBPLCMS3DCorrFctn::SetRside(double r){fRside2 = r*r;}
117 inline  void AliFemtoBPLCMS3DCorrFctn::SetRlong(double r){fRlong2 = r*r;}
118 inline  void AliFemtoBPLCMS3DCorrFctn::SetLambda(double l){fLambda = l;}
119
120 #endif
121