]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/RESONANCES/AliRsnFunction.h
Herwig event header.
[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 AliRsnFunctionAxis;
35 class AliRsnPairParticle;
36 class AliRsnPairDef;
37
38 class AliRsnFunction : public TNamed
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                 SetTrack(AliRsnDaughter * const track) {fTrack = track;}
50     void                 SetPair(AliRsnPairParticle * const pair) {fPair = pair;}
51     void                 SetEvent(AliRsnEvent *const event) {fEvent = event;}
52
53     AliRsnPairDef*       GetPairDef() const {return fPairDef;}
54     AliRsnDaughter*      GetTrack() const {return fTrack;}
55     AliRsnPairParticle*  GetPair() const {return fPair;}
56     AliRsnEvent*         GetEvent() const {return fEvent;}
57     virtual const char*  GetName() const;
58
59     Bool_t               IsUsingTH1() {return fUseTH1;}
60     void                 UseTH1() {fUseTH1 = kTRUE;}
61     void                 UseSparse() {fUseTH1 = kFALSE;}
62     void                 AddAxis(AliRsnFunctionAxis*const axis);
63     Int_t                GetNumberOfAxes() {return fAxisList.GetEntries();}
64     TH1*                 CreateHistogram(const char *histoName, const char *histoTitle);
65     THnSparseD*          CreateHistogramSparse(const char *histoName, const char *histoTitle);
66
67     Bool_t               Fill();
68
69   protected:
70
71     AliRsnPairDef      *fPairDef;     // reference to used pair definition
72     TClonesArray        fAxisList;    // list of axis
73
74     AliRsnDaughter     *fTrack;       // processed track
75     AliRsnPairParticle *fPair;        // processed pair
76     AliRsnEvent        *fEvent;       // processed event
77
78     Bool_t              fUseTH1;      // use TH1 or not?
79     Int_t               fSize;        // number of dim of output histogram
80     TH1                *fH1;          // output histogram (standard type)
81     THnSparseD         *fHSparse;     // output histogram (sparse type)
82
83     // ROOT dictionary
84     ClassDef(AliRsnFunction, 3)
85 };
86
87 #endif