Geant4  10.03.p01
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4HadronInelasticQBBC Class Reference

#include <G4HadronInelasticQBBC.hh>

Inheritance diagram for G4HadronInelasticQBBC:
Collaboration 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 ()
 
virtual void ConstructProcess ()
 
- Public Member Functions inherited from G4VHadronPhysics
 G4VHadronPhysics (const G4String &name="hInelastic", G4int verbose=0)
 
virtual ~G4VHadronPhysics ()
 
virtual void ConstructParticle ()
 
G4HadronicInteractionBuildModel (G4VHadronModelBuilder *, G4double emin, G4double emax)
 
G4HadronicInteractionNewModel (G4HadronicInteraction *, G4double emin, G4double emax)
 
void AddInelasticCrossSection (const G4String &, G4VCrossSectionDataSet *)
 
void AddInelasticCrossSection (const G4ParticleDefinition *, G4VCrossSectionDataSet *)
 
void AddElasticCrossSection (const G4String &, G4VCrossSectionDataSet *)
 
void AddElasticCrossSection (const G4ParticleDefinition *, G4VCrossSectionDataSet *)
 
void AddCaptureCrossSection (G4VCrossSectionDataSet *)
 
void AddFissionCrossSection (G4VCrossSectionDataSet *)
 
- 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
 
void SetVerboseLevel (G4int value)
 
G4int GetVerboseLevel () const
 
G4int GetInstanceID () const
 

Additional Inherited Members

- Static Public Member Functions inherited from G4VPhysicsConstructor
static const G4VPCManagerGetSubInstanceManager ()
 
- Protected Member Functions inherited from G4VHadronPhysics
G4HadronicProcessFindInelasticProcess (const G4String &)
 
G4HadronicProcessFindInelasticProcess (const G4ParticleDefinition *)
 
G4HadronicProcessFindElasticProcess (const G4String &)
 
G4HadronicProcessFindElasticProcess (const G4ParticleDefinition *)
 
G4HadronicProcessFindCaptureProcess ()
 
G4HadronicProcessFindFissionProcess ()
 
- Protected Member Functions inherited from G4VPhysicsConstructor
G4bool RegisterProcess (G4VProcess *process, G4ParticleDefinition *particle)
 
G4ParticleTable::G4PTblDicIteratorGetParticleIterator () const
 
- Protected Attributes inherited from G4VPhysicsConstructor
G4int verboseLevel
 
G4String namePhysics
 
G4int typePhysics
 
G4ParticleTabletheParticleTable
 
G4int g4vpcInstanceID
 
- Static Protected Attributes inherited from G4VPhysicsConstructor
static G4RUN_DLL G4VPCManager subInstanceManager
 

Detailed Description

Definition at line 48 of file G4HadronInelasticQBBC.hh.

Constructor & Destructor Documentation

G4HadronInelasticQBBC::G4HadronInelasticQBBC ( G4int  ver = 1)

Definition at line 85 of file G4HadronInelasticQBBC.cc.

86  : G4VHadronPhysics("hInelasticQBBC"),verbose(ver)
87 {
88  theAntiNuclXS = nullptr;
89  theKaonXS = nullptr;
90 }
G4VHadronPhysics(const G4String &name="hInelastic", G4int verbose=0)
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 92 of file G4HadronInelasticQBBC.cc.

94 {}
G4HadronInelasticQBBC::~G4HadronInelasticQBBC ( )
virtual

Definition at line 96 of file G4HadronInelasticQBBC.cc.

97 {
98  delete theAntiNuclXS; theAntiNuclXS=nullptr;
99  delete theKaonXS; theKaonXS=nullptr;
100 }

Member Function Documentation

void G4HadronInelasticQBBC::ConstructProcess ( )
virtual

Implements G4VPhysicsConstructor.

Definition at line 102 of file G4HadronInelasticQBBC.cc.

103 {
104  if(verbose > 1) {
105  G4cout << "### HadronInelasticQBBC Construct Process " << G4endl;
106  }
107 
108  G4double emax = 100.*TeV;
109 
110  //G4cout << "G4HadronInelasticQBBC::ConstructProcess new PRECO"<< G4endl;
111 
112  // PreCompound and Evaporation models are instantiated here
113  G4PreCompoundModel* thePreCompound = nullptr;
116  thePreCompound = static_cast<G4PreCompoundModel*>(p);
117  if(!thePreCompound) { thePreCompound = new G4PreCompoundModel(); }
118 
119  // configure models
120  //G4HadronicInteraction* theQGSP =
121  // BuildModel(new G4QGSBuilder("QGSP",thePreCompound,true,false),12.5*GeV,emax);
122  G4HadronicInteraction* theFTFP =
123  BuildModel(new G4FTFBuilder("FTFP",thePreCompound),3.0*GeV,emax);
124  G4HadronicInteraction* theFTFP1 =
125  BuildModel(new G4FTFBuilder("FTFP",thePreCompound),3.0*GeV,emax);
126  G4HadronicInteraction* theFTFP2 =
127  BuildModel(new G4FTFBuilder("FTFP",thePreCompound),0.0,emax);
128 
131  G4HadronicInteraction* theBERT = NewModel(casc,1.0*GeV,5.0*GeV);
132 
133  casc = new G4CascadeInterface();
135  G4HadronicInteraction* theBERT1 = NewModel(casc,0.0*GeV,5.0*GeV);
136 
137  //G4cout << "G4HadronInelasticQBBC::ConstructProcess new Binary"<< G4endl;
138  G4BinaryCascade* bic = new G4BinaryCascade(thePreCompound);
139  G4HadronicInteraction* theBIC = NewModel(bic,0.0,1.5*GeV);
140 
141  // cross sections
142  theAntiNuclXS = new G4ComponentAntiNuclNuclearXS();
143  G4CrossSectionInelastic* anucxs =
144  new G4CrossSectionInelastic(theAntiNuclXS);
145  theKaonXS = new G4ComponentGGHadronNucleusXsc();
146  G4CrossSectionInelastic* kaonxs = new G4CrossSectionInelastic(theKaonXS);
147 
148  // loop over particles
149  auto myParticleIterator=GetParticleIterator();
150  myParticleIterator->reset();
151  while( (*myParticleIterator)() ) {
152  G4ParticleDefinition* particle = myParticleIterator->value();
153  G4String pname = particle->GetParticleName();
154  if(verbose > 1) {
155  G4cout << "### HadronInelasticQBBC: " << pname << G4endl;
156  }
157 
158  //
159  // model and X-section configuration per particle type
160  //
161  if(pname == "proton") {
162  G4HadronicProcess* hp = FindInelasticProcess(particle);
163  hp->AddDataSet(new G4BGGNucleonInelasticXS(particle));
164 
165  //hp->RegisterMe(theQGSP);
166  hp->RegisterMe(theFTFP);
167  hp->RegisterMe(theBERT);
168  hp->RegisterMe(theBIC);
169 
170  } else if(pname == "neutron") {
171  G4HadronicProcess* hp = FindInelasticProcess(particle);
173  //hp->RegisterMe(theQGSP);
174  hp->RegisterMe(theFTFP);
175 
178  hp->RegisterMe(theBERT);
179  hp->RegisterMe(theBIC);
180  capture->RegisterMe(new G4NeutronRadCapture());
181 
182  } else if(pname == "pi-" || pname == "pi+") {
183  G4HadronicProcess* hp = FindInelasticProcess(particle);
184  hp->AddDataSet(new G4BGGPionInelasticXS(particle));
185  //hp->AddDataSet(new G4CrossSectionPairGG((G4PiNuclearCrossSection*)G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4PiNuclearCrossSection::Default_Name()), 91*GeV));
186  //hp->RegisterMe(theQGSP);
187  hp->RegisterMe(theFTFP);
188  hp->RegisterMe(theBERT1);
189 
190  } else if(pname == "kaon-" ) {
191  G4HadronicProcess* hp = FindInelasticProcess(particle);
192  hp->RegisterMe(theFTFP1);
193  hp->RegisterMe(theBERT1);
194  hp->AddDataSet(kaonxs);
195 
196  } else if(pname == "kaon+" ) {
197  G4HadronicProcess* hp = FindInelasticProcess(particle);
198  hp->RegisterMe(theFTFP1);
199  hp->RegisterMe(theBERT1);
200  hp->AddDataSet(kaonxs);
201 
202  } else if(pname == "kaon0S" ||
203  pname == "kaon0L") {
204  G4HadronicProcess* hp = FindInelasticProcess(particle);
205  hp->RegisterMe(theFTFP1);
206  hp->RegisterMe(theBERT1);
207  hp->AddDataSet(kaonxs);
208 
209  } else if(pname == "lambda" ||
210  pname == "omega-" ||
211  pname == "sigma-" ||
212  pname == "sigma+" ||
213  pname == "sigma0" ||
214  pname == "xi-" ||
215  pname == "xi0") {
216  G4HadronicProcess* hp = FindInelasticProcess(particle);
217  hp->RegisterMe(theFTFP1);
218  hp->RegisterMe(theBERT1);
220 
221  } else if(pname == "anti_alpha" ||
222  pname == "anti_deuteron"||
223  pname == "anti_He3" ||
224  pname == "anti_proton" ||
225  pname == "anti_triton" ||
226  pname == "anti_lambda" ||
227  pname == "anti_neutron" ||
228  pname == "anti_omega-" ||
229  pname == "anti_sigma-" ||
230  pname == "anti_sigma+" ||
231  pname == "anti_xi-" ||
232  pname == "anti_xi0"
233  ) {
234 
235  G4HadronicProcess* hp = FindInelasticProcess(particle);
236  hp->RegisterMe(theFTFP2);
237  hp->AddDataSet(anucxs);
238 
239  }
240  }
241 }
G4HadronicProcess * FindCaptureProcess()
const char * p
Definition: xmltok.h:285
static const char * Default_Name()
const G4String & GetParticleName() const
void RegisterMe(G4HadronicInteraction *a)
static constexpr double TeV
Definition: G4SIunits.hh:218
G4ParticleTable::G4PTblDicIterator * GetParticleIterator() const
void AddDataSet(G4VCrossSectionDataSet *aDataSet)
G4GLOB_DLL std::ostream G4cout
static G4CrossSectionDataSetRegistry * Instance()
G4HadronicProcess * FindInelasticProcess(const G4String &)
static const G4double emax
G4HadronicInteraction * FindModel(const G4String &name)
G4HadronicInteraction * NewModel(G4HadronicInteraction *, G4double emin, G4double emax)
static const char * Default_Name()
static G4HadronicInteractionRegistry * Instance()
static constexpr double GeV
Definition: G4SIunits.hh:217
#define G4endl
Definition: G4ios.hh:61
double G4double
Definition: G4Types.hh:76
G4HadronicInteraction * BuildModel(G4VHadronModelBuilder *, G4double emin, G4double emax)

Here is the call graph for this function:


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