]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/RESONANCES/AliRsnMother.h
Patch for the tracker
[u/mrichter/AliRoot.git] / PWG2 / RESONANCES / AliRsnMother.h
1 //
2 // Class AliRsnMother
3 //
4 // Implementation of a pair of tracks, for several purposes
5 // - computing the total 4-momentum & inv. mass for output histos filling
6 // - evaluating cut checks on the pair of particles
7 // - evaluating any kind of kinematic value over their sum
8 //
9 // authors: Martin Vala (martin.vala@cern.ch)
10 //          Alberto Pulvirenti (alberto.pulvirenti@ct.infn.it)
11 //
12
13 #ifndef ALIRSNMOTHER_H
14 #define ALIRSNMOTHER_H
15
16 #include "AliRsnDaughter.h"
17
18 class AliRsnMother : public TObject {
19 public:
20
21    AliRsnMother();
22    AliRsnMother(const AliRsnMother &obj);
23    AliRsnMother& operator=(const AliRsnMother &obj);
24    virtual ~AliRsnMother();
25
26    Bool_t            IsUsingMC()                        const {return fUseMC;}
27    AliRsnDaughter*   GetDaughter(const Int_t &index)    const {if (index == 0 || index == 1) return fDaughter[index]; return 0x0;}
28    AliRsnDaughter&   GetDaughterRef(const Int_t &index) const {if (index < 1) return (*fDaughter[1]); return (*fDaughter[0]);}
29    TLorentzVector&   Sum()                                    {return fSum;}
30    TLorentzVector&   SumMC()                                  {return fSumMC;}
31    
32    Double_t          AngleTo(AliRsnDaughter track, Bool_t mc = kFALSE) const {return fSum.Angle(track.P(mc).Vect());}
33    Double_t          CosThetaStar(Bool_t first = kTRUE, Bool_t useMC = kFALSE);
34
35    Bool_t            IsLabelEqual() const {return abs(fDaughter[0]->GetLabel()) == abs(fDaughter[1]->GetLabel());}
36    Bool_t            IsIndexEqual() const {return (fDaughter[0]->GetID() == fDaughter[1]->GetID());}
37    Int_t             CommonMother(Int_t &m0, Int_t &m1) const;
38    Int_t             CommonMother() const {Int_t d0, d1; return CommonMother(d0, d1);}
39
40    void              SetDaughters(AliRsnDaughter * const daughter1, Double_t mass1, AliRsnDaughter * const daughter2, Double_t mass2);
41    void              ResetPair();
42    void              PrintInfo(const Option_t *option = "ALL") const;
43    Bool_t            CheckPair() const;
44
45 private:
46
47    Bool_t           fUseMC;            // choose if momenta are taken from ESD/AOD or MC
48    AliRsnDaughter  *fDaughter[2];      // elements of the pair
49    TLorentzVector   fSum;              // sum computed from the two daughters
50    TLorentzVector   fSumMC;            // sum computed from the two daughters
51
52    ClassDef(AliRsnMother, 1)
53 };
54
55 #endif