G4UnitDefinition Class Reference

#include <G4UnitsTable.hh>


Public Member Functions

 G4UnitDefinition (const G4String &name, const G4String &symbol, const G4String &category, G4double value)
 ~G4UnitDefinition ()
G4int operator== (const G4UnitDefinition &) const
G4int operator!= (const G4UnitDefinition &) const
const G4StringGetName () const
const G4StringGetSymbol () const
G4double GetValue () const
void PrintDefinition ()

Static Public Member Functions

static void BuildUnitsTable ()
static void PrintUnitsTable ()
static void ClearUnitsTable ()
static G4UnitsTableGetUnitsTable ()
static G4double GetValueOf (const G4String &)
static G4String GetCategory (const G4String &)


Detailed Description

Definition at line 64 of file G4UnitsTable.hh.


Constructor & Destructor Documentation

G4UnitDefinition::G4UnitDefinition ( const G4String name,
const G4String symbol,
const G4String category,
G4double  value 
)

Definition at line 59 of file G4UnitsTable.cc.

References GetName().

Referenced by BuildUnitsTable().

00062   : Name(name),SymbolName(symbol),Value(value)   
00063 {
00064     // Does the Category objet already exist ?
00065     //
00066     size_t nbCat = theUnitsTable.size();
00067     size_t i = 0;
00068     while ((i<nbCat)&&(theUnitsTable[i]->GetName()!=category))  { i++; }
00069     if (i == nbCat)
00070       { theUnitsTable.push_back( new G4UnitsCategory(category)); }
00071     CategoryIndex = i;
00072 
00073     // Insert this Unit in the Units table
00074     //
00075     (theUnitsTable[CategoryIndex]->GetUnitsList()).push_back(this);
00076     
00077     // Update string max length for name and symbol
00078     //
00079     theUnitsTable[i]->UpdateNameMxLen((G4int)name.length());
00080     theUnitsTable[i]->UpdateSymbMxLen((G4int)symbol.length());
00081 }

G4UnitDefinition::~G4UnitDefinition (  ) 

Definition at line 85 of file G4UnitsTable.cc.

00086 {
00087 }


Member Function Documentation

void G4UnitDefinition::BuildUnitsTable (  )  [static]

Definition at line 189 of file G4UnitsTable.cc.

References G4UnitDefinition(), and pascal.

Referenced by G4GDMLRead::G4GDMLRead(), GetUnitsTable(), and G4DimensionedTypeUtils::GetUnitValue().

00190 {
00191  //Length
00192  new G4UnitDefinition(    "parsec","pc"      ,"Length",parsec); 
00193  new G4UnitDefinition( "kilometer","km"      ,"Length",kilometer);
00194  new G4UnitDefinition(     "meter","m"       ,"Length",meter);
00195  new G4UnitDefinition("centimeter","cm"      ,"Length",centimeter); 
00196  new G4UnitDefinition("millimeter","mm"      ,"Length",millimeter);
00197  new G4UnitDefinition("micrometer","um"      ,"Length",micrometer);
00198  new G4UnitDefinition( "nanometer","nm"      ,"Length",nanometer);
00199  new G4UnitDefinition(  "angstrom","Ang"     ,"Length",angstrom);    
00200  new G4UnitDefinition(     "fermi","fm"      ,"Length",fermi);
00201  
00202  //Surface
00203  new G4UnitDefinition( "kilometer2","km2"    ,"Surface",kilometer2);
00204  new G4UnitDefinition(     "meter2","m2"     ,"Surface",meter2);
00205  new G4UnitDefinition("centimeter2","cm2"    ,"Surface",centimeter2); 
00206  new G4UnitDefinition("millimeter2","mm2"    ,"Surface",millimeter2);
00207  new G4UnitDefinition(       "barn","barn"   ,"Surface",barn);
00208  new G4UnitDefinition(  "millibarn","mbarn"  ,"Surface",millibarn);   
00209  new G4UnitDefinition(  "microbarn","mubarn" ,"Surface",microbarn);
00210  new G4UnitDefinition(   "nanobarn","nbarn"  ,"Surface",nanobarn);
00211  new G4UnitDefinition(   "picobarn","pbarn"  ,"Surface",picobarn);
00212  
00213  //Volume
00214  new G4UnitDefinition( "kilometer3","km3"    ,"Volume",kilometer3);
00215  new G4UnitDefinition(     "meter3","m3"     ,"Volume",meter3);
00216  new G4UnitDefinition("centimeter3","cm3"    ,"Volume",centimeter3); 
00217  new G4UnitDefinition("millimeter3","mm3"    ,"Volume",millimeter3);
00218 
00219  //Angle
00220  new G4UnitDefinition(     "radian","rad"    ,"Angle",radian);
00221  new G4UnitDefinition("milliradian","mrad"   ,"Angle",milliradian); 
00222  new G4UnitDefinition(     "degree","deg"    ,"Angle",degree);
00223  
00224  //Solid angle
00225  new G4UnitDefinition(  "steradian","sr"     ,"Solid angle",steradian);
00226  new G4UnitDefinition("millisteradian","msr" ,"Solid angle",steradian*0.001);
00227    
00228  //Time
00229  new G4UnitDefinition(     "second","s"      ,"Time",second);
00230  new G4UnitDefinition("millisecond","ms"     ,"Time",millisecond);
00231  new G4UnitDefinition("microsecond","mus"    ,"Time",microsecond);
00232  new G4UnitDefinition( "nanosecond","ns"     ,"Time",nanosecond);
00233  new G4UnitDefinition( "picosecond","ps"     ,"Time",picosecond);
00234  
00235  //Frequency
00236  new G4UnitDefinition(    "hertz","Hz"       ,"Frequency",hertz);
00237  new G4UnitDefinition("kilohertz","kHz"      ,"Frequency",kilohertz);
00238  new G4UnitDefinition("megahertz","MHz"      ,"Frequency",megahertz);
00239  
00240  //Electric charge
00241  new G4UnitDefinition(  "eplus","e+"         ,"Electric charge",eplus);
00242  new G4UnitDefinition("coulomb","C"          ,"Electric charge",coulomb); 
00243  
00244  //Energy
00245  new G4UnitDefinition(    "electronvolt","eV" ,"Energy",electronvolt);
00246  new G4UnitDefinition("kiloelectronvolt","keV","Energy",kiloelectronvolt);
00247  new G4UnitDefinition("megaelectronvolt","MeV","Energy",megaelectronvolt);
00248  new G4UnitDefinition("gigaelectronvolt","GeV","Energy",gigaelectronvolt);
00249  new G4UnitDefinition("teraelectronvolt","TeV","Energy",teraelectronvolt);
00250  new G4UnitDefinition("petaelectronvolt","PeV","Energy",petaelectronvolt);
00251  new G4UnitDefinition(           "joule","J"  ,"Energy",joule);
00252  
00253  // Energy/Length
00254  new G4UnitDefinition( "GeV/cm", "GeV/cm","Energy/Length", GeV/cm);
00255  new G4UnitDefinition( "MeV/cm", "MeV/cm","Energy/Length", MeV/cm);
00256  new G4UnitDefinition( "keV/cm", "keV/cm","Energy/Length", keV/cm);
00257  new G4UnitDefinition(  "eV/cm",  "eV/cm","Energy/Length",  eV/cm); 
00258   
00259  //Mass
00260  new G4UnitDefinition("milligram","mg","Mass",milligram);
00261  new G4UnitDefinition(     "gram","g" ,"Mass",gram);
00262  new G4UnitDefinition( "kilogram","kg","Mass",kilogram);
00263  
00264  //Volumic Mass
00265  new G4UnitDefinition( "g/cm3", "g/cm3","Volumic Mass", g/cm3);
00266  new G4UnitDefinition("mg/cm3","mg/cm3","Volumic Mass",mg/cm3);
00267  new G4UnitDefinition("kg/m3", "kg/m3", "Volumic Mass",kg/m3);
00268  
00269  // Mass/Surface
00270  new G4UnitDefinition(  "g/cm2",  "g/cm2","Mass/Surface",  g/cm2);
00271  new G4UnitDefinition( "mg/cm2", "mg/cm2","Mass/Surface", mg/cm2);
00272  new G4UnitDefinition( "kg/cm2", "kg/cm2","Mass/Surface", kg/cm2);
00273    
00274  // Surface/Mass
00275  new G4UnitDefinition( "cm2/g", "cm2/g","Surface/Mass", cm2/g);
00276  
00277  // Energy.Surface/Mass
00278  new G4UnitDefinition( "eV*cm2/g", " eV*cm2/g","Energy*Surface/Mass", eV*cm2/g);
00279  new G4UnitDefinition("keV*cm2/g", "keV*cm2/g","Energy*Surface/Mass",keV*cm2/g);
00280  new G4UnitDefinition("MeV*cm2/g", "MeV*cm2/g","Energy*Surface/Mass",MeV*cm2/g);
00281  new G4UnitDefinition("GeV*cm2/g", "GeV*cm2/g","Energy*Surface/Mass",GeV*cm2/g);
00282      
00283  //Power
00284  new G4UnitDefinition("watt","W","Power",watt);
00285  
00286  //Force
00287  new G4UnitDefinition("newton","N","Force",newton);
00288  
00289  //Pressure
00290  new G4UnitDefinition(    "pascal","Pa" ,"Pressure",pascal);
00291  new G4UnitDefinition(       "bar","bar","Pressure",bar); 
00292  new G4UnitDefinition("atmosphere","atm","Pressure",atmosphere);
00293  
00294  //Electric current
00295  new G4UnitDefinition(     "ampere","A"  ,"Electric current",ampere);
00296  new G4UnitDefinition("milliampere","mA" ,"Electric current",milliampere);
00297  new G4UnitDefinition("microampere","muA","Electric current",microampere);
00298  new G4UnitDefinition( "nanoampere","nA" ,"Electric current",nanoampere);   
00299  
00300  //Electric potential
00301  new G4UnitDefinition(    "volt","V" ,"Electric potential",volt); 
00302  new G4UnitDefinition("kilovolt","kV","Electric potential",kilovolt);
00303  new G4UnitDefinition("megavolt","MV","Electric potential",megavolt);
00304  
00305  //Electric field
00306  new G4UnitDefinition(  "volt/m","V/m","Electric field",volt/m);
00307    
00308  //Magnetic flux
00309  new G4UnitDefinition("weber","Wb","Magnetic flux",weber);
00310  
00311  //Magnetic flux density
00312  new G4UnitDefinition(    "tesla","T" ,"Magnetic flux density",tesla);
00313  new G4UnitDefinition("kilogauss","kG","Magnetic flux density",kilogauss);
00314  new G4UnitDefinition(    "gauss","G" ,"Magnetic flux density",gauss);
00315  
00316  //Temperature
00317  new G4UnitDefinition("kelvin","K","Temperature",kelvin);
00318  
00319  //Amount of substance
00320  new G4UnitDefinition("mole","mol","Amount of substance",mole);
00321  
00322  //Activity
00323  new G4UnitDefinition("becquerel","Bq","Activity",becquerel);
00324  new G4UnitDefinition(    "curie","Ci","Activity",curie);
00325  
00326  //Dose
00327  new G4UnitDefinition("gray","Gy","Dose",gray);                          
00328 }

void G4UnitDefinition::ClearUnitsTable (  )  [static]

Definition at line 343 of file G4UnitsTable.cc.

Referenced by G4RunManagerKernel::~G4RunManagerKernel().

00344 {
00345   for (size_t i=0;i<theUnitsTable.size();i++)
00346   {
00347     delete theUnitsTable[i];
00348   }
00349   theUnitsTable.clear();
00350 }

G4String G4UnitDefinition::GetCategory ( const G4String  )  [static]

Definition at line 156 of file G4UnitsTable.cc.

References G4Exception(), GetName(), GetUnitsTable(), and JustWarning.

Referenced by G4UIcommand::CategoryOf(), G4VPrimitiveScorer::CheckAndSetUnit(), and G4AttCheck::Standard().

00157 {
00158   G4String name,symbol;
00159   for (size_t i=0;i<(GetUnitsTable()).size();i++)
00160      {
00161        G4UnitsContainer& units = theUnitsTable[i]->GetUnitsList();
00162        for (size_t j=0;j<units.size();j++)
00163           {
00164             name=units[j]->GetName(); symbol=units[j]->GetSymbol();
00165             if(str==name||str==symbol) 
00166               { return theUnitsTable[i]->GetName(); }
00167           }
00168      }
00169   std::ostringstream message;
00170   message << "The unit '" << str << "' does not exist in the Units Table.";
00171   G4Exception("G4UnitDefinition::GetCategory()", "InvalidUnit",
00172               JustWarning, message, "Returning Value = 0.");
00173   name = "None";     
00174   return name;             
00175 }

const G4String & G4UnitDefinition::GetName (  )  const [inline]

Definition at line 39 of file G4UnitsTable.icc.

Referenced by G4UnitDefinition(), GetCategory(), GetValueOf(), and G4DimensionedTypeUtils::HasName::operator()().

00040 {
00041   return Name;
00042 }

const G4String & G4UnitDefinition::GetSymbol (  )  const [inline]

Definition at line 45 of file G4UnitsTable.icc.

Referenced by G4DimensionedTypeUtils::HasName::operator()().

00046 {
00047   return SymbolName;
00048 }

G4UnitsTable & G4UnitDefinition::GetUnitsTable (  )  [static]

Definition at line 126 of file G4UnitsTable.cc.

References BuildUnitsTable().

Referenced by G4AttCheck::G4AttCheck(), G4BestUnit::G4BestUnit(), GetCategory(), G4DimensionedTypeUtils::GetUnitValue(), GetValueOf(), operator<<(), and G4UIcommand::UnitsList().

00127 {
00128   if(theUnitsTable.size()==0)  { BuildUnitsTable(); }
00129   return theUnitsTable;
00130 }

G4double G4UnitDefinition::GetValue (  )  const [inline]

Definition at line 51 of file G4UnitsTable.icc.

00052 {
00053   return Value;
00054 }

G4double G4UnitDefinition::GetValueOf ( const G4String  )  [static]

Definition at line 134 of file G4UnitsTable.cc.

References G4Exception(), GetName(), GetUnitsTable(), and JustWarning.

Referenced by G4VPrimitiveScorer::CheckAndSetUnit(), G4ScoreQuantityMessenger::FParticleWithEnergyCommand(), G4tgrUtils::GetDouble(), G4VAnalysisManager::GetUnitValue(), G4VisCommandsViewerSet::SetNewValue(), G4AdjointSimMessenger::SetNewValue(), G4AttCheck::Standard(), and G4UIcommand::ValueOf().

00135 {
00136   G4String name,symbol;
00137   for (size_t i=0;i<(GetUnitsTable()).size();i++)
00138      {
00139        G4UnitsContainer& units = theUnitsTable[i]->GetUnitsList();
00140        for (size_t j=0;j<units.size();j++)
00141           {
00142             name=units[j]->GetName(); symbol=units[j]->GetSymbol();
00143             if(str==name||str==symbol) 
00144               { return units[j]->GetValue(); }
00145           }
00146      }
00147   std::ostringstream message;
00148   message << "The unit '" << str << "' does not exist in the Units Table.";
00149   G4Exception("G4UnitDefinition::GetValueOf()", "InvalidUnit",
00150               JustWarning, message, "Returning Value = 0.");
00151   return 0.;             
00152 }

G4int G4UnitDefinition::operator!= ( const G4UnitDefinition  )  const

Definition at line 119 of file G4UnitsTable.cc.

00120 {
00121   return (this != (G4UnitDefinition *) &right);
00122 }

G4int G4UnitDefinition::operator== ( const G4UnitDefinition  )  const

Definition at line 112 of file G4UnitsTable.cc.

00113 {
00114   return (this == (G4UnitDefinition *) &right);
00115 }

void G4UnitDefinition::PrintDefinition (  ) 

Definition at line 179 of file G4UnitsTable.cc.

References G4cout, and G4endl.

00180 {
00181   G4int nameL = theUnitsTable[CategoryIndex]->GetNameMxLen();
00182   G4int symbL = theUnitsTable[CategoryIndex]->GetSymbMxLen();
00183   G4cout << std::setw(nameL) << Name << " (" 
00184          << std::setw(symbL) << SymbolName << ") = " << Value << G4endl;
00185 }

void G4UnitDefinition::PrintUnitsTable (  )  [static]

Definition at line 332 of file G4UnitsTable.cc.

References G4cout.

Referenced by G4UnitsMessenger::SetNewValue().

00333 {
00334   G4cout << "\n          ----- The Table of Units ----- \n";
00335   for(size_t i=0;i<theUnitsTable.size();i++)
00336   {
00337     theUnitsTable[i]->PrintCategory();
00338   }
00339 }


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:53:37 2013 for Geant4 by  doxygen 1.4.7