]>
Commit | Line | Data |
---|---|---|
13f28255 | 1 | // |
2 | // Class AliRsn Fcn | |
3 | // | |
4 | // This class defines a base classe to implement a typical computation | |
5 | // which uses the internal RSN package event format (AliRsnEvent). | |
6 | // It contains some default flags which turn out to be useful: | |
7 | // - a flag to select only the "true" pairs (tracks from same resonance) | |
8 | // - a flag to know if the computation is done over two events (mixing) | |
9 | // | |
10 | // Any kind of analysis object should be implemented as inheriting from this | |
11 | // because the AliRsnAnalyzer which executes the analysis will accept a collection | |
12 | // of such objects, in order to have a unique format of processing method | |
13 | // | |
e0baff8c | 14 | // The user who implements a kind of computation type should inherit from |
15 | // this class and override the virtual functions defined in it, which | |
13f28255 | 16 | // initialize the final output histogram and define how to process data. |
17 | // | |
18 | // | |
19 | // author: A. Pulvirenti (email: alberto.pulvirenti@ct.infn.it) | |
20 | // | |
21 | ||
4fbb2459 | 22 | #ifndef ALIRSNFUNCTION_H |
23 | #define ALIRSNFUNCTION_H | |
13f28255 | 24 | |
b2028424 | 25 | #include <TClonesArray.h> |
eb079724 | 26 | #include <TH1.h> |
27 | #include <TH2.h> | |
28 | #include <TH3.h> | |
b2028424 | 29 | #include <THnSparse.h> |
5eb970a4 | 30 | #include <TNamed.h> |
13f28255 | 31 | |
32 | #include "AliRsnCut.h" | |
13f28255 | 33 | |
2dab9030 | 34 | class AliRsnValue; |
35 | class AliRsnMother; | |
5eb970a4 | 36 | class AliRsnPairDef; |
13f28255 | 37 | |
2a1c7696 | 38 | class AliRsnFunction : public TObject { |
13f28255 | 39 | |
2a1c7696 | 40 | public: |
13f28255 | 41 | |
11ed73f6 | 42 | AliRsnFunction(Bool_t single = kFALSE, Bool_t useTH1 = kTRUE); |
2a1c7696 | 43 | AliRsnFunction(const AliRsnFunction ©); |
44 | virtual ~AliRsnFunction() { delete fH1; delete fHSparse; } | |
45 | const AliRsnFunction& operator=(const AliRsnFunction ©); | |
13f28255 | 46 | |
11ed73f6 | 47 | void SetPairDef(AliRsnPairDef * const def) {fPairDef = def;} |
48 | void SetPair(AliRsnMother * const pair) {fPair = pair;} | |
49 | void SetDaughter(AliRsnDaughter * const daughter) {fDaughter = daughter;} | |
50 | ||
51 | AliRsnPairDef* GetPairDef() const {return fPairDef;} | |
52 | AliRsnMother* GetPair() const {return fPair;} | |
53 | AliRsnDaughter* GetDaughter() const {return fDaughter;} | |
54 | AliRsnEvent* GetEvent() const {return fEvent;} | |
55 | virtual const char* GetName() const; | |
56 | ||
57 | Bool_t IsSingle() const {return fSingle;} | |
58 | void SetSingle(Bool_t yn = kTRUE) {fSingle = yn;} | |
59 | Bool_t IsUsingTH1() {return fUseTH1;} | |
60 | void UseTH1() {fUseTH1 = kTRUE;} | |
61 | void UseSparse() {fUseTH1 = kFALSE;} | |
62 | ||
2a1c7696 | 63 | Bool_t AddAxis(AliRsnValue* const axis); |
64 | Int_t GetNumberOfAxes() {return fAxisList.GetEntries();} | |
11ed73f6 | 65 | |
2a1c7696 | 66 | TH1* CreateHistogram(const char *histoName, const char *histoTitle); |
67 | THnSparseF* CreateHistogramSparse(const char *histoName, const char *histoTitle); | |
e0baff8c | 68 | |
2a1c7696 | 69 | Bool_t Fill(); |
e0baff8c | 70 | |
2a1c7696 | 71 | protected: |
e0baff8c | 72 | |
2a1c7696 | 73 | AliRsnPairDef *fPairDef; // reference to used pair definition |
74 | TClonesArray fAxisList; // list of axis | |
e0baff8c | 75 | |
2a1c7696 | 76 | AliRsnMother *fPair; // processed pair |
77 | AliRsnEvent *fEvent; // processed event | |
11ed73f6 | 78 | AliRsnDaughter *fDaughter; // processed track |
13f28255 | 79 | |
11ed73f6 | 80 | Bool_t fSingle; // is kTRUE when function processes tracks instead of pairs |
2a1c7696 | 81 | Bool_t fUseTH1; // use TH1 or not? |
82 | Int_t fSize; // number of dim of output histogram | |
83 | TH1 *fH1; // output histogram (standard type) | |
84 | THnSparseF *fHSparse; // output histogram (sparse type) | |
e0baff8c | 85 | |
2a1c7696 | 86 | // ROOT dictionary |
87 | ClassDef(AliRsnFunction, 3) | |
13f28255 | 88 | }; |
89 | ||
90 | #endif |