]>
Commit | Line | Data |
---|---|---|
7cc34f08 | 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 | |
814d192f | 9 | // Changes by M.Knichel 15/10/2010\r |
7cc34f08 | 10 | //------------------------------------------------------------------------------\r |
11 | \r | |
12 | #include "TNamed.h"\r | |
13 | #include "TFolder.h"\r | |
28bb9d1f | 14 | #include "THnSparse.h"\r |
7cc34f08 | 15 | \r |
814d192f | 16 | class TTree;\r |
7cc34f08 | 17 | class AliMCEvent;\r |
18 | class AliESDEvent;\r | |
19 | class AliRecInfoCuts;\r | |
20 | class AliMCInfoCuts;\r | |
21 | class AliESDfriend;\r | |
758320f7 | 22 | class AliESDVertex;\r |
7cc34f08 | 23 | \r |
24 | class AliPerformanceObject : public TNamed {\r | |
25 | public :\r | |
26 | AliPerformanceObject(); \r | |
c11cd0fa | 27 | AliPerformanceObject(const char* name="AliPerformanceObject", const char* title="AliPerformanceObject", Int_t run=-1, Bool_t highMult=kFALSE); \r |
7cc34f08 | 28 | virtual ~AliPerformanceObject();\r |
29 | \r | |
30 | // Init data members\r | |
31 | // call once before event loop\r | |
32 | virtual void Init() = 0;\r | |
28bb9d1f | 33 | \r |
34 | // init for high multiplicity (PbPb) \r | |
35 | // to be called instead of Init()\r | |
36 | virtual void InitHighMult();\r | |
37 | \r | |
7cc34f08 | 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 | |
f69eb048 | 45 | // project to 1d,2d,3d\r |
46 | // is called from FinishTaskOuput() in AliPerformanceTask\r | |
7cc34f08 | 47 | virtual void Analyse() = 0;\r |
48 | \r | |
49 | // Get output folder for analysed histograms\r | |
50 | virtual TFolder* GetAnalysisFolder() const = 0;\r | |
814d192f | 51 | \r |
52 | // create a summary stored in a ttree \r | |
53 | // has to be implented\r | |
814d192f | 54 | virtual TTree* CreateSummary() { return 0; }\r |
f69eb048 | 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 | |
7cc34f08 | 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 | |
feda9561 | 74 | void PrintHisto(Bool_t logz = kTRUE, const Char_t * outFileName = "PerformanceQAHisto.ps"); \r |
7cc34f08 | 75 | \r |
76 | // create log axis \r | |
77 | Double_t *CreateLogAxis(Int_t nbins, Double_t xmin, Double_t xmax); \r | |
78 | \r | |
e6a60a90 | 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 | |
758320f7 | 83 | // use track vertex\r |
84 | void SetUseTrackVertex(Bool_t trackVtx = kTRUE) { fUseTrackVertex = trackVtx; }\r | |
85 | Bool_t IsUseTrackVertex() { return fUseTrackVertex; }\r | |
28bb9d1f | 86 | \r |
87 | Bool_t IsHighMultiplicity() { return fHighMultiplicity; } \r | |
814d192f | 88 | \r |
56958768 | 89 | // merging of thnsparse\r |
90 | Bool_t GetMergeTHnSparseObj() { return fMergeTHnSparseObj; }\r | |
91 | void SetMergeTHnSparseObj(Bool_t merge) {fMergeTHnSparseObj = merge; } \r | |
92 | \r | |
814d192f | 93 | void SetRunNumber(Int_t run) { fRunNumber = run; }\r |
94 | Int_t GetRunNumber() const { return fRunNumber; }\r | |
758320f7 | 95 | \r |
c1b69b58 | 96 | // use kink daughters\r |
97 | void SetUseKinkDaughters(Bool_t kinkDaughters = kTRUE) { fUseKinkDaughters = kinkDaughters; }\r | |
98 | Bool_t IsUseKinkDaughters() { return fUseKinkDaughters; }\r | |
99 | \r | |
36ace53b | 100 | // Centrality bin to be used\r |
101 | void SetUseCentralityBin(Int_t bin) { fUseCentralityBin = bin; }\r | |
102 | Int_t GetUseCentralityBin() { return fUseCentralityBin; }\r | |
1833a193 | 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 | |
7cc34f08 | 108 | protected: \r |
109 | \r | |
28bb9d1f | 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 | |
56958768 | 114 | // merge THnSparse\r |
115 | Bool_t fMergeTHnSparseObj;\r | |
116 | \r | |
758320f7 | 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 | |
814d192f | 120 | Int_t fRunNumber;\r |
121 | \r | |
758320f7 | 122 | // hpt generator\r |
123 | Bool_t fHptGenerator; // hpt event generator\r | |
7cc34f08 | 124 | \r |
758320f7 | 125 | // trigger class\r |
126 | const Char_t * fTriggerClass;\r | |
7cc34f08 | 127 | \r |
758320f7 | 128 | // use track vertex\r |
129 | Bool_t fUseTrackVertex; // use track vertex\r | |
28bb9d1f | 130 | \r |
131 | // PbPb mode?\r | |
132 | Bool_t fHighMultiplicity; // flag to switch between pp and PbPb \r | |
e6a60a90 | 133 | \r |
c1b69b58 | 134 | Bool_t fUseKinkDaughters; // use kink daughthers, default is yes\r |
135 | \r | |
36ace53b | 136 | Int_t fUseCentralityBin; // centrality bin to be used \r |
137 | \r | |
1833a193 | 138 | Bool_t fUseTOFBunchCrossing; // use TOFBunchCrossing, default is yes\r |
139 | \r | |
e6a60a90 | 140 | AliPerformanceObject(const AliPerformanceObject&); // not implemented\r |
141 | AliPerformanceObject& operator=(const AliPerformanceObject&); // not implemented\r | |
142 | \r | |
56958768 | 143 | ClassDef(AliPerformanceObject,7);\r |
7cc34f08 | 144 | };\r |
145 | \r | |
146 | #endif\r |