Initial check-in of the model classes
[u/mrichter/AliRoot.git] / PWG2 / FEMTOSCOPY / AliFemto / CorrFctn / AliFemtoBPLCMS3DCorrFctn.h
1 /***************************************************************************
2  *
3  * $Id$
4  *
5  * Author: Mike Lisa, Ohio State, lisa@mps.ohio-state.edu
6  ***************************************************************************
7  *
8  * Description: part of STAR HBT Framework: AliFemtoMaker package
9  *   This one does 3D Bertsch-Pratt decomposition in the LCMS frame
10  *
11  ***************************************************************************
12  *
13  * $Log$
14  * Revision 1.1.1.1  2007/04/25 15:38:41  panos
15  * Importing the HBT code dir
16  *
17  * Revision 1.1.1.1  2007/03/07 10:14:49  mchojnacki
18  * First version on CVS
19  *
20  * Revision 1.5  2002/06/07 22:51:39  lisa
21  * Widely used AliFemtoBPLCMS3DCorrFctn class now accumulates UNcorrected denominator and has a WriteOutHistos method
22  *
23  * Revision 1.4  2001/05/23 00:19:04  lisa
24  * Add in Smearing classes and methods needed for momentum resolution studies and correction
25  *
26  * Revision 1.3  2000/10/26 19:48:50  rcwells
27  * Added functionality for Coulomb correction of <qInv> in 3D correltions
28  *
29  * Revision 1.2  2000/09/14 18:36:53  lisa
30  * Added Qinv and ExitSep pair cuts and AliFemtoBPLCMS3DCorrFctn_SIM CorrFctn
31  *
32  * Revision 1.1  2000/08/17 20:48:39  lisa
33  * Adding correlationfunction in LCMS frame
34  *
35  *
36  *
37  **************************************************************************/
38
39 #ifndef AliFemtoBPLCMS3DCorrFctn_hh
40 #define AliFemtoBPLCMS3DCorrFctn_hh
41
42 #include "Base/AliFemtoCorrFctn.h"
43 //#include "Infrastructure/AliFemtoCoulomb.h"
44 #include "Base/AliFemtoPairCut.h"
45 //#include "Infrastructure/AliFemtoHisto.h"
46 #include "TH3D.h"
47 //#include "Infrastructure/AliFemtoSmearPair.h"
48
49 class AliFemtoBPLCMS3DCorrFctn : public AliFemtoCorrFctn {
50 public:
51   AliFemtoBPLCMS3DCorrFctn(char* title, const int& nbins, const float& QLo, const float& QHi);
52   AliFemtoBPLCMS3DCorrFctn(const AliFemtoBPLCMS3DCorrFctn& aCorrFctn);
53   virtual ~AliFemtoBPLCMS3DCorrFctn();
54
55   AliFemtoBPLCMS3DCorrFctn& operator=(const AliFemtoBPLCMS3DCorrFctn& aCorrFctn);
56
57   virtual AliFemtoString Report();
58   virtual void AddRealPair(const AliFemtoPair*);
59   virtual void AddMixedPair(const AliFemtoPair*);
60
61   virtual void Finish();
62
63   TH3D* Numerator();
64   TH3D* Denominator();
65   TH3D* Ratio();
66   TH3D* QinvHisto();
67
68   // here are get and set for the range over which the correlation function 
69   // is normalized (in Qinv).  The range is set to 0.15..0.18 in the constuctor
70   // by default, but the Set's below override this
71   void SetNormRangeLo(float qLo);
72   void SetNormRangeHi(float qHi);
73   float GetNormRangeLo();
74   float GetNormRangeHi();
75
76   void WriteOutHistos();
77
78   //  void SetCoulombCorrection(AliFemtoCoulomb* Correction);
79
80   void SetSpecificPairCut(AliFemtoPairCut*);
81
82   //  void SetSmearPair(AliFemtoSmearPair*);
83   void SetRout(double guess);
84   void SetRside(double guess);
85   void SetRlong(double guess);
86   void SetLambda(double guess);
87
88
89   // here are a whole bunch of histos that get filled if we do resolution correction
90   TH3D* fIDNumHisto;
91   TH3D* fIDDenHisto;
92   TH3D* fIDRatHisto;
93   //
94   TH3D* fSMNumHisto;
95   TH3D* fSMDenHisto;
96   TH3D* fSMRatHisto;
97   //
98   TH3D* fCorrectionHisto;
99   TH3D* fCorrCFHisto;
100
101
102
103
104 private:
105   TH3D* fNumerator;
106   TH3D* fDenominator;
107   //  TH3D* fUncorrectedDenominator;
108   TH3D* fRatio;
109   TH3D* fQinvHisto;
110
111   // for resolution correction
112   //  AliFemtoSmearPair* fSmearPair; //!
113   double fLambda;
114   double fRout2;
115   double fRside2;
116   double fRlong2;
117
118   AliFemtoPairCut* fPairCut;    //! this is a PairCut specific to THIS CorrFctn, not the Analysis
119
120   // upper and lower bounds of Qinv region where to do normalization
121   float fQinvNormLo;
122   float fQinvNormHi;
123
124   // and here are the number of pairs in that region...
125   unsigned long int fNumRealsNorm;
126   unsigned long int fNumMixedNorm;
127
128   //  AliFemtoCoulomb* fCorrection; //!
129
130
131 #ifdef __ROOT__
132   ClassDef(AliFemtoBPLCMS3DCorrFctn, 1)
133 #endif
134 };
135
136 inline  TH3D* AliFemtoBPLCMS3DCorrFctn::Numerator(){return fNumerator;}
137 inline  TH3D* AliFemtoBPLCMS3DCorrFctn::Denominator(){return fDenominator;}
138 //inline  TH3D* AliFemtoBPLCMS3DCorrFctn::UncorrectedDenominator(){return fUncorrectedDenominator;}
139 inline  TH3D* AliFemtoBPLCMS3DCorrFctn::Ratio(){return fRatio;}
140 inline  TH3D* AliFemtoBPLCMS3DCorrFctn::QinvHisto(){return fQinvHisto;}
141 inline  void AliFemtoBPLCMS3DCorrFctn::SetNormRangeLo(float qLo){fQinvNormLo = qLo;}
142 inline  void AliFemtoBPLCMS3DCorrFctn::SetNormRangeHi(float qHi){fQinvNormHi = qHi;}
143 inline  float AliFemtoBPLCMS3DCorrFctn::GetNormRangeLo(){return fQinvNormLo;}
144 inline  float AliFemtoBPLCMS3DCorrFctn::GetNormRangeHi(){return fQinvNormHi;}
145 //inline  void AliFemtoBPLCMS3DCorrFctn::SetCoulombCorrection(AliFemtoCoulomb* Correction){fCorrection = Correction;}
146 inline  void AliFemtoBPLCMS3DCorrFctn::SetSpecificPairCut(AliFemtoPairCut* pc){fPairCut=pc;}
147 //inline  void AliFemtoBPLCMS3DCorrFctn::SetSmearPair(AliFemtoSmearPair* sp){fSmearPair = sp;}
148
149 inline  void AliFemtoBPLCMS3DCorrFctn::SetRout(double r){fRout2 = r*r;}
150 inline  void AliFemtoBPLCMS3DCorrFctn::SetRside(double r){fRside2 = r*r;}
151 inline  void AliFemtoBPLCMS3DCorrFctn::SetRlong(double r){fRlong2 = r*r;}
152 inline  void AliFemtoBPLCMS3DCorrFctn::SetLambda(double l){fLambda = l;}
153
154 #endif
155