#ifndef ALIRSNTARGET_H
#define ALIRSNTARGET_H
#include "TNamed.h"
#include "AliRsnDaughter.h"
#include "AliRsnEvent.h"
class AliRsnMother;
class AliRsnTarget : public TNamed {
public:
enum ETargetType {
kDaughter,
kMother,
kEvent,
kTargetTypes
};
AliRsnTarget() : fTargetType(kTargetTypes), fDaughter(0x0), fMother(0x0), fEvent(0x0) { }
AliRsnTarget(const char *name, ETargetType type = kTargetTypes) : TNamed(name, ""), fTargetType(type), fDaughter(0x0), fMother(0x0), fEvent(0x0) { }
AliRsnTarget(const AliRsnTarget ©) : TNamed(copy), fTargetType(copy.fTargetType), fDaughter(0x0), fMother(0x0), fEvent(0x0) { }
AliRsnTarget &operator=(const AliRsnTarget ©) { TNamed::operator=(copy); if (this==©) return *this; fTargetType = copy.fTargetType; return (*this); }
virtual ~AliRsnTarget() { }
Bool_t IsAllNull() const {return (!fDaughter && !fMother && !fEvent);}
Bool_t IsTarget(ETargetType targetType) const {return (fTargetType == targetType);}
Bool_t TargetOK(TObject *object);
void SetTargetType(ETargetType type) {fTargetType = type;}
ETargetType GetTargetType() const {return fTargetType;}
Char_t GetTargetTypeChar() const;
const char *GetTargetTypeName() const;
AliRsnDaughter *GetTargetDaughter() {return fDaughter;}
AliRsnMother *GetTargetMother() {return fMother;}
AliRsnEvent *GetTargetEvent() {return fEvent;}
protected:
ETargetType fTargetType;
AliRsnDaughter *fDaughter;
AliRsnMother *fMother;
AliRsnEvent *fEvent;
ClassDef(AliRsnTarget, 2)
};
typedef AliRsnTarget::ETargetType RSNTARGET;
#endif