1 #ifndef ALIRSNLISTOUTPUT_H
2 #define ALIRSNLISTOUTPUT_H
5 // Class AliRsnListOutput
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)
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
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.
22 // author: A. Pulvirenti (email: alberto.pulvirenti@ct.infn.it)
28 #include <TObjArray.h>
34 #include <THnSparse.h>
41 class AliRsnListOutput : public TNamed {
51 AliRsnListOutput(const char *name = "", EOut type = kHistoDefault);
52 AliRsnListOutput(const AliRsnListOutput ©);
53 AliRsnListOutput &operator=(const AliRsnListOutput ©);
54 virtual ~AliRsnListOutput();
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; }
68 void AddValue(AliRsnValue *value);
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);
77 TH1 *CreateHistogram(const char *name);
78 THnSparseF *CreateHistogramSparse(const char *name);
79 AliCFContainer *CreateCFContainer(const char *name);
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
90 TArrayD fArray; //! temp array of computed values
92 ClassDef(AliRsnListOutput, 2) // AliRsnListOutput class