ROOT logo
AliRoot » PWGLF » RESONANCES » AliRsnMother

class AliRsnMother: public TObject


  This class implements a candidate resonance. It has two pointers to its
  two candidate daughters, whose 4-momenta are combined to obtain the mother
  invariant mass and other kinematical quantities.
  This class contains also some methods used to compute kinematical relations
  between the candidate resonance and other particles.

  authors: A. Pulvirenti (alberto.pulvirenti@ct.infn.it)
           M. Vala (martin.vala@cern.ch)


Function Members (Methods)

public:
AliRsnMother()
AliRsnMother(const AliRsnMother& obj)
virtual~AliRsnMother()
voidTObject::AbstractMethod(const char* method) const
Double_tAngleTo(AliRsnDaughter* track, Bool_t mc = kFALSE)
Double_tAngleToLeading(Bool_t& success)
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
Bool_tCheckPair(Bool_t checkMC = kFALSE) const
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTObject::Clear(Option_t* = "")
virtual TObject*TObject::Clone(const char* newname = "") const
Int_tCommonMother() const
virtual Int_tTObject::Compare(const TObject* obj) const
voidComputeSum(Double_t mass1, Double_t mass2, Double_t motherMass)
virtual voidTObject::Copy(TObject& object) const
Double_tCosThetaStar(Bool_t first = kTRUE, Bool_t useMC = kFALSE)
Double_tDCAproduct()
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
AliRsnDaughter*GetDaughter(const Int_t& i)
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual const char*TObject::GetIconName() const
virtual const char*TObject::GetName() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
AliRsnEvent*GetRefEvent()
Bool_tGetResolution(Double_t& value)
virtual const char*TObject::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTObject::Hash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tIsIndexEqual() const
Bool_tIsLabelEqual() const
Bool_tTObject::IsOnHeap() const
Bool_tIsOwnerEqual() const
virtual Bool_tTObject::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidTObject::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
virtual Bool_tTObject::Notify()
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
AliRsnMother&operator=(const AliRsnMother& obj)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTObject::Print(Option_t* option = "") const
voidPrintInfo(Option_t* option = "ALL") const
Double_tRapidity(Bool_t mc)
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
TLorentzVector&Ref(Bool_t mc)
voidReset()
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
voidSetDaughter(Int_t i, AliRsnDaughter* d)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
static voidTObject::SetObjectStat(Bool_t stat)
voidSetRefEvent(AliRsnEvent* event)
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShowMembers(TMemberInspector&)
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
TLorentzVector&Sum(Bool_t mc)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
virtual voidTObject::UseCurrentStyle()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
protected:
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidTObject::MakeZombie()
private:
Int_tCkID(Int_t i) const

Data Members

private:
Double_tfDCAproductproduct of the daughter's DCA to Primary Vertex
AliRsnDaughter*fDaughter[2]elements of the pair
TLorentzVectorfRefsame to sum, but with fixed mass hypothesis (rec)
AliRsnEvent*fRefEventreference event
TLorentzVectorfRefMCsame to sum, but with fixed mass hypothesis (sim)
TLorentzVectorfSumsum computed from the two daughters (rec)
TLorentzVectorfSumMCsum computed from the two daughters (sim)

Class Charts

Inheritance Chart:
TObject
AliRsnMother

Function documentation

AliRsnMother(const AliRsnMother& obj)
 Copy constructor.
 Does not duplicate pointers.

AliRsnMother & operator=(const AliRsnMother& obj)
 Assignment operator.
 Does not duplicate pointers.

~AliRsnMother()
 Desctructor.
 Does nothing, since pointers are not created in this class.

void Reset()
 Resets the mother, zeroing all data members.

Int_t CommonMother() const
 If MC info is available, checks if the two tracks in the pair have the same mother.
 If the mother label is the same, the function returns the PDG code of mother,
 otherwise it returns 0.
 The two arguments passed by reference contain the GEANT labels of the mother
 of the two particles to which the two daughters point. This is for being able
 to check if they are really coming from a resonance (indexes >= 0) or not.

Double_t AngleToLeading(Bool_t& success)
 Compute the angle betwee this and the leading particls
 of the reference event (if this was set properly).
 In case one of the two daughters is the leading, return
 a meaningless value, in order to skip this pair.
 if second argument is kTRUE, use MC values.

void ComputeSum(Double_t mass1, Double_t mass2, Double_t motherMass)
 Sets the masses for the 4-momenta of the daughters and then
 sums them, taking into account that the space part is set to
 each of them when the reference object is set (see AliRsnDaughter::SetRef)

Double_t CosThetaStar(Bool_t first = kTRUE, Bool_t useMC = kFALSE)
 Computes the cosine of theta*, which is the angle of one of the daughters
 with respect to the total momentum of the resonance, in its rest frame.
 The arguments are needed to choose which of the daughters one want to use
 and if reconstructed or MC momentum must be used.
 [Contribution from Z. Feckova]

Double_t DCAproduct()
 returns product of DCA of the two daughters

void PrintInfo(Option_t* option = "ALL") const
 Print some info of the pair.
 The options are passed to the AliRsnDaughter::Print() method

Bool_t CheckPair(Bool_t checkMC = kFALSE) const
 Checks that the pair is well initialized:
 - both daughters are good pointers
 - if MC is required, both daughters have a MC reference

AliRsnMother()
{fDaughter[0] = fDaughter[1] = 0;}
void SetDaughter(Int_t i, AliRsnDaughter* d)
{fDaughter[CkID(i)] = d;}
void SetRefEvent(AliRsnEvent* event)
{fRefEvent = event;}
AliRsnEvent * GetRefEvent()
 getters
{return fRefEvent;}
AliRsnDaughter * GetDaughter(const Int_t& i)
{return fDaughter[CkID(i)];}
TLorentzVector & Sum(Bool_t mc)
{return (mc ? fSumMC : fSum);}
TLorentzVector & Ref(Bool_t mc)
{return (mc ? fRefMC : fRef);}
Bool_t GetResolution(Double_t& value)
Double_t Rapidity(Bool_t mc)
{if (mc) return fRefMC.Rapidity(); else return fRef.Rapidity();}
Bool_t IsLabelEqual() const
 checks
{return TMath::Abs(fDaughter[0]->GetLabel()) == TMath::Abs(fDaughter[1]->GetLabel());}
Bool_t IsIndexEqual() const
{return (fDaughter[0]->GetID() == fDaughter[1]->GetID());}
Bool_t IsOwnerEqual() const
{return (fDaughter[0]->GetOwnerEvent() == fDaughter[1]->GetOwnerEvent());}
Double_t AngleTo(AliRsnDaughter* track, Bool_t mc = kFALSE)
 angles
{return track->P(mc).Angle(Sum(mc).Vect());}
Int_t CkID(Int_t i) const
{if (i < 1) return 0; else return 1;}