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