4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
7 ////////////////////////////////////////////////////////////////////////////////
9 // Interface to candidate resonance decaying into 2 bodies.
11 ////////////////////////////////////////////////////////////////////////////////
14 #include <TLorentzVector.h>
16 #include "AliRsnDaughter.h"
20 class AliRsnMother : public TObject {
23 AliRsnMother() : fRefEvent(0), fSum(), fSumMC(), fRef(), fRefMC() {fDaughter[0] = fDaughter[1] = 0;}
24 AliRsnMother(const AliRsnMother &obj);
25 AliRsnMother& operator=(const AliRsnMother &obj);
26 virtual ~AliRsnMother();
28 // setters (4-vectors cannot be set)
30 void SetDaughter(Int_t i, AliRsnDaughter *d) {fDaughter[CkID(i)] = d;}
31 void SetRefEvent(AliRsnEvent *event) {fRefEvent = event;}
34 AliRsnEvent* GetRefEvent() {return fRefEvent;}
35 AliRsnDaughter* GetDaughter(const Int_t &i) {return fDaughter[CkID(i)];}
36 TLorentzVector& Sum(Bool_t mc) {return (mc ? fSumMC : fSum);}
37 TLorentzVector& Ref(Bool_t mc) {return (mc ? fRefMC : fRef);}
38 Bool_t GetResolution(Double_t &value);
39 Double_t Rapidity(Bool_t mc) {if (mc) return fRefMC.Rapidity(); else return fRef.Rapidity();}
42 Bool_t IsLabelEqual() const {return TMath::Abs(fDaughter[0]->GetLabel()) == TMath::Abs(fDaughter[1]->GetLabel());}
43 Bool_t IsIndexEqual() const {return (fDaughter[0]->GetID() == fDaughter[1]->GetID());}
44 Bool_t IsOwnerEqual() const {return (fDaughter[0]->GetOwnerEvent() == fDaughter[1]->GetOwnerEvent());}
45 Int_t CommonMother() const;
48 Double_t AngleTo(AliRsnDaughter *track, Bool_t mc = kFALSE) {return track->P(mc).Angle(Sum(mc).Vect());}
49 Double_t AngleToLeading(Bool_t &success);
52 void ComputeSum(Double_t mass1, Double_t mass2, Double_t motherMass);
53 Double_t CosThetaStar(Bool_t first = kTRUE, Bool_t useMC = kFALSE);
54 void PrintInfo(const Option_t *option = "ALL") const;
55 Bool_t CheckPair(Bool_t checkMC = kFALSE) const;
59 Int_t CkID(Int_t i) const {if (i < 1) return 0; else return 1;}
61 AliRsnDaughter *fDaughter[2]; // elements of the pair
62 AliRsnEvent *fRefEvent; // reference event
63 TLorentzVector fSum; // sum computed from the two daughters (rec)
64 TLorentzVector fSumMC; // sum computed from the two daughters (sim)
65 TLorentzVector fRef; // same to sum, but with fixed mass hypothesis (rec)
66 TLorentzVector fRefMC; // same to sum, but with fixed mass hypothesis (sim)
68 ClassDef(AliRsnMother, 1)