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