]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/FLOW/AliFlowAnalysisWithLeeYangZeros.h
e6f6a296d5b4ef9bc4762f7eda6420ec685f4da3
[u/mrichter/AliRoot.git] / PWG2 / FLOW / 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 #include "AliFlowVector.h" //needed as include
11
12 class AliFlowTrackSimple;
13 class AliFlowEventSimple;
14 class AliFlowLYZHist1; 
15 class AliFlowLYZHist2;
16 class AliFlowCommonHist;
17 class AliFlowCommonHistResults;
18
19 class TH1F;
20 class TH1D;
21 class TProfile;
22 class TProfile2D;
23 class TObjArray;
24 class TFile;
25 class TComplex;
26 class TString;
27 class Riostream;
28
29
30 // Description: Maker to analyze Flow by the LeeYangZeros method
31 //              One needs to do two runs over the data; 
32 //              First to calculate the integrated flow 
33 //              and in the second to calculate the differential flow
34  
35 class AliFlowAnalysisWithLeeYangZeros {
36
37  public:
38  
39    AliFlowAnalysisWithLeeYangZeros();   //default constructor
40    virtual  ~AliFlowAnalysisWithLeeYangZeros();                                   //destructor
41  
42    Bool_t    Init();                             //defines variables and histograms
43    Bool_t    Make(AliFlowEventSimple* fEvent);    //calculates variables and fills histograms
44    Bool_t    Finish();                           //saves histograms
45
46    Double_t  GetQtheta(TVector2 fQ, Double_t fTheta);
47
48    void      SetFirstRun(Bool_t kt)              { this->fFirstRun = kt ; }
49    Bool_t    GetFirstRun() const                 { return this->fFirstRun ; }
50    void      SetUseSum(Bool_t kt)                { this->fUseSum = kt ; }
51    Bool_t    GetUseSum() const                   { return this->fUseSum ; }
52    void      SetDoubleLoop(Bool_t kt)            { this->fDoubleLoop = kt ; }
53    Bool_t    GetDoubleLoop() const               { return this->fDoubleLoop ; }
54    void      SetDebug(Bool_t kt)                 { this->fDebug = kt ; }
55    Bool_t    GetDebug() const                    { return this->fDebug ; }
56
57
58    // Output 
59    void     SetHistFileName(TString name)       { this->fHistFileName = name ; } // Sets output file name
60    TString  GetHistFileName() const             { return this->fHistFileName ; } // Gets output file name
61    TFile*   GetHistFile() const                 { return this->fHistFile ; }     // Gets output file
62   
63    // input for second run
64    void     SetFirstRunFileName(TString name)   { this->firstRunFileName = name ; } // Sets input file name
65    TString  GetFirstRunFileName() const         { return this->firstRunFileName ; } // Gets output file name
66    void     SetFirstRunFile(TFile* file)        { this->firstRunFile = file ; }        // Sets first run file
67
68  private:
69
70   AliFlowAnalysisWithLeeYangZeros(const AliFlowAnalysisWithLeeYangZeros& aAnalysis);
71    AliFlowAnalysisWithLeeYangZeros& operator=(const AliFlowAnalysisWithLeeYangZeros& aAnalysis);
72
73    Bool_t   MakeControlHistograms(AliFlowEventSimple* fEvent); 
74    Bool_t   FillFromFlowEvent(AliFlowEventSimple* fEvent);
75    Bool_t   SecondFillFromFlowEvent(AliFlowEventSimple* fEvent);
76
77    TComplex GetGrtheta(AliFlowEventSimple* fEvent, Double_t fR, Double_t fTheta);
78    TComplex GetDiffFlow(AliFlowEventSimple* fEvent, Double_t fR, Int_t theta); 
79    Double_t  GetR0(TH1D* fHistGtheta);
80
81   
82    
83 #ifndef __CINT__
84    AliFlowVector  fQ;       // flow vector
85    TVector2  fQsum;         // flow vector sum
86    Double_t  fQ2sum;        // flow vector sum squared
87    Double_t  fQtheta;       // flow vector projected on ref. angle theta
88    
89 #endif /*__CINT__*/
90
91    Int_t     fEventNumber;  // event counter
92    Int_t     fMult;         // multiplicity
93    Int_t     fNbins;        // number of bins
94    Double_t  fTheta;        // ref. angle theta
95    
96    AliFlowEventSimple*  fEvent ;     //!
97    AliFlowTrackSimple*   fTrack ;      //!
98   
99    Bool_t       fFirstRun ;         //! flag for lyz analysis: true=first run over data, false=second run 
100    Bool_t       fUseSum ;           //! flag for lyz analysis: true=use sum gen.function, false=use product gen.function
101    Bool_t       fDoubleLoop ;       //! flag for studying non flow effects
102    Bool_t       fDebug ;            //! flag for lyz analysis: more print statements
103
104    TString      fHistFileName;      //!
105    TFile*       fHistFile;          //!
106    TFile*       fSummaryFile;       //!
107    TString      firstRunFileName;   //!
108    TFile*       firstRunFile;       //!
109      
110      
111   TProfile*    fHistProVtheta;      //!
112   TProfile*    fHistProVeta;        //!
113   TProfile*    fHistProVPt;         //!
114   TProfile*    fHistProR0theta;     //!
115   TProfile*    fHistProReDenom;     //!
116   TProfile*    fHistProImDenom;     //!
117   TProfile*    fHistProReDtheta;    //!
118   TProfile*    fHistProImDtheta;    //!
119    
120    
121   //class AliFlowLYZHist1 defines the histograms: fHistProGtheta, fHistProReGtheta, fHistProImGtheta
122   AliFlowLYZHist1* fHist1[5];       //!
123
124   //class AliFlowLYZHist1 defines the histograms: fHistProReNumer, fHistProImNumer, fHistProReNumerPt,
125   //fHistProImNumerPt, fHistProReNumer2D, fHistProImNumer2D.
126   AliFlowLYZHist2* fHist2[5];       //!
127
128   AliFlowCommonHist*        fCommonHists;     //!
129   AliFlowCommonHistResults* fCommonHistsRes;  //!
130
131  
132   ClassDef(AliFlowAnalysisWithLeeYangZeros,0)  // macro for rootcint
133     };
134  
135      
136 #endif