#ifndef INC_TPHYSOBJ #define INC_TPHYSOBJ ////////////////////////////////////////////////////////////////////// // File: TPhysObj.hpp // // Purpose: define a general interface for D0 root tree physics objects // // Created: 20-MAY-2002 Serban Protopopescu // ////////////////////////////////////////////////////////////////////// #ifndef ROOT_TObject #include "TObject.h" #endif #ifndef ROOT_TLorentzVector #include "TLorentzVector.h" #endif #include "kinem_util/AnglesUtil.hpp" class TPhysObj: public TObject { public: // constructors TPhysObj() {} virtual ~TPhysObj() {} // Interface methods virtual Float_t px() const = 0; virtual Float_t py() const = 0; virtual Float_t pz() const = 0; virtual Float_t E() const = 0; virtual Float_t pT() const; virtual Float_t phi() const; virtual Float_t eta() const; virtual Float_t theta() const; virtual Float_t p() const; virtual Float_t charge() const = 0; virtual TLorentzVector lorentz_vector() const; virtual bool operator<(const TPhysObj& x) const { return pT() < x.pT(); } virtual bool operator==(const TPhysObj& x) const { return this == &x; } ClassDef(TPhysObj, 1) }; #endif // INC_TPHYSOBJ