62 std::istringstream theData(std::ios::in);
65 G4int infoType, dataType;
67 while (theData >> infoType)
73 if (dataType == 4) theNeutronAngularDis.
Init(theData);
74 if (dataType == 5) thePromptNeutronEnDis.
Init(theData);
75 if (dataType == 12) theFinalStatePhotons.
InitMean(theData);
76 if (dataType == 14) theFinalStatePhotons.
InitAngular(theData);
77 if (dataType == 15) theFinalStatePhotons.
InitEnergies(theData);
80 if (dataType == 1) theFinalStateNeutrons.
InitMean(theData);
83 if (dataType == 1) theFinalStateNeutrons.
InitDelayed(theData);
84 if (dataType == 5) theDelayedNeutronEnDis.
Init(theData);
87 if (dataType == 1) theFinalStateNeutrons.
InitPrompt(theData);
90 if (dataType == 1) theEnergyRelease.
Init(theData);
93 G4cout <<
"G4ParticleHPFSFissionFS::Init: unknown data type" << dataType <<
G4endl;
95 "G4ParticleHPFSFissionFS::Init: unknown data type");
107 boosted.
Lorentz(*(fCache.
Get().theNeutronRP), *(fCache.
Get().theTarget));
111 std::vector<G4ReactionProduct> theNeutrons;
112 for (i = 0; i < nPrompt + nDelayed; ++i) {
113 theNeutrons.emplace_back();
120 for (i = 0; i < nPrompt; ++i) {
122 thePromptNeutronEnDis.
Sample(eKinetic, dummy);
123 theNeutrons[i].SetKineticEnergy(tempE);
125 for (i = nPrompt; i < nPrompt + nDelayed; ++i) {
126 theNeutrons[i].SetKineticEnergy(theDelayedNeutronEnDis.
Sample(eKinetic, it));
127 if (it == 0) theNeutrons[i].SetKineticEnergy(thePromptNeutronEnDis.
Sample(eKinetic, dummy));
132 for (i = 0; i < nPrompt + nDelayed; ++i) {
138 for (i = 0; i < nPrompt + nDelayed; ++i) {
141 dp->SetMomentum(theNeutrons[i].GetMomentum());
142 aResult->push_back(dp);
151 promptNeutronMulti = theFinalStateNeutrons.
GetPrompt(eKinetic);
153 delayedNeutronMulti = theFinalStateNeutrons.
GetDelayed(eKinetic);
155 if (delayedNeutronMulti == 0 && promptNeutronMulti == 0) {
166 all = Prompt + delayed;
177 boosted.
Lorentz(*(fCache.
Get().theNeutronRP), *(fCache.
Get().theTarget));
179 temp = theFinalStatePhotons.
GetPhotons(anEnergy);
180 if (temp ==
nullptr) {
187 for (i = 0; i < temp->size(); ++i) {
189 temp->operator[](i)->Lorentz(*(temp->operator[](i)), -1. * (*(fCache.
Get().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
G4GLOB_DLL std::ostream G4cout
void SetDefinition(const G4ParticleDefinition *aParticleDefinition)
static G4Neutron * Neutron()
void Init(std::istream &aDataFile)
void SampleAndUpdate(G4ReactionProduct &anIncidentParticle)
void Init(std::istream &theData)
G4double Sample(G4double anEnergy, G4int &it)
void Init(G4double A, G4double Z, G4int M, G4String &dirName, G4String &aFSType, G4ParticleDefinition *) override
G4DynamicParticleVector * ApplyYourself(G4int Prompt, G4int delayed, G4double *decayconst)
void SampleNeutronMult(G4int &all, G4int &Prompt, G4int &delayed, G4double energy, G4int off)
G4DynamicParticleVector * GetPhotons()
void SetAZMs(G4ParticleHPDataUsed used)
void Init(std::istream &aDataFile)
void GetDataStream(const G4String &, std::istringstream &iss)
static G4ParticleHPManager * GetInstance()
G4ParticleHPDataUsed GetName(G4int A, G4int Z, const G4String &base, const G4String &rest, G4bool &active)
G4double GetMean(G4double anEnergy)
G4double GetDecayConstant(G4int i)
void InitMean(std::istream &aDataFile)
void InitDelayed(std::istream &aDataFile)
G4double GetPrompt(G4double anEnergy)
void InitPrompt(std::istream &aDataFile)
G4double GetDelayed(G4double anEnergy)
void InitEnergies(std::istream &aDataFile)
G4ReactionProductVector * GetPhotons(G4double anEnergy)
void InitAngular(std::istream &aDataFile)
G4bool InitMean(std::istream &aDataFile)
G4double GetKineticEnergy() const
void Lorentz(const G4ReactionProduct &p1, const G4ReactionProduct &p2)