kCascade,
kNoType
};
-
+
enum ESpecies {
kElectron,
kMuon,
};
AliRsnDaughter() : fOK(kFALSE), fLabel(-1), fMotherPDG(0), fRsnID(-1),
- fPrec(), fPsim(), fRef(0x0), fRefMC(0x0), fOwnerEvent(0x0) { }
+ fPrec(), fPsim(), fRef(0x0), fRefMC(0x0), fOwnerEvent(0x0) { }
AliRsnDaughter(const AliRsnDaughter ©);
- AliRsnDaughter& operator= (const AliRsnDaughter& copy);
+ AliRsnDaughter &operator= (const AliRsnDaughter ©);
virtual ~AliRsnDaughter() { /*empty, since pointers must not be deleted*/ }
// basic getters
Int_t GetLabel() const {return fLabel;}
Int_t GetMotherPDG() const {return fMotherPDG;}
Int_t GetRsnID() const {return fRsnID;}
- AliVParticle* GetRef() {return fRef;}
- AliVParticle* GetRefMC() {return fRefMC;}
- AliRsnEvent* GetOwnerEvent() {return fOwnerEvent;}
- TLorentzVector& P(Bool_t mc) {return (mc ? fPsim : fPrec);}
- TLorentzVector& Prec() {return fPrec;}
- TLorentzVector& Psim() {return fPsim;}
+ AliVParticle *GetRef() {return fRef;}
+ AliVParticle *GetRefMC() {return fRefMC;}
+ AliRsnEvent *GetOwnerEvent() {return fOwnerEvent;}
+ TLorentzVector &P(Bool_t mc) {return (mc ? fPsim : fPrec);}
+ TLorentzVector &Prec() {return fPrec;}
+ TLorentzVector &Psim() {return fPsim;}
Int_t GetPDG();
Int_t GetPDGAbs() {return TMath::Abs(GetPDG());}
Int_t GetID();
void SetRef(AliVParticle *p) {fRef = p;}
void SetRefMC(AliVParticle *p) {fRefMC = p;}
void SetOwnerEvent(AliRsnEvent *e) {fOwnerEvent = e;}
-
+
// additional functions
void FillP(Double_t mass);
void Print(Option_t *o = "") const;
-
+
// getters related to charge
Bool_t IsPos() const {if (fRef) return (fRef->Charge() > 0); return kFALSE;}
Bool_t IsNeg() const {if (fRef) return (fRef->Charge() < 0); return kFALSE;}
Bool_t IsNeutral() const {if (fRef) return (!IsCharged()); return kFALSE;}
Short_t ChargeS() const {if (IsPos()) return 1 ; else if (IsNeg()) return -1 ; else return 0 ;}
Char_t ChargeC() const {if (IsPos()) return '+'; else if (IsNeg()) return '-'; else return '0';}
-
- // getters which automatically convert refs into allowed types
+
+ // getters which automatically convert refs into allowed types
static Bool_t Match(AliVParticle *p, TClass *ref) {if (p) return (p->InheritsFrom(ref)); return kFALSE;}
Bool_t MatchRef(TClass *ref) {return Match(fRef, ref);}
Bool_t MatchRefMC(TClass *ref) {return Match(fRefMC, ref);}
Bool_t IsESD();
Bool_t IsAOD();
- AliVTrack* Ref2Vtrack() {if (Match(fRef, AliVTrack ::Class())) return static_cast<AliVTrack*> (fRef); return 0x0;}
- AliESDtrack* Ref2ESDtrack() {if (Match(fRef, AliESDtrack ::Class())) return static_cast<AliESDtrack*> (fRef); return 0x0;}
- AliAODTrack* Ref2AODtrack() {if (Match(fRef, AliAODTrack ::Class())) return static_cast<AliAODTrack*> (fRef); return 0x0;}
- AliMCParticle* Ref2MCparticle() {if (Match(fRef, AliMCParticle::Class())) return static_cast<AliMCParticle*> (fRef); return 0x0;}
- AliAODMCParticle* Ref2AODMCparticle() {if (Match(fRef, AliMCParticle::Class())) return static_cast<AliAODMCParticle*>(fRef); return 0x0;}
-
- AliESDv0* Ref2ESDv0() {if (Match(fRef, AliESDv0 ::Class())) return static_cast<AliESDv0*>(fRef); return 0x0;}
- AliAODv0* Ref2AODv0() {if (Match(fRef, AliAODv0 ::Class())) return static_cast<AliAODv0*>(fRef); return 0x0;}
-
- AliESDcascade* Ref2ESDcascade() {if (Match(fRef, AliESDcascade::Class())) return static_cast<AliESDcascade*>(fRef); return 0x0;}
- AliAODcascade* Ref2AODcascade() {if (Match(fRef, AliAODcascade::Class())) return static_cast<AliAODcascade*>(fRef); return 0x0;}
-
- AliMCParticle* RefMC2ESD() {if (Match(fRefMC, AliMCParticle ::Class())) return static_cast<AliMCParticle*> (fRef) ; return 0x0;}
- AliAODMCParticle* RefMC2AOD() {if (Match(fRefMC, AliAODMCParticle::Class())) return static_cast<AliAODMCParticle*>(fRefMC); return 0x0;}
-
+ AliVTrack *Ref2Vtrack() {if (Match(fRef, AliVTrack ::Class())) return static_cast<AliVTrack *> (fRef); return 0x0;}
+ AliESDtrack *Ref2ESDtrack() {if (Match(fRef, AliESDtrack ::Class())) return static_cast<AliESDtrack *> (fRef); return 0x0;}
+ AliAODTrack *Ref2AODtrack() {if (Match(fRef, AliAODTrack ::Class())) return static_cast<AliAODTrack *> (fRef); return 0x0;}
+ AliMCParticle *Ref2MCparticle() {if (Match(fRef, AliMCParticle::Class())) return static_cast<AliMCParticle *> (fRef); return 0x0;}
+ AliAODMCParticle *Ref2AODMCparticle() {if (Match(fRef, AliMCParticle::Class())) return static_cast<AliAODMCParticle *>(fRef); return 0x0;}
+
+ AliESDv0 *Ref2ESDv0() {if (Match(fRef, AliESDv0 ::Class())) return static_cast<AliESDv0 *>(fRef); return 0x0;}
+ AliAODv0 *Ref2AODv0() {if (Match(fRef, AliAODv0 ::Class())) return static_cast<AliAODv0 *>(fRef); return 0x0;}
+
+ AliESDcascade *Ref2ESDcascade() {if (Match(fRef, AliESDcascade::Class())) return static_cast<AliESDcascade *>(fRef); return 0x0;}
+ AliAODcascade *Ref2AODcascade() {if (Match(fRef, AliAODcascade::Class())) return static_cast<AliAODcascade *>(fRef); return 0x0;}
+
+ AliMCParticle *RefMC2ESD() {if (Match(fRefMC, AliMCParticle ::Class())) return static_cast<AliMCParticle *> (fRef) ; return 0x0;}
+ AliAODMCParticle *RefMC2AOD() {if (Match(fRefMC, AliAODMCParticle::Class())) return static_cast<AliAODMCParticle *>(fRefMC); return 0x0;}
+
// static functions related to internal ESpecies enum
static ERefType RefType(ESpecies species);
static Bool_t IsCharged(ESpecies species) {return (species <= kProton);}
- static const char* SpeciesName(ESpecies species);
+ static const char *SpeciesName(ESpecies species);
static Int_t SpeciesPDG(ESpecies species);
static Double_t SpeciesMass(ESpecies species);
static EPARTYPE ToAliPID(ESpecies species);
Int_t fLabel; // index of MC particle
Int_t fMotherPDG; // PDG code of mother (makes sense only if fRefMC is defined)
Int_t fRsnID; // internal ID for monitoring purposes
-
+
TLorentzVector fPrec; // 4-momentum for rec
TLorentzVector fPsim; // 4-momentum for MC
if (Match(fRef, AliAODv0 ::Class())) return kV0;
if (Match(fRef, AliAODcascade::Class())) return kCascade;
if (Match(fRef, AliMCParticle::Class())) return kTrack;
-
+
return kNoType;
}
{
//
// Tells if the object pointed by fRef data member is ESD
-// NOTE: it is true even when fRef is the MC corresponding
+// NOTE: it is true even when fRef is the MC corresponding
// object (= AliMCParticle)
//
if (Match(fRef, AliESDv0 ::Class())) return kTRUE;
if (Match(fRef, AliESDcascade::Class())) return kTRUE;
if (Match(fRef, AliMCParticle::Class())) return kTRUE;
-
+
return kFALSE;
}
{
//
// Tells if the object pointed by fRef data member is AOD
-// NOTE: it is true even when fRef is the MC corresponding
+// NOTE: it is true even when fRef is the MC corresponding
// object (= AliAODMCParticle)
//
if (Match(fRef, AliAODv0 ::Class())) return kTRUE;
if (Match(fRef, AliAODcascade ::Class())) return kTRUE;
if (Match(fRef, AliAODMCParticle::Class())) return kTRUE;
-
+
return kFALSE;
}