]>
Commit | Line | Data |
---|---|---|
c865cb1d | 1 | #ifndef ALIRSNLISTOUTPUT_H |
2 | #define ALIRSNLISTOUTPUT_H | |
3 | ||
4 | // | |
b63357a0 | 5 | // Class AliRsnListOutput |
6 | // | |
7 | // This class defines a base classe to implement a Output | |
8 | // which uses the internal RSN package event format (AliRsnEvent). | |
9 | // It contains some default flags which turn out to be useful: | |
10 | // - a flag to select only the "true" pairs (tracks from same resonance) | |
11 | // - a flag to know if the computation is done over two events (mixing) | |
12 | // | |
13 | // Any kind of analysis object should be implemented as inheriting from this | |
14 | // because the AliRsnAnalyzer which executes the analysis will accept a collection | |
15 | // of such objects, in order to have a unique format of processing method | |
16 | // | |
17 | // The user who implements a kind of computation type should inherit from | |
18 | // this class and override the virtual Outputs defined in it, which | |
19 | // initialize the final output histogram and define how to process data. | |
20 | // | |
21 | // | |
22 | // author: A. Pulvirenti (email: alberto.pulvirenti@ct.infn.it) | |
c865cb1d | 23 | // |
24 | ||
25 | #include <TRef.h> | |
26 | #include <TNamed.h> | |
27 | #include <TArrayI.h> | |
28 | #include <TObjArray.h> | |
29 | ||
30 | #include <TH1.h> | |
31 | #include <TH2.h> | |
32 | #include <TH3.h> | |
33 | #include <TNtuple.h> | |
34 | #include <THnSparse.h> | |
35 | ||
b63357a0 | 36 | class AliCFContainer; |
c865cb1d | 37 | class AliRsnValue; |
38 | ||
39 | class AliRsnListOutput : public TNamed { | |
40 | ||
41 | public: | |
42 | ||
43 | enum EOut { | |
44 | kHistoDefault, | |
45 | kHistoSparse, | |
46 | kCFContainer | |
47 | }; | |
48 | ||
49 | AliRsnListOutput(const char *name = "", EOut type = kHistoDefault); | |
50 | AliRsnListOutput(const AliRsnListOutput ©); | |
51 | const AliRsnListOutput& operator=(const AliRsnListOutput ©); | |
52 | virtual ~AliRsnListOutput(); | |
53 | ||
b63357a0 | 54 | EOut GetType() const {return fType;} |
55 | Int_t GetSteps() const {return fSteps;} | |
f34f960b | 56 | TObjArray* GetValues() {return &fValues;} |
57 | Int_t GetNValues() {return (fNValues = fValues.GetEntries());} | |
b63357a0 | 58 | AliRsnValue* GetValue(Int_t i) const {return (AliRsnValue*)fValues[i];} |
59 | Int_t GetIndex() const {return fIndex;} | |
f34f960b | 60 | void SetType(EOut type) {fType = type;} |
61 | void SetSteps(Int_t n) {fSteps = n;} | |
62 | void SetSkipFailed(Bool_t y) {fSkipFailed = y;} | |
c865cb1d | 63 | |
64 | void AddValue(AliRsnValue *value); | |
65 | ||
66 | virtual void Reset(); | |
67 | virtual Bool_t Init(const char *prefix, TList *list); | |
68 | virtual Bool_t Fill(TObject *target, Int_t step = 0); | |
69 | ||
70 | private: | |
71 | ||
72 | TH1* CreateHistogram(const char *name); | |
73 | THnSparseF* CreateHistogramSparse(const char *name); | |
74 | AliCFContainer* CreateCFContainer(const char *name); | |
75 | ||
f34f960b | 76 | Bool_t fSkipFailed; // tell to skip fills when one computation fails |
c865cb1d | 77 | EOut fType; // output format among allowed ones |
78 | Int_t fSteps; // number of steps (only for container) | |
79 | TObjArray fValues; // container for all related values | |
80 | Int_t fNValues; //! number of values (internal use) | |
81 | TList *fList; //! list containing the output | |
82 | Int_t fIndex; // index of object in the list | |
83 | ||
84 | TArrayD fArray; //! temp array of computed values | |
85 | ||
86 | ClassDef(AliRsnListOutput, 1) // AliRsnListOutput class | |
87 | }; | |
88 | ||
89 | #endif |