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