Import Geant4 9.6.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-09 17:01:34 +02:00
parent b1eb5424d2
commit e2d2f9810a
10384 changed files with 698580 additions and 628834 deletions
@@ -23,8 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4HadronInelasticQBBC.cc,v 1.29 2010-11-19 19:50:15 vnivanch Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
// $Id$
//
//---------------------------------------------------------------------------
//
@@ -39,6 +38,8 @@
#include "G4HadronInelasticQBBC.hh"
#include "G4SystemOfUnits.hh"
#include "G4HadronInelasticProcess.hh"
#include "G4HadronicInteraction.hh"
@@ -59,11 +60,17 @@
#include "G4NeutronInelasticCrossSection.hh"
#include "G4PiNuclearCrossSection.hh"
#include "G4ComponentAntiNuclNuclearXS.hh"
#include "G4CrossSectionPairGG.hh"
#include "G4PiNuclearCrossSection.hh"
#include "G4QGSBuilder.hh"
#include "G4FTFBuilder.hh"
#include "G4QHadronInelasticDataSet.hh"
#include "G4ChipsKaonMinusInelasticXS.hh"
#include "G4ChipsKaonPlusInelasticXS.hh"
#include "G4ChipsKaonZeroInelasticXS.hh"
#include "G4ChipsHyperonInelasticXS.hh"
#include "G4CrossSectionDataSetRegistry.hh"
#include "G4CascadeInterface.hh"
#include "G4BinaryCascade.hh"
@@ -73,13 +80,17 @@
#include "G4PreCompoundModel.hh"
#include "G4ExcitationHandler.hh"
#include "G4Evaporation.hh"
#include "G4HadronicInteractionRegistry.hh"
// factory
#include "G4PhysicsConstructorFactory.hh"
//
G4_DECLARE_PHYSCONSTR_FACTORY(G4HadronInelasticQBBC);
G4HadronInelasticQBBC::G4HadronInelasticQBBC(G4int ver)
: G4VHadronPhysics("hInelastic"),verbose(ver),wasActivated(false)
{
htype = "QBBC";
theHandler = 0;
theEvaporation = 0;
theAntiNuclXS = 0;
}
@@ -88,14 +99,11 @@ G4HadronInelasticQBBC::G4HadronInelasticQBBC(const G4String& name, G4int ver,
: G4VHadronPhysics("hInelastic"),verbose(ver),wasActivated(false)
{
htype = name;
theHandler = 0;
theEvaporation = 0;
theAntiNuclXS = 0;
}
G4HadronInelasticQBBC::~G4HadronInelasticQBBC()
{
delete theHandler;
delete theEvaporation;
delete theAntiNuclXS;
}
@@ -111,10 +119,17 @@ void G4HadronInelasticQBBC::ConstructProcess()
G4double emax = 100.*TeV;
// PreCompound and Evaporation models are instantiated here
theHandler = new G4ExcitationHandler();
G4PreCompoundModel* thePreCompound = new G4PreCompoundModel(theHandler);
//G4cout << "G4HadronInelasticQBBC::ConstructProcess new PRECO"<< G4endl;
// PreCompound and Evaporation models are instantiated here
G4PreCompoundModel* thePreCompound = 0;
G4HadronicInteraction* p =
G4HadronicInteractionRegistry::Instance()->FindModel("PRECO");
thePreCompound = static_cast<G4PreCompoundModel*>(p);
if(!thePreCompound) { thePreCompound = new G4PreCompoundModel(); }
//G4ExcitationHandler* handler = thePreCompound->GetExcitationHandler();
// configure models
//G4HadronicInteraction* theQGSP =
// BuildModel(new G4QGSBuilder("QGSP",thePreCompound,true,false),12.5*GeV,emax);
@@ -130,8 +145,8 @@ void G4HadronInelasticQBBC::ConstructProcess()
G4HadronicInteraction* theBERT1 =
NewModel(new G4CascadeInterface(),0.0*GeV,12.0*GeV);
G4BinaryCascade* bic = new G4BinaryCascade();
bic->SetDeExcitation(thePreCompound);
//G4cout << "G4HadronInelasticQBBC::ConstructProcess new Binary"<< G4endl;
G4BinaryCascade* bic = new G4BinaryCascade(thePreCompound);
G4HadronicInteraction* theBIC = NewModel(bic,0.0,1.5*GeV);
G4QInelastic* theCHIPS = new G4QInelastic();
@@ -143,9 +158,6 @@ void G4HadronInelasticQBBC::ConstructProcess()
G4CrossSectionInelastic* anucxs =
new G4CrossSectionInelastic(theAntiNuclXS);
// use CHIPS cross sections also for Kaons
G4QHadronInelasticDataSet* theCHIPSInelastic = new G4QHadronInelasticDataSet();
// loop over particles
theParticleIterator->reset();
while( (*theParticleIterator)() ) {
@@ -182,21 +194,32 @@ void G4HadronInelasticQBBC::ConstructProcess()
} else if(pname == "pi-" || pname == "pi+") {
G4HadronicProcess* hp = FindInelasticProcess(particle);
hp->AddDataSet(new G4BGGPionInelasticXS(particle));
// hp->AddDataSet(new G4BGGPionInelasticXS(particle));
hp->AddDataSet(new G4CrossSectionPairGG(new G4PiNuclearCrossSection(), 91*GeV));
//hp->RegisterMe(theQGSP);
hp->RegisterMe(theFTFP);
hp->RegisterMe(theBERT1);
} else if(pname == "kaon-" ||
pname == "kaon+" ||
pname == "kaon0S" ||
pname == "kaon0L") {
} else if(pname == "kaon-" ) {
G4HadronicProcess* hp = FindInelasticProcess(particle);
hp->RegisterMe(theFTFP1);
hp->RegisterMe(theBERT1);
hp->AddDataSet(theCHIPSInelastic);
hp->AddDataSet(G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsKaonMinusInelasticXS::Default_Name()));
} else if(pname == "lambda" ||
} else if(pname == "kaon+" ) {
G4HadronicProcess* hp = FindInelasticProcess(particle);
hp->RegisterMe(theFTFP1);
hp->RegisterMe(theBERT1);
hp->AddDataSet(G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsKaonPlusInelasticXS::Default_Name()));
} else if(pname == "kaon0S" ||
pname == "kaon0L") {
G4HadronicProcess* hp = FindInelasticProcess(particle);
hp->RegisterMe(theFTFP1);
hp->RegisterMe(theBERT1);
hp->AddDataSet(G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsKaonZeroInelasticXS::Default_Name()));
} else if(pname == "lambda" ||
pname == "omega-" ||
pname == "sigma-" ||
pname == "sigma+" ||
@@ -206,6 +229,7 @@ void G4HadronInelasticQBBC::ConstructProcess()
G4HadronicProcess* hp = FindInelasticProcess(particle);
hp->RegisterMe(theFTFP1);
hp->RegisterMe(theBERT1);
hp->AddDataSet(G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsHyperonInelasticXS::Default_Name()));
} else if(pname == "anti_alpha" ||
pname == "anti_deuteron"||
@@ -1,440 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4HadronInelasticQLHEP.cc,v 1.4 2010-06-08 08:58:03 gunter Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
//
//---------------------------------------------------------------------------
//
// ClassName: G4HadronInelasticQLHEP
//
// Author: 11 April 2006 V. Ivanchenko
//
// Modified:
// 05.07.2006 V.Ivanchenko fix problem of initialisation of HP
//
//----------------------------------------------------------------------------
//
#include "G4HadronInelasticQLHEP.hh"
#include "G4HadronInelasticProcess.hh"
#include "G4ParticleDefinition.hh"
#include "G4ProcessManager.hh"
#include "G4MesonConstructor.hh"
#include "G4BaryonConstructor.hh"
#include "G4PiNuclearCrossSection.hh"
#include "G4TheoFSGenerator.hh"
#include "G4GeneratorPrecompoundInterface.hh"
#include "G4PreCompoundModel.hh"
#include "G4ExcitationHandler.hh"
#include "G4QGSMFragmentation.hh"
#include "G4ExcitedStringDecay.hh"
#include "G4CascadeInterface.hh"
#include "G4BinaryCascade.hh"
#include "G4HadronFissionProcess.hh"
#include "G4HadronCaptureProcess.hh"
#include "G4LFission.hh"
#include "G4LCapture.hh"
#include "G4NeutronHPInelastic.hh"
#include "G4NeutronHPFission.hh"
#include "G4NeutronHPCapture.hh"
#include "G4LEAntiLambdaInelastic.hh"
#include "G4LEAntiNeutronInelastic.hh"
#include "G4LEAntiOmegaMinusInelastic.hh"
#include "G4LEAntiProtonInelastic.hh"
#include "G4LEAntiSigmaMinusInelastic.hh"
#include "G4LEAntiSigmaPlusInelastic.hh"
#include "G4LEAntiXiMinusInelastic.hh"
#include "G4LEAntiXiZeroInelastic.hh"
#include "G4LEKaonMinusInelastic.hh"
#include "G4LEKaonPlusInelastic.hh"
#include "G4LEKaonZeroSInelastic.hh"
#include "G4LEKaonZeroLInelastic.hh"
#include "G4LENeutronInelastic.hh"
#include "G4LELambdaInelastic.hh"
#include "G4LEProtonInelastic.hh"
#include "G4LEPionPlusInelastic.hh"
#include "G4LEPionMinusInelastic.hh"
#include "G4LEOmegaMinusInelastic.hh"
#include "G4LESigmaMinusInelastic.hh"
#include "G4LESigmaPlusInelastic.hh"
#include "G4LEXiMinusInelastic.hh"
#include "G4LEXiZeroInelastic.hh"
#include "G4HEAntiLambdaInelastic.hh"
#include "G4HEAntiNeutronInelastic.hh"
#include "G4HEAntiOmegaMinusInelastic.hh"
#include "G4HEAntiProtonInelastic.hh"
#include "G4HEAntiSigmaMinusInelastic.hh"
#include "G4HEAntiSigmaPlusInelastic.hh"
#include "G4HEAntiXiMinusInelastic.hh"
#include "G4HEAntiXiZeroInelastic.hh"
#include "G4HEKaonMinusInelastic.hh"
#include "G4HEKaonPlusInelastic.hh"
#include "G4HEKaonZeroInelastic.hh"
#include "G4HENeutronInelastic.hh"
#include "G4HELambdaInelastic.hh"
#include "G4HEProtonInelastic.hh"
#include "G4HEPionPlusInelastic.hh"
#include "G4HEPionMinusInelastic.hh"
#include "G4HEOmegaMinusInelastic.hh"
#include "G4HESigmaMinusInelastic.hh"
#include "G4HESigmaPlusInelastic.hh"
#include "G4HEXiMinusInelastic.hh"
#include "G4HEXiZeroInelastic.hh"
G4HadronInelasticQLHEP::G4HadronInelasticQLHEP(G4int ver)
: G4VPhysicsConstructor("hInelasticQLHEP"), verbose(ver), qgsFlag(false),
bertFlag(false), bicFlag(false), hpFlag(false), wasActivated(false)
{
if(verbose > 1) G4cout << "### HadronInelasticQLHEP" << G4endl;
theCascade = 0;
theQGStringDecay = 0;
theQGStringModel = 0;
thePreEquilib = 0;
theHPXSecI = 0;
theHPXSecC = 0;
theHPXSecF = 0;
}
G4HadronInelasticQLHEP::G4HadronInelasticQLHEP(const G4String&,
G4int ver, G4bool qgs, G4bool bert, G4bool bic, G4bool hp)
: G4VPhysicsConstructor("hInelasticQLHEP"), verbose(ver), qgsFlag(qgs),
bertFlag(bert), bicFlag(bic), hpFlag(hp), wasActivated(false)
{
if(verbose > 1) G4cout << "### HadronInelasticQLHEP" << G4endl;
theCascade = 0;
theQGStringDecay = 0;
theQGStringModel = 0;
thePreEquilib = 0;
theHPXSecI = 0;
theHPXSecC = 0;
theHPXSecF = 0;
}
G4HadronInelasticQLHEP::~G4HadronInelasticQLHEP()
{
if(wasActivated) {
delete theCascade;
delete theQGStringDecay;
delete theQGStringModel;
delete thePreEquilib;
delete theHPXSecI;
delete theHPXSecC;
delete theHPXSecF;
}
}
void G4HadronInelasticQLHEP::ConstructParticle()
{
G4MesonConstructor pMesonConstructor;
pMesonConstructor.ConstructParticle();
G4BaryonConstructor pBaryonConstructor;
pBaryonConstructor.ConstructParticle();
}
void G4HadronInelasticQLHEP::ConstructProcess()
{
if(wasActivated) return;
wasActivated = true;
if(verbose > 1) G4cout << "### HadronInelasticQLHEP Construct Process" << G4endl;
G4double minEneutron = 0.0*GeV;
G4double minELEP = 0.0*GeV;
G4double maxELEP = 55.*GeV;
G4double minEstring = 12.*GeV;
if(hpFlag) minEneutron = 19.5*MeV;
//Bertini
G4HadronicInteraction* theBERT = 0;
if(bertFlag) {
minELEP = 9.5*GeV;
theBERT = new G4CascadeInterface();
theBERT->SetMinEnergy(0.0);
theBERT->SetMaxEnergy(9.9*GeV);
}
//Binari
G4HadronicInteraction* theBIC = 0;
if(bicFlag) {
minELEP = 9.5*GeV;
theBIC = new G4BinaryCascade();
theBIC->SetMinEnergy(0.0);
theBIC->SetMaxEnergy(9.9*GeV);
}
//QGSP
G4TheoFSGenerator* theQGSModel = 0;
if(qgsFlag) {
maxELEP = 25.*GeV;
theQGSModel = new G4TheoFSGenerator();
theQGStringModel = new G4QGSModel< G4QGSParticipants >;
theQGStringDecay = new G4ExcitedStringDecay(new G4QGSMFragmentation());
theQGStringModel->SetFragmentationModel(theQGStringDecay);
theCascade = new G4GeneratorPrecompoundInterface;
thePreEquilib = new G4PreCompoundModel(new G4ExcitationHandler);
theCascade->SetDeExcitation(thePreEquilib);
theQGSModel->SetTransport(theCascade);
theQGSModel->SetHighEnergyGenerator(theQGStringModel);
theQGSModel->SetMinEnergy(minEstring);
theQGSModel->SetMaxEnergy(100*TeV);
}
theParticleIterator->reset();
while( (*theParticleIterator)() ) {
G4ParticleDefinition* particle = theParticleIterator->value();
G4String pname = particle->GetParticleName();
if(verbose > 1) G4cout << "### HadronInelasticQLHEP: " << pname << G4endl;
if(pname == "anti_lambda" ||
pname == "anti_neutron" ||
pname == "anti_omega-" ||
pname == "anti_proton" ||
pname == "anti_sigma-" ||
pname == "anti_sigma+" ||
pname == "anti_xi-" ||
pname == "anti_xi0" ||
pname == "kaon-" ||
pname == "kaon+" ||
pname == "kaon0S" ||
pname == "kaon0L" ||
pname == "lambda" ||
pname == "neutron" ||
pname == "omega-" ||
pname == "pi-" ||
pname == "pi+" ||
pname == "proton" ||
pname == "sigma-" ||
pname == "sigma+" ||
pname == "xi-" ||
pname == "xi0") {
G4ProcessManager* pmanager = particle->GetProcessManager();
G4HadronInelasticProcess* hp =
new G4HadronInelasticProcess("hInelastic", particle);
pmanager->AddDiscreteProcess(hp);
if(pname == "proton") {
if(qgsFlag) {
Register(particle,hp,theQGSModel,"QGS");
hp->AddDataSet(&theXSecP);
} else {
AddHEP(particle, hp, 25.*GeV, 100.*TeV);
}
AddLEP(particle, hp, minELEP, maxELEP);
if(bicFlag) Register(particle,hp,theBIC,"Binary");
else if(bertFlag) Register(particle,hp,theBERT,"Bertini");
} else if(pname == "neutron") {
if(qgsFlag) {
Register(particle,hp,theQGSModel,"QGS");
hp->AddDataSet(&theXSecN);
} else {
AddHEP(particle, hp, 25.*GeV, 100.*TeV);
}
AddLEP(particle, hp, minELEP, maxELEP);
G4HadronCaptureProcess* theNeutronCapture =
new G4HadronCaptureProcess("nCapture");
G4HadronFissionProcess* theNeutronFission =
new G4HadronFissionProcess("nFission");
pmanager->AddDiscreteProcess(theNeutronCapture);
pmanager->AddDiscreteProcess(theNeutronFission);
if(hpFlag) {
theHPXSecI = new G4NeutronHPInelasticData;
theHPXSecC = new G4NeutronHPCaptureData;
theHPXSecF = new G4NeutronHPFissionData;
hp->AddDataSet(theHPXSecI);
theNeutronCapture->AddDataSet(theHPXSecC);
theNeutronFission->AddDataSet(theHPXSecF);
G4NeutronHPInelastic* hpi = new G4NeutronHPInelastic();
G4NeutronHPCapture* hpc = new G4NeutronHPCapture();
G4NeutronHPFission* hpf = new G4NeutronHPFission();
Register(particle,hp,hpi,"HP");
Register(particle,theNeutronCapture,hpc,"HP");
Register(particle,theNeutronFission,hpf,"HP");
}
G4HadronicInteraction* theC = new G4LCapture();
theC->SetMinEnergy(minEneutron);
Register(particle,theNeutronCapture,theC,"LCapture");
G4HadronicInteraction* theF = new G4LFission();
theF->SetMinEnergy(minEneutron);
Register(particle,theNeutronFission,theF,"LFission");
if(bicFlag) {
G4BinaryCascade* theB = new G4BinaryCascade();
theB->SetMinEnergy(minEneutron);
theB->SetMaxEnergy(9.9*GeV);
Register(particle,hp,theB,"Binary");
} else if(bertFlag) {
G4CascadeInterface* theB = new G4CascadeInterface();
theB->SetMinEnergy(minEneutron);
theB->SetMaxEnergy(9.9*GeV);
Register(particle,hp,theB,"Bertini");
}
} else if(pname == "pi-" || pname == "pi+") {
if(qgsFlag) {
Register(particle,hp,theQGSModel,"QGS");
hp->AddDataSet(&thePiCross);
} else {
AddHEP(particle, hp, 25.*GeV, 100.*TeV);
}
AddLEP(particle, hp, minELEP, maxELEP);
if(bertFlag) Register(particle,hp,theBERT,"Bertini");
} else if(pname == "kaon-" ||
pname == "kaon+" ||
pname == "kaon0S" ||
pname == "kaon0L") {
if(qgsFlag) Register(particle,hp,theQGSModel,"QGS");
else AddHEP(particle, hp, 25.*GeV, 100.*TeV);
AddLEP(particle, hp, minELEP, maxELEP);
if(bertFlag) Register(particle,hp,theBERT,"Bertini");
} else {
AddHEP(particle, hp, 25.*GeV, 100.*TeV);
AddLEP(particle, hp, 0.0, 55.*GeV);
}
if(verbose > 1)
G4cout << "### HadronInelasticQLHEP: " << hp->GetProcessName()
<< " added for " << pname << G4endl;
}
}
}
void G4HadronInelasticQLHEP::AddLEP(G4ParticleDefinition* particle,
G4HadronicProcess* hp,
G4double emin,
G4double emax)
{
G4HadronicInteraction* hi = 0;
G4String pname = particle->GetParticleName();
if(pname == "anti_lambda" ) hi = new G4LEAntiLambdaInelastic();
else if(pname == "anti_neutron") hi = new G4LEAntiNeutronInelastic();
else if(pname == "anti_omega-" ) hi = new G4LEAntiOmegaMinusInelastic();
else if(pname == "anti_proton" ) hi = new G4LEAntiProtonInelastic();
else if(pname == "anti_sigma-" ) hi = new G4LEAntiSigmaMinusInelastic();
else if(pname == "anti_sigma+" ) hi = new G4LEAntiSigmaPlusInelastic();
else if(pname == "anti_xi-" ) hi = new G4LEAntiXiMinusInelastic();
else if(pname == "anti_xi0" ) hi = new G4LEAntiXiZeroInelastic();
else if(pname == "kaon-" ) hi = new G4LEKaonMinusInelastic();
else if(pname == "kaon+" ) hi = new G4LEKaonPlusInelastic();
else if(pname == "kaon0S" ) hi = new G4LEKaonZeroSInelastic();
else if(pname == "kaon0L" ) hi = new G4LEKaonZeroLInelastic();
else if(pname == "neutron" ) hi = new G4LENeutronInelastic();
else if(pname == "lambda" ) hi = new G4LELambdaInelastic();
else if(pname == "omega-" ) hi = new G4LEOmegaMinusInelastic();
else if(pname == "proton" ) hi = new G4LEProtonInelastic();
else if(pname == "pi+" ) hi = new G4LEPionPlusInelastic();
else if(pname == "pi-" ) hi = new G4LEPionMinusInelastic();
else if(pname == "sigma-" ) hi = new G4LESigmaMinusInelastic();
else if(pname == "sigma+" ) hi = new G4LESigmaPlusInelastic();
else if(pname == "xi-" ) hi = new G4LEXiMinusInelastic();
else if(pname == "xi0" ) hi = new G4LEXiZeroInelastic();
if(hi) {
hi->SetMinEnergy(emin);
hi->SetMaxEnergy(emax);
Register(particle,hp,hi,"LHEP");
} else {
G4cout << "### G4HadronInelasticTHEO: ERROR - no LHEP model for "
<< pname << G4endl;
}
}
void G4HadronInelasticQLHEP::AddHEP(G4ParticleDefinition* particle,
G4HadronicProcess* hp,
G4double emin,
G4double emax)
{
G4HadronicInteraction* hi = 0;
G4String pname = particle->GetParticleName();
if(pname == "anti_lambda" ) hi = new G4HEAntiLambdaInelastic();
else if(pname == "anti_neutron") hi = new G4HEAntiNeutronInelastic();
else if(pname == "anti_omega-" ) hi = new G4HEAntiOmegaMinusInelastic();
else if(pname == "anti_proton" ) hi = new G4HEAntiProtonInelastic();
else if(pname == "anti_sigma-" ) hi = new G4HEAntiSigmaMinusInelastic();
else if(pname == "anti_sigma+" ) hi = new G4HEAntiSigmaPlusInelastic();
else if(pname == "anti_xi-" ) hi = new G4HEAntiXiMinusInelastic();
else if(pname == "anti_xi0" ) hi = new G4HEAntiXiZeroInelastic();
else if(pname == "kaon-" ) hi = new G4HEKaonMinusInelastic();
else if(pname == "kaon+" ) hi = new G4HEKaonPlusInelastic();
else if(pname == "kaon0S" ) hi = new G4HEKaonZeroInelastic();
else if(pname == "kaon0L" ) hi = new G4HEKaonZeroInelastic();
else if(pname == "neutron" ) hi = new G4HENeutronInelastic();
else if(pname == "lambda" ) hi = new G4HELambdaInelastic();
else if(pname == "omega-" ) hi = new G4HEOmegaMinusInelastic();
else if(pname == "proton" ) hi = new G4HEProtonInelastic();
else if(pname == "pi+" ) hi = new G4HEPionPlusInelastic();
else if(pname == "pi-" ) hi = new G4HEPionMinusInelastic();
else if(pname == "sigma-" ) hi = new G4HESigmaMinusInelastic();
else if(pname == "sigma+" ) hi = new G4HESigmaPlusInelastic();
else if(pname == "xi-" ) hi = new G4HEXiMinusInelastic();
else if(pname == "xi0" ) hi = new G4HEXiZeroInelastic();
if(hi) {
hi->SetMinEnergy(emin);
hi->SetMaxEnergy(emax);
Register(particle,hp,hi,"HEP");
} else {
G4cout << "### G4HadronInelasticQLHEP: ERROR - no HEP model for "
<< pname << G4endl;
}
}
void G4HadronInelasticQLHEP::Register(G4ParticleDefinition* p,
G4HadronicProcess* hp,
G4HadronicInteraction* hi,
const G4String& m)
{
hp->RegisterMe(hi);
if(verbose > 1)
G4cout << "### QLHEP: Register new model " << m
<< " for " << p->GetParticleName() << " and "
<< hp->GetProcessName()
<< " E(GeV) " << hi->GetMinEnergy()/GeV
<< " - " << hi->GetMaxEnergy()/GeV << G4endl;
}
@@ -23,8 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4PhysListFactory.cc,v 1.16 2010-11-19 19:50:15 vnivanch Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
// $Id$
//
//---------------------------------------------------------------------------
//
@@ -41,6 +40,8 @@
#include "CHIPS.hh"
#include "FTFP_BERT.hh"
#include "FTFP_BERT_TRV.hh"
#include "FTFP_BERT_HP.hh"
//#include "FTFP_BERT_DE.hh"
#include "FTF_BIC.hh"
#include "LBE.hh"
#include "LHEP.hh"
@@ -54,13 +55,14 @@
#include "QGSP_FTFP_BERT.hh"
#include "QGS_BIC.hh"
#include "QGSP_INCLXX.hh"
#include "QGSP_INCL_ABLA.hh"
//#include "QGSP_INCL_ABLA.hh"
#include "Shielding.hh"
#include "G4EmStandardPhysics.hh"
#include "G4EmStandardPhysics_option1.hh"
#include "G4EmStandardPhysics_option2.hh"
#include "G4EmStandardPhysics_option3.hh"
#include "G4EmStandardPhysics_option4.hh"
#include "G4EmLivermorePhysics.hh"
#include "G4EmPenelopePhysics.hh"
@@ -68,20 +70,20 @@ G4PhysListFactory::G4PhysListFactory()
: defName("FTFP_BERT"),verbose(1)
{
nlists_hadr = 19;
G4String s[19] = {
G4String ss[19] = {
"CHIPS",
"FTFP_BERT","FTFP_BERT_TRV","FTF_BIC",
"FTFP_BERT","FTFP_BERT_TRV","FTFP_BERT_HP","FTF_BIC",
"LBE","LHEP","QBBC",
"QGSC_BERT","QGSP","QGSP_BERT","QGSP_BERT_CHIPS","QGSP_BERT_HP",
"QGSP_BIC","QGSP_BIC_HP",
"QGSP_FTFP_BERT","QGS_BIC","QGSP_INCLXX","QGSP_INCL_ABLA",
"QGSP_FTFP_BERT","QGS_BIC","QGSP_INCLXX",
"Shielding"};
for(size_t i=0; i<nlists_hadr; ++i) {
listnames_hadr.push_back(s[i]);
listnames_hadr.push_back(ss[i]);
}
nlists_em = 6;
G4String s1[6] = {"","_EMV","_EMX","_EMY","_LIV","_PEN"};
nlists_em = 7;
G4String s1[7] = {"","_EMV","_EMX","_EMY","_EMZ","_LIV","_PEN"};
for(size_t i=0; i<nlists_em; ++i) {
listnames_em.push_back(s1[i]);
}
@@ -144,6 +146,8 @@ G4PhysListFactory::GetReferencePhysList(const G4String& name)
if(had_name == "CHIPS") {p = new CHIPS(verbose);}
else if(had_name == "FTFP_BERT") {p = new FTFP_BERT(verbose);}
else if(had_name == "FTFP_BERT_TRV") {p = new FTFP_BERT_TRV(verbose);}
else if(had_name == "FTFP_BERT_HP") {p = new FTFP_BERT_HP(verbose);}
// else if(had_name == "FTFP_BERT_DE") {p = new FTFP_BERT_DE(verbose);}
else if(had_name == "FTF_BIC") {p = new FTF_BIC(verbose);}
else if(had_name == "LBE") {p = new LBE();}
else if(had_name == "LHEP") {p = new LHEP(verbose);}
@@ -157,7 +161,6 @@ G4PhysListFactory::GetReferencePhysList(const G4String& name)
else if(had_name == "QGSP_FTFP_BERT") {p = new QGSP_FTFP_BERT(verbose);}
else if(had_name == "QGS_BIC") {p = new QGS_BIC(verbose);}
else if(had_name == "QGSP_INCLXX") {p = new QGSP_INCLXX(verbose);}
else if(had_name == "QGSP_INCL_ABLA") {p = new QGSP_INCL_ABLA(verbose);}
else if(had_name == "Shielding") {p = new Shielding(verbose);}
else if(had_name == "ShieldingLEND") {p = new Shielding(verbose,"LEND");}
else {
@@ -178,8 +181,10 @@ G4PhysListFactory::GetReferencePhysList(const G4String& name)
} else if(3 == em_opt) {
p->ReplacePhysics(new G4EmStandardPhysics_option3(verbose));
} else if(4 == em_opt) {
p->ReplacePhysics(new G4EmLivermorePhysics(verbose));
p->ReplacePhysics(new G4EmStandardPhysics_option4(verbose));
} else if(5 == em_opt) {
p->ReplacePhysics(new G4EmLivermorePhysics(verbose));
} else if(6 == em_opt) {
p->ReplacePhysics(new G4EmPenelopePhysics(verbose));
}
}
@@ -23,8 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4VHadronPhysics.cc,v 1.3 2009-11-25 19:33:18 vnivanch Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
// $Id$
//
//---------------------------------------------------------------------------
//
@@ -38,6 +37,7 @@
//
#include "G4VHadronPhysics.hh"
#include "G4SystemOfUnits.hh"
#include "G4ParticleDefinition.hh"
#include "G4VCrossSectionDataSet.hh"
#include "G4HadronicProcessType.hh"
@@ -238,7 +238,7 @@ G4VHadronPhysics::FindInelasticProcess(const G4ParticleDefinition* p)
}
}
G4ParticleDefinition* part = const_cast<G4ParticleDefinition*>(p);
had = new G4HadronInelasticProcess("hInelastic",part);
had = new G4HadronInelasticProcess(part->GetParticleName()+"Inelastic",part);
pmanager->AddDiscreteProcess(had);
return had;
}
@@ -23,8 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: HadronPhysicsCHIPS.cc,v 1.3 2010-06-03 10:42:44 gunter Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
// $Id$
//
//---------------------------------------------------------------------------
//
@@ -50,10 +49,11 @@
HadronPhysicsCHIPS::HadronPhysicsCHIPS(G4int)
: G4VPhysicsConstructor( "CHIPS hadronic")
, theInelasticCHIPS(0)
// , verbosity(verbose)
{}
HadronPhysicsCHIPS::HadronPhysicsCHIPS(const G4String& name): G4VPhysicsConstructor(name)
HadronPhysicsCHIPS::HadronPhysicsCHIPS(const G4String& name): G4VPhysicsConstructor(name), theInelasticCHIPS(0)
{}
HadronPhysicsCHIPS::~HadronPhysicsCHIPS()
@@ -0,0 +1,80 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// ClassName: HadronPhysicsCHIPS_HP
//
// Author: 2012 M.Kosov
//
// Modified:
//
//----------------------------------------------------------------------------
//
#include "HadronPhysicsCHIPS_HP.hh"
#include "globals.hh"
#include "G4ios.hh"
#include <iomanip>
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
#include "G4MesonConstructor.hh"
#include "G4BaryonConstructor.hh"
#include "G4ShortLivedConstructor.hh"
HadronPhysicsCHIPS_HP::HadronPhysicsCHIPS_HP(G4int)
: G4VPhysicsConstructor( "CHIPS_HP hadronic")
,theInelasticCHIPS_HP(0)
// , verbosity(verbose)
{}
HadronPhysicsCHIPS_HP::HadronPhysicsCHIPS_HP(const G4String& name)
: G4VPhysicsConstructor(name)
, theInelasticCHIPS_HP(0)
{}
HadronPhysicsCHIPS_HP::~HadronPhysicsCHIPS_HP()
{
delete theInelasticCHIPS_HP;
}
void HadronPhysicsCHIPS_HP::ConstructParticle()
{
G4MesonConstructor pMesonConstructor;
pMesonConstructor.ConstructParticle();
G4BaryonConstructor pBaryonConstructor;
pBaryonConstructor.ConstructParticle();
G4ShortLivedConstructor pShortLivedConstructor;
pShortLivedConstructor.ConstructParticle();
}
#include "G4ProcessManager.hh"
void HadronPhysicsCHIPS_HP::ConstructProcess()
{
theInelasticCHIPS_HP = new G4QInelasticCHIPS_HPBuilder(0); // No verbose (@@)
theInelasticCHIPS_HP->Build();
}
@@ -23,8 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: HadronPhysicsFTFP_BERT.cc,v 1.4 2010-06-15 11:03:50 vnivanch Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
// $Id$
//
//---------------------------------------------------------------------------
//
@@ -37,11 +36,13 @@
//
//----------------------------------------------------------------------------
//
#include <iomanip>
#include "HadronPhysicsFTFP_BERT.hh"
#include "globals.hh"
#include "G4ios.hh"
#include <iomanip>
#include "G4SystemOfUnits.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
@@ -49,15 +50,58 @@
#include "G4BaryonConstructor.hh"
#include "G4ShortLivedConstructor.hh"
#include "G4QHadronInelasticDataSet.hh"
#include "G4ChipsKaonMinusInelasticXS.hh"
#include "G4ChipsKaonPlusInelasticXS.hh"
#include "G4ChipsKaonZeroInelasticXS.hh"
#include "G4CrossSectionDataSetRegistry.hh"
#include "G4PhysListUtil.hh"
// factory
#include "G4PhysicsConstructorFactory.hh"
//
G4_DECLARE_PHYSCONSTR_FACTORY(HadronPhysicsFTFP_BERT);
HadronPhysicsFTFP_BERT::HadronPhysicsFTFP_BERT(G4int)
: G4VPhysicsConstructor("hInelastic FTFP_BERT")
, QuasiElastic(false)
: G4VPhysicsConstructor("hInelastic FTFP_BERT")
, theNeutrons(0)
, theBertiniNeutron(0)
, theFTFPNeutron(0)
, theLEPNeutron(0)
, thePiK(0)
, theBertiniPiK(0)
, theFTFPPiK(0)
, thePro(0)
, theBertiniPro(0)
, theFTFPPro(0)
, theHyperon(0)
, theAntiBaryon(0)
, theFTFPAntiBaryon(0)
, QuasiElastic(false)
, ChipsKaonMinus(0)
, ChipsKaonPlus(0)
, ChipsKaonZero(0)
{}
HadronPhysicsFTFP_BERT::HadronPhysicsFTFP_BERT(const G4String& name, G4bool quasiElastic)
: G4VPhysicsConstructor(name) , QuasiElastic(quasiElastic)
: G4VPhysicsConstructor(name)
, theNeutrons(0)
, theBertiniNeutron(0)
, theFTFPNeutron(0)
, theLEPNeutron(0)
, thePiK(0)
, theBertiniPiK(0)
, theFTFPPiK(0)
, thePro(0)
, theBertiniPro(0)
, theFTFPPro(0)
, theHyperon(0)
, theAntiBaryon(0)
, theFTFPAntiBaryon(0)
, QuasiElastic(quasiElastic)
, ChipsKaonMinus(0)
, ChipsKaonPlus(0)
, ChipsKaonZero(0)
{}
void HadronPhysicsFTFP_BERT::CreateModels()
@@ -109,8 +153,6 @@ HadronPhysicsFTFP_BERT::~HadronPhysicsFTFP_BERT()
delete theHyperon;
delete theAntiBaryon;
delete theFTFPAntiBaryon;
delete theCHIPSInelastic;
}
void HadronPhysicsFTFP_BERT::ConstructParticle()
@@ -132,33 +174,19 @@ void HadronPhysicsFTFP_BERT::ConstructProcess()
theNeutrons->Build();
thePro->Build();
thePiK->Build();
// use CHIPS cross sections also for Kaons
theCHIPSInelastic = new G4QHadronInelasticDataSet();
FindInelasticProcess(G4KaonMinus::KaonMinus())->AddDataSet(theCHIPSInelastic);
FindInelasticProcess(G4KaonPlus::KaonPlus())->AddDataSet(theCHIPSInelastic);
FindInelasticProcess(G4KaonZeroShort::KaonZeroShort())->AddDataSet(theCHIPSInelastic);
FindInelasticProcess(G4KaonZeroLong::KaonZeroLong())->AddDataSet(theCHIPSInelastic);
// use CHIPS cross sections also for Kaons
ChipsKaonMinus = G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsKaonMinusInelasticXS::Default_Name());
ChipsKaonPlus = G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsKaonPlusInelasticXS::Default_Name());
ChipsKaonZero = G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsKaonZeroInelasticXS::Default_Name());
//
G4PhysListUtil::FindInelasticProcess(G4KaonMinus::KaonMinus())->AddDataSet(ChipsKaonMinus);
G4PhysListUtil::FindInelasticProcess(G4KaonPlus::KaonPlus())->AddDataSet(ChipsKaonPlus);
G4PhysListUtil::FindInelasticProcess(G4KaonZeroShort::KaonZeroShort())->AddDataSet(ChipsKaonZero );
G4PhysListUtil::FindInelasticProcess(G4KaonZeroLong::KaonZeroLong())->AddDataSet(ChipsKaonZero );
theHyperon->Build();
theAntiBaryon->Build();
}
G4HadronicProcess*
HadronPhysicsFTFP_BERT::FindInelasticProcess(const G4ParticleDefinition* p)
{
G4HadronicProcess* had = 0;
if(p) {
G4ProcessVector* pvec = p->GetProcessManager()->GetProcessList();
size_t n = pvec->size();
if(0 < n) {
for(size_t i=0; i<n; ++i) {
if(fHadronInelastic == ((*pvec)[i])->GetProcessSubType()) {
had = static_cast<G4HadronicProcess*>((*pvec)[i]);
break;
}
}
}
}
return had;
}
@@ -0,0 +1,187 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//------------------------------------------------------------------------
//
// Modified:
//
//------------------------------------------------------------------------
//
#include "HadronPhysicsFTFP_BERT_HP.hh"
#include <iomanip>
#include "globals.hh"
#include "G4ios.hh"
#include "G4SystemOfUnits.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
#include "G4MesonConstructor.hh"
#include "G4BaryonConstructor.hh"
#include "G4ShortLivedConstructor.hh"
#include "G4ChipsKaonMinusInelasticXS.hh"
#include "G4ChipsKaonPlusInelasticXS.hh"
#include "G4ChipsKaonZeroInelasticXS.hh"
#include "G4CrossSectionDataSetRegistry.hh"
#include "G4PhysListUtil.hh"
// factory
#include "G4PhysicsConstructorFactory.hh"
//
G4_DECLARE_PHYSCONSTR_FACTORY(HadronPhysicsFTFP_BERT_HP);
HadronPhysicsFTFP_BERT_HP::HadronPhysicsFTFP_BERT_HP(G4int)
: G4VPhysicsConstructor("hInelastic FTFP_BERT_HP")
, theNeutrons(0)
, theBertiniNeutron(0)
, theFTFPNeutron(0)
, theLEPNeutron(0)
, theHPNeutron(0)
, thePiK(0)
, theBertiniPiK(0)
, theFTFPPiK(0)
, thePro(0)
, theBertiniPro(0)
, theFTFPPro(0)
, theHyperon(0)
, theAntiBaryon(0)
, theFTFPAntiBaryon(0)
, QuasiElastic(false)
, ChipsKaonMinus(0)
, ChipsKaonPlus(0)
, ChipsKaonZero(0)
{}
HadronPhysicsFTFP_BERT_HP::HadronPhysicsFTFP_BERT_HP(const G4String& name, G4bool quasiElastic)
: G4VPhysicsConstructor(name)
, theNeutrons(0)
, theBertiniNeutron(0)
, theFTFPNeutron(0)
, theLEPNeutron(0)
, theHPNeutron(0)
, thePiK(0)
, theBertiniPiK(0)
, theFTFPPiK(0)
, thePro(0)
, theBertiniPro(0)
, theFTFPPro(0)
, theHyperon(0)
, theAntiBaryon(0)
, theFTFPAntiBaryon(0)
, QuasiElastic(quasiElastic)
, ChipsKaonMinus(0)
, ChipsKaonPlus(0)
, ChipsKaonZero(0)
{}
void HadronPhysicsFTFP_BERT_HP::CreateModels()
{
theNeutrons=new G4NeutronBuilder;
theFTFPNeutron=new G4FTFPNeutronBuilder(QuasiElastic);
theNeutrons->RegisterMe(theFTFPNeutron);
theNeutrons->RegisterMe(theBertiniNeutron=new G4BertiniNeutronBuilder);
theBertiniNeutron->SetMinEnergy(19.9*MeV);
theNeutrons->RegisterMe(theLEPNeutron=new G4LEPNeutronBuilder);
theLEPNeutron->SetMinEnergy(19.9*MeV);
theLEPNeutron->SetMinInelasticEnergy(0.0*eV); // no inelastic from LEP
theLEPNeutron->SetMaxInelasticEnergy(0.0*eV);
theBertiniNeutron->SetMaxEnergy(5*GeV);
theNeutrons->RegisterMe(theHPNeutron=new G4NeutronHPBuilder);
thePro=new G4ProtonBuilder;
theFTFPPro=new G4FTFPProtonBuilder(QuasiElastic);
thePro->RegisterMe(theFTFPPro);
thePro->RegisterMe(theBertiniPro=new G4BertiniProtonBuilder);
theBertiniPro->SetMaxEnergy(5*GeV);
thePiK=new G4PiKBuilder;
theFTFPPiK=new G4FTFPPiKBuilder(QuasiElastic);
thePiK->RegisterMe(theFTFPPiK);
thePiK->RegisterMe(theBertiniPiK=new G4BertiniPiKBuilder);
theBertiniPiK->SetMaxEnergy(5*GeV);
theHyperon=new G4HyperonFTFPBuilder;
theAntiBaryon=new G4AntiBarionBuilder;
theAntiBaryon->RegisterMe(theFTFPAntiBaryon=new G4FTFPAntiBarionBuilder(QuasiElastic));
}
HadronPhysicsFTFP_BERT_HP::~HadronPhysicsFTFP_BERT_HP()
{
delete theNeutrons;
delete theBertiniNeutron;
delete theFTFPNeutron;
delete theLEPNeutron;
delete theHPNeutron;
delete thePiK;
delete theBertiniPiK;
delete theFTFPPiK;
delete thePro;
delete theBertiniPro;
delete theFTFPPro;
delete theHyperon;
delete theAntiBaryon;
delete theFTFPAntiBaryon;
}
void HadronPhysicsFTFP_BERT_HP::ConstructParticle()
{
G4MesonConstructor pMesonConstructor;
pMesonConstructor.ConstructParticle();
G4BaryonConstructor pBaryonConstructor;
pBaryonConstructor.ConstructParticle();
G4ShortLivedConstructor pShortLivedConstructor;
pShortLivedConstructor.ConstructParticle();
}
#include "G4ProcessManager.hh"
void HadronPhysicsFTFP_BERT_HP::ConstructProcess()
{
CreateModels();
theNeutrons->Build();
thePro->Build();
thePiK->Build();
// use CHIPS cross sections also for Kaons
ChipsKaonMinus = G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsKaonMinusInelasticXS::Default_Name());
ChipsKaonPlus = G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsKaonPlusInelasticXS::Default_Name());
ChipsKaonZero = G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsKaonZeroInelasticXS::Default_Name());
G4PhysListUtil::FindInelasticProcess(G4KaonMinus::KaonMinus())->AddDataSet(ChipsKaonMinus);
G4PhysListUtil::FindInelasticProcess(G4KaonPlus::KaonPlus())->AddDataSet(ChipsKaonPlus);
G4PhysListUtil::FindInelasticProcess(G4KaonZeroShort::KaonZeroShort())->AddDataSet(ChipsKaonZero );
G4PhysListUtil::FindInelasticProcess(G4KaonZeroLong::KaonZeroLong())->AddDataSet(ChipsKaonZero );
theHyperon->Build();
theAntiBaryon->Build();
}
@@ -23,8 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: HadronPhysicsFTFP_BERT_TRV.cc,v 1.2 2010-06-03 10:42:44 gunter Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
// $Id$
//
//---------------------------------------------------------------------------
//
@@ -37,29 +36,82 @@
//
//----------------------------------------------------------------------------
//
#include <iomanip>
#include "HadronPhysicsFTFP_BERT_TRV.hh"
#include "globals.hh"
#include "G4ios.hh"
#include <iomanip>
#include "G4SystemOfUnits.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
#include "G4MesonConstructor.hh"
#include "G4BaryonConstructor.hh"
#include "G4ShortLivedConstructor.hh"
#include "G4HadronCaptureProcess.hh"
#include "G4NeutronRadCapture.hh"
#include "G4HadronFissionProcess.hh"
#include "G4LFission.hh"
#include "G4ChipsKaonMinusInelasticXS.hh"
#include "G4ChipsKaonPlusInelasticXS.hh"
#include "G4ChipsKaonZeroInelasticXS.hh"
#include "G4CrossSectionDataSetRegistry.hh"
#include "G4NeutronInelasticXS.hh"
#include "G4NeutronCaptureXS.hh"
#include "G4PhysListUtil.hh"
// factory
#include "G4PhysicsConstructorFactory.hh"
//
G4_DECLARE_PHYSCONSTR_FACTORY(HadronPhysicsFTFP_BERT_TRV);
HadronPhysicsFTFP_BERT_TRV::HadronPhysicsFTFP_BERT_TRV(G4int)
: G4VPhysicsConstructor("hInelastic FTFP_BERT_TRV")
, QuasiElastic(false)
: G4VPhysicsConstructor("hInelastic FTFP_BERT_TRV")
, theNeutrons(0)
, theBertiniNeutron(0)
, theFTFPNeutron(0)
, thePiK(0)
, theBertiniPiK(0)
, theFTFPPiK(0)
, thePro(0)
, theBertiniPro(0)
, theFTFPPro(0)
, theHyperon(0)
, theAntiBaryon(0)
, theFTFPAntiBaryon(0)
, QuasiElastic(false)
, ChipsKaonMinus(0)
, ChipsKaonPlus(0)
, ChipsKaonZero(0)
, xsNeutronInelasticXS(0)
, xsNeutronCaptureXS(0)
{}
HadronPhysicsFTFP_BERT_TRV::HadronPhysicsFTFP_BERT_TRV(const G4String& name, G4bool quasiElastic)
: G4VPhysicsConstructor(name) , QuasiElastic(quasiElastic)
: G4VPhysicsConstructor(name)
, theNeutrons(0)
, theBertiniNeutron(0)
, theFTFPNeutron(0)
, thePiK(0)
, theBertiniPiK(0)
, theFTFPPiK(0)
, thePro(0)
, theBertiniPro(0)
, theFTFPPro(0)
, theHyperon(0)
, theAntiBaryon(0)
, theFTFPAntiBaryon(0)
, QuasiElastic(quasiElastic)
, ChipsKaonMinus(0)
, ChipsKaonPlus(0)
, ChipsKaonZero(0)
, xsNeutronInelasticXS(0)
, xsNeutronCaptureXS(0)
{}
void HadronPhysicsFTFP_BERT_TRV::CreateModels()
{
G4double minFTFP= 3.0 * GeV;
@@ -79,10 +131,6 @@ void HadronPhysicsFTFP_BERT_TRV::CreateModels()
theFTFPNeutron=new G4FTFPNeutronBuilder(QuasiElastic);
theNeutrons->RegisterMe(theFTFPNeutron);
theFTFPNeutron->SetMinEnergy(minFTFP);
// Exclude LEP -- don't even register it
theNeutrons->RegisterMe(theLEPNeutron=new G4LEPNeutronBuilder);
theLEPNeutron->SetMinInelasticEnergy(0.0*GeV);
theLEPNeutron->SetMaxInelasticEnergy(0.0*GeV);
thePro=new G4ProtonBuilder;
theFTFPPro=new G4FTFPProtonBuilder(QuasiElastic);
@@ -121,8 +169,9 @@ HadronPhysicsFTFP_BERT_TRV::~HadronPhysicsFTFP_BERT_TRV()
delete theHyperon;
delete theAntiBaryon;
delete theFTFPAntiBaryon;
delete theCHIPSInelastic;
delete xsNeutronInelasticXS;
delete xsNeutronCaptureXS;
}
void HadronPhysicsFTFP_BERT_TRV::ConstructParticle()
@@ -144,15 +193,50 @@ void HadronPhysicsFTFP_BERT_TRV::ConstructProcess()
theNeutrons->Build();
thePro->Build();
thePiK->Build();
// use CHIPS cross sections also for Kaons
theCHIPSInelastic = new G4QHadronInelasticDataSet();
G4PhysListUtil::FindInelasticProcess(G4KaonMinus::KaonMinus())->AddDataSet(theCHIPSInelastic);
G4PhysListUtil::FindInelasticProcess(G4KaonPlus::KaonPlus())->AddDataSet(theCHIPSInelastic);
G4PhysListUtil::FindInelasticProcess(G4KaonZeroShort::KaonZeroShort())->AddDataSet(theCHIPSInelastic);
G4PhysListUtil::FindInelasticProcess(G4KaonZeroLong::KaonZeroLong())->AddDataSet(theCHIPSInelastic);
theHyperon->Build();
theAntiBaryon->Build();
// --- Kaons ---
// Use Chips cross sections
ChipsKaonMinus = G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsKaonMinusInelasticXS::Default_Name());
ChipsKaonPlus = G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsKaonPlusInelasticXS::Default_Name());
ChipsKaonZero = G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsKaonZeroInelasticXS::Default_Name());
G4PhysListUtil::FindInelasticProcess(G4KaonMinus::KaonMinus())->AddDataSet(ChipsKaonMinus);
G4PhysListUtil::FindInelasticProcess(G4KaonPlus::KaonPlus())->AddDataSet(ChipsKaonPlus);
G4PhysListUtil::FindInelasticProcess(G4KaonZeroShort::KaonZeroShort())->AddDataSet(ChipsKaonZero);
G4PhysListUtil::FindInelasticProcess(G4KaonZeroLong::KaonZeroLong())->AddDataSet(ChipsKaonZero);
// --- Neutrons ---
// Use the same cross sections and neutron capture as in QBBC.
// Need also to assigned a model (Gheisha) to fission.
xsNeutronInelasticXS = new G4NeutronInelasticXS();
G4PhysListUtil::FindInelasticProcess(G4Neutron::Neutron())->AddDataSet(xsNeutronInelasticXS);
G4HadronicProcess* capture = 0;
G4HadronicProcess* fission = 0;
G4ProcessManager* pmanager = G4Neutron::Neutron()->GetProcessManager();
G4ProcessVector* pv = pmanager->GetProcessList();
for ( size_t i=0; i < static_cast<size_t>(pv->size()); ++i ) {
if ( fCapture == ((*pv)[i])->GetProcessSubType() ) {
capture = static_cast<G4HadronicProcess*>((*pv)[i]);
} else if ( fFission == ((*pv)[i])->GetProcessSubType() ) {
fission = static_cast<G4HadronicProcess*>((*pv)[i]);
}
}
if ( ! capture ) {
capture = new G4HadronCaptureProcess("nCapture");
pmanager->AddDiscreteProcess(capture);
}
xsNeutronCaptureXS = new G4NeutronCaptureXS();
capture->AddDataSet(xsNeutronCaptureXS);
capture->RegisterMe(new G4NeutronRadCapture());
if ( ! fission ) {
fission = new G4HadronFissionProcess("nFission");
pmanager->AddDiscreteProcess(fission);
}
fission->RegisterMe(new G4LFission());
}
@@ -23,8 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: HadronPhysicsFTF_BIC.cc,v 1.3 2010-06-03 10:42:44 gunter Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
// $Id$
//
//---------------------------------------------------------------------------
//
@@ -36,11 +35,13 @@
//
//----------------------------------------------------------------------------
//
#include <iomanip>
#include "HadronPhysicsFTF_BIC.hh"
#include "globals.hh"
#include "G4ios.hh"
#include <iomanip>
#include "G4SystemOfUnits.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
@@ -48,13 +49,51 @@
#include "G4BaryonConstructor.hh"
#include "G4ShortLivedConstructor.hh"
// factory
#include "G4PhysicsConstructorFactory.hh"
//
G4_DECLARE_PHYSCONSTR_FACTORY(HadronPhysicsFTF_BIC);
HadronPhysicsFTF_BIC::HadronPhysicsFTF_BIC(G4int)
: G4VPhysicsConstructor("hInelastic FTF_BIC")
, QuasiElastic(false)
: G4VPhysicsConstructor("hInelastic FTF_BIC")
, theNeutrons(0)
, theLEPNeutron(0)
, theFTFBinaryNeutron(0)
, theBinaryNeutron(0)
, thePion(0)
, theKaon(0)
, theBICPion(0)
, theBertiniKaon(0)
, theFTFBinaryPion(0)
, theFTFBinaryKaon(0)
, thePro(0)
, theFTFBinaryPro(0)
, theBinaryPro(0)
, theHyperon(0)
, theAntiBaryon(0)
, theFTFPAntiBaryon(0)
, QuasiElastic(false)
{}
HadronPhysicsFTF_BIC::HadronPhysicsFTF_BIC(const G4String& name, G4bool quasiElastic)
: G4VPhysicsConstructor(name) , QuasiElastic(quasiElastic)
: G4VPhysicsConstructor(name)
, theNeutrons(0)
, theLEPNeutron(0)
, theFTFBinaryNeutron(0)
, theBinaryNeutron(0)
, thePion(0)
, theKaon(0)
, theBICPion(0)
, theBertiniKaon(0)
, theFTFBinaryPion(0)
, theFTFBinaryKaon(0)
, thePro(0)
, theFTFBinaryPro(0)
, theBinaryPro(0)
, theHyperon(0)
, theAntiBaryon(0)
, theFTFPAntiBaryon(0)
, QuasiElastic(quasiElastic)
{}
void HadronPhysicsFTF_BIC::CreateModels()
@@ -23,8 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: HadronPhysicsLHEP.cc,v 1.2 2010-06-03 10:42:44 gunter Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
// $Id$
//
//---------------------------------------------------------------------------
//
@@ -34,6 +33,7 @@
//
// Modified:
// 21.11.2005 G.Folger: don't keep processes as data members, but new these
// 16.10.2012 A.Ribon: renamed stopping builder
//
//----------------------------------------------------------------------------
//
@@ -49,12 +49,33 @@
#include "G4BaryonConstructor.hh"
#include "G4ShortLivedConstructor.hh"
// factory
#include "G4PhysicsConstructorFactory.hh"
//
G4_DECLARE_PHYSCONSTR_FACTORY(HadronPhysicsLHEP);
HadronPhysicsLHEP::HadronPhysicsLHEP(G4int)
: G4VPhysicsConstructor("hInelastic LHEP")
: G4VPhysicsConstructor("hInelastic LHEP")
, theNeutrons(0)
, theLHEPNeutron(0)
, thePiK(0)
, theLHEPPiK(0)
, thePro(0)
, theLHEPPro(0)
, theMiscLHEP(0)
, theStoppingHadron(0)
{}
HadronPhysicsLHEP::HadronPhysicsLHEP(const G4String& name)
: G4VPhysicsConstructor(name)
: G4VPhysicsConstructor(name)
, theNeutrons(0)
, theLHEPNeutron(0)
, thePiK(0)
, theLHEPPiK(0)
, thePro(0)
, theLHEPPro(0)
, theMiscLHEP(0)
, theStoppingHadron(0)
{}
void HadronPhysicsLHEP::CreateModels()
@@ -69,7 +90,7 @@ void HadronPhysicsLHEP::CreateModels()
thePiK->RegisterMe(theLHEPPiK=new G4LHEPPiKBuilder);
theMiscLHEP=new G4MiscLHEPBuilder;
theStoppingHadron=new G4StoppingHadronBuilder;
theStoppingHadron=new G4LHEPStoppingHadronBuilder;
}
HadronPhysicsLHEP::~HadronPhysicsLHEP()
@@ -23,8 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: HadronPhysicsLHEP_EMV.cc,v 1.2 2010-06-03 10:42:44 gunter Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
// $Id$
//
//---------------------------------------------------------------------------
//
@@ -44,12 +43,31 @@
#include "G4ios.hh"
#include <iomanip>
HadronPhysicsLHEP_EMV::HadronPhysicsLHEP_EMV(G4int)
: G4VPhysicsConstructor("hInelastic LHEP_EMV")
// factory
#include "G4PhysicsConstructorFactory.hh"
//
G4_DECLARE_PHYSCONSTR_FACTORY(HadronPhysicsLHEP_EMV);
HadronPhysicsLHEP_EMV::HadronPhysicsLHEP_EMV(G4int)
: G4VPhysicsConstructor("hInelastic LHEP_EMV")
, theNeutrons(0)
, theLHEPNeutron(0)
, thePiK(0)
, theLHEPPiK(0)
, thePro(0)
, theLHEPPro(0)
, theMiscLHEP(0)
{}
HadronPhysicsLHEP_EMV::HadronPhysicsLHEP_EMV(const G4String& name)
: G4VPhysicsConstructor(name)
: G4VPhysicsConstructor(name)
, theNeutrons(0)
, theLHEPNeutron(0)
, thePiK(0)
, theLHEPPiK(0)
, thePro(0)
, theLHEPPro(0)
, theMiscLHEP(0)
{}
void HadronPhysicsLHEP_EMV::CreateModels()
@@ -23,8 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: HadronPhysicsQGSC_BERT.cc,v 1.2 2010-06-03 10:42:44 gunter Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
// $Id$
//
//---------------------------------------------------------------------------
//
@@ -37,11 +36,13 @@
//
//----------------------------------------------------------------------------
//
#include <iomanip>
#include "HadronPhysicsQGSC_BERT.hh"
#include "globals.hh"
#include "G4ios.hh"
#include <iomanip>
#include "G4SystemOfUnits.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
@@ -49,13 +50,41 @@
#include "G4BaryonConstructor.hh"
#include "G4ShortLivedConstructor.hh"
// factory
#include "G4PhysicsConstructorFactory.hh"
//
G4_DECLARE_PHYSCONSTR_FACTORY(HadronPhysicsQGSC_BERT);
HadronPhysicsQGSC_BERT::HadronPhysicsQGSC_BERT(G4int)
: G4VPhysicsConstructor("hInelastic QGSC_BERT")
, QuasiElastic(true)
: G4VPhysicsConstructor("hInelastic QGSC_BERT")
, theNeutrons(0)
, theQGSCNeutron(0)
, theBertiniNeutron(0)
, theLEPNeutron(0)
, thePiK(0)
, theQGSCPiK(0)
, theBertiniPiK(0)
, thePro(0)
, theQGSCPro(0)
, theBertiniPro(0)
, theMiscLHEP(0)
, QuasiElastic(true)
{}
HadronPhysicsQGSC_BERT::HadronPhysicsQGSC_BERT(const G4String& name, G4bool quasiElastic)
: G4VPhysicsConstructor(name) , QuasiElastic(quasiElastic)
: G4VPhysicsConstructor(name)
, theNeutrons(0)
, theQGSCNeutron(0)
, theBertiniNeutron(0)
, theLEPNeutron(0)
, thePiK(0)
, theQGSCPiK(0)
, theBertiniPiK(0)
, thePro(0)
, theQGSCPro(0)
, theBertiniPro(0)
, theMiscLHEP(0)
, QuasiElastic(quasiElastic)
{}
void HadronPhysicsQGSC_BERT::CreateModels()
@@ -23,8 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: HadronPhysicsQGSC_CHIPS.cc,v 1.7 2010-06-03 10:42:44 gunter Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
// $Id$
//
//---------------------------------------------------------------------------
//
@@ -54,12 +53,13 @@
// MiscQGSC class (QGS with the Energy Flow interface to CHIPS), covering all
// particles, which are not N, pi, or K, defined by the separate builders.
//---------------------------------------------------------------------------
#include <iomanip>
#include "HadronPhysicsQGSC_CHIPS.hh"
#include "globals.hh"
#include "G4ios.hh"
#include <iomanip>
#include "G4SystemOfUnits.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
@@ -68,12 +68,27 @@
#include "G4ShortLivedConstructor.hh"
HadronPhysicsQGSC_CHIPS::HadronPhysicsQGSC_CHIPS(G4int)
: G4VPhysicsConstructor("hInelastic QGSC_CHIPS")
, QuasiElastic(true)
: G4VPhysicsConstructor("hInelastic QGSC_CHIPS")
, theNeut(0)
, theQGSCNeut(0)
, thePiK(0)
, theQGSCPiK(0)
, theProt(0)
, theQGSCProt(0)
, theMiscQGSC(0)
, QuasiElastic(true)
{}
HadronPhysicsQGSC_CHIPS::HadronPhysicsQGSC_CHIPS(const G4String& name, G4bool quasiElastic)
: G4VPhysicsConstructor(name), QuasiElastic(quasiElastic)
: G4VPhysicsConstructor(name)
, theNeut(0)
, theQGSCNeut(0)
, thePiK(0)
, theQGSCPiK(0)
, theProt(0)
, theQGSCProt(0)
, theMiscQGSC(0)
, QuasiElastic(quasiElastic)
{}
void HadronPhysicsQGSC_CHIPS::CreateModels()
@@ -24,8 +24,7 @@
// ********************************************************************
//
//
// $Id: HadronPhysicsQGSP.cc,v 1.5 2010-06-03 10:42:44 gunter Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
// $Id$
//
//---------------------------------------------------------------------------
//
@@ -38,13 +37,15 @@
// 08.06.2006 V.Ivanchenko: remove stopping
// 30.03.2007 G.Folger: Add code for quasielastic
// 12.11.2007 G.Folger: Add code for projectileDiffraction for proton/neutron
// 31.10.2012 A.Ribon: Use G4MiscBuilder
//
#include <iomanip>
#include "HadronPhysicsQGSP.hh"
#include "globals.hh"
#include "G4ios.hh"
#include <iomanip>
#include "G4SystemOfUnits.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
@@ -52,17 +53,43 @@
#include "G4BaryonConstructor.hh"
#include "G4ShortLivedConstructor.hh"
// factory
#include "G4PhysicsConstructorFactory.hh"
//
G4_DECLARE_PHYSCONSTR_FACTORY(HadronPhysicsQGSP);
HadronPhysicsQGSP::HadronPhysicsQGSP(G4int)
: G4VPhysicsConstructor("hInelastic QGSP")
, QuasiElastic(true)
: G4VPhysicsConstructor("hInelastic QGSP")
, theNeutrons(0)
, theLEPNeutron(0)
, theQGSPNeutron(0)
, thePiK(0)
, theLEPPiK(0)
, theQGSPPiK(0)
, thePro(0)
, theLEPPro(0)
, theQGSPPro(0)
, theMisc(0)
, QuasiElastic(true)
, ProjectileDiffraction(false)
{
ProjectileDiffraction=false;
}
HadronPhysicsQGSP::HadronPhysicsQGSP(const G4String& name, G4bool quasiElastic)
: G4VPhysicsConstructor(name) , QuasiElastic(quasiElastic)
: G4VPhysicsConstructor(name)
, theNeutrons(0)
, theLEPNeutron(0)
, theQGSPNeutron(0)
, thePiK(0)
, theLEPPiK(0)
, theQGSPPiK(0)
, thePro(0)
, theLEPPro(0)
, theQGSPPro(0)
, theMisc(0)
, QuasiElastic(quasiElastic)
, ProjectileDiffraction(false)
{
ProjectileDiffraction=false;
}
void HadronPhysicsQGSP::CreateModels()
@@ -85,12 +112,12 @@ void HadronPhysicsQGSP::CreateModels()
thePiK->RegisterMe(theLEPPiK=new G4LEPPiKBuilder);
theLEPPiK->SetMaxEnergy(25*GeV);
theMiscLHEP=new G4MiscLHEPBuilder;
theMisc=new G4MiscBuilder;
}
HadronPhysicsQGSP::~HadronPhysicsQGSP()
{
delete theMiscLHEP;
delete theMisc;
delete theQGSPNeutron;
delete theLEPNeutron;
delete theQGSPPro;
@@ -121,6 +148,6 @@ void HadronPhysicsQGSP::ConstructProcess()
theNeutrons->Build();
thePro->Build();
thePiK->Build();
theMiscLHEP->Build();
theMisc->Build();
}
@@ -23,8 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: HadronPhysicsQGSP_BERT.cc,v 1.5 2010-06-15 11:03:50 vnivanch Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
// $Id$
//
//---------------------------------------------------------------------------
//
@@ -38,14 +37,17 @@
// 20.06.2006 G.Folger: Bertini applies to Kaons, i.e. use SetMinEnergy instead of SetMinPionEnergy
// 25.04.2007 G.Folger: Add code for quasielastic
// 10.12.2007 G.Folger: Add projectilediffrative option for proton/neutron, off by default
// 31.10.2012 A.Ribon: Use G4MiscBuilder
//
//----------------------------------------------------------------------------
//
#include <iomanip>
#include "HadronPhysicsQGSP_BERT.hh"
#include "globals.hh"
#include "G4ios.hh"
#include <iomanip>
#include "G4SystemOfUnits.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
@@ -53,17 +55,50 @@
#include "G4BaryonConstructor.hh"
#include "G4ShortLivedConstructor.hh"
// factory
#include "G4PhysicsConstructorFactory.hh"
//
G4_DECLARE_PHYSCONSTR_FACTORY(HadronPhysicsQGSP_BERT);
HadronPhysicsQGSP_BERT::HadronPhysicsQGSP_BERT(G4int)
: G4VPhysicsConstructor("hInelastic QGSP_BERT")
, QuasiElastic(true)
: G4VPhysicsConstructor("hInelastic QGSP_BERT")
, theNeutrons(0)
, theLEPNeutron(0)
, theQGSPNeutron(0)
, theBertiniNeutron(0)
, thePiK(0)
, theLEPPiK(0)
, theQGSPPiK(0)
, theBertiniPiK(0)
, thePro(0)
, theLEPPro(0)
, theQGSPPro(0)
, theBertiniPro(0)
, theMisc(0)
, QuasiElastic(true)
, ProjectileDiffraction(false)
{
ProjectileDiffraction=false;
}
HadronPhysicsQGSP_BERT::HadronPhysicsQGSP_BERT(const G4String& name, G4bool quasiElastic)
: G4VPhysicsConstructor(name) , QuasiElastic(quasiElastic)
: G4VPhysicsConstructor(name)
, theNeutrons(0)
, theLEPNeutron(0)
, theQGSPNeutron(0)
, theBertiniNeutron(0)
, thePiK(0)
, theLEPPiK(0)
, theQGSPPiK(0)
, theBertiniPiK(0)
, thePro(0)
, theLEPPro(0)
, theQGSPPro(0)
, theBertiniPro(0)
, theMisc(0)
, QuasiElastic(quasiElastic)
, ProjectileDiffraction(false)
{
ProjectileDiffraction=false;
}
void HadronPhysicsQGSP_BERT::CreateModels()
@@ -96,12 +131,12 @@ void HadronPhysicsQGSP_BERT::CreateModels()
thePiK->RegisterMe(theBertiniPiK=new G4BertiniPiKBuilder);
theBertiniPiK->SetMaxEnergy(9.9*GeV);
theMiscLHEP=new G4MiscLHEPBuilder;
theMisc=new G4MiscBuilder;
}
HadronPhysicsQGSP_BERT::~HadronPhysicsQGSP_BERT()
{
delete theMiscLHEP;
delete theMisc;
delete theQGSPNeutron;
delete theLEPNeutron;
delete theNeutrons;
@@ -135,6 +170,6 @@ void HadronPhysicsQGSP_BERT::ConstructProcess()
theNeutrons->Build();
thePro->Build();
thePiK->Build();
theMiscLHEP->Build();
theMisc->Build();
}
@@ -0,0 +1,235 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
//
//---------------------------------------------------------------------------
//
// Modified:
//
//----------------------------------------------------------------------------
//
#include <iomanip>
#include "HadronPhysicsQGSP_BERT_95.hh"
#include "globals.hh"
#include "G4ios.hh"
#include "G4SystemOfUnits.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
#include "G4MesonConstructor.hh"
#include "G4BaryonConstructor.hh"
#include "G4ShortLivedConstructor.hh"
#include "G4PiNuclearCrossSection.hh"
#include "G4HadronInelasticDataSet.hh"
#include "G4CrossSectionDataSetRegistry.hh"
#include "G4CrossSectionPairGG.hh"
#include "G4ProtonInelasticCrossSection.hh"
#include "G4NeutronInelasticCrossSection.hh"
#include "G4PhysListUtil.hh"
// factory
#include "G4PhysicsConstructorFactory.hh"
//
G4_DECLARE_PHYSCONSTR_FACTORY(HadronPhysicsQGSP_BERT_95);
HadronPhysicsQGSP_BERT_95::HadronPhysicsQGSP_BERT_95(G4int)
: G4VPhysicsConstructor("hInelastic QGSP_BERT_95")
, theNeutrons(0)
, theLEPNeutron(0)
, theQGSPNeutron(0)
, theBertiniNeutron(0)
, thePiK(0)
, theLEPPiK(0)
, theQGSPPiK(0)
, theBertiniPiK(0)
, thePro(0)
, theLEPPro(0)
, theQGSPPro(0)
, theBertiniPro(0)
, theMiscLHEP(0)
, QuasiElastic(true)
, ProjectileDiffraction(false)
, xsBarashenkovGGPion(0)
, xsGeisha(0)
, xsAxenWellischGGProton(0)
, xsLaidlawWellischGGNeutron(0)
{
}
HadronPhysicsQGSP_BERT_95::HadronPhysicsQGSP_BERT_95(const G4String& name, G4bool quasiElastic)
: G4VPhysicsConstructor(name)
, theNeutrons(0)
, theLEPNeutron(0)
, theQGSPNeutron(0)
, theBertiniNeutron(0)
, thePiK(0)
, theLEPPiK(0)
, theQGSPPiK(0)
, theBertiniPiK(0)
, thePro(0)
, theLEPPro(0)
, theQGSPPro(0)
, theBertiniPro(0)
, theMiscLHEP(0)
, QuasiElastic(quasiElastic)
, ProjectileDiffraction(false)
, xsBarashenkovGGPion(0)
, xsGeisha(0)
, xsAxenWellischGGProton(0)
, xsLaidlawWellischGGNeutron(0)
{
}
void HadronPhysicsQGSP_BERT_95::CreateModels()
{
theNeutrons=new G4NeutronBuilder;
theNeutrons->RegisterMe(theQGSPNeutron=new G4QGSPNeutronBuilder(QuasiElastic, ProjectileDiffraction));
theNeutrons->RegisterMe(theLEPNeutron=new G4LEPNeutronBuilder);
theLEPNeutron->SetMinInelasticEnergy(9.5*GeV);
theLEPNeutron->SetMaxInelasticEnergy(25*GeV);
theNeutrons->RegisterMe(theBertiniNeutron=new G4BertiniNeutronBuilder);
theBertiniNeutron->SetMinEnergy(0.0*GeV);
theBertiniNeutron->SetMaxEnergy(9.9*GeV);
thePro=new G4ProtonBuilder;
thePro->RegisterMe(theQGSPPro=new G4QGSPProtonBuilder(QuasiElastic, ProjectileDiffraction));
thePro->RegisterMe(theLEPPro=new G4LEPProtonBuilder);
theLEPPro->SetMinEnergy(9.5*GeV);
theLEPPro->SetMaxEnergy(25*GeV);
thePro->RegisterMe(theBertiniPro=new G4BertiniProtonBuilder);
theBertiniPro->SetMaxEnergy(9.9*GeV);
thePiK=new G4PiKBuilder;
thePiK->RegisterMe(theQGSPPiK=new G4QGSPPiKBuilder(QuasiElastic));
thePiK->RegisterMe(theLEPPiK=new G4LEPPiKBuilder);
theLEPPiK->SetMaxEnergy(25*GeV);
theLEPPiK->SetMinEnergy(9.5*GeV);
thePiK->RegisterMe(theBertiniPiK=new G4BertiniPiKBuilder);
theBertiniPiK->SetMaxEnergy(9.9*GeV);
theMiscLHEP=new G4MiscLHEPBuilder;
}
HadronPhysicsQGSP_BERT_95::~HadronPhysicsQGSP_BERT_95()
{
delete theMiscLHEP;
delete theQGSPNeutron;
delete theLEPNeutron;
delete theNeutrons;
delete theBertiniNeutron;
delete theQGSPPro;
delete theLEPPro;
delete thePro;
delete theBertiniPro;
delete theQGSPPiK;
delete theLEPPiK;
delete theBertiniPiK;
delete thePiK;
delete xsBarashenkovGGPion;
delete xsGeisha;
delete xsAxenWellischGGProton;
delete xsLaidlawWellischGGNeutron;
}
void HadronPhysicsQGSP_BERT_95::ConstructParticle()
{
G4MesonConstructor pMesonConstructor;
pMesonConstructor.ConstructParticle();
G4BaryonConstructor pBaryonConstructor;
pBaryonConstructor.ConstructParticle();
G4ShortLivedConstructor pShortLivedConstructor;
pShortLivedConstructor.ConstructParticle();
}
#include "G4ProcessManager.hh"
void HadronPhysicsQGSP_BERT_95::ConstructProcess()
{
CreateModels();
theNeutrons->Build();
thePro->Build();
thePiK->Build();
theMiscLHEP->Build();
// Inelastic cross sections
// --- Pions ---
// Use Barashenkov inelastic pion cross section up to 91 GeV,
// and Glauber-Gribov above
xsBarashenkovGGPion = new G4CrossSectionPairGG(new G4PiNuclearCrossSection(), 91*GeV);
G4PhysListUtil::FindInelasticProcess(G4PionPlus::PionPlus())->AddDataSet(xsBarashenkovGGPion);
G4PhysListUtil::FindInelasticProcess(G4PionMinus::PionMinus())->AddDataSet(xsBarashenkovGGPion);
// --- Kaons ---
// Use Geisha inelastic cross sections
xsGeisha = new G4HadronInelasticDataSet();
G4PhysListUtil::FindInelasticProcess(G4KaonMinus::KaonMinus())->AddDataSet(xsGeisha);
G4PhysListUtil::FindInelasticProcess(G4KaonPlus::KaonPlus())->AddDataSet(xsGeisha);
G4PhysListUtil::FindInelasticProcess(G4KaonZeroShort::KaonZeroShort())->AddDataSet(xsGeisha);
G4PhysListUtil::FindInelasticProcess(G4KaonZeroLong::KaonZeroLong())->AddDataSet(xsGeisha);
// --- Protons ---
// Use Axen-Wellisch inelastic proton cross section up to 91 GeV,
// and Glauber-Gribov above
xsAxenWellischGGProton = new G4CrossSectionPairGG(new G4ProtonInelasticCrossSection(), 91*GeV);
G4PhysListUtil::FindInelasticProcess(G4Proton::Proton())->AddDataSet(xsAxenWellischGGProton);
// --- Neutrons ---
// Use Laidlaw-Wellisch inelastic neutron cross section up to 91 GeV,
// and Glauber-Gribov above
xsLaidlawWellischGGNeutron = new G4CrossSectionPairGG(new G4NeutronInelasticCrossSection(), 91*GeV);
G4PhysListUtil::FindInelasticProcess(G4Neutron::Neutron())->AddDataSet(xsLaidlawWellischGGNeutron);
// --- Hyperons ---
// Use Geisha inelastic cross sections
G4PhysListUtil::FindInelasticProcess(G4Lambda::Lambda())->AddDataSet(xsGeisha);
G4PhysListUtil::FindInelasticProcess(G4AntiLambda::AntiLambda())->AddDataSet(xsGeisha);
G4PhysListUtil::FindInelasticProcess(G4SigmaMinus::SigmaMinus())->AddDataSet(xsGeisha);
G4PhysListUtil::FindInelasticProcess(G4AntiSigmaMinus::AntiSigmaMinus())->AddDataSet(xsGeisha);
G4PhysListUtil::FindInelasticProcess(G4SigmaPlus::SigmaPlus())->AddDataSet(xsGeisha);
G4PhysListUtil::FindInelasticProcess(G4AntiSigmaPlus::AntiSigmaPlus())->AddDataSet(xsGeisha);
G4PhysListUtil::FindInelasticProcess(G4XiMinus::XiMinus())->AddDataSet(xsGeisha);
G4PhysListUtil::FindInelasticProcess(G4AntiXiMinus::AntiXiMinus())->AddDataSet(xsGeisha);
G4PhysListUtil::FindInelasticProcess(G4XiZero::XiZero())->AddDataSet(xsGeisha);
G4PhysListUtil::FindInelasticProcess(G4AntiXiZero::AntiXiZero())->AddDataSet(xsGeisha);
G4PhysListUtil::FindInelasticProcess(G4OmegaMinus::OmegaMinus())->AddDataSet(xsGeisha);
G4PhysListUtil::FindInelasticProcess(G4AntiOmegaMinus::AntiOmegaMinus())->AddDataSet(xsGeisha);
// --- AntiBaryons ---
// Use Geisha inelastic cross sections
G4PhysListUtil::FindInelasticProcess(G4AntiProton::AntiProton())->AddDataSet(xsGeisha);
G4PhysListUtil::FindInelasticProcess(G4AntiNeutron::AntiNeutron())->AddDataSet(xsGeisha);
}
@@ -23,8 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: HadronPhysicsQGSP_BERT_CHIPS.cc,v 1.4 2010-11-23 15:09:30 stesting Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
// $Id$
//
//---------------------------------------------------------------------------
//
@@ -37,11 +36,13 @@
//
//----------------------------------------------------------------------------
//
#include <iomanip>
#include "HadronPhysicsQGSP_BERT_CHIPS.hh"
#include "globals.hh"
#include "G4ios.hh"
#include <iomanip>
#include "G4SystemOfUnits.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
#include "G4HadronicProcessType.hh"
@@ -52,17 +53,58 @@
#include "G4QHadronInelasticDataSet.hh"
#include "G4HadronInelasticDataSet.hh"
#include "G4CrossSectionDataSetRegistry.hh"
#include "G4CrossSectionPairGG.hh"
#include "G4ProtonInelasticCrossSection.hh"
#include "G4NeutronInelasticCrossSection.hh"
#include "G4PhysListUtil.hh"
HadronPhysicsQGSP_BERT_CHIPS::HadronPhysicsQGSP_BERT_CHIPS(G4int)
: G4VPhysicsConstructor("hInelastic QGSP_BERT_CHIPS")
, QuasiElastic(true)
: G4VPhysicsConstructor("hInelastic QGSP_BERT_CHIPS")
, theNeutrons(0)
, theLEPNeutron(0)
, theQGSPNeutron(0)
, theBertiniNeutron(0)
, thePion(0)
, theLEPPion(0)
, theQGSPPion(0)
, theBertiniPion(0)
, theKaon(0)
, thePro(0)
, theLEPPro(0)
, theQGSPPro(0)
, theBertiniPro(0)
, theMiscCHIPS(0)
, QuasiElastic(true)
, ProjectileDiffraction(false)
, xsAxenWellischGGProton(0)
, xsLaidlawWellischGGNeutron(0)
{
ProjectileDiffraction=false;
}
HadronPhysicsQGSP_BERT_CHIPS::HadronPhysicsQGSP_BERT_CHIPS(const G4String& name, G4bool quasiElastic)
: G4VPhysicsConstructor(name) , QuasiElastic(quasiElastic)
: G4VPhysicsConstructor(name)
, theNeutrons(0)
, theLEPNeutron(0)
, theQGSPNeutron(0)
, theBertiniNeutron(0)
, thePion(0)
, theLEPPion(0)
, theQGSPPion(0)
, theBertiniPion(0)
, theKaon(0)
, thePro(0)
, theLEPPro(0)
, theQGSPPro(0)
, theBertiniPro(0)
, theMiscCHIPS(0)
, QuasiElastic(quasiElastic)
, ProjectileDiffraction(false)
, xsAxenWellischGGProton(0)
, xsLaidlawWellischGGNeutron(0)
{
ProjectileDiffraction=false;
}
void HadronPhysicsQGSP_BERT_CHIPS::CreateModels()
@@ -116,6 +158,9 @@ HadronPhysicsQGSP_BERT_CHIPS::~HadronPhysicsQGSP_BERT_CHIPS()
delete theBertiniPion;
delete thePion;
delete theKaon;
delete xsAxenWellischGGProton;
delete xsLaidlawWellischGGNeutron;
}
void HadronPhysicsQGSP_BERT_CHIPS::ConstructParticle()
@@ -138,6 +183,19 @@ void HadronPhysicsQGSP_BERT_CHIPS::ConstructProcess()
thePro->Build();
thePion->Build();
theKaon->Build(); // has CHIPS cross sections for Kaons
theMiscCHIPS->Build();
// Inelastic cross sections
// --- Protons ---
// Use Axen-Wellisch inelastic proton cross section up to 91 GeV,
// and Glauber-Gribov above
xsAxenWellischGGProton = new G4CrossSectionPairGG(new G4ProtonInelasticCrossSection(), 91*GeV);
G4PhysListUtil::FindInelasticProcess(G4Proton::Proton())->AddDataSet(xsAxenWellischGGProton);
// --- Neutrons ---
// Use Laidlaw-Wellisch inelastic neutron cross section up to 91 GeV,
// and Glauber-Gribov above
xsLaidlawWellischGGNeutron = new G4CrossSectionPairGG(new G4NeutronInelasticCrossSection(), 91*GeV);
G4PhysListUtil::FindInelasticProcess(G4Neutron::Neutron())->AddDataSet(xsLaidlawWellischGGNeutron);
}
@@ -23,8 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: HadronPhysicsQGSP_BERT_HP.cc,v 1.3 2010-06-03 10:42:44 gunter Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
// $Id$
//
//---------------------------------------------------------------------------
//
@@ -37,14 +36,17 @@
// 08.06.2006 V.Ivanchenko: remove stopping
// 20.06.2006 G.Folger: Bertini applies to Kaons, i.e. use SetMinEnergy instead of SetMinPionEnergy
// 25.04.2007 G.Folger: Add code for quasielastic
// 31.10.2012 A.Ribon: Use G4MiscBuilder
//
//----------------------------------------------------------------------------
//
#include <iomanip>
#include "HadronPhysicsQGSP_BERT_HP.hh"
#include "globals.hh"
#include "G4ios.hh"
#include <iomanip>
#include "G4SystemOfUnits.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
@@ -52,13 +54,47 @@
#include "G4BaryonConstructor.hh"
#include "G4ShortLivedConstructor.hh"
// factory
#include "G4PhysicsConstructorFactory.hh"
//
G4_DECLARE_PHYSCONSTR_FACTORY(HadronPhysicsQGSP_BERT_HP);
HadronPhysicsQGSP_BERT_HP::HadronPhysicsQGSP_BERT_HP(G4int)
: G4VPhysicsConstructor("hInelastic QGSP_BERT_HP")
, QuasiElastic(true)
: G4VPhysicsConstructor("hInelastic QGSP_BERT_HP")
, theNeutrons(0)
, theLEPNeutron(0)
, theQGSPNeutron(0)
, theBertiniNeutron(0)
, theHPNeutron(0)
, thePiK(0)
, theLEPPiK(0) //A.R. 26-Jul-2012 Coverity fix
, theQGSPPiK(0)
, theBertiniPiK(0)
, thePro(0)
, theLEPPro(0) //A.R. 26-Jul-2012 Coverity fix
, theQGSPPro(0)
, theBertiniPro(0)
, theMisc(0)
, QuasiElastic(true)
{}
HadronPhysicsQGSP_BERT_HP::HadronPhysicsQGSP_BERT_HP(const G4String& name, G4bool quasiElastic)
: G4VPhysicsConstructor(name) , QuasiElastic(quasiElastic)
: G4VPhysicsConstructor(name)
, theNeutrons(0)
, theLEPNeutron(0)
, theQGSPNeutron(0)
, theBertiniNeutron(0)
, theHPNeutron(0)
, thePiK(0)
, theLEPPiK(0) //A.R. 26-Jul-2012 Coverity fix
, theQGSPPiK(0)
, theBertiniPiK(0)
, thePro(0)
, theLEPPro(0) //A.R. 26-Jul-2012 Coverity fix
, theQGSPPro(0)
, theBertiniPro(0)
, theMisc(0)
, QuasiElastic(quasiElastic)
{}
void HadronPhysicsQGSP_BERT_HP::CreateModels()
@@ -94,12 +130,12 @@ void HadronPhysicsQGSP_BERT_HP::CreateModels()
thePiK->RegisterMe(theBertiniPiK=new G4BertiniPiKBuilder);
theBertiniPiK->SetMaxEnergy(9.9*GeV);
theMiscLHEP=new G4MiscLHEPBuilder;
theMisc=new G4MiscBuilder;
}
HadronPhysicsQGSP_BERT_HP::~HadronPhysicsQGSP_BERT_HP()
{
delete theMiscLHEP;
delete theMisc;
delete theQGSPNeutron;
delete theLEPNeutron;
delete theBertiniNeutron;
@@ -133,6 +169,6 @@ void HadronPhysicsQGSP_BERT_HP::ConstructProcess()
theNeutrons->Build();
thePro->Build();
thePiK->Build();
theMiscLHEP->Build();
theMisc->Build();
}
@@ -23,8 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: HadronPhysicsQGSP_BERT_NOLEP.cc,v 1.2 2010-06-03 10:42:44 gunter Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
// $Id$
//
//---------------------------------------------------------------------------
//
@@ -34,14 +33,17 @@
// created from HadronPhysicsQGSP_BERT
// Modified:
// 15.10.2005 G.Folger: first version
// 31.10.2012 A.Ribon: Use G4MiscBuilder
//
//----------------------------------------------------------------------------
//
#include <iomanip>
#include "HadronPhysicsQGSP_BERT_NOLEP.hh"
#include "globals.hh"
#include "G4ios.hh"
#include <iomanip>
#include "G4SystemOfUnits.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
@@ -49,17 +51,45 @@
#include "G4BaryonConstructor.hh"
#include "G4ShortLivedConstructor.hh"
// factory
#include "G4PhysicsConstructorFactory.hh"
//
G4_DECLARE_PHYSCONSTR_FACTORY(HadronPhysicsQGSP_BERT_NOLEP);
HadronPhysicsQGSP_BERT_NOLEP::HadronPhysicsQGSP_BERT_NOLEP(G4int)
: G4VPhysicsConstructor("hInelastic QGSP_BERT_NOLEP")
, QuasiElastic(true)
: G4VPhysicsConstructor("hInelastic QGSP_BERT_NOLEP")
, theNeutrons(0)
, theLEPNeutron(0)
, theQGSPNeutron(0)
, theBertiniNeutron(0)
, thePiK(0)
, theQGSPPiK(0)
, theBertiniPiK(0)
, thePro(0)
, theQGSPPro(0)
, theBertiniPro(0)
, theMisc(0)
, QuasiElastic(true)
, ProjectileDiffraction(false)
{
ProjectileDiffraction=false;
}
HadronPhysicsQGSP_BERT_NOLEP::HadronPhysicsQGSP_BERT_NOLEP(const G4String& name, G4bool quasiElastic)
: G4VPhysicsConstructor(name) , QuasiElastic(quasiElastic)
: G4VPhysicsConstructor(name)
, theNeutrons(0)
, theLEPNeutron(0)
, theQGSPNeutron(0)
, theBertiniNeutron(0)
, thePiK(0)
, theQGSPPiK(0)
, theBertiniPiK(0)
, thePro(0)
, theQGSPPro(0)
, theBertiniPro(0)
, theMisc(0)
, QuasiElastic(quasiElastic)
, ProjectileDiffraction(false)
{
ProjectileDiffraction=false;
}
void HadronPhysicsQGSP_BERT_NOLEP::CreateModels()
@@ -90,12 +120,12 @@ void HadronPhysicsQGSP_BERT_NOLEP::CreateModels()
thePiK->RegisterMe(theBertiniPiK=new G4BertiniPiKBuilder);
theBertiniPiK->SetMaxEnergy(9.9*GeV);
theMiscLHEP=new G4MiscLHEPBuilder;
theMisc=new G4MiscBuilder;
}
HadronPhysicsQGSP_BERT_NOLEP::~HadronPhysicsQGSP_BERT_NOLEP()
{
delete theMiscLHEP;
delete theMisc;
delete theQGSPNeutron;
delete theLEPNeutron;
delete theBertiniNeutron;
@@ -126,6 +156,6 @@ void HadronPhysicsQGSP_BERT_NOLEP::ConstructProcess()
theNeutrons->Build();
thePro->Build();
thePiK->Build();
theMiscLHEP->Build();
theMisc->Build();
}
@@ -23,8 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: HadronPhysicsQGSP_BERT_TRV.cc,v 1.3 2010-06-03 10:42:44 gunter Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
// $Id$
//
//---------------------------------------------------------------------------
//
@@ -35,14 +34,17 @@
//
// Modified:
// 27 Nov 2009 G.Folger : change transition energies to reduce use of LEP
// 31 Oct 2012 A.Ribon : use G4MiscBuilder
//
//----------------------------------------------------------------------------
//
#include <iomanip>
#include "HadronPhysicsQGSP_BERT_TRV.hh"
#include "globals.hh"
#include "G4ios.hh"
#include <iomanip>
#include "G4SystemOfUnits.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
@@ -50,13 +52,45 @@
#include "G4BaryonConstructor.hh"
#include "G4ShortLivedConstructor.hh"
// factory
#include "G4PhysicsConstructorFactory.hh"
//
G4_DECLARE_PHYSCONSTR_FACTORY(HadronPhysicsQGSP_BERT_TRV);
HadronPhysicsQGSP_BERT_TRV::HadronPhysicsQGSP_BERT_TRV(G4int)
: G4VPhysicsConstructor("hInelastic QGSP_BERT_TRV")
, QuasiElastic(true)
: G4VPhysicsConstructor("hInelastic QGSP_BERT_TRV")
, theNeutrons(0)
, theLEPNeutron(0)
, theQGSPNeutron(0)
, theBertiniNeutron(0)
, thePiK(0)
, theLEPPiK(0)
, theQGSPPiK(0)
, theBertiniPiK(0)
, thePro(0)
, theLEPPro(0)
, theQGSPPro(0)
, theBertiniPro(0)
, theMisc(0)
, QuasiElastic(true)
{}
HadronPhysicsQGSP_BERT_TRV::HadronPhysicsQGSP_BERT_TRV(const G4String& name, G4bool quasiElastic)
: G4VPhysicsConstructor(name) , QuasiElastic(quasiElastic)
: G4VPhysicsConstructor(name)
, theNeutrons(0)
, theLEPNeutron(0)
, theQGSPNeutron(0)
, theBertiniNeutron(0)
, thePiK(0)
, theLEPPiK(0)
, theQGSPPiK(0)
, theBertiniPiK(0)
, thePro(0)
, theLEPPro(0)
, theQGSPPro(0)
, theBertiniPro(0)
, theMisc(0)
, QuasiElastic(quasiElastic)
{}
void HadronPhysicsQGSP_BERT_TRV::CreateModels()
@@ -92,12 +126,12 @@ void HadronPhysicsQGSP_BERT_TRV::CreateModels()
thePiK->RegisterMe(theBertiniPiK=new G4BertiniPiKBuilder);
theBertiniPiK->SetMaxEnergy(9.9*GeV);
theMiscLHEP=new G4MiscLHEPBuilder;
theMisc=new G4MiscBuilder;
}
HadronPhysicsQGSP_BERT_TRV::~HadronPhysicsQGSP_BERT_TRV()
{
delete theMiscLHEP;
delete theMisc;
delete theQGSPNeutron;
delete theLEPNeutron;
delete theBertiniNeutron;
@@ -130,6 +164,6 @@ void HadronPhysicsQGSP_BERT_TRV::ConstructProcess()
theNeutrons->Build();
thePro->Build();
thePiK->Build();
theMiscLHEP->Build();
theMisc->Build();
}
@@ -23,8 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: HadronPhysicsQGSP_BIC.cc,v 1.3 2010-06-03 10:42:44 gunter Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
// $Id$
//
//---------------------------------------------------------------------------
//
@@ -36,14 +35,17 @@
// 23.11.2005 G.Folger: migration to non static particles
// 08.06.2006 V.Ivanchenko: remove stopping
// 25.04.2007 G.Folger: Add code for quasielastic
// 31.10.2012 A.Ribon: Use G4MiscBuilder
//
//----------------------------------------------------------------------------
//
#include <iomanip>
#include "HadronPhysicsQGSP_BIC.hh"
#include "globals.hh"
#include "G4ios.hh"
#include <iomanip>
#include "G4SystemOfUnits.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
@@ -51,13 +53,43 @@
#include "G4BaryonConstructor.hh"
#include "G4ShortLivedConstructor.hh"
// factory
#include "G4PhysicsConstructorFactory.hh"
//
G4_DECLARE_PHYSCONSTR_FACTORY(HadronPhysicsQGSP_BIC);
HadronPhysicsQGSP_BIC::HadronPhysicsQGSP_BIC(G4int)
: G4VPhysicsConstructor("hInelastic QGSP_BIC")
, QuasiElastic(true)
: G4VPhysicsConstructor("hInelastic QGSP_BIC")
, theNeutrons(0)
, theLEPNeutron(0)
, theQGSPNeutron(0)
, theBinaryNeutron(0)
, thePiK(0)
, theLEPPiK(0)
, theQGSPPiK(0)
, thePro(0)
, theLEPPro(0)
, theQGSPPro(0)
, theBinaryPro(0)
, theMisc(0)
, QuasiElastic(true)
{}
HadronPhysicsQGSP_BIC::HadronPhysicsQGSP_BIC(const G4String& name, G4bool quasiElastic)
: G4VPhysicsConstructor(name) , QuasiElastic(quasiElastic)
: G4VPhysicsConstructor(name)
, theNeutrons(0)
, theLEPNeutron(0)
, theQGSPNeutron(0)
, theBinaryNeutron(0)
, thePiK(0)
, theLEPPiK(0)
, theQGSPPiK(0)
, thePro(0)
, theLEPPro(0)
, theQGSPPro(0)
, theBinaryPro(0)
, theMisc(0)
, QuasiElastic(quasiElastic)
{}
void HadronPhysicsQGSP_BIC::CreateModels()
@@ -86,12 +118,12 @@ void HadronPhysicsQGSP_BIC::CreateModels()
thePiK->RegisterMe(theLEPPiK=new G4LEPPiKBuilder);
theLEPPiK->SetMaxEnergy(25*GeV);
theMiscLHEP=new G4MiscLHEPBuilder;
theMisc=new G4MiscBuilder;
}
HadronPhysicsQGSP_BIC::~HadronPhysicsQGSP_BIC()
{
delete theMiscLHEP;
delete theMisc;
delete theQGSPNeutron;
delete theLEPNeutron;
delete theBinaryNeutron;
@@ -123,6 +155,6 @@ void HadronPhysicsQGSP_BIC::ConstructProcess()
theNeutrons->Build();
thePro->Build();
thePiK->Build();
theMiscLHEP->Build();
theMisc->Build();
}
@@ -23,8 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: HadronPhysicsQGSP_BIC_HP.cc,v 1.4 2010-06-03 10:42:44 gunter Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
// $Id$
//
//---------------------------------------------------------------------------
//
@@ -36,14 +35,17 @@
//
// Modified:
// 25.04.2007 G.Folger: Add code for quasielastic
// 31.10.2012 A.Ribon: Use G4MiscBuilder
//
//----------------------------------------------------------------------------
//
#include <iomanip>
#include "HadronPhysicsQGSP_BIC_HP.hh"
#include "globals.hh"
#include "G4ios.hh"
#include <iomanip>
#include "G4SystemOfUnits.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
@@ -51,13 +53,45 @@
#include "G4BaryonConstructor.hh"
#include "G4ShortLivedConstructor.hh"
// factory
#include "G4PhysicsConstructorFactory.hh"
//
G4_DECLARE_PHYSCONSTR_FACTORY(HadronPhysicsQGSP_BIC_HP);
HadronPhysicsQGSP_BIC_HP::HadronPhysicsQGSP_BIC_HP(G4int)
: G4VPhysicsConstructor("hInelastic QGSP_BIC_HP")
, QuasiElastic(true)
: G4VPhysicsConstructor("hInelastic QGSP_BIC_HP")
, theNeutrons(0)
, theLEPNeutron(0)
, theQGSPNeutron(0)
, theBinaryNeutron(0)
, theHPNeutron(0)
, thePiK(0)
, theLEPPiK(0)
, theQGSPPiK(0)
, thePro(0)
, theLEPPro(0)
, theQGSPPro(0)
, theBinaryPro(0)
, theMisc(0)
, QuasiElastic(true)
{}
HadronPhysicsQGSP_BIC_HP::HadronPhysicsQGSP_BIC_HP(const G4String& name, G4bool quasiElastic)
: G4VPhysicsConstructor(name) , QuasiElastic(quasiElastic)
: G4VPhysicsConstructor(name)
, theNeutrons(0)
, theLEPNeutron(0)
, theQGSPNeutron(0)
, theBinaryNeutron(0)
, theHPNeutron(0)
, thePiK(0)
, theLEPPiK(0)
, theQGSPPiK(0)
, thePro(0)
, theLEPPro(0)
, theQGSPPro(0)
, theBinaryPro(0)
, theMisc(0)
, QuasiElastic(quasiElastic)
{}
void HadronPhysicsQGSP_BIC_HP::CreateModels()
@@ -90,12 +124,12 @@ void HadronPhysicsQGSP_BIC_HP::CreateModels()
thePiK->RegisterMe(theLEPPiK=new G4LEPPiKBuilder);
theLEPPiK->SetMaxEnergy(25*GeV);
theMiscLHEP=new G4MiscLHEPBuilder;
theMisc=new G4MiscBuilder;
}
HadronPhysicsQGSP_BIC_HP::~HadronPhysicsQGSP_BIC_HP()
{
delete theMiscLHEP;
delete theMisc;
delete theQGSPNeutron;
delete theLEPNeutron;
delete theBinaryNeutron;
@@ -128,6 +162,6 @@ void HadronPhysicsQGSP_BIC_HP::ConstructProcess()
theNeutrons->Build();
thePro->Build();
thePiK->Build();
theMiscLHEP->Build();
theMisc->Build();
}
@@ -23,8 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: HadronPhysicsQGSP_FTFP_BERT.cc,v 1.4 2010-06-19 11:12:46 vnivanch Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
// $Id$
//
//---------------------------------------------------------------------------
//
@@ -35,11 +34,13 @@
// Modified:
//----------------------------------------------------------------------------
//
#include <iomanip>
#include "HadronPhysicsQGSP_FTFP_BERT.hh"
#include "globals.hh"
#include "G4ios.hh"
#include <iomanip>
#include "G4SystemOfUnits.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
@@ -48,23 +49,58 @@
#include "G4ShortLivedConstructor.hh"
#include "G4IonConstructor.hh"
#include "G4QHadronInelasticDataSet.hh"
#include "G4PhysListUtil.hh"
// factory
#include "G4PhysicsConstructorFactory.hh"
//
G4_DECLARE_PHYSCONSTR_FACTORY(HadronPhysicsQGSP_FTFP_BERT);
HadronPhysicsQGSP_FTFP_BERT::HadronPhysicsQGSP_FTFP_BERT(G4int)
: G4VPhysicsConstructor("hInelastic QGSP_FTFP_BERT")
, QuasiElastic(true)
: G4VPhysicsConstructor("hInelastic QGSP_FTFP_BERT")
, theNeutrons(0)
, theFTFPNeutron(0)
, theQGSPNeutron(0)
, theBertiniNeutron(0)
, theLEPNeutron(0)
, thePiK(0)
, theFTFPPiK(0)
, theQGSPPiK(0)
, theBertiniPiK(0)
, thePro(0)
, theFTFPPro(0)
, theQGSPPro(0)
, theBertiniPro(0)
, theHyperon(0)
, theAntiBaryon(0)
, theFTFPAntiBaryon(0)
, QuasiElastic(true)
, ProjectileDiffraction(false)
{
ProjectileDiffraction=false;
}
HadronPhysicsQGSP_FTFP_BERT::HadronPhysicsQGSP_FTFP_BERT(const G4String&,
G4bool quasiElastic)
: G4VPhysicsConstructor("hInelastic QGSP_FTFP_BERT"),
QuasiElastic(quasiElastic)
: G4VPhysicsConstructor("hInelastic QGSP_FTFP_BERT")
, theNeutrons(0)
, theFTFPNeutron(0)
, theQGSPNeutron(0)
, theBertiniNeutron(0)
, theLEPNeutron(0)
, thePiK(0)
, theFTFPPiK(0)
, theQGSPPiK(0)
, theBertiniPiK(0)
, thePro(0)
, theFTFPPro(0)
, theQGSPPro(0)
, theBertiniPro(0)
, theHyperon(0)
, theAntiBaryon(0)
, theFTFPAntiBaryon(0)
, QuasiElastic(quasiElastic)
, ProjectileDiffraction(false)
{
ProjectileDiffraction=false;
}
void HadronPhysicsQGSP_FTFP_BERT::CreateModels()
@@ -150,8 +186,6 @@ HadronPhysicsQGSP_FTFP_BERT::~HadronPhysicsQGSP_FTFP_BERT()
delete theHyperon;
delete theAntiBaryon;
delete theFTFPAntiBaryon;
delete theCHIPSInelastic;
}
void HadronPhysicsQGSP_FTFP_BERT::ConstructParticle()
@@ -176,14 +210,6 @@ void HadronPhysicsQGSP_FTFP_BERT::ConstructProcess()
theNeutrons->Build();
thePro->Build();
thePiK->Build();
// use CHIPS cross sections also for Kaons
theCHIPSInelastic = new G4QHadronInelasticDataSet();
G4PhysListUtil::FindInelasticProcess(G4KaonMinus::KaonMinus())->AddDataSet(theCHIPSInelastic);
G4PhysListUtil::FindInelasticProcess(G4KaonPlus::KaonPlus())->AddDataSet(theCHIPSInelastic);
G4PhysListUtil::FindInelasticProcess(G4KaonZeroShort::KaonZeroShort())->AddDataSet(theCHIPSInelastic);
G4PhysListUtil::FindInelasticProcess(G4KaonZeroLong::KaonZeroLong())->AddDataSet(theCHIPSInelastic);
theHyperon->Build();
theAntiBaryon->Build();
}
@@ -0,0 +1,304 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
//
//---------------------------------------------------------------------------
//
// Modified:
//
//----------------------------------------------------------------------------
//
#include <iomanip>
#include "HadronPhysicsQGSP_FTFP_BERT_95.hh"
#include "globals.hh"
#include "G4ios.hh"
#include "G4SystemOfUnits.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
#include "G4MesonConstructor.hh"
#include "G4BaryonConstructor.hh"
#include "G4ShortLivedConstructor.hh"
#include "G4IonConstructor.hh"
#include "G4PiNuclearCrossSection.hh"
#include "G4ChipsKaonMinusInelasticXS.hh"
#include "G4ChipsKaonPlusInelasticXS.hh"
#include "G4ChipsKaonZeroInelasticXS.hh"
#include "G4CrossSectionDataSetRegistry.hh"
#include "G4CrossSectionPairGG.hh"
#include "G4ProtonInelasticCrossSection.hh"
#include "G4NeutronInelasticCrossSection.hh"
#include "G4ChipsHyperonInelasticXS.hh"
#include "G4CrossSectionInelastic.hh"
#include "G4ComponentAntiNuclNuclearXS.hh"
#include "G4PhysListUtil.hh"
// factory
#include "G4PhysicsConstructorFactory.hh"
//
G4_DECLARE_PHYSCONSTR_FACTORY(HadronPhysicsQGSP_FTFP_BERT_95);
HadronPhysicsQGSP_FTFP_BERT_95::HadronPhysicsQGSP_FTFP_BERT_95(G4int)
: G4VPhysicsConstructor("hInelastic QGSP_FTFP_BERT_95")
, theNeutrons(0)
, theFTFPNeutron(0)
, theQGSPNeutron(0)
, theBertiniNeutron(0)
, theLEPNeutron(0)
, thePiK(0)
, theFTFPPiK(0)
, theQGSPPiK(0)
, theBertiniPiK(0)
, thePro(0)
, theFTFPPro(0)
, theQGSPPro(0)
, theBertiniPro(0)
, theHyperon(0)
, theAntiBaryon(0)
, theFTFPAntiBaryon(0)
, QuasiElastic(true)
, ProjectileDiffraction(false)
, xsBarashenkovGGPion(0)
, xsChipsKaonMinus(0)
, xsChipsKaonPlus(0)
, xsChipsKaonZero(0)
, xsAxenWellischGGProton(0)
, xsLaidlawWellischGGNeutron(0)
, xsChipsHyperons(0)
, xsGaloyanUzhinskyAntibaryon(0)
{
}
HadronPhysicsQGSP_FTFP_BERT_95::HadronPhysicsQGSP_FTFP_BERT_95(const G4String&,
G4bool quasiElastic)
: G4VPhysicsConstructor("hInelastic QGSP_FTFP_BERT_95")
, theNeutrons(0)
, theFTFPNeutron(0)
, theQGSPNeutron(0)
, theBertiniNeutron(0)
, theLEPNeutron(0)
, thePiK(0)
, theFTFPPiK(0)
, theQGSPPiK(0)
, theBertiniPiK(0)
, thePro(0)
, theFTFPPro(0)
, theQGSPPro(0)
, theBertiniPro(0)
, theHyperon(0)
, theAntiBaryon(0)
, theFTFPAntiBaryon(0)
, QuasiElastic(quasiElastic)
, ProjectileDiffraction(false)
, xsBarashenkovGGPion(0)
, xsChipsKaonMinus(0)
, xsChipsKaonPlus(0)
, xsChipsKaonZero(0)
, xsAxenWellischGGProton(0)
, xsLaidlawWellischGGNeutron(0)
, xsChipsHyperons(0)
, xsGaloyanUzhinskyAntibaryon(0)
{
}
void HadronPhysicsQGSP_FTFP_BERT_95::CreateModels()
{
// First transition, between BERT and FTF/P
G4double minFTFP= 6.0 * GeV; // Was 9.5 for LEP (in FTFP_BERT 6.0 * GeV);
G4double maxBERT= 8.0 * GeV; // Was 9.9 for LEP (in FTFP_BERT 8.0 * GeV);
// Second transition, between FTF/P and QGS/P
G4double minQGSP= 12.0 * GeV;
G4double maxFTFP= 25.0 * GeV;
G4bool quasiElasFTF= false; // Use built-in quasi-elastic (not add-on)
G4bool quasiElasQGS= true; // For QGS, it must use it.
G4cout << " New QGSP_FTFP_BERT_95 physics list, replaces LEP with FTF/P for p/n/pi (/K?)";
G4cout << " Thresholds: " << G4endl;
G4cout << " 1) between BERT and FTF/P over the interval "
<< minFTFP/GeV << " to " << maxBERT/GeV << " GeV. " << G4endl;
G4cout << " 2) between FTF/P and QGS/P over the interval "
<< minQGSP/GeV << " to " << maxFTFP/GeV << " GeV. " << G4endl;
G4cout << " -- quasiElastic was asked to be " << QuasiElastic << G4endl
<< " Changed to " << quasiElasQGS << " for QGS "
<< " and to " << quasiElasFTF << " (must be false) for FTF" << G4endl;
theNeutrons=new G4NeutronBuilder;
theNeutrons->RegisterMe(theQGSPNeutron=new G4QGSPNeutronBuilder(quasiElasQGS, ProjectileDiffraction));
theQGSPNeutron->SetMinEnergy(minQGSP);
theNeutrons->RegisterMe(theFTFPNeutron=new G4FTFPNeutronBuilder(quasiElasFTF));
theFTFPNeutron->SetMinEnergy(minFTFP); // was (9.5*GeV);
theFTFPNeutron->SetMaxEnergy(maxFTFP); // was (25*GeV);
// Exclude LEP only from Inelastic
// -- Register it for other processes: Capture, Elastic
theNeutrons->RegisterMe(theLEPNeutron=new G4LEPNeutronBuilder);
theLEPNeutron->SetMinInelasticEnergy(0.0*GeV);
theLEPNeutron->SetMaxInelasticEnergy(0.0*GeV);
theNeutrons->RegisterMe(theBertiniNeutron=new G4BertiniNeutronBuilder);
theBertiniNeutron->SetMinEnergy(0.0*GeV);
theBertiniNeutron->SetMaxEnergy(maxBERT); // was (9.9*GeV);
thePro=new G4ProtonBuilder;
thePro->RegisterMe(theQGSPPro=new G4QGSPProtonBuilder(quasiElasQGS, ProjectileDiffraction));
theQGSPPro->SetMinEnergy(minQGSP);
thePro->RegisterMe(theFTFPPro=new G4FTFPProtonBuilder(quasiElasFTF));
theFTFPPro->SetMinEnergy(minFTFP); // was (9.5*GeV);
theFTFPPro->SetMaxEnergy(maxFTFP); // was (25*GeV);
thePro->RegisterMe(theBertiniPro=new G4BertiniProtonBuilder);
theBertiniPro->SetMaxEnergy(maxBERT); // was (9.9*GeV);
thePiK=new G4PiKBuilder;
thePiK->RegisterMe(theQGSPPiK=new G4QGSPPiKBuilder(quasiElasQGS));
theQGSPPiK->SetMinEnergy(minQGSP);
thePiK->RegisterMe(theFTFPPiK=new G4FTFPPiKBuilder(quasiElasFTF));
theFTFPPiK->SetMaxEnergy(maxFTFP); // was (25*GeV);
theFTFPPiK->SetMinEnergy(minFTFP); // was (9.5*GeV);
thePiK->RegisterMe(theBertiniPiK=new G4BertiniPiKBuilder);
theBertiniPiK->SetMaxEnergy(maxBERT); // was (9.9*GeV);
// Hyperons use FTF
theHyperon=new G4HyperonFTFPBuilder;
theAntiBaryon=new G4AntiBarionBuilder;
theAntiBaryon->RegisterMe(theFTFPAntiBaryon=new G4FTFPAntiBarionBuilder(quasiElasFTF));
}
HadronPhysicsQGSP_FTFP_BERT_95::~HadronPhysicsQGSP_FTFP_BERT_95()
{
delete theQGSPNeutron;
delete theFTFPNeutron;
delete theBertiniNeutron;
delete theNeutrons;
delete theQGSPPro;
delete theFTFPPro;
delete thePro;
delete theBertiniPro;
delete theQGSPPiK;
delete theFTFPPiK;
delete theBertiniPiK;
delete thePiK;
delete theHyperon;
delete theAntiBaryon;
delete theFTFPAntiBaryon;
delete xsBarashenkovGGPion;
delete xsAxenWellischGGProton;
delete xsLaidlawWellischGGNeutron;
delete xsGaloyanUzhinskyAntibaryon;
}
void HadronPhysicsQGSP_FTFP_BERT_95::ConstructParticle()
{
G4MesonConstructor pMesonConstructor;
pMesonConstructor.ConstructParticle();
G4BaryonConstructor pBaryonConstructor;
pBaryonConstructor.ConstructParticle();
G4ShortLivedConstructor pShortLivedConstructor;
pShortLivedConstructor.ConstructParticle();
G4IonConstructor pIonConstructor;
pIonConstructor.ConstructParticle();
}
#include "G4ProcessManager.hh"
void HadronPhysicsQGSP_FTFP_BERT_95::ConstructProcess()
{
CreateModels();
theNeutrons->Build();
thePro->Build();
thePiK->Build();
theHyperon->Build();
theAntiBaryon->Build();
// Inelastic cross sections
// --- Pions ---
// Use Barashenkov inelastic pion cross section up to 91 GeV,
// and Glauber-Gribov above
xsBarashenkovGGPion = new G4CrossSectionPairGG(new G4PiNuclearCrossSection(), 91*GeV);
G4PhysListUtil::FindInelasticProcess(G4PionPlus::PionPlus())->AddDataSet(xsBarashenkovGGPion);
G4PhysListUtil::FindInelasticProcess(G4PionMinus::PionMinus())->AddDataSet(xsBarashenkovGGPion);
// --- Kaons ---
// Use Chips inelastic kaon cross sections
xsChipsKaonMinus = G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsKaonMinusInelasticXS::Default_Name());
xsChipsKaonPlus = G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsKaonPlusInelasticXS::Default_Name());
xsChipsKaonZero = G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsKaonZeroInelasticXS::Default_Name());
G4PhysListUtil::FindInelasticProcess(G4KaonMinus::KaonMinus())->AddDataSet(xsChipsKaonMinus);
G4PhysListUtil::FindInelasticProcess(G4KaonPlus::KaonPlus())->AddDataSet(xsChipsKaonPlus);
G4PhysListUtil::FindInelasticProcess(G4KaonZeroShort::KaonZeroShort())->AddDataSet(xsChipsKaonZero);
G4PhysListUtil::FindInelasticProcess(G4KaonZeroLong::KaonZeroLong())->AddDataSet(xsChipsKaonZero);
// --- Protons ---
// Use Axen-Wellisch inelastic proton cross section up to 91 GeV,
// and Glauber-Gribov above
xsAxenWellischGGProton = new G4CrossSectionPairGG(new G4ProtonInelasticCrossSection(), 91*GeV);
G4PhysListUtil::FindInelasticProcess(G4Proton::Proton())->AddDataSet(xsAxenWellischGGProton);
// --- Neutrons ---
// Use Laidlaw-Wellisch inelastic neutron cross section up to 91 GeV,
// and Glauber-Gribov above
xsLaidlawWellischGGNeutron = new G4CrossSectionPairGG(new G4NeutronInelasticCrossSection(), 91*GeV);
G4PhysListUtil::FindInelasticProcess(G4Neutron::Neutron())->AddDataSet(xsLaidlawWellischGGNeutron);
// --- Hyperons ---
// Use Chips inelastic hyperon cross sections
xsChipsHyperons = G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsHyperonInelasticXS::Default_Name());
G4PhysListUtil::FindInelasticProcess(G4Lambda::Lambda())->AddDataSet(xsChipsHyperons);
G4PhysListUtil::FindInelasticProcess(G4AntiLambda::AntiLambda())->AddDataSet(xsChipsHyperons);
G4PhysListUtil::FindInelasticProcess(G4SigmaMinus::SigmaMinus())->AddDataSet(xsChipsHyperons);
G4PhysListUtil::FindInelasticProcess(G4AntiSigmaMinus::AntiSigmaMinus())->AddDataSet(xsChipsHyperons);
G4PhysListUtil::FindInelasticProcess(G4SigmaPlus::SigmaPlus())->AddDataSet(xsChipsHyperons);
G4PhysListUtil::FindInelasticProcess(G4AntiSigmaPlus::AntiSigmaPlus())->AddDataSet(xsChipsHyperons);
G4PhysListUtil::FindInelasticProcess(G4XiMinus::XiMinus())->AddDataSet(xsChipsHyperons);
G4PhysListUtil::FindInelasticProcess(G4AntiXiMinus::AntiXiMinus())->AddDataSet(xsChipsHyperons);
G4PhysListUtil::FindInelasticProcess(G4XiZero::XiZero())->AddDataSet(xsChipsHyperons);
G4PhysListUtil::FindInelasticProcess(G4AntiXiZero::AntiXiZero())->AddDataSet(xsChipsHyperons);
G4PhysListUtil::FindInelasticProcess(G4OmegaMinus::OmegaMinus())->AddDataSet(xsChipsHyperons);
G4PhysListUtil::FindInelasticProcess(G4AntiOmegaMinus::AntiOmegaMinus())->AddDataSet(xsChipsHyperons);
// --- AntiBaryons ---
// Use Galoyan-Uzhinsky antibaryon cross sections based on
// Glauber-Grichine approach
xsGaloyanUzhinskyAntibaryon = new G4CrossSectionInelastic(new G4ComponentAntiNuclNuclearXS());
G4PhysListUtil::FindInelasticProcess(G4AntiProton::AntiProton())->AddDataSet(xsGaloyanUzhinskyAntibaryon);
G4PhysListUtil::FindInelasticProcess(G4AntiNeutron::AntiNeutron())->AddDataSet(xsGaloyanUzhinskyAntibaryon);
G4PhysListUtil::FindInelasticProcess(G4AntiDeuteron::AntiDeuteron())->AddDataSet(xsGaloyanUzhinskyAntibaryon);
G4PhysListUtil::FindInelasticProcess(G4AntiTriton::AntiTriton())->AddDataSet(xsGaloyanUzhinskyAntibaryon);
G4PhysListUtil::FindInelasticProcess(G4AntiHe3::AntiHe3())->AddDataSet(xsGaloyanUzhinskyAntibaryon);
G4PhysListUtil::FindInelasticProcess(G4AntiAlpha::AntiAlpha())->AddDataSet(xsGaloyanUzhinskyAntibaryon);
}
@@ -23,8 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: HadronPhysicsQGSP_INCLXX.cc,v 1.2 2010-06-03 10:42:44 gunter Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
// $Id$
//
//---------------------------------------------------------------------------
//
@@ -33,15 +32,19 @@
// Author: 2011 P. Kaitaniemi
//
// Modified:
// 31.10.2012 A.Ribon: Use G4MiscBuilder
// 23.03.2012 D. Mancusi: Extended INCL++ to incident heavy ions up to 16O
// 27.11.2011 P.Kaitaniemi: Created physics list for INCL++ using QGSP_INCL_ABLA as a template
//
//----------------------------------------------------------------------------
//
#include <iomanip>
#include "HadronPhysicsQGSP_INCLXX.hh"
#include "globals.hh"
#include "G4ios.hh"
#include <iomanip>
#include "G4SystemOfUnits.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
@@ -49,17 +52,55 @@
#include "G4BaryonConstructor.hh"
#include "G4ShortLivedConstructor.hh"
// factory
#include "G4PhysicsConstructorFactory.hh"
//
G4_DECLARE_PHYSCONSTR_FACTORY(HadronPhysicsQGSP_INCLXX);
HadronPhysicsQGSP_INCLXX::HadronPhysicsQGSP_INCLXX(G4int)
: G4VPhysicsConstructor("hInelastic QGSP_INCLXX")
, QuasiElastic(true)
: G4VPhysicsConstructor("hInelastic QGSP_INCLXX")
, theNeutrons(0)
, theLEPNeutron(0)
, theQGSPNeutron(0)
, theBertiniNeutron(0)
, theInclAblaNeutron(0)
, thePiK(0)
, theLEPPiK(0)
, theQGSPPiK(0)
, theBertiniPiK(0)
, theInclAblaPiK(0)
, thePro(0)
, theLEPPro(0)
, theQGSPPro(0)
, theBertiniPro(0)
, theInclAblaPro(0)
, theMisc(0)
, QuasiElastic(true)
, ProjectileDiffraction(false)
{
ProjectileDiffraction=false;
}
HadronPhysicsQGSP_INCLXX::HadronPhysicsQGSP_INCLXX(const G4String& name, G4bool quasiElastic)
: G4VPhysicsConstructor(name) , QuasiElastic(quasiElastic)
: G4VPhysicsConstructor(name)
, theNeutrons(0)
, theLEPNeutron(0)
, theQGSPNeutron(0)
, theBertiniNeutron(0)
, theInclAblaNeutron(0)
, thePiK(0)
, theLEPPiK(0)
, theQGSPPiK(0)
, theBertiniPiK(0)
, theInclAblaPiK(0)
, thePro(0)
, theLEPPro(0)
, theQGSPPro(0)
, theBertiniPro(0)
, theInclAblaPro(0)
, theMisc(0)
, QuasiElastic(quasiElastic)
, ProjectileDiffraction(false)
{
ProjectileDiffraction=false;
}
void HadronPhysicsQGSP_INCLXX::CreateModels()
@@ -106,12 +147,12 @@ void HadronPhysicsQGSP_INCLXX::CreateModels()
theInclAblaPiK->SetMinEnergy(0.0*GeV);
theInclAblaPiK->SetMaxEnergy(3.0*GeV);
theMiscLHEP=new G4MiscLHEPBuilder;
theMisc=new G4MiscBuilder;
}
HadronPhysicsQGSP_INCLXX::~HadronPhysicsQGSP_INCLXX()
{
delete theMiscLHEP;
delete theMisc;
delete theQGSPNeutron;
delete theLEPNeutron;
delete theBertiniNeutron;
@@ -147,6 +188,6 @@ void HadronPhysicsQGSP_INCLXX::ConstructProcess()
theNeutrons->Build();
thePro->Build();
thePiK->Build();
theMiscLHEP->Build();
theMisc->Build();
}
@@ -1,156 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: HadronPhysicsQGSP_INCL_ABLA.cc,v 1.2 2010-06-03 10:42:44 gunter Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
//
//---------------------------------------------------------------------------
//
// ClassName: HadronPhysicsQGSP_INCLABLA
//
// Author: 2002 J.P. Wellisch
//
// Modified:
// 23.11.2005 G.Folger: migration to non static particles
// 08.06.2006 V.Ivanchenko: remove stopping
// 20.06.2006 G.Folger: InclAbla applies to Kaons, i.e. use SetMinEnergy instead of SetMinPionEnergy
// 25.04.2007 G.Folger: Add code for quasielastic
// 10.12.2007 G.Folger: Add projectilediffrative option for proton/neutron, off by default
//
//----------------------------------------------------------------------------
//
#include "HadronPhysicsQGSP_INCL_ABLA.hh"
#include "globals.hh"
#include "G4ios.hh"
#include <iomanip>
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
#include "G4MesonConstructor.hh"
#include "G4BaryonConstructor.hh"
#include "G4ShortLivedConstructor.hh"
HadronPhysicsQGSP_INCL_ABLA::HadronPhysicsQGSP_INCL_ABLA(G4int)
: G4VPhysicsConstructor("hInelastic QGSP_INCL_ABLA")
, QuasiElastic(true)
{
ProjectileDiffraction=false;
}
HadronPhysicsQGSP_INCL_ABLA::HadronPhysicsQGSP_INCL_ABLA(const G4String& name, G4bool quasiElastic)
: G4VPhysicsConstructor(name) , QuasiElastic(quasiElastic)
{
ProjectileDiffraction=false;
}
void HadronPhysicsQGSP_INCL_ABLA::CreateModels()
{
theNeutrons=new G4NeutronBuilder;
theNeutrons->RegisterMe(theQGSPNeutron=new G4QGSPNeutronBuilder(QuasiElastic, ProjectileDiffraction));
theNeutrons->RegisterMe(theLEPNeutron=new G4LEPNeutronBuilder);
theLEPNeutron->SetMinInelasticEnergy(9.5*GeV);
theLEPNeutron->SetMaxInelasticEnergy(25*GeV);
theNeutrons->RegisterMe(theBertiniNeutron=new G4BertiniNeutronBuilder);
theBertiniNeutron->SetMinEnergy(2.9*GeV);
theBertiniNeutron->SetMaxEnergy(9.9*GeV);
theNeutrons->RegisterMe(theInclAblaNeutron=new G4InclAblaNeutronBuilder);
theInclAblaNeutron->SetMinEnergy(0.0*GeV);
theInclAblaNeutron->SetMaxEnergy(3.0*GeV);
thePro=new G4ProtonBuilder;
thePro->RegisterMe(theQGSPPro=new G4QGSPProtonBuilder(QuasiElastic, ProjectileDiffraction));
thePro->RegisterMe(theLEPPro=new G4LEPProtonBuilder);
theLEPPro->SetMinEnergy(9.5*GeV);
theLEPPro->SetMaxEnergy(25*GeV);
thePro->RegisterMe(theBertiniPro=new G4BertiniProtonBuilder);
theBertiniPro->SetMinEnergy(2.9*GeV);
theBertiniPro->SetMaxEnergy(9.9*GeV);
thePro->RegisterMe(theInclAblaPro=new G4InclAblaProtonBuilder);
theInclAblaPro->SetMinEnergy(0.0*GeV);
theInclAblaPro->SetMaxEnergy(3.0*GeV);
thePiK=new G4PiKBuilder;
thePiK->RegisterMe(theQGSPPiK=new G4QGSPPiKBuilder(QuasiElastic));
thePiK->RegisterMe(theLEPPiK=new G4LEPPiKBuilder);
theLEPPiK->SetMaxEnergy(25*GeV);
theLEPPiK->SetMinEnergy(9.5*GeV);
thePiK->RegisterMe(theBertiniPiK=new G4BertiniPiKBuilder);
theBertiniPiK->SetMinEnergy(2.9*GeV);
theBertiniPiK->SetMaxEnergy(9.9*GeV);
thePiK->RegisterMe(theInclAblaPiK=new G4InclAblaPiKBuilder);
theInclAblaPiK->SetMinEnergy(0.0*GeV);
theInclAblaPiK->SetMaxEnergy(3.0*GeV);
theMiscLHEP=new G4MiscLHEPBuilder;
}
HadronPhysicsQGSP_INCL_ABLA::~HadronPhysicsQGSP_INCL_ABLA()
{
delete theMiscLHEP;
delete theQGSPNeutron;
delete theLEPNeutron;
delete theBertiniNeutron;
delete theInclAblaNeutron;
delete theQGSPPro;
delete theLEPPro;
delete thePro;
delete theBertiniPro;
delete theInclAblaPro;
delete theQGSPPiK;
delete theLEPPiK;
delete theInclAblaPiK;
delete theBertiniPiK;
delete thePiK;
}
void HadronPhysicsQGSP_INCL_ABLA::ConstructParticle()
{
G4MesonConstructor pMesonConstructor;
pMesonConstructor.ConstructParticle();
G4BaryonConstructor pBaryonConstructor;
pBaryonConstructor.ConstructParticle();
G4ShortLivedConstructor pShortLivedConstructor;
pShortLivedConstructor.ConstructParticle();
}
#include "G4ProcessManager.hh"
void HadronPhysicsQGSP_INCL_ABLA::ConstructProcess()
{
CreateModels();
theNeutrons->Build();
thePro->Build();
thePiK->Build();
theMiscLHEP->Build();
}
@@ -23,8 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: HadronPhysicsQGS_BIC.cc,v 1.2 2010-06-03 10:42:44 gunter Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
// $Id$
//
//---------------------------------------------------------------------------
//
@@ -37,11 +36,13 @@
//
//----------------------------------------------------------------------------
//
#include <iomanip>
#include "HadronPhysicsQGS_BIC.hh"
#include "globals.hh"
#include "G4ios.hh"
#include <iomanip>
#include "G4SystemOfUnits.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
@@ -49,13 +50,45 @@
#include "G4BaryonConstructor.hh"
#include "G4ShortLivedConstructor.hh"
// factory
#include "G4PhysicsConstructorFactory.hh"
//
G4_DECLARE_PHYSCONSTR_FACTORY(HadronPhysicsQGS_BIC);
HadronPhysicsQGS_BIC::HadronPhysicsQGS_BIC(G4int)
: G4VPhysicsConstructor("hInelastic QGS_BIC")
, QuasiElastic(true)
: G4VPhysicsConstructor("hInelastic QGS_BIC")
, theNeutrons(0)
, theLEPNeutron(0)
, theQGSBinaryNeutron(0)
, theBinaryNeutron(0)
, thePiK(0)
, theBICPiK(0)
, theLEPPiK(0)
, theQGSBinaryPiK(0)
, thePro(0)
, theLEPPro(0)
, theQGSBinaryPro(0)
, theBinaryPro(0)
, theMisc(0)
, QuasiElastic(true)
{}
HadronPhysicsQGS_BIC::HadronPhysicsQGS_BIC(const G4String& name, G4bool quasiElastic)
: G4VPhysicsConstructor(name) , QuasiElastic(quasiElastic)
: G4VPhysicsConstructor(name)
, theNeutrons(0)
, theLEPNeutron(0)
, theQGSBinaryNeutron(0)
, theBinaryNeutron(0)
, thePiK(0)
, theBICPiK(0)
, theLEPPiK(0)
, theQGSBinaryPiK(0)
, thePro(0)
, theLEPPro(0)
, theQGSBinaryPro(0)
, theBinaryPro(0)
, theMisc(0)
, QuasiElastic(quasiElastic)
{}
void HadronPhysicsQGS_BIC::CreateModels()
@@ -86,12 +119,12 @@ void HadronPhysicsQGS_BIC::CreateModels()
theLEPPiK->SetMinPionEnergy(1.2*GeV);
theLEPPiK->SetMaxEnergy(25*GeV);
theMiscLHEP=new G4MiscLHEPBuilder;
theMisc=new G4MiscBuilder;
}
HadronPhysicsQGS_BIC::~HadronPhysicsQGS_BIC()
{
delete theMiscLHEP;
delete theMisc;
delete theQGSBinaryNeutron;
delete theLEPNeutron;
delete theBinaryNeutron;
@@ -124,6 +157,6 @@ void HadronPhysicsQGS_BIC::ConstructProcess()
theNeutrons->Build();
thePro->Build();
thePiK->Build();
theMiscLHEP->Build();
theMisc->Build();
}
@@ -23,8 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: HadronPhysicsShielding.cc,v 1.1 2010-06-08 16:06:18 gunter Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
// $Id$
//
//---------------------------------------------------------------------------
//
@@ -37,11 +36,13 @@
//
//----------------------------------------------------------------------------
//
#include <iomanip>
#include "HadronPhysicsShielding.hh"
#include "globals.hh"
#include "G4ios.hh"
#include <iomanip>
#include "G4SystemOfUnits.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
@@ -49,18 +50,66 @@
#include "G4BaryonConstructor.hh"
#include "G4ShortLivedConstructor.hh"
#include "G4QHadronInelasticDataSet.hh"
#include "G4BGGNucleonInelasticXS.hh"
#include "G4NeutronHPBGGNucleonInelasticXS.hh"
#include "G4NeutronHPJENDLHEInelasticData.hh"
#include "G4NeutronHPInelasticData.hh"
#include "G4ChipsKaonMinusInelasticXS.hh"
#include "G4ChipsKaonPlusInelasticXS.hh"
#include "G4ChipsKaonZeroInelasticXS.hh"
#include "G4CrossSectionDataSetRegistry.hh"
#include "G4PhysListUtil.hh"
// factory
#include "G4PhysicsConstructorFactory.hh"
//
G4_DECLARE_PHYSCONSTR_FACTORY(HadronPhysicsShielding);
HadronPhysicsShielding::HadronPhysicsShielding( G4int )
: G4VPhysicsConstructor("hInelastic Shielding")
, QuasiElastic(false)
, useLEND(false)
: G4VPhysicsConstructor("hInelastic Shielding")
, theNeutrons(0)
, theLENeutron(0)
, theBertiniNeutron(0)
, theFTFPNeutron(0)
, theLEPNeutron(0)
, thePiK(0)
, theBertiniPiK(0)
, theFTFPPiK(0)
, thePro(0)
, theBertiniPro(0)
, theFTFPPro(0)
, theMiscCHIPS(0)
, QuasiElastic(false)
, theCHIPSInelastic(0)
, BGGxsNeutron(0)
, NeutronHPJENDLHEInelastic(0)
, BGGxsProton(0)
, useLEND(false)
, evaluation()
{}
HadronPhysicsShielding::HadronPhysicsShielding(const G4String& name, G4bool quasiElastic)
: G4VPhysicsConstructor(name) , QuasiElastic(quasiElastic)
, useLEND(false)
: G4VPhysicsConstructor(name)
, theNeutrons(0)
, theLENeutron(0)
, theBertiniNeutron(0)
, theFTFPNeutron(0)
, theLEPNeutron(0)
, thePiK(0)
, theBertiniPiK(0)
, theFTFPPiK(0)
, thePro(0)
, theBertiniPro(0)
, theFTFPPro(0)
, theMiscCHIPS(0)
, QuasiElastic(quasiElastic)
, theCHIPSInelastic(0)
, BGGxsNeutron(0)
, NeutronHPJENDLHEInelastic(0)
, BGGxsProton(0)
, useLEND(false)
, evaluation()
{}
#include "G4NeutronLENDBuilder.hh"
@@ -79,7 +128,7 @@ void HadronPhysicsShielding::CreateModels()
theLEPNeutron->SetMaxInelasticEnergy(0.0*eV);
//theNeutrons->RegisterMe(theHPNeutron=new G4NeutronHPBuilder);
if ( useLEND != true )
if ( useLEND != true )
theNeutrons->RegisterMe(theLENeutron=new G4NeutronHPBuilder);
else
{
@@ -140,45 +189,32 @@ void HadronPhysicsShielding::ConstructParticle()
void HadronPhysicsShielding::ConstructProcess()
{
CreateModels();
theNeutrons->Build();
BGGxsNeutron=new G4BGGNucleonInelasticXS(G4Neutron::Neutron());
FindInelasticProcess(G4Neutron::Neutron())->AddDataSet(BGGxsNeutron);
NeutronHPJENDLHEInelastic=new G4NeutronHPJENDLHEInelasticData;
FindInelasticProcess(G4Neutron::Neutron())->AddDataSet(NeutronHPJENDLHEInelastic);
//BGGxsNeutron=new G4BGGNucleonInelasticXS(G4Neutron::Neutron());
thePro->Build();
BGGxsProton=new G4BGGNucleonInelasticXS(G4Proton::Proton());
FindInelasticProcess(G4Proton::Proton())->AddDataSet(BGGxsProton);
theNeutrons->Build();
// BGGxsNeutron=new G4NeutronHPBGGNucleonInelasticXS(G4Neutron::Neutron());
// FindInelasticProcess(G4Neutron::Neutron())->AddDataSet(BGGxsNeutron);
//
G4PhysListUtil::FindInelasticProcess(G4Neutron::Neutron())->AddDataSet(new G4BGGNucleonInelasticXS(G4Neutron::Neutron()));
NeutronHPJENDLHEInelastic=new G4NeutronHPJENDLHEInelasticData;
G4PhysListUtil::FindInelasticProcess(G4Neutron::Neutron())->AddDataSet(NeutronHPJENDLHEInelastic);
G4PhysListUtil::FindInelasticProcess(G4Neutron::Neutron())->AddDataSet(new G4NeutronHPInelasticData);
// BGGxsProton=new G4BGGNucleonInelasticXS(G4Proton::Proton());
// G4PhysListUtil::FindInelasticProcess(G4Proton::Proton())->AddDataSet(BGGxsProton);
thePiK->Build();
// use CHIPS cross sections also for Kaons
theCHIPSInelastic = new G4QHadronInelasticDataSet();
FindInelasticProcess(G4KaonMinus::KaonMinus())->AddDataSet(theCHIPSInelastic);
FindInelasticProcess(G4KaonPlus::KaonPlus())->AddDataSet(theCHIPSInelastic);
FindInelasticProcess(G4KaonZeroShort::KaonZeroShort())->AddDataSet(theCHIPSInelastic);
FindInelasticProcess(G4KaonZeroLong::KaonZeroLong())->AddDataSet(theCHIPSInelastic);
G4CrossSectionDataSetRegistry* registry = G4CrossSectionDataSetRegistry::Instance();
G4PhysListUtil::FindInelasticProcess(G4KaonMinus::KaonMinus())->AddDataSet(registry->GetCrossSectionDataSet(G4ChipsKaonMinusInelasticXS::Default_Name()));
G4PhysListUtil::FindInelasticProcess(G4KaonPlus::KaonPlus())->AddDataSet(registry->GetCrossSectionDataSet(G4ChipsKaonPlusInelasticXS::Default_Name()));
G4PhysListUtil::FindInelasticProcess(G4KaonZeroShort::KaonZeroShort())->AddDataSet(registry->GetCrossSectionDataSet(G4ChipsKaonZeroInelasticXS::Default_Name()));
G4PhysListUtil::FindInelasticProcess(G4KaonZeroLong::KaonZeroLong())->AddDataSet(registry->GetCrossSectionDataSet(G4ChipsKaonZeroInelasticXS::Default_Name()));
theMiscCHIPS->Build();
}
G4HadronicProcess*
HadronPhysicsShielding::FindInelasticProcess(const G4ParticleDefinition* p)
{
G4HadronicProcess* had = 0;
if(p) {
G4ProcessVector* pvec = p->GetProcessManager()->GetProcessList();
size_t n = pvec->size();
if(0 < n) {
for(size_t i=0; i<n; ++i) {
if(fHadronInelastic == ((*pvec)[i])->GetProcessSubType()) {
had = static_cast<G4HadronicProcess*>((*pvec)[i]);
break;
}
}
}
}
return had;
}
@@ -40,6 +40,7 @@
#include "MaxTimeCuts.hh"
#include "G4PhysicalConstants.hh"
#include "G4Step.hh"
#include "G4UserLimits.hh"
#include "G4VParticleChange.hh"
+8 -7
View File
@@ -23,8 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: QBBC.cc,v 1.10 2010-11-19 19:50:15 vnivanch Exp $
// GEANT4 tag $Name: not supported by cvs2svn $
// $Id$
//
//---------------------------------------------------------------------------
//
@@ -37,19 +36,22 @@
// 16.05.07 V.Ivanchenko: rename EM builders
// 20.04.11 V.Ivanchenko: remove extra headers of elastic builders
// added FTFP/Binary ion physics
// 16.10.12 A.Ribon: renamed the used physics classes
//
//----------------------------------------------------------------------------
//
#include "QBBC.hh"
#include "globals.hh"
#include "G4PhysicalConstants.hh"
#include "G4SystemOfUnits.hh"
#include "G4ParticleDefinition.hh"
#include "G4DecayPhysics.hh"
#include "G4EmStandardPhysics.hh"
#include "G4EmStandardPhysics_option2.hh"
#include "G4EmExtraPhysics.hh"
#include "G4QStoppingPhysics.hh"
#include "G4StoppingPhysics.hh"
#include "G4DataQuestionaire.hh"
#include "G4HadronInelasticQBBC.hh"
@@ -57,8 +59,7 @@
#include "G4HadronElasticPhysicsXS.hh"
#include "G4HadronElasticPhysicsHP.hh"
#include "G4ChargeExchangePhysics.hh"
#include "G4IonBinaryCascadePhysics.hh"
#include "G4IonFTFPBinaryCascadePhysics.hh"
#include "G4IonPhysics.hh"
#include "G4NeutronTrackingCut.hh"
QBBC::QBBC( G4int ver, const G4String&)
@@ -82,9 +83,9 @@ QBBC::QBBC( G4int ver, const G4String&)
// Hadron Physics
RegisterPhysics( new G4HadronElasticPhysicsXS(ver) );
RegisterPhysics( new G4QStoppingPhysics(ver) );
RegisterPhysics( new G4StoppingPhysics(ver) );
RegisterPhysics( new G4IonFTFPBinaryCascadePhysics(ver) );
RegisterPhysics( new G4IonPhysics(ver) );
RegisterPhysics( new G4HadronInelasticQBBC(ver));