New classes plus some renamed for a better user friendly interface
[u/mrichter/AliRoot.git] / PWG2 / RESONANCES / AliRsnSimpleFunction.h
1 //
2 // Class AliRsnSimpleFcn
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 ALIRSNSIMPLEFCN_H
23 #define ALIRSNSIMPLEFCN_H
24
25 #include <TNamed.h>
26
27 #include "AliRsnCutMgr.h"
28 #include "AliRsnPairDef.h"
29 #include "AliRsnHistoDef.h"
30 #include "AliRsnPairParticle.h"
31
32 class TH1D;
33 class TH2D;
34 class AliRsnEvent;
35
36 class AliRsnSimpleFunction : public TNamed
37 {
38
39 public:
40
41     AliRsnSimpleFunction
42       (const char *name="", 
43        AliRsnPairDef *pd=0, AliRsnHistoDef *hd=0, AliRsnCutMgr *cuts=0, 
44        Option_t *option="");
45     AliRsnSimpleFunction(const AliRsnSimpleFunction &copy);
46     const AliRsnSimpleFunction& operator=(const AliRsnSimpleFunction &copy);
47     virtual ~AliRsnSimpleFunction() {Clear();}
48     virtual void Clear(Option_t *option = "");
49
50     Bool_t              TrueFlag() {return fTrueFlag;}
51     Bool_t              MixFlag() {return fMixFlag;}
52     AliRsnPairParticle* GetPair() {return &fPair;}
53     AliRsnPairDef*      GetPairDef() {return fPairDef;}
54     AliRsnHistoDef*     GetHistoDef() {return fHistoDef;}
55     AliRsnCutMgr*       GetCutMgr() {return fCuts;}
56     TH1D*               GetHistogram1D() {return fHisto1D;}
57     TH2D*               GetHistogram2D() {return fHisto2D;}
58
59     void   SetTrueFlag(Bool_t value = kTRUE) {fTrueFlag = value;}
60     void   SetMixFlag(Bool_t value = kTRUE) {fMixFlag = value;}
61     void   SetPairDef(AliRsnPairDef *def) {fPairDef = def;}
62     void   SetHistoDef(AliRsnHistoDef *def) {fHistoDef = def;}
63     void   SetCutMgr(AliRsnCutMgr *cutMgr) {fCuts = cutMgr;}
64
65     // virtual working routines
66     virtual Bool_t Init();
67     virtual Bool_t ProcessOne(AliRsnEvent *event);
68     virtual Bool_t ProcessTwo(AliRsnEvent *event1, AliRsnEvent *event2);
69
70 protected:
71
72     Bool_t CutPass(AliRsnDaughter *d);
73     Bool_t CutPass(AliRsnPairParticle *p);
74     Bool_t CutPass(AliRsnEvent *e);
75
76     Bool_t               fTrueFlag;      // flag to store only true pairs
77     Bool_t               fMixFlag;       // flag to reserve this object for mixing
78
79     AliRsnPairParticle   fPair;          // utility class for pair
80     AliRsnPairDef       *fPairDef;       // definitions for pair
81     AliRsnHistoDef      *fHistoDef;      // definitions for histogram
82     AliRsnCutMgr        *fCuts;          // cut manager
83     
84     TH1D                *fHisto1D;       // output histogram (1D)
85     TH2D                *fHisto2D;       // output histogram (2D)
86
87     // ROOT dictionary
88     ClassDef(AliRsnSimpleFunction, 1)
89 };
90
91 #endif