Import Geant4 8.3.0 source tree
This commit is contained in:
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4EmStandardPhysics.cc,v 1.3 2006/11/23 15:30:19 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
// $Id: G4EmStandardPhysics.cc,v 1.7 2007/03/01 10:35:45 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
@@ -36,6 +36,8 @@
|
||||
// 05.12.2005 V.Ivanchenko add controlled verbosity
|
||||
// 13.11.2006 V.Ivanchenko use G4hMultipleScattering
|
||||
// 23.11.2006 V.Ivanchenko remove mscStepLimit option and improve cout
|
||||
// 13.02.2007 V.Ivanchenko use G4hMultipleScattering for muons
|
||||
// 13.02.2007 V.Ivanchenko set skin=0.0
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
@@ -158,15 +160,16 @@ void G4EmStandardPhysics::ConstructProcess()
|
||||
} else if (particleName == "mu+" ||
|
||||
particleName == "mu-" ) {
|
||||
|
||||
pmanager->AddProcess(new G4MultipleScattering,-1, 1, 1);
|
||||
pmanager->AddProcess(new G4MuIonisation, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4MuBremsstrahlung, -1, 3, 3);
|
||||
pmanager->AddProcess(new G4MuPairProduction, -1, 4, 4);
|
||||
pmanager->AddProcess(new G4hMultipleScattering,-1, 1, 1);
|
||||
pmanager->AddProcess(new G4MuIonisation, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4MuBremsstrahlung, -1, 3, 3);
|
||||
pmanager->AddProcess(new G4MuPairProduction, -1, 4, 4);
|
||||
|
||||
} else if (particleName == "alpha" ||
|
||||
particleName == "He3" ||
|
||||
particleName == "GenericIon") {
|
||||
|
||||
if(verbose > 1)
|
||||
G4cout << "### G4standard instantiates ionIoni for "
|
||||
<< particleName << G4endl;
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
@@ -200,6 +203,7 @@ void G4EmStandardPhysics::ConstructProcess()
|
||||
}
|
||||
G4EmProcessOptions opt;
|
||||
opt.SetVerbose(verbose);
|
||||
opt.SetSkin(0.0);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4EmStandardPhysics71.cc,v 1.3 2006/11/23 15:30:19 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
// $Id: G4EmStandardPhysics71.cc,v 1.7 2007/05/02 18:49:50 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
@@ -38,6 +38,7 @@
|
||||
// 23.06.2006 V.Ivanchenko set dRoverRange = 0.8 for e- and e+
|
||||
// 13.11.2006 V.Ivanchenko use G4hMultipleScattering
|
||||
// 23.11.2006 V.Ivanchenko remove mscStepLimit option and improve cout
|
||||
// 13.02.2007 V.Ivanchenko set skin=0.0
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4EmStandardPhysics72.cc,v 1.5 2006/11/23 15:30:19 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
// $Id: G4EmStandardPhysics72.cc,v 1.7 2007/03/27 10:01:21 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
@@ -36,7 +36,8 @@
|
||||
// 19.12.2005 V.Ivanchenko rename 71 -> 72
|
||||
// 15.06.2006 V.Ivanchenko use this class as a constructor of fast EM physics
|
||||
// 13.11.2006 V.Ivanchenko use G4hMultipleScattering
|
||||
// 14.11.2006 V.Ivanchenko use sub-cutoff optionfor all particles
|
||||
// 14.11.2006 V.Ivanchenko use sub-cutoff option for all particles
|
||||
// 13.02.2007 V.Ivanchenko use default msc
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
@@ -149,10 +150,6 @@ void G4EmStandardPhysics72::ConstructProcess()
|
||||
} else if (particleName == "e-") {
|
||||
|
||||
msc = new G4MultipleScattering();
|
||||
msc->MscStepLimitation(true,0.1);
|
||||
if(verbose > 1)
|
||||
G4cout << "### G4standard_exp instantiates eIoni "
|
||||
<< particleName << G4endl;
|
||||
pmanager->AddProcess(msc, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4eIonisation, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung, -1,-3, 3);
|
||||
@@ -160,10 +157,6 @@ void G4EmStandardPhysics72::ConstructProcess()
|
||||
} else if (particleName == "e+") {
|
||||
|
||||
msc = new G4MultipleScattering();
|
||||
msc->MscStepLimitation(true,0.1);
|
||||
if(verbose > 1)
|
||||
G4cout << "### G4standard_exp instantiates eIoni and msc71 for "
|
||||
<< particleName << G4endl;
|
||||
pmanager->AddProcess(msc, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4eIonisation, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung, -1,-3, 3);
|
||||
@@ -218,6 +211,7 @@ void G4EmStandardPhysics72::ConstructProcess()
|
||||
}
|
||||
G4EmProcessOptions opt;
|
||||
opt.SetVerbose(verbose);
|
||||
opt.SetSkin(0.0);
|
||||
opt.SetSubCutoff(true);
|
||||
}
|
||||
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4HadronElasticPhysics.cc,v 1.3 2006/11/23 15:46:04 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
// $Id: G4HadronElasticPhysics.cc,v 1.7 2007/03/06 17:52:06 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
@@ -38,6 +38,10 @@
|
||||
// 24.07.2006 V.Ivanchenko add G4NeutronHPElasticData
|
||||
// 10.08.2006 V.Ivanchenko separate neutrons from other particles
|
||||
// 17.11.2006 V.Ivanchenko do not redefine G4HadronElastic default parameters
|
||||
// 19.02.2007 V.Ivanchenko set QModelLowLimit and LowestEnergyLimit to zero
|
||||
// 19.02.2007 A.Howard set QModelLowLimit and LowestEnergyLimit to zero
|
||||
// for neutrons
|
||||
// 06.03.2007 V.Ivanchenko use updated interface to G4UElasticCrossSection
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
@@ -111,6 +115,8 @@ void G4HadronElasticPhysics::ConstructProcess()
|
||||
G4HadronElastic* he = new G4HadronElastic();
|
||||
model = he;
|
||||
man = he->GetCS();
|
||||
he->SetQModelLowLimit(0.0);
|
||||
he->SetLowestEnergyLimit(0.0);
|
||||
} else {
|
||||
model = new G4LElastic();
|
||||
}
|
||||
@@ -149,7 +155,7 @@ void G4HadronElasticPhysics::ConstructProcess()
|
||||
G4UHadronElasticProcess* h = new G4UHadronElasticProcess("hElastic");
|
||||
h->SetQElasticCrossSection(man);
|
||||
hel = h;
|
||||
if(glFlag) hel->AddDataSet(new G4UElasticCrossSection());
|
||||
if(glFlag) hel->AddDataSet(new G4UElasticCrossSection(particle));
|
||||
} else {
|
||||
hel = new G4HadronElasticProcess("hElastic");
|
||||
}
|
||||
@@ -164,10 +170,12 @@ void G4HadronElasticPhysics::ConstructProcess()
|
||||
if(mname == "elastic") {
|
||||
G4UHadronElasticProcess* h = new G4UHadronElasticProcess("hElastic");
|
||||
G4HadronElastic* nhe = new G4HadronElastic();
|
||||
nhe->SetQModelLowLimit(0.0);
|
||||
nhe->SetLowestEnergyLimit(0.0);
|
||||
neutronModel = nhe;
|
||||
h->SetQElasticCrossSection(nhe->GetCS());
|
||||
hel = h;
|
||||
if(glFlag) hel->AddDataSet(new G4UElasticCrossSection());
|
||||
if(glFlag) hel->AddDataSet(new G4UElasticCrossSection(particle));
|
||||
} else {
|
||||
hel = new G4HadronElasticProcess("hElastic");
|
||||
neutronModel = new G4LElastic();
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4HadronHElasticPhysics.cc,v 1.1 2006/11/23 15:46:04 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
// $Id: G4HadronHElasticPhysics.cc,v 1.2 2007/03/21 12:36:14 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
@@ -33,6 +33,8 @@
|
||||
// Author: 23 November 2006 V. Ivanchenko
|
||||
//
|
||||
// Modified:
|
||||
// 21.03.07 (V.Ivanchenko) Use G4BGGNucleonElasticXS and G4BGGPionElasticXS;
|
||||
// Reduce thresholds for HE and Q-models to zero
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
@@ -55,6 +57,8 @@
|
||||
#include "G4HadronProcessStore.hh"
|
||||
#include "G4VQCrossSection.hh"
|
||||
#include "G4UElasticCrossSection.hh"
|
||||
#include "G4BGGNucleonElasticXS.hh"
|
||||
#include "G4BGGPionElasticXS.hh"
|
||||
|
||||
G4HadronHElasticPhysics::G4HadronHElasticPhysics(
|
||||
const G4String& name, G4int ver, G4bool hp, G4bool glauber)
|
||||
@@ -95,7 +99,8 @@ void G4HadronHElasticPhysics::ConstructProcess()
|
||||
|
||||
G4HadronProcessStore* store = G4HadronProcessStore::Instance();
|
||||
|
||||
G4double elimit = 0.4*GeV;
|
||||
// G4double elimit = 0.4*GeV;
|
||||
G4double elimit = 0.0;
|
||||
|
||||
if(verbose > 1)
|
||||
G4cout << "### HadronElasticPhysics Construct Processes with HE limit "
|
||||
@@ -106,6 +111,8 @@ void G4HadronHElasticPhysics::ConstructProcess()
|
||||
|
||||
G4HadronElastic* he = new G4HadronElastic();
|
||||
he->SetHEModelLowLimit(elimit);
|
||||
he->SetQModelLowLimit(0.0);
|
||||
he->SetLowestEnergyLimit(0.0);
|
||||
model = he;
|
||||
man = he->GetCS();
|
||||
|
||||
@@ -139,13 +146,15 @@ void G4HadronHElasticPhysics::ConstructProcess()
|
||||
pname == "triton") {
|
||||
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
if(mname == "elastic") {
|
||||
G4UHadronElasticProcess* h = new G4UHadronElasticProcess("hElastic");
|
||||
h->SetQElasticCrossSection(man);
|
||||
hel = h;
|
||||
if(glFlag) hel->AddDataSet(new G4UElasticCrossSection());
|
||||
} else {
|
||||
hel = new G4HadronElasticProcess("hElastic");
|
||||
G4UHadronElasticProcess* h = new G4UHadronElasticProcess("hElastic");
|
||||
h->SetQElasticCrossSection(man);
|
||||
hel = h;
|
||||
if(pname == "proton") {
|
||||
hel->AddDataSet(new G4BGGNucleonElasticXS(particle));
|
||||
} else if (pname == "pi+" || pname == "pi-") {
|
||||
hel->AddDataSet(new G4BGGPionElasticXS(particle));
|
||||
} else {
|
||||
hel->AddDataSet(new G4UElasticCrossSection(particle));
|
||||
}
|
||||
hel->RegisterMe(model);
|
||||
store->Register(hel,particle,model,mname);
|
||||
@@ -161,7 +170,7 @@ void G4HadronHElasticPhysics::ConstructProcess()
|
||||
neutronModel = nhe;
|
||||
h->SetQElasticCrossSection(nhe->GetCS());
|
||||
hel = h;
|
||||
if(glFlag) hel->AddDataSet(new G4UElasticCrossSection());
|
||||
hel->AddDataSet(new G4BGGNucleonElasticXS(particle));
|
||||
|
||||
if(hpFlag) {
|
||||
neutronModel->SetMinEnergy(19.5*MeV);
|
||||
|
||||
@@ -42,6 +42,12 @@ G4NeutronHPBuilder()
|
||||
|
||||
theHPInelastic = 0;
|
||||
theHPInelasticData = 0;
|
||||
|
||||
theMin = 0;
|
||||
theIMin = theMin;
|
||||
theMax = 20*MeV;
|
||||
theIMax = theMax;
|
||||
|
||||
}
|
||||
|
||||
G4NeutronHPBuilder::
|
||||
@@ -57,6 +63,8 @@ void G4NeutronHPBuilder::
|
||||
Build(G4HadronElasticProcess * aP)
|
||||
{
|
||||
if(theHPElastic==0) theHPElastic = new G4NeutronHPElastic;
|
||||
theHPElastic->SetMinEnergy(theMin);
|
||||
theHPElastic->SetMaxEnergy(theMax);
|
||||
if(theHPElasticData == 0) theHPElasticData = new G4NeutronHPElasticData;
|
||||
aP->AddDataSet(theHPElasticData);
|
||||
aP->RegisterMe(theHPElastic);
|
||||
@@ -66,6 +74,8 @@ void G4NeutronHPBuilder::
|
||||
Build(G4HadronFissionProcess * aP)
|
||||
{
|
||||
if(theHPFission == 0) theHPFission = new G4NeutronHPFission;
|
||||
theHPFission->SetMinEnergy(theMin);
|
||||
theHPFission->SetMaxEnergy(theMax);
|
||||
if(theHPFissionData==0) theHPFissionData=new G4NeutronHPFissionData;
|
||||
aP->AddDataSet(theHPFissionData);
|
||||
aP->RegisterMe(theHPFission);
|
||||
@@ -75,6 +85,8 @@ void G4NeutronHPBuilder::
|
||||
Build(G4HadronCaptureProcess * aP)
|
||||
{
|
||||
if(theHPCapture==0) theHPCapture = new G4NeutronHPCapture;
|
||||
theHPCapture->SetMinEnergy(theMin);
|
||||
theHPCapture->SetMaxEnergy(theMax);
|
||||
if(theHPCaptureData==0) theHPCaptureData = new G4NeutronHPCaptureData;
|
||||
aP->AddDataSet(theHPCaptureData);
|
||||
aP->RegisterMe(theHPCapture);
|
||||
@@ -84,6 +96,8 @@ void G4NeutronHPBuilder::
|
||||
Build(G4NeutronInelasticProcess * aP)
|
||||
{
|
||||
if(theHPInelastic==0) theHPInelastic = new G4NeutronHPInelastic;
|
||||
theHPInelastic->SetMinEnergy(theIMin);
|
||||
theHPInelastic->SetMaxEnergy(theIMax);
|
||||
if(theHPInelasticData==0) theHPInelasticData = new G4NeutronHPInelasticData;
|
||||
aP->AddDataSet(theHPInelasticData);
|
||||
aP->RegisterMe(theHPInelastic);
|
||||
|
||||
@@ -23,43 +23,50 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#include "G4QGSCEflowNeutronBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
#include "G4QGSCEflowNeutronBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
G4QGSCEflowNeutronBuilder::
|
||||
G4QGSCEflowNeutronBuilder()
|
||||
{
|
||||
theMin = 8*GeV;
|
||||
theModel = new G4TheoFSGenerator;
|
||||
G4QGSCEflowNeutronBuilder::
|
||||
G4QGSCEflowNeutronBuilder(G4bool quasiElastic)
|
||||
{
|
||||
theMin = 8*GeV;
|
||||
theModel = new G4TheoFSGenerator;
|
||||
|
||||
theStringModel= new G4QGSModel< G4QGSParticipants >;
|
||||
theStringDecay = new G4ExcitedStringDecay(new G4QGSMFragmentation);
|
||||
theStringModel->SetFragmentationModel(theStringDecay);
|
||||
theStringModel= new G4QGSModel< G4QGSParticipants >;
|
||||
theStringDecay = new G4ExcitedStringDecay(new G4QGSMFragmentation);
|
||||
theStringModel->SetFragmentationModel(theStringDecay);
|
||||
|
||||
theCascade = new G4StringChipsParticleLevelInterface;
|
||||
theCascade = new G4StringChipsParticleLevelInterface;
|
||||
|
||||
theModel->SetTransport(theCascade);
|
||||
theModel->SetHighEnergyGenerator(theStringModel);
|
||||
}
|
||||
theModel->SetTransport(theCascade);
|
||||
theModel->SetHighEnergyGenerator(theStringModel);
|
||||
if (quasiElastic)
|
||||
{
|
||||
theQuasiElastic=new G4QuasiElasticChannel;
|
||||
theModel->SetQuasiElasticChannel(theQuasiElastic);
|
||||
} else
|
||||
{ theQuasiElastic=0;}
|
||||
}
|
||||
|
||||
G4QGSCEflowNeutronBuilder::
|
||||
~G4QGSCEflowNeutronBuilder()
|
||||
{
|
||||
delete theStringDecay;
|
||||
delete theStringModel;
|
||||
delete theCascade;
|
||||
delete theModel;
|
||||
}
|
||||
G4QGSCEflowNeutronBuilder::
|
||||
~G4QGSCEflowNeutronBuilder()
|
||||
{
|
||||
delete theStringDecay;
|
||||
delete theStringModel;
|
||||
delete theCascade;
|
||||
if ( theQuasiElastic ) delete theQuasiElastic;
|
||||
delete theModel;
|
||||
}
|
||||
|
||||
void G4QGSCEflowNeutronBuilder::
|
||||
Build(G4NeutronInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->RegisterMe(theModel);
|
||||
aP->AddDataSet(&theXSec);
|
||||
}
|
||||
void G4QGSCEflowNeutronBuilder::
|
||||
Build(G4NeutronInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->RegisterMe(theModel);
|
||||
aP->AddDataSet(&theXSec);
|
||||
}
|
||||
|
||||
// 2006 G.Folger
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
G4QGSCEflowPiKBuilder::
|
||||
G4QGSCEflowPiKBuilder()
|
||||
G4QGSCEflowPiKBuilder(G4bool quasiElastic)
|
||||
{
|
||||
theMin = 8*GeV;
|
||||
theModel = new G4TheoFSGenerator;
|
||||
@@ -42,6 +42,12 @@ G4QGSCEflowPiKBuilder()
|
||||
|
||||
theModel->SetTransport(theCascade);
|
||||
theModel->SetHighEnergyGenerator(theStringModel);
|
||||
if (quasiElastic)
|
||||
{
|
||||
theQuasiElastic=new G4QuasiElasticChannel;
|
||||
theModel->SetQuasiElasticChannel(theQuasiElastic);
|
||||
} else
|
||||
{ theQuasiElastic=0;}
|
||||
}
|
||||
|
||||
G4QGSCEflowPiKBuilder::
|
||||
@@ -50,6 +56,7 @@ G4QGSCEflowPiKBuilder::
|
||||
delete theCascade;
|
||||
delete theStringDecay;
|
||||
delete theStringModel;
|
||||
if ( theQuasiElastic ) delete theQuasiElastic;
|
||||
delete theModel;
|
||||
}
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
G4QGSCEflowProtonBuilder::
|
||||
G4QGSCEflowProtonBuilder()
|
||||
G4QGSCEflowProtonBuilder(G4bool quasiElastic)
|
||||
{
|
||||
theMin = 8*GeV;
|
||||
theModel = new G4TheoFSGenerator;
|
||||
@@ -42,6 +42,12 @@ G4QGSCEflowProtonBuilder()
|
||||
|
||||
theModel->SetHighEnergyGenerator(theStringModel);
|
||||
theModel->SetTransport(theCascade);
|
||||
if (quasiElastic)
|
||||
{
|
||||
theQuasiElastic=new G4QuasiElasticChannel;
|
||||
theModel->SetQuasiElasticChannel(theQuasiElastic);
|
||||
} else
|
||||
{ theQuasiElastic=0;}
|
||||
}
|
||||
|
||||
G4QGSCEflowProtonBuilder::
|
||||
@@ -50,6 +56,7 @@ G4QGSCEflowProtonBuilder::
|
||||
delete theCascade;
|
||||
delete theStringDecay;
|
||||
delete theStringModel;
|
||||
if ( theQuasiElastic ) delete theQuasiElastic;
|
||||
delete theModel;
|
||||
}
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
G4QGSCNeutronBuilder::
|
||||
G4QGSCNeutronBuilder()
|
||||
G4QGSCNeutronBuilder(G4bool quasiElastic)
|
||||
{
|
||||
theMin = 8*GeV;
|
||||
theModel = new G4TheoFSGenerator;
|
||||
@@ -42,6 +42,12 @@
|
||||
|
||||
theModel->SetTransport(theCascade);
|
||||
theModel->SetHighEnergyGenerator(theStringModel);
|
||||
if (quasiElastic)
|
||||
{
|
||||
theQuasiElastic=new G4QuasiElasticChannel;
|
||||
theModel->SetQuasiElasticChannel(theQuasiElastic);
|
||||
} else
|
||||
{ theQuasiElastic=0;}
|
||||
}
|
||||
|
||||
G4QGSCNeutronBuilder::
|
||||
@@ -50,6 +56,7 @@
|
||||
delete theStringDecay;
|
||||
delete theStringModel;
|
||||
delete theCascade;
|
||||
if ( theQuasiElastic ) delete theQuasiElastic;
|
||||
delete theModel;
|
||||
}
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
G4QGSCPiKBuilder::
|
||||
G4QGSCPiKBuilder()
|
||||
G4QGSCPiKBuilder(G4bool quasiElastic)
|
||||
{
|
||||
theMin = 8*GeV;
|
||||
theModel = new G4TheoFSGenerator;
|
||||
@@ -42,6 +42,12 @@ G4QGSCPiKBuilder()
|
||||
|
||||
theModel->SetTransport(theCascade);
|
||||
theModel->SetHighEnergyGenerator(theStringModel);
|
||||
if (quasiElastic)
|
||||
{
|
||||
theQuasiElastic=new G4QuasiElasticChannel;
|
||||
theModel->SetQuasiElasticChannel(theQuasiElastic);
|
||||
} else
|
||||
{ theQuasiElastic=0;}
|
||||
}
|
||||
|
||||
G4QGSCPiKBuilder::
|
||||
@@ -50,6 +56,7 @@ G4QGSCPiKBuilder::
|
||||
delete theCascade;
|
||||
delete theStringDecay;
|
||||
delete theStringModel;
|
||||
if ( theQuasiElastic ) delete theQuasiElastic;
|
||||
delete theModel;
|
||||
}
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
G4QGSCProtonBuilder::
|
||||
G4QGSCProtonBuilder()
|
||||
G4QGSCProtonBuilder(G4bool quasiElastic)
|
||||
{
|
||||
theMin = 8*GeV;
|
||||
theModel = new G4TheoFSGenerator;
|
||||
@@ -42,6 +42,12 @@ G4QGSCProtonBuilder()
|
||||
|
||||
theModel->SetHighEnergyGenerator(theStringModel);
|
||||
theModel->SetTransport(theCascade);
|
||||
if (quasiElastic)
|
||||
{
|
||||
theQuasiElastic=new G4QuasiElasticChannel;
|
||||
theModel->SetQuasiElasticChannel(theQuasiElastic);
|
||||
} else
|
||||
{ theQuasiElastic=0;}
|
||||
}
|
||||
|
||||
G4QGSCProtonBuilder::
|
||||
@@ -50,6 +56,7 @@ G4QGSCProtonBuilder::
|
||||
delete theCascade;
|
||||
delete theStringDecay;
|
||||
delete theStringModel;
|
||||
if ( theQuasiElastic ) delete theQuasiElastic;
|
||||
delete theModel;
|
||||
}
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
G4QGSPNeutronBuilder::
|
||||
G4QGSPNeutronBuilder()
|
||||
G4QGSPNeutronBuilder(G4bool quasiElastic)
|
||||
{
|
||||
theMin = 12*GeV;
|
||||
theModel = new G4TheoFSGenerator;
|
||||
@@ -44,6 +44,12 @@ G4QGSPNeutronBuilder()
|
||||
|
||||
theModel->SetTransport(theCascade);
|
||||
theModel->SetHighEnergyGenerator(theStringModel);
|
||||
if (quasiElastic)
|
||||
{
|
||||
theQuasiElastic=new G4QuasiElasticChannel;
|
||||
theModel->SetQuasiElasticChannel(theQuasiElastic);
|
||||
} else
|
||||
{ theQuasiElastic=0;}
|
||||
}
|
||||
|
||||
G4QGSPNeutronBuilder::
|
||||
@@ -53,6 +59,7 @@ G4QGSPNeutronBuilder::
|
||||
delete theStringModel;
|
||||
delete thePreEquilib;
|
||||
delete theCascade;
|
||||
if ( theQuasiElastic ) delete theQuasiElastic;
|
||||
delete theModel;
|
||||
}
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
G4QGSPPiKBuilder::
|
||||
G4QGSPPiKBuilder()
|
||||
G4QGSPPiKBuilder(G4bool quasiElastic)
|
||||
{
|
||||
theMin = 12*GeV;
|
||||
theModel = new G4TheoFSGenerator;
|
||||
@@ -37,12 +37,19 @@ G4QGSPPiKBuilder()
|
||||
theStringModel = new G4QGSModel< G4QGSParticipants >;
|
||||
theStringDecay = new G4ExcitedStringDecay(new G4QGSMFragmentation);
|
||||
theStringModel->SetFragmentationModel(theStringDecay);
|
||||
|
||||
|
||||
theCascade = new G4GeneratorPrecompoundInterface;
|
||||
thePreEquilib = new G4PreCompoundModel(new G4ExcitationHandler);
|
||||
theCascade->SetDeExcitation(thePreEquilib);
|
||||
|
||||
theModel->SetHighEnergyGenerator(theStringModel);
|
||||
if (quasiElastic)
|
||||
{
|
||||
theQuasiElastic=new G4QuasiElasticChannel;
|
||||
theModel->SetQuasiElasticChannel(theQuasiElastic);
|
||||
} else
|
||||
{ theQuasiElastic=0;}
|
||||
theModel->SetTransport(theCascade);
|
||||
}
|
||||
|
||||
@@ -50,6 +57,8 @@ G4QGSPPiKBuilder::
|
||||
~G4QGSPPiKBuilder()
|
||||
{
|
||||
delete theCascade;
|
||||
delete thePreEquilib;
|
||||
if ( theQuasiElastic ) delete theQuasiElastic;
|
||||
delete theStringDecay;
|
||||
delete theStringModel;
|
||||
delete theModel;
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
G4QGSPProtonBuilder::
|
||||
G4QGSPProtonBuilder()
|
||||
G4QGSPProtonBuilder(G4bool quasiElastic)
|
||||
{
|
||||
theMin = 12*GeV;
|
||||
theModel = new G4TheoFSGenerator;
|
||||
@@ -44,6 +44,12 @@
|
||||
|
||||
theModel->SetTransport(theCascade);
|
||||
theModel->SetHighEnergyGenerator(theStringModel);
|
||||
if (quasiElastic)
|
||||
{
|
||||
theQuasiElastic=new G4QuasiElasticChannel;
|
||||
theModel->SetQuasiElasticChannel(theQuasiElastic);
|
||||
} else
|
||||
{ theQuasiElastic=0;}
|
||||
}
|
||||
|
||||
void G4QGSPProtonBuilder::
|
||||
@@ -66,6 +72,7 @@
|
||||
{
|
||||
delete thePreEquilib;
|
||||
delete theCascade;
|
||||
if ( theQuasiElastic ) delete theQuasiElastic;
|
||||
delete theStringDecay;
|
||||
delete theStringModel;
|
||||
delete theModel;
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4QStoppingPhysics.cc,v 1.1 2006/10/31 11:35:03 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-08-02 $
|
||||
// $Id: G4QStoppingPhysics.cc,v 1.2 2007/04/26 16:03:18 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-08-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
@@ -49,8 +49,10 @@
|
||||
#include "G4BaryonConstructor.hh"
|
||||
#include "G4MuonMinus.hh"
|
||||
|
||||
G4QStoppingPhysics::G4QStoppingPhysics(const G4String& name, G4int ver)
|
||||
: G4VPhysicsConstructor(name), verbose(ver), wasActivated(false)
|
||||
G4QStoppingPhysics::G4QStoppingPhysics(const G4String& name, G4int ver,
|
||||
G4bool UseMuonMinusCapture)
|
||||
: G4VPhysicsConstructor(name), verbose(ver), wasActivated(false) ,
|
||||
useMuonMinusCaptureAtRest(UseMuonMinusCapture)
|
||||
{
|
||||
if(verbose > 1) G4cout << "### G4QStoppingPhysics" << G4endl;
|
||||
}
|
||||
@@ -58,7 +60,7 @@ G4QStoppingPhysics::G4QStoppingPhysics(const G4String& name, G4int ver)
|
||||
G4QStoppingPhysics::~G4QStoppingPhysics()
|
||||
{
|
||||
if(wasActivated) {
|
||||
delete muProcess;
|
||||
if ( muProcess ) delete muProcess;
|
||||
delete hProcess;
|
||||
}
|
||||
}
|
||||
@@ -84,7 +86,12 @@ void G4QStoppingPhysics::ConstructProcess()
|
||||
if(wasActivated) return;
|
||||
wasActivated = true;
|
||||
|
||||
muProcess = new G4MuonMinusCaptureAtRest();
|
||||
if ( useMuonMinusCaptureAtRest )
|
||||
{
|
||||
muProcess = new G4MuonMinusCaptureAtRest();
|
||||
} else {
|
||||
muProcess = 0;
|
||||
}
|
||||
hProcess = new G4QCaptureAtRest();
|
||||
|
||||
G4double mThreshold = 130.*MeV;
|
||||
@@ -99,10 +106,18 @@ void G4QStoppingPhysics::ConstructProcess()
|
||||
particle = theParticleIterator->value();
|
||||
pmanager = particle->GetProcessManager();
|
||||
if(particle == G4MuonMinus::MuonMinus()) {
|
||||
pmanager->AddRestProcess(muProcess);
|
||||
if(verbose > 1)
|
||||
G4cout << "### QStoppingPhysics added for "
|
||||
<< particle->GetParticleName() << G4endl;
|
||||
if ( useMuonMinusCaptureAtRest )
|
||||
{
|
||||
pmanager->AddRestProcess(muProcess);
|
||||
if(verbose > 1)
|
||||
G4cout << "### QStoppingPhysics added G4MuonMinusCaptureAtRest for "
|
||||
<< particle->GetParticleName() << G4endl;
|
||||
} else {
|
||||
pmanager->AddRestProcess(hProcess);
|
||||
if(verbose > 1)
|
||||
G4cout << "### QStoppingPhysics added G4QCaptureAtRest for "
|
||||
<< particle->GetParticleName() << G4endl;
|
||||
}
|
||||
}
|
||||
if(particle->GetPDGCharge() < 0.0 &&
|
||||
particle->GetPDGMass() > mThreshold &&
|
||||
|
||||
Reference in New Issue
Block a user