66 Init(anElement, dirName);
81 if ( registerCount > 5 )
throw G4HadronicException(__FILE__, __LINE__,
"Channel: Do not know what to do with this material");
82 if ( Z < 1 )
return false;
91 if ( Z <=theElement->
GetZ()-5 )
throw G4HadronicException(__FILE__, __LINE__,
"Channel: Do not know what to do with this material");
94 if(count == 0||registerCount!=0) count +=
115 for (
G4int i1=0; i1<nIsos; i1++)
182 G4int s_tmp = 0,
n=0, m_tmp=0;
188 while (a<anActive->GetVectorLength()&&p<aPassive->GetVectorLength())
197 if( std::abs(std::abs(xp-xa)/xa)<0.001 )
203 anActive = aPassive; a=p;
228 if ( anIsotope != -1 && anIsotope != -2 )
274 if( sum == 0 || random <= running/sum )
299 G4int icounter_max=1024;
300 while(theFinalState==0)
303 if ( icounter > icounter_max ) {
304 G4cout <<
"Loop-counter exceeded the threshold value at " << __LINE__ <<
"th line of " << __FILE__ <<
"." <<
G4endl;
319 return theFinalState;
330 for(
int i=0;i<
niso;i++){
335 G4cout<<
" Cross Section (total for this channel):"<<
G4endl;
338 for(
int i=0;i<np;i++){
static G4ParticleHPManager * GetInstance()
size_t GetNumberOfIsotopes() const
G4double GetEnergy(G4int i) const
G4HadFinalState * ApplyYourself(const G4HadProjectile &projectile, G4int Z, G4int A)
virtual G4HadFinalState * ApplyYourself(const G4HadProjectile &)
G4int GetVectorLength() const
void Init(G4double A, G4double Z, G4String &dirName, G4String &aFSType, G4ParticleDefinition *projectile)
void UpdateData(G4int A, G4int Z, G4int index, G4double abundance, G4ParticleDefinition *projectile)
G4int GetFirstIsotope(G4int Z)
void SetData(G4int i, G4double x, G4double y)
G4ParticleHPFinalState ** theFinalStates
G4double GetXsec(G4double energy)
virtual G4ParticleHPFinalState * New()=0
G4double GetXsec(G4int i)
G4bool Register(G4ParticleHPFinalState *theFS)
G4ParticleHPIsoData * theIsotopeWiseData
void Harmonise(G4ParticleHPVector *&theStore, G4ParticleHPVector *theNew)
void InitializeANucleus(const G4int A, const G4int Z, const G4int M, const G4String &dataDirectory)
G4GLOB_DLL std::ostream G4cout
double A(double temperature)
void Times(G4double factor)
G4double * GetRelativeAbundanceVector() const
G4ParticleHPVector * MakeChannelData()
static const double perCent
void Init(G4Element *theElement, const G4String dirName)
G4StableIsotopes theStableOnes
void SetProjectile(G4ParticleDefinition *projectile)
G4int GetNumberOfIsotopes(G4int Z)
G4double GetThermalEnergy(const G4HadProjectile &aP, const G4Element *anE, G4double aT)
G4ParticleDefinition * theProjectile
G4bool HasAnyData(G4int isoNumber)
G4ParticleHPVector * theChannelData
G4int GetIsotopeNucleonCount(G4int number)
G4double GetFSCrossSection(G4double energy, G4int isoNumber)
T max(const T t1, const T t2)
brief Return the largest of the two arguments
G4double energy(const ThreeVector &p, const G4double m)
G4ParticleHPVector * theBuffer
virtual G4double GetXsec(G4double)
const G4Isotope * GetIsotope(G4int iso) const
G4double GetWeightedXsec(G4double energy, G4int isoNumber)
G4double GetTemperature() const
const G4Material * GetMaterial() const
void SetA_Z(G4double anA, G4double aZ, G4int aM=0)
G4bool Init(G4int A, G4int Z, G4double abun, G4String dirName, G4String aFSType)
G4double GetAbundance(G4int number)
G4bool HasDataInAnyFinalState()
void FillChannelData(G4ParticleHPVector *aBuffer)
const G4String & GetName() const
G4WendtFissionFragmentGenerator *const wendtFissionGenerator
G4ParticleHPReactionWhiteBoard * GetReactionWhiteBoard()
G4double GetXsec(G4double energy)
G4HadFinalState * ApplyYourself(const G4HadProjectile &theTrack, G4int isoNumber=-1)