]>
Commit | Line | Data |
---|---|---|
1 | #ifndef ALIRSNLISTOUTPUT_H | |
2 | #define ALIRSNLISTOUTPUT_H | |
3 | ||
4 | // | |
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) | |
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 | #include <Rtypes.h> | |
36 | ||
37 | class AliCFContainer; | |
38 | class AliRsnValue; | |
39 | class AliRsnDaughter; | |
40 | class AliRsnEvent; | |
41 | class AliRsnListOutput : public TNamed { | |
42 | ||
43 | public: | |
44 | ||
45 | enum EOut { | |
46 | kHistoDefault, | |
47 | kHistoSparse, | |
48 | kCFContainer | |
49 | }; | |
50 | ||
51 | AliRsnListOutput(const char *name = "", EOut type = kHistoDefault); | |
52 | AliRsnListOutput(const AliRsnListOutput ©); | |
53 | AliRsnListOutput &operator=(const AliRsnListOutput ©); | |
54 | virtual ~AliRsnListOutput(); | |
55 | ||
56 | EOut GetType() const {return fType;} | |
57 | Int_t GetSteps() const {return fSteps;} | |
58 | TObjArray *GetValues() {return &fValues;} | |
59 | Int_t GetNValues() {return (fNValues = fValues.GetEntries());} | |
60 | AliRsnValue *GetValue(Int_t i) const {return (AliRsnValue *)fValues[i];} | |
61 | Int_t GetIndex() const {return fIndex;} | |
62 | Bool_t GetFillHistogramOnlyInRange() { return fCheckHistRange; } | |
63 | void SetType(EOut type) {fType = type;} | |
64 | void SetSteps(Int_t n) {fSteps = n;} | |
65 | void SetSkipFailed(Bool_t y) {fSkipFailed = y;} | |
66 | void SetFillHistogramOnlyInRange(Bool_t fillInRangeOnly) { fCheckHistRange = fillInRangeOnly; } | |
67 | ||
68 | void AddValue(AliRsnValue *value); | |
69 | ||
70 | virtual void Reset(); | |
71 | virtual Bool_t Init(const char *prefix, TList *list); | |
72 | virtual Bool_t Fill(TObject *target, Int_t step = 0); | |
73 | virtual Bool_t Fill(AliRsnEvent *ev,AliRsnDaughter *d); | |
74 | ||
75 | private: | |
76 | ||
77 | TH1 *CreateHistogram(const char *name); | |
78 | THnSparseF *CreateHistogramSparse(const char *name); | |
79 | AliCFContainer *CreateCFContainer(const char *name); | |
80 | ||
81 | Bool_t fSkipFailed; // tell to skip fills when one computation fails | |
82 | EOut fType; // output format among allowed ones | |
83 | Int_t fSteps; // number of steps (only for container) | |
84 | TObjArray fValues; // container for all related values | |
85 | Int_t fNValues; //! number of values (internal use) | |
86 | TList *fList; //! list containing the output | |
87 | Int_t fIndex; // index of object in the list | |
88 | Bool_t fCheckHistRange;// check if values is in histogram range | |
89 | ||
90 | TArrayD fArray; //! temp array of computed values | |
91 | ||
92 | ClassDef(AliRsnListOutput, 2) // AliRsnListOutput class | |
93 | }; | |
94 | ||
95 | #endif |