]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/RESONANCES/AliRsnFunction.h
Renames and new scripts
[u/mrichter/AliRoot.git] / PWG2 / RESONANCES / AliRsnFunction.h
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 //
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
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
22 #ifndef ALIRSNFUNCTION_H
23 #define ALIRSNFUNCTION_H
24
25 #include <TClonesArray.h>
26 #include <TH1.h>
27 #include <TH2.h>
28 #include <TH3.h>
29 #include <THnSparse.h>
30 #include <TNamed.h>
31
32 #include "AliRsnCut.h"
33
34 class AliRsnValue;
35 class AliRsnMother;
36 class AliRsnPairDef;
37
38 class AliRsnFunction : public TObject
39 {
40
41   public:
42
43     AliRsnFunction(Bool_t useTH1 = kTRUE);
44     AliRsnFunction(const AliRsnFunction &copy);
45     virtual ~AliRsnFunction() { delete fH1; delete fHSparse; }
46     const AliRsnFunction& operator=(const AliRsnFunction &copy);
47
48     void                 SetPairDef(AliRsnPairDef * const def) {fPairDef = def;}
49     void                 SetPair(AliRsnMother * const pair) {fPair = pair;}
50
51     AliRsnPairDef*       GetPairDef() const {return fPairDef;}
52     AliRsnMother*        GetPair() const {return fPair;}
53     AliRsnEvent*         GetEvent() const {return fEvent;}
54     virtual const char*  GetName() const;
55
56     Bool_t               IsUsingTH1() {return fUseTH1;}
57     void                 UseTH1() {fUseTH1 = kTRUE;}
58     void                 UseSparse() {fUseTH1 = kFALSE;}
59     Bool_t               AddAxis(AliRsnValue* const axis);
60     Int_t                GetNumberOfAxes() {return fAxisList.GetEntries();}
61     TH1*                 CreateHistogram(const char *histoName, const char *histoTitle);
62     THnSparseF*          CreateHistogramSparse(const char *histoName, const char *histoTitle);
63
64     Bool_t               Fill();
65
66   protected:
67
68     AliRsnPairDef      *fPairDef;     // reference to used pair definition
69     TClonesArray        fAxisList;    // list of axis
70
71     AliRsnMother       *fPair;        // processed pair
72     AliRsnEvent        *fEvent;       // processed event
73
74     Bool_t              fUseTH1;      // use TH1 or not?
75     Int_t               fSize;        // number of dim of output histogram
76     TH1                *fH1;          // output histogram (standard type)
77     THnSparseF         *fHSparse;     // output histogram (sparse type)
78
79     // ROOT dictionary
80     ClassDef(AliRsnFunction, 3)
81 };
82
83 #endif