![]() |
HepMC Reference DocumentationHepMC |
00001 00002 // Matt.Dobbs@Cern.CH, September 1999 00003 // 00004 // particle properties common to all particles of a given PDG id 00006 00007 #include "HepMC/ParticleData.h" 00008 #include <cstdio> // needed for formatted output using sprintf 00009 00010 namespace HepMC { 00011 00012 ParticleData::ParticleData( std::string name, int id, double charge, 00013 double mass, double clifetime, double spin ) : 00014 m_name(name), m_pdg_id(id), m_mass(mass), m_clifetime(clifetime) 00015 { 00024 // 00025 set_charge(charge); 00026 set_spin(spin); 00027 s_counter++; 00028 } 00029 00030 ParticleData::ParticleData( const char* name, int id, double charge, 00031 double mass, double clifetime, double spin ): 00032 m_name(name), m_pdg_id(id), m_mass(mass), m_clifetime(clifetime) 00033 { 00038 // 00039 set_charge(charge); 00040 set_spin(spin); 00041 s_counter++; 00042 } 00043 00044 ParticleData::~ParticleData() { 00045 s_counter--; 00046 } 00047 00048 void ParticleData::print( std::ostream& ostr ) const { 00049 ostr << "ParticleData: " << name() << "\t" 00050 << " ID[pdg]:" << pdg_id() 00051 << " Charge[e+]:" << charge() 00052 << " Mass:" << mass() 00053 << " Tau:" << clifetime() 00054 << " J:" << spin() << std::endl; 00055 } 00056 00058 // access methods // 00060 00061 int ParticleData::model_independent_pdg_id_() const { 00066 int id = m_pdg_id; 00067 if ( id/1000000 >=1 && id/1000000 <= 4 ) id %= 1000000; 00068 return id; 00069 } 00070 00071 double ParticleData::width() const { 00072 double width; 00073 if ( m_clifetime > 0 ) { 00074 width = HepMC_hbarc/m_clifetime; 00075 } else if ( m_clifetime == 0 ) { 00076 width = -1; 00077 } else { 00078 width = 0; 00079 } 00080 return width; 00081 } 00082 00084 // Static // 00086 unsigned int ParticleData::counter() { return s_counter; } 00087 unsigned int ParticleData::s_counter = 0; 00088 00090 // Friends // 00092 00094 std::ostream& operator<<( std::ostream& ostr, const ParticleData& pdata ) { 00095 char outline[80]; 00096 sprintf( outline,"%+9d%21s%+6.2f%19.11e%19.11e%5.1f", 00097 pdata.pdg_id(), 00098 pdata.name().substr(0,21).c_str(), 00099 pdata.charge(), 00100 pdata.mass(), 00101 pdata.clifetime(), 00102 pdata.spin() ); 00103 return ostr << outline; 00104 } 00105 00107 // Related Methods // 00109 00110 double clifetime_from_width( double width ) { 00113 // i.e. new ParticleData( 00114 if ( width > 0 ) return HepMC_hbarc/width; 00115 if ( width == 0. ) return -1.; 00116 return 0.; 00117 } 00118 00119 } // HepMC 00120 00121 00122 00123 00124 00125 00126