Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions
G4HadronInelasticQBBC Class Reference

#include <G4HadronInelasticQBBC.hh>

Inheritance diagram for G4HadronInelasticQBBC:
G4VHadronPhysics G4VPhysicsConstructor

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)
 
- 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 47 of file G4HadronInelasticQBBC.hh.

Constructor & Destructor Documentation

G4HadronInelasticQBBC::G4HadronInelasticQBBC ( G4int  ver = 1)

Definition at line 89 of file G4HadronInelasticQBBC.cc.

90  : G4VHadronPhysics("hInelastic"),verbose(ver)
91 {
92  htype = "QBBC";
93  theAntiNuclXS = 0;
94 }
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 96 of file G4HadronInelasticQBBC.cc.

98  : G4VHadronPhysics("hInelastic"),verbose(ver)
99 {
100  htype = name;
101  theAntiNuclXS = 0;
102 }
const XML_Char * name
G4VHadronPhysics(const G4String &name="hInelastic", G4int verbose=0)
G4HadronInelasticQBBC::~G4HadronInelasticQBBC ( )
virtual

Definition at line 104 of file G4HadronInelasticQBBC.cc.

105 {
106  delete theAntiNuclXS;
107 }

Member Function Documentation

void G4HadronInelasticQBBC::ConstructProcess ( void  )
virtual

Implements G4VPhysicsConstructor.

Definition at line 109 of file G4HadronInelasticQBBC.cc.

References G4HadronicProcess::AddDataSet(), aParticleIterator, G4VHadronPhysics::BuildModel(), G4ChipsHyperonInelasticXS::Default_Name(), G4ChipsKaonMinusInelasticXS::Default_Name(), G4ChipsKaonPlusInelasticXS::Default_Name(), G4ChipsKaonZeroInelasticXS::Default_Name(), G4VHadronPhysics::FindCaptureProcess(), G4VHadronPhysics::FindInelasticProcess(), G4HadronicInteractionRegistry::FindModel(), G4cout, G4endl, G4ParticleDefinition::GetParticleName(), python.hepunit::GeV, G4HadronicInteractionRegistry::Instance(), G4CrossSectionDataSetRegistry::Instance(), G4VHadronPhysics::NewModel(), eplot::pname, G4HadronicProcess::RegisterMe(), and python.hepunit::TeV.

110 {
111  if(wasActivated) return;
112  wasActivated = true;
113 
114  if(verbose > 1) {
115  G4cout << "### HadronInelasticQBBC Construct Process with type <"
116  << htype << ">" << G4endl;
117  }
118 
119  G4double emax = 100.*TeV;
120 
121 
122  //G4cout << "G4HadronInelasticQBBC::ConstructProcess new PRECO"<< G4endl;
123 
124  // PreCompound and Evaporation models are instantiated here
125  G4PreCompoundModel* thePreCompound = 0;
128  thePreCompound = static_cast<G4PreCompoundModel*>(p);
129  if(!thePreCompound) { thePreCompound = new G4PreCompoundModel(); }
130  //G4ExcitationHandler* handler = thePreCompound->GetExcitationHandler();
131 
132  // configure models
133  //G4HadronicInteraction* theQGSP =
134  // BuildModel(new G4QGSBuilder("QGSP",thePreCompound,true,false),12.5*GeV,emax);
135  G4HadronicInteraction* theFTFP =
136  BuildModel(new G4FTFBuilder("FTFP",thePreCompound),3.0*GeV,emax);
137  G4HadronicInteraction* theFTFP1 =
138  BuildModel(new G4FTFBuilder("FTFP",thePreCompound),3.0*GeV,emax);
139  G4HadronicInteraction* theFTFP2 =
140  BuildModel(new G4FTFBuilder("FTFP",thePreCompound),0.0,emax);
141 
142  G4HadronicInteraction* theBERT =
143  NewModel(new G4CascadeInterface(),1.0*GeV,12.0*GeV);
144  G4HadronicInteraction* theBERT1 =
145  NewModel(new G4CascadeInterface(),0.0*GeV,12.0*GeV);
146 
147  //G4cout << "G4HadronInelasticQBBC::ConstructProcess new Binary"<< G4endl;
148  G4BinaryCascade* bic = new G4BinaryCascade(thePreCompound);
149  G4HadronicInteraction* theBIC = NewModel(bic,0.0,1.5*GeV);
150 
151  // cross sections
152  theAntiNuclXS = new G4ComponentAntiNuclNuclearXS();
153  G4CrossSectionInelastic* anucxs =
154  new G4CrossSectionInelastic(theAntiNuclXS);
155 
156  // loop over particles
157  aParticleIterator->reset();
158  while( (*aParticleIterator)() ) {
159  G4ParticleDefinition* particle = aParticleIterator->value();
160  G4String pname = particle->GetParticleName();
161  //G4ProcessManager* pmanager = particle->GetProcessManager();
162  if(verbose > 1) {
163  G4cout << "### HadronInelasticQBBC: " << pname << G4endl;
164  }
165 
166  //
167  // model and X-section configuration per particle type
168  //
169  if(pname == "proton") {
170  G4HadronicProcess* hp = FindInelasticProcess(particle);
171  hp->AddDataSet(new G4BGGNucleonInelasticXS(particle));
172 
173  //hp->RegisterMe(theQGSP);
174  hp->RegisterMe(theFTFP);
175  hp->RegisterMe(theBERT);
176  hp->RegisterMe(theBIC);
177 
178  } else if(pname == "neutron") {
179  G4HadronicProcess* hp = FindInelasticProcess(particle);
180  hp->AddDataSet(new G4NeutronInelasticXS());
181  //hp->RegisterMe(theQGSP);
182  hp->RegisterMe(theFTFP);
183 
185  capture->AddDataSet(new G4NeutronCaptureXS());
186  hp->RegisterMe(theBERT);
187  hp->RegisterMe(theBIC);
188  capture->RegisterMe(new G4NeutronRadCapture());
189 
190  } else if(pname == "pi-" || pname == "pi+") {
191  G4HadronicProcess* hp = FindInelasticProcess(particle);
192 // hp->AddDataSet(new G4BGGPionInelasticXS(particle));
194  //hp->RegisterMe(theQGSP);
195  hp->RegisterMe(theFTFP);
196  hp->RegisterMe(theBERT1);
197 
198  } else if(pname == "kaon-" ) {
199  G4HadronicProcess* hp = FindInelasticProcess(particle);
200  hp->RegisterMe(theFTFP1);
201  hp->RegisterMe(theBERT1);
203 
204  } else if(pname == "kaon+" ) {
205  G4HadronicProcess* hp = FindInelasticProcess(particle);
206  hp->RegisterMe(theFTFP1);
207  hp->RegisterMe(theBERT1);
209 
210  } else if(pname == "kaon0S" ||
211  pname == "kaon0L") {
212  G4HadronicProcess* hp = FindInelasticProcess(particle);
213  hp->RegisterMe(theFTFP1);
214  hp->RegisterMe(theBERT1);
216 
217  } else if(pname == "lambda" ||
218  pname == "omega-" ||
219  pname == "sigma-" ||
220  pname == "sigma+" ||
221  pname == "sigma0" ||
222  pname == "xi-" ||
223  pname == "xi0") {
224  G4HadronicProcess* hp = FindInelasticProcess(particle);
225  hp->RegisterMe(theFTFP1);
226  hp->RegisterMe(theBERT1);
228 
229  } else if(pname == "anti_alpha" ||
230  pname == "anti_deuteron"||
231  pname == "anti_He3" ||
232  pname == "anti_proton" ||
233  pname == "anti_triton" ||
234  pname == "anti_lambda" ||
235  pname == "anti_neutron" ||
236  pname == "anti_omega-" ||
237  pname == "anti_sigma-" ||
238  pname == "anti_sigma+" ||
239  pname == "anti_xi-" ||
240  pname == "anti_xi0"
241  ) {
242 
243  G4HadronicProcess* hp = FindInelasticProcess(particle);
244  hp->RegisterMe(theFTFP2);
245  hp->AddDataSet(anucxs);
246 
247  }
248  }
249 }
G4HadronicProcess * FindCaptureProcess()
const char * p
Definition: xmltok.h:285
const G4String & GetParticleName() const
void RegisterMe(G4HadronicInteraction *a)
void AddDataSet(G4VCrossSectionDataSet *aDataSet)
G4GLOB_DLL std::ostream G4cout
#define aParticleIterator
static G4CrossSectionDataSetRegistry * Instance()
G4HadronicProcess * FindInelasticProcess(const G4String &)
string pname
Definition: eplot.py:33
G4HadronicInteraction * FindModel(const G4String &name)
G4HadronicInteraction * NewModel(G4HadronicInteraction *, G4double emin, G4double emax)
static G4HadronicInteractionRegistry * Instance()
#define G4endl
Definition: G4ios.hh:61
double G4double
Definition: G4Types.hh:76
G4HadronicInteraction * BuildModel(G4VHadronModelBuilder *, G4double emin, G4double emax)

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