2 #ifndef ALIPERFORMANCEPTCALIB_H
3 #define ALIPERFORMANCEPTCALIB_H
4 //----------------------------------------------------------------------------------------------------
5 // Class to study systematic shifts in pt and charge/pt respectively.Furthermore a comparison between
6 // ESD and TPC track momenta is included.
7 // Track cuts and a user defined shift in charge/pt can be switched on and off by user.
9 // Analysis with class AliPerfAnalyzeInvPt via AliPerformancePtCalib::Analyse(). :
10 // Projection of charge/pt vs theta and vs phi resp. Histograms will be fitted with either
11 // polynomial or gaussian fit function to extract minimum position of 1/pt.
12 // Fit options and theta, phi bins can be set by user.
13 // Attention: use the Set* functions of AliPerformancePtCalib when running AliPerformancePtCalib::Analyse().
15 // Author: S. Schuchmann 11/13/2009
16 //----------------------------------------------------------------------------------------------------
29 class AliTrackReference;
32 class AliESDfriendTrack;
35 class AliESDtrackCuts;
38 #include "THnSparse.h"
39 #include "AliPerformanceObject.h"
41 class AliPerformancePtCalib : public AliPerformanceObject {
43 AliPerformancePtCalib(const Char_t * name="AliPerformancePtCalib",const Char_t* title ="AliPerformancePtCalib");
44 virtual ~AliPerformancePtCalib();
50 virtual void Exec(AliMCEvent* const mcEvent, AliESDEvent *const esdEvent, AliESDfriend *const esdFriend, const Bool_t bUseMC, const Bool_t bUseESDfriend);
52 // Merge output objects (needed by PROOF)
53 virtual Long64_t Merge(TCollection* const list);
55 // Analyse output histograms
56 virtual void Analyse();
58 // Get analysis folder
59 virtual TFolder* GetAnalysisFolder() const {return fAnalysisFolder;}
61 void SetReadTPCTracks(const Bool_t readTPC) {fOptTPC = readTPC;}//read only ESD tracks
62 void SetEtaRange(const Double_t eta) {fEtaAcceptance = eta ;}//sets eta window
64 void SetAliESDtrackCuts( AliESDtrackCuts* esdTrackCuts) { fESDTrackCuts = esdTrackCuts;fESDcuts=kTRUE;}//esd track cuts
66 void SetAnalysePions(const Bool_t anaPions) {fPions = anaPions;}
67 void SetPtShift(const Double_t shiftVal); // set user defined shift in charge/pt
69 // setters for analysis with AliPerformancePtCalib::Analyse()
70 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)
71 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)
72 void SetMakeFitOption(const Bool_t setGausFit, const Double_t exclusionR,const Double_t fitR );//set fit options
73 void SetDoRebin(const Int_t rebin){if(rebin) {fDoRebin = kTRUE; fRebin = rebin;}}
74 const TList *GetHistoList() {return fList;}// get list of histograms for analysis
76 // Create folder for analysed histograms
77 TFolder *CreateFolder(TString folder = "folderPtCalib",TString title = "Analysed PtCalib histograms");
79 // Export objects to folder
80 TFolder *ExportToFolder(TObjArray * array=0);
83 void SetAliRecInfoCuts(AliRecInfoCuts* const cuts=0) {fCutsRC = cuts;}
84 void SetAliMCInfoCuts(AliMCInfoCuts* const cuts=0) {fCutsMC = cuts;}
86 AliRecInfoCuts* GetAliRecInfoCuts() const {return fCutsRC;}
87 AliMCInfoCuts* GetAliMCInfoCuts() const {return fCutsMC;}
90 // variables for fitting in Analyse() function
91 Double_t fThetaBins[100];// array of theta bins for projection of 1/pt vs theta
92 Double_t fPhiBins[100]; // array of phi bins for projection of 1/pt vs theta
94 Int_t fNThetaBins;// sets number of theta bins
95 Int_t fNPhiBins ;// sets number of phi bins
96 Double_t fMaxPhi;// max phi for 2D projection on theta and charge/pt axis
97 Double_t fMinPhi;// min phi for 2D projection on theta and charge/pt axis
98 Double_t fMaxTheta;// max theta for 2D projection on phi and charge/pt axis
99 Double_t fMinTheta;// min theta for 2D projection on phi and charge/pt axis
100 Double_t fRange;// sets fit range
101 Double_t fExclRange ;// sets range of rejection of points around 0
102 Bool_t fFitGaus ;// flag for usage of gaussian fit function
103 Bool_t fDoRebin;// flag for rebin 1D histos before fitting
104 Int_t fRebin;// number of bins for rebin
107 // option for user defined shift in charge/pt
108 Bool_t fShift;//flag for shift in charge/pt
109 Double_t fDeltaInvP;// shift value of charge/pt
112 Bool_t fOptTPC;// flag for reading of TPC tracks in Exec
113 Bool_t fESDcuts;//flag for usage of esd track cuts
114 Bool_t fPions;// flag for analzsing pions instead of all charged particles
116 //ESD track cut values
117 Double_t fEtaAcceptance;//sets value of eta window
119 AliRecInfoCuts* fCutsRC; // selection cuts for reconstructed tracks
120 AliMCInfoCuts* fCutsMC; // selection cuts for MC tracks
124 TList *fList;// list of histograms
126 //histograms and THnSparse
127 THnSparseF *fHistInvPtPtThetaPhi;// is filled with charge/pt, pt, theta, phi for ESD or TPC
129 TH1F *fHistPtShift0;//if shift in charge/pt is set by user, this histogram shows pt wihtout shift
130 TH1F *fHistPrimaryVertexPosX;// primary vertex position x
131 TH1F *fHistPrimaryVertexPosY;// primary vertex position y
132 TH1F *fHistPrimaryVertexPosZ;// primary vertex position z
133 TH1F *fHistTrackMultiplicity; // track multiplicity
134 TH1F *fHistTrackMultiplicityCuts;//track multiplicity after all cuts are applied
136 TH2F *fHistTPCMomentaPosP;//TPC p vs global esd track p for positive tracks
137 TH2F *fHistTPCMomentaNegP;//TPC p vs global esd track p for negative tracks
138 TH2F *fHistTPCMomentaPosPt;//TPC pt vs global esd track p positive tracks
139 TH2F *fHistTPCMomentaNegPt;//TPC pt vs global esd track p for negative tracks
142 TH1F *fHistUserPtShift;// shows the shift value if set by user
143 TH2F *fHistdedxPions;// dEdx vs cahrge*pt
145 AliESDtrackCuts* fESDTrackCuts;// esd track cuts
149 TFolder *fAnalysisFolder; // folder for analysed histograms
151 AliPerformancePtCalib(const AliPerformancePtCalib&); // not implemented
152 AliPerformancePtCalib& operator=(const AliPerformancePtCalib&); // not implemented
154 ClassDef(AliPerformancePtCalib, 1);