Main Page   Class Hierarchy   Compound List   File List   Compound Members  

Momentum.h

00001 #ifndef PARTICLE_CLASS_MOMENTUM_H
00002 #define PARTICLE_CLASS_MOMENTUM_H
00003 
00004 #include <string>
00005 
00006 #include "CLHEP/Vector/LorentzVector.h"
00007 #include "CLHEP/Matrix/Vector.h"
00008 #include "CLHEP/Matrix/SymMatrix.h"
00009 #include "CLHEP/Matrix/Matrix.h"
00010 #include "CLHEP/Geometry/Point3D.h"
00011 
00013 class Momentum 
00014 {
00015 
00016 public:
00018   Momentum();
00019   
00021   Momentum(const Momentum &);
00022   
00024   Momentum(const HepLorentzVector &, 
00025            const HepSymMatrix &error = HepSymMatrix(4,0));
00026 
00028   virtual ~Momentum();
00029 
00031   virtual std::string className(void) { return std::string("Momentum"); }
00032 
00034   virtual void dump(const std::string &keyword = std::string("mass momentum return"),
00035                     const std::string &prefix  = std::string("")) const;
00036 
00038   virtual const HepLorentzVector & p(void) const { return m_momentum; }
00039   
00041   virtual const HepSymMatrix dp(void) const { return m_error.sub(1,4); }
00042   
00044   virtual const HepPoint3D & x(void) const { return m_position; }
00045   
00047   virtual const HepSymMatrix dx(void) const { return m_error.sub(5,7); }
00048 
00050   virtual const HepSymMatrix & dpx(void) const { return m_error; }
00051 
00053   virtual double mass(void) const { return m_momentum.mag(); }
00054   
00056   virtual double dMass(void) const;
00057 
00059   virtual double eta(void) const { return m_momentum.vect().pseudoRapidity(); }
00060   
00062   virtual double phi(void) const { return m_momentum.phi(); }
00063 
00065   virtual double pt(void) const { 
00066     if (e() >= 0.) { return m_momentum.vect().perp(); }
00067     else { return -m_momentum.vect().perp(); }
00068   }
00069 
00071   virtual double e(void) const { return m_momentum.t(); }
00072 
00074   double deltaR(const Momentum *trk) const;
00075 
00077   double deltaR(const Momentum &trk) const { return deltaR(&trk); }
00078   
00080   virtual const HepPoint3D & vertex(void) const { return m_vertex; }
00081 
00083   virtual const HepSymMatrix & dVertex(void) const { return m_vertexError; }
00084 
00086   virtual const HepPoint3D & decayVertex(void) const { return m_decayVertex; }
00087 
00089   virtual const HepSymMatrix & dDecayVertex(void) const { return m_decayVertexError; }
00090 
00092   virtual void momentum(const HepLorentzVector &,
00093                         const HepSymMatrix     &error = HepSymMatrix(4,0));
00094   
00096   virtual void position(const HepPoint3D   &, 
00097                         const HepSymMatrix &error = HepSymMatrix(3,0));
00098 
00100   virtual void momentumPosition(const HepLorentzVector &, const HepPoint3D &, 
00101                                 const HepSymMatrix &error = HepSymMatrix(7,0));
00102 
00104   virtual HepPoint3D & vertex(const HepPoint3D &, 
00105                               const HepSymMatrix &error = HepSymMatrix(3,0)); 
00106 
00108   virtual HepPoint3D & decayVertex(const HepPoint3D &, 
00109                                    const HepSymMatrix &error = HepSymMatrix(3,0)); 
00110 
00112   virtual Momentum & operator = (const Momentum &);
00113 
00114 protected:
00115   HepLorentzVector m_momentum;       // 4
00116   HepPoint3D       m_position;       // 3
00117   HepSymMatrix     m_error;          // 7 x 7
00118 
00119   HepPoint3D       m_vertex;         // 3      ... production vertex
00120   HepSymMatrix     m_vertexError;    // 3 x 3  ... production vertex
00121   HepPoint3D       m_decayVertex;         // 3
00122   HepSymMatrix     m_decayVertexError;    // 3 x 3
00123 };
00124 #endif // PARTICLE_CLASS_MOMENTUM_H

Generated on Tue Apr 13 13:25:32 2004 for ATLAS JAPAN by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002