Main Page   Class Hierarchy   Compound List   File List   Compound Members  

Particle.h

00001 #ifndef PARTICLE_CLASS_PARTICLE_H
00002 #define PARTICLE_CLASS_PARTICLE_H
00003 
00004 #include <string>
00005 
00006 #include "CLHEP/Vector/ThreeVector.h"
00007 #include "CLHEP/Vector/LorentzVector.h"
00008 
00009 #include "particle/Ptype.h"
00010 #include "particle/Momentum.h"
00011 #include "particle/Relation.h"
00012 #include "particle/PID.h"
00013 #include "particle/constant.h"
00014 
00015 class ParticleUserInfo;
00016 
00018 class Particle {
00019   
00020 public:
00022   Particle();
00023   
00025   Particle(const Particle &);
00026   
00028   Particle(const HepLorentzVector &, const Ptype &);
00029 
00031   Particle(const Momentum &, const Ptype &);
00032 
00034   Particle(const double &eta,
00035            const double &phi,
00036            const double &pt,
00037            const Ptype &);
00038 
00040   virtual ~Particle();
00041 
00043   virtual const std::string & name(void) const;
00044 
00046   virtual const std::string & name(const std::string &);
00047 
00049   virtual std::string className(void){ return std::string("Particle"); }
00050   
00054   virtual void dump(const std::string & keyword = std::string("mass momentum"),
00055                     const std::string & prefix = std::string("")) const;
00056 
00058   virtual const Momentum & momentum(void) const;
00059   
00061   virtual Momentum & momentum(void);
00062   
00064   virtual const Momentum & momentum(const Momentum &);
00065   
00067   virtual const HepLorentzVector & p(void) const;
00068 
00070   virtual const HepPoint3D & x(void) const;
00071 
00073   virtual double eta(void) const;
00074 
00076   virtual double phi(void) const;
00077 
00079   virtual double pt(void) const;
00080 
00082   virtual double e(void) const;
00083 
00085   virtual double mass(void) const;
00086 
00088   virtual const PID & pId(void) const;
00089 
00091   virtual PID & pId(void);
00092 
00094   virtual const PID & pId(const PID &);
00095 
00097   virtual const Ptype & pType(void) const;
00098 
00100   virtual Ptype & pType(void);
00101   
00103   virtual const Ptype & pType(const Ptype &);
00104   
00106   virtual int pdgid(void) const;
00107 
00109   virtual const Relation & relation(void) const;
00110 
00112   virtual Relation & relation(void);
00113   
00115   virtual const Relation & relation(const Relation &);
00116   
00118   virtual const Particle * mother(void) const;
00119   
00121   virtual unsigned nChildren(void) const;
00122 
00124   virtual const Particle * child(unsigned i) const;
00125 
00127   virtual Particle * child(unsigned i);
00128  
00130   virtual const Particle * gen(void) const;
00131 
00133   virtual Particle * gen(void);
00134 
00136   virtual const ParticleUserInfo * userInfo(void) const;
00137 
00139   virtual ParticleUserInfo * userInfo(void);
00140 
00142   virtual const ParticleUserInfo * userInfo(const ParticleUserInfo &);
00143 
00145   virtual Particle & operator = (const Particle &);
00146 
00148   virtual operator bool() const { return m_usable; }
00149   
00151   virtual bool operator ! () const { return !m_usable; }
00152 
00154   virtual bool isUsable(void){ return m_usable; }
00155 
00157   virtual bool setUsable(const bool &);
00158 
00160   virtual Particle deepCopy(void);
00161 
00163   virtual void deepDelete(void);
00164 
00166   virtual void setObjectID(const int &v) { m_objectID = v; }
00167   
00169   virtual int getObjectID(void) const { return m_objectID; }
00170 
00171 protected:
00172   bool m_usable; 
00173 
00174   std::string m_name;
00175 
00176   Momentum         *m_momentum;
00177   Relation         *m_relation;
00178   Ptype            *m_pType;
00179   PID              *m_pId;
00180   ParticleUserInfo *m_userInfo;
00181 
00182   int m_objectID;
00183   // id to keep the relation between
00184   // a Particle Class Object and
00185   // a ROOT(Ntuple) index.
00186   // If a user does not set this ID,
00187   // this ID is always -999.
00188 };
00189 #endif // PARTICLE_CLASS_PARTICLE_H

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