72 G4int ionZ = pid/10000;
73 G4int ionA = (pid-ionZ*10000)/10;
82 fProperty->SetAtomicNumber(ionZ);
83 fProperty->SetAtomicMass(ionA);
84 fProperty->SetIsomerLevel(lvl);
85 fProperty->SetEnergy(ionE);
86 fProperty->SetiSpin(ionJ);
87 fProperty->SetLifeTime(ionLife);
88 fProperty->SetDecayTable(0);
89 fProperty->SetMagneticMoment(ionMu);
100 delete (*fIsotopeList)[i];
132 G4int ptr = (low+high)/2;
135 G4int zptr = (*fIsotopeList)[ptr]->GetAtomicNumber();
136 while ( high-low > 1){
138 while ((zptr == Z)&&(ptr>0)) {
140 zptr = (*fIsotopeList)[ptr]->GetAtomicNumber();
142 if (ptr!=0) ptr += 1;
144 }
else if (zptr >Z) {
151 zptr = (*fIsotopeList)[ptr]->GetAtomicNumber();
153 if ( Z == (*
fIsotopeList)[low]->GetAtomicNumber()) ptr =low;
154 else if ( Z != zptr )
return fProperty;
160 aptr = (*fIsotopeList)[ptr]->GetAtomicMass();
161 if (Z != (*
fIsotopeList)[ptr]->GetAtomicNumber())
break;
163 if ( aptr != A)
return fProperty;
169 ptrE = (*fIsotopeList)[ptr]->GetEnergy();
170 if (A != (*
fIsotopeList)[ptr]->GetAtomicMass())
return fProperty;
175 fProperty = (*fIsotopeList)[ptr];
190 G4int ptr = (low+high)/2;
194 const G4int PID = 10000*Z +10*A + lvl;
198 while ( high-low > 1){
201 }
else if (
id >PID) {
214 fProperty = (*fIsotopeList)[ptr];
220 fProperty = (*fIsotopeList)[low];
225 if (
id == PID) fProperty = (*fIsotopeList)[high];
static const double joule
virtual G4IsotopeProperty * GetIsotope(G4int Z, G4int A, G4double E)
G4double GetEnergy() const
G4IsomerTable & operator=(const G4IsomerTable &right)
static const G4double A[nN]
G4IsotopeList * fIsotopeList
static G4ParticleTable * GetParticleTable()
static const G4double levelTolerance
G4int GetVerboseLevel() const
virtual G4IsotopeProperty * GetIsotopeByIsoLvl(G4int Z, G4int A, G4int lvl=0)
static const G4double isomerTable[nEntries][5]
static const double tesla
void SetVerboseLevel(G4int level)
G4int GetAtomicMass() const
std::vector< G4IsotopeProperty * > G4IsotopeList