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
9 // authors: Martin Vala (martin.vala@cern.ch)
10 // Alberto Pulvirenti (alberto.pulvirenti@ct.infn.it)
13 #ifndef ALIRSNMOTHER_H
14 #define ALIRSNMOTHER_H
16 #include "AliRsnDaughter.h"
18 class AliRsnMother : public TObject {
22 AliRsnMother(const AliRsnMother &obj);
23 AliRsnMother& operator=(const AliRsnMother &obj);
24 virtual ~AliRsnMother();
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;}
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);
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);}
40 void SetDaughters(AliRsnDaughter * const daughter1, Double_t mass1, AliRsnDaughter * const daughter2, Double_t mass2);
42 void PrintInfo(const Option_t *option = "ALL") const;
43 Bool_t CheckPair() const;
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
52 ClassDef(AliRsnMother, 1)