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

#include <G4HadronInelasticQBBC_ABLA.hh>

Inheritance diagram for G4HadronInelasticQBBC_ABLA:

Public Member Functions

 G4HadronInelasticQBBC_ABLA (G4int ver=1)
virtual ~G4HadronInelasticQBBC_ABLA ()=default
void ConstructProcess () override
 G4HadronInelasticQBBC_ABLA (G4HadronInelasticQBBC_ABLA &)=delete
G4HadronInelasticQBBC_ABLAoperator= (const G4HadronInelasticQBBC_ABLA &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 54 of file G4HadronInelasticQBBC_ABLA.hh.

Constructor & Destructor Documentation

◆ G4HadronInelasticQBBC_ABLA() [1/2]

G4HadronInelasticQBBC_ABLA::G4HadronInelasticQBBC_ABLA ( G4int ver = 1)

Definition at line 79 of file G4HadronInelasticQBBC_ABLA.cc.

80 : G4VHadronPhysics( "hInelasticQBBC_ABLA" )
81{
83 auto param = G4HadronicParameters::Instance();
84 param->SetEnableBCParticles( true );
85 param->SetEnableNeutronGeneralProcess( true );
86 param->SetVerboseLevel( ver );
87}
@ bHadronInelastic
static G4HadronicParameters * Instance()
G4VHadronPhysics(const G4String &name="hInelastic", G4int verbose=0)

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

◆ ~G4HadronInelasticQBBC_ABLA()

virtual G4HadronInelasticQBBC_ABLA::~G4HadronInelasticQBBC_ABLA ( )
virtualdefault

◆ G4HadronInelasticQBBC_ABLA() [2/2]

G4HadronInelasticQBBC_ABLA::G4HadronInelasticQBBC_ABLA ( G4HadronInelasticQBBC_ABLA & )
delete

Member Function Documentation

◆ ConstructProcess()

void G4HadronInelasticQBBC_ABLA::ConstructProcess ( )
overridevirtual

Implements G4VPhysicsConstructor.

Definition at line 90 of file G4HadronInelasticQBBC_ABLA.cc.

90 {
91 G4HadronicParameters* param = G4HadronicParameters::Instance();
92 G4bool useFactorXS = param->ApplyFactorXS();
93 G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
94
95 // configure models
96 const G4double eminFtf = param->GetMinEnergyTransitionFTF_Cascade();
97 const G4double eminBert = 1.0*CLHEP::GeV;
98 const G4double emaxBic = 1.5*CLHEP::GeV;
99 const G4double emaxBert = param->GetMaxEnergyTransitionFTF_Cascade();
100 const G4double emaxBertPions = 12.0*CLHEP::GeV;
101 const G4double emax = param->GetMaxEnergy();
102 if ( G4Threading::IsMasterThread() && param->GetVerboseLevel() > 0 ) {
103 G4cout << "### HadronInelasticQBBC_ABLA Construct Process:\n"
104 << " Emin(FTFP)= " << eminFtf/CLHEP::GeV
105 << " GeV; Emax(FTFP)= " << emax/CLHEP::GeV << " GeV\n"
106 << " Emin(BERT)= " << eminBert/CLHEP::GeV
107 << " GeV; Emax(BERT)= " << emaxBert/CLHEP::GeV
108 << " GeV; Emax(BERTpions)= " << emaxBertPions/CLHEP::GeV
109 << " GeV;\n" << " Emin(BIC) = 0 GeV; Emax(BIC)= "
110 << emaxBic/CLHEP::GeV << " GeV." << G4endl;
111 }
112
113 G4PreCompoundModel* thePreCompound = nullptr;
114 G4HadronicInteraction* p = G4HadronicInteractionRegistry::Instance()->FindModel( "PRECO" );
115 thePreCompound = static_cast< G4PreCompoundModel* >( p );
116 if ( thePreCompound == nullptr ) thePreCompound = new G4PreCompoundModel;
117
118 G4AblaInterface* theAblaInterface = nullptr;
119 G4HadronicInteraction* pAbla = G4HadronicInteractionRegistry::Instance()->FindModel( "ABLAXX" );
120 theAblaInterface = static_cast< G4AblaInterface* >( pAbla );
121 if ( theAblaInterface == nullptr ) theAblaInterface = new G4AblaInterface;
122
123 auto theFTFP = new G4TheoFSGenerator( "FTFP" );
124 auto theStringModel = new G4FTFModel;
125 theStringModel->SetFragmentationModel( new G4ExcitedStringDecay );
126 theFTFP->SetHighEnergyGenerator( theStringModel );
127 // theFTFP->SetTransport( new G4GeneratorPrecompoundInterface );
128 theFTFP->SetTransport( new G4GeneratorPrecompoundInterface( theAblaInterface ) );
129 theFTFP->SetMinEnergy( eminFtf );
130 theFTFP->SetMaxEnergy( emax );
131
132 auto theBERT = new G4CascadeInterface;
133 theBERT->SetMinEnergy( eminBert );
134 theBERT->SetMaxEnergy( emaxBert );
135 // theBERT->usePreCompoundDeexcitation();
136 theBERT->useAblaDeexcitation();
137
138 auto theBERT1 = new G4CascadeInterface;
139 theBERT1->SetMinEnergy( eminBert );
140 theBERT1->SetMaxEnergy( emaxBertPions );
141 // theBERT1->usePreCompoundDeexcitation();
142 theBERT1->useAblaDeexcitation();
143
144 // auto theBIC = new G4BinaryCascade( thePreCompound );
145 auto theBIC = new G4BinaryCascade( theAblaInterface );
146 theBIC->SetMaxEnergy( emaxBic );
147
148 // p
149 G4ParticleDefinition* particle = G4Proton::Proton();
150 G4HadronicProcess* hp =
151 new G4HadronInelasticProcess( particle->GetParticleName() + "Inelastic", particle );
152 hp->AddDataSet( new G4ParticleInelasticXS( particle ) );
153 hp->RegisterMe( theFTFP );
154 hp->RegisterMe( theBERT );
155 hp->RegisterMe( theBIC );
156 ph->RegisterProcess( hp, particle );
157 if ( useFactorXS ) hp->MultiplyCrossSectionBy( param->XSFactorNucleonInelastic() );
158
159 // n
160 particle = G4Neutron::Neutron();
161 G4HadronicProcess* ni = new G4HadronInelasticProcess( "neutronInelastic", particle );
162 ni->RegisterMe( theFTFP );
163 ni->RegisterMe( theBERT );
164 ni->RegisterMe( theBIC );
166
167 // pi+
168 particle = G4PionPlus::PionPlus();
169 hp = new G4HadronInelasticProcess( particle->GetParticleName() + "Inelastic", particle );
170 hp->AddDataSet( new G4BGGPionInelasticXS( particle ) );
171 hp->RegisterMe( theFTFP );
172 hp->RegisterMe( theBERT1 );
173 hp->RegisterMe( theBIC );
174 ph->RegisterProcess( hp, particle );
175 if ( useFactorXS ) hp->MultiplyCrossSectionBy( param->XSFactorPionInelastic() );
176
177 // pi-
178 particle = G4PionMinus::PionMinus();
179 hp = new G4HadronInelasticProcess( particle->GetParticleName() + "Inelastic", particle );
180 hp->AddDataSet( new G4BGGPionInelasticXS( particle ) );
181 hp->RegisterMe( theFTFP );
182 hp->RegisterMe( theBERT1 );
183 hp->RegisterMe( theBIC );
184 ph->RegisterProcess( hp, particle );
185 if ( useFactorXS ) hp->MultiplyCrossSectionBy( param->XSFactorPionInelastic() );
186
187 // kaons
189
190 // high energy particles
191 if ( emax > param->EnergyThresholdForHeavyHadrons() ) {
192
193 // pbar, nbar, anti light ions
195
196 // hyperons
198
199 // b-, c- baryons and mesons
201 }
202}
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_ABLA & G4HadronInelasticQBBC_ABLA::operator= ( const G4HadronInelasticQBBC_ABLA & right)
delete

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