00001
00002
00003
00004
00005 #ifndef ATLFAST_IKINEMATIC_H
00006 #define ATLFAST_IKINEMATIC_H
00007
00008 #ifndef ATLFAST_IASSOCIATIONMANAGER_H
00009 #include "AtlfastEvent/IAOO.h"
00010 #endif
00011
00012 #ifndef EVENTKERNEL_INAVIGABLE4MOMENTUM_H
00013 #include "EventKernel/INavigable4Momentum.h"
00014 #endif
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef HEPLORENTZVECTOR_H
00023 #include "CLHEP/Vector/LorentzVector.h"
00024 #define HEPLORENTZVECTOR_H
00025 #endif
00026
00027 class MsgStream;
00028
00029 namespace Atlfast {
00030
00031 class IKinematic;
00032 MsgStream& operator << ( MsgStream&, const IKinematic& );
00033 MsgStream& operator << ( MsgStream&, const IKinematic * const );
00054 class IKinematic:
00055
00056 virtual public IAOO,
00057 virtual public INavigable4Momentum{
00058
00059 public:
00060
00061 virtual HepLorentzVector momentum() const = 0 ;
00062 virtual double eta() const = 0 ;
00063 virtual double phi() const = 0 ;
00064 virtual double pT() const = 0 ;
00065 virtual double eT() const = 0 ;
00066 virtual double mT() const = 0 ;
00067
00068 virtual ~IKinematic(){};
00069 virtual IKinematic* clone() const = 0 ;
00070
00071
00072 virtual void print(const std::string&, std::string s="") const = 0;
00073
00074
00075 virtual double e() const {return this->momentum().e();}
00076 virtual double m() const {return this->momentum().m();}
00077 };
00078
00079 }
00080 #endif
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094