]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/RESONANCES/AliRsnPair.h
some updates for the plot layout
[u/mrichter/AliRoot.git] / PWG2 / RESONANCES / AliRsnPair.h
1 //
2 // *** Class AliRsnPair ***
3 //
4 // TODO
5 //
6 // authors: A. Pulvirenti (email: alberto.pulvirenti@ct.infn.it)
7 //          M. Vala (email: martin.vala@cern.ch)
8 //
9
10 #ifndef ALIRSNPAIR_H
11 #define ALIRSNPAIR_H
12
13 #include "TClonesArray.h"
14
15 #include "AliRsnDaughter.h"
16 #include "AliRsnPairDef.h"
17 #include "AliRsnPairParticle.h"
18
19 class TH1;
20 class TH2;
21 class TList;
22 class TArrayI;
23
24 class AliRsnEvent;
25 class AliRsnCutMgr;
26 class AliRsnPIDIndex;
27 class AliRsnFunction;
28
29 class AliRsnPair : public TObject
30 {
31   public:
32
33     enum EPairType {
34       kNoPID = 0,    kNoPIDMix,
35       kRealisticPID, kRealisticPIDMix,
36       kPerfectPID,   kPerfectPIDMix,
37       kPairTypes
38     };
39
40     AliRsnPair(EPairType type = kRealisticPID, AliRsnPairDef *def = 0);
41     AliRsnPair(const AliRsnPair &copy);
42     AliRsnPair& operator=(const AliRsnPair&);
43     ~AliRsnPair();
44
45     void    SetOnlyTrue(Bool_t onlyTrue = kTRUE) {fOnlyTrue = onlyTrue;}
46
47     void    Print(Option_t *option = "") const;
48     void    LoopPair(AliRsnPIDIndex*const pidIndex1, AliRsnEvent*const ev1, AliRsnPIDIndex*const pidIndex2 = 0, AliRsnEvent* ev2 = 0);
49     void    LoopPair(TArrayI *a1, TArrayI *a2, AliRsnEvent *ev1, AliRsnEvent *ev2 = 0);
50     void    SetCutMgr(AliRsnCutMgr* const mgr) { fCutMgr = mgr; }
51     void    AddFunction(AliRsnFunction*const fcn);
52     TList*  GenerateHistograms(TString prefix = "", TList *list=0);
53
54     Bool_t  IsMixed() const {return fIsMixed;}
55     Bool_t  IsPairEqual() const {
56       if (fPIDMethod == AliRsnDaughter::kNoPID) return (fPairDef->IsLikeSign());
57       else return (fPairDef->IsLikeSign() && fPairDef->HasEqualTypes());
58     }
59
60     TString GetPairTypeName(EPairType type) const;
61     TString GetPairName() const;
62     TString GetPairHistName(AliRsnFunction *const fcn, TString text = "") const;
63     TString GetPairHistTitle(AliRsnFunction *const fcn, TString text = "") const;
64
65   private:
66
67     void     SetUp(EPairType type);
68     void     SetAllFlags(AliRsnDaughter::EPIDMethod pid, Bool_t mix) {fPIDMethod = pid; fIsMixed = mix;}
69
70     Bool_t   CutPass(AliRsnDaughter *d);
71     Bool_t   CutPass(AliRsnPairParticle *p);
72     Bool_t   CutPass(AliRsnEvent *e);
73
74     Bool_t                      fOnlyTrue;       // select true pairs only?
75     Bool_t                      fIsMixed;        // doing event-mixing ?
76     EPairType                   fPairType;       // pair type (PID + mixing or not)
77     AliRsnDaughter::EPIDMethod  fPIDMethod;      // pid type variable for single track
78
79     AliRsnPairDef              *fPairDef;        // pair definition (particles, charges)
80     AliRsnCutMgr               *fCutMgr;         // cut manager
81     TClonesArray                fFunctions;      // functions
82     AliRsnDaughter              fTrack1;         // track #1 (external loop)
83     AliRsnDaughter              fTrack2;         // track #2 (internal loop)
84     AliRsnPairParticle          fPairParticle;   // track pair
85
86     ClassDef(AliRsnPair, 2)
87 };
88
89 #endif