Import Geant4 9.6.0 source tree
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -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));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user