00001 #ifndef XANAMuonCandidate_h 00002 #define XANAMuonCandidate_h 00003 00010 class XANAMuonTrack; 00011 #include <CLHEP/Vector/LorentzVector.h> 00012 #include <CLHEP/Geometry/Point3D.h> 00013 #include <CLHEP/Matrix/SymMatrix.h> 00014 #include <TRefArray.h> 00015 #include <TRef.h> 00016 #include <TObject.h> 00017 #include <Rtypes.h> 00018 00019 using namespace CLHEP; 00020 00021 class XANAMuonCandidate : public TObject { 00022 00023 public: 00024 00025 XANAMuonCandidate(); 00026 00028 XANAMuonCandidate(Short_t charge, HepLorentzVector momentum, Float_t pt, 00029 std::string algoName); 00030 00031 virtual ~XANAMuonCandidate(); 00032 00033 // data access methods 00034 00035 // particle interface 00036 HepLorentzVector getMomentumAtVertex() const {return momentum_;} 00037 Float_t getPt() const {return momentum_.perp();} 00038 Float_t getEta() const {return momentum_.rapidity();} 00039 Float_t getPhi() const {return momentum_.phi();} 00040 Short_t getCharge() const {return charge_;} 00041 00042 // recobj 00043 std::string getAlgoName() const {return algoName_;} 00044 char *getCharAlgoName() const {return algoName_;} 00045 00046 // set methods 00047 void setMomentumAtVertex(HepLorentzVector momentum) {momentum_=momentum;} 00048 void setCharge(Short_t q) {charge_=q;} 00049 void setAlgoName(std::string algoName) {sprintf(algoName_,algoName.c_str());} 00050 00051 // copy xonstructor 00052 XANAMuonCandidate(const XANAMuonCandidate &right); 00053 00054 // operators 00055 const XANAMuonCandidate &operator=(const XANAMuonCandidate &right); 00056 00057 // comparison methods 00058 bool operator==(const XANAMuonCandidate&) const; 00059 bool operator<(const XANAMuonCandidate&) const; 00060 00061 // relationships 00062 void setMuonTrack(XANAMuonTrack *track); 00063 XANAMuonTrack *getMuonTrack() const {return (XANAMuonTrack *)(track_.GetObject());} 00064 00066 Bool_t IsUsed() const {return locked_;} 00067 00068 protected: 00069 00071 Short_t charge_; 00073 HepLorentzVector momentum_; 00075 TRef track_; 00077 Int_t algoLen_; 00078 char *algoName_; //[algoLen_] 00079 00080 00081 private: 00082 00083 const static Int_t strLen_; 00084 Bool_t locked_; 00085 void lock() {locked_ = true;} 00086 void unlock() { locked_ = false;} 00087 00088 ClassDef(XANAMuonCandidate,1) 00089 00090 }; 00091 00092 #endif 00093 00094 00095 00096 00097 00098 00099