Improved functionality of AliRsnDaughterDef::MatchesDaughter()
[u/mrichter/AliRoot.git] / PWG2 / RESONANCES / AliRsnFunction.h
CommitLineData
13f28255 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//
e0baff8c 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
13f28255 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
4fbb2459 22#ifndef ALIRSNFUNCTION_H
23#define ALIRSNFUNCTION_H
13f28255 24
b2028424 25#include <TClonesArray.h>
eb079724 26#include <TH1.h>
27#include <TH2.h>
28#include <TH3.h>
b2028424 29#include <THnSparse.h>
5eb970a4 30#include <TNamed.h>
13f28255 31
32#include "AliRsnCut.h"
13f28255 33
2dab9030 34class AliRsnValue;
35class AliRsnMother;
5eb970a4 36class AliRsnPairDef;
13f28255 37
2a1c7696 38class AliRsnFunction : public TObject {
13f28255 39
2a1c7696 40public:
13f28255 41
11ed73f6 42 AliRsnFunction(Bool_t single = kFALSE, Bool_t useTH1 = kTRUE);
2a1c7696 43 AliRsnFunction(const AliRsnFunction &copy);
44 virtual ~AliRsnFunction() { delete fH1; delete fHSparse; }
45 const AliRsnFunction& operator=(const AliRsnFunction &copy);
13f28255 46
11ed73f6 47 void SetPairDef(AliRsnPairDef * const def) {fPairDef = def;}
48 void SetPair(AliRsnMother * const pair) {fPair = pair;}
49 void SetDaughter(AliRsnDaughter * const daughter) {fDaughter = daughter;}
50
51 AliRsnPairDef* GetPairDef() const {return fPairDef;}
52 AliRsnMother* GetPair() const {return fPair;}
53 AliRsnDaughter* GetDaughter() const {return fDaughter;}
54 AliRsnEvent* GetEvent() const {return fEvent;}
55 virtual const char* GetName() const;
56
57 Bool_t IsSingle() const {return fSingle;}
58 void SetSingle(Bool_t yn = kTRUE) {fSingle = yn;}
59 Bool_t IsUsingTH1() {return fUseTH1;}
60 void UseTH1() {fUseTH1 = kTRUE;}
61 void UseSparse() {fUseTH1 = kFALSE;}
62
2a1c7696 63 Bool_t AddAxis(AliRsnValue* const axis);
64 Int_t GetNumberOfAxes() {return fAxisList.GetEntries();}
11ed73f6 65
2a1c7696 66 TH1* CreateHistogram(const char *histoName, const char *histoTitle);
67 THnSparseF* CreateHistogramSparse(const char *histoName, const char *histoTitle);
e0baff8c 68
2a1c7696 69 Bool_t Fill();
e0baff8c 70
2a1c7696 71protected:
e0baff8c 72
2a1c7696 73 AliRsnPairDef *fPairDef; // reference to used pair definition
74 TClonesArray fAxisList; // list of axis
e0baff8c 75
2a1c7696 76 AliRsnMother *fPair; // processed pair
77 AliRsnEvent *fEvent; // processed event
11ed73f6 78 AliRsnDaughter *fDaughter; // processed track
13f28255 79
11ed73f6 80 Bool_t fSingle; // is kTRUE when function processes tracks instead of pairs
2a1c7696 81 Bool_t fUseTH1; // use TH1 or not?
82 Int_t fSize; // number of dim of output histogram
83 TH1 *fH1; // output histogram (standard type)
84 THnSparseF *fHSparse; // output histogram (sparse type)
e0baff8c 85
2a1c7696 86 // ROOT dictionary
87 ClassDef(AliRsnFunction, 3)
13f28255 88};
89
90#endif