]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGPP/TPC/AliPerformanceObject.h
coverity fix (Jacek Otwinowski)
[u/mrichter/AliRoot.git] / PWGPP / TPC / AliPerformanceObject.h
1 #ifndef ALIPERFORMANCEOBJECT_H\r
2 #define ALIPERFORMANCEOBJECT_H\r
3 \r
4 //------------------------------------------------------------------------------\r
5 // Base class to keep information from comparison of \r
6 // reconstructed and MC particle tracks.   \r
7 // \r
8 // Author: J.Otwinowski 04/14/2008 \r
9 // Changes by M.Knichel 15/10/2010\r
10 //------------------------------------------------------------------------------\r
11 \r
12 #include "TNamed.h"\r
13 #include "TFolder.h"\r
14 #include "THnSparse.h"\r
15 \r
16 class TTree;\r
17 class AliMCEvent;\r
18 class AliESDEvent;\r
19 class AliRecInfoCuts;\r
20 class AliMCInfoCuts;\r
21 class AliESDfriend;\r
22 class AliESDVertex;\r
23 \r
24 class AliPerformanceObject : public TNamed {\r
25 public :\r
26   AliPerformanceObject(); \r
27   AliPerformanceObject(const char* name="AliPerformanceObject", const char* title="AliPerformanceObject", Int_t run=-1, Bool_t highMult=kFALSE); \r
28   virtual ~AliPerformanceObject();\r
29 \r
30   // Init data members\r
31   // call once before event loop\r
32   virtual void Init() = 0;\r
33   \r
34   // init for high multiplicity (PbPb) \r
35   // to be called instead of Init()\r
36   virtual void InitHighMult();\r
37   \r
38   // Execute analysis\r
39   // call in the event loop \r
40   virtual void Exec(AliMCEvent* const infoMC=0, AliESDEvent* const infoRC=0, AliESDfriend* const infoFriend=0, const Bool_t bUseMC=kFALSE, const Bool_t bUseESDfriend=kFALSE) = 0;\r
41 \r
42   // Merge output objects (needed by PROOF) \r
43   virtual Long64_t Merge(TCollection* const list=0) = 0;\r
44 \r
45   // project to 1d,2d,3d\r
46   // is called from FinishTaskOuput() in AliPerformanceTask\r
47   virtual void Analyse() = 0;\r
48 \r
49   // Get output folder for analysed histograms\r
50   virtual TFolder* GetAnalysisFolder() const = 0;\r
51   \r
52   // create a summary stored in a ttree \r
53   // has to be implented\r
54   virtual TTree* CreateSummary() { return 0; }\r
55   \r
56   // project to 1d,2d,3d\r
57   // is called from Terminate() in AliPerformanceTask\r
58   // final spectra calculation\r
59   virtual void AnalyseFinal() { ; }\r
60 \r
61   // \r
62   virtual void SetAliRecInfoCuts(AliRecInfoCuts* const cuts=0) = 0;\r
63   virtual void SetAliMCInfoCuts(AliMCInfoCuts* const cuts=0) = 0; \r
64 \r
65   // set and get analysisMode\r
66   void SetAnalysisMode(const Int_t analysisMode=0) {fAnalysisMode = analysisMode;} \r
67   Int_t GetAnalysisMode() const {return fAnalysisMode;}\r
68 \r
69   // set and get hpt generator \r
70   void SetHptGenerator(const Bool_t hptGenerator=kFALSE) {fHptGenerator = hptGenerator;}\r
71   Bool_t IsHptGenerator() const {return fHptGenerator;}\r
72 \r
73   // draw all histograms from the folder\r
74   void PrintHisto(Bool_t logz = kTRUE, const Char_t * outFileName = "PerformanceQAHisto.ps"); \r
75 \r
76   // create log axis \r
77   Double_t *CreateLogAxis(Int_t nbins, Double_t xmin, Double_t xmax); \r
78 \r
79   // trigger class selection\r
80   void SetTriggerClass(const Char_t *triggerClass) { fTriggerClass = triggerClass; }\r
81   const Char_t* GetTriggerClass() const { return fTriggerClass; }\r
82 \r
83   // use track vertex\r
84   void SetUseTrackVertex(Bool_t trackVtx = kTRUE) { fUseTrackVertex = trackVtx; }\r
85   Bool_t IsUseTrackVertex() { return fUseTrackVertex; }\r
86   \r
87   Bool_t IsHighMultiplicity() { return fHighMultiplicity; }  \r
88   \r
89   // merging of thnsparse\r
90   Bool_t GetMergeTHnSparseObj() { return fMergeTHnSparseObj; }\r
91   void SetMergeTHnSparseObj(Bool_t merge) {fMergeTHnSparseObj = merge; }  \r
92   \r
93   void SetRunNumber(Int_t run) { fRunNumber = run; }\r
94   Int_t GetRunNumber() const { return fRunNumber; }\r
95 \r
96   // use kink daughters\r
97   void SetUseKinkDaughters(Bool_t kinkDaughters = kTRUE) { fUseKinkDaughters = kinkDaughters; }\r
98   Bool_t IsUseKinkDaughters() { return fUseKinkDaughters; }\r
99 \r
100   // Centrality bin to be used\r
101   void  SetUseCentralityBin(Int_t bin) { fUseCentralityBin = bin; }\r
102   Int_t GetUseCentralityBin()          { return fUseCentralityBin; }\r
103 \r
104   // use tof bunch crossing\r
105   void SetUseTOFBunchCrossing(Bool_t tofBunching = kTRUE) { fUseTOFBunchCrossing = tofBunching; }\r
106   Bool_t IsUseTOFBunchCrossing() { return fUseTOFBunchCrossing; }\r
107 \r
108 protected: \r
109 \r
110   void AddProjection(TObjArray* aFolderObj, TString nameSparse, THnSparse *hSparse, Int_t xDim, TString* selString = 0);\r
111   void AddProjection(TObjArray* aFolderObj, TString nameSparse, THnSparse *hSparse, Int_t xDim, Int_t yDim, TString* selString = 0);\r
112   void AddProjection(TObjArray* aFolderObj, TString nameSparse, THnSparse *hSparse, Int_t xDim, Int_t yDim, Int_t zDim, TString* selString = 0);\r
113 \r
114   // merge THnSparse\r
115   Bool_t fMergeTHnSparseObj;\r
116   \r
117   // analysis mode\r
118   Int_t fAnalysisMode;  // 0-TPC, 1-TPCITS, 2-Constrained, 3-TPC inner wall, 4-TPC outer wall\r
119 \r
120   Int_t fRunNumber;\r
121 \r
122   // hpt generator\r
123   Bool_t fHptGenerator; // hpt event generator\r
124 \r
125   // trigger class\r
126   const Char_t * fTriggerClass;\r
127 \r
128   // use track vertex\r
129   Bool_t fUseTrackVertex; // use track vertex\r
130   \r
131   // PbPb mode?\r
132   Bool_t fHighMultiplicity; // flag to switch between pp and PbPb  \r
133 \r
134   Bool_t fUseKinkDaughters; // use kink daughthers, default is yes\r
135 \r
136   Int_t  fUseCentralityBin;  // centrality bin to be used \r
137 \r
138   Bool_t fUseTOFBunchCrossing; // use TOFBunchCrossing, default is yes\r
139 \r
140   AliPerformanceObject(const AliPerformanceObject&); // not implemented\r
141   AliPerformanceObject& operator=(const AliPerformanceObject&); // not implemented\r
142 \r
143   ClassDef(AliPerformanceObject,7);\r
144 };\r
145 \r
146 #endif\r