00001 #ifndef DECAYCHAIN_KINEMATICDATA_H
00002 #define DECAYCHAIN_KINEMATICDATA_H
00003
00004 #include "CLHEP/Vector/LorentzVector.h"
00005
00006 using CLHEP::HepLorentzVector;
00007
00008 namespace DecayChain {
00009
00010 class KinematicData
00011 {
00012 public:
00013 KinematicData();
00014 KinematicData(const HepLorentzVector& p4);
00015
00016 void setUserTag( const int tag );
00017 void setCharge( const int aCharge );
00018
00019 void setP4( const HepLorentzVector& aMomentum );
00020 #ifdef EXTEND
00021 void recover() const { m_p4 = m_p4_bakup; }
00022 #endif
00023
00024 int userTag() const;
00025 int charge() const;
00026 double mass() const;
00027 double energy() const;
00028
00029 const HepLorentzVector& p4() const;
00030
00031 private:
00032 int m_userTag;
00033 int m_charge;
00034 mutable HepLorentzVector m_p4;
00035 #ifdef EXTEND
00036 void bakup() { if(m_hasbeenbakup) return; m_p4_bakup = m_p4; m_hasbeenbakup=true; }
00037 HepLorentzVector m_p4_bakup;
00038 bool m_hasbeenbakup;
00039 #endif
00040 };
00041 }
00042
00043 #endif