52 return theIsotopeWiseData[isoNumber].
GetXsec(energy);
57 return theFinalStates[isoNumber]->
GetXsec(energy);
64 Init(anElement, dirName);
70 theElement = anElement;
79 if ( registerCount > 5 )
throw G4HadronicException(__FILE__, __LINE__,
"Channel: Do not know what to do with this material");
80 if ( Z < 1 )
return false;
89 if ( Z <=theElement->
GetZ()-5 )
throw G4HadronicException(__FILE__, __LINE__,
"Channel: Do not know what to do with this material");
92 if(count == 0||registerCount!=0) count +=
95 delete [] theIsotopeWiseData;
100 delete [] theFinalStates;
102 delete theChannelData;
104 for(
G4int i=0; i<niso; i++)
106 theFinalStates[i] = theFS->
New();
112 for (
G4int i1=0; i1<nIsos; i1++)
120 theFinalStates[i1]->
SetA_Z(A, Z, M);
135 theFinalStates[i1]->
SetA_Z(A, Z);
147 if(wendtFissionGenerator)
152 theFinalStates[
index]->
Init(A, Z, M, theDir, theFSType);
153 if(!theFinalStates[index]->
HasAnyData())
return;
157 if(theFinalStates[index]->HasXsec())
160 theBuffer->
Times(abundance/100.);
167 active[
index] = theIsotopeWiseData[
index].
Init(A, Z, M, abundance, theDir, tString);
170 if(theBuffer != 0)
Harmonise(theChannelData, theBuffer);
175 G4int s_tmp = 0,
n=0, m_tmp=0;
181 while (a<anActive->GetVectorLength()&&
p<aPassive->GetVectorLength())
190 if( std::abs(std::abs(xp-xa)/xa)<0.001 )
196 anActive = aPassive; a=
p;
221 if ( anIsotope != -1 && anIsotope != -2 )
234 for (
G4int i=0; i<niso; i++)
239 theFinalStates[i]->
GetN(),
240 theFinalStates[i]->
GetZ(),
263 for (
G4int ix=0; ix<niso; ix++)
267 if( sum == 0 || random <= running/sum )
282 if(wendtFissionGenerator&&anIsotope==-2)
284 theFinalState = wendtFissionGenerator->
ApplyYourself(theTrack, Z, A);
290 while(theFinalState==0)
304 return theFinalState;
size_t GetNumberOfIsotopes() const
G4double GetEnergy(G4int i) const
G4HadFinalState * ApplyYourself(const G4HadProjectile &projectile, G4int Z, G4int A)
void Harmonise(G4NeutronHPVector *&theStore, G4NeutronHPVector *theNew)
G4int GetVectorLength() const
virtual G4NeutronHPFinalState * New()=0
G4bool Register(G4NeutronHPFinalState *theFS)
G4double GetWeightedXsec(G4double energy, G4int isoNumber)
G4bool HasDataInAnyFinalState()
void Init(G4Element *theElement, const G4String dirName)
static G4NeutronHPManager * GetInstance()
G4int GetFirstIsotope(G4int Z)
G4NeutronHPReactionWhiteBoard * GetReactionWhiteBoard()
G4double G4NeutronHPJENDLHEData::G4double result
void Times(G4double factor)
void SetData(G4int i, G4double x, G4double y)
G4bool Init(G4int A, G4int Z, G4double abun, G4String dirName, G4String aFSType)
G4HadFinalState * ApplyYourself(const G4HadProjectile &theTrack, G4int isoNumber=-1)
void InitializeANucleus(const G4int A, const G4int Z, const G4int M, const G4String &dataDirectory)
void UpdateData(G4int A, G4int Z, G4int index, G4double abundance)
G4double * GetRelativeAbundanceVector() const
G4double GetXsec(G4double energy)
void SetA_Z(G4double anA, G4double aZ, G4int aM=0)
G4double GetXsec(G4double energy)
G4int GetNumberOfIsotopes(G4int Z)
G4double GetFSCrossSection(G4double energy, G4int isoNumber)
G4int GetIsotopeNucleonCount(G4int number)
void FillChannelData(G4NeutronHPVector *aBuffer)
G4double GetXsec(G4int i)
T max(const T t1, const T t2)
brief Return the largest of the two arguments
G4double GetThermalEnergy(const G4HadProjectile &aP, const G4Element *anE, G4double aT)
virtual G4HadFinalState * ApplyYourself(const G4HadProjectile &)
void Init(G4double A, G4double Z, G4String &dirName, G4String &aFSType)
G4bool HasAnyData(G4int isoNumber)
const G4Isotope * GetIsotope(G4int iso) const
G4double GetTemperature() const
const G4Material * GetMaterial() const
G4double GetAbundance(G4int number)
virtual G4double GetXsec(G4double)
G4NeutronHPVector * MakeChannelData()