81G4bool G4NeutronHPInelasticVI::fLock =
false;
97 for (
G4int i=0; i<ZMAXHPI; ++i ) {
98 theChannels[i] =
nullptr;
105 if ( fInitializer ) {
106 for (
G4int i=0; i<ZMAXHPI; ++i ) {
107 delete theChannels[i];
117 if ( Z >= ZMAXHPI || Z < 1 ) {
return finalState; }
120 fManagerHP->OpenReactionWhiteBoard();
121 fManagerHP->GetReactionWhiteBoard()->SetTargZ(Z);
122 fManagerHP->GetReactionWhiteBoard()->SetTargA(
A);
125 if (
nullptr == clist ) {
127 if (
nullptr == clist ) {
return finalState; }
131 if ( Z == elm->GetZasInt() ) {
144 return std::pair<G4double, G4double>(10.0 * perCent, 350.0 * CLHEP::GeV);
149 if ( fInitializer ) {
151 fManagerHP->DumpSetting();
155void G4NeutronHPInelasticVI::InitialiseOnFly()
162void G4NeutronHPInelasticVI::Initialise()
165 G4ParticleDefinition* part =
nullptr;
168 G4int Z = elm->GetZasInt();
169 if ( 0 < Z && Z < ZMAXHPI &&
nullptr == theChannels[Z] ) {
170 if (
nullptr == part ) {
172 dirName = fManagerHP->GetNeutronHPPath() +
"/Inelastic";
174 auto clist =
new G4ParticleHPChannelList(36, part);
175 theChannels[Z] = clist;
176 clist->Init(elm, dirName, part);
177 clist->Register(
new G4ParticleHPNInelasticFS,
"F01/");
178 clist->Register(
new G4ParticleHPNXInelasticFS,
"F02/");
179 clist->Register(
new G4ParticleHP2NDInelasticFS,
"F03/");
180 clist->Register(
new G4ParticleHP2NInelasticFS,
"F04/");
181 clist->Register(
new G4ParticleHP3NInelasticFS,
"F05/");
182 clist->Register(
new G4ParticleHPNAInelasticFS,
"F06/");
183 clist->Register(
new G4ParticleHPN3AInelasticFS,
"F07/");
184 clist->Register(
new G4ParticleHP2NAInelasticFS,
"F08/");
185 clist->Register(
new G4ParticleHP3NAInelasticFS,
"F09/");
186 clist->Register(
new G4ParticleHPNPInelasticFS,
"F10/");
187 clist->Register(
new G4ParticleHPN2AInelasticFS,
"F11/");
188 clist->Register(
new G4ParticleHP2N2AInelasticFS,
"F12/");
189 clist->Register(
new G4ParticleHPNDInelasticFS,
"F13/");
190 clist->Register(
new G4ParticleHPNTInelasticFS,
"F14/");
191 clist->Register(
new G4ParticleHPNHe3InelasticFS,
"F15/");
192 clist->Register(
new G4ParticleHPND2AInelasticFS,
"F16/");
193 clist->Register(
new G4ParticleHPNT2AInelasticFS,
"F17/");
194 clist->Register(
new G4ParticleHP4NInelasticFS,
"F18/");
195 clist->Register(
new G4ParticleHP2NPInelasticFS,
"F19/");
196 clist->Register(
new G4ParticleHP3NPInelasticFS,
"F20/");
197 clist->Register(
new G4ParticleHPN2PInelasticFS,
"F21/");
198 clist->Register(
new G4ParticleHPNPAInelasticFS,
"F22/");
199 clist->Register(
new G4ParticleHPPInelasticFS,
"F23/");
200 clist->Register(
new G4ParticleHPDInelasticFS,
"F24/");
201 clist->Register(
new G4ParticleHPTInelasticFS,
"F25/");
202 clist->Register(
new G4ParticleHPHe3InelasticFS,
"F26/");
203 clist->Register(
new G4ParticleHPAInelasticFS,
"F27/");
204 clist->Register(
new G4ParticleHP2AInelasticFS,
"F28/");
205 clist->Register(
new G4ParticleHP3AInelasticFS,
"F29/");
206 clist->Register(
new G4ParticleHP2PInelasticFS,
"F30/");
207 clist->Register(
new G4ParticleHPPAInelasticFS,
"F31/");
208 clist->Register(
new G4ParticleHPD2AInelasticFS,
"F32/");
209 clist->Register(
new G4ParticleHPT2AInelasticFS,
"F33/");
210 clist->Register(
new G4ParticleHPPDInelasticFS,
"F34/");
211 clist->Register(
new G4ParticleHPPTInelasticFS,
"F35/");
212 clist->Register(
new G4ParticleHPDAInelasticFS,
"F36/");
214 if (fManagerHP->GetVerboseLevel() > 1) {
215 G4cout <<
"G4NeutronHP::InelasticVI for "
217 << elm->GetName() <<
G4endl;
226 outFile <<
"High Precision (HP) model for inelastic reaction of "
227 <<
" neutrons below 20MeV\n";
G4TemplateAutoLock< G4Mutex > G4AutoLock
#define G4MUTEX_INITIALIZER
G4GLOB_DLL std::ostream G4cout
static const G4ElementTable * GetElementTable()
G4HadronicInteraction(const G4String &modelName="HadronicModel")
void SetMaxEnergy(const G4double anEnergy)
~G4NeutronHPInelasticVI() override
const std::pair< G4double, G4double > GetFatalEnergyCheckLevels() const override
void BuildPhysicsTable(const G4ParticleDefinition &) override
void ModelDescription(std::ostream &outFile) const override
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, G4Nucleus &aTargetNucleus) override
static G4Neutron * Neutron()
const G4String & GetParticleName() const
G4HadFinalState * ApplyYourself(const G4Element *theElement, const G4HadProjectile &aTrack)
static G4ParticleHPManager * GetInstance()
void CloseReactionWhiteBoard()