]>
Commit | Line | Data |
---|---|---|
acb9d358 | 1 | #ifndef ALIPERFORMANCEPTCALIBMC_H |
2 | #define ALIPERFORMANCEPTCALIBMC_H | |
ba06aaec | 3 | //---------------------------------------------------------------------------------------------------- |
4 | // Class to study systematic shifts in pt and charge/pt respectively. Furthermore a comparison between | |
5 | // either ESD or TPC and MC track momenta is included. | |
6 | // Track cuts and a user defined shift in 1/pt can be switched on and off by user. | |
7 | // | |
8 | // Analysis with class AliPerfAnalyzeInvPt via AliPerformancePtCalibMC::Analyse().: | |
9 | // Projection of 1/pt vs theta and vs phi resp. Histograms will be fitted with either | |
10 | // polynomial or gaussian fit function to extract minimum position of 1/pt. | |
11 | // Fit options and theta, phi bins can be set by user. | |
12 | // Attention: use the Set* functions of AliPerformancePtCalibMC when running AliPerformancePtCalibMC::Analyse(). | |
13 | // | |
14 | // Author: S. Schuchmann 11/13/2009 | |
15 | //---------------------------------------------------------------------------------------------------- | |
acb9d358 | 16 | |
17 | class TString; | |
18 | class TNamed; | |
19 | class TCanvas; | |
20 | class TH1F; | |
21 | class TH2F; | |
22 | class TList; | |
23 | ||
24 | class AliESDVertex; | |
25 | class AliESDtrack; | |
26 | class AliMCEvent; | |
27 | class AliStack; | |
28 | class AliTrackReference; | |
29 | class AliESDEvent; | |
30 | class AliESDfriend; | |
31 | class AliESDfriendTrack; | |
acb9d358 | 32 | class AliMCParticle; |
33 | class AliMCInfoCuts; | |
34 | class AliRecInfoCuts; | |
35 | class AliESDtrackCuts; | |
4060dd2d | 36 | class AliPhysicsSelection; |
acb9d358 | 37 | |
4060dd2d | 38 | #include "AliTriggerAnalysis.h" |
39 | #include "THnSparse.h" | |
acb9d358 | 40 | #include "AliPerformanceObject.h" |
41 | ||
42 | class AliPerformancePtCalibMC : public AliPerformanceObject { | |
ba06aaec | 43 | public: |
44 | AliPerformancePtCalibMC(); | |
4060dd2d | 45 | AliPerformancePtCalibMC(const char *name, const char *title); |
acb9d358 | 46 | virtual ~AliPerformancePtCalibMC() ; |
47 | ||
ba06aaec | 48 | // Init data members |
49 | virtual void Init(); | |
acb9d358 | 50 | |
ba06aaec | 51 | // Execute analysis |
52 | virtual void Exec(AliMCEvent* const mcEvent, AliESDEvent *const esdEvent, AliESDfriend *const esdFriend, const Bool_t bUseMC, const Bool_t bUseESDfriend); | |
acb9d358 | 53 | |
ba06aaec | 54 | // Merge output objects (needed by PROOF) |
55 | virtual Long64_t Merge(TCollection* const list); | |
acb9d358 | 56 | |
ba06aaec | 57 | // Analyse output histograms |
58 | virtual void Analyse(); | |
acb9d358 | 59 | |
ba06aaec | 60 | // Get analysis folder |
61 | virtual TFolder* GetAnalysisFolder() const {return fAnalysisFolder;} | |
acb9d358 | 62 | |
ba06aaec | 63 | // Options for track cuts |
4060dd2d | 64 | |
ba06aaec | 65 | void SetReadTPCTracks(const Bool_t readTPC) {fOptTPC = readTPC;}//read only ESD tracks |
ba06aaec | 66 | void SetEtaRange(const Double_t eta) {fEtaAcceptance = eta ;}//sets eta window |
4060dd2d | 67 | |
68 | void SetAliESDtrackCuts( AliESDtrackCuts* esdTrackCuts) { fESDTrackCuts = esdTrackCuts;fESDcuts=kTRUE;}//neu | |
69 | void SetPhysicsTriggerSelection(AliPhysicsSelection* const selection) { fPhysicsSelection = selection; } | |
70 | void SetTrigger(const AliTriggerAnalysis::Trigger trigger) { fTrigger = trigger; fPhysSel=kTRUE;} | |
71 | ||
ba06aaec | 72 | //user defined shift in charge/pt |
4060dd2d | 73 | void SetPtShift(const Double_t shiftVal); //sets user defined shift in charge/pt |
acb9d358 | 74 | |
4060dd2d | 75 | // setters for analysis with AliPerformancePtCalibMC::Analyse() |
76 | void SetProjBinsPhi(const Double_t *pBins,const Int_t sizep,const Double_t minTheta, const Double_t maxTheta);// set phi bins for projection and theta range selection (rad) | |
77 | void SetProjBinsTheta(const Double_t *tBins, const Int_t sizet,const Double_t minPhi, const Double_t maxPhi);// set theta bins for projection and phi range selection (rad) | |
ba06aaec | 78 | void SetMakeFitOption(const Bool_t setGausFit, const Double_t exclusionR,const Double_t fitR );// set fit options |
4060dd2d | 79 | void SetDoRebin(const Int_t rebin){if(rebin) {fDoRebin = kTRUE; fRebin = rebin;}} |
80 | void SetAnaMCOff() {fAnaMC = kFALSE;} // switch analysis of MC true tracks off | |
ba06aaec | 81 | const TList *GetHistoList() {return fList;} // get list of histograms |
acb9d358 | 82 | |
83 | ||
ba06aaec | 84 | // Create folder for analysed histograms |
85 | TFolder *CreateFolder(TString folder = "folderPtCalib",TString title = "Analysed PtCalib histograms"); | |
acb9d358 | 86 | |
ba06aaec | 87 | // Export objects to folder |
88 | TFolder *ExportToFolder(TObjArray * array=0); | |
acb9d358 | 89 | |
ba06aaec | 90 | // Selection cuts |
91 | void SetAliRecInfoCuts(AliRecInfoCuts* const cuts=0) {fCutsRC = cuts;} | |
92 | void SetAliMCInfoCuts(AliMCInfoCuts* const cuts=0) {fCutsMC = cuts;} | |
4060dd2d | 93 | AliPhysicsSelection* GetPhysicsTriggerSelection() const { return fPhysicsSelection; } |
94 | AliTriggerAnalysis::Trigger GetTrigger() const { return fTrigger; } | |
acb9d358 | 95 | |
ba06aaec | 96 | AliRecInfoCuts* GetAliRecInfoCuts() const {return fCutsRC;} |
97 | AliMCInfoCuts* GetAliMCInfoCuts() const {return fCutsMC;} | |
acb9d358 | 98 | |
99 | protected: | |
4060dd2d | 100 | // variables for fitting in Analyse() function |
101 | Double_t fThetaBins[100];// array of theta bins for projection of charge/pt vs theta | |
102 | Double_t fPhiBins[100]; // array of phi bins for projection of charge/pt vs theta | |
103 | ||
ba06aaec | 104 | Int_t fNThetaBins;// sets number of theta bins |
105 | Int_t fNPhiBins ;// sets number of phi bins | |
4060dd2d | 106 | Double_t fMaxPhi;// max phi for 2D projection on theta and charge/pt axis |
107 | Double_t fMinPhi;// min phi for 2D projection on theta and charge/pt axis | |
108 | Double_t fMaxTheta;// max theta for 2D projection on phi and charge/pt axis | |
109 | Double_t fMinTheta;// min theta for 2D projection on phi and charge/pt axis | |
ba06aaec | 110 | Double_t fRange;// sets fit range |
111 | Double_t fExclRange ;// sets range of rejection of points around 0 | |
112 | Bool_t fFitGaus ;// flag for usage of gaussian fit function | |
4060dd2d | 113 | Bool_t fDoRebin;// flag for rebin 1D histos before fitting |
114 | Int_t fRebin;// number of bins for rebin | |
ba06aaec | 115 | Bool_t fAnaMC;// flag for analysis of MC tracks |
acb9d358 | 116 | |
117 | ||
ba06aaec | 118 | private: |
4060dd2d | 119 | // option for user defined shift in charge/pt |
ba06aaec | 120 | Bool_t fShift;//flag for shift in charge/pt |
121 | Double_t fDeltaInvP;// shift value of charge/pt | |
122 | ||
123 | //options for cuts | |
124 | Bool_t fOptTPC;// flag for reading of TPC tracks in Exec | |
125 | Bool_t fESDcuts;//flag for usage of esd track cuts | |
4060dd2d | 126 | Bool_t fPhysSel;// flag for usage of AliPhysicsselction |
ba06aaec | 127 | |
4060dd2d | 128 | //ESD track cut values |
ba06aaec | 129 | Double_t fEtaAcceptance;//sets value of eta window |
4060dd2d | 130 | AliTriggerAnalysis::Trigger fTrigger; // trigger definition MB1, MB2 ... |
131 | AliPhysicsSelection* fPhysicsSelection; // physics trigger selection class | |
ba06aaec | 132 | AliRecInfoCuts* fCutsRC; // selection cuts for reconstructed tracks |
133 | AliMCInfoCuts* fCutsMC; // selection cuts for MC tracks | |
acb9d358 | 134 | |
135 | ||
ba06aaec | 136 | TList *fList;// list of histograms |
4060dd2d | 137 | |
138 | // histograms and THnSparse | |
139 | THnSparseF *fHistInvPtPtThetaPhi;// is filled with charge/pt, pt, theta, phi for ESD or TPC | |
ba06aaec | 140 | |
4060dd2d | 141 | TH1F *fHistPtShift0;//if shift in charge/pt is set by user, this histogram shows pt wihtout shift |
ba06aaec | 142 | TH1F *fHistPrimaryVertexPosX;// primary vertex position x |
143 | TH1F *fHistPrimaryVertexPosY;// primary vertex position y | |
144 | TH1F *fHistPrimaryVertexPosZ;// primary vertex position z | |
145 | TH1F *fHistTrackMultiplicity; // track multiplicity | |
146 | TH1F *fHistTrackMultiplicityCuts;//track multiplicity after all cuts are applied | |
147 | ||
148 | TH2F *fHistTPCMomentaPosP;//TPC p vs global esd track p for positive tracks | |
149 | TH2F *fHistTPCMomentaNegP;//TPC p vs global esd track p for negative tracks | |
150 | TH2F *fHistTPCMomentaPosPt;//TPC pt vs global esd track p positive tracks | |
151 | TH2F *fHistTPCMomentaNegPt;//TPC pt vs global esd track p for negative tracks | |
4060dd2d | 152 | |
153 | THnSparseF *fHistInvPtPtThetaPhiMC;// is filled with charge/pt, pt, theta, phi for MC true | |
154 | ||
155 | TH2F *fHistInvPtMCESD;// charge/pt of ESD vs MC | |
156 | TH2F *fHistInvPtMCTPC;// charge/pt of TPC vs MC | |
ba06aaec | 157 | TH2F *fHistPtMCESD;//pt of ESD vs MC |
158 | TH2F *fHistPtMCTPC;//pt of TPC vs MC | |
159 | TH2F *fHistMomresMCESD; //(pt ESD - pt MC)/ptMC vs pt MC | |
160 | TH2F *fHistMomresMCTPC; //(pt TPC - pt MC)/ptMC vs pt MC | |
4060dd2d | 161 | TH2F *fHistTPCMomentaPosInvPtMC;//TPC-MC of 1/pt vs global ESD-MC of charge/pt of positive tracks |
162 | TH2F *fHistTPCMomentaNegInvPtMC;//TPC-MC of 1/pt vs global ESD-MC of charge/pt of negative tracks | |
ba06aaec | 163 | TH2F *fHistTPCMomentaPosPtMC;//TPC-MC of pt vs global ESD-MC of pt of positive tracks |
164 | TH2F *fHistTPCMomentaNegPtMC;//TPC-MC of pt vs global ESD-MC of pt of negative tracks | |
acb9d358 | 165 | |
4060dd2d | 166 | TH1F *fHistESDMomentaPosInvPtMC;//ESD-MC of charge/pt of positive tracks |
167 | TH1F *fHistESDMomentaNegInvPtMC;//ESD-MC of charge/pt of negative tracks | |
ba06aaec | 168 | TH1F *fHistESDMomentaPosPtMC;//ESD-MC of pt of positive tracks |
169 | TH1F *fHistESDMomentaNegPtMC;//ESD-MC of pt of negative tracks | |
170 | ||
171 | TH1F *fHistUserPtShift;// shows the shift value if set by user | |
acb9d358 | 172 | |
ba06aaec | 173 | AliESDtrackCuts* fESDTrackCuts;// esd track cuts |
acb9d358 | 174 | |
ba06aaec | 175 | // analysis folder |
176 | TFolder *fAnalysisFolder; // folder for analysed histograms | |
acb9d358 | 177 | |
ba06aaec | 178 | AliPerformancePtCalibMC(const AliPerformancePtCalibMC&); // not implemented |
179 | AliPerformancePtCalibMC& operator=(const AliPerformancePtCalibMC&); // not implemented | |
acb9d358 | 180 | |
ba06aaec | 181 | ClassDef(AliPerformancePtCalibMC, 1); |
acb9d358 | 182 | }; |
183 | ||
184 | #endif |