68 G4ThreadLocal std::vector<G4HadronInelasticProcess*>* G4IonINCLXXPhysics::p_list = 0;
69 G4ThreadLocal std::vector<G4HadronicInteraction*>* G4IonINCLXXPhysics::model_list = 0;
97 emax_alpha = 3.0 *
GeV;
102 if(verbose > 1)
G4cout <<
"### G4IonINCLXXPhysics" <<
G4endl;
113 emax_he3 = 3.0 *
GeV;
114 emax_alpha = 3.0 *
GeV;
119 if(verbose > 1)
G4cout <<
"### G4IonINCLXXPhysics" <<
G4endl;
128 delete theFTFPBuilderDeuteron; theFTFPBuilderDeuteron=0;
129 delete theFTFPBuilderTriton; theFTFPBuilderTriton=0;
130 delete theFTFPBuilderHe3; theFTFPBuilderHe3=0;
131 delete theFTFPBuilderAlpha; theFTFPBuilderAlpha=0;
132 delete theFTFPBuilderIons; theFTFPBuilderIons=0;
133 delete theGGNuclNuclXS; theGGNuclNuclXS=0;
134 delete theNuclNuclData; theGGNuclNuclXS=0;
138 for(i=0; i<
n; i++) {
delete (*p_list)[i];}
139 delete p_list; p_list = 0;
142 G4int n = model_list->size();
143 for(i=0; i<
n; i++) {
delete (*model_list)[i];}
144 delete model_list; model_list = 0;
151 if(wasActivated)
return;
159 if ( model_list == 0 ) model_list =
new std::vector<G4HadronicInteraction*>;
160 model_list->push_back(theINCLXXDeuteron);
161 model_list->push_back(theINCLXXTriton);
162 model_list->push_back(theINCLXXHe3);
163 model_list->push_back(theINCLXXAlpha);
164 model_list->push_back(theINCLXXIons);
171 theFTFPBuilderDeuteron =
new G4FTFBuilder(
"FTFP",thePreCompound);
172 theFTFPDeuteron = theFTFPBuilderDeuteron->
GetModel();
173 theFTFPBuilderTriton =
new G4FTFBuilder(
"FTFP",thePreCompound);
174 theFTFPTriton = theFTFPBuilderTriton->
GetModel();
175 theFTFPBuilderHe3 =
new G4FTFBuilder(
"FTFP",thePreCompound);
176 theFTFPHe3 = theFTFPBuilderHe3->
GetModel();
177 theFTFPBuilderAlpha =
new G4FTFBuilder(
"FTFP",thePreCompound);
178 theFTFPAlpha = theFTFPBuilderAlpha->
GetModel();
179 theFTFPBuilderIons =
new G4FTFBuilder(
"FTFP",thePreCompound);
180 theFTFPIons = theFTFPBuilderIons->
GetModel();
181 model_list->push_back(theFTFPDeuteron);
182 model_list->push_back(theFTFPTriton);
183 model_list->push_back(theFTFPHe3);
184 model_list->push_back(theFTFPAlpha);
185 model_list->push_back(theFTFPIons);
190 AddProcess(
"tInelastic",
G4Triton::Triton(), theINCLXXTriton, theFTFPTriton, emax_t);
191 AddProcess(
"He3Inelastic",
G4He3::He3(), theINCLXXHe3, theFTFPHe3, emax_he3);
192 AddProcess(
"alphaInelastic",
G4Alpha::Alpha(), theINCLXXAlpha, theFTFPAlpha, emax_alpha);
196 void G4IonINCLXXPhysics::AddProcess(
const G4String&
name,
203 if ( p_list == 0 ) p_list =
new std::vector<G4HadronInelasticProcess*>;
204 p_list->push_back(hadi);
219 <<
" INCLXX/G4DeexcitationHandler for E(MeV)= " << emin <<
" - " << inclxxEnergyUpperLimit;
221 G4cout <<
" FTFP for E(MeV)= " << inclxxEnergyUpperLimit-
MeV <<
" - " << emaxFTFP;
G4IonINCLXXPhysics(G4int ver=0)
G4int AddDiscreteProcess(G4VProcess *aProcess, G4int ord=ordDefault)
const G4String & GetParticleName() const
INCL++ intra-nuclear cascade.
G4HadronicInteraction * GetModel()
virtual ~G4IonINCLXXPhysics()
static void ConstructParticle()
void RegisterMe(G4HadronicInteraction *a)
static constexpr double TeV
void SetMinEnergy(G4double anEnergy)
void AddDataSet(G4VCrossSectionDataSet *aDataSet)
G4GLOB_DLL std::ostream G4cout
static G4Triton * Triton()
const G4String & GetProcessName() const
static G4Deuteron * Deuteron()
G4HadronicInteraction * FindModel(const G4String &name)
virtual void ConstructProcess()
static G4GenericIon * GenericIon()
G4ProcessManager * GetProcessManager() const
static G4HadronicInteractionRegistry * Instance()
static constexpr double GeV
void SetMaxEnergy(const G4double anEnergy)
static constexpr double MeV
void SetPhysicsType(G4int)
virtual void ConstructParticle()
#define G4_DECLARE_PHYSCONSTR_FACTORY(physics_constructor)