56 std::ifstream theData(filename, std::ios::in);
59 G4int infoType, dataType;
61 while (theData >> infoType)
68 if(dataType==4) theNeutronAngularDis.
Init(theData);
69 if(dataType==5) thePromptNeutronEnDis.
Init(theData);
70 if(dataType==12) theFinalStatePhotons.
InitMean(theData);
71 if(dataType==14) theFinalStatePhotons.
InitAngular(theData);
72 if(dataType==15) theFinalStatePhotons.
InitEnergies(theData);
75 if(dataType==1) theFinalStateNeutrons.
InitMean(theData);
78 if(dataType==1) theFinalStateNeutrons.
InitDelayed(theData);
79 if(dataType==5) theDelayedNeutronEnDis.
Init(theData);
82 if(dataType==1) theFinalStateNeutrons.
InitPrompt(theData);
85 if(dataType==1) theEnergyRelease.
Init(theData);
88 G4cout <<
"G4NeutronHPFSFissionFS::Init: unknown data type"<<dataType<<
G4endl;
89 throw G4HadronicException(__FILE__, __LINE__,
"G4NeutronHPFSFissionFS::Init: unknown data type");
104 boosted.
Lorentz(theNeutron, theTarget);
109 for(i=0; i<nPrompt+nDelayed; i++)
117 for(i=0; i<nPrompt; i++)
119 tempE = thePromptNeutronEnDis.
Sample(eKinetic, dummy);
122 for(i=nPrompt; i<nPrompt+nDelayed; i++)
130 for(i=0; i<nPrompt+nDelayed; i++)
136 for(i=0; i<nPrompt+nDelayed; i++)
141 aResult->push_back(dp);
143 delete [] theNeutrons;
151 promptNeutronMulti = theFinalStateNeutrons.
GetPrompt(eKinetic);
153 delayedNeutronMulti = theFinalStateNeutrons.
GetDelayed(eKinetic);
155 if(delayedNeutronMulti==0&&promptNeutronMulti==0)
165 Prompt =
G4Poisson(promptNeutronMulti-off);
167 delayed =
G4Poisson(delayedNeutronMulti);
168 all = Prompt+delayed;
178 boosted.
Lorentz(theNeutron, theTarget);
180 temp = theFinalStatePhotons.
GetPhotons(anEnergy);
181 if(temp == 0) {
return 0; }
186 for(i=0; i<temp->size(); i++)
189 temp->operator[](i)->Lorentz(*(temp->operator[](i)), -1.*theTarget);
192 theOne->
SetMomentum(temp->operator[](i)->GetMomentum());
193 result->push_back(theOne);
194 delete temp->operator[](i);
std::vector< G4DynamicParticle * > G4DynamicParticleVector
G4long G4Poisson(G4double mean)
std::vector< G4ReactionProduct * > G4ReactionProductVector
G4DLLIMPORT std::ostream G4cout
void SetDefinition(const G4ParticleDefinition *aParticleDefinition)
void SetMomentum(const G4ThreeVector &momentum)
void Init(std::ifstream &aDataFile)
void SampleAndUpdate(G4ReactionProduct &aNeutron)
void Init(std::ifstream &theData)
G4double Sample(G4double anEnergy, G4int &it)
void SampleNeutronMult(G4int &all, G4int &Prompt, G4int &delayed, G4double energy, G4int off)
G4DynamicParticleVector * ApplyYourself(G4int Prompt, G4int delayed, G4double *decayconst)
void Init(G4double A, G4double Z, G4int M, G4String &dirName, G4String &aFSType)
G4DynamicParticleVector * GetPhotons()
void SetAZMs(G4double anA, G4double aZ, G4int aM, G4NeutronHPDataUsed used)
void Init(std::ifstream &aDataFile)
G4NeutronHPDataUsed GetName(G4int A, G4int Z, G4String base, G4String rest, G4bool &active)
void InitMean(std::ifstream &aDataFile)
G4double GetMean(G4double anEnergy)
G4double GetDelayed(G4double anEnergy)
void InitDelayed(std::ifstream &aDataFile)
void InitPrompt(std::ifstream &aDataFile)
G4double GetPrompt(G4double anEnergy)
G4double GetDecayConstant(G4int i)
G4bool InitMean(std::ifstream &aDataFile)
void InitEnergies(std::ifstream &aDataFile)
G4ReactionProductVector * GetPhotons(G4double anEnergy)
void InitAngular(std::ifstream &aDataFile)
static G4Neutron * Neutron()
G4double GetKineticEnergy() const
void Lorentz(const G4ReactionProduct &p1, const G4ReactionProduct &p2)
void SetKineticEnergy(const G4double en)
void SetDefinition(G4ParticleDefinition *aParticleDefinition)