]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG1/TPC/AliPerformancePtCalibMC.h
new performance classes (Simone Schuchmann)
[u/mrichter/AliRoot.git] / PWG1 / TPC / AliPerformancePtCalibMC.h
1 #ifndef ALIPERFORMANCEPTCALIBMC_H
2 #define ALIPERFORMANCEPTCALIBMC_H
3
4 class TString;
5 class TNamed;
6 class TCanvas;
7 class TH1F;
8 class TH2F;
9 class TList;
10
11 class AliESDVertex;
12 class AliESDtrack;
13 class AliMCEvent;
14 class AliStack;
15 class AliTrackReference;
16 class AliESDEvent; 
17 class AliESDfriend; 
18 class AliESDfriendTrack; 
19 class AliMCEvent;
20 class AliMCParticle;
21 class AliMCInfoCuts;
22 class AliRecInfoCuts;
23 class AliESDtrackCuts;
24
25 #include "AliPerformanceObject.h"
26
27 class AliPerformancePtCalibMC : public AliPerformanceObject {
28  public:
29   AliPerformancePtCalibMC();
30   AliPerformancePtCalibMC(const char *name, const char *title);
31    virtual ~AliPerformancePtCalibMC() ;
32
33   // Init data members
34   virtual void  Init();
35
36   // Execute analysis
37   virtual void  Exec(AliMCEvent* const mcEvent, AliESDEvent *const esdEvent, AliESDfriend *const esdFriend, const Bool_t bUseMC, const Bool_t bUseESDfriend);
38
39   // Merge output objects (needed by PROOF) 
40   virtual Long64_t Merge(TCollection* const list);
41
42   // Analyse output histograms
43   virtual void Analyse();
44
45   // Get analysis folder
46   virtual TFolder* GetAnalysisFolder() const {return fAnalysisFolder;}
47
48    Bool_t AddTPCcuts(AliESDtrack *ESDTrack);
49    Bool_t AddITScuts(AliESDtrack *ESDTrack);
50    Bool_t AddDCAcuts(AliESDtrack *ESDTrack);
51
52    void SetReadTPCTracksOff(){fOptTPC   = kFALSE;}// function  can be used in the macro to set the variables
53    void SetTPCRefitOn()      {fRefitTPC = kTRUE;} // function  can be used in the macro to set the variables
54    void SetITSRefitOn()      {fRefitITS = kTRUE;} // function  can be used in the macro to set the variables
55    void SetESDcutsOff()      {fESDcuts  = kFALSE;}// function  can be used in the macro to set the variables
56    void SetDCAcutsOff()      {fDCAcut   = kFALSE;}// function  can be used in the macro to set the variables
57
58    //void SetPtShift(Double_t shiftVal ){if(!(shiftVal==0)) {fShift=kTRUE; fDeltaInvP = shiftVal;} };
59    void SetPtShift(Double_t shiftVal); //shift in 1/pt
60
61    void SetESDcutValues(Double_t * esdCutValues){// functions can be used in the macro to set the variables
62       fMinPt                = esdCutValues[0]; 
63       fMaxPt                = esdCutValues[1];
64       fMinNClustersTPC      = esdCutValues[2];
65       fMaxChi2PerClusterTPC = esdCutValues[3];
66       fMaxDCAtoVertexXY     = esdCutValues[4];
67       fMaxDCAtoVertexZ      = esdCutValues[5];
68    }
69    
70    void SetProjBinsPhi(const Double_t *pBins,Int_t sizep);
71    void SetProjBinsTheta(const Double_t *tBins, Int_t sizet);
72    void SetMakeFitOption(const Bool_t setGausFit, const Double_t exclusionR,const Double_t fitR );
73    void SetAnaMCOff() {fAnaMC = kFALSE;}
74    TList *GetHistoList() {return fList;}
75    
76  
77   // Create folder for analysed histograms
78   TFolder *CreateFolder(TString folder = "folderPtCalib",TString title = "Analysed PtCalib histograms");
79
80   // Export objects to folder
81   TFolder *ExportToFolder(TObjArray * array=0);
82
83   // Selection cuts
84   void SetAliRecInfoCuts(AliRecInfoCuts* const cuts=0) {fCutsRC = cuts;}   
85   void SetAliMCInfoCuts(AliMCInfoCuts* const cuts=0) {fCutsMC = cuts;}
86   
87    
88   AliRecInfoCuts*  GetAliRecInfoCuts() const {return fCutsRC;}  
89   AliMCInfoCuts*   GetAliMCInfoCuts()  const {return fCutsMC;}
90
91 protected:
92    
93   Double_t fThetaBins[100];
94   Double_t fPhiBins[100];
95    
96    Int_t fNThetaBins;
97    Int_t fNPhiBins ;
98    Double_t fRange;
99    Double_t fExclRange ;
100    Bool_t fFitGaus ;
101    Bool_t  fAnaMC;
102    
103     
104  private:
105   Bool_t fShift;
106   Double_t fDeltaInvP;
107   //options for cuts
108   Bool_t fOptTPC;
109   Bool_t fESDcuts;
110   Bool_t fRefitTPC;
111   Bool_t fRefitITS;
112   Bool_t fDCAcut;
113   
114   Double_t fMinPt;
115   Double_t fMaxPt;
116   Double_t fMinNClustersTPC;
117   Double_t fMaxChi2PerClusterTPC;
118   Double_t fMaxDCAtoVertexXY;
119   Double_t fMaxDCAtoVertexZ;
120
121   AliRecInfoCuts* fCutsRC;     // selection cuts for reconstructed tracks
122   AliMCInfoCuts*  fCutsMC;     // selection cuts for MC tracks
123
124    
125   TList       *fList;
126   TH2F        *fHistInvPtTheta;
127   TH2F        *fHistInvPtPhi;
128   TH2F        *fHistPtTheta;
129   TH2F        *fHistPtPhi;
130
131   TH1F        *fHistPtShift0;
132   TH1F        *fHistPrimaryVertexPosX;          
133   TH1F        *fHistPrimaryVertexPosY;          
134   TH1F        *fHistPrimaryVertexPosZ;          
135   TH1F        *fHistTrackMultiplicity;          
136   TH1F        *fHistTrackMultiplicityCuts;
137
138   TH2F        *fHistTPCMomentaPosP;
139   TH2F        *fHistTPCMomentaNegP;
140   TH2F        *fHistTPCMomentaPosPt;
141   TH2F        *fHistTPCMomentaNegPt;
142    
143   TH2F        *fHistInvPtThetaMC;
144   TH2F        *fHistInvPtPhiMC;
145   TH2F        *fHistPtThetaMC;
146   TH2F        *fHistPtPhiMC;   
147   TH2F        *fHistInvPtMCESD;
148   TH2F        *fHistInvPtMCTPC;
149   TH2F        *fHistPtMCESD;
150   TH2F        *fHistPtMCTPC;
151   TH2F        *fHistMomresMCESD;   
152   TH2F        *fHistMomresMCTPC;   
153   TH2F        *fHistTPCMomentaPosInvPtMC;
154   TH2F        *fHistTPCMomentaNegInvPtMC;
155   TH2F        *fHistTPCMomentaPosPtMC;
156   TH2F        *fHistTPCMomentaNegPtMC;
157   
158   TH1F        *fHistESDMomentaPosInvPtMC;
159   TH1F        *fHistESDMomentaNegInvPtMC;
160   TH1F        *fHistESDMomentaPosPtMC;
161    TH1F        *fHistESDMomentaNegPtMC;
162    TH1F        *fHistUserPtShift;
163    
164   AliESDtrackCuts* fESDTrackCuts;
165   
166   // analysis folder 
167   TFolder *fAnalysisFolder; // folder for analysed histograms
168
169   AliPerformancePtCalibMC(const AliPerformancePtCalibMC&);            // not implemented 
170   AliPerformancePtCalibMC& operator=(const AliPerformancePtCalibMC&); // not implemented 
171
172   ClassDef(AliPerformancePtCalibMC, 1); 
173 };
174
175 #endif