Geant4 11.4.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4HadronInelasticQBBC Class Reference

#include <G4HadronInelasticQBBC.hh>

Inheritance diagram for G4HadronInelasticQBBC:

Public Member Functions

 G4HadronInelasticQBBC (G4int ver=1)
 G4HadronInelasticQBBC (const G4String &name, G4int ver=1, G4bool ftf=false, G4bool bert=false, G4bool chips=false, G4bool hp=false, G4bool glauber=false)
virtual ~G4HadronInelasticQBBC ()=default
void ConstructProcess () override
 G4HadronInelasticQBBC (G4HadronInelasticQBBC &)=delete
G4HadronInelasticQBBCoperator= (const G4HadronInelasticQBBC &right)=delete
Public Member Functions inherited from G4VHadronPhysics
 G4VHadronPhysics (const G4String &name="hInelastic", G4int verbose=0)
virtual ~G4VHadronPhysics ()
void ConstructParticle () override
G4HadronicInteractionBuildModel (G4VHadronModelBuilder *, G4double emin, G4double emax)
G4HadronicInteractionNewModel (G4HadronicInteraction *, G4double emin, G4double emax)
 G4VHadronPhysics (G4VHadronPhysics &)=delete
G4VHadronPhysicsoperator= (const G4VHadronPhysics &right)=delete
Public Member Functions inherited from G4VPhysicsConstructor
 G4VPhysicsConstructor (const G4String &="")
 G4VPhysicsConstructor (const G4String &name, G4int physics_type)
virtual ~G4VPhysicsConstructor ()
void SetPhysicsName (const G4String &="")
const G4StringGetPhysicsName () const
void SetPhysicsType (G4int)
G4int GetPhysicsType () const
G4int GetInstanceID () const
virtual void TerminateWorker ()
void SetVerboseLevel (G4int value)
G4int GetVerboseLevel () const

Additional Inherited Members

Static Public Member Functions inherited from G4VPhysicsConstructor
static const G4VPCManagerGetSubInstanceManager ()
Protected Types inherited from G4VPhysicsConstructor
using PhysicsBuilder_V = G4VPCData::PhysicsBuilders_V
Protected Member Functions inherited from G4VPhysicsConstructor
G4bool RegisterProcess (G4VProcess *process, G4ParticleDefinition *particle)
G4ParticleTable::G4PTblDicIteratorGetParticleIterator () const
PhysicsBuilder_V GetBuilders () const
void AddBuilder (G4PhysicsBuilderInterface *bld)
Protected Attributes inherited from G4VPhysicsConstructor
G4int verboseLevel = 0
G4String namePhysics = ""
G4int typePhysics = 0
G4ParticleTabletheParticleTable = nullptr
G4int g4vpcInstanceID = 0
Static Protected Attributes inherited from G4VPhysicsConstructor
static G4RUN_DLL G4VPCManager subInstanceManager

Detailed Description

Definition at line 44 of file G4HadronInelasticQBBC.hh.

Constructor & Destructor Documentation

◆ G4HadronInelasticQBBC() [1/3]

G4HadronInelasticQBBC::G4HadronInelasticQBBC ( G4int ver = 1)

Definition at line 83 of file G4HadronInelasticQBBC.cc.

84 : G4VHadronPhysics("hInelasticQBBC")
85{
87 auto param = G4HadronicParameters::Instance();
88 param->SetEnableBCParticles(true);
89 param->SetEnableNeutronGeneralProcess(false);
90 param->SetUseRFilesForXS(true);
91 param->SetVerboseLevel(ver);
92}
@ bHadronInelastic
static G4HadronicParameters * Instance()
G4VHadronPhysics(const G4String &name="hInelastic", G4int verbose=0)

Referenced by G4HadronInelasticQBBC(), G4HadronInelasticQBBC(), and operator=().

◆ G4HadronInelasticQBBC() [2/3]

G4HadronInelasticQBBC::G4HadronInelasticQBBC ( const G4String & name,
G4int ver = 1,
G4bool ftf = false,
G4bool bert = false,
G4bool chips = false,
G4bool hp = false,
G4bool glauber = false )

Definition at line 94 of file G4HadronInelasticQBBC.cc.

96{}

◆ ~G4HadronInelasticQBBC()

virtual G4HadronInelasticQBBC::~G4HadronInelasticQBBC ( )
virtualdefault

◆ G4HadronInelasticQBBC() [3/3]

G4HadronInelasticQBBC::G4HadronInelasticQBBC ( G4HadronInelasticQBBC & )
delete

Member Function Documentation

◆ ConstructProcess()

void G4HadronInelasticQBBC::ConstructProcess ( )
overridevirtual

Implements G4VPhysicsConstructor.

Definition at line 98 of file G4HadronInelasticQBBC.cc.

99{
100 G4HadronicParameters* param = G4HadronicParameters::Instance();
101 G4bool useFactorXS = param->ApplyFactorXS();
102 G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
103
104 // configure models
105 const G4double eminFtf = param->GetMinEnergyTransitionFTF_Cascade();
106 const G4double eminBert = 1.0*CLHEP::GeV;
107 const G4double emaxBic = 1.5*CLHEP::GeV;
108 const G4double emaxBert = param->GetMaxEnergyTransitionFTF_Cascade();
109 const G4double emaxBertPions = 12.*CLHEP::GeV;
110 const G4double emax = param->GetMaxEnergy();
111
112 if(G4Threading::IsMasterThread() && param->GetVerboseLevel() > 0) {
113 G4cout << "### HadronInelasticQBBC Construct Process:\n"
114 << " Emin(FTFP)= " << eminFtf/CLHEP::GeV
115 << " GeV; Emax(FTFP)= " << emax/CLHEP::GeV << " GeV\n"
116 << " Emin(BERT)= " << eminBert/CLHEP::GeV
117 << " GeV; Emax(BERT)= " << emaxBert/CLHEP::GeV
118 << " GeV; Emax(BERTpions)= " << emaxBertPions/CLHEP::GeV
119 << " GeV;\n" << " Emin(BIC) = 0 GeV; Emax(BIC)= "
120 << emaxBic/CLHEP::GeV << " GeV." << G4endl;
121 }
122
123 // PreCompound and Evaporation models are instantiated here
124 G4PreCompoundModel* thePreCompound = nullptr;
125 G4HadronicInteraction* p =
127 thePreCompound = static_cast<G4PreCompoundModel*>(p);
128 if(!thePreCompound) { thePreCompound = new G4PreCompoundModel(); }
129
130 auto theFTFP = new G4TheoFSGenerator("FTFP");
131 auto theStringModel = new G4FTFModel();
132 theStringModel->SetFragmentationModel(new G4ExcitedStringDecay());
133 theFTFP->SetHighEnergyGenerator( theStringModel );
134 theFTFP->SetTransport( new G4GeneratorPrecompoundInterface() );
135 theFTFP->SetMinEnergy( eminFtf );
136 theFTFP->SetMaxEnergy( emax );
137
138 auto theBERT = new G4CascadeInterface();
139 theBERT->SetMinEnergy( eminBert );
140 theBERT->SetMaxEnergy( emaxBert );
141 theBERT->usePreCompoundDeexcitation();
142
143 auto theBERT1 = new G4CascadeInterface();
144 theBERT1->SetMinEnergy( eminBert );
145 theBERT1->SetMaxEnergy( emaxBertPions );
146 theBERT1->usePreCompoundDeexcitation();
147
148 auto theBIC = new G4BinaryCascade(thePreCompound);
149 theBIC->SetMaxEnergy( emaxBic );
150
151 // p
152 G4ParticleDefinition* particle = G4Proton::Proton();
153 G4HadronicProcess* hp =
154 new G4HadronInelasticProcess( particle->GetParticleName()+"Inelastic", particle );
155 hp->AddDataSet( new G4BGGNucleonInelasticXS(particle) );
156 hp->RegisterMe(theFTFP);
157 hp->RegisterMe(theBERT);
158 hp->RegisterMe(theBIC);
159 ph->RegisterProcess(hp, particle);
160 if( useFactorXS ) hp->MultiplyCrossSectionBy( param->XSFactorNucleonInelastic() );
161
162 // n
163 particle = G4Neutron::Neutron();
164 G4HadronicProcess* ni =
165 new G4HadronInelasticProcess( "neutronInelastic", particle );
166 ni->RegisterMe(theFTFP);
167 ni->RegisterMe(theBERT);
168 ni->RegisterMe(theBIC);
170
171 // pi+
172 particle = G4PionPlus::PionPlus();
173 hp = new G4HadronInelasticProcess( particle->GetParticleName()+"Inelastic", particle );
174 hp->AddDataSet(new G4BGGPionInelasticXS(particle));
175 hp->RegisterMe(theFTFP);
176 hp->RegisterMe(theBERT1);
177 hp->RegisterMe(theBIC);
178 ph->RegisterProcess(hp, particle);
179 if( useFactorXS ) hp->MultiplyCrossSectionBy( param->XSFactorPionInelastic() );
180
181 // pi-
182 particle = G4PionMinus::PionMinus();
183 hp = new G4HadronInelasticProcess( particle->GetParticleName()+"Inelastic", particle );
184 hp->AddDataSet(new G4BGGPionInelasticXS(particle));
185 hp->RegisterMe(theFTFP);
186 hp->RegisterMe(theBERT1);
187 hp->RegisterMe(theBIC);
188 ph->RegisterProcess(hp, particle);
189 if( useFactorXS ) hp->MultiplyCrossSectionBy( param->XSFactorPionInelastic() );
190
191 // kaons
193
194 // high energy particles
195 if( emax > param->EnergyThresholdForHeavyHadrons() ) {
196
197 // pbar, nbar, anti light ions
199
200 // hyperons
202
203 // b-, c- baryons and mesons
204 if( param->EnableBCParticles() ) {
206 }
207 }
208}
double G4double
Definition G4Types.hh:83
bool G4bool
Definition G4Types.hh:86
#define G4endl
Definition G4ios.hh:67
G4GLOB_DLL std::ostream G4cout
static void BuildNeutronInelasticAndCapture(G4HadronicProcess *)
static void BuildBCHadronsFTFP_BERT()
static void BuildHyperonsFTFP_BERT()
static void BuildKaonsFTFP_BERT()
static void BuildAntiLightIonsFTFP()
G4HadronicInteraction * FindModel(const G4String &name)
static G4HadronicInteractionRegistry * Instance()
G4double GetMinEnergyTransitionFTF_Cascade() const
G4double GetMaxEnergyTransitionFTF_Cascade() const
G4double EnergyThresholdForHeavyHadrons() const
G4double XSFactorPionInelastic() const
G4double XSFactorNucleonInelastic() const
void AddDataSet(G4VCrossSectionDataSet *aDataSet)
void MultiplyCrossSectionBy(G4double factor)
void RegisterMe(G4HadronicInteraction *a)
static G4Neutron * Neutron()
Definition G4Neutron.cc:101
const G4String & GetParticleName() const
G4bool RegisterProcess(G4VProcess *process, G4ParticleDefinition *particle)
static G4PhysicsListHelper * GetPhysicsListHelper()
static G4PionMinus * PionMinus()
static G4PionPlus * PionPlus()
Definition G4PionPlus.cc:93
static G4Proton * Proton()
Definition G4Proton.cc:90
G4bool IsMasterThread()

◆ operator=()

G4HadronInelasticQBBC & G4HadronInelasticQBBC::operator= ( const G4HadronInelasticQBBC & right)
delete

The documentation for this class was generated from the following files: