]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/FLOW/AliFlowCommon/AliFlowAnalysisWithLeeYangZeros.h
remove empty method and make two methods public (last fix needed to run package under...
[u/mrichter/AliRoot.git] / PWG2 / FLOW / AliFlowCommon / AliFlowAnalysisWithLeeYangZeros.h
1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2  * See cxx source for full Copyright notice                               */
3
4 /* $Id$ */
5
6
7 #ifndef ALIFLOWANALYSISWITHLEEYANGZEROS_H
8 #define ALIFLOWANALYSISWITHLEEYANGZEROS_H
9
10 ////////////////////////////////////////////////////////////////////
11 // Description: Maker to analyze Flow by the LeeYangZeros method
12 //              One needs to do two runs over the data; 
13 //              First to calculate the integrated flow 
14 //              and in the second to calculate the differential flow
15 // Author: Naomi van der Kolk (kolk@nikhef.nl)
16 ////////////////////////////////////////////////////////////////////
17
18
19 #include "AliFlowVector.h" //needed as include
20
21 //class AliFlowTrackSimple;
22 class AliFlowEventSimple;
23 class AliFlowLYZHist1; 
24 class AliFlowLYZHist2;
25 class AliFlowCommonHist;
26 class AliFlowCommonHistResults;
27
28 class TH1F;
29 class TH1D;
30 class TProfile;
31 class TProfile2D;
32 class TObjArray;
33 class TFile;
34 class TComplex;
35 class TString;
36 class TList;
37 class Riostream;
38
39  
40 class AliFlowAnalysisWithLeeYangZeros {
41
42  public:
43  
44    AliFlowAnalysisWithLeeYangZeros();                      //default constructor
45    virtual  ~AliFlowAnalysisWithLeeYangZeros();            //destructor
46  
47    Bool_t    Init();                                       //defines variables and histograms
48    Bool_t    Make(AliFlowEventSimple* anEvent);            //calculates variables and fills histograms
49    void      GetOutputHistograms(TList *outputListHistos); //get pointers to all output histograms (called before Finish()) 
50    Bool_t    Finish();                                     //saves histograms
51    void      WriteHistograms(TString* outputFileName);     //writes histograms locally
52    void      WriteHistograms(TString outputFileName);      //writes histograms locally
53    
54    Double_t  GetQtheta(AliFlowVector aQ, Double_t aTheta);
55    
56    void      SetFirstRun(Bool_t kt)       { this->fFirstRun = kt ; }
57    Bool_t    GetFirstRun() const          { return this->fFirstRun ; }
58    void      SetUseSum(Bool_t kt)         { this->fUseSum = kt ; }
59    Bool_t    GetUseSum() const            { return this->fUseSum ; }
60    void      SetDoubleLoop(Bool_t kt)     { this->fDoubleLoop = kt ; }
61    Bool_t    GetDoubleLoop() const        { return this->fDoubleLoop ; }
62    void      SetDebug(Bool_t kt)          { this->fDebug = kt ; }
63    Bool_t    GetDebug() const             { return this->fDebug ; }
64    
65    void      SetEventNumber(Int_t n)      { this->fEventNumber = n; }
66    Int_t     GetEventNumber() const       { return this->fEventNumber; }
67    void      SetQ2sum(Double_t d)         { this->fQ2sum = d; }
68    Double_t  GetQ2sum() const             { return this->fQ2sum; }
69
70    // Output 
71    TList*             GetHistList() const      { return this->fHistList ; }     
72    AliFlowCommonHist* GetCommonHists() const   { return this->fCommonHists; }
73    void               SetCommonHists(AliFlowCommonHist* const aCommonHist)  
74      { this->fCommonHists = aCommonHist; }
75    AliFlowCommonHistResults* GetCommonHistsRes() const  
76      { return this->fCommonHistsRes; }
77    void               SetCommonHistsRes(AliFlowCommonHistResults* const aCommonHistResult) 
78      { this->fCommonHistsRes = aCommonHistResult; }
79    //AliFlowLYZHist1* GetHist1() const             {return this->fHist1; } 
80    void               SetHist1(AliFlowLYZHist1* const aLYZHist1[])  
81      {for (Int_t i=0;i<5;i++) {this->fHist1[i] = aLYZHist1[i];} }
82    //AliFlowLYZHist2* GetHist2() const             {return this->fHist2; } 
83    void               SetHist2RP(AliFlowLYZHist2* const aLYZHist2RP[])  
84      {for (Int_t i=0;i<5;i++) {this->fHist2RP[i] = aLYZHist2RP[i];} }
85    void               SetHist2POI(AliFlowLYZHist2* const aLYZHist2POI[])  
86      {for (Int_t i=0;i<5;i++) {this->fHist2POI[i] = aLYZHist2POI[i];} }
87
88    TProfile*  GetHistProVtheta() const   {return this->fHistProVtheta; } 
89    void       SetHistProVtheta(TProfile* const aHistProVtheta)     
90      { this->fHistProVtheta = aHistProVtheta; }
91    TProfile*  GetHistProVetaRP() const     {return this->fHistProVetaRP; }  
92    void       SetHistProVetaRP(TProfile* const aHistProVetaRP)         
93      {this->fHistProVetaRP = aHistProVetaRP; }
94    TProfile*  GetHistProVetaPOI() const     {return this->fHistProVetaPOI; }  
95    void       SetHistProVetaPOI(TProfile* const aHistProVetaPOI)         
96      {this->fHistProVetaPOI = aHistProVetaPOI; }
97    TProfile*  GetHistProVPtRP() const      {return this->fHistProVPtRP;}
98    void       SetHistProVPtRP(TProfile* const aHistProVPtRP)           
99      {this->fHistProVPtRP = aHistProVPtRP; }
100    TProfile*  GetHistProVPtPOI() const      {return this->fHistProVPtPOI;}
101    void       SetHistProVPtPOI(TProfile* const aHistProVPtPOI)           
102      {this->fHistProVPtPOI = aHistProVPtPOI; }
103    TProfile*  GetHistProR0theta() const  {return this->fHistProR0theta; }
104    void       SetHistProR0theta(TProfile* const aHistProR0theta)   
105      {this->fHistProR0theta = aHistProR0theta; }
106    TProfile*  GetHistProReDenom() const  {return this->fHistProReDenom; } 
107    void       SetHistProReDenom(TProfile* const aHistProReDenom)   
108      {this->fHistProReDenom = aHistProReDenom; }
109    TProfile*  GetHistProImDenom() const  {return this->fHistProImDenom; }
110    void       SetHistProImDenom(TProfile* const aHistProImDenom)   
111      {this->fHistProImDenom = aHistProImDenom; }
112    TProfile*  GetHistProReDtheta() const {return this->fHistProReDtheta; } 
113    void       SetHistProReDtheta(TProfile* const aHistProReDtheta) 
114      {this->fHistProReDtheta = aHistProReDtheta; }
115    TProfile*  GetHistProImDtheta() const {return this->fHistProImDtheta; }
116    void       SetHistProImDtheta(TProfile* const aHistProImDtheta) 
117      {this->fHistProImDtheta = aHistProImDtheta; }
118    TH1F*      GetHistQsumforChi() const  {return this->fHistQsumforChi; }
119    void       SetHistQsumforChi(TH1F* const aHistQsumforChi) 
120     {this->fHistQsumforChi = aHistQsumforChi; }
121
122    void       SetFirstRunList(TList* const list) { this->fFirstRunList = list; }
123    TList*     GetFirstRunList() const            { return this->fFirstRunList; }
124
125    TComplex   GetGrtheta(AliFlowEventSimple* anEvent, Double_t aR, Double_t aTheta);
126    TComplex   GetDiffFlow(AliFlowEventSimple* anEvent, Double_t aR, Int_t theta); 
127         
128
129  private:
130
131    AliFlowAnalysisWithLeeYangZeros(const AliFlowAnalysisWithLeeYangZeros& aAnalysis);            // copy constructor
132    AliFlowAnalysisWithLeeYangZeros& operator=(const AliFlowAnalysisWithLeeYangZeros& aAnalysis); //assignment operator
133
134    Bool_t   MakeControlHistograms(AliFlowEventSimple* anEvent); 
135    Bool_t   FillFromFlowEvent(AliFlowEventSimple* anEvent);
136    Bool_t   SecondFillFromFlowEvent(AliFlowEventSimple* anEvent);
137
138 #ifndef __CINT__
139    
140    TVector2*  fQsum;         // flow vector sum              
141    Double_t  fQ2sum;         // flow vector sum squared                 
142       
143 #endif /*__CINT__*/
144
145    Int_t        fEventNumber;     // event counter
146         
147    Bool_t       fFirstRun ;       // flag for lyz analysis: true=first run over data, false=second run 
148    Bool_t       fUseSum ;         // flag for lyz analysis: true=use sum gen.function, false=use product gen.function
149    Bool_t       fDoubleLoop ;     // flag for studying non flow effects
150    Bool_t       fDebug ;          // flag for lyz analysis: more print statements
151
152    TList*       fHistList;        //list to hold all output histograms 
153    TList*       fFirstRunList;    //list from first run output
154         
155    TProfile*    fHistProVtheta;   //hist of V(theta)      
156    TProfile*    fHistProVetaRP;   //hist of v(eta) for RP selection
157    TProfile*    fHistProVetaPOI;  //hist of v(eta) for POI selection
158    TProfile*    fHistProVPtRP;    //hist of v(pt) for RP selection
159    TProfile*    fHistProVPtPOI;   //hist of v(pt) for POI selection
160    TProfile*    fHistProR0theta;  //hist of r0(theta)    
161    TProfile*    fHistProReDenom;  //hist of the real part of the denominator   
162    TProfile*    fHistProImDenom;  //hist of the imaginary part of the denominator 
163    TProfile*    fHistProReDtheta; //hist of the real part of D^theta   
164    TProfile*    fHistProImDtheta; //hist of the imaginary part of D^theta  
165    TH1F*        fHistQsumforChi;  //hist of sum of Q-vectors and the sum of the square of Q-vectors
166   
167     
168   //class AliFlowLYZHist1 defines the histograms: fHistProGtheta, fHistProReGtheta, fHistProImGtheta
169   AliFlowLYZHist1* fHist1[5];     //array of hist1
170
171   //class AliFlowLYZHist1 defines the histograms: fHistProReNumer, fHistProImNumer, fHistProReNumerPt,
172   //fHistProImNumerPt, fHistProReNumer2D, fHistProImNumer2D.
173   AliFlowLYZHist2* fHist2RP[5];   //array of hist2
174   AliFlowLYZHist2* fHist2POI[5];  //array of hist2
175
176   AliFlowCommonHist*        fCommonHists;     //control histograms
177   AliFlowCommonHistResults* fCommonHistsRes;  //final results histograms
178  
179   ClassDef(AliFlowAnalysisWithLeeYangZeros,1)  // macro for rootcint
180 };
181  
182      
183 #endif
184