]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG/FLOW/Base/AliFlowAnalysisWithMCEventPlane.h
from Ante Bilandzic:
[u/mrichter/AliRoot.git] / PWG / FLOW / Base / AliFlowAnalysisWithMCEventPlane.h
1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2  * See cxx source for full Copyright notice                               */
3 // Description: Maker to analyze Flow from the generated MC reaction plane.
4 //              This class is used to get the real value of the flow 
5 //              to compare the other methods to when analysing simulated events.
6
7 /* $Id$ */
8
9 #ifndef ALIFLOWANALYSISWITHMCEVENTPLANE_H
10 #define ALIFLOWANALYSISWITHMCEVENTPLANE_H
11
12 class TVector2;
13 class TString;
14 class TDirectoryFile;
15
16 class AliFlowTrackSimple;
17 class AliFlowEventSimple;
18 class AliFlowCommonHist;
19 class AliFlowCommonHistResults;
20
21 class TH1F;
22 class TH1D;
23 class TProfile;
24 class TProfile2D;
25 class TObjArray;
26 class TFile;
27 class TList;
28 class TComplex;
29 class Riostream;
30
31
32  
33 class AliFlowAnalysisWithMCEventPlane {
34
35  public:
36  
37    AliFlowAnalysisWithMCEventPlane();            //default constructor
38    virtual  ~AliFlowAnalysisWithMCEventPlane();  //destructor
39  
40    void      WriteHistograms(TString* outputFileName);
41    void      WriteHistograms(TString outputFileName);
42    void      WriteHistograms(TDirectoryFile *outputFileName);
43    void      Init();                                       //defines variables and histograms
44    void      Make(AliFlowEventSimple* anEvent);            //calculates variables and fills histograms
45    void      GetOutputHistograms(TList *outputListHistos); //get pointers to all output histograms (called before Finish()) 
46    void      Finish();                                     //saves histograms
47    
48    void      SetDebug(Bool_t kt)          { this->fDebug = kt ; }
49    Bool_t    GetDebug() const             { return this->fDebug ; }
50
51    void      SetEventNumber(Int_t n)      { this->fEventNumber = n; }
52    Int_t     GetEventNumber() const       { return this->fEventNumber; }
53
54    // Output 
55    TList*    GetHistList() const          { return this->fHistList ; }  
56    AliFlowCommonHist* GetCommonHists() const  { return this->fCommonHists; }
57    void      SetCommonHists(AliFlowCommonHist* const aCommonHist)  
58      { this->fCommonHists = aCommonHist; }
59    AliFlowCommonHistResults*  GetCommonHistsRes() const { return this->fCommonHistsRes; }
60    void      SetCommonHistsRes( AliFlowCommonHistResults* const aCommonHistResult ) 
61      { this->fCommonHistsRes = aCommonHistResult; }
62    
63    //histograms
64    TH1F*     GetHistRP() const            {return this->fHistRP; } 
65    void      SetHistRP(TH1F* const  aHistRP)     {this->fHistRP = aHistRP; }
66    
67    TProfile* GetHistProIntFlow() const    {return this->fHistProIntFlow; } 
68    void      SetHistProIntFlow(TProfile* const aHistProIntFlow) 
69      {this->fHistProIntFlow = aHistProIntFlow; }
70      
71    TProfile* GetHistProIntFlowVsM() const    {return this->fHistProIntFlowVsM; } 
72    void      SetHistProIntFlowVsM(TProfile* const aHistProIntFlowVsM) 
73      {this->fHistProIntFlowVsM = aHistProIntFlowVsM; }
74
75    TProfile2D* GetHistProDiffFlowPtEtaRP() const    {return this->fHistProDiffFlowPtEtaRP; } 
76    void      SetHistProDiffFlowPtEtaRP(TProfile2D* const aHistProDiffFlowPtEtaRP) 
77      {this->fHistProDiffFlowPtEtaRP = aHistProDiffFlowPtEtaRP; }   
78    
79    TProfile* GetHistProDiffFlowPtRP() const    {return this->fHistProDiffFlowPtRP; } 
80    void      SetHistProDiffFlowPtRP(TProfile* const aHistProDiffFlowPtRP) 
81      {this->fHistProDiffFlowPtRP = aHistProDiffFlowPtRP; } 
82    
83    TProfile* GetHistProDiffFlowEtaRP() const   {return this->fHistProDiffFlowEtaRP; } 
84    void      SetHistProDiffFlowEtaRP(TProfile* const aHistProDiffFlowEtaRP) 
85      {this->fHistProDiffFlowEtaRP = aHistProDiffFlowEtaRP; } 
86      
87    TProfile2D* GetHistProDiffFlowPtEtaPOI()const     {return this->fHistProDiffFlowPtEtaPOI; } 
88    void      SetHistProDiffFlowPtEtaPOI(TProfile2D* const aHistProDiffFlowPtEtaPOI) 
89      {this->fHistProDiffFlowPtEtaPOI = aHistProDiffFlowPtEtaPOI; }   
90    
91    TProfile* GetHistProDiffFlowPtPOI()const    {return this->fHistProDiffFlowPtPOI; } 
92    void      SetHistProDiffFlowPtPOI(TProfile* const aHistProDiffFlowPtPOI) 
93      {this->fHistProDiffFlowPtPOI = aHistProDiffFlowPtPOI; } 
94    
95    TProfile* GetHistProDiffFlowEtaPOI()const   {return this->fHistProDiffFlowEtaPOI; } 
96    void      SetHistProDiffFlowEtaPOI(TProfile* const aHistProDiffFlowEtaPOI) 
97      {this->fHistProDiffFlowEtaPOI = aHistProDiffFlowEtaPOI; } 
98      
99    TH1D* GetHistSpreadOfFlow()const   {return this->fHistSpreadOfFlow; } 
100    void      SetHistSpreadOfFlow(TH1D* const aHistSpreadOfFlow) 
101      {this->fHistSpreadOfFlow = aHistSpreadOfFlow; }    
102    
103    // harmonic:
104    void SetHarmonic(Int_t const harmonic) {this->fHarmonic = harmonic;};
105    Int_t GetHarmonic() const {return this->fHarmonic;};
106    
107    // mixed harmonics:
108    // a) methods:
109    virtual void InitalizeArraysForMixedHarmonics();
110    virtual void BookObjectsForMixedHarmonics();
111    virtual void EvaluateMixedHarmonics(AliFlowEventSimple* anEvent);
112    virtual void GetOutputHistoramsForMixedHarmonics(TList *mixedHarmonicsList);
113    // b) setters and getters:
114    void SetMixedHarmonicsList(TList* const mhl) {this->fMixedHarmonicsList = mhl;}
115    TList* GetMixedHarmonicsList() const {return this->fMixedHarmonicsList;}    
116    void SetEvaluateMixedHarmonics(Bool_t const emh) {this->fEvaluateMixedHarmonics = emh;};
117    Bool_t GetEvalauteMixedHarmonics() const {return this->fEvaluateMixedHarmonics;};   
118    void SetMixedHarmonicsSettings(TProfile* const mhs) {this->fMixedHarmonicsSettings = mhs;};
119    TProfile* GetMixedHarmonicsSettings() const {return this->fMixedHarmonicsSettings;};  
120    void SetPairCorrelator(TProfile* const spc, Int_t const cs) {this->fPairCorrelator[cs] = spc;};
121    TProfile* GetPairCorrelator(Int_t const cs) const {return this->fPairCorrelator[cs];};
122    void SetPairCorrelatorVsM(TProfile* const spcVsM, Int_t const cs) {this->fPairCorrelatorVsM[cs] = spcVsM;};
123    TProfile* GetPairCorrelatorVsM(Int_t const cs) const {return this->fPairCorrelatorVsM[cs];};   
124    void SetnBinsMult(Int_t const nbm) {this->fnBinsMult = nbm;};
125    Int_t GetnBinsMult() const {return this->fnBinsMult;};  
126    void SetMinMult(Double_t const minm) {this->fMinMult = minm;};
127    Double_t GetMinMult() const {return this->fMinMult;};
128    void SetMaxMult(Double_t const maxm) {this->fMaxMult = maxm;};
129    Double_t GetMaxMult() const {return this->fMaxMult;};   
130    void SetPairCorrelatorVsPtSumDiff(TProfile* const spcVspsd, Int_t const cs, Int_t const sd) {this->fPairCorrelatorVsPtSumDiff[cs][sd] = spcVspsd;};
131    TProfile* GetPairCorrelatorVsPtSumDiff(Int_t const cs, Int_t const sd) const {return this->fPairCorrelatorVsPtSumDiff[cs][sd];};
132    void SetNinCorrelator(Int_t const n) {this->fNinCorrelator = n;};
133    Int_t GetNinCorrelator() const {return this->fNinCorrelator;};     
134    void SetMinCorrelator(Int_t const m) {this->fMinCorrelator = m;};
135    Int_t GetMinCorrelator() const {return this->fMinCorrelator;};     
136    void SetXinPairAngle(Double_t const xipa) {this->fXinPairAngle = xipa;};
137    Double_t GetXinPairAngle() const {return this->fXinPairAngle;};   
138   
139  private:
140  
141    AliFlowAnalysisWithMCEventPlane(const AliFlowAnalysisWithMCEventPlane& aAnalysis);             //copy constructor
142    AliFlowAnalysisWithMCEventPlane& operator=(const AliFlowAnalysisWithMCEventPlane& aAnalysis);  //assignment operator 
143
144       
145 #ifndef __CINT__
146    TVector2*    fQsum;              // flow vector sum
147    Double_t     fQ2sum;             // flow vector sum squared
148 #endif /*__CINT__*/
149
150    Int_t        fEventNumber;       // event counter
151    Bool_t       fDebug ;            //! flag for lyz analysis: more print statements
152
153    TList*       fHistList;          //list to hold all output histograms  
154     
155    AliFlowCommonHist* fCommonHists;              // hist
156    AliFlowCommonHistResults* fCommonHistsRes;    // hist
157    
158    TH1F*        fHistRP;                  // reaction plane
159    TProfile*    fHistProIntFlow;          // profile used to calculate the integrated flow of RP particles
160    TProfile*    fHistProIntFlowVsM;       // profile used to calculate the integrated flow of RP particles vs multiplicity
161    TProfile2D*  fHistProDiffFlowPtEtaRP;  // profile used to calculate the differential flow (Pt,Eta) of RP particles
162    TProfile*    fHistProDiffFlowPtRP;     // profile used to calculate the differential flow (Pt) of RP particles 
163    TProfile*    fHistProDiffFlowEtaRP;    // profile used to calculate the differential flow (Eta) of RP particles 
164    TProfile2D*  fHistProDiffFlowPtEtaPOI; // profile used to calculate the differential flow (Pt,Eta) of POI particles
165    TProfile*    fHistProDiffFlowPtPOI;    // profile used to calculate the differential flow (Pt) of POI particles 
166    TProfile*    fHistProDiffFlowEtaPOI;   // profile used to calculate the differential flow (Eta) of POI particles
167    TH1D*        fHistSpreadOfFlow;        // histogram filled with reference flow calculated e-b-e    
168    Int_t        fHarmonic;                // harmonic 
169    
170    // mixed harmonics:
171    TList *fMixedHarmonicsList; // list to hold all objects relevant for mixed harmonics 
172    Bool_t fEvaluateMixedHarmonics; // evaluate and store objects relevant for mixed harmonics
173    TProfile *fMixedHarmonicsSettings; // profile used to hold all flags relevant for the mixed harmonics
174    TProfile *fPairCorrelator[2]; // profiles used to calculate <cos[m*phi_{pair}-n*RP]> and <sin[m*phi_{pair}-n*RP]> (0 = cos, 1 = sin), where phi_{pair} = x*phi1+(1-x)*phi2
175    TProfile *fPairCorrelatorVsM[2]; // <cos[m*phi_{pair}-n*RP]> and <sin[m*phi_{pair}-n*RP]> versus multiplicity (0 = cos, 1 = sin), where phi_{pair} = x*phi1+(1-x)*phi2
176    Int_t fnBinsMult; // number of multiplicity bins for mixed harmonics analysis versus multiplicity  
177    Double_t fMinMult; // minimal multiplicity for mixed harmonics analysis versus multiplicity  
178    Double_t fMaxMult; // maximal multiplicity for mixed harmonics analysis versus multiplicity    
179    TProfile *fPairCorrelatorVsPtSumDiff[2][2]; // <cos/sin[m*phi_{pair}-n*RP]> vs (1/2)(pt1+pt2) (0) and |pt1-pt2| (1), where phi_{pair} = x*phi1+(1-x)*phi2
180    Int_t fNinCorrelator; // n in <cos[m*phi_{pair}-n*RP]> and <sin[m*phi_{pair}-n*RP]>, where phi_{pair} = x*phi1+(1-x)*phi2
181    Int_t fMinCorrelator; // m in <cos[m*phi_{pair}-n*RP]> and <sin[m*phi_{pair}-n*RP]>, where phi_{pair} = x*phi1+(1-x)*phi2   
182    Double_t fXinPairAngle; // x in definition phi_{pair} = x*phi1+(1-x)*phi2
183                                        
184    ClassDef(AliFlowAnalysisWithMCEventPlane,0)  // Analyse particle distribution versus MC reaction plane
185   
186   };
187
188      
189 #endif
190
191