Import Geant4 9.3.0 source tree
This commit is contained in:
@@ -23,6 +23,20 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4BertiniNeutronBuilder.cc,v 1.4 2009/04/02 08:11:32 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4BertiniNeutronBuilder
|
||||
//
|
||||
// Author: 2002 H.P. Wellisch
|
||||
//
|
||||
// Modified:
|
||||
// 02.04.2009 V.Ivanchenko remove add cross section, string builderis reponsible
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
#include "G4BertiniNeutronBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
@@ -42,13 +56,11 @@ Build(G4NeutronInelasticProcess * aP)
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(theMax);
|
||||
aP->RegisterMe(theModel);
|
||||
aP->AddDataSet(&theXSec);
|
||||
}
|
||||
|
||||
G4BertiniNeutronBuilder::
|
||||
~G4BertiniNeutronBuilder()
|
||||
{
|
||||
delete theModel;
|
||||
}
|
||||
|
||||
void G4BertiniNeutronBuilder::
|
||||
|
||||
@@ -23,14 +23,29 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#include "G4BertiniPiKBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
// $Id: G4BertiniPiKBuilder.cc,v 1.3 2009/04/02 08:11:32 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4BertiniPiKBuilder
|
||||
//
|
||||
// Author: 2002 H.P. Wellisch
|
||||
//
|
||||
// Modified:
|
||||
// 02.04.2009 V.Ivanchenko remove add cross section, string builderis reponsible
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
#include "G4BertiniPiKBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
G4BertiniPiKBuilder::
|
||||
G4BertiniPiKBuilder()
|
||||
G4BertiniPiKBuilder::
|
||||
G4BertiniPiKBuilder()
|
||||
{
|
||||
thePiData = new G4PiNuclearCrossSection;
|
||||
theMin = 0*GeV;
|
||||
theMax = 9.9*GeV;
|
||||
theModel = new G4CascadeInterface;
|
||||
@@ -38,58 +53,55 @@
|
||||
theModel->SetMaxEnergy(theMax);
|
||||
}
|
||||
|
||||
G4BertiniPiKBuilder::
|
||||
~G4BertiniPiKBuilder()
|
||||
G4BertiniPiKBuilder::~G4BertiniPiKBuilder()
|
||||
{
|
||||
delete theModel;
|
||||
}
|
||||
|
||||
void G4BertiniPiKBuilder::
|
||||
Build(G4PionPlusInelasticProcess * aP)
|
||||
void G4BertiniPiKBuilder::
|
||||
Build(G4PionPlusInelasticProcess * aP)
|
||||
{
|
||||
aP->RegisterMe(theModel);
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(theMax);
|
||||
}
|
||||
|
||||
void G4BertiniPiKBuilder::
|
||||
Build(G4PionMinusInelasticProcess * aP)
|
||||
{
|
||||
aP->RegisterMe(theModel);
|
||||
aP->AddDataSet(&thePiData);
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(theMax);
|
||||
}
|
||||
|
||||
void G4BertiniPiKBuilder::
|
||||
Build(G4HadronElasticProcess * ) {}
|
||||
|
||||
void G4BertiniPiKBuilder::
|
||||
Build(G4KaonPlusInelasticProcess * aP)
|
||||
void G4BertiniPiKBuilder::
|
||||
Build(G4PionMinusInelasticProcess * aP)
|
||||
{
|
||||
aP->RegisterMe(theModel);
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(theMax);
|
||||
}
|
||||
|
||||
void G4BertiniPiKBuilder::
|
||||
Build(G4KaonMinusInelasticProcess * aP)
|
||||
void G4BertiniPiKBuilder::
|
||||
Build(G4HadronElasticProcess * ) {}
|
||||
|
||||
void G4BertiniPiKBuilder::
|
||||
Build(G4KaonPlusInelasticProcess * aP)
|
||||
{
|
||||
aP->RegisterMe(theModel);
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(theMax);
|
||||
}
|
||||
|
||||
void G4BertiniPiKBuilder::
|
||||
Build(G4KaonZeroLInelasticProcess * aP)
|
||||
void G4BertiniPiKBuilder::
|
||||
Build(G4KaonMinusInelasticProcess * aP)
|
||||
{
|
||||
aP->RegisterMe(theModel);
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(theMax);
|
||||
}
|
||||
|
||||
void G4BertiniPiKBuilder::
|
||||
Build(G4KaonZeroSInelasticProcess * aP)
|
||||
void G4BertiniPiKBuilder::
|
||||
Build(G4KaonZeroLInelasticProcess * aP)
|
||||
{
|
||||
aP->RegisterMe(theModel);
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(theMax);
|
||||
}
|
||||
|
||||
void G4BertiniPiKBuilder::
|
||||
Build(G4KaonZeroSInelasticProcess * aP)
|
||||
{
|
||||
aP->RegisterMe(theModel);
|
||||
theModel->SetMinEnergy(theMin);
|
||||
|
||||
@@ -23,6 +23,20 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4BertiniProtonBuilder.cc,v 1.3 2009/04/02 08:11:32 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4BertiniProtonBuilder
|
||||
//
|
||||
// Author: 2002 H.P. Wellisch
|
||||
//
|
||||
// Modified:
|
||||
// 02.04.2009 V.Ivanchenko remove add cross section, string builderis reponsible
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
#include "G4BertiniProtonBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
@@ -39,7 +53,6 @@ G4BertiniProtonBuilder()
|
||||
G4BertiniProtonBuilder::
|
||||
~G4BertiniProtonBuilder()
|
||||
{
|
||||
delete theModel;
|
||||
}
|
||||
|
||||
void G4BertiniProtonBuilder::
|
||||
@@ -53,7 +66,6 @@ Build(G4ProtonInelasticProcess * aP)
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(theMax);
|
||||
aP->RegisterMe(theModel);
|
||||
aP->AddDataSet(&theXSec);
|
||||
}
|
||||
|
||||
// 2002 by J.P. Wellisch
|
||||
|
||||
@@ -23,13 +23,27 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#include "G4BinaryNeutronBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
// $Id: G4BinaryNeutronBuilder.cc,v 1.3 2009/04/02 08:11:32 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4BinaryNeutronBuilder
|
||||
//
|
||||
// Author: 2002 H.P. Wellisch
|
||||
//
|
||||
// Modified:
|
||||
// 02.04.2009 V.Ivanchenko remove add cross section, string builderis reponsible
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
#include "G4BinaryNeutronBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
G4BinaryNeutronBuilder::
|
||||
G4BinaryNeutronBuilder()
|
||||
G4BinaryNeutronBuilder::
|
||||
G4BinaryNeutronBuilder()
|
||||
{
|
||||
theMin = 0;
|
||||
theMax = 9.9*GeV;
|
||||
@@ -42,27 +56,24 @@
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(theMax);
|
||||
aP->RegisterMe(theModel);
|
||||
aP->AddDataSet(&theXSec);
|
||||
}
|
||||
|
||||
G4BinaryNeutronBuilder::
|
||||
~G4BinaryNeutronBuilder()
|
||||
G4BinaryNeutronBuilder::~G4BinaryNeutronBuilder()
|
||||
{
|
||||
delete theModel;
|
||||
}
|
||||
|
||||
void G4BinaryNeutronBuilder::
|
||||
Build(G4HadronElasticProcess * )
|
||||
void G4BinaryNeutronBuilder::
|
||||
Build(G4HadronElasticProcess * )
|
||||
{
|
||||
}
|
||||
|
||||
void G4BinaryNeutronBuilder::
|
||||
Build(G4HadronFissionProcess * )
|
||||
void G4BinaryNeutronBuilder::
|
||||
Build(G4HadronFissionProcess * )
|
||||
{
|
||||
}
|
||||
|
||||
void G4BinaryNeutronBuilder::
|
||||
Build(G4HadronCaptureProcess * )
|
||||
void G4BinaryNeutronBuilder::
|
||||
Build(G4HadronCaptureProcess * )
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -23,6 +23,20 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4BinaryPiKBuilder.cc,v 1.3 2009/04/02 08:11:32 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4BinaryPiKBuilder
|
||||
//
|
||||
// Author: 2002 H.P. Wellisch
|
||||
//
|
||||
// Modified:
|
||||
// 02.04.2009 V.Ivanchenko remove add cross section, string builderis reponsible
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
#include "G4BinaryPiKBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
@@ -31,6 +45,7 @@
|
||||
G4BinaryPiKBuilder::
|
||||
G4BinaryPiKBuilder()
|
||||
{
|
||||
thePiData = new G4PiNuclearCrossSection;
|
||||
theMin = 0*GeV;
|
||||
theMax = 1.3*GeV;
|
||||
theModel = new G4BinaryCascade;
|
||||
@@ -41,7 +56,6 @@ G4BinaryPiKBuilder()
|
||||
G4BinaryPiKBuilder::
|
||||
~G4BinaryPiKBuilder()
|
||||
{
|
||||
delete theModel;
|
||||
}
|
||||
|
||||
void G4BinaryPiKBuilder::
|
||||
@@ -53,7 +67,6 @@ Build(G4PionPlusInelasticProcess * aP)
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(theMax);
|
||||
aP->RegisterMe(theModel);
|
||||
aP->AddDataSet(&thePiData);
|
||||
}
|
||||
|
||||
void G4BinaryPiKBuilder::
|
||||
@@ -62,7 +75,6 @@ Build(G4PionMinusInelasticProcess * aP)
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(theMax);
|
||||
aP->RegisterMe(theModel);
|
||||
aP->AddDataSet(&thePiData);
|
||||
}
|
||||
|
||||
void G4BinaryPiKBuilder::
|
||||
|
||||
@@ -23,6 +23,20 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4BinaryProtonBuilder.cc,v 1.3 2009/04/02 08:11:32 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4BinaryProtonBuilder
|
||||
//
|
||||
// Author: 2002 H.P. Wellisch
|
||||
//
|
||||
// Modified:
|
||||
// 02.04.2009 V.Ivanchenko remove add cross section, string builderis reponsible
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
#include "G4BinaryProtonBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
@@ -39,14 +53,15 @@ G4BinaryProtonBuilder()
|
||||
void G4BinaryProtonBuilder::
|
||||
Build(G4ProtonInelasticProcess * aP)
|
||||
{
|
||||
aP->AddDataSet(&theXSec);
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(theMax);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
G4BinaryProtonBuilder::
|
||||
~G4BinaryProtonBuilder() {}
|
||||
~G4BinaryProtonBuilder()
|
||||
{
|
||||
}
|
||||
|
||||
void G4BinaryProtonBuilder::
|
||||
Build(G4HadronElasticProcess * )
|
||||
|
||||
@@ -0,0 +1,233 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4EmDNAPhysics.cc,v 1.2 2009/11/01 13:21:13 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
|
||||
#include "G4EmDNAPhysics.hh"
|
||||
|
||||
#include "G4ProcessManager.hh"
|
||||
#include "G4DNAGenericIonsManager.hh"
|
||||
|
||||
// *** Processes and models for Geant4-DNA
|
||||
|
||||
#include "G4DNAElastic.hh"
|
||||
#include "G4DNAChampionElasticModel.hh"
|
||||
#include "G4DNAScreenedRutherfordElasticModel.hh"
|
||||
|
||||
#include "G4DNAExcitation.hh"
|
||||
#include "G4DNAEmfietzoglouExcitationModel.hh"
|
||||
#include "G4DNAMillerGreenExcitationModel.hh"
|
||||
#include "G4DNABornExcitationModel.hh"
|
||||
|
||||
#include "G4DNAIonisation.hh"
|
||||
#include "G4DNABornIonisationModel.hh"
|
||||
#include "G4DNARuddIonisationModel.hh"
|
||||
|
||||
#include "G4DNAChargeDecrease.hh"
|
||||
#include "G4DNADingfelderChargeDecreaseModel.hh"
|
||||
|
||||
#include "G4DNAChargeIncrease.hh"
|
||||
#include "G4DNADingfelderChargeIncreaseModel.hh"
|
||||
|
||||
// particles
|
||||
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Proton.hh"
|
||||
|
||||
// Warning : the following is needed in order to use EM Physics builders
|
||||
// e+
|
||||
#include "G4Positron.hh"
|
||||
#include "G4eMultipleScattering.hh"
|
||||
#include "G4eIonisation.hh"
|
||||
#include "G4eBremsstrahlung.hh"
|
||||
#include "G4eplusAnnihilation.hh"
|
||||
// gamma
|
||||
#include "G4Gamma.hh"
|
||||
#include "G4PhotoElectricEffect.hh"
|
||||
#include "G4LivermorePhotoElectricModel.hh"
|
||||
#include "G4ComptonScattering.hh"
|
||||
#include "G4LivermoreComptonModel.hh"
|
||||
#include "G4GammaConversion.hh"
|
||||
#include "G4LivermoreGammaConversionModel.hh"
|
||||
#include "G4RayleighScattering.hh"
|
||||
#include "G4LivermoreRayleighModel.hh"
|
||||
// end of warning
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmDNAPhysics::G4EmDNAPhysics(
|
||||
G4int ver, const G4String& name)
|
||||
: G4VPhysicsConstructor(name), verbose(ver)
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmDNAPhysics::~G4EmDNAPhysics()
|
||||
{}
|
||||
|
||||
#include "G4GenericIon.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmDNAPhysics::ConstructParticle()
|
||||
{
|
||||
// bosons
|
||||
G4Gamma::Gamma();
|
||||
|
||||
// leptons
|
||||
G4Electron::Electron();
|
||||
G4Positron::Positron();
|
||||
|
||||
// baryons
|
||||
G4Proton::Proton();
|
||||
|
||||
G4GenericIon::GenericIonDefinition();
|
||||
|
||||
G4DNAGenericIonsManager * genericIonsManager;
|
||||
genericIonsManager=G4DNAGenericIonsManager::Instance();
|
||||
genericIonsManager->GetIon("alpha++");
|
||||
genericIonsManager->GetIon("alpha+");
|
||||
genericIonsManager->GetIon("helium");
|
||||
genericIonsManager->GetIon("hydrogen");
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmDNAPhysics::ConstructProcess()
|
||||
{
|
||||
theParticleIterator->reset();
|
||||
while( (*theParticleIterator)() )
|
||||
{
|
||||
G4ParticleDefinition* particle = theParticleIterator->value();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
G4String particleName = particle->GetParticleName();
|
||||
|
||||
if (particleName == "e-") {
|
||||
|
||||
// *** Elastic scattering (two alternative models available) ***
|
||||
|
||||
G4DNAElastic* theDNAElasticProcess = new G4DNAElastic();
|
||||
theDNAElasticProcess->SetModel(new G4DNAScreenedRutherfordElasticModel());
|
||||
|
||||
// or alternative model
|
||||
// theDNAElasticProcess->SetModel(new G4DNAChampionElasticModel());
|
||||
|
||||
pmanager->AddDiscreteProcess(theDNAElasticProcess);
|
||||
|
||||
// *** Excitation ***
|
||||
pmanager->AddDiscreteProcess(new G4DNAExcitation());
|
||||
|
||||
// *** Ionisation ***
|
||||
pmanager->AddDiscreteProcess(new G4DNAIonisation());
|
||||
|
||||
|
||||
} else if ( particleName == "proton" ) {
|
||||
pmanager->AddDiscreteProcess(new G4DNAExcitation());
|
||||
pmanager->AddDiscreteProcess(new G4DNAIonisation());
|
||||
pmanager->AddDiscreteProcess(new G4DNAChargeDecrease());
|
||||
|
||||
} else if ( particleName == "hydrogen" ) {
|
||||
pmanager->AddDiscreteProcess(new G4DNAIonisation());
|
||||
pmanager->AddDiscreteProcess(new G4DNAChargeIncrease());
|
||||
|
||||
} else if ( particleName == "alpha" ) {
|
||||
pmanager->AddDiscreteProcess(new G4DNAExcitation());
|
||||
pmanager->AddDiscreteProcess(new G4DNAIonisation());
|
||||
pmanager->AddDiscreteProcess(new G4DNAChargeDecrease());
|
||||
|
||||
} else if ( particleName == "alpha+" ) {
|
||||
pmanager->AddDiscreteProcess(new G4DNAExcitation());
|
||||
pmanager->AddDiscreteProcess(new G4DNAIonisation());
|
||||
pmanager->AddDiscreteProcess(new G4DNAChargeDecrease());
|
||||
pmanager->AddDiscreteProcess(new G4DNAChargeIncrease());
|
||||
|
||||
} else if ( particleName == "helium" ) {
|
||||
pmanager->AddDiscreteProcess(new G4DNAExcitation());
|
||||
pmanager->AddDiscreteProcess(new G4DNAIonisation());
|
||||
pmanager->AddDiscreteProcess(new G4DNAChargeIncrease());
|
||||
|
||||
}
|
||||
|
||||
// Warning : the following particles and processes are needed by EM Physics builders
|
||||
// They are taken from the default Livermore Physics list
|
||||
// These particles are currently not handled by Geant4-DNA
|
||||
|
||||
// e+
|
||||
|
||||
else if (particleName == "e+") {
|
||||
|
||||
// Identical to G4EmStandardPhysics_option3
|
||||
|
||||
G4eMultipleScattering* msc = new G4eMultipleScattering();
|
||||
msc->SetStepLimitType(fUseDistanceToBoundary);
|
||||
pmanager->AddProcess(msc, -1, 1, 1);
|
||||
|
||||
G4eIonisation* eIoni = new G4eIonisation();
|
||||
eIoni->SetStepFunction(0.2, 100*um);
|
||||
|
||||
pmanager->AddProcess(eIoni, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung, -1,-3, 3);
|
||||
pmanager->AddProcess(new G4eplusAnnihilation,0,-1, 4);
|
||||
|
||||
} else if (particleName == "gamma") {
|
||||
|
||||
G4double LivermoreHighEnergyLimit = GeV;
|
||||
|
||||
G4PhotoElectricEffect* thePhotoElectricEffect = new G4PhotoElectricEffect();
|
||||
G4LivermorePhotoElectricModel* theLivermorePhotoElectricModel =
|
||||
new G4LivermorePhotoElectricModel();
|
||||
theLivermorePhotoElectricModel->SetHighEnergyLimit(LivermoreHighEnergyLimit);
|
||||
thePhotoElectricEffect->AddEmModel(0, theLivermorePhotoElectricModel);
|
||||
pmanager->AddDiscreteProcess(thePhotoElectricEffect);
|
||||
|
||||
G4ComptonScattering* theComptonScattering = new G4ComptonScattering();
|
||||
G4LivermoreComptonModel* theLivermoreComptonModel =
|
||||
new G4LivermoreComptonModel();
|
||||
theLivermoreComptonModel->SetHighEnergyLimit(LivermoreHighEnergyLimit);
|
||||
theComptonScattering->AddEmModel(0, theLivermoreComptonModel);
|
||||
pmanager->AddDiscreteProcess(theComptonScattering);
|
||||
|
||||
G4GammaConversion* theGammaConversion = new G4GammaConversion();
|
||||
G4LivermoreGammaConversionModel* theLivermoreGammaConversionModel =
|
||||
new G4LivermoreGammaConversionModel();
|
||||
theLivermoreGammaConversionModel->SetHighEnergyLimit(LivermoreHighEnergyLimit);
|
||||
theGammaConversion->AddEmModel(0, theLivermoreGammaConversionModel);
|
||||
pmanager->AddDiscreteProcess(theGammaConversion);
|
||||
|
||||
G4RayleighScattering* theRayleigh = new G4RayleighScattering();
|
||||
G4LivermoreRayleighModel* theRayleighModel = new G4LivermoreRayleighModel();
|
||||
theRayleighModel->SetHighEnergyLimit(LivermoreHighEnergyLimit);
|
||||
theRayleigh->AddEmModel(0, theRayleighModel);
|
||||
pmanager->AddDiscreteProcess(theRayleigh);
|
||||
}
|
||||
|
||||
// Warning : end of particles and processes are needed by EM Physics builders
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -0,0 +1,368 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4EmLivermorePhysics.cc,v 1.7 2009/11/24 12:53:22 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
|
||||
#include "G4EmLivermorePhysics.hh"
|
||||
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
// *** Processes and models
|
||||
|
||||
// gamma
|
||||
|
||||
#include "G4PhotoElectricEffect.hh"
|
||||
#include "G4LivermorePhotoElectricModel.hh"
|
||||
|
||||
#include "G4ComptonScattering.hh"
|
||||
#include "G4LivermoreComptonModel.hh"
|
||||
|
||||
#include "G4GammaConversion.hh"
|
||||
#include "G4LivermoreGammaConversionModel.hh"
|
||||
|
||||
#include "G4RayleighScattering.hh"
|
||||
#include "G4LivermoreRayleighModel.hh"
|
||||
|
||||
// e-
|
||||
|
||||
#include "G4eMultipleScattering.hh"
|
||||
#include "G4UniversalFluctuation.hh"
|
||||
|
||||
#include "G4eIonisation.hh"
|
||||
#include "G4LivermoreIonisationModel.hh"
|
||||
|
||||
#include "G4eBremsstrahlung.hh"
|
||||
#include "G4LivermoreBremsstrahlungModel.hh"
|
||||
|
||||
// e+
|
||||
|
||||
#include "G4eplusAnnihilation.hh"
|
||||
|
||||
// mu
|
||||
|
||||
#include "G4MuMultipleScattering.hh"
|
||||
#include "G4MuIonisation.hh"
|
||||
#include "G4MuBremsstrahlung.hh"
|
||||
#include "G4MuPairProduction.hh"
|
||||
|
||||
// hadrons
|
||||
|
||||
#include "G4hMultipleScattering.hh"
|
||||
#include "G4MscStepLimitType.hh"
|
||||
|
||||
#include "G4hBremsstrahlung.hh"
|
||||
#include "G4hPairProduction.hh"
|
||||
|
||||
#include "G4hIonisation.hh"
|
||||
#include "G4ionIonisation.hh"
|
||||
#include "G4IonParametrisedLossModel.hh"
|
||||
#include "G4NuclearStopping.hh"
|
||||
|
||||
// msc models
|
||||
#include "G4UrbanMscModel93.hh"
|
||||
#include "G4WentzelVIModel.hh"
|
||||
#include "G4CoulombScattering.hh"
|
||||
|
||||
//
|
||||
|
||||
#include "G4LossTableManager.hh"
|
||||
#include "G4EmProcessOptions.hh"
|
||||
|
||||
// particles
|
||||
|
||||
#include "G4Gamma.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Positron.hh"
|
||||
#include "G4MuonPlus.hh"
|
||||
#include "G4MuonMinus.hh"
|
||||
#include "G4PionPlus.hh"
|
||||
#include "G4PionMinus.hh"
|
||||
#include "G4KaonPlus.hh"
|
||||
#include "G4KaonMinus.hh"
|
||||
#include "G4Proton.hh"
|
||||
#include "G4AntiProton.hh"
|
||||
#include "G4Deuteron.hh"
|
||||
#include "G4Triton.hh"
|
||||
#include "G4He3.hh"
|
||||
#include "G4Alpha.hh"
|
||||
#include "G4GenericIon.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmLivermorePhysics::G4EmLivermorePhysics(
|
||||
G4int ver, const G4String& name)
|
||||
: G4VPhysicsConstructor(name), verbose(ver)
|
||||
{
|
||||
G4LossTableManager::Instance();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmLivermorePhysics::~G4EmLivermorePhysics()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmLivermorePhysics::ConstructParticle()
|
||||
{
|
||||
// gamma
|
||||
G4Gamma::Gamma();
|
||||
|
||||
// leptons
|
||||
G4Electron::Electron();
|
||||
G4Positron::Positron();
|
||||
G4MuonPlus::MuonPlus();
|
||||
G4MuonMinus::MuonMinus();
|
||||
|
||||
// mesons
|
||||
G4PionPlus::PionPlusDefinition();
|
||||
G4PionMinus::PionMinusDefinition();
|
||||
G4KaonPlus::KaonPlusDefinition();
|
||||
G4KaonMinus::KaonMinusDefinition();
|
||||
|
||||
// baryons
|
||||
G4Proton::Proton();
|
||||
G4AntiProton::AntiProton();
|
||||
|
||||
// ions
|
||||
G4Deuteron::Deuteron();
|
||||
G4Triton::Triton();
|
||||
G4He3::He3();
|
||||
G4Alpha::Alpha();
|
||||
G4GenericIon::GenericIonDefinition();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmLivermorePhysics::ConstructProcess()
|
||||
{
|
||||
// Add Livermore EM Processes
|
||||
|
||||
theParticleIterator->reset();
|
||||
|
||||
while( (*theParticleIterator)() ){
|
||||
|
||||
G4ParticleDefinition* particle = theParticleIterator->value();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
G4String particleName = particle->GetParticleName();
|
||||
|
||||
if(verbose > 1)
|
||||
G4cout << "### " << GetPhysicsName() << " instantiates for "
|
||||
<< particleName << G4endl;
|
||||
|
||||
//Applicability range for Livermore models
|
||||
//for higher energies, the Standard models are used
|
||||
G4double LivermoreHighEnergyLimit = GeV;
|
||||
|
||||
if (particleName == "gamma") {
|
||||
|
||||
G4PhotoElectricEffect* thePhotoElectricEffect = new G4PhotoElectricEffect();
|
||||
G4LivermorePhotoElectricModel* theLivermorePhotoElectricModel =
|
||||
new G4LivermorePhotoElectricModel();
|
||||
theLivermorePhotoElectricModel->SetHighEnergyLimit(LivermoreHighEnergyLimit);
|
||||
thePhotoElectricEffect->AddEmModel(0, theLivermorePhotoElectricModel);
|
||||
pmanager->AddDiscreteProcess(thePhotoElectricEffect);
|
||||
|
||||
G4ComptonScattering* theComptonScattering = new G4ComptonScattering();
|
||||
G4LivermoreComptonModel* theLivermoreComptonModel =
|
||||
new G4LivermoreComptonModel();
|
||||
theLivermoreComptonModel->SetHighEnergyLimit(LivermoreHighEnergyLimit);
|
||||
theComptonScattering->AddEmModel(0, theLivermoreComptonModel);
|
||||
pmanager->AddDiscreteProcess(theComptonScattering);
|
||||
|
||||
G4GammaConversion* theGammaConversion = new G4GammaConversion();
|
||||
G4LivermoreGammaConversionModel* theLivermoreGammaConversionModel =
|
||||
new G4LivermoreGammaConversionModel();
|
||||
theLivermoreGammaConversionModel->SetHighEnergyLimit(LivermoreHighEnergyLimit);
|
||||
theGammaConversion->AddEmModel(0, theLivermoreGammaConversionModel);
|
||||
pmanager->AddDiscreteProcess(theGammaConversion);
|
||||
|
||||
G4RayleighScattering* theRayleigh = new G4RayleighScattering();
|
||||
G4LivermoreRayleighModel* theRayleighModel = new G4LivermoreRayleighModel();
|
||||
theRayleighModel->SetHighEnergyLimit(LivermoreHighEnergyLimit);
|
||||
theRayleigh->AddEmModel(0, theRayleighModel);
|
||||
pmanager->AddDiscreteProcess(theRayleigh);
|
||||
|
||||
} else if (particleName == "e-") {
|
||||
|
||||
G4eMultipleScattering* msc = new G4eMultipleScattering();
|
||||
msc->AddEmModel(0, new G4UrbanMscModel93());
|
||||
msc->SetStepLimitType(fUseDistanceToBoundary);
|
||||
pmanager->AddProcess(msc, -1, 1, 1);
|
||||
|
||||
// Ionisation
|
||||
G4eIonisation* eIoni = new G4eIonisation();
|
||||
G4LivermoreIonisationModel* theIoniLivermore = new
|
||||
G4LivermoreIonisationModel();
|
||||
theIoniLivermore->SetHighEnergyLimit(LivermoreHighEnergyLimit);
|
||||
eIoni->AddEmModel(0, theIoniLivermore, new G4UniversalFluctuation() );
|
||||
eIoni->SetStepFunction(0.2, 100*um); //
|
||||
pmanager->AddProcess(eIoni, -1, 2, 2);
|
||||
|
||||
// Bremsstrahlung
|
||||
G4eBremsstrahlung* eBrem = new G4eBremsstrahlung();
|
||||
G4LivermoreBremsstrahlungModel* theBremLivermore = new
|
||||
G4LivermoreBremsstrahlungModel();
|
||||
theBremLivermore->SetHighEnergyLimit(LivermoreHighEnergyLimit);
|
||||
eBrem->AddEmModel(0, theBremLivermore);
|
||||
pmanager->AddProcess(eBrem, -1,-3, 3);
|
||||
|
||||
} else if (particleName == "e+") {
|
||||
|
||||
// Identical to G4EmStandardPhysics_option3
|
||||
|
||||
G4eMultipleScattering* msc = new G4eMultipleScattering();
|
||||
msc->AddEmModel(0, new G4UrbanMscModel93());
|
||||
msc->SetStepLimitType(fUseDistanceToBoundary);
|
||||
pmanager->AddProcess(msc, -1, 1, 1);
|
||||
|
||||
G4eIonisation* eIoni = new G4eIonisation();
|
||||
eIoni->SetStepFunction(0.2, 100*um);
|
||||
|
||||
pmanager->AddProcess(eIoni, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung, -1,-3, 3);
|
||||
pmanager->AddProcess(new G4eplusAnnihilation,0,-1, 4);
|
||||
|
||||
} else if (particleName == "mu+" ||
|
||||
particleName == "mu-" ) {
|
||||
|
||||
// Identical to G4EmStandardPhysics_option3
|
||||
|
||||
G4MuMultipleScattering* msc = new G4MuMultipleScattering();
|
||||
msc->AddEmModel(0, new G4WentzelVIModel());
|
||||
pmanager->AddProcess(msc, -1, 1, 1);
|
||||
|
||||
G4MuIonisation* muIoni = new G4MuIonisation();
|
||||
muIoni->SetStepFunction(0.2, 50*um);
|
||||
|
||||
pmanager->AddProcess(muIoni, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4MuBremsstrahlung, -1,-3, 3);
|
||||
pmanager->AddProcess(new G4MuPairProduction, -1,-4, 4);
|
||||
pmanager->AddDiscreteProcess(new G4CoulombScattering());
|
||||
|
||||
} else if (particleName == "GenericIon") {
|
||||
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
|
||||
G4ionIonisation* ionIoni = new G4ionIonisation();
|
||||
ionIoni->SetEmModel(new G4IonParametrisedLossModel());
|
||||
ionIoni->SetStepFunction(0.1, 10*um);
|
||||
pmanager->AddProcess(ionIoni, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4NuclearStopping(), -1, 3,-1);
|
||||
|
||||
} else if (particleName == "alpha" ||
|
||||
particleName == "He3" ) {
|
||||
|
||||
// Identical to G4EmStandardPhysics_option3
|
||||
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
|
||||
G4ionIonisation* ionIoni = new G4ionIonisation();
|
||||
ionIoni->SetStepFunction(0.1, 20*um);
|
||||
pmanager->AddProcess(ionIoni, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4NuclearStopping(), -1, 3,-1);
|
||||
|
||||
} else if (particleName == "pi+" ||
|
||||
particleName == "pi-" ||
|
||||
particleName == "kaon+" ||
|
||||
particleName == "kaon-" ||
|
||||
particleName == "proton" ) {
|
||||
|
||||
// Identical to G4EmStandardPhysics_option3
|
||||
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
|
||||
G4hIonisation* hIoni = new G4hIonisation();
|
||||
hIoni->SetStepFunction(0.2, 50*um);
|
||||
|
||||
pmanager->AddProcess(hIoni, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4hBremsstrahlung, -1,-3, 3);
|
||||
pmanager->AddProcess(new G4hPairProduction, -1,-4, 4);
|
||||
|
||||
} else if (particleName == "B+" ||
|
||||
particleName == "B-" ||
|
||||
particleName == "D+" ||
|
||||
particleName == "D-" ||
|
||||
particleName == "Ds+" ||
|
||||
particleName == "Ds-" ||
|
||||
particleName == "anti_lambda_c+" ||
|
||||
particleName == "anti_omega-" ||
|
||||
particleName == "anti_proton" ||
|
||||
particleName == "anti_sigma_c+" ||
|
||||
particleName == "anti_sigma_c++" ||
|
||||
particleName == "anti_sigma+" ||
|
||||
particleName == "anti_sigma-" ||
|
||||
particleName == "anti_xi_c+" ||
|
||||
particleName == "anti_xi-" ||
|
||||
particleName == "deuteron" ||
|
||||
particleName == "lambda_c+" ||
|
||||
particleName == "omega-" ||
|
||||
particleName == "sigma_c+" ||
|
||||
particleName == "sigma_c++" ||
|
||||
particleName == "sigma+" ||
|
||||
particleName == "sigma-" ||
|
||||
particleName == "tau+" ||
|
||||
particleName == "tau-" ||
|
||||
particleName == "triton" ||
|
||||
particleName == "xi_c+" ||
|
||||
particleName == "xi-" ) {
|
||||
|
||||
// Identical to G4EmStandardPhysics_option3
|
||||
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4hIonisation, -1, 2, 2);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// Em options
|
||||
//
|
||||
G4EmProcessOptions opt;
|
||||
opt.SetVerbose(verbose);
|
||||
|
||||
// Multiple Coulomb scattering
|
||||
//
|
||||
//opt.SetMscStepLimitation(fUseDistanceToBoundary);
|
||||
//opt.SetMscRangeFactor(0.02);
|
||||
|
||||
// Physics tables
|
||||
//
|
||||
|
||||
opt.SetMinEnergy(100*eV);
|
||||
opt.SetMaxEnergy(10*TeV);
|
||||
opt.SetDEDXBinning(220);
|
||||
opt.SetLambdaBinning(220);
|
||||
|
||||
//opt.SetSplineFlag(true);
|
||||
opt.SetPolarAngleLimit(0.2);
|
||||
|
||||
// Ionization
|
||||
//
|
||||
//opt.SetSubCutoff(true);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -0,0 +1,368 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4EmLivermorePolarizedPhysics.cc,v 1.6 2009/11/24 12:53:22 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
|
||||
#include "G4EmLivermorePolarizedPhysics.hh"
|
||||
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
// *** Processes and models
|
||||
|
||||
// gamma
|
||||
|
||||
#include "G4PhotoElectricEffect.hh"
|
||||
#include "G4LivermorePhotoElectricModel.hh"
|
||||
|
||||
#include "G4ComptonScattering.hh"
|
||||
#include "G4LivermorePolarizedComptonModel.hh"
|
||||
|
||||
#include "G4GammaConversion.hh"
|
||||
#include "G4LivermoreGammaConversionModel.hh"
|
||||
|
||||
#include "G4RayleighScattering.hh"
|
||||
#include "G4LivermorePolarizedRayleighModel.hh"
|
||||
|
||||
// e-
|
||||
|
||||
#include "G4eMultipleScattering.hh"
|
||||
#include "G4UniversalFluctuation.hh"
|
||||
|
||||
#include "G4eIonisation.hh"
|
||||
#include "G4LivermoreIonisationModel.hh"
|
||||
|
||||
#include "G4eBremsstrahlung.hh"
|
||||
#include "G4LivermoreBremsstrahlungModel.hh"
|
||||
|
||||
// e+
|
||||
|
||||
#include "G4eplusAnnihilation.hh"
|
||||
|
||||
// mu
|
||||
|
||||
#include "G4MuMultipleScattering.hh"
|
||||
#include "G4MuIonisation.hh"
|
||||
#include "G4MuBremsstrahlung.hh"
|
||||
#include "G4MuPairProduction.hh"
|
||||
|
||||
// hadrons
|
||||
|
||||
#include "G4hMultipleScattering.hh"
|
||||
#include "G4MscStepLimitType.hh"
|
||||
|
||||
#include "G4hBremsstrahlung.hh"
|
||||
#include "G4hPairProduction.hh"
|
||||
|
||||
#include "G4hIonisation.hh"
|
||||
#include "G4ionIonisation.hh"
|
||||
#include "G4IonParametrisedLossModel.hh"
|
||||
#include "G4NuclearStopping.hh"
|
||||
|
||||
// msc models
|
||||
#include "G4UrbanMscModel93.hh"
|
||||
#include "G4WentzelVIModel.hh"
|
||||
#include "G4CoulombScattering.hh"
|
||||
|
||||
//
|
||||
|
||||
#include "G4LossTableManager.hh"
|
||||
#include "G4EmProcessOptions.hh"
|
||||
|
||||
// particles
|
||||
|
||||
#include "G4Gamma.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Positron.hh"
|
||||
#include "G4MuonPlus.hh"
|
||||
#include "G4MuonMinus.hh"
|
||||
#include "G4PionPlus.hh"
|
||||
#include "G4PionMinus.hh"
|
||||
#include "G4KaonPlus.hh"
|
||||
#include "G4KaonMinus.hh"
|
||||
#include "G4Proton.hh"
|
||||
#include "G4AntiProton.hh"
|
||||
#include "G4Deuteron.hh"
|
||||
#include "G4Triton.hh"
|
||||
#include "G4He3.hh"
|
||||
#include "G4Alpha.hh"
|
||||
#include "G4GenericIon.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmLivermorePolarizedPhysics::G4EmLivermorePolarizedPhysics(
|
||||
G4int ver, const G4String& name)
|
||||
: G4VPhysicsConstructor(name), verbose(ver)
|
||||
{
|
||||
G4LossTableManager::Instance();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmLivermorePolarizedPhysics::~G4EmLivermorePolarizedPhysics()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmLivermorePolarizedPhysics::ConstructParticle()
|
||||
{
|
||||
// gamma
|
||||
G4Gamma::Gamma();
|
||||
|
||||
// leptons
|
||||
G4Electron::Electron();
|
||||
G4Positron::Positron();
|
||||
G4MuonPlus::MuonPlus();
|
||||
G4MuonMinus::MuonMinus();
|
||||
|
||||
// mesons
|
||||
G4PionPlus::PionPlusDefinition();
|
||||
G4PionMinus::PionMinusDefinition();
|
||||
G4KaonPlus::KaonPlusDefinition();
|
||||
G4KaonMinus::KaonMinusDefinition();
|
||||
|
||||
// baryons
|
||||
G4Proton::Proton();
|
||||
G4AntiProton::AntiProton();
|
||||
|
||||
// ions
|
||||
G4Deuteron::Deuteron();
|
||||
G4Triton::Triton();
|
||||
G4He3::He3();
|
||||
G4Alpha::Alpha();
|
||||
G4GenericIon::GenericIonDefinition();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmLivermorePolarizedPhysics::ConstructProcess()
|
||||
{
|
||||
// Add Livermore EM Processes
|
||||
|
||||
theParticleIterator->reset();
|
||||
|
||||
while( (*theParticleIterator)() ){
|
||||
|
||||
G4ParticleDefinition* particle = theParticleIterator->value();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
G4String particleName = particle->GetParticleName();
|
||||
|
||||
if(verbose > 1)
|
||||
G4cout << "### " << GetPhysicsName() << " instantiates for "
|
||||
<< particleName << G4endl;
|
||||
|
||||
//Applicability range for Livermore models
|
||||
//for higher energies, the Standard models are used
|
||||
G4double LivermoreHighEnergyLimit = GeV;
|
||||
|
||||
if (particleName == "gamma") {
|
||||
|
||||
G4PhotoElectricEffect* thePhotoElectricEffect = new G4PhotoElectricEffect();
|
||||
G4LivermorePhotoElectricModel* theLivermorePhotoElectricModel = new G4LivermorePhotoElectricModel();
|
||||
theLivermorePhotoElectricModel->SetHighEnergyLimit(LivermoreHighEnergyLimit);
|
||||
thePhotoElectricEffect->AddEmModel(0, theLivermorePhotoElectricModel);
|
||||
pmanager->AddDiscreteProcess(thePhotoElectricEffect);
|
||||
|
||||
G4ComptonScattering* theComptonScattering = new G4ComptonScattering();
|
||||
G4LivermorePolarizedComptonModel* theLivermoreComptonModel = new G4LivermorePolarizedComptonModel();
|
||||
theLivermoreComptonModel->SetHighEnergyLimit(LivermoreHighEnergyLimit);
|
||||
theComptonScattering->AddEmModel(0, theLivermoreComptonModel);
|
||||
pmanager->AddDiscreteProcess(theComptonScattering);
|
||||
|
||||
G4GammaConversion* theGammaConversion = new G4GammaConversion();
|
||||
G4LivermoreGammaConversionModel* theLivermoreGammaConversionModel = new G4LivermoreGammaConversionModel();
|
||||
theLivermoreGammaConversionModel->SetHighEnergyLimit(LivermoreHighEnergyLimit);
|
||||
theGammaConversion->AddEmModel(0, theLivermoreGammaConversionModel);
|
||||
pmanager->AddDiscreteProcess(theGammaConversion);
|
||||
|
||||
G4RayleighScattering* theRayleigh = new G4RayleighScattering();
|
||||
G4LivermorePolarizedRayleighModel* theRayleighModel = new G4LivermorePolarizedRayleighModel();
|
||||
theRayleighModel->SetHighEnergyLimit(LivermoreHighEnergyLimit);
|
||||
theRayleigh->AddEmModel(0, theRayleighModel);
|
||||
pmanager->AddDiscreteProcess(theRayleigh);
|
||||
|
||||
} else if (particleName == "e-") {
|
||||
|
||||
G4eMultipleScattering* msc = new G4eMultipleScattering();
|
||||
msc->AddEmModel(0, new G4UrbanMscModel93());
|
||||
msc->SetStepLimitType(fUseDistanceToBoundary);
|
||||
pmanager->AddProcess(msc, -1, 1, 1);
|
||||
|
||||
// Ionisation
|
||||
G4eIonisation* eIoni = new G4eIonisation();
|
||||
G4LivermoreIonisationModel* theIoniLivermore = new
|
||||
G4LivermoreIonisationModel();
|
||||
theIoniLivermore->SetHighEnergyLimit(LivermoreHighEnergyLimit);
|
||||
eIoni->AddEmModel(0, theIoniLivermore, new G4UniversalFluctuation() );
|
||||
eIoni->SetStepFunction(0.2, 100*um); //
|
||||
pmanager->AddProcess(eIoni, -1, 2, 2);
|
||||
|
||||
// Bremsstrahlung
|
||||
G4eBremsstrahlung* eBrem = new G4eBremsstrahlung();
|
||||
G4LivermoreBremsstrahlungModel* theBremLivermore = new
|
||||
G4LivermoreBremsstrahlungModel();
|
||||
theBremLivermore->SetHighEnergyLimit(LivermoreHighEnergyLimit);
|
||||
eBrem->AddEmModel(0, theBremLivermore);
|
||||
pmanager->AddProcess(eBrem, -1,-3, 3);
|
||||
|
||||
} else if (particleName == "e+") {
|
||||
|
||||
// Identical to G4EmStandardPhysics_option3
|
||||
|
||||
G4eMultipleScattering* msc = new G4eMultipleScattering();
|
||||
msc->AddEmModel(0, new G4UrbanMscModel93());
|
||||
msc->SetStepLimitType(fUseDistanceToBoundary);
|
||||
pmanager->AddProcess(msc, -1, 1, 1);
|
||||
|
||||
G4eIonisation* eIoni = new G4eIonisation();
|
||||
eIoni->SetStepFunction(0.2, 100*um);
|
||||
pmanager->AddProcess(eIoni, -1, 2, 2);
|
||||
|
||||
pmanager->AddProcess(new G4eBremsstrahlung, -1,-3, 3);
|
||||
|
||||
pmanager->AddProcess(new G4eplusAnnihilation,0,-1, 4);
|
||||
|
||||
} else if (particleName == "mu+" ||
|
||||
particleName == "mu-" ) {
|
||||
|
||||
// Identical to G4EmStandardPhysics_option3
|
||||
|
||||
G4MuMultipleScattering* msc = new G4MuMultipleScattering();
|
||||
msc->AddEmModel(0, new G4WentzelVIModel());
|
||||
pmanager->AddProcess(msc, -1, 1, 1);
|
||||
|
||||
G4MuIonisation* muIoni = new G4MuIonisation();
|
||||
muIoni->SetStepFunction(0.2, 50*um);
|
||||
pmanager->AddProcess(muIoni, -1, 2, 2);
|
||||
|
||||
pmanager->AddProcess(new G4MuBremsstrahlung, -1,-3, 3);
|
||||
pmanager->AddProcess(new G4MuPairProduction, -1,-4, 4);
|
||||
pmanager->AddDiscreteProcess(new G4CoulombScattering());
|
||||
|
||||
} else if (particleName == "GenericIon") {
|
||||
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
|
||||
G4ionIonisation* ionIoni = new G4ionIonisation();
|
||||
ionIoni->SetEmModel(new G4IonParametrisedLossModel());
|
||||
ionIoni->SetStepFunction(0.1, 10*um);
|
||||
pmanager->AddProcess(ionIoni, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4NuclearStopping(), -1, 3,-1);
|
||||
|
||||
} else if (particleName == "alpha" ||
|
||||
particleName == "He3" ) {
|
||||
|
||||
// Identical to G4EmStandardPhysics_option3
|
||||
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
|
||||
G4ionIonisation* ionIoni = new G4ionIonisation();
|
||||
ionIoni->SetStepFunction(0.1, 20*um);
|
||||
pmanager->AddProcess(ionIoni, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4NuclearStopping(), -1, 3,-1);
|
||||
|
||||
} else if (particleName == "pi+" ||
|
||||
particleName == "pi-" ||
|
||||
particleName == "proton" ) {
|
||||
|
||||
// Identical to G4EmStandardPhysics_option3
|
||||
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
|
||||
G4hIonisation* hIoni = new G4hIonisation();
|
||||
hIoni->SetStepFunction(0.2, 50*um);
|
||||
pmanager->AddProcess(hIoni, -1, 2, 2);
|
||||
|
||||
pmanager->AddProcess(new G4hBremsstrahlung, -1,-3, 3);
|
||||
|
||||
pmanager->AddProcess(new G4hPairProduction, -1,-4, 4);
|
||||
|
||||
} else if (particleName == "B+" ||
|
||||
particleName == "B-" ||
|
||||
particleName == "D+" ||
|
||||
particleName == "D-" ||
|
||||
particleName == "Ds+" ||
|
||||
particleName == "Ds-" ||
|
||||
particleName == "anti_lambda_c+" ||
|
||||
particleName == "anti_omega-" ||
|
||||
particleName == "anti_proton" ||
|
||||
particleName == "anti_sigma_c+" ||
|
||||
particleName == "anti_sigma_c++" ||
|
||||
particleName == "anti_sigma+" ||
|
||||
particleName == "anti_sigma-" ||
|
||||
particleName == "anti_xi_c+" ||
|
||||
particleName == "anti_xi-" ||
|
||||
particleName == "deuteron" ||
|
||||
particleName == "kaon+" ||
|
||||
particleName == "kaon-" ||
|
||||
particleName == "lambda_c+" ||
|
||||
particleName == "omega-" ||
|
||||
particleName == "sigma_c+" ||
|
||||
particleName == "sigma_c++" ||
|
||||
particleName == "sigma+" ||
|
||||
particleName == "sigma-" ||
|
||||
particleName == "tau+" ||
|
||||
particleName == "tau-" ||
|
||||
particleName == "triton" ||
|
||||
particleName == "xi_c+" ||
|
||||
particleName == "xi-" ) {
|
||||
|
||||
// Identical to G4EmStandardPhysics_option3
|
||||
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
|
||||
pmanager->AddProcess(new G4hIonisation, -1, 2, 2);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// Em options
|
||||
//
|
||||
G4EmProcessOptions opt;
|
||||
opt.SetVerbose(verbose);
|
||||
|
||||
// Multiple Coulomb scattering
|
||||
//
|
||||
//opt.SetMscStepLimitation(fUseDistanceToBoundary);
|
||||
//opt.SetMscRangeFactor(0.02);
|
||||
|
||||
// Physics tables
|
||||
//
|
||||
|
||||
opt.SetMinEnergy(100*eV);
|
||||
opt.SetMaxEnergy(10*TeV);
|
||||
opt.SetDEDXBinning(220);
|
||||
opt.SetLambdaBinning(220);
|
||||
|
||||
//opt.SetSplineFlag(true);
|
||||
opt.SetPolarAngleLimit(0.2);
|
||||
|
||||
// Ionization
|
||||
//
|
||||
//opt.SetSubCutoff(true);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -0,0 +1,389 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4EmPenelopePhysics.cc,v 1.7 2009/11/24 12:53:22 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
|
||||
#include "G4EmPenelopePhysics.hh"
|
||||
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
// *** Processes and models
|
||||
|
||||
// gamma
|
||||
|
||||
#include "G4PhotoElectricEffect.hh"
|
||||
#include "G4PenelopePhotoElectricModel.hh"
|
||||
|
||||
#include "G4ComptonScattering.hh"
|
||||
#include "G4PenelopeComptonModel.hh"
|
||||
|
||||
#include "G4GammaConversion.hh"
|
||||
#include "G4PenelopeGammaConversionModel.hh"
|
||||
|
||||
#include "G4RayleighScattering.hh"
|
||||
#include "G4PenelopeRayleighModel.hh"
|
||||
|
||||
// e- and e+
|
||||
|
||||
#include "G4eMultipleScattering.hh"
|
||||
#include "G4UniversalFluctuation.hh"
|
||||
|
||||
#include "G4eIonisation.hh"
|
||||
#include "G4PenelopeIonisationModel.hh"
|
||||
|
||||
#include "G4eBremsstrahlung.hh"
|
||||
#include "G4PenelopeBremsstrahlungModel.hh"
|
||||
|
||||
// e+ only
|
||||
|
||||
#include "G4eplusAnnihilation.hh"
|
||||
#include "G4PenelopeAnnihilationModel.hh"
|
||||
|
||||
// mu
|
||||
|
||||
#include "G4MuMultipleScattering.hh"
|
||||
#include "G4MuIonisation.hh"
|
||||
#include "G4MuBremsstrahlung.hh"
|
||||
#include "G4MuPairProduction.hh"
|
||||
|
||||
// hadrons
|
||||
|
||||
#include "G4hMultipleScattering.hh"
|
||||
#include "G4MscStepLimitType.hh"
|
||||
|
||||
#include "G4hBremsstrahlung.hh"
|
||||
#include "G4hPairProduction.hh"
|
||||
|
||||
#include "G4hIonisation.hh"
|
||||
#include "G4ionIonisation.hh"
|
||||
#include "G4IonParametrisedLossModel.hh"
|
||||
#include "G4NuclearStopping.hh"
|
||||
|
||||
// msc models
|
||||
#include "G4UrbanMscModel93.hh"
|
||||
#include "G4WentzelVIModel.hh"
|
||||
#include "G4CoulombScattering.hh"
|
||||
|
||||
//
|
||||
|
||||
#include "G4LossTableManager.hh"
|
||||
#include "G4EmProcessOptions.hh"
|
||||
|
||||
// particles
|
||||
|
||||
#include "G4Gamma.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Positron.hh"
|
||||
#include "G4MuonPlus.hh"
|
||||
#include "G4MuonMinus.hh"
|
||||
#include "G4PionPlus.hh"
|
||||
#include "G4PionMinus.hh"
|
||||
#include "G4KaonPlus.hh"
|
||||
#include "G4KaonMinus.hh"
|
||||
#include "G4Proton.hh"
|
||||
#include "G4AntiProton.hh"
|
||||
#include "G4Deuteron.hh"
|
||||
#include "G4Triton.hh"
|
||||
#include "G4He3.hh"
|
||||
#include "G4Alpha.hh"
|
||||
#include "G4GenericIon.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmPenelopePhysics::G4EmPenelopePhysics(
|
||||
G4int ver, const G4String& name)
|
||||
: G4VPhysicsConstructor(name), verbose(ver)
|
||||
{
|
||||
G4LossTableManager::Instance();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmPenelopePhysics::~G4EmPenelopePhysics()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmPenelopePhysics::ConstructParticle()
|
||||
{
|
||||
// gamma
|
||||
G4Gamma::Gamma();
|
||||
|
||||
// leptons
|
||||
G4Electron::Electron();
|
||||
G4Positron::Positron();
|
||||
G4MuonPlus::MuonPlus();
|
||||
G4MuonMinus::MuonMinus();
|
||||
|
||||
// mesons
|
||||
G4PionPlus::PionPlusDefinition();
|
||||
G4PionMinus::PionMinusDefinition();
|
||||
G4KaonPlus::KaonPlusDefinition();
|
||||
G4KaonMinus::KaonMinusDefinition();
|
||||
|
||||
// baryons
|
||||
G4Proton::Proton();
|
||||
G4AntiProton::AntiProton();
|
||||
|
||||
// ions
|
||||
G4Deuteron::Deuteron();
|
||||
G4Triton::Triton();
|
||||
G4He3::He3();
|
||||
G4Alpha::Alpha();
|
||||
G4GenericIon::GenericIonDefinition();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmPenelopePhysics::ConstructProcess()
|
||||
{
|
||||
// Add Penelope EM Processes
|
||||
|
||||
theParticleIterator->reset();
|
||||
|
||||
while( (*theParticleIterator)() ){
|
||||
|
||||
G4ParticleDefinition* particle = theParticleIterator->value();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
G4String particleName = particle->GetParticleName();
|
||||
|
||||
if(verbose > 1)
|
||||
G4cout << "### " << GetPhysicsName() << " instantiates for "
|
||||
<< particleName << G4endl;
|
||||
|
||||
//Applicability range for Penelope models
|
||||
//for higher energies, the Standard models are used
|
||||
G4double PenelopeHighEnergyLimit = 1.0*GeV;
|
||||
|
||||
if (particleName == "gamma") {
|
||||
|
||||
//Photo-electric effect
|
||||
G4PhotoElectricEffect* thePhotoElectricEffect = new G4PhotoElectricEffect();
|
||||
G4PenelopePhotoElectricModel* thePEPenelopeModel = new
|
||||
G4PenelopePhotoElectricModel();
|
||||
thePEPenelopeModel->SetHighEnergyLimit(PenelopeHighEnergyLimit);
|
||||
thePhotoElectricEffect->AddEmModel(0,thePEPenelopeModel);
|
||||
pmanager->AddDiscreteProcess(thePhotoElectricEffect);
|
||||
|
||||
//Compton scattering
|
||||
G4ComptonScattering* theComptonScattering = new G4ComptonScattering();
|
||||
G4PenelopeComptonModel* theComptonPenelopeModel =
|
||||
new G4PenelopeComptonModel();
|
||||
theComptonPenelopeModel->SetHighEnergyLimit(PenelopeHighEnergyLimit);
|
||||
theComptonScattering->AddEmModel(0,theComptonPenelopeModel);
|
||||
pmanager->AddDiscreteProcess(theComptonScattering);
|
||||
|
||||
//Gamma conversion
|
||||
G4GammaConversion* theGammaConversion = new G4GammaConversion();
|
||||
G4PenelopeGammaConversionModel* theGCPenelopeModel =
|
||||
new G4PenelopeGammaConversionModel();
|
||||
theGammaConversion->AddEmModel(0,theGCPenelopeModel);
|
||||
pmanager->AddDiscreteProcess(theGammaConversion);
|
||||
|
||||
//Rayleigh scattering
|
||||
G4RayleighScattering* theRayleigh = new G4RayleighScattering();
|
||||
G4PenelopeRayleighModel* theRayleighPenelopeModel =
|
||||
new G4PenelopeRayleighModel();
|
||||
theRayleighPenelopeModel->SetHighEnergyLimit(PenelopeHighEnergyLimit);
|
||||
theRayleigh->AddEmModel(0,theRayleighPenelopeModel);
|
||||
pmanager->AddDiscreteProcess(theRayleigh);
|
||||
|
||||
} else if (particleName == "e-") {
|
||||
|
||||
G4eMultipleScattering* msc = new G4eMultipleScattering();
|
||||
msc->AddEmModel(0, new G4UrbanMscModel93());
|
||||
msc->SetStepLimitType(fUseDistanceToBoundary);
|
||||
pmanager->AddProcess(msc, -1, 1, 1);
|
||||
|
||||
//Ionisation
|
||||
G4eIonisation* eIoni = new G4eIonisation();
|
||||
G4PenelopeIonisationModel* theIoniPenelope =
|
||||
new G4PenelopeIonisationModel();
|
||||
theIoniPenelope->SetHighEnergyLimit(PenelopeHighEnergyLimit);
|
||||
eIoni->AddEmModel(0,theIoniPenelope,new G4UniversalFluctuation());
|
||||
eIoni->SetStepFunction(0.2, 100*um); //
|
||||
pmanager->AddProcess(eIoni, -1, 2, 2);
|
||||
|
||||
//Bremsstrahlung
|
||||
G4eBremsstrahlung* eBrem = new G4eBremsstrahlung();
|
||||
G4PenelopeBremsstrahlungModel* theBremPenelope = new
|
||||
G4PenelopeBremsstrahlungModel();
|
||||
theBremPenelope->SetHighEnergyLimit(PenelopeHighEnergyLimit);
|
||||
eBrem->AddEmModel(0,theBremPenelope);
|
||||
pmanager->AddProcess(eBrem, -1,-3, 3);
|
||||
|
||||
} else if (particleName == "e+") {
|
||||
|
||||
G4eMultipleScattering* msc = new G4eMultipleScattering();
|
||||
msc->AddEmModel(0, new G4UrbanMscModel93());
|
||||
msc->SetStepLimitType(fUseDistanceToBoundary);
|
||||
pmanager->AddProcess(msc, -1, 1, 1);
|
||||
|
||||
//Ionisation
|
||||
G4eIonisation* eIoni = new G4eIonisation();
|
||||
G4PenelopeIonisationModel* theIoniPenelope =
|
||||
new G4PenelopeIonisationModel();
|
||||
theIoniPenelope->SetHighEnergyLimit(PenelopeHighEnergyLimit);
|
||||
eIoni->AddEmModel(0,theIoniPenelope,new G4UniversalFluctuation());
|
||||
eIoni->SetStepFunction(0.2, 100*um); //
|
||||
pmanager->AddProcess(eIoni, -1, 2, 2);
|
||||
|
||||
//Bremsstrahlung
|
||||
G4eBremsstrahlung* eBrem = new G4eBremsstrahlung();
|
||||
G4PenelopeBremsstrahlungModel* theBremPenelope = new
|
||||
G4PenelopeBremsstrahlungModel();
|
||||
theBremPenelope->SetHighEnergyLimit(PenelopeHighEnergyLimit);
|
||||
eBrem->AddEmModel(0,theBremPenelope);
|
||||
pmanager->AddProcess(eBrem, -1,-3, 3);
|
||||
|
||||
//Annihilation
|
||||
G4eplusAnnihilation* eAnni = new G4eplusAnnihilation();
|
||||
G4PenelopeAnnihilationModel* theAnnPenelope = new
|
||||
G4PenelopeAnnihilationModel();
|
||||
theAnnPenelope->SetHighEnergyLimit(PenelopeHighEnergyLimit);
|
||||
eAnni->AddEmModel(0,theAnnPenelope);
|
||||
pmanager->AddProcess(eAnni,0,-1, 4);
|
||||
|
||||
} else if (particleName == "mu+" ||
|
||||
particleName == "mu-" ) {
|
||||
|
||||
// Identical to G4EmStandardPhysics_option3
|
||||
|
||||
G4MuMultipleScattering* msc = new G4MuMultipleScattering();
|
||||
msc->AddEmModel(0, new G4WentzelVIModel());
|
||||
pmanager->AddProcess(msc, -1, 1, 1);
|
||||
|
||||
G4MuIonisation* muIoni = new G4MuIonisation();
|
||||
muIoni->SetStepFunction(0.2, 50*um);
|
||||
|
||||
pmanager->AddProcess(muIoni, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4MuBremsstrahlung, -1,-3, 3);
|
||||
pmanager->AddProcess(new G4MuPairProduction, -1,-4, 4);
|
||||
pmanager->AddDiscreteProcess(new G4CoulombScattering());
|
||||
|
||||
} else if (particleName == "GenericIon") {
|
||||
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
|
||||
G4ionIonisation* ionIoni = new G4ionIonisation();
|
||||
ionIoni->SetEmModel(new G4IonParametrisedLossModel());
|
||||
ionIoni->SetStepFunction(0.1, 10*um);
|
||||
pmanager->AddProcess(ionIoni, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4NuclearStopping(), -1, 3,-1);
|
||||
|
||||
} else if (particleName == "alpha" ||
|
||||
particleName == "He3" ) {
|
||||
|
||||
// Identical to G4EmStandardPhysics_option3
|
||||
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
|
||||
G4ionIonisation* ionIoni = new G4ionIonisation();
|
||||
ionIoni->SetStepFunction(0.1, 20*um);
|
||||
pmanager->AddProcess(ionIoni, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4NuclearStopping(), -1, 3,-1);
|
||||
|
||||
} else if (particleName == "pi+" ||
|
||||
particleName == "pi-" ||
|
||||
particleName == "kaon+" ||
|
||||
particleName == "kaon-" ||
|
||||
particleName == "proton" ) {
|
||||
|
||||
// Identical to G4EmStandardPhysics_option3
|
||||
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
|
||||
G4hIonisation* hIoni = new G4hIonisation();
|
||||
hIoni->SetStepFunction(0.2, 50*um);
|
||||
|
||||
pmanager->AddProcess(hIoni, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4hBremsstrahlung, -1,-3, 3);
|
||||
pmanager->AddProcess(new G4hPairProduction, -1,-4, 4);
|
||||
|
||||
} else if (particleName == "B+" ||
|
||||
particleName == "B-" ||
|
||||
particleName == "D+" ||
|
||||
particleName == "D-" ||
|
||||
particleName == "Ds+" ||
|
||||
particleName == "Ds-" ||
|
||||
particleName == "anti_lambda_c+" ||
|
||||
particleName == "anti_omega-" ||
|
||||
particleName == "anti_proton" ||
|
||||
particleName == "anti_sigma_c+" ||
|
||||
particleName == "anti_sigma_c++" ||
|
||||
particleName == "anti_sigma+" ||
|
||||
particleName == "anti_sigma-" ||
|
||||
particleName == "anti_xi_c+" ||
|
||||
particleName == "anti_xi-" ||
|
||||
particleName == "deuteron" ||
|
||||
particleName == "lambda_c+" ||
|
||||
particleName == "omega-" ||
|
||||
particleName == "sigma_c+" ||
|
||||
particleName == "sigma_c++" ||
|
||||
particleName == "sigma+" ||
|
||||
particleName == "sigma-" ||
|
||||
particleName == "tau+" ||
|
||||
particleName == "tau-" ||
|
||||
particleName == "triton" ||
|
||||
particleName == "xi_c+" ||
|
||||
particleName == "xi-" ) {
|
||||
|
||||
// Identical to G4EmStandardPhysics_option3
|
||||
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4hIonisation, -1, 2, 2);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// Em options
|
||||
//
|
||||
G4EmProcessOptions opt;
|
||||
opt.SetVerbose(verbose);
|
||||
|
||||
// Multiple Coulomb scattering
|
||||
//
|
||||
//opt.SetMscStepLimitation(fUseDistanceToBoundary);
|
||||
//opt.SetMscRangeFactor(0.02);
|
||||
|
||||
// Physics tables
|
||||
//
|
||||
|
||||
opt.SetMinEnergy(100*eV);
|
||||
opt.SetMaxEnergy(10*TeV);
|
||||
opt.SetDEDXBinning(220);
|
||||
opt.SetLambdaBinning(220);
|
||||
|
||||
//opt.SetSplineFlag(true);
|
||||
opt.SetPolarAngleLimit(0.2);
|
||||
|
||||
// Ionization
|
||||
//
|
||||
//opt.SetSubCutoff(true);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4EmStandardPhysics.cc,v 1.16 2008/11/21 16:50:30 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
// $Id: G4EmStandardPhysics.cc,v 1.20 2009/10/30 18:36:15 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
@@ -53,9 +53,9 @@
|
||||
#include "G4GammaConversion.hh"
|
||||
#include "G4PhotoElectricEffect.hh"
|
||||
|
||||
#include "G4MultipleScattering.hh"
|
||||
#include "G4hMultipleScattering.hh"
|
||||
#include "G4eMultipleScattering.hh"
|
||||
#include "G4MuMultipleScattering.hh"
|
||||
#include "G4hMultipleScattering.hh"
|
||||
|
||||
#include "G4eIonisation.hh"
|
||||
#include "G4eBremsstrahlung.hh"
|
||||
@@ -154,34 +154,40 @@ void G4EmStandardPhysics::ConstructProcess()
|
||||
|
||||
} else if (particleName == "e-") {
|
||||
|
||||
pmanager->AddProcess(new G4eMultipleScattering,-1, 1, 1);
|
||||
pmanager->AddProcess(new G4eIonisation, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung(), -1,-3, 3);
|
||||
pmanager->AddProcess(new G4eMultipleScattering(), -1, 1, 1);
|
||||
pmanager->AddProcess(new G4eIonisation, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung(), -1,-3, 3);
|
||||
|
||||
} else if (particleName == "e+") {
|
||||
|
||||
pmanager->AddProcess(new G4eMultipleScattering,-1, 1, 1);
|
||||
pmanager->AddProcess(new G4eIonisation, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung, -1,-3, 3);
|
||||
pmanager->AddProcess(new G4eplusAnnihilation, 0,-1, 4);
|
||||
pmanager->AddProcess(new G4eMultipleScattering(), -1, 1, 1);
|
||||
pmanager->AddProcess(new G4eIonisation, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung, -1,-3, 3);
|
||||
pmanager->AddProcess(new G4eplusAnnihilation, 0,-1, 4);
|
||||
|
||||
} else if (particleName == "mu+" ||
|
||||
particleName == "mu-" ) {
|
||||
|
||||
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);
|
||||
pmanager->AddProcess(new G4MuMultipleScattering,-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") {
|
||||
particleName == "He3") {
|
||||
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4ionIonisation, -1, 2, 2);
|
||||
|
||||
} else if (particleName == "GenericIon") {
|
||||
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4ionIonisation, -1, 2, 2);
|
||||
|
||||
} else if (particleName == "pi+" ||
|
||||
particleName == "pi-" ||
|
||||
particleName == "kaon+" ||
|
||||
particleName == "kaon-" ||
|
||||
particleName == "proton" ) {
|
||||
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
@@ -205,8 +211,6 @@ void G4EmStandardPhysics::ConstructProcess()
|
||||
particleName == "anti_xi_c+" ||
|
||||
particleName == "anti_xi-" ||
|
||||
particleName == "deuteron" ||
|
||||
particleName == "kaon+" ||
|
||||
particleName == "kaon-" ||
|
||||
particleName == "lambda_c+" ||
|
||||
particleName == "omega-" ||
|
||||
particleName == "sigma_c+" ||
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4EmStandardPhysics_option1.cc,v 1.11 2008/11/21 16:50:30 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
// $Id: G4EmStandardPhysics_option1.cc,v 1.15 2009/10/30 18:36:15 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
@@ -56,8 +56,8 @@
|
||||
#include "G4PhotoElectricEffect.hh"
|
||||
|
||||
#include "G4eMultipleScattering.hh"
|
||||
#include "G4MuMultipleScattering.hh"
|
||||
#include "G4hMultipleScattering.hh"
|
||||
#include "G4MultipleScattering.hh"
|
||||
#include "G4MscStepLimitType.hh"
|
||||
|
||||
#include "G4eIonisation.hh"
|
||||
@@ -180,20 +180,26 @@ void G4EmStandardPhysics_option1::ConstructProcess()
|
||||
} else if (particleName == "mu+" ||
|
||||
particleName == "mu-" ) {
|
||||
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4MuMultipleScattering,-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") {
|
||||
particleName == "He3") {
|
||||
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4ionIonisation, -1, 2, 2);
|
||||
|
||||
} else if (particleName == "GenericIon") {
|
||||
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4ionIonisation, -1, 2, 2);
|
||||
|
||||
} else if (particleName == "pi+" ||
|
||||
particleName == "pi-" ||
|
||||
particleName == "kaon+" ||
|
||||
particleName == "kaon-" ||
|
||||
particleName == "proton" ) {
|
||||
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
@@ -217,8 +223,6 @@ void G4EmStandardPhysics_option1::ConstructProcess()
|
||||
particleName == "anti_xi_c+" ||
|
||||
particleName == "anti_xi-" ||
|
||||
particleName == "deuteron" ||
|
||||
particleName == "kaon+" ||
|
||||
particleName == "kaon-" ||
|
||||
particleName == "lambda_c+" ||
|
||||
particleName == "omega-" ||
|
||||
particleName == "sigma_c+" ||
|
||||
@@ -237,7 +241,7 @@ void G4EmStandardPhysics_option1::ConstructProcess()
|
||||
}
|
||||
G4EmProcessOptions opt;
|
||||
opt.SetVerbose(verbose);
|
||||
//opt.SetApplyCuts(true);
|
||||
opt.SetApplyCuts(true);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4EmStandardPhysics_option2.cc,v 1.15 2008/11/21 17:59:23 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
// $Id: G4EmStandardPhysics_option2.cc,v 1.20 2009/11/24 12:53:22 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
@@ -61,6 +61,9 @@
|
||||
#include "G4hMultipleScattering.hh"
|
||||
#include "G4MuMultipleScattering.hh"
|
||||
#include "G4CoulombScattering.hh"
|
||||
#include "G4UrbanMscModel93.hh"
|
||||
#include "G4WentzelVIModel.hh"
|
||||
//#include "G4GoudsmitSaundersonMscModel.hh"
|
||||
|
||||
#include "G4eIonisation.hh"
|
||||
#include "G4eBremsstrahlung.hh"
|
||||
@@ -74,6 +77,7 @@
|
||||
|
||||
#include "G4hIonisation.hh"
|
||||
#include "G4ionIonisation.hh"
|
||||
//#include "G4IonParametrisedLossModel.hh"
|
||||
|
||||
#include "G4Gamma.hh"
|
||||
#include "G4Electron.hh"
|
||||
@@ -160,13 +164,19 @@ void G4EmStandardPhysics_option2::ConstructProcess()
|
||||
|
||||
} else if (particleName == "e-") {
|
||||
|
||||
pmanager->AddProcess(new G4eMultipleScattering, -1, 1, 1);
|
||||
G4eMultipleScattering* msc = new G4eMultipleScattering();
|
||||
msc->AddEmModel(0, new G4UrbanMscModel93());
|
||||
// msc->AddEmModel(0, new G4GoudsmitSaundersonMscModel());
|
||||
pmanager->AddProcess(msc, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4eIonisation, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung, -1,-3, 3);
|
||||
|
||||
} else if (particleName == "e+") {
|
||||
|
||||
pmanager->AddProcess(new G4eMultipleScattering, -1, 1, 1);
|
||||
G4eMultipleScattering* msc = new G4eMultipleScattering();
|
||||
msc->AddEmModel(0, new G4UrbanMscModel93());
|
||||
// msc->AddEmModel(0, new G4GoudsmitSaundersonMscModel());
|
||||
pmanager->AddProcess(msc, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4eIonisation, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung, -1,-3, 3);
|
||||
pmanager->AddProcess(new G4eplusAnnihilation, 0,-1, 4);
|
||||
@@ -174,24 +184,36 @@ void G4EmStandardPhysics_option2::ConstructProcess()
|
||||
} else if (particleName == "mu+" ||
|
||||
particleName == "mu-" ) {
|
||||
|
||||
pmanager->AddProcess(new G4MuMultipleScattering,-1, 1, 1);
|
||||
pmanager->AddProcess(new G4MuIonisation, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4MuBremsstrahlung, -1,-3, 3);
|
||||
pmanager->AddProcess(new G4MuPairProduction, -1,-4, 4);
|
||||
G4MuMultipleScattering* msc = new G4MuMultipleScattering();
|
||||
msc->AddEmModel(0, new G4WentzelVIModel());
|
||||
pmanager->AddProcess(msc, -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->AddDiscreteProcess(new G4CoulombScattering());
|
||||
|
||||
} else if (particleName == "GenericIon") {
|
||||
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
|
||||
G4ionIonisation* ionIoni = new G4ionIonisation();
|
||||
//ionIoni->SetEmModel(new G4IonParametrisedLossModel());
|
||||
//ionIoni->SetStepFunction(0.1, 20*um);
|
||||
pmanager->AddProcess(ionIoni, -1, 2, 2);
|
||||
|
||||
} else if (particleName == "alpha" ||
|
||||
particleName == "He3" ||
|
||||
particleName == "GenericIon") {
|
||||
particleName == "He3") {
|
||||
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4ionIonisation, -1, 2, 2);
|
||||
|
||||
} else if (particleName == "pi+" ||
|
||||
particleName == "pi-" ||
|
||||
particleName == "kaon+" ||
|
||||
particleName == "kaon-" ||
|
||||
particleName == "proton" ) {
|
||||
|
||||
pmanager->AddProcess(new G4MuMultipleScattering,-1, 1, 1);
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4hIonisation, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4hBremsstrahlung, -1,-3, 3);
|
||||
pmanager->AddProcess(new G4hPairProduction, -1,-4, 4);
|
||||
@@ -212,8 +234,6 @@ void G4EmStandardPhysics_option2::ConstructProcess()
|
||||
particleName == "anti_xi_c+" ||
|
||||
particleName == "anti_xi-" ||
|
||||
particleName == "deuteron" ||
|
||||
particleName == "kaon+" ||
|
||||
particleName == "kaon-" ||
|
||||
particleName == "lambda_c+" ||
|
||||
particleName == "omega-" ||
|
||||
particleName == "sigma_c+" ||
|
||||
@@ -239,17 +259,13 @@ void G4EmStandardPhysics_option2::ConstructProcess()
|
||||
|
||||
// Physics tables
|
||||
//
|
||||
//opt.SetMinEnergy(100*eV);
|
||||
//opt.SetMaxEnergy(100*TeV);
|
||||
//opt.SetDEDXBinning(84);
|
||||
//opt.SetLambdaBinning(84);
|
||||
//opt.SetMinEnergy(0.1*keV);
|
||||
// opt.SetMaxEnergy(10*TeV);
|
||||
//opt.SetDEDXBinning(77);
|
||||
//opt.SetLambdaBinning(77);
|
||||
//opt.SetSplineFlag(true);
|
||||
opt.SetPolarAngleLimit(0.2);
|
||||
|
||||
// Energy loss
|
||||
//
|
||||
//opt.SetLinearLossLimit(0.01);
|
||||
|
||||
|
||||
// Ionization
|
||||
//
|
||||
//opt.SetSubCutoff(true);
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4EmStandardPhysics_option3.cc,v 1.14 2008/11/21 16:50:30 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
// $Id: G4EmStandardPhysics_option3.cc,v 1.18 2009/11/24 12:53:22 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
@@ -49,11 +49,15 @@
|
||||
#include "G4ComptonScattering.hh"
|
||||
#include "G4GammaConversion.hh"
|
||||
#include "G4PhotoElectricEffect.hh"
|
||||
#include "G4LowEnergyRayleigh.hh"
|
||||
#include "G4RayleighScattering.hh"
|
||||
|
||||
#include "G4eMultipleScattering.hh"
|
||||
#include "G4MuMultipleScattering.hh"
|
||||
#include "G4hMultipleScattering.hh"
|
||||
#include "G4MscStepLimitType.hh"
|
||||
#include "G4UrbanMscModel93.hh"
|
||||
#include "G4WentzelVIModel.hh"
|
||||
#include "G4CoulombScattering.hh"
|
||||
|
||||
#include "G4eIonisation.hh"
|
||||
#include "G4eBremsstrahlung.hh"
|
||||
@@ -67,6 +71,8 @@
|
||||
|
||||
#include "G4hIonisation.hh"
|
||||
#include "G4ionIonisation.hh"
|
||||
#include "G4IonParametrisedLossModel.hh"
|
||||
#include "G4NuclearStopping.hh"
|
||||
|
||||
#include "G4Gamma.hh"
|
||||
#include "G4Electron.hh"
|
||||
@@ -147,14 +153,15 @@ void G4EmStandardPhysics_option3::ConstructProcess()
|
||||
|
||||
if (particleName == "gamma") {
|
||||
|
||||
pmanager->AddDiscreteProcess(new G4LowEnergyRayleigh);
|
||||
pmanager->AddDiscreteProcess(new G4PhotoElectricEffect);
|
||||
pmanager->AddDiscreteProcess(new G4ComptonScattering);
|
||||
pmanager->AddDiscreteProcess(new G4GammaConversion);
|
||||
pmanager->AddDiscreteProcess(new G4RayleighScattering);
|
||||
|
||||
} else if (particleName == "e-") {
|
||||
|
||||
G4eMultipleScattering* msc = new G4eMultipleScattering();
|
||||
msc->AddEmModel(0, new G4UrbanMscModel93());
|
||||
msc->SetStepLimitType(fUseDistanceToBoundary);
|
||||
pmanager->AddProcess(msc, -1, 1, 1);
|
||||
G4eIonisation* eIoni = new G4eIonisation();
|
||||
@@ -165,6 +172,7 @@ void G4EmStandardPhysics_option3::ConstructProcess()
|
||||
} else if (particleName == "e+") {
|
||||
|
||||
G4eMultipleScattering* msc = new G4eMultipleScattering();
|
||||
msc->AddEmModel(0, new G4UrbanMscModel93());
|
||||
msc->SetStepLimitType(fUseDistanceToBoundary);
|
||||
pmanager->AddProcess(msc, -1, 1, 1);
|
||||
G4eIonisation* eIoni = new G4eIonisation();
|
||||
@@ -176,24 +184,38 @@ void G4EmStandardPhysics_option3::ConstructProcess()
|
||||
} else if (particleName == "mu+" ||
|
||||
particleName == "mu-" ) {
|
||||
|
||||
pmanager->AddProcess(new G4eMultipleScattering, -1, 1, 1);
|
||||
G4MuMultipleScattering* msc = new G4MuMultipleScattering();
|
||||
msc->AddEmModel(0, new G4WentzelVIModel());
|
||||
pmanager->AddProcess(msc, -1, 1, 1);
|
||||
G4MuIonisation* muIoni = new G4MuIonisation();
|
||||
muIoni->SetStepFunction(0.2, 50*um);
|
||||
pmanager->AddProcess(muIoni, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4MuBremsstrahlung, -1,-3, 3);
|
||||
pmanager->AddProcess(new G4MuPairProduction, -1,-4, 4);
|
||||
pmanager->AddDiscreteProcess(new G4CoulombScattering());
|
||||
|
||||
} else if (particleName == "alpha" ||
|
||||
particleName == "He3" ||
|
||||
particleName == "GenericIon") {
|
||||
particleName == "He3") {
|
||||
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
G4ionIonisation* ionIoni = new G4ionIonisation();
|
||||
ionIoni->SetStepFunction(0.1, 20*um);
|
||||
pmanager->AddProcess(ionIoni, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4NuclearStopping(), -1, 3,-1);
|
||||
|
||||
} else if (particleName == "GenericIon") {
|
||||
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
G4ionIonisation* ionIoni = new G4ionIonisation();
|
||||
ionIoni->SetEmModel(new G4IonParametrisedLossModel());
|
||||
ionIoni->SetStepFunction(0.1, 10*um);
|
||||
pmanager->AddProcess(ionIoni, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4NuclearStopping(), -1, 3,-1);
|
||||
|
||||
} else if (particleName == "pi+" ||
|
||||
particleName == "pi-" ||
|
||||
particleName == "kaon+" ||
|
||||
particleName == "kaon-" ||
|
||||
particleName == "proton" ) {
|
||||
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
@@ -219,8 +241,6 @@ void G4EmStandardPhysics_option3::ConstructProcess()
|
||||
particleName == "anti_xi_c+" ||
|
||||
particleName == "anti_xi-" ||
|
||||
particleName == "deuteron" ||
|
||||
particleName == "kaon+" ||
|
||||
particleName == "kaon-" ||
|
||||
particleName == "lambda_c+" ||
|
||||
particleName == "omega-" ||
|
||||
particleName == "sigma_c+" ||
|
||||
@@ -255,6 +275,7 @@ void G4EmStandardPhysics_option3::ConstructProcess()
|
||||
opt.SetDEDXBinning(220);
|
||||
opt.SetLambdaBinning(220);
|
||||
//opt.SetSplineFlag(true);
|
||||
opt.SetPolarAngleLimit(0.2);
|
||||
|
||||
// Ionization
|
||||
//
|
||||
|
||||
@@ -23,10 +23,25 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4FTFBinaryNeutronBuilder.cc,v 1.4 2009/03/31 18:38:33 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4FTFBinaryNeutronBuilder
|
||||
//
|
||||
// Author: 2008 G.Folger
|
||||
//
|
||||
// Modified:
|
||||
// 30.03.2009 V.Ivanchenko create cross section by new
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
#include "G4FTFBinaryNeutronBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
#include "G4NeutronInelasticCrossSection.hh"
|
||||
|
||||
G4FTFBinaryNeutronBuilder::
|
||||
G4FTFBinaryNeutronBuilder(G4bool quasiElastic)
|
||||
@@ -79,6 +94,7 @@ Build(G4HadronCaptureProcess * )
|
||||
void G4FTFBinaryNeutronBuilder::
|
||||
Build(G4NeutronInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
aP->RegisterMe(theModel);
|
||||
aP->AddDataSet(&theXSec);
|
||||
aP->AddDataSet(new G4NeutronInelasticCrossSection);
|
||||
}
|
||||
|
||||
@@ -23,14 +23,29 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#include "G4FTFBinaryPiKBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
// $Id: G4FTFBinaryPiKBuilder.cc,v 1.3 2009/03/31 18:38:33 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4FTFBinaryPiKBuilder
|
||||
//
|
||||
// Author: 2008 G.Folger
|
||||
//
|
||||
// Modified:
|
||||
// 30.03.2009 V.Ivanchenko create cross section by new
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
#include "G4FTFBinaryPiKBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
G4FTFBinaryPiKBuilder::
|
||||
G4FTFBinaryPiKBuilder(G4bool quasiElastic)
|
||||
G4FTFBinaryPiKBuilder::
|
||||
G4FTFBinaryPiKBuilder(G4bool quasiElastic)
|
||||
{
|
||||
thePiData = new G4PiNuclearCrossSection;
|
||||
theMin = 4*GeV;
|
||||
theModel = new G4TheoFSGenerator("FTFB");
|
||||
|
||||
@@ -55,8 +70,7 @@
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
}
|
||||
|
||||
G4FTFBinaryPiKBuilder::
|
||||
~G4FTFBinaryPiKBuilder()
|
||||
G4FTFBinaryPiKBuilder:: ~G4FTFBinaryPiKBuilder()
|
||||
{
|
||||
delete theCascade;
|
||||
delete theStringDecay;
|
||||
@@ -65,22 +79,22 @@
|
||||
if ( theQuasiElastic ) delete theQuasiElastic;
|
||||
}
|
||||
|
||||
void G4FTFBinaryPiKBuilder::
|
||||
Build(G4HadronElasticProcess * ) {}
|
||||
void G4FTFBinaryPiKBuilder::
|
||||
Build(G4HadronElasticProcess * ) {}
|
||||
|
||||
void G4FTFBinaryPiKBuilder::
|
||||
Build(G4PionPlusInelasticProcess * aP)
|
||||
void G4FTFBinaryPiKBuilder::
|
||||
Build(G4PionPlusInelasticProcess * aP)
|
||||
{
|
||||
aP->AddDataSet(&thePiData);
|
||||
theModel->SetMinEnergy(theMin);
|
||||
aP->AddDataSet(thePiData);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
void G4FTFBinaryPiKBuilder::
|
||||
Build(G4PionMinusInelasticProcess * aP)
|
||||
void G4FTFBinaryPiKBuilder::
|
||||
Build(G4PionMinusInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->AddDataSet(&thePiData);
|
||||
aP->AddDataSet(thePiData);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
@@ -88,7 +102,6 @@
|
||||
Build(G4KaonPlusInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
@@ -96,7 +109,6 @@
|
||||
Build(G4KaonMinusInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
@@ -104,7 +116,6 @@
|
||||
Build(G4KaonZeroLInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
@@ -112,6 +123,5 @@
|
||||
Build(G4KaonZeroSInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
@@ -23,10 +23,25 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4FTFBinaryProtonBuilder.cc,v 1.3 2009/03/31 18:38:33 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4FTFBinaryProtonBuilder
|
||||
//
|
||||
// Author: 2008 G.Folger
|
||||
//
|
||||
// Modified:
|
||||
// 30.03.2009 V.Ivanchenko create cross section by new
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
#include "G4FTFBinaryProtonBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
#include "G4ProtonInelasticCrossSection.hh"
|
||||
|
||||
G4FTFBinaryProtonBuilder::
|
||||
G4FTFBinaryProtonBuilder(G4bool quasiElastic)
|
||||
@@ -60,9 +75,8 @@ void G4FTFBinaryProtonBuilder::
|
||||
Build(G4ProtonInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->RegisterMe(theModel);
|
||||
aP->AddDataSet(&theXSec);
|
||||
aP->AddDataSet(new G4ProtonInelasticCrossSection);
|
||||
}
|
||||
|
||||
G4FTFBinaryProtonBuilder::
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4FTFBuilder.cc,v 1.2 2009/11/25 19:33:18 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4FTFBuilder
|
||||
//
|
||||
// Author: 28 June 2009 V.Ivanchenko
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
#include "G4FTFBuilder.hh"
|
||||
#include "G4FTFModel.hh"
|
||||
#include "G4ExcitedStringDecay.hh"
|
||||
#include "G4TheoFSGenerator.hh"
|
||||
#include "G4QStringChipsParticleLevelInterface.hh"
|
||||
#include "G4GeneratorPrecompoundInterface.hh"
|
||||
#include "G4LundStringFragmentation.hh"
|
||||
#include "G4BinaryCascade.hh"
|
||||
|
||||
|
||||
G4FTFBuilder::G4FTFBuilder(const G4String& aName) : G4VHadronModelBuilder(aName)
|
||||
{}
|
||||
|
||||
G4FTFBuilder::~G4FTFBuilder()
|
||||
{
|
||||
delete theStringDecay;
|
||||
//delete theStringModel; // is deleted by the model
|
||||
}
|
||||
|
||||
G4HadronicInteraction* G4FTFBuilder::BuildModel()
|
||||
{
|
||||
G4TheoFSGenerator* theFTFModel = new G4TheoFSGenerator(GetName());
|
||||
theStringModel = new G4FTFModel();
|
||||
theStringDecay = new G4ExcitedStringDecay(new G4LundStringFragmentation());
|
||||
theStringModel->SetFragmentationModel(theStringDecay);
|
||||
theFTFModel->SetHighEnergyGenerator(theStringModel);
|
||||
|
||||
if(GetName() == "FTFP") {
|
||||
theFTFModel->SetTransport(new G4GeneratorPrecompoundInterface());
|
||||
} else if(GetName() == "FTFC") {
|
||||
theFTFModel->SetTransport(new G4QStringChipsParticleLevelInterface());
|
||||
} else if(GetName() == "FTFB") {
|
||||
theFTFModel->SetTransport(new G4BinaryCascade());
|
||||
} else {
|
||||
theFTFModel->SetTransport(new G4GeneratorPrecompoundInterface());
|
||||
}
|
||||
|
||||
return theFTFModel;
|
||||
}
|
||||
@@ -23,10 +23,25 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4FTFCNeutronBuilder.cc,v 1.3 2009/03/31 18:38:34 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4FTFCNeutronBuilder
|
||||
//
|
||||
// Author: 2002 J.P. Wellisch
|
||||
//
|
||||
// Modified:
|
||||
// 30.03.2009 V.Ivanchenko create cross section by new
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
#include "G4FTFCNeutronBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
#include "G4NeutronInelasticCrossSection.hh"
|
||||
|
||||
G4FTFCNeutronBuilder::
|
||||
G4FTFCNeutronBuilder(G4bool quasiElastic)
|
||||
@@ -49,10 +64,11 @@ G4FTFCNeutronBuilder(G4bool quasiElastic)
|
||||
{ theQuasiElastic=0;}
|
||||
|
||||
theModel->SetTransport(theCascade);
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
}
|
||||
|
||||
G4FTFCNeutronBuilder::
|
||||
~G4FTFCNeutronBuilder()
|
||||
G4FTFCNeutronBuilder::~G4FTFCNeutronBuilder()
|
||||
{
|
||||
delete theCascade;
|
||||
delete theStringDecay;
|
||||
@@ -79,10 +95,8 @@ Build(G4HadronCaptureProcess * )
|
||||
void G4FTFCNeutronBuilder::
|
||||
Build(G4NeutronInelasticProcess * aP)
|
||||
{
|
||||
aP->AddDataSet(&theXSec);
|
||||
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->AddDataSet(new G4NeutronInelasticCrossSection);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
|
||||
@@ -23,6 +23,20 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4FTFCPiKBuilder.cc,v 1.3 2009/03/31 18:38:34 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4FTFCPiKBuilder
|
||||
//
|
||||
// Author: 2002 J.P. Wellisch
|
||||
//
|
||||
// Modified:
|
||||
// 30.03.2009 V.Ivanchenko create cross section by new
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
#include "G4FTFCPiKBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
@@ -31,6 +45,7 @@
|
||||
G4FTFCPiKBuilder::
|
||||
G4FTFCPiKBuilder(G4bool quasiElastic)
|
||||
{
|
||||
thePiData = new G4PiNuclearCrossSection;
|
||||
theMin = 4*GeV;
|
||||
theModel = new G4TheoFSGenerator;
|
||||
|
||||
@@ -48,6 +63,9 @@ G4FTFCPiKBuilder(G4bool quasiElastic)
|
||||
theModel->SetQuasiElasticChannel(theQuasiElastic);
|
||||
} else
|
||||
{ theQuasiElastic=0;}
|
||||
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
}
|
||||
|
||||
G4FTFCPiKBuilder::
|
||||
@@ -65,18 +83,16 @@ Build(G4HadronElasticProcess * ) {}
|
||||
void G4FTFCPiKBuilder::
|
||||
Build(G4PionPlusInelasticProcess * aP)
|
||||
{
|
||||
aP->AddDataSet(&thePiData);
|
||||
aP->AddDataSet(thePiData);
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
void G4FTFCPiKBuilder::
|
||||
Build(G4PionMinusInelasticProcess * aP)
|
||||
{
|
||||
aP->AddDataSet(&thePiData);
|
||||
aP->AddDataSet(thePiData);
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
@@ -84,7 +100,6 @@ void G4FTFCPiKBuilder::
|
||||
Build(G4KaonPlusInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
@@ -92,7 +107,6 @@ void G4FTFCPiKBuilder::
|
||||
Build(G4KaonMinusInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
@@ -100,7 +114,6 @@ void G4FTFCPiKBuilder::
|
||||
Build(G4KaonZeroLInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
@@ -108,7 +121,6 @@ void G4FTFCPiKBuilder::
|
||||
Build(G4KaonZeroSInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
|
||||
@@ -23,35 +23,72 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4FTFCProtonBuilder.cc,v 1.4 2009/03/31 18:38:34 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4FTFCProtonBuilder
|
||||
//
|
||||
// Author: 2002 J.P. Wellisch
|
||||
//
|
||||
// Modified:
|
||||
// 30.03.2009 V.Ivanchenko create cross section by new
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
#include "G4FTFCProtonBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
#include "TheoModelFactory.hh"
|
||||
#include "G4ProtonInelasticCrossSection.hh"
|
||||
|
||||
G4FTFCProtonBuilder::
|
||||
G4FTFCProtonBuilder(G4bool quasiElastic)
|
||||
{
|
||||
theMin = 4*GeV;
|
||||
theModel = TheoModelFactory<G4StringChipsParticleLevelInterface,
|
||||
G4FTFModel, G4LundStringFragmentation>::New();
|
||||
theModel = new G4TheoFSGenerator;
|
||||
|
||||
theStringModel = new G4FTFModel;
|
||||
theStringDecay = new G4ExcitedStringDecay(new G4LundStringFragmentation);
|
||||
theStringModel->SetFragmentationModel(theStringDecay);
|
||||
|
||||
theCascade = new G4StringChipsParticleLevelInterface;
|
||||
|
||||
theModel->SetHighEnergyGenerator(theStringModel);
|
||||
|
||||
if (quasiElastic)
|
||||
if (quasiElastic)
|
||||
{
|
||||
theQuasiElastic=new G4QuasiElasticChannel;
|
||||
theModel->SetQuasiElasticChannel(theQuasiElastic);
|
||||
} else
|
||||
{ theQuasiElastic=0;}
|
||||
|
||||
theModel->SetTransport(theCascade);
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
}
|
||||
|
||||
G4FTFCProtonBuilder::~G4FTFCProtonBuilder()
|
||||
{
|
||||
delete theCascade;
|
||||
delete theStringDecay;
|
||||
if ( theQuasiElastic ) delete theQuasiElastic;
|
||||
delete theStringModel;
|
||||
delete theModel;
|
||||
}
|
||||
|
||||
void G4FTFCProtonBuilder::
|
||||
Build(G4ProtonInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->RegisterMe(theModel);
|
||||
aP->AddDataSet(&theXSec);
|
||||
aP->AddDataSet(new G4ProtonInelasticCrossSection);
|
||||
}
|
||||
|
||||
void G4FTFCProtonBuilder::
|
||||
Build(G4HadronElasticProcess * )
|
||||
{
|
||||
}
|
||||
|
||||
// 2002 by J.P. Wellisch
|
||||
|
||||
@@ -23,15 +23,31 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4FTFPNeutronBuilder.cc,v 1.5 2009/04/23 18:54:57 japost Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4FTFPNeutronBuilder
|
||||
//
|
||||
// Author: 2002 J.P. Wellisch
|
||||
//
|
||||
// Modified:
|
||||
// 30.03.2009 V.Ivanchenko create cross section by new
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
#include "G4FTFPNeutronBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
#include "G4NeutronInelasticCrossSection.hh"
|
||||
|
||||
G4FTFPNeutronBuilder::
|
||||
G4FTFPNeutronBuilder(G4bool quasiElastic)
|
||||
{
|
||||
theMin = 4*GeV;
|
||||
theMin = 4*GeV;
|
||||
theMax = 100*TeV;
|
||||
theModel = new G4TheoFSGenerator("FTFP");
|
||||
|
||||
theStringModel = new G4FTFModel;
|
||||
@@ -51,6 +67,9 @@ G4FTFPNeutronBuilder(G4bool quasiElastic)
|
||||
theModel->SetQuasiElasticChannel(theQuasiElastic);
|
||||
} else
|
||||
{ theQuasiElastic=0;}
|
||||
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
}
|
||||
|
||||
G4FTFPNeutronBuilder::
|
||||
@@ -82,9 +101,9 @@ void G4FTFPNeutronBuilder::
|
||||
Build(G4NeutronInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
theModel->SetMaxEnergy(theMax);
|
||||
aP->RegisterMe(theModel);
|
||||
aP->AddDataSet(&theXSec);
|
||||
aP->AddDataSet(new G4NeutronInelasticCrossSection);
|
||||
}
|
||||
|
||||
// 2002 by J.P. Wellisch
|
||||
|
||||
@@ -23,15 +23,31 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#include "G4FTFPPiKBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
// $Id: G4FTFPPiKBuilder.cc,v 1.5 2009/04/23 18:54:57 japost Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4FTFPPiKBuilder
|
||||
//
|
||||
// Author: 2002 J.P. Wellisch
|
||||
//
|
||||
// Modified:
|
||||
// 30.03.2009 V.Ivanchenko create cross section by new
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
#include "G4FTFPPiKBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
G4FTFPPiKBuilder::
|
||||
G4FTFPPiKBuilder(G4bool quasiElastic)
|
||||
G4FTFPPiKBuilder::
|
||||
G4FTFPPiKBuilder(G4bool quasiElastic)
|
||||
{
|
||||
thePiData = new G4PiNuclearCrossSection;
|
||||
theMin = 4*GeV;
|
||||
theMax = 100*TeV;
|
||||
theModel = new G4TheoFSGenerator("FTFP");
|
||||
|
||||
theStringModel = new G4FTFModel;
|
||||
@@ -51,10 +67,11 @@
|
||||
{ theQuasiElastic=0;}
|
||||
|
||||
theModel->SetTransport(theCascade);
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
}
|
||||
|
||||
G4FTFPPiKBuilder::
|
||||
~G4FTFPPiKBuilder()
|
||||
G4FTFPPiKBuilder:: ~G4FTFPPiKBuilder()
|
||||
{
|
||||
delete theCascade;
|
||||
delete theStringDecay;
|
||||
@@ -63,56 +80,56 @@
|
||||
if ( theQuasiElastic ) delete theQuasiElastic;
|
||||
}
|
||||
|
||||
void G4FTFPPiKBuilder::
|
||||
Build(G4HadronElasticProcess * ) {}
|
||||
void G4FTFPPiKBuilder::
|
||||
Build(G4HadronElasticProcess * ) {}
|
||||
|
||||
void G4FTFPPiKBuilder::
|
||||
Build(G4PionPlusInelasticProcess * aP)
|
||||
void G4FTFPPiKBuilder::
|
||||
Build(G4PionPlusInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->AddDataSet(&thePiData);
|
||||
theModel->SetMaxEnergy(theMax);
|
||||
aP->AddDataSet(thePiData);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
void G4FTFPPiKBuilder::
|
||||
Build(G4PionMinusInelasticProcess * aP)
|
||||
void G4FTFPPiKBuilder::
|
||||
Build(G4PionMinusInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->AddDataSet(&thePiData);
|
||||
theModel->SetMaxEnergy(theMax);
|
||||
aP->AddDataSet(thePiData);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
void G4FTFPPiKBuilder::
|
||||
Build(G4KaonPlusInelasticProcess * aP)
|
||||
void G4FTFPPiKBuilder::
|
||||
Build(G4KaonPlusInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
theModel->SetMaxEnergy(theMax);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
void G4FTFPPiKBuilder::
|
||||
Build(G4KaonMinusInelasticProcess * aP)
|
||||
void G4FTFPPiKBuilder::
|
||||
Build(G4KaonMinusInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
theModel->SetMaxEnergy(theMax);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
void G4FTFPPiKBuilder::
|
||||
Build(G4KaonZeroLInelasticProcess * aP)
|
||||
void G4FTFPPiKBuilder::
|
||||
Build(G4KaonZeroLInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
theModel->SetMaxEnergy(theMax);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
void G4FTFPPiKBuilder::
|
||||
Build(G4KaonZeroSInelasticProcess * aP)
|
||||
void G4FTFPPiKBuilder::
|
||||
Build(G4KaonZeroSInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
theModel->SetMaxEnergy(theMax);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
|
||||
@@ -23,15 +23,31 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4FTFPProtonBuilder.cc,v 1.6 2009/04/23 18:54:57 japost Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4FTFPProtonBuilder
|
||||
//
|
||||
// Author: 2002 J.P. Wellisch
|
||||
//
|
||||
// Modified:
|
||||
// 30.03.2009 V.Ivanchenko create cross section by new
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
#include "G4FTFPProtonBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
#include "G4ProtonInelasticCrossSection.hh"
|
||||
|
||||
G4FTFPProtonBuilder::
|
||||
G4FTFPProtonBuilder(G4bool quasiElastic)
|
||||
{
|
||||
theMin = 4*GeV;
|
||||
theMax = 100.*TeV;
|
||||
theModel = new G4TheoFSGenerator("FTFP");
|
||||
|
||||
theStringModel = new G4FTFModel;
|
||||
@@ -51,15 +67,17 @@ G4FTFPProtonBuilder(G4bool quasiElastic)
|
||||
{ theQuasiElastic=0;}
|
||||
|
||||
theModel->SetTransport(theCascade);
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
}
|
||||
|
||||
void G4FTFPProtonBuilder::
|
||||
Build(G4ProtonInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
theModel->SetMaxEnergy(theMax);
|
||||
aP->RegisterMe(theModel);
|
||||
aP->AddDataSet(&theXSec);
|
||||
aP->AddDataSet(new G4ProtonInelasticCrossSection);
|
||||
}
|
||||
|
||||
G4FTFPProtonBuilder::
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4HadronHElasticPhysics.cc,v 1.5 2008/05/19 10:21:34 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
// $Id: G4HadronHElasticPhysics.cc,v 1.7 2009/11/28 17:35:01 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
@@ -41,11 +41,6 @@
|
||||
|
||||
#include "G4HadronHElasticPhysics.hh"
|
||||
|
||||
#include "G4HadronicProcess.hh"
|
||||
#include "G4HadronElasticProcess.hh"
|
||||
#include "G4HadronicInteraction.hh"
|
||||
#include "G4LElastic.hh"
|
||||
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
@@ -54,31 +49,30 @@
|
||||
#include "G4IonConstructor.hh"
|
||||
#include "G4Neutron.hh"
|
||||
|
||||
#include "G4VQCrossSection.hh"
|
||||
#include "G4WHadronElasticProcess.hh"
|
||||
#include "G4VHadronElastic.hh"
|
||||
#include "G4CHIPSElastic.hh"
|
||||
#include "G4ElasticHadrNucleusHE.hh"
|
||||
#include "G4NeutronHPElastic.hh"
|
||||
#include "G4UElasticCrossSection.hh"
|
||||
#include "G4BGGNucleonElasticXS.hh"
|
||||
#include "G4BGGPionElasticXS.hh"
|
||||
#include "G4NeutronElasticXS.hh"
|
||||
|
||||
G4HadronHElasticPhysics::G4HadronHElasticPhysics(G4int ver, G4bool hp)
|
||||
: G4VPhysicsConstructor("HElastic"), mname("HElastic"), verbose(ver),
|
||||
hpFlag(hp), wasActivated(false)
|
||||
G4HadronHElasticPhysics::G4HadronHElasticPhysics(G4int ver, G4bool hp,
|
||||
const G4String& type)
|
||||
: G4VPhysicsConstructor("HElastic"), verbose(ver),
|
||||
hpFlag(hp), wasActivated(false), subtype(type)
|
||||
{
|
||||
if(verbose > 1) G4cout << "### HadronHElasticPhysics" << G4endl;
|
||||
model = 0;
|
||||
neutronModel = 0;
|
||||
neutronHPModel = 0;
|
||||
}
|
||||
|
||||
G4HadronHElasticPhysics::~G4HadronHElasticPhysics()
|
||||
{
|
||||
delete model;
|
||||
delete neutronModel;
|
||||
delete neutronHPModel;
|
||||
}
|
||||
{}
|
||||
|
||||
void G4HadronHElasticPhysics::ConstructParticle()
|
||||
{
|
||||
// G4cout << "G4HadronElasticPhysics::ConstructParticle" << G4endl;
|
||||
// G4cout << "G4HadronElasticPhysics::ConstructParticle" << G4endl;
|
||||
G4MesonConstructor pMesonConstructor;
|
||||
pMesonConstructor.ConstructParticle();
|
||||
|
||||
@@ -95,22 +89,21 @@ void G4HadronHElasticPhysics::ConstructProcess()
|
||||
if(wasActivated) return;
|
||||
wasActivated = true;
|
||||
|
||||
G4double elimit = 0.4*GeV;
|
||||
//G4double elimit = 0.0;
|
||||
|
||||
if(verbose > 1)
|
||||
G4double elimit = 1.0*GeV;
|
||||
if(verbose > 1) {
|
||||
G4cout << "### HadronElasticPhysics Construct Processes with HE limit "
|
||||
<< elimit << " MeV" << G4endl;
|
||||
}
|
||||
|
||||
G4HadronicProcess* hel = 0;
|
||||
G4VQCrossSection* man = 0;
|
||||
G4VHadronElastic* plep0 = new G4VHadronElastic();
|
||||
G4VHadronElastic* plep1 = new G4VHadronElastic();
|
||||
plep1->SetMaxEnergy(elimit);
|
||||
|
||||
G4HadronElastic* he = new G4HadronElastic();
|
||||
he->SetHEModelLowLimit(elimit);
|
||||
he->SetQModelLowLimit(0.0);
|
||||
he->SetLowestEnergyLimit(0.0);
|
||||
model = he;
|
||||
man = he->GetCS();
|
||||
G4CHIPSElastic* chipsp = new G4CHIPSElastic();
|
||||
G4CHIPSElastic* chipsn = new G4CHIPSElastic();
|
||||
|
||||
G4ElasticHadrNucleusHE* he = new G4ElasticHadrNucleusHE();
|
||||
he->SetMinEnergy(elimit);
|
||||
|
||||
theParticleIterator->reset();
|
||||
while( (*theParticleIterator)() )
|
||||
@@ -142,44 +135,48 @@ void G4HadronHElasticPhysics::ConstructProcess()
|
||||
pname == "triton") {
|
||||
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
G4UHadronElasticProcess* h = new G4UHadronElasticProcess("hElastic");
|
||||
h->SetQElasticCrossSection(man);
|
||||
hel = h;
|
||||
G4WHadronElasticProcess* hel = new G4WHadronElasticProcess();
|
||||
if(pname == "proton") {
|
||||
hel->AddDataSet(new G4BGGNucleonElasticXS(particle));
|
||||
hel->RegisterMe(chipsp);
|
||||
} else if (pname == "pi+" || pname == "pi-") {
|
||||
hel->AddDataSet(new G4BGGPionElasticXS(particle));
|
||||
hel->RegisterMe(plep1);
|
||||
hel->RegisterMe(he);
|
||||
} else {
|
||||
hel->AddDataSet(new G4UElasticCrossSection(particle));
|
||||
//hel->AddDataSet(new G4UElasticCrossSection(particle));
|
||||
hel->RegisterMe(plep0);
|
||||
}
|
||||
hel->RegisterMe(model);
|
||||
pmanager->AddDiscreteProcess(hel);
|
||||
if(verbose > 1) {
|
||||
G4cout << "### HadronHElasticPhysics: " << hel->GetProcessName()
|
||||
<< " added for " << particle->GetParticleName() << G4endl;
|
||||
}
|
||||
|
||||
// neutron case
|
||||
} else if(pname == "neutron") {
|
||||
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
G4UHadronElasticProcess* h = new G4UHadronElasticProcess("hElastic");
|
||||
G4HadronElastic* nhe = new G4HadronElastic();
|
||||
nhe->SetHEModelLowLimit(elimit);
|
||||
neutronModel = nhe;
|
||||
h->SetQElasticCrossSection(nhe->GetCS());
|
||||
hel = h;
|
||||
hel->AddDataSet(new G4BGGNucleonElasticXS(particle));
|
||||
G4WHadronElasticProcess* hel = new G4WHadronElasticProcess();
|
||||
if(subtype == "QBBC_XGGSN") {
|
||||
hel->AddDataSet(new G4NeutronElasticXS());
|
||||
} else {
|
||||
hel->AddDataSet(new G4BGGNucleonElasticXS(particle));
|
||||
}
|
||||
hel->RegisterMe(chipsn);
|
||||
|
||||
if(hpFlag) {
|
||||
neutronModel->SetMinEnergy(19.5*MeV);
|
||||
neutronHPModel = new G4NeutronHPElastic();
|
||||
hel->RegisterMe(neutronHPModel);
|
||||
chipsn->SetMinEnergy(19.5*MeV);
|
||||
G4NeutronHPElastic* hp = new G4NeutronHPElastic();
|
||||
hel->RegisterMe(hp);
|
||||
hel->AddDataSet(new G4NeutronHPElasticData());
|
||||
}
|
||||
|
||||
hel->RegisterMe(neutronModel);
|
||||
pmanager->AddDiscreteProcess(hel);
|
||||
|
||||
if(verbose > 1)
|
||||
G4cout << "### HadronHElasticPhysics added for "
|
||||
<< particle->GetParticleName() << G4endl;
|
||||
if(verbose > 1) {
|
||||
G4cout << "### HadronHElasticPhysics: " << hel->GetProcessName()
|
||||
<< " added for " << particle->GetParticleName() << G4endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#include "G4InclAblaNeutronBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
G4InclAblaNeutronBuilder::
|
||||
G4InclAblaNeutronBuilder()
|
||||
{
|
||||
theMin = 0;
|
||||
theMax = 3.0*GeV;
|
||||
theModel = new G4InclAblaCascadeInterface;
|
||||
}
|
||||
|
||||
void G4InclAblaNeutronBuilder::
|
||||
Build(G4NeutronInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(theMax);
|
||||
aP->RegisterMe(theModel);
|
||||
aP->AddDataSet(&theXSec);
|
||||
}
|
||||
|
||||
G4InclAblaNeutronBuilder::
|
||||
~G4InclAblaNeutronBuilder()
|
||||
{
|
||||
delete theModel;
|
||||
}
|
||||
|
||||
void G4InclAblaNeutronBuilder::
|
||||
Build(G4HadronElasticProcess * )
|
||||
{
|
||||
}
|
||||
|
||||
void G4InclAblaNeutronBuilder::
|
||||
Build(G4HadronFissionProcess * )
|
||||
{
|
||||
}
|
||||
|
||||
void G4InclAblaNeutronBuilder::
|
||||
Build(G4HadronCaptureProcess * )
|
||||
{
|
||||
}
|
||||
|
||||
// 2002 by J.P. Wellisch
|
||||
@@ -0,0 +1,102 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#include "G4InclAblaPiKBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
G4InclAblaPiKBuilder::
|
||||
G4InclAblaPiKBuilder()
|
||||
{
|
||||
theMin = 0*GeV;
|
||||
theMax = 3.0*GeV;
|
||||
theModel = new G4InclAblaCascadeInterface;
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(theMax);
|
||||
theBertiniModel = new G4CascadeInterface;
|
||||
theBertiniModel->SetMinEnergy(theMin);
|
||||
theBertiniModel->SetMaxEnergy(theMax);
|
||||
}
|
||||
|
||||
G4InclAblaPiKBuilder::
|
||||
~G4InclAblaPiKBuilder()
|
||||
{
|
||||
delete theModel;
|
||||
}
|
||||
|
||||
void G4InclAblaPiKBuilder::
|
||||
Build(G4PionPlusInelasticProcess * aP)
|
||||
{
|
||||
aP->RegisterMe(theModel);
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(theMax);
|
||||
}
|
||||
|
||||
void G4InclAblaPiKBuilder::
|
||||
Build(G4PionMinusInelasticProcess * aP)
|
||||
{
|
||||
aP->RegisterMe(theModel);
|
||||
aP->AddDataSet(&thePiData);
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(theMax);
|
||||
}
|
||||
|
||||
void G4InclAblaPiKBuilder::
|
||||
Build(G4HadronElasticProcess * ) {}
|
||||
|
||||
void G4InclAblaPiKBuilder::
|
||||
Build(G4KaonPlusInelasticProcess *aP)
|
||||
{
|
||||
aP->RegisterMe(theBertiniModel);
|
||||
theBertiniModel->SetMinEnergy(theMin);
|
||||
theBertiniModel->SetMaxEnergy(theMax);
|
||||
}
|
||||
|
||||
void G4InclAblaPiKBuilder::
|
||||
Build(G4KaonMinusInelasticProcess *aP)
|
||||
{
|
||||
aP->RegisterMe(theBertiniModel);
|
||||
theBertiniModel->SetMinEnergy(theMin);
|
||||
theBertiniModel->SetMaxEnergy(theMax);
|
||||
}
|
||||
|
||||
void G4InclAblaPiKBuilder::
|
||||
Build(G4KaonZeroLInelasticProcess *aP)
|
||||
{
|
||||
aP->RegisterMe(theBertiniModel);
|
||||
theBertiniModel->SetMinEnergy(theMin);
|
||||
theBertiniModel->SetMaxEnergy(theMax);
|
||||
}
|
||||
|
||||
void G4InclAblaPiKBuilder::
|
||||
Build(G4KaonZeroSInelasticProcess *aP)
|
||||
{
|
||||
aP->RegisterMe(theBertiniModel);
|
||||
theBertiniModel->SetMinEnergy(theMin);
|
||||
theBertiniModel->SetMaxEnergy(theMax);
|
||||
}
|
||||
|
||||
// 2002 by J.P. Wellisch
|
||||
@@ -0,0 +1,59 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#include "G4InclAblaProtonBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
G4InclAblaProtonBuilder::
|
||||
G4InclAblaProtonBuilder()
|
||||
{
|
||||
theMin = 0;
|
||||
theMax=3.0*GeV;
|
||||
theModel = new G4InclAblaCascadeInterface;
|
||||
}
|
||||
|
||||
G4InclAblaProtonBuilder::
|
||||
~G4InclAblaProtonBuilder()
|
||||
{
|
||||
delete theModel;
|
||||
}
|
||||
|
||||
void G4InclAblaProtonBuilder::
|
||||
Build(G4HadronElasticProcess * )
|
||||
{
|
||||
}
|
||||
|
||||
void G4InclAblaProtonBuilder::
|
||||
Build(G4ProtonInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(theMax);
|
||||
aP->RegisterMe(theModel);
|
||||
aP->AddDataSet(&theXSec);
|
||||
}
|
||||
|
||||
// 2002 by J.P. Wellisch
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4IonBinaryCascadePhysics.cc,v 1.1 2006/10/31 11:35:02 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
// $Id: G4IonBinaryCascadePhysics.cc,v 1.2 2009/02/16 10:15:35 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
@@ -117,9 +117,9 @@ void G4IonBinaryCascadePhysics::AddProcess(const G4String& name,
|
||||
p_list.push_back(hadi);
|
||||
G4ProcessManager* pManager = p->GetProcessManager();
|
||||
pManager->AddDiscreteProcess(hadi);
|
||||
hadi->AddDataSet(fShen);
|
||||
hadi->AddDataSet(fTripathi);
|
||||
hadi->AddDataSet(fTripathiLight);
|
||||
hadi->AddDataSet(fShen);
|
||||
hmodel->SetMinEnergy(eminBIC);
|
||||
hmodel->SetMaxEnergy(emax);
|
||||
hadi->RegisterMe(hmodel);
|
||||
@@ -132,7 +132,9 @@ void G4IonBinaryCascadePhysics::AddProcess(const G4String& name,
|
||||
G4cout << "Register " << hadi->GetProcessName()
|
||||
<< " for " << p->GetParticleName()
|
||||
<< " Binary Cascade for E(MeV)= " << eminBIC << " - " << emax;
|
||||
if(lmodel) G4cout << " LHEP for E(MeV)= " << emax-MeV << " - " << emaxLHEP;
|
||||
if(lmodel) {
|
||||
G4cout << " LHEP for E(MeV)= " << emax-MeV << " - " << emaxLHEP;
|
||||
}
|
||||
G4cout << G4endl;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,152 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4IonInclAblaPhysics.cc,v 1.1 2009/07/19 18:24:03 kaitanie Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4IonInclAblaPhysics
|
||||
//
|
||||
// Author: P. Kaitaniemi
|
||||
//
|
||||
// Modified:
|
||||
// 23.06.06 V.Ivanchenko set emaxLHEP=1 TeV
|
||||
// 24.06.06 V.Ivanchenko fix typo
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
#include "G4IonInclAblaPhysics.hh"
|
||||
|
||||
#include "G4DeuteronInelasticProcess.hh"
|
||||
#include "G4TritonInelasticProcess.hh"
|
||||
#include "G4AlphaInelasticProcess.hh"
|
||||
#include "G4HadronInelasticProcess.hh"
|
||||
|
||||
#include "G4InclAblaLightIonInterface.hh"
|
||||
#include "G4TripathiCrossSection.hh"
|
||||
#include "G4TripathiLightCrossSection.hh"
|
||||
#include "G4IonsShenCrossSection.hh"
|
||||
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
// Nuclei
|
||||
#include "G4IonConstructor.hh"
|
||||
|
||||
G4IonInclAblaPhysics::G4IonInclAblaPhysics(const G4String& name,
|
||||
G4int verb)
|
||||
: G4VPhysicsConstructor(name), verbose(verb), wasActivated(false)
|
||||
{
|
||||
// INCL/ABLA light ion maximum energy is 3.0 GeV/nucleon
|
||||
emax_d = 2 * 3.0 * GeV;
|
||||
emax_t = 3 * 3.0 * GeV;
|
||||
emax_he3 = 3 * 3.0 * GeV;
|
||||
emax_alpha = 4 * 3.0 * GeV;
|
||||
emaxLHEP = 1.*TeV;
|
||||
emin = 0.*MeV;
|
||||
if(verbose > 1) G4cout << "### G4IonInclAblaPhysics" << G4endl;
|
||||
}
|
||||
|
||||
G4IonInclAblaPhysics::~G4IonInclAblaPhysics()
|
||||
{
|
||||
if(wasActivated) {
|
||||
delete fTripathi;
|
||||
delete fTripathiLight;
|
||||
delete fShen;
|
||||
delete fLEDModel;
|
||||
delete fLETModel;
|
||||
delete fLEAModel;
|
||||
G4int i;
|
||||
G4int n = p_list.size();
|
||||
for(i=0; i<n; i++) {delete p_list[i];}
|
||||
n = model_list.size();
|
||||
for(i=0; i<n; i++) {delete model_list[i];}
|
||||
}
|
||||
}
|
||||
|
||||
void G4IonInclAblaPhysics::ConstructProcess()
|
||||
{
|
||||
if(wasActivated) return;
|
||||
wasActivated = true;
|
||||
|
||||
G4InclAblaLightIonInterface* fInclAblaIons= new G4InclAblaLightIonInterface();
|
||||
model_list.push_back(fInclAblaIons);
|
||||
fShen = new G4IonsShenCrossSection;
|
||||
fTripathi = new G4TripathiCrossSection;
|
||||
fTripathiLight = new G4TripathiLightCrossSection;
|
||||
|
||||
fLEDModel = new G4LEDeuteronInelastic();
|
||||
fLETModel = new G4LETritonInelastic();
|
||||
fLEAModel = new G4LEAlphaInelastic();
|
||||
|
||||
AddProcess("dInelastic", G4Deuteron::Deuteron(), fInclAblaIons, fLEDModel, emax_d);
|
||||
AddProcess("tInelastic",G4Triton::Triton(), fInclAblaIons, fLETModel, emax_t);
|
||||
AddProcess("He3Inelastic",G4He3::He3(), fInclAblaIons, 0, emax_he3);
|
||||
AddProcess("alphaInelastic", G4Alpha::Alpha(), fInclAblaIons, fLEAModel, emax_alpha);
|
||||
// Support for light ions heavier than Alpha will be included in a future release of INCL/ABLA
|
||||
// AddProcess("ionInelastic",G4GenericIon::GenericIon(), fInclAblaIons, 0);
|
||||
}
|
||||
|
||||
void G4IonInclAblaPhysics::AddProcess(const G4String& name,
|
||||
G4ParticleDefinition* p,
|
||||
G4HadronicInteraction* hmodel,
|
||||
G4HadronicInteraction* lmodel,
|
||||
const G4double inclEnergyUpperLimit = 3.0 * GeV)
|
||||
{
|
||||
G4HadronInelasticProcess* hadi = new G4HadronInelasticProcess(name, p);
|
||||
p_list.push_back(hadi);
|
||||
G4ProcessManager* pManager = p->GetProcessManager();
|
||||
pManager->AddDiscreteProcess(hadi);
|
||||
hadi->AddDataSet(fShen);
|
||||
hadi->AddDataSet(fTripathi);
|
||||
hadi->AddDataSet(fTripathiLight);
|
||||
hmodel->SetMinEnergy(emin);
|
||||
hmodel->SetMaxEnergy(inclEnergyUpperLimit);
|
||||
hadi->RegisterMe(hmodel);
|
||||
if(lmodel) {
|
||||
lmodel->SetMinEnergy(inclEnergyUpperLimit - MeV);
|
||||
lmodel->SetMaxEnergy(emaxLHEP);
|
||||
hadi->RegisterMe(lmodel);
|
||||
}
|
||||
if(verbose > 1) {
|
||||
G4cout << "Register " << hadi->GetProcessName()
|
||||
<< " for " << p->GetParticleName()
|
||||
<< " INCL/ABLA for E(MeV)= " << emin << " - " << inclEnergyUpperLimit;
|
||||
if(lmodel) {
|
||||
G4cout << " LHEP for E(MeV)= " << inclEnergyUpperLimit-MeV << " - " << emaxLHEP;
|
||||
}
|
||||
G4cout << G4endl;
|
||||
}
|
||||
}
|
||||
|
||||
void G4IonInclAblaPhysics::ConstructParticle()
|
||||
{
|
||||
// Construct light ions
|
||||
G4IonConstructor pConstructor;
|
||||
pConstructor.ConstructParticle();
|
||||
}
|
||||
@@ -0,0 +1,168 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4IonQMDPhysics.cc,v 1.1 2009/11/27 17:25:15 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4IonQMDPhysics
|
||||
// Created from G4IonBinaryCascadePhysics
|
||||
//
|
||||
// Author: G.Folger
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
#include "G4IonQMDPhysics.hh"
|
||||
|
||||
#include "G4DeuteronInelasticProcess.hh"
|
||||
#include "G4TritonInelasticProcess.hh"
|
||||
#include "G4AlphaInelasticProcess.hh"
|
||||
#include "G4HadronInelasticProcess.hh"
|
||||
|
||||
#include "G4BinaryLightIonReaction.hh"
|
||||
#include "G4QMDReaction.hh"
|
||||
|
||||
#include "G4TripathiCrossSection.hh"
|
||||
#include "G4TripathiLightCrossSection.hh"
|
||||
#include "G4IonsShenCrossSection.hh"
|
||||
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
// Nuclei
|
||||
#include "G4IonConstructor.hh"
|
||||
|
||||
G4IonQMDPhysics::G4IonQMDPhysics(const G4String& name,
|
||||
G4int verb)
|
||||
: G4VPhysicsConstructor(name), verbose(verb), wasActivated(false)
|
||||
{
|
||||
eminBIC = 0.*MeV;
|
||||
eminQMD = 100.*MeV;
|
||||
emaxQMD = 10.*GeV;
|
||||
emaxLHEP = 1.*TeV;
|
||||
overlap = 10*MeV;
|
||||
if(verbose > 1) G4cout << "### G4IonQMDPhysics" << G4endl;
|
||||
}
|
||||
|
||||
G4IonQMDPhysics::~G4IonQMDPhysics()
|
||||
{
|
||||
if(wasActivated) {
|
||||
delete fTripathi;
|
||||
delete fTripathiLight;
|
||||
delete fShen;
|
||||
delete fLEDModel;
|
||||
delete fLETModel;
|
||||
delete fLEAModel;
|
||||
G4int i;
|
||||
G4int n = p_list.size();
|
||||
for(i=0; i<n; i++) {delete p_list[i];}
|
||||
n = model_list.size();
|
||||
for(i=0; i<n; i++) {delete model_list[i];}
|
||||
}
|
||||
}
|
||||
|
||||
void G4IonQMDPhysics::ConstructProcess()
|
||||
{
|
||||
if(wasActivated) return;
|
||||
wasActivated = true;
|
||||
|
||||
G4BinaryLightIonReaction* fBC= new G4BinaryLightIonReaction();
|
||||
model_list.push_back(fBC);
|
||||
G4QMDReaction* fQMD= new G4QMDReaction();
|
||||
model_list.push_back(fQMD);
|
||||
|
||||
fShen = new G4IonsShenCrossSection;
|
||||
fTripathi = new G4TripathiCrossSection;
|
||||
fTripathiLight = new G4TripathiLightCrossSection;
|
||||
|
||||
fLEDModel = new G4LEDeuteronInelastic();
|
||||
fLETModel = new G4LETritonInelastic();
|
||||
fLEAModel = new G4LEAlphaInelastic();
|
||||
|
||||
AddProcess("dInelastic", G4Deuteron::Deuteron(), fBC,0, fLEDModel);
|
||||
AddProcess("tInelastic",G4Triton::Triton(), fBC,0, fLETModel);
|
||||
AddProcess("He3Inelastic",G4He3::He3(), fBC,0, 0);
|
||||
AddProcess("alphaInelastic", G4Alpha::Alpha(), fBC,0, fLEAModel);
|
||||
AddProcess("ionInelastic",G4GenericIon::GenericIon(), fBC, fQMD, 0);
|
||||
|
||||
}
|
||||
|
||||
void G4IonQMDPhysics::AddProcess(const G4String& name,
|
||||
G4ParticleDefinition* p,
|
||||
G4BinaryLightIonReaction* BIC,
|
||||
G4QMDReaction* QMD,
|
||||
G4HadronicInteraction* LHEP)
|
||||
{
|
||||
G4HadronInelasticProcess* hadi = new G4HadronInelasticProcess(name, p);
|
||||
p_list.push_back(hadi);
|
||||
G4ProcessManager* pManager = p->GetProcessManager();
|
||||
pManager->AddDiscreteProcess(hadi);
|
||||
|
||||
hadi->AddDataSet(fShen);
|
||||
hadi->AddDataSet(fTripathi);
|
||||
hadi->AddDataSet(fTripathiLight);
|
||||
|
||||
BIC->SetMinEnergy(eminBIC);
|
||||
BIC->SetMaxEnergy(emaxQMD); //reset when QMD is present
|
||||
hadi->RegisterMe(BIC);
|
||||
|
||||
if(QMD) {
|
||||
QMD->SetMinEnergy(eminQMD);
|
||||
BIC->SetMaxEnergy(eminQMD-overlap);
|
||||
QMD->SetMaxEnergy(emaxQMD);
|
||||
hadi->RegisterMe(QMD);
|
||||
}
|
||||
|
||||
if(LHEP) {
|
||||
LHEP->SetMinEnergy(emaxQMD - overlap);
|
||||
LHEP->SetMaxEnergy(emaxLHEP);
|
||||
hadi->RegisterMe(LHEP);
|
||||
}
|
||||
if(verbose > 1) {
|
||||
G4cout << "Register " << hadi->GetProcessName()
|
||||
<< " for " << p->GetParticleName() << G4endl
|
||||
<< " Binary Cascade for E(MeV)= " << eminBIC << " - "
|
||||
<< (QMD==0 ? emaxQMD : (eminQMD-overlap)) ;
|
||||
if(QMD) {
|
||||
G4cout << G4endl <<" QMD for E(MeV)= " << eminQMD << " - " << emaxQMD;
|
||||
}
|
||||
if(LHEP) {
|
||||
G4cout << G4endl<< " LHEP for E(MeV)= " << emaxQMD-overlap << " - " << emaxLHEP;
|
||||
}
|
||||
G4cout << G4endl;
|
||||
}
|
||||
}
|
||||
|
||||
void G4IonQMDPhysics::ConstructParticle()
|
||||
{
|
||||
// Construct light ions
|
||||
G4IonConstructor pConstructor;
|
||||
pConstructor.ConstructParticle();
|
||||
}
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
@@ -54,130 +54,144 @@ void G4MiscLHEPBuilder::Build()
|
||||
wasActivated = true;
|
||||
|
||||
// anti-Proton
|
||||
theAntiProtonInelastic = new G4AntiProtonInelasticProcess();
|
||||
aProcMan = G4AntiProton::AntiProton()->GetProcessManager();
|
||||
theLEAntiProtonModel = new G4LEAntiProtonInelastic();
|
||||
theHEAntiProtonModel = new G4HEAntiProtonInelastic();
|
||||
theHEAntiProtonModel->SetMaxEnergy(100*TeV);
|
||||
theAntiProtonInelastic.RegisterMe(theLEAntiProtonModel);
|
||||
theAntiProtonInelastic.RegisterMe(theHEAntiProtonModel);
|
||||
aProcMan->AddDiscreteProcess(&theAntiProtonInelastic);
|
||||
theAntiProtonInelastic->RegisterMe(theLEAntiProtonModel);
|
||||
theAntiProtonInelastic->RegisterMe(theHEAntiProtonModel);
|
||||
aProcMan->AddDiscreteProcess(theAntiProtonInelastic);
|
||||
|
||||
// AntiNeutron
|
||||
theAntiNeutronInelastic = new G4AntiNeutronInelasticProcess();
|
||||
aProcMan = G4AntiNeutron::AntiNeutron()->GetProcessManager();
|
||||
theLEAntiNeutronModel = new G4LEAntiNeutronInelastic();
|
||||
theHEAntiNeutronModel = new G4HEAntiNeutronInelastic();
|
||||
theHEAntiNeutronModel->SetMaxEnergy(100*TeV);
|
||||
theAntiNeutronInelastic.RegisterMe(theLEAntiNeutronModel);
|
||||
theAntiNeutronInelastic.RegisterMe(theHEAntiNeutronModel);
|
||||
aProcMan->AddDiscreteProcess(&theAntiNeutronInelastic);
|
||||
theAntiNeutronInelastic->RegisterMe(theLEAntiNeutronModel);
|
||||
theAntiNeutronInelastic->RegisterMe(theHEAntiNeutronModel);
|
||||
aProcMan->AddDiscreteProcess(theAntiNeutronInelastic);
|
||||
|
||||
// Lambda
|
||||
theLambdaInelastic = new G4LambdaInelasticProcess();
|
||||
aProcMan = G4Lambda::Lambda()->GetProcessManager();
|
||||
theLELambdaModel = new G4LELambdaInelastic();
|
||||
theHELambdaModel = new G4HELambdaInelastic();
|
||||
theHELambdaModel->SetMaxEnergy(100*TeV);
|
||||
theLambdaInelastic.RegisterMe(theLELambdaModel);
|
||||
theLambdaInelastic.RegisterMe(theHELambdaModel);
|
||||
aProcMan->AddDiscreteProcess(&theLambdaInelastic);
|
||||
theLambdaInelastic->RegisterMe(theLELambdaModel);
|
||||
theLambdaInelastic->RegisterMe(theHELambdaModel);
|
||||
aProcMan->AddDiscreteProcess(theLambdaInelastic);
|
||||
|
||||
// AntiLambda
|
||||
theAntiLambdaInelastic = new G4AntiLambdaInelasticProcess();
|
||||
aProcMan = G4AntiLambda::AntiLambda()->GetProcessManager();
|
||||
theLEAntiLambdaModel = new G4LEAntiLambdaInelastic();
|
||||
theHEAntiLambdaModel = new G4HEAntiLambdaInelastic();
|
||||
theHEAntiLambdaModel->SetMaxEnergy(100*TeV);
|
||||
theAntiLambdaInelastic.RegisterMe(theLEAntiLambdaModel);
|
||||
theAntiLambdaInelastic.RegisterMe(theHEAntiLambdaModel);
|
||||
aProcMan->AddDiscreteProcess(&theAntiLambdaInelastic);
|
||||
theAntiLambdaInelastic->RegisterMe(theLEAntiLambdaModel);
|
||||
theAntiLambdaInelastic->RegisterMe(theHEAntiLambdaModel);
|
||||
aProcMan->AddDiscreteProcess(theAntiLambdaInelastic);
|
||||
|
||||
// SigmaMinus
|
||||
theSigmaMinusInelastic = new G4SigmaMinusInelasticProcess();
|
||||
aProcMan = G4SigmaMinus::SigmaMinus()->GetProcessManager();
|
||||
theLESigmaMinusModel = new G4LESigmaMinusInelastic();
|
||||
theHESigmaMinusModel = new G4HESigmaMinusInelastic();
|
||||
theHESigmaMinusModel->SetMaxEnergy(100*TeV);
|
||||
theSigmaMinusInelastic.RegisterMe(theLESigmaMinusModel);
|
||||
theSigmaMinusInelastic.RegisterMe(theHESigmaMinusModel);
|
||||
aProcMan->AddDiscreteProcess(&theSigmaMinusInelastic);
|
||||
theSigmaMinusInelastic->RegisterMe(theLESigmaMinusModel);
|
||||
theSigmaMinusInelastic->RegisterMe(theHESigmaMinusModel);
|
||||
aProcMan->AddDiscreteProcess(theSigmaMinusInelastic);
|
||||
|
||||
// anti-SigmaMinus
|
||||
theAntiSigmaMinusInelastic = new G4AntiSigmaMinusInelasticProcess();
|
||||
aProcMan = G4AntiSigmaMinus::AntiSigmaMinus()->GetProcessManager();
|
||||
theLEAntiSigmaMinusModel = new G4LEAntiSigmaMinusInelastic();
|
||||
theHEAntiSigmaMinusModel = new G4HEAntiSigmaMinusInelastic();
|
||||
theHEAntiSigmaMinusModel->SetMaxEnergy(100*TeV);
|
||||
theAntiSigmaMinusInelastic.RegisterMe(theLEAntiSigmaMinusModel);
|
||||
theAntiSigmaMinusInelastic.RegisterMe(theHEAntiSigmaMinusModel);
|
||||
aProcMan->AddDiscreteProcess(&theAntiSigmaMinusInelastic);
|
||||
theAntiSigmaMinusInelastic->RegisterMe(theLEAntiSigmaMinusModel);
|
||||
theAntiSigmaMinusInelastic->RegisterMe(theHEAntiSigmaMinusModel);
|
||||
aProcMan->AddDiscreteProcess(theAntiSigmaMinusInelastic);
|
||||
|
||||
// SigmaPlus
|
||||
theSigmaPlusInelastic = new G4SigmaPlusInelasticProcess();
|
||||
aProcMan = G4SigmaPlus::SigmaPlus()->GetProcessManager();
|
||||
theLESigmaPlusModel = new G4LESigmaPlusInelastic();
|
||||
theHESigmaPlusModel = new G4HESigmaPlusInelastic();
|
||||
theHESigmaPlusModel->SetMaxEnergy(100*TeV);
|
||||
theSigmaPlusInelastic.RegisterMe(theLESigmaPlusModel);
|
||||
theSigmaPlusInelastic.RegisterMe(theHESigmaPlusModel);
|
||||
aProcMan->AddDiscreteProcess(&theSigmaPlusInelastic);
|
||||
theSigmaPlusInelastic->RegisterMe(theLESigmaPlusModel);
|
||||
theSigmaPlusInelastic->RegisterMe(theHESigmaPlusModel);
|
||||
aProcMan->AddDiscreteProcess(theSigmaPlusInelastic);
|
||||
|
||||
// anti-SigmaPlus
|
||||
theAntiSigmaPlusInelastic = new G4AntiSigmaPlusInelasticProcess();
|
||||
aProcMan = G4AntiSigmaPlus::AntiSigmaPlus()->GetProcessManager();
|
||||
theLEAntiSigmaPlusModel = new G4LEAntiSigmaPlusInelastic();
|
||||
theHEAntiSigmaPlusModel = new G4HEAntiSigmaPlusInelastic();
|
||||
theHEAntiSigmaPlusModel->SetMaxEnergy(100*TeV);
|
||||
theAntiSigmaPlusInelastic.RegisterMe(theLEAntiSigmaPlusModel);
|
||||
theAntiSigmaPlusInelastic.RegisterMe(theHEAntiSigmaPlusModel);
|
||||
aProcMan->AddDiscreteProcess(&theAntiSigmaPlusInelastic);
|
||||
theAntiSigmaPlusInelastic->RegisterMe(theLEAntiSigmaPlusModel);
|
||||
theAntiSigmaPlusInelastic->RegisterMe(theHEAntiSigmaPlusModel);
|
||||
aProcMan->AddDiscreteProcess(theAntiSigmaPlusInelastic);
|
||||
|
||||
// XiMinus
|
||||
theXiMinusInelastic = new G4XiMinusInelasticProcess();
|
||||
aProcMan = G4XiMinus::XiMinus()->GetProcessManager();
|
||||
theLEXiMinusModel = new G4LEXiMinusInelastic();
|
||||
theHEXiMinusModel = new G4HEXiMinusInelastic();
|
||||
theHEXiMinusModel->SetMaxEnergy(100*TeV);
|
||||
theXiMinusInelastic.RegisterMe(theLEXiMinusModel);
|
||||
theXiMinusInelastic.RegisterMe(theHEXiMinusModel);
|
||||
aProcMan->AddDiscreteProcess(&theXiMinusInelastic);
|
||||
theXiMinusInelastic->RegisterMe(theLEXiMinusModel);
|
||||
theXiMinusInelastic->RegisterMe(theHEXiMinusModel);
|
||||
aProcMan->AddDiscreteProcess(theXiMinusInelastic);
|
||||
|
||||
// anti-XiMinus
|
||||
theAntiXiMinusInelastic = new G4AntiXiMinusInelasticProcess();
|
||||
aProcMan = G4AntiXiMinus::AntiXiMinus()->GetProcessManager();
|
||||
theLEAntiXiMinusModel = new G4LEAntiXiMinusInelastic();
|
||||
theHEAntiXiMinusModel = new G4HEAntiXiMinusInelastic();
|
||||
theHEAntiXiMinusModel->SetMaxEnergy(100*TeV);
|
||||
theAntiXiMinusInelastic.RegisterMe(theLEAntiXiMinusModel);
|
||||
theAntiXiMinusInelastic.RegisterMe(theHEAntiXiMinusModel);
|
||||
aProcMan->AddDiscreteProcess(&theAntiXiMinusInelastic);
|
||||
theAntiXiMinusInelastic->RegisterMe(theLEAntiXiMinusModel);
|
||||
theAntiXiMinusInelastic->RegisterMe(theHEAntiXiMinusModel);
|
||||
aProcMan->AddDiscreteProcess(theAntiXiMinusInelastic);
|
||||
|
||||
// XiZero
|
||||
theXiZeroInelastic = new G4XiZeroInelasticProcess();
|
||||
aProcMan = G4XiZero::XiZero()->GetProcessManager();
|
||||
theLEXiZeroModel = new G4LEXiZeroInelastic();
|
||||
theHEXiZeroModel = new G4HEXiZeroInelastic();
|
||||
theHEXiZeroModel->SetMaxEnergy(100*TeV);
|
||||
theXiZeroInelastic.RegisterMe(theLEXiZeroModel);
|
||||
theXiZeroInelastic.RegisterMe(theHEXiZeroModel);
|
||||
aProcMan->AddDiscreteProcess(&theXiZeroInelastic);
|
||||
theXiZeroInelastic->RegisterMe(theLEXiZeroModel);
|
||||
theXiZeroInelastic->RegisterMe(theHEXiZeroModel);
|
||||
aProcMan->AddDiscreteProcess(theXiZeroInelastic);
|
||||
|
||||
// anti-XiZero
|
||||
theAntiXiZeroInelastic = new G4AntiXiZeroInelasticProcess();
|
||||
aProcMan = G4AntiXiZero::AntiXiZero()->GetProcessManager();
|
||||
theLEAntiXiZeroModel = new G4LEAntiXiZeroInelastic();
|
||||
theHEAntiXiZeroModel = new G4HEAntiXiZeroInelastic();
|
||||
theHEAntiXiZeroModel->SetMaxEnergy(100*TeV);
|
||||
theAntiXiZeroInelastic.RegisterMe(theLEAntiXiZeroModel);
|
||||
theAntiXiZeroInelastic.RegisterMe(theHEAntiXiZeroModel);
|
||||
aProcMan->AddDiscreteProcess(&theAntiXiZeroInelastic);
|
||||
theAntiXiZeroInelastic->RegisterMe(theLEAntiXiZeroModel);
|
||||
theAntiXiZeroInelastic->RegisterMe(theHEAntiXiZeroModel);
|
||||
aProcMan->AddDiscreteProcess(theAntiXiZeroInelastic);
|
||||
|
||||
// OmegaMinus
|
||||
theOmegaMinusInelastic = new G4OmegaMinusInelasticProcess();
|
||||
aProcMan = G4OmegaMinus::OmegaMinus()->GetProcessManager();
|
||||
theLEOmegaMinusModel = new G4LEOmegaMinusInelastic();
|
||||
theHEOmegaMinusModel = new G4HEOmegaMinusInelastic();
|
||||
theHEOmegaMinusModel->SetMaxEnergy(100*TeV);
|
||||
theOmegaMinusInelastic.RegisterMe(theLEOmegaMinusModel);
|
||||
theOmegaMinusInelastic.RegisterMe(theHEOmegaMinusModel);
|
||||
aProcMan->AddDiscreteProcess(&theOmegaMinusInelastic);
|
||||
theOmegaMinusInelastic->RegisterMe(theLEOmegaMinusModel);
|
||||
theOmegaMinusInelastic->RegisterMe(theHEOmegaMinusModel);
|
||||
aProcMan->AddDiscreteProcess(theOmegaMinusInelastic);
|
||||
|
||||
// anti-OmegaMinus
|
||||
theAntiOmegaMinusInelastic = new G4AntiOmegaMinusInelasticProcess();
|
||||
aProcMan = G4AntiOmegaMinus::AntiOmegaMinus()->GetProcessManager();
|
||||
theLEAntiOmegaMinusModel = new G4LEAntiOmegaMinusInelastic();
|
||||
theHEAntiOmegaMinusModel = new G4HEAntiOmegaMinusInelastic();
|
||||
theHEAntiOmegaMinusModel->SetMaxEnergy(100*TeV);
|
||||
theAntiOmegaMinusInelastic.RegisterMe(theLEAntiOmegaMinusModel);
|
||||
theAntiOmegaMinusInelastic.RegisterMe(theHEAntiOmegaMinusModel);
|
||||
aProcMan->AddDiscreteProcess(&theAntiOmegaMinusInelastic);
|
||||
theAntiOmegaMinusInelastic->RegisterMe(theLEAntiOmegaMinusModel);
|
||||
theAntiOmegaMinusInelastic->RegisterMe(theHEAntiOmegaMinusModel);
|
||||
aProcMan->AddDiscreteProcess(theAntiOmegaMinusInelastic);
|
||||
}
|
||||
|
||||
// 2002 by J.P. Wellisch
|
||||
|
||||
@@ -0,0 +1,101 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4MiscQGSCBuilder
|
||||
//
|
||||
// Author: 2009 M. Kosov (on the basis of the G4MiscLHEPBuilder)
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
#include "G4MiscQGSCBuilder.hh"
|
||||
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
G4MiscQGSCBuilder::G4MiscQGSCBuilder(G4int ver): verbose(ver), wasActivated(false)
|
||||
{
|
||||
// pointer to the particle table
|
||||
theParticleTable = G4ParticleTable::GetParticleTable();
|
||||
theParticleIterator = theParticleTable->GetIterator();
|
||||
}
|
||||
|
||||
G4MiscQGSCBuilder::~G4MiscQGSCBuilder() {}
|
||||
|
||||
void G4MiscQGSCBuilder::Build()
|
||||
{
|
||||
wasActivated = true;
|
||||
|
||||
//QGSC model definition
|
||||
theModel = new G4TheoFSGenerator("QGSC");
|
||||
|
||||
theQGSCModel = new G4QGSModel< G4QGSParticipants >;
|
||||
theQGSCDecay = new G4ExcitedStringDecay(new G4QGSMFragmentation);
|
||||
theQGSCModel->SetFragmentationModel(theQGSCDecay);
|
||||
theModel->SetHighEnergyGenerator(theQGSCModel);
|
||||
|
||||
theCascade = new G4StringChipsParticleLevelInterface;
|
||||
theModel->SetTransport(theCascade);
|
||||
|
||||
theQuasiElastic = new G4QuasiElasticChannel;
|
||||
theModel->SetQuasiElasticChannel(theQuasiElastic);
|
||||
|
||||
theModel->SetMinEnergy(0.);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
|
||||
|
||||
theParticleIterator->reset();
|
||||
while( (*theParticleIterator)() )
|
||||
{
|
||||
G4ParticleDefinition* particle = theParticleIterator->value();
|
||||
G4String pname = particle->GetParticleName();
|
||||
if(pname == "kaon-" || pname == "kaon+" || pname == "kaon0S" || pname == "kaon0L" ||
|
||||
pname == "pi-" || pname == "pi+" || pname == "neutron" || pname == "proton" )
|
||||
{
|
||||
if(verbose>1)G4cout<<"** G4MiscQGSCBuilder: "<<pname<<" already defined"<<G4endl;
|
||||
}
|
||||
else if(
|
||||
pname == "anti_proton" || pname == "anti_neutron" || pname == "anti_lambda" ||
|
||||
pname == "anti_sigma+" || pname == "anti_sigma0" || pname == "anti_sigma-" ||
|
||||
pname == "anti_xi0" || pname == "anti_xi-" || pname == "anti_omega-" ||
|
||||
pname == "lambda" || pname == "sigma+" || pname == "sigma0" ||
|
||||
pname == "sigma-" || pname == "xi0" || pname == "xi-" || pname == "omega-")
|
||||
{
|
||||
if(verbose>1)G4cout<< "__ G4MiscQGSCBuilder: "<< pname <<" is defined here"<<G4endl;
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
G4HadronInelasticProcess* hp = new G4HadronInelasticProcess("hInelastic", particle);
|
||||
pmanager->AddDiscreteProcess(hp);
|
||||
hp->RegisterMe(theModel);
|
||||
if(verbose>1)
|
||||
G4cout<<"^^ G4MiscQGSCBuilder: "<<hp->GetProcessName()<<" added for "<<pname<<G4endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 2009 by M. Kosov
|
||||
@@ -0,0 +1,264 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4OpticalPhysics
|
||||
//
|
||||
// Author: P.Gumplinger 30.09.2009
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
#include "G4OpticalPhysics.hh"
|
||||
|
||||
#include "G4LossTableManager.hh"
|
||||
#include "G4EmSaturation.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4OpticalPhysics::G4OpticalPhysics(G4int verbose, const G4String& name)
|
||||
: G4VPhysicsConstructor(name),
|
||||
wasActivated(false),
|
||||
|
||||
fScintillationProcess(0),
|
||||
fCerenkovProcess(0),
|
||||
fOpWLSProcess(0),
|
||||
fOpAbsorptionProcess(0),
|
||||
fOpRayleighScatteringProcess(0),
|
||||
fOpBoundaryProcess(0),
|
||||
fMaxNumPhotons(100),
|
||||
fMaxBetaChange(10.0),
|
||||
fYieldFactor(1.),
|
||||
fExcitationRatio(0.0),
|
||||
fSurfaceModel(unified),
|
||||
fProfile("delta"),
|
||||
fTrackSecondariesFirst(true)
|
||||
{
|
||||
verboseLevel = verbose;
|
||||
fMessenger = new G4OpticalPhysicsMessenger(this);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4OpticalPhysics::~G4OpticalPhysics()
|
||||
{
|
||||
delete fMessenger;
|
||||
|
||||
if (wasActivated) {
|
||||
|
||||
delete fScintillationProcess;
|
||||
delete fCerenkovProcess;
|
||||
delete fOpWLSProcess;
|
||||
|
||||
delete fOpAbsorptionProcess;
|
||||
delete fOpRayleighScatteringProcess;
|
||||
delete fOpBoundaryProcess;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "G4OpticalPhoton.hh"
|
||||
|
||||
void G4OpticalPhysics::ConstructParticle()
|
||||
{
|
||||
/// Instantiate particles.
|
||||
|
||||
// optical photon
|
||||
G4OpticalPhoton::OpticalPhotonDefinition();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
void G4OpticalPhysics::ConstructProcess()
|
||||
{
|
||||
// Construct optical processes.
|
||||
|
||||
if (wasActivated) return;
|
||||
|
||||
if(verboseLevel>0)
|
||||
G4cout <<"G4OpticalPhysics:: Add Optical Physics Processes"<< G4endl;
|
||||
|
||||
// Add Optical Processes
|
||||
|
||||
fOpAbsorptionProcess = new G4OpAbsorption();
|
||||
fOpRayleighScatteringProcess = new G4OpRayleigh();
|
||||
|
||||
fOpBoundaryProcess = new G4OpBoundaryProcess();
|
||||
fOpBoundaryProcess->SetModel(fSurfaceModel);
|
||||
|
||||
fOpWLSProcess = new G4OpWLS();
|
||||
fOpWLSProcess->UseTimeProfile(fProfile);
|
||||
|
||||
G4ProcessManager * pManager = 0;
|
||||
pManager = G4OpticalPhoton::OpticalPhoton()->GetProcessManager();
|
||||
|
||||
if (!pManager) {
|
||||
std::ostringstream o;
|
||||
o << "Optical Photon without a Process Manager";
|
||||
G4Exception("G4OpticalPhysics::ConstructProcess()","",
|
||||
FatalException,o.str().c_str());
|
||||
}
|
||||
|
||||
pManager->AddDiscreteProcess(fOpAbsorptionProcess);
|
||||
pManager->AddDiscreteProcess(fOpRayleighScatteringProcess);
|
||||
pManager->AddDiscreteProcess(fOpBoundaryProcess);
|
||||
pManager->AddDiscreteProcess(fOpWLSProcess);
|
||||
|
||||
fScintillationProcess = new G4Scintillation();
|
||||
fScintillationProcess->SetScintillationYieldFactor(fYieldFactor);
|
||||
fScintillationProcess->SetScintillationExcitationRatio(fExcitationRatio);
|
||||
fScintillationProcess->SetTrackSecondariesFirst(fTrackSecondariesFirst);
|
||||
|
||||
// Use Birks Correction in the Scintillation process
|
||||
|
||||
G4EmSaturation* emSaturation = G4LossTableManager::Instance()->EmSaturation();
|
||||
fScintillationProcess->AddSaturation(emSaturation);
|
||||
|
||||
fCerenkovProcess = new G4Cerenkov();
|
||||
fCerenkovProcess->SetMaxNumPhotonsPerStep(fMaxNumPhotons);
|
||||
fCerenkovProcess->SetMaxBetaChangePerStep(fMaxBetaChange);
|
||||
fCerenkovProcess->SetTrackSecondariesFirst(fTrackSecondariesFirst);
|
||||
|
||||
theParticleIterator->reset();
|
||||
|
||||
while( (*theParticleIterator)() ){
|
||||
|
||||
G4ParticleDefinition* particle = theParticleIterator->value();
|
||||
G4String particleName = particle->GetParticleName();
|
||||
|
||||
pManager = particle->GetProcessManager();
|
||||
if (!pManager) {
|
||||
std::ostringstream o;
|
||||
o << "Particle " << particleName << "without a Process Manager";
|
||||
G4Exception("G4OpticalPhysics::ConstructProcess()","",
|
||||
FatalException,o.str().c_str());
|
||||
}
|
||||
|
||||
if(fCerenkovProcess->IsApplicable(*particle)){
|
||||
pManager->AddProcess(fCerenkovProcess);
|
||||
pManager->SetProcessOrdering(fCerenkovProcess,idxPostStep);
|
||||
}
|
||||
if(fScintillationProcess->IsApplicable(*particle)){
|
||||
pManager->AddProcess(fScintillationProcess);
|
||||
pManager->SetProcessOrderingToLast(fScintillationProcess,idxAtRest);
|
||||
pManager->SetProcessOrderingToLast(fScintillationProcess,idxPostStep);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
wasActivated = true;
|
||||
|
||||
}
|
||||
|
||||
void G4OpticalPhysics::SetScintillationYieldFactor(G4double yieldFactor)
|
||||
{
|
||||
/// Set the scintillation yield factor
|
||||
|
||||
fYieldFactor = yieldFactor;
|
||||
|
||||
if(fScintillationProcess)
|
||||
fScintillationProcess->SetScintillationYieldFactor(yieldFactor);
|
||||
}
|
||||
|
||||
void G4OpticalPhysics::SetScintillationExcitationRatio(G4double excitationRatio)
|
||||
{
|
||||
/// Set the scintillation excitation ratio
|
||||
|
||||
fExcitationRatio = excitationRatio;
|
||||
|
||||
if(fScintillationProcess)
|
||||
fScintillationProcess->SetScintillationExcitationRatio(excitationRatio);
|
||||
}
|
||||
|
||||
void G4OpticalPhysics::SetMaxNumPhotonsPerStep(G4int maxNumPhotons)
|
||||
{
|
||||
/// Limit step to the specified maximum number of Cherenkov photons
|
||||
|
||||
fMaxNumPhotons = maxNumPhotons;
|
||||
|
||||
if(fCerenkovProcess)
|
||||
fCerenkovProcess->SetMaxNumPhotonsPerStep(maxNumPhotons);
|
||||
}
|
||||
|
||||
void G4OpticalPhysics::SetMaxBetaChangePerStep(G4double maxBetaChange)
|
||||
{
|
||||
/// Limit step to the specified maximum change of beta of the parent particle
|
||||
|
||||
fMaxBetaChange = maxBetaChange;
|
||||
|
||||
if(fCerenkovProcess)
|
||||
fCerenkovProcess->SetMaxBetaChangePerStep(maxBetaChange);
|
||||
}
|
||||
|
||||
void G4OpticalPhysics::SetOpticalSurfaceModel(G4OpticalSurfaceModel model)
|
||||
{
|
||||
/// Set optical surface model (glisur or unified)
|
||||
|
||||
fSurfaceModel = model;
|
||||
|
||||
if(fOpBoundaryProcess)
|
||||
fOpBoundaryProcess->SetModel(model);
|
||||
}
|
||||
|
||||
void G4OpticalPhysics::SetWLSTimeProfile(G4String profile)
|
||||
{
|
||||
/// Set the WLS time profile (delta or exponential)
|
||||
|
||||
fProfile = profile;
|
||||
|
||||
if(fOpWLSProcess)
|
||||
fOpWLSProcess->UseTimeProfile(fProfile);
|
||||
}
|
||||
|
||||
void G4OpticalPhysics::AddScintillationSaturation(G4EmSaturation* saturation)
|
||||
{
|
||||
/// Adds Birks Saturation to the G4Scintillation Process
|
||||
|
||||
if(fScintillationProcess)
|
||||
fScintillationProcess->AddSaturation(saturation);
|
||||
}
|
||||
|
||||
void G4OpticalPhysics::SetTrackSecondariesFirst(G4bool trackSecondariesFirst)
|
||||
{
|
||||
fTrackSecondariesFirst = trackSecondariesFirst;
|
||||
|
||||
if ( fCerenkovProcess )
|
||||
fCerenkovProcess->SetTrackSecondariesFirst(trackSecondariesFirst);
|
||||
|
||||
if ( fScintillationProcess )
|
||||
fScintillationProcess->SetTrackSecondariesFirst(trackSecondariesFirst);
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -0,0 +1,244 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#include "G4OpticalPhysicsMessenger.hh"
|
||||
#include "G4OpticalPhysics.hh"
|
||||
|
||||
#include "G4UIcommand.hh"
|
||||
#include "G4UIdirectory.hh"
|
||||
|
||||
#include "G4UIcommand.hh"
|
||||
#include "G4UIdirectory.hh"
|
||||
#include "G4UIcmdWithABool.hh"
|
||||
#include "G4UIcmdWithAString.hh"
|
||||
#include "G4UIcmdWithADouble.hh"
|
||||
#include "G4UIcmdWithAnInteger.hh"
|
||||
#include "G4UIcmdWithADoubleAndUnit.hh"
|
||||
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessVector.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
|
||||
//_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
||||
G4OpticalPhysicsMessenger::G4OpticalPhysicsMessenger(
|
||||
G4OpticalPhysics* opticalPhysics)
|
||||
: G4UImessenger(),
|
||||
fOpticalPhysics(opticalPhysics),
|
||||
fSelectedProcess(0),
|
||||
fSelectOpProcessCmd(0),
|
||||
fSetOpProcessActivationCmd(0),
|
||||
fSetOpProcessVerboseCmd(0),
|
||||
fSetCerenkovMaxPhotonsCmd(0),
|
||||
fSetCerenkovMaxBetaChangeCmd(0),
|
||||
fSetScintillationYieldFactorCmd(0),
|
||||
fSetOpticalSurfaceModelCmd(0),
|
||||
fSetWLSTimeProfileCmd(0),
|
||||
fSetTrackSecondariesFirstCmd(0)
|
||||
{
|
||||
/// Standard constructor
|
||||
|
||||
fDir = new G4UIdirectory("/optics_engine/");
|
||||
fDir->SetGuidance("Commands related to the optical physics simulation engine.");
|
||||
|
||||
fSelectOpProcessCmd
|
||||
= new G4UIcmdWithAString("/optics_engine/selectOpProcess", this);
|
||||
fSelectOpProcessCmd
|
||||
->SetGuidance("Select optical process for applying verbose/activation/trackfirst commands");
|
||||
fSelectOpProcessCmd->SetParameterName("OpProcess", false);
|
||||
fSelectOpProcessCmd->AvailableForStates(G4State_Idle,G4State_GeomClosed,G4State_EventProc);
|
||||
|
||||
fSetOpProcessActivationCmd
|
||||
= new G4UIcmdWithABool("/optics_engine/setOpProcessActivation", this);
|
||||
fSetOpProcessActivationCmd->SetGuidance("Activate/Inactivate selected optical process");
|
||||
fSetOpProcessActivationCmd->SetParameterName("OpProcessActivation", false);
|
||||
fSetOpProcessActivationCmd->AvailableForStates(G4State_Idle,G4State_GeomClosed,G4State_EventProc);
|
||||
|
||||
fSetOpProcessVerboseCmd
|
||||
= new G4UIcmdWithAnInteger("/optics_engine/setOpProcessVerbose", this);
|
||||
fSetOpProcessVerboseCmd->SetGuidance("Set verbosity level for selected optical process");
|
||||
fSetOpProcessVerboseCmd->SetParameterName("OpProcessVerbose", false);
|
||||
fSetOpProcessVerboseCmd->SetRange("OpProcessVerbose>=0");
|
||||
fSetOpProcessVerboseCmd->AvailableForStates(G4State_Idle,G4State_GeomClosed,G4State_EventProc);
|
||||
|
||||
fSetCerenkovMaxPhotonsCmd
|
||||
= new G4UIcmdWithAnInteger("/optics_engine/setCerenkovMaxPhotons", this);
|
||||
fSetCerenkovMaxPhotonsCmd->SetGuidance("Set maximum number of photons per step");
|
||||
fSetCerenkovMaxPhotonsCmd->SetParameterName("CerenkovMaxPhotons", false);
|
||||
fSetCerenkovMaxPhotonsCmd->SetRange("CerenkovMaxPhotons>=0");
|
||||
fSetCerenkovMaxPhotonsCmd->AvailableForStates(G4State_Idle,G4State_GeomClosed,G4State_EventProc);
|
||||
|
||||
fSetCerenkovMaxBetaChangeCmd
|
||||
= new G4UIcmdWithADouble("/optics_engine/setCerenkovMaxBetaChange", this);
|
||||
fSetCerenkovMaxBetaChangeCmd
|
||||
->SetGuidance("Set maximum change of beta of parent particle per step");
|
||||
fSetCerenkovMaxBetaChangeCmd->SetParameterName("CerenkovMaxBetaChange", false);
|
||||
fSetCerenkovMaxBetaChangeCmd->SetRange("CerenkovMaxBetaChange>=0");
|
||||
fSetCerenkovMaxBetaChangeCmd->AvailableForStates(G4State_Idle,G4State_GeomClosed,G4State_EventProc);
|
||||
|
||||
fSetScintillationYieldFactorCmd
|
||||
= new G4UIcmdWithADouble("/optics_engine/setScintillationYieldFactor", this);
|
||||
fSetScintillationYieldFactorCmd->SetGuidance("Set scintillation yield factor");
|
||||
fSetScintillationYieldFactorCmd->SetParameterName("ScintillationYieldFactor", false);
|
||||
fSetScintillationYieldFactorCmd->SetRange("ScintillationYieldFactor>=0");
|
||||
fSetScintillationYieldFactorCmd->AvailableForStates(G4State_Idle,G4State_GeomClosed,G4State_EventProc);
|
||||
|
||||
fSetOpticalSurfaceModelCmd
|
||||
= new G4UIcmdWithAString("/optics_engine/setOpticalSurfaceModel", this);
|
||||
fSetOpticalSurfaceModelCmd
|
||||
->SetGuidance("Set optical surface model (glisur or unified)");
|
||||
fSetOpticalSurfaceModelCmd->SetParameterName("OpticalSurfaceModel", false);
|
||||
fSetOpticalSurfaceModelCmd->SetCandidates("glisur unified");
|
||||
fSetOpticalSurfaceModelCmd->AvailableForStates(G4State_Idle,G4State_GeomClosed,G4State_EventProc);
|
||||
|
||||
fSetWLSTimeProfileCmd
|
||||
= new G4UIcmdWithAString("/optics_engine/setWLSTimeProfile", this);
|
||||
fSetWLSTimeProfileCmd
|
||||
->SetGuidance("Set the WLS time profile (delta or exponential)");
|
||||
fSetWLSTimeProfileCmd->SetParameterName("WLSTimeProfile", false);
|
||||
fSetWLSTimeProfileCmd->SetCandidates("delta exponential");
|
||||
fSetWLSTimeProfileCmd->AvailableForStates(G4State_Idle,G4State_GeomClosed,G4State_EventProc);
|
||||
|
||||
fSetTrackSecondariesFirstCmd
|
||||
= new G4UIcmdWithABool("/optics_engine/setTrackSecondariesFirst", this);
|
||||
fSetTrackSecondariesFirstCmd
|
||||
->SetGuidance("Set option to track secondaries before finishing their parent track");
|
||||
fSetTrackSecondariesFirstCmd->SetParameterName("TrackSecondariesFirst", false);
|
||||
fSetTrackSecondariesFirstCmd->AvailableForStates(G4State_Idle,G4State_GeomClosed,G4State_EventProc);
|
||||
}
|
||||
|
||||
//_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
||||
G4OpticalPhysicsMessenger::~G4OpticalPhysicsMessenger()
|
||||
{
|
||||
/// Destructor
|
||||
delete fDir;
|
||||
delete fSelectOpProcessCmd;
|
||||
delete fSetOpProcessActivationCmd;
|
||||
delete fSetOpProcessVerboseCmd;
|
||||
delete fSetCerenkovMaxPhotonsCmd;
|
||||
delete fSetCerenkovMaxBetaChangeCmd;
|
||||
delete fSetScintillationYieldFactorCmd;
|
||||
delete fSetOpticalSurfaceModelCmd;
|
||||
delete fSetWLSTimeProfileCmd;
|
||||
delete fSetTrackSecondariesFirstCmd;
|
||||
}
|
||||
|
||||
//_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
||||
void G4OpticalPhysicsMessenger::SetNewValue(G4UIcommand* command, G4String newValue)
|
||||
{
|
||||
/// Apply command to the associated object.
|
||||
|
||||
if (command == fSelectOpProcessCmd) {
|
||||
if ( newValue == "Cerenkov" ) fSelectedProcess = fOpticalPhysics->
|
||||
GetCerenkovProcess();
|
||||
else if ( newValue == "Scintillation" ) fSelectedProcess = fOpticalPhysics->
|
||||
GetScintillationProcess();
|
||||
else if ( newValue == "OpAbsorption" ) fSelectedProcess = fOpticalPhysics->
|
||||
GetOpAbsorptionProcess();
|
||||
else if ( newValue == "OpRayleigh" ) fSelectedProcess = fOpticalPhysics->
|
||||
GetOpRayleighProcess();
|
||||
else if ( newValue == "OpBoundary" ) fSelectedProcess = fOpticalPhysics->
|
||||
GetOpBoundaryProcess();
|
||||
else if ( newValue == "OpWLS" ) fSelectedProcess = fOpticalPhysics->
|
||||
GetOpWLSProcess();
|
||||
}
|
||||
else if (command == fSetOpProcessActivationCmd) {
|
||||
G4ParticleTable* theParticleTable = G4ParticleTable::GetParticleTable();
|
||||
G4ParticleTable::G4PTblDicIterator* theParticleIterator =
|
||||
theParticleTable->GetIterator();
|
||||
if ( fSelectedProcess ) {
|
||||
theParticleIterator->reset();
|
||||
while( (*theParticleIterator)() ) {
|
||||
G4ParticleDefinition* particle = theParticleIterator->value();
|
||||
G4ProcessManager* processManager = particle->GetProcessManager();
|
||||
G4ProcessVector* processVector = processManager->GetProcessList();
|
||||
|
||||
// activate or inactivate processes according to
|
||||
for (G4int i=0; i<processVector->length(); i++) {
|
||||
if ( (*processVector)[i] != fSelectedProcess ) continue;
|
||||
G4cout << "Setting process activation: "
|
||||
<< fSelectedProcess->GetProcessName() << " "
|
||||
<< fSetOpProcessActivationCmd->GetNewBoolValue(newValue)
|
||||
<< G4endl;
|
||||
processManager->SetProcessActivation(fSelectedProcess,
|
||||
fSetOpProcessActivationCmd->GetNewBoolValue(newValue));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (command == fSetOpProcessVerboseCmd) {
|
||||
if ( fSelectedProcess )
|
||||
fSelectedProcess->SetVerboseLevel
|
||||
(fSetOpProcessVerboseCmd->GetNewIntValue(newValue));
|
||||
}
|
||||
else if (command == fSetCerenkovMaxPhotonsCmd) {
|
||||
fOpticalPhysics
|
||||
->SetMaxNumPhotonsPerStep(
|
||||
fSetCerenkovMaxPhotonsCmd->GetNewIntValue(newValue));
|
||||
}
|
||||
else if (command == fSetCerenkovMaxBetaChangeCmd) {
|
||||
fOpticalPhysics
|
||||
->SetMaxBetaChangePerStep(
|
||||
fSetCerenkovMaxBetaChangeCmd->GetNewDoubleValue(newValue));
|
||||
}
|
||||
else if (command == fSetScintillationYieldFactorCmd) {
|
||||
fOpticalPhysics
|
||||
->SetScintillationYieldFactor(
|
||||
fSetScintillationYieldFactorCmd->GetNewDoubleValue(newValue));
|
||||
}
|
||||
else if (command == fSetOpticalSurfaceModelCmd) {
|
||||
if ( newValue == "glisur" ) {
|
||||
fOpticalPhysics
|
||||
->SetOpticalSurfaceModel(glisur);
|
||||
}
|
||||
if ( newValue == "unified" ) {
|
||||
fOpticalPhysics
|
||||
->SetOpticalSurfaceModel(unified);
|
||||
}
|
||||
}
|
||||
else if (command == fSetWLSTimeProfileCmd) {
|
||||
if ( newValue == "delta" ) {
|
||||
fOpticalPhysics
|
||||
->SetWLSTimeProfile("delta"); }
|
||||
if ( newValue == "exponential" ) {
|
||||
fOpticalPhysics
|
||||
->SetWLSTimeProfile("exponential");
|
||||
}
|
||||
}
|
||||
else if (command == fSetTrackSecondariesFirstCmd) {
|
||||
if ( fSelectedProcess ) {
|
||||
G4Scintillation* scintillation =
|
||||
static_cast<G4Scintillation*>(fSelectedProcess);
|
||||
if (scintillation) scintillation ->
|
||||
SetTrackSecondariesFirst(
|
||||
fSetTrackSecondariesFirstCmd->GetNewBoolValue(newValue));
|
||||
G4Cerenkov* cerenkov =
|
||||
static_cast<G4Cerenkov*>(fSelectedProcess);
|
||||
if (cerenkov) cerenkov ->
|
||||
SetTrackSecondariesFirst(
|
||||
fSetTrackSecondariesFirstCmd->GetNewBoolValue(newValue));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -23,10 +23,25 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4PrecoNeutronBuilder.cc,v 1.2 2009/03/31 11:03:50 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4PrecoNeutronBuilder
|
||||
//
|
||||
// Author: 2002 J.P. Wellisch
|
||||
//
|
||||
// Modified:
|
||||
// 30.03.2009 V.Ivanchenko create cross section by new
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
#include "G4PrecoNeutronBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
#include "G4NeutronInelasticCrossSection.hh"
|
||||
|
||||
G4PrecoNeutronBuilder::
|
||||
G4PrecoNeutronBuilder()
|
||||
@@ -63,7 +78,7 @@ Build(G4NeutronInelasticProcess * aP)
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(theMax);
|
||||
aP->RegisterMe(theModel);
|
||||
aP->AddDataSet(&theXSec);
|
||||
aP->AddDataSet(new G4NeutronInelasticCrossSection);
|
||||
}
|
||||
|
||||
// 2002 by J.P. Wellisch
|
||||
|
||||
@@ -23,10 +23,25 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4PrecoProtonBuilder.cc,v 1.2 2009/03/31 11:03:50 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4PrecoProtonBuilder
|
||||
//
|
||||
// Author: 2002 J.P. Wellisch
|
||||
//
|
||||
// Modified:
|
||||
// 30.03.2009 V.Ivanchenko create cross section by new
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
#include "G4PrecoProtonBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
#include "G4ProtonInelasticCrossSection.hh"
|
||||
|
||||
#include "G4ExcitationHandler.hh"
|
||||
|
||||
@@ -52,7 +67,7 @@ Build(G4ProtonInelasticProcess * aP)
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(theMax);
|
||||
aP->RegisterMe(theModel);
|
||||
aP->AddDataSet(&theXSec);
|
||||
aP->AddDataSet(new G4ProtonInelasticCrossSection);
|
||||
}
|
||||
|
||||
// 2002 by J.P. Wellisch
|
||||
|
||||
@@ -0,0 +1,209 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4QAtomicPhysics.cc,v 1.1 2009/11/20 10:24:28 mkossov Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4QAtomicPhysics
|
||||
//
|
||||
// Author: M. Kosov 20.11.2009 (similar to G4QAtomicPhysics)
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
#include "G4QAtomicPhysics.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
#include "G4LossTableManager.hh"
|
||||
#include "G4EmProcessOptions.hh"
|
||||
|
||||
#include "G4ComptonScattering.hh"
|
||||
#include "G4GammaConversion.hh"
|
||||
#include "G4PhotoElectricEffect.hh"
|
||||
|
||||
#include "G4eMultipleScattering.hh"
|
||||
#include "G4MuMultipleScattering.hh"
|
||||
#include "G4hMultipleScattering.hh"
|
||||
|
||||
#include "G4eIonisation.hh"
|
||||
#include "G4eBremsstrahlung.hh"
|
||||
#include "G4eplusAnnihilation.hh"
|
||||
|
||||
#include "G4MuIonisation.hh"
|
||||
#include "G4MuBremsstrahlung.hh"
|
||||
#include "G4MuPairProduction.hh"
|
||||
#include "G4hBremsstrahlung.hh"
|
||||
#include "G4hPairProduction.hh"
|
||||
|
||||
#include "G4hIonisation.hh"
|
||||
#include "G4ionIonisation.hh"
|
||||
|
||||
#include "G4Gamma.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Positron.hh"
|
||||
#include "G4MuonPlus.hh"
|
||||
#include "G4MuonMinus.hh"
|
||||
#include "G4PionPlus.hh"
|
||||
#include "G4PionMinus.hh"
|
||||
#include "G4KaonPlus.hh"
|
||||
#include "G4KaonMinus.hh"
|
||||
#include "G4Proton.hh"
|
||||
#include "G4AntiProton.hh"
|
||||
#include "G4SigmaPlus.hh"
|
||||
#include "G4SigmaMinus.hh"
|
||||
#include "G4XiMinus.hh"
|
||||
#include "G4OmegaMinus.hh"
|
||||
#include "G4AntiSigmaPlus.hh"
|
||||
#include "G4AntiSigmaMinus.hh"
|
||||
#include "G4AntiXiMinus.hh"
|
||||
#include "G4AntiOmegaMinus.hh"
|
||||
#include "G4Deuteron.hh"
|
||||
#include "G4Triton.hh"
|
||||
#include "G4He3.hh"
|
||||
#include "G4Alpha.hh"
|
||||
#include "G4GenericIon.hh"
|
||||
|
||||
G4QAtomicPhysics::G4QAtomicPhysics(G4int ver, const G4String& name)
|
||||
: G4VPhysicsConstructor(name), verbose(ver)
|
||||
{
|
||||
G4LossTableManager::Instance();
|
||||
}
|
||||
|
||||
G4QAtomicPhysics::~G4QAtomicPhysics()
|
||||
{}
|
||||
|
||||
void G4QAtomicPhysics::ConstructParticle()
|
||||
{
|
||||
// gamma
|
||||
G4Gamma::Gamma();
|
||||
|
||||
// leptons
|
||||
G4Electron::Electron();
|
||||
G4Positron::Positron();
|
||||
G4MuonPlus::MuonPlus();
|
||||
G4MuonMinus::MuonMinus();
|
||||
|
||||
// mesons
|
||||
G4PionPlus::PionPlusDefinition();
|
||||
G4PionMinus::PionMinusDefinition();
|
||||
G4KaonPlus::KaonPlusDefinition();
|
||||
G4KaonMinus::KaonMinusDefinition();
|
||||
|
||||
// barions
|
||||
G4Proton::Proton();
|
||||
G4AntiProton::AntiProton();
|
||||
G4SigmaPlus::SigmaPlus();
|
||||
G4SigmaMinus::SigmaMinus();
|
||||
G4XiMinus::XiMinus();
|
||||
G4OmegaMinus::OmegaMinus();
|
||||
G4AntiSigmaPlus::AntiSigmaPlus();
|
||||
G4AntiSigmaMinus::AntiSigmaMinus();
|
||||
G4AntiXiMinus::AntiXiMinus();
|
||||
G4AntiOmegaMinus::AntiOmegaMinus();
|
||||
|
||||
// ions
|
||||
G4Deuteron::Deuteron();
|
||||
G4Triton::Triton();
|
||||
G4He3::He3();
|
||||
G4Alpha::Alpha();
|
||||
G4GenericIon::GenericIonDefinition();
|
||||
}
|
||||
|
||||
void G4QAtomicPhysics::ConstructProcess()
|
||||
{
|
||||
theParticleIterator->reset();
|
||||
while( (*theParticleIterator)() )
|
||||
{
|
||||
G4ParticleDefinition* particlePointer = theParticleIterator->value();
|
||||
G4ProcessManager* pmanager = particlePointer->GetProcessManager();
|
||||
G4String particle = particlePointer->GetParticleName();
|
||||
if(verbose > 1) G4cout<<"###G4QAtomicPhysics::ConstructProcesses: try "
|
||||
<<GetPhysicsName()<<" builder for "<<particle<<G4endl;
|
||||
if ( particle == "gamma")
|
||||
{
|
||||
|
||||
pmanager->AddDiscreteProcess(new G4PhotoElectricEffect);
|
||||
pmanager->AddDiscreteProcess(new G4ComptonScattering);
|
||||
pmanager->AddDiscreteProcess(new G4GammaConversion);
|
||||
}
|
||||
else if( particle == "e-")
|
||||
{
|
||||
pmanager->AddProcess(new G4eMultipleScattering(), -1, 1, 1);
|
||||
pmanager->AddProcess(new G4eIonisation, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung(), -1,-3, 3);
|
||||
}
|
||||
else if( particle == "e+")
|
||||
{
|
||||
pmanager->AddProcess(new G4eMultipleScattering(), -1, 1, 1);
|
||||
pmanager->AddProcess(new G4eIonisation, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung, -1,-3, 3);
|
||||
pmanager->AddProcess(new G4eplusAnnihilation, 0,-1, 4);
|
||||
}
|
||||
else if( particle == "mu+" || particle == "mu-" )
|
||||
{
|
||||
pmanager->AddProcess(new G4MuMultipleScattering, -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( particle == "pi-" || particle == "pi+" ||
|
||||
particle == "kaon-" || particle == "kaon+" ||
|
||||
particle == "proton" || particle == "anti_proton" ||
|
||||
particle == "tau-" || particle == "tau+" ||
|
||||
particle == "deuteron" || particle == "triton" ||
|
||||
particle == "xi-" || particle == "anti_xi-" ||
|
||||
particle == "sigma+" || particle == "anti_sigma+" ||
|
||||
particle == "sigma-" || particle == "anti_sigma-" ||
|
||||
particle == "omega-" || particle == "anti_omega-" )
|
||||
{
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4hIonisation, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4hBremsstrahlung, -1,-3, 3);
|
||||
pmanager->AddProcess(new G4hPairProduction, -1,-4, 4);
|
||||
}
|
||||
else if(particle == "alpha" || particle == "He3" ||particle == "GenericIon")
|
||||
{
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4ionIonisation, -1, 2, 2);
|
||||
}
|
||||
else if (particle == "B+" || particle == "B-" ||
|
||||
particle == "D+" || particle == "D-" ||
|
||||
particle == "Ds+" || particle == "Ds-" ||
|
||||
particle == "lambda_c+" || particle == "anti_lambda_c+" ||
|
||||
particle == "sigma_c+" || particle == "anti_sigma_c+" ||
|
||||
particle == "sigma_c++" || particle == "anti_sigma_c++" ||
|
||||
particle == "xi_c+" || particle == "anti_xi_c+" )
|
||||
{
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4hIonisation, -1, 2, 2);
|
||||
}
|
||||
}
|
||||
G4EmProcessOptions opt;
|
||||
opt.SetVerbose(verbose);
|
||||
}
|
||||
@@ -0,0 +1,94 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4QCaptureAtRestPhysics.cc,v 1.1 2009/11/16 19:12:10 mkossov Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4QCaptureAtRestPhysics
|
||||
//
|
||||
// Author: 16 Nov 2009 M. Kosov
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
#include "G4QCaptureAtRestPhysics.hh"
|
||||
|
||||
G4QCaptureAtRestPhysics::G4QCaptureAtRestPhysics(const G4String& name, G4int ver)
|
||||
: G4VPhysicsConstructor(name), verbose(ver), wasActivated(false)
|
||||
{
|
||||
if(verbose > 1) G4cout << "###> G4QCaptureAtRestPhysics is initialized" << G4endl;
|
||||
}
|
||||
|
||||
G4QCaptureAtRestPhysics::~G4QCaptureAtRestPhysics()
|
||||
{
|
||||
if(wasActivated) delete captureProcess;
|
||||
}
|
||||
|
||||
void G4QCaptureAtRestPhysics::ConstructParticle()
|
||||
{
|
||||
// G4cout << "G4QCaptureAtRestPhysics::ConstructParticle" << G4endl;
|
||||
G4LeptonConstructor pLeptonConstructor;
|
||||
pLeptonConstructor.ConstructParticle();
|
||||
|
||||
G4MesonConstructor pMesonConstructor;
|
||||
pMesonConstructor.ConstructParticle();
|
||||
|
||||
G4BaryonConstructor pBaryonConstructor;
|
||||
pBaryonConstructor.ConstructParticle();
|
||||
|
||||
}
|
||||
|
||||
void G4QCaptureAtRestPhysics::ConstructProcess()
|
||||
{
|
||||
if(verbose>1) G4cout<<"###> G4QCaptureAtRestPhysics::ConstructProcess: "<<wasActivated
|
||||
<<G4endl;
|
||||
if(wasActivated) return;
|
||||
wasActivated = true;
|
||||
captureProcess = new G4QCaptureAtRest();
|
||||
|
||||
// Add Stopping Process
|
||||
G4ParticleDefinition* particle=0;
|
||||
G4ProcessManager* pmanager=0;
|
||||
|
||||
theParticleIterator->reset();
|
||||
while( (*theParticleIterator)() )
|
||||
{
|
||||
particle = theParticleIterator->value();
|
||||
pmanager = particle->GetProcessManager();
|
||||
if(particle->GetPDGCharge() < 0. && particle != G4Electron::Electron() &&
|
||||
!(particle->IsShortLived()) && captureProcess->IsApplicable(*particle) )
|
||||
{
|
||||
pmanager->AddRestProcess(captureProcess);
|
||||
if(verbose > 1) G4cout << "###> G4QCaptureAtRestPhysics is added for "
|
||||
<<particle->GetParticleName() << G4endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4QEmExtraPhysics.cc,v 1.1 2007/05/23 17:38:35 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
// $Id: G4QEmExtraPhysics.cc,v 1.2 2009/11/16 19:12:10 mkossov Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
@@ -32,13 +32,13 @@
|
||||
//
|
||||
// Author: 23 May 2007 V. Ivanchenko
|
||||
//
|
||||
// Modified:
|
||||
// Modified: 19 Nov 2009 M.Kosov: G4QInelastic instead of G4QCollision
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
#include "G4QEmExtraPhysics.hh"
|
||||
#include "G4QCollision.hh"
|
||||
#include "G4QInelastic.hh"
|
||||
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
@@ -75,7 +75,7 @@ void G4QEmExtraPhysics::ConstructProcess()
|
||||
if(wasActivated) return;
|
||||
wasActivated = true;
|
||||
|
||||
hProcess = new G4QCollision();
|
||||
hProcess = new G4QInelastic();
|
||||
|
||||
G4ParticleDefinition* particle = G4Gamma::Gamma();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
|
||||
@@ -23,10 +23,25 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4QGSBinaryNeutronBuilder.cc,v 1.3 2009/03/31 11:03:50 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4QGSBinaryNeutronBuilder
|
||||
//
|
||||
// Author: 2006 G.Folger
|
||||
//
|
||||
// Modified:
|
||||
// 30.03.2009 V.Ivanchenko create cross section by new
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
#include "G4QGSBinaryNeutronBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
#include "G4NeutronInelasticCrossSection.hh"
|
||||
|
||||
G4QGSBinaryNeutronBuilder::
|
||||
G4QGSBinaryNeutronBuilder(G4bool quasiElastic)
|
||||
@@ -84,6 +99,6 @@ Build(G4NeutronInelasticProcess * aP)
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->RegisterMe(theModel);
|
||||
aP->AddDataSet(&theXSec);
|
||||
aP->AddDataSet(new G4NeutronInelasticCrossSection);
|
||||
}
|
||||
|
||||
|
||||
@@ -23,6 +23,20 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4QGSBinaryPiKBuilder.cc,v 1.3 2009/03/31 11:03:50 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4QGSBinaryPiKBuilder
|
||||
//
|
||||
// Author: 2006 G.Folger
|
||||
//
|
||||
// Modified:
|
||||
// 30.03.2009 V.Ivanchenko create cross section by new
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
#include "G4QGSBinaryPiKBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
@@ -31,6 +45,8 @@
|
||||
G4QGSBinaryPiKBuilder::
|
||||
G4QGSBinaryPiKBuilder(G4bool quasiElastic)
|
||||
{
|
||||
thePiData = new G4PiNuclearCrossSection;
|
||||
|
||||
theMin = 12*GeV;
|
||||
theModel = new G4TheoFSGenerator("QGSB");
|
||||
|
||||
@@ -72,7 +88,7 @@ Build(G4PionPlusInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->AddDataSet(&thePiData);
|
||||
aP->AddDataSet(thePiData);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
@@ -81,7 +97,7 @@ Build(G4PionMinusInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->AddDataSet(&thePiData);
|
||||
aP->AddDataSet(thePiData);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
|
||||
@@ -23,13 +23,28 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#include "G4QGSBinaryProtonBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
// $Id: G4QGSBinaryProtonBuilder.cc,v 1.3 2009/03/31 11:03:50 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4QGSBinaryProtonBuilder
|
||||
//
|
||||
// Author: 2006 G.Folger
|
||||
//
|
||||
// Modified:
|
||||
// 30.03.2009 V.Ivanchenko create cross section by new
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
#include "G4QGSBinaryProtonBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
#include "G4ProtonInelasticCrossSection.hh"
|
||||
|
||||
G4QGSBinaryProtonBuilder::
|
||||
G4QGSBinaryProtonBuilder(G4bool quasiElastic)
|
||||
G4QGSBinaryProtonBuilder::
|
||||
G4QGSBinaryProtonBuilder(G4bool quasiElastic)
|
||||
{
|
||||
theMin = 12*GeV;
|
||||
theModel = new G4TheoFSGenerator("QGSB");
|
||||
@@ -52,23 +67,22 @@
|
||||
{ theQuasiElastic=0;}
|
||||
}
|
||||
|
||||
void G4QGSBinaryProtonBuilder::
|
||||
Build(G4ProtonInelasticProcess * aP)
|
||||
void G4QGSBinaryProtonBuilder::
|
||||
Build(G4ProtonInelasticProcess * aP)
|
||||
{
|
||||
// G4cout << "adding inelastic Proton in QGSBinary" << G4endl;
|
||||
aP->AddDataSet(&theXSec);
|
||||
aP->AddDataSet(new G4ProtonInelasticCrossSection);
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
void G4QGSBinaryProtonBuilder::
|
||||
Build(G4HadronElasticProcess * )
|
||||
void G4QGSBinaryProtonBuilder::
|
||||
Build(G4HadronElasticProcess * )
|
||||
{
|
||||
}
|
||||
|
||||
G4QGSBinaryProtonBuilder::
|
||||
~G4QGSBinaryProtonBuilder()
|
||||
G4QGSBinaryProtonBuilder::~G4QGSBinaryProtonBuilder()
|
||||
{
|
||||
delete thePreEquilib;
|
||||
delete theCascade;
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4QGSBuilder.cc,v 1.1 2009/10/04 16:29:54 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4QGSBuilder
|
||||
//
|
||||
// Author: 28 June 2009 V.Ivanchenko
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
#include "G4QGSBuilder.hh"
|
||||
#include "G4ExcitedStringDecay.hh"
|
||||
#include "G4QuasiElasticChannel.hh"
|
||||
#include "G4ProjectileDiffractiveChannel.hh"
|
||||
#include "G4TheoFSGenerator.hh"
|
||||
#include "G4QStringChipsParticleLevelInterface.hh"
|
||||
#include "G4GeneratorPrecompoundInterface.hh"
|
||||
#include "G4QGSMFragmentation.hh"
|
||||
#include "G4ExcitedStringDecay.hh"
|
||||
#include "G4BinaryCascade.hh"
|
||||
|
||||
|
||||
G4QGSBuilder::G4QGSBuilder(const G4String& aName, G4bool quasiel, G4bool diff)
|
||||
: G4VHadronModelBuilder(aName), quasielFlag(quasiel), diffFlag(diff)
|
||||
{
|
||||
theProjectileDiffraction = 0;
|
||||
theQuasiElastic = 0;
|
||||
}
|
||||
|
||||
G4QGSBuilder::~G4QGSBuilder()
|
||||
{
|
||||
delete theProjectileDiffraction;
|
||||
delete theQuasiElastic;
|
||||
delete theQGStringDecay;
|
||||
delete theQGStringModel;
|
||||
}
|
||||
|
||||
G4HadronicInteraction* G4QGSBuilder::BuildModel()
|
||||
{
|
||||
G4TheoFSGenerator* theQGSModel = new G4TheoFSGenerator(GetName());
|
||||
theQGStringModel = new G4QGSModel< G4QGSParticipants >;
|
||||
theQGStringDecay = new G4ExcitedStringDecay(new G4QGSMFragmentation());
|
||||
theQGStringModel->SetFragmentationModel(theQGStringDecay);
|
||||
theQGSModel->SetHighEnergyGenerator(theQGStringModel);
|
||||
|
||||
if(quasielFlag) {
|
||||
theQuasiElastic = new G4QuasiElasticChannel();
|
||||
theQGSModel->SetQuasiElasticChannel(theQuasiElastic);
|
||||
}
|
||||
if ( diffFlag ) {
|
||||
theProjectileDiffraction = new G4ProjectileDiffractiveChannel();
|
||||
theQGSModel->SetProjectileDiffraction(theProjectileDiffraction);
|
||||
}
|
||||
|
||||
if(GetName() == "QGSP") {
|
||||
theQGSModel->SetTransport(new G4GeneratorPrecompoundInterface());
|
||||
} else if(GetName() == "QGSC") {
|
||||
theQGSModel->SetTransport(new G4QStringChipsParticleLevelInterface());
|
||||
} else if(GetName() == "QGSB") {
|
||||
theQGSModel->SetTransport(new G4BinaryCascade());
|
||||
} else {
|
||||
theQGSModel->SetTransport(new G4GeneratorPrecompoundInterface());
|
||||
}
|
||||
|
||||
return theQGSModel;
|
||||
}
|
||||
@@ -23,10 +23,25 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4QGSCEflowNeutronBuilder.cc,v 1.4 2009/03/31 11:03:50 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4QGSCEflowNeutronBuilder
|
||||
//
|
||||
// Author: 2006 G.Folger
|
||||
//
|
||||
// Modified:
|
||||
// 30.03.2009 V.Ivanchenko create cross section by new
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
#include "G4QGSCEflowNeutronBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
#include "G4NeutronInelasticCrossSection.hh"
|
||||
|
||||
G4QGSCEflowNeutronBuilder::
|
||||
G4QGSCEflowNeutronBuilder(G4bool quasiElastic)
|
||||
@@ -66,7 +81,7 @@ Build(G4NeutronInelasticProcess * aP)
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->RegisterMe(theModel);
|
||||
aP->AddDataSet(&theXSec);
|
||||
aP->AddDataSet(new G4NeutronInelasticCrossSection);
|
||||
}
|
||||
|
||||
// 2006 G.Folger
|
||||
|
||||
@@ -23,6 +23,20 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4QGSCEflowPiKBuilder.cc,v 1.4 2009/03/31 11:03:50 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4QGSCEflowPiKBuilder
|
||||
//
|
||||
// Author: 2006 G.Folger
|
||||
//
|
||||
// Modified:
|
||||
// 30.03.2009 V.Ivanchenko create cross section by new
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
#include "G4QGSCEflowPiKBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
@@ -31,6 +45,7 @@
|
||||
G4QGSCEflowPiKBuilder::
|
||||
G4QGSCEflowPiKBuilder(G4bool quasiElastic)
|
||||
{
|
||||
thePiCross = new G4PiNuclearCrossSection;
|
||||
theMin = 8*GeV;
|
||||
theModel = new G4TheoFSGenerator("QGSCEflow");
|
||||
|
||||
@@ -68,7 +83,7 @@ Build(G4PionPlusInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->AddDataSet(&thePiCross);
|
||||
aP->AddDataSet(thePiCross);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
@@ -77,7 +92,7 @@ Build(G4PionMinusInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->AddDataSet(&thePiCross);
|
||||
aP->AddDataSet(thePiCross);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
|
||||
@@ -23,10 +23,25 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4QGSCEflowProtonBuilder.cc,v 1.4 2009/03/31 11:03:50 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4QGSCEflowProtonBuilder
|
||||
//
|
||||
// Author: 2006 G.Folger
|
||||
//
|
||||
// Modified:
|
||||
// 30.03.2009 V.Ivanchenko create cross section by new
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
#include "G4QGSCEflowProtonBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
#include "G4ProtonInelasticCrossSection.hh"
|
||||
|
||||
G4QGSCEflowProtonBuilder::
|
||||
G4QGSCEflowProtonBuilder(G4bool quasiElastic)
|
||||
@@ -71,7 +86,7 @@ Build(G4ProtonInelasticProcess * aP)
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->RegisterMe(theModel);
|
||||
aP->AddDataSet(&theXSec);
|
||||
aP->AddDataSet(new G4ProtonInelasticCrossSection);
|
||||
}
|
||||
|
||||
// 2006 G.Folger
|
||||
|
||||
@@ -23,13 +23,28 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#include "G4QGSCNeutronBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
// $Id: G4QGSCNeutronBuilder.cc,v 1.5 2009/03/31 11:03:50 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4QGSCNeutronBuilder
|
||||
//
|
||||
// Author: 2002 J.P. Wellisch
|
||||
//
|
||||
// Modified:
|
||||
// 30.03.2009 V.Ivanchenko create cross section by new
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
#include "G4QGSCNeutronBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
#include "G4NeutronInelasticCrossSection.hh"
|
||||
|
||||
G4QGSCNeutronBuilder::
|
||||
G4QGSCNeutronBuilder(G4bool quasiElastic)
|
||||
G4QGSCNeutronBuilder::
|
||||
G4QGSCNeutronBuilder(G4bool quasiElastic)
|
||||
{
|
||||
theMin = 8*GeV;
|
||||
theModel = new G4TheoFSGenerator("QGSC");
|
||||
@@ -50,8 +65,7 @@
|
||||
{ theQuasiElastic=0;}
|
||||
}
|
||||
|
||||
G4QGSCNeutronBuilder::
|
||||
~G4QGSCNeutronBuilder()
|
||||
G4QGSCNeutronBuilder::~G4QGSCNeutronBuilder()
|
||||
{
|
||||
delete theStringDecay;
|
||||
delete theStringModel;
|
||||
@@ -60,13 +74,13 @@
|
||||
delete theModel;
|
||||
}
|
||||
|
||||
void G4QGSCNeutronBuilder::
|
||||
Build(G4NeutronInelasticProcess * aP)
|
||||
void G4QGSCNeutronBuilder::
|
||||
Build(G4NeutronInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->RegisterMe(theModel);
|
||||
aP->AddDataSet(&theXSec);
|
||||
aP->AddDataSet(new G4NeutronInelasticCrossSection);
|
||||
}
|
||||
|
||||
// 2002 by J.P. Wellisch
|
||||
|
||||
@@ -23,6 +23,20 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4QGSCPiKBuilder.cc,v 1.5 2009/03/31 11:03:50 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4QGSCPiKBuilder
|
||||
//
|
||||
// Author: 2002 J.P. Wellisch
|
||||
//
|
||||
// Modified:
|
||||
// 30.03.2009 V.Ivanchenko create cross section by new
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
#include "G4QGSCPiKBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
@@ -31,6 +45,7 @@
|
||||
G4QGSCPiKBuilder::
|
||||
G4QGSCPiKBuilder(G4bool quasiElastic)
|
||||
{
|
||||
thePiCross = new G4PiNuclearCrossSection;
|
||||
theMin = 8*GeV;
|
||||
theModel = new G4TheoFSGenerator("QGSC");
|
||||
|
||||
@@ -68,7 +83,7 @@ Build(G4PionPlusInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->AddDataSet(&thePiCross);
|
||||
aP->AddDataSet(thePiCross);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
@@ -77,7 +92,7 @@ Build(G4PionMinusInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->AddDataSet(&thePiCross);
|
||||
aP->AddDataSet(thePiCross);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
|
||||
@@ -23,10 +23,24 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4QGSCProtonBuilder.cc,v 1.5 2009/03/31 11:03:50 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4QGSCProtonBuilder
|
||||
//
|
||||
// Author: 2002 J.P. Wellisch
|
||||
//
|
||||
// Modified:
|
||||
// 30.03.2009 V.Ivanchenko create cross section by new
|
||||
//
|
||||
//----------------------------------------------------------------------------//
|
||||
#include "G4QGSCProtonBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
#include "G4ProtonInelasticCrossSection.hh"
|
||||
|
||||
G4QGSCProtonBuilder::
|
||||
G4QGSCProtonBuilder(G4bool quasiElastic)
|
||||
@@ -71,7 +85,7 @@ Build(G4ProtonInelasticProcess * aP)
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->RegisterMe(theModel);
|
||||
aP->AddDataSet(&theXSec);
|
||||
aP->AddDataSet(new G4ProtonInelasticCrossSection);
|
||||
}
|
||||
|
||||
// 2002 by J.P. Wellisch
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#include "G4QGSC_CHIPSNeutronBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
G4QGSC_CHIPSNeutronBuilder::
|
||||
G4QGSC_CHIPSNeutronBuilder(G4bool quasiElastic)
|
||||
{
|
||||
theMin = 0*GeV;
|
||||
theModel = new G4TheoFSGenerator("QGSC_CHIPS");
|
||||
|
||||
theStringModel= new G4QGSModel< G4QGSParticipants >;
|
||||
theStringDecay = new G4ExcitedStringDecay(new G4QGSMFragmentation);
|
||||
theStringModel->SetFragmentationModel(theStringDecay);
|
||||
|
||||
theCascade = new G4StringChipsParticleLevelInterface;
|
||||
|
||||
theModel->SetTransport(theCascade);
|
||||
theModel->SetHighEnergyGenerator(theStringModel);
|
||||
if (quasiElastic)
|
||||
{
|
||||
theQuasiElastic=new G4QuasiElasticChannel;
|
||||
theModel->SetQuasiElasticChannel(theQuasiElastic);
|
||||
} else
|
||||
{ theQuasiElastic=0;}
|
||||
}
|
||||
|
||||
G4QGSC_CHIPSNeutronBuilder::
|
||||
~G4QGSC_CHIPSNeutronBuilder()
|
||||
{
|
||||
delete theStringDecay;
|
||||
delete theStringModel;
|
||||
delete theCascade;
|
||||
if ( theQuasiElastic ) delete theQuasiElastic;
|
||||
delete theModel;
|
||||
}
|
||||
|
||||
void G4QGSC_CHIPSNeutronBuilder::
|
||||
Build(G4NeutronInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->RegisterMe(theModel);
|
||||
aP->AddDataSet(&theXSec);
|
||||
}
|
||||
|
||||
// 2009 by M. Kosov
|
||||
@@ -0,0 +1,116 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#include "G4QGSC_CHIPSPiKBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
G4QGSC_CHIPSPiKBuilder::
|
||||
G4QGSC_CHIPSPiKBuilder(G4bool quasiElastic)
|
||||
{
|
||||
theMin = 0*GeV;
|
||||
theModel = new G4TheoFSGenerator("QGSC_CHIPS");
|
||||
|
||||
theStringModel = new G4QGSModel< G4QGSParticipants >;
|
||||
theStringDecay = new G4ExcitedStringDecay(new G4QGSMFragmentation);
|
||||
theStringModel->SetFragmentationModel(theStringDecay);
|
||||
|
||||
theCascade = new G4StringChipsParticleLevelInterface;
|
||||
|
||||
theModel->SetTransport(theCascade);
|
||||
theModel->SetHighEnergyGenerator(theStringModel);
|
||||
if (quasiElastic)
|
||||
{
|
||||
theQuasiElastic=new G4QuasiElasticChannel;
|
||||
theModel->SetQuasiElasticChannel(theQuasiElastic);
|
||||
} else
|
||||
{ theQuasiElastic=0;}
|
||||
}
|
||||
|
||||
G4QGSC_CHIPSPiKBuilder::
|
||||
~G4QGSC_CHIPSPiKBuilder()
|
||||
{
|
||||
delete theCascade;
|
||||
delete theStringDecay;
|
||||
delete theStringModel;
|
||||
if ( theQuasiElastic ) delete theQuasiElastic;
|
||||
delete theModel;
|
||||
}
|
||||
|
||||
void G4QGSC_CHIPSPiKBuilder::
|
||||
Build(G4HadronElasticProcess * ) {}
|
||||
|
||||
void G4QGSC_CHIPSPiKBuilder::
|
||||
Build(G4PionPlusInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->AddDataSet(&thePiCross);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
void G4QGSC_CHIPSPiKBuilder::
|
||||
Build(G4PionMinusInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->AddDataSet(&thePiCross);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
void G4QGSC_CHIPSPiKBuilder::
|
||||
Build(G4KaonPlusInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
void G4QGSC_CHIPSPiKBuilder::
|
||||
Build(G4KaonMinusInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
void G4QGSC_CHIPSPiKBuilder::
|
||||
Build(G4KaonZeroLInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
void G4QGSC_CHIPSPiKBuilder::
|
||||
Build(G4KaonZeroSInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
// 2009 by M. Kosov
|
||||
@@ -0,0 +1,77 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#include "G4QGSC_CHIPSProtonBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
G4QGSC_CHIPSProtonBuilder::
|
||||
G4QGSC_CHIPSProtonBuilder(G4bool quasiElastic)
|
||||
{
|
||||
theMin = 0*GeV;
|
||||
theModel = new G4TheoFSGenerator("QGSC_CHIPS");
|
||||
|
||||
theStringModel = new G4QGSModel< G4QGSParticipants >;
|
||||
theStringDecay = new G4ExcitedStringDecay(new G4QGSMFragmentation);
|
||||
theStringModel->SetFragmentationModel(theStringDecay);
|
||||
|
||||
theCascade = new G4StringChipsParticleLevelInterface;
|
||||
|
||||
theModel->SetHighEnergyGenerator(theStringModel);
|
||||
theModel->SetTransport(theCascade);
|
||||
if (quasiElastic)
|
||||
{
|
||||
theQuasiElastic=new G4QuasiElasticChannel;
|
||||
theModel->SetQuasiElasticChannel(theQuasiElastic);
|
||||
} else
|
||||
{ theQuasiElastic=0;}
|
||||
}
|
||||
|
||||
G4QGSC_CHIPSProtonBuilder::
|
||||
~G4QGSC_CHIPSProtonBuilder()
|
||||
{
|
||||
delete theCascade;
|
||||
delete theStringDecay;
|
||||
delete theStringModel;
|
||||
if ( theQuasiElastic ) delete theQuasiElastic;
|
||||
delete theModel;
|
||||
}
|
||||
|
||||
void G4QGSC_CHIPSProtonBuilder::
|
||||
Build(G4HadronElasticProcess * )
|
||||
{
|
||||
}
|
||||
|
||||
void G4QGSC_CHIPSProtonBuilder::
|
||||
Build(G4ProtonInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->RegisterMe(theModel);
|
||||
aP->AddDataSet(&theXSec);
|
||||
}
|
||||
|
||||
// 2009 by M. Kosov
|
||||
@@ -0,0 +1,72 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#include "G4QGSC_QGSCNeutronBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
G4QGSC_QGSCNeutronBuilder::
|
||||
G4QGSC_QGSCNeutronBuilder(G4bool quasiElastic)
|
||||
{
|
||||
theMin = 0*GeV;
|
||||
theModel = new G4TheoFSGenerator("QGSC");
|
||||
|
||||
theStringModel= new G4QGSModel< G4QGSParticipants >;
|
||||
theStringDecay = new G4ExcitedStringDecay(new G4QGSMFragmentation);
|
||||
theStringModel->SetFragmentationModel(theStringDecay);
|
||||
|
||||
theCascade = new G4QStringChipsParticleLevelInterface;
|
||||
|
||||
theModel->SetTransport(theCascade);
|
||||
theModel->SetHighEnergyGenerator(theStringModel);
|
||||
if (quasiElastic)
|
||||
{
|
||||
theQuasiElastic=new G4QuasiElasticChannel;
|
||||
theModel->SetQuasiElasticChannel(theQuasiElastic);
|
||||
} else
|
||||
{ theQuasiElastic=0;}
|
||||
}
|
||||
|
||||
G4QGSC_QGSCNeutronBuilder::
|
||||
~G4QGSC_QGSCNeutronBuilder()
|
||||
{
|
||||
delete theStringDecay;
|
||||
delete theStringModel;
|
||||
delete theCascade;
|
||||
if ( theQuasiElastic ) delete theQuasiElastic;
|
||||
delete theModel;
|
||||
}
|
||||
|
||||
void G4QGSC_QGSCNeutronBuilder::
|
||||
Build(G4NeutronInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->RegisterMe(theModel);
|
||||
aP->AddDataSet(&theXSec);
|
||||
}
|
||||
|
||||
// 2009 by M. Kosov
|
||||
@@ -0,0 +1,116 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#include "G4QGSC_QGSCPiKBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
G4QGSC_QGSCPiKBuilder::
|
||||
G4QGSC_QGSCPiKBuilder(G4bool quasiElastic)
|
||||
{
|
||||
theMin = 0*GeV;
|
||||
theModel = new G4TheoFSGenerator("QGSC");
|
||||
|
||||
theStringModel = new G4QGSModel< G4QGSParticipants >;
|
||||
theStringDecay = new G4ExcitedStringDecay(new G4QGSMFragmentation);
|
||||
theStringModel->SetFragmentationModel(theStringDecay);
|
||||
|
||||
theCascade = new G4QStringChipsParticleLevelInterface;
|
||||
|
||||
theModel->SetTransport(theCascade);
|
||||
theModel->SetHighEnergyGenerator(theStringModel);
|
||||
if (quasiElastic)
|
||||
{
|
||||
theQuasiElastic=new G4QuasiElasticChannel;
|
||||
theModel->SetQuasiElasticChannel(theQuasiElastic);
|
||||
} else
|
||||
{ theQuasiElastic=0;}
|
||||
}
|
||||
|
||||
G4QGSC_QGSCPiKBuilder::
|
||||
~G4QGSC_QGSCPiKBuilder()
|
||||
{
|
||||
delete theCascade;
|
||||
delete theStringDecay;
|
||||
delete theStringModel;
|
||||
if ( theQuasiElastic ) delete theQuasiElastic;
|
||||
delete theModel;
|
||||
}
|
||||
|
||||
void G4QGSC_QGSCPiKBuilder::
|
||||
Build(G4HadronElasticProcess * ) {}
|
||||
|
||||
void G4QGSC_QGSCPiKBuilder::
|
||||
Build(G4PionPlusInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->AddDataSet(&thePiCross);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
void G4QGSC_QGSCPiKBuilder::
|
||||
Build(G4PionMinusInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->AddDataSet(&thePiCross);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
void G4QGSC_QGSCPiKBuilder::
|
||||
Build(G4KaonPlusInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
void G4QGSC_QGSCPiKBuilder::
|
||||
Build(G4KaonMinusInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
void G4QGSC_QGSCPiKBuilder::
|
||||
Build(G4KaonZeroLInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
void G4QGSC_QGSCPiKBuilder::
|
||||
Build(G4KaonZeroSInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
// 2009 by M. Kosov
|
||||
@@ -0,0 +1,77 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#include "G4QGSC_QGSCProtonBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
G4QGSC_QGSCProtonBuilder::
|
||||
G4QGSC_QGSCProtonBuilder(G4bool quasiElastic)
|
||||
{
|
||||
theMin = 0*GeV;
|
||||
theModel = new G4TheoFSGenerator("QGSC");
|
||||
|
||||
theStringModel = new G4QGSModel< G4QGSParticipants >;
|
||||
theStringDecay = new G4ExcitedStringDecay(new G4QGSMFragmentation);
|
||||
theStringModel->SetFragmentationModel(theStringDecay);
|
||||
|
||||
theCascade = new G4QStringChipsParticleLevelInterface;
|
||||
|
||||
theModel->SetHighEnergyGenerator(theStringModel);
|
||||
theModel->SetTransport(theCascade);
|
||||
if (quasiElastic)
|
||||
{
|
||||
theQuasiElastic=new G4QuasiElasticChannel;
|
||||
theModel->SetQuasiElasticChannel(theQuasiElastic);
|
||||
} else
|
||||
{ theQuasiElastic=0;}
|
||||
}
|
||||
|
||||
G4QGSC_QGSCProtonBuilder::
|
||||
~G4QGSC_QGSCProtonBuilder()
|
||||
{
|
||||
delete theCascade;
|
||||
delete theStringDecay;
|
||||
delete theStringModel;
|
||||
if ( theQuasiElastic ) delete theQuasiElastic;
|
||||
delete theModel;
|
||||
}
|
||||
|
||||
void G4QGSC_QGSCProtonBuilder::
|
||||
Build(G4HadronElasticProcess * )
|
||||
{
|
||||
}
|
||||
|
||||
void G4QGSC_QGSCProtonBuilder::
|
||||
Build(G4ProtonInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->RegisterMe(theModel);
|
||||
aP->AddDataSet(&theXSec);
|
||||
}
|
||||
|
||||
// 2009 by M. Kosov
|
||||
@@ -23,10 +23,25 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4QGSPNeutronBuilder.cc,v 1.5 2009/03/31 11:03:50 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4QGSPNeutronBuilder
|
||||
//
|
||||
// Author: 2002 J.P. Wellisch
|
||||
//
|
||||
// Modified:
|
||||
// 30.03.2009 V.Ivanchenko create cross section by new
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
#include "G4QGSPNeutronBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
#include "G4NeutronInelasticCrossSection.hh"
|
||||
|
||||
G4QGSPNeutronBuilder::
|
||||
G4QGSPNeutronBuilder(G4bool quasiElastic, G4bool projectileDiffraction)
|
||||
@@ -91,7 +106,7 @@ Build(G4NeutronInelasticProcess * aP)
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->RegisterMe(theModel);
|
||||
aP->AddDataSet(&theXSec);
|
||||
aP->AddDataSet(new G4NeutronInelasticCrossSection);
|
||||
}
|
||||
|
||||
// 2002 by J.P. Wellisch
|
||||
|
||||
@@ -23,14 +23,30 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4QGSPPiKBuilder.cc,v 1.5 2009/03/31 11:03:50 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4QGSPPiKBuilder
|
||||
//
|
||||
// Author: 2002 J.P. Wellisch
|
||||
//
|
||||
// Modified:
|
||||
// 30.03.2009 V.Ivanchenko create cross section by new
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
#include "G4QGSPPiKBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
#include "G4PiNuclearCrossSection.hh"
|
||||
|
||||
G4QGSPPiKBuilder::
|
||||
G4QGSPPiKBuilder(G4bool quasiElastic, G4bool projectileDiffraction)
|
||||
{
|
||||
thePiData = new G4PiNuclearCrossSection();
|
||||
theMin = 12*GeV;
|
||||
theModel = new G4TheoFSGenerator("QGSP");
|
||||
|
||||
@@ -80,7 +96,7 @@ Build(G4PionPlusInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->AddDataSet(&thePiData);
|
||||
aP->AddDataSet(thePiData);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
@@ -89,7 +105,7 @@ Build(G4PionMinusInelasticProcess * aP)
|
||||
{
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->AddDataSet(&thePiData);
|
||||
aP->AddDataSet(thePiData);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
|
||||
@@ -23,13 +23,28 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#include "G4QGSPProtonBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
// $Id: G4QGSPProtonBuilder.cc,v 1.5 2009/03/31 11:03:50 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4QGSPProtonBuilder
|
||||
//
|
||||
// Author: 2002 J.P. Wellisch
|
||||
//
|
||||
// Modified:
|
||||
// 30.03.2009 V.Ivanchenko create cross section by new
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
#include "G4QGSPProtonBuilder.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
#include "G4ProtonInelasticCrossSection.hh"
|
||||
|
||||
G4QGSPProtonBuilder::
|
||||
G4QGSPProtonBuilder(G4bool quasiElastic, G4bool projectileDiffraction)
|
||||
G4QGSPProtonBuilder::
|
||||
G4QGSPProtonBuilder(G4bool quasiElastic, G4bool projectileDiffraction)
|
||||
{
|
||||
theMin = 12*GeV;
|
||||
theModel = new G4TheoFSGenerator("QGSP");
|
||||
@@ -58,23 +73,22 @@
|
||||
{ theProjectileDiffraction=0;}
|
||||
}
|
||||
|
||||
void G4QGSPProtonBuilder::
|
||||
Build(G4ProtonInelasticProcess * aP)
|
||||
void G4QGSPProtonBuilder::
|
||||
Build(G4ProtonInelasticProcess * aP)
|
||||
{
|
||||
// G4cout << "adding inelastic Proton in QGSP" << G4endl;
|
||||
aP->AddDataSet(&theXSec);
|
||||
// G4cout << "adding inelastic Proton in QGSP" << G4endl;
|
||||
aP->AddDataSet(new G4ProtonInelasticCrossSection());
|
||||
theModel->SetMinEnergy(theMin);
|
||||
theModel->SetMaxEnergy(100*TeV);
|
||||
aP->RegisterMe(theModel);
|
||||
}
|
||||
|
||||
void G4QGSPProtonBuilder::
|
||||
Build(G4HadronElasticProcess * )
|
||||
void G4QGSPProtonBuilder::
|
||||
Build(G4HadronElasticProcess * )
|
||||
{
|
||||
}
|
||||
|
||||
G4QGSPProtonBuilder::
|
||||
~G4QGSPProtonBuilder()
|
||||
G4QGSPProtonBuilder::~G4QGSPProtonBuilder()
|
||||
{
|
||||
delete thePreEquilib;
|
||||
delete theCascade;
|
||||
|
||||
@@ -0,0 +1,91 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4QInelasticCHIPSBuilder
|
||||
//
|
||||
// Author: 2009 M. Kosov
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Short comment: This is a physics list of only one model G4QInelastic for
|
||||
// all hadron-nuclear interactions at all energies. There is no model- or
|
||||
// process-mixing, while it is possible to merge (G4QProcessMixer) the G4_HP
|
||||
// processes at low energies if the G4QInelastic, which includes all necessary
|
||||
// nA inelastic processes, is found to be not saficient for some applications.
|
||||
// In this particular builder the G4QInelastic process is attached to all
|
||||
// hadrons other than nucleons or pi and K-mesons. Previously it could be done
|
||||
// only using the LHEP parameterized package or in a temporary form by the
|
||||
// QGSC model conditionally extended (just not crashing) to low energies.
|
||||
// *** Important *** As the CHIPS treatment of all hadrons is the same, and
|
||||
// very simple, this builder with time can be not used in the CHIPS physics list
|
||||
//
|
||||
// -----------------------------------------------------------------------------
|
||||
#include "G4QInelasticCHIPSBuilder.hh"
|
||||
|
||||
G4QInelasticCHIPSBuilder::G4QInelasticCHIPSBuilder(G4int ver):
|
||||
verbose(ver), wasActivated(false)
|
||||
{
|
||||
// pointer to the particle table
|
||||
theParticleTable = G4ParticleTable::GetParticleTable();
|
||||
theParticleIterator = theParticleTable->GetIterator();
|
||||
}
|
||||
|
||||
G4QInelasticCHIPSBuilder::~G4QInelasticCHIPSBuilder()
|
||||
{
|
||||
if(wasActivated) delete inelastic;
|
||||
}
|
||||
|
||||
void G4QInelasticCHIPSBuilder::Build()
|
||||
{
|
||||
if(wasActivated) return;
|
||||
wasActivated = true;
|
||||
theParticleIterator->reset();
|
||||
inelastic = new G4QInelastic();
|
||||
while( (*theParticleIterator)() )
|
||||
{
|
||||
G4ParticleDefinition* particle = theParticleIterator->value();
|
||||
G4String pname = particle->GetParticleName();
|
||||
if(pname == "kaon-" || pname == "kaon+" || pname == "kaon0S" || pname == "kaon0L" ||
|
||||
pname == "pi-" || pname == "pi+" || pname == "neutron" || pname == "proton" ||
|
||||
pname == "lambda" || pname == "sigma+" || pname == "sigma0" ||
|
||||
pname == "sigma-" || pname == "xi0" || pname == "xi-" || pname == "omega-" ||
|
||||
pname == "anti_proton" || pname == "anti_neutron" || pname == "anti_lambda" ||
|
||||
pname == "anti_sigma+" || pname == "anti_sigma0" || pname == "anti_sigma-" ||
|
||||
pname == "anti_xi0" || pname == "anti_xi-" || pname == "anti_omega-" )
|
||||
{
|
||||
if(verbose>1)G4cout<< "__G4QInelCHIPSBuilder: "<< pname <<" is defined here"<<G4endl;
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
pmanager->AddDiscreteProcess(inelastic);
|
||||
if(verbose>1) G4cout<<"###> G4QInelasticCHIPSBuilder: "<<inelastic->GetProcessName()
|
||||
<<" is added for "<<pname<<G4endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 2009 by M. Kosov
|
||||
@@ -0,0 +1,226 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4QMessenger.cc,v 1.1 2009/11/13 18:50:14 mkossov Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4QMessenger
|
||||
//
|
||||
// Author: 2009 M. V. Kossov
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
#include "G4QMessenger.hh"
|
||||
#include "G4QNeutrinoPhysics.hh"
|
||||
#include "G4QPhotoNuclearPhysics.hh"
|
||||
|
||||
G4QMessenger::G4QMessenger()
|
||||
{
|
||||
rootDir = new G4UIdirectory("/CHIPS_physics/");
|
||||
rootDir->SetGuidance("messenger of the CHIPS processes");
|
||||
weakDir=0;
|
||||
photoDir=0;
|
||||
}
|
||||
|
||||
G4QMessenger::~G4QMessenger()
|
||||
{
|
||||
delete rootDir;
|
||||
if(photoDir)
|
||||
{
|
||||
delete photoDir;
|
||||
delete theSynchR;
|
||||
delete minGamSR;
|
||||
delete theGamN;
|
||||
delete theEleN;
|
||||
delete theMuoN;
|
||||
delete theTauN;
|
||||
delete biasPhotoN;
|
||||
}
|
||||
else if(weakDir)
|
||||
{
|
||||
delete weakDir;
|
||||
delete theNuElN;
|
||||
delete theNuMuN;
|
||||
delete theNuTaN;
|
||||
delete biasNuNuc;
|
||||
}
|
||||
}
|
||||
|
||||
// Returns Pointer to the G4QMessenger class
|
||||
G4QMessenger* G4QMessenger::GetPointer()
|
||||
{
|
||||
static G4QMessenger theMessenger; //**Static body of CHIPS Messenger**
|
||||
return &theMessenger;
|
||||
}
|
||||
|
||||
void G4QMessenger::Add(G4QNeutrinoPhysics* weak)
|
||||
{
|
||||
theWeak = weak;
|
||||
|
||||
weakDir = new G4UIdirectory("/CHIPS_physics/neutrino/");
|
||||
weakDir->SetGuidance("weak (neutrino) processes");
|
||||
|
||||
// commands for neutrino_el-nuclear physics.
|
||||
theNuElN = new G4UIcmdWithAString("/CHIPS_physics/neutrino/NuElNuclear",this);
|
||||
theNuElN->SetGuidance("Switching of nu_el-nuclear physics.");
|
||||
theNuElN->SetParameterName("status","off");
|
||||
theNuElN->SetCandidates("on off");
|
||||
theNuElN->SetDefaultValue("off");
|
||||
theNuElN->AvailableForStates(G4State_PreInit, G4State_Idle);
|
||||
|
||||
// commands for neutrino_mu-nuclear physics.
|
||||
theNuMuN = new G4UIcmdWithAString("/CHIPS_physics/neutrino/NuMuNuclear",this);
|
||||
theNuMuN->SetGuidance("Switching of nu_mu-nuclear physics.");
|
||||
theNuMuN->SetParameterName("status","off");
|
||||
theNuMuN->SetCandidates("on off");
|
||||
theNuMuN->SetDefaultValue("off");
|
||||
theNuMuN->AvailableForStates(G4State_PreInit, G4State_Idle);
|
||||
|
||||
// commands for neutrino_tau-nuclear physics.
|
||||
theNuTaN = new G4UIcmdWithAString("/CHIPS_physics/neutrino/NuTauNuclear",this);
|
||||
theNuTaN->SetGuidance("Switching of nu_tau-nuclear physics.");
|
||||
theNuTaN->SetParameterName("status","off");
|
||||
theNuTaN->SetCandidates("on off");
|
||||
theNuTaN->SetDefaultValue("off");
|
||||
theNuTaN->AvailableForStates(G4State_PreInit, G4State_Idle);
|
||||
|
||||
// command for biasing of neutrino-nuclear reactions
|
||||
biasNuNuc = new G4UIcmdWithADouble("/CHIPS_physics/neutrino/NuNuc_Biasing", this);
|
||||
biasNuNuc->SetGuidance("Set a biasing coefficient for neutrino-nuclear ractions");
|
||||
biasNuNuc->SetParameterName("NuNuc_Biasing", false);
|
||||
biasNuNuc->SetRange("NuNuc_Biasing > 0.");
|
||||
biasNuNuc->SetDefaultValue(1.);
|
||||
biasNuNuc->AvailableForStates(G4State_PreInit, G4State_Idle);
|
||||
}
|
||||
|
||||
void G4QMessenger::Add(G4QPhotoNuclearPhysics* photo)
|
||||
{
|
||||
thePhoto = photo;
|
||||
|
||||
weakDir = new G4UIdirectory("/CHIPS_physics/photoNuclear/");
|
||||
weakDir->SetGuidance("weak (neutrino) processes");
|
||||
|
||||
// use G4UIcmdWithADouble for weighting of processes
|
||||
|
||||
// command for synchrotron radiation.
|
||||
theSynchR = new G4UIcmdWithAString("/CHIPS_physics/photoNuclear/SynchRadiation",this);
|
||||
theSynchR->SetGuidance("Switching on/off synchrotron radiation.");
|
||||
theSynchR->SetParameterName("status","off");
|
||||
theSynchR->SetCandidates("on off");
|
||||
theSynchR->SetDefaultValue("off");
|
||||
theSynchR->AvailableForStates(G4State_PreInit, G4State_Idle);
|
||||
|
||||
minGamSR = new G4UIcmdWithADouble("/CHIPS_physics/photoNuclear/MinGamma_SynchRad", this);
|
||||
minGamSR->SetGuidance("Set a minimum gamma for Synchratron Radiation");
|
||||
minGamSR->SetParameterName("MinGamma_SynchRad", false);
|
||||
minGamSR->SetRange("MinGamma_SynchRad >> 1.");
|
||||
minGamSR->SetDefaultValue(227.);
|
||||
minGamSR->AvailableForStates(G4State_PreInit, G4State_Idle);
|
||||
|
||||
// command for gamma-nuclear physics.
|
||||
theGamN = new G4UIcmdWithAString("/CHIPS_physics/photoNuclear/GammaNuclear",this);
|
||||
theGamN->SetGuidance("Switching of gamma-nuclear physics.");
|
||||
theGamN->SetParameterName("status","off");
|
||||
theGamN->SetCandidates("on off");
|
||||
theGamN->SetDefaultValue("on");
|
||||
theGamN->AvailableForStates(G4State_PreInit, G4State_Idle);
|
||||
|
||||
// command for electro-nuclear physics.
|
||||
theEleN = new G4UIcmdWithAString("/CHIPS_physics/photoNuclear/ElectroNuclear",this);
|
||||
theEleN->SetGuidance("Switching of electron-nuclear physics.");
|
||||
theEleN->SetParameterName("status","off");
|
||||
theEleN->SetCandidates("on off");
|
||||
theEleN->SetDefaultValue("off");
|
||||
theEleN->AvailableForStates(G4State_PreInit, G4State_Idle);
|
||||
|
||||
// command for muon-nuclear physics.
|
||||
theMuoN = new G4UIcmdWithAString("/CHIPS_physics/photoNuclear/MuonNuclear",this);
|
||||
theMuoN->SetGuidance("Switching of muon nuclear physics.");
|
||||
theMuoN->SetParameterName("status","off");
|
||||
theMuoN->SetCandidates("on off");
|
||||
theMuoN->SetDefaultValue("off");
|
||||
theMuoN->AvailableForStates(G4State_PreInit, G4State_Idle);
|
||||
|
||||
// command for tau-nuclear physics.
|
||||
theTauN = new G4UIcmdWithAString("/CHIPS_physics/photoNuclear/TauNuclear",this);
|
||||
theTauN->SetGuidance("Switching of tau nuclear physics.");
|
||||
theTauN->SetParameterName("status","off");
|
||||
theTauN->SetCandidates("on off");
|
||||
theTauN->SetDefaultValue("off");
|
||||
theTauN->AvailableForStates(G4State_PreInit, G4State_Idle);
|
||||
|
||||
|
||||
biasPhotoN = new G4UIcmdWithADouble("/CHIPS_physics/photoNuclear/PhotoN_Biasing", this);
|
||||
biasPhotoN->SetGuidance("Set a biasing coefficient for photo-nuclear ractions");
|
||||
biasPhotoN->SetParameterName("PhotoN_Biasing", false);
|
||||
biasPhotoN->SetRange("PhotoN_Biasing > 0.");
|
||||
biasPhotoN->SetDefaultValue(1.);
|
||||
biasPhotoN->AvailableForStates(G4State_PreInit, G4State_Idle);
|
||||
}
|
||||
|
||||
void G4QMessenger::SetNewValue(G4UIcommand* aComm, G4String aS)
|
||||
{
|
||||
if(photoDir)
|
||||
{
|
||||
if (aComm==theSynchR) thePhoto->SetSynchRadOnOff(aS);
|
||||
else if(aComm==minGamSR) thePhoto->SetMinGammaSR(minGamSR->GetNewDoubleValue(aS));
|
||||
else if(aComm==theGamN) thePhoto->SetGammaNuclearOnOff(aS);
|
||||
else if(aComm==theMuoN) thePhoto->SetElPosNuclearOnOff(aS);
|
||||
else if(aComm==theMuoN) thePhoto->SetMuonNuclearOnOff(aS);
|
||||
else if(aComm==theMuoN) thePhoto->SetTauNuclearOnOff(aS);
|
||||
else if(aComm==biasPhotoN)thePhoto->SetPhotoNucBias(biasPhotoN->GetNewDoubleValue(aS));
|
||||
}
|
||||
else if(weakDir)
|
||||
{
|
||||
if (aComm==theNuElN) theWeak->SetNuElNuclearOnOff(aS);
|
||||
else if(aComm==theNuMuN) theWeak->SetNuMuNuclearOnOff(aS);
|
||||
else if(aComm==theNuTaN) theWeak->SetNuTauNuclearOnOff(aS);
|
||||
else if(aComm==biasNuNuc) theWeak->SetNuNuclearBias(biasNuNuc->GetNewDoubleValue(aS));
|
||||
}
|
||||
}
|
||||
|
||||
G4String G4QMessenger::GetCurrentValue(G4UIcommand* aComm)
|
||||
{
|
||||
if(photoDir)
|
||||
{
|
||||
if (aComm==theSynchR) return thePhoto->GetSynchRadOnOff();
|
||||
else if(aComm==theGamN) return thePhoto->GetGammaNuclearOnOff();
|
||||
else if(aComm==theEleN) return thePhoto->GetElPosNuclearOnOff();
|
||||
else if(aComm==theMuoN) return thePhoto->GetMuonNuclearOnOff();
|
||||
else if(aComm==theTauN) return thePhoto->GetTauNuclearOnOff();
|
||||
}
|
||||
else if(weakDir)
|
||||
{
|
||||
if (aComm==theNuElN) return theWeak->GetNuElNuclearOnOff();
|
||||
else if(aComm==theNuMuN) return theWeak->GetNuMuNuclearOnOff();
|
||||
else if(aComm==theNuTaN) return theWeak->GetNuTauNuclearOnOff();
|
||||
}
|
||||
return "not_defined";
|
||||
}
|
||||
@@ -0,0 +1,145 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4QNeutrinoPhysics.cc,v 1.3 2009/11/30 18:44:49 mkossov Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4QNeutrinoPhysics
|
||||
//
|
||||
// Author: 2009 M. V. Kosov
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
#include "G4QNeutrinoPhysics.hh"
|
||||
|
||||
G4QNeutrinoPhysics::G4QNeutrinoPhysics(const G4String& name):
|
||||
G4VPhysicsConstructor(name), wasBuilt(false), nuEleActivated(false),
|
||||
nuMuoActivated(false), nuTauActivated(false), nuEleOn(false),
|
||||
nuMuoOn(false), nuTauOn(false), nuNucBias(1.), inelastic(0)
|
||||
{
|
||||
theMessenger = G4QMessenger::GetPointer();
|
||||
theMessenger->Add(this);
|
||||
}
|
||||
|
||||
G4QNeutrinoPhysics::~G4QNeutrinoPhysics()
|
||||
{
|
||||
if(wasBuilt && inelastic) delete inelastic;
|
||||
}
|
||||
|
||||
void G4QNeutrinoPhysics::ConstructParticle()
|
||||
{
|
||||
G4NeutrinoE::NeutrinoE();
|
||||
G4AntiNeutrinoE::AntiNeutrinoE();
|
||||
G4NeutrinoMu::NeutrinoMu();
|
||||
G4AntiNeutrinoMu::AntiNeutrinoMu();
|
||||
G4NeutrinoTau::NeutrinoTau();
|
||||
G4AntiNeutrinoTau::AntiNeutrinoTau();
|
||||
}
|
||||
|
||||
void G4QNeutrinoPhysics::SetNuElNuclearOnOff(G4String& newSwitch)
|
||||
{
|
||||
if(wasBuilt) G4cout<<"G4QNeutrinoPhysics:No, processes are already builded!"<<G4endl;
|
||||
else if(newSwitch == "on" || newSwitch == "ON" || newSwitch == "On") nuEleOn = true;
|
||||
else nuEleOn = false;
|
||||
}
|
||||
|
||||
void G4QNeutrinoPhysics::SetNuMuNuclearOnOff(G4String& newSwitch)
|
||||
{
|
||||
if(wasBuilt) G4cout<<"G4QNeutrinoPhysics:No, processes are already builded!"<<G4endl;
|
||||
else if(newSwitch == "on" || newSwitch == "ON" || newSwitch == "On") nuMuoOn = true;
|
||||
else nuMuoOn = false;
|
||||
}
|
||||
|
||||
void G4QNeutrinoPhysics::SetNuTauNuclearOnOff(G4String& newSwitch)
|
||||
{
|
||||
if(wasBuilt) G4cout<<"G4QNeutrinoPhysics:No, processes are already builded!"<<G4endl;
|
||||
else if(newSwitch == "on" || newSwitch == "ON" || newSwitch == "On") nuTauOn = true;
|
||||
else nuTauOn = false;
|
||||
}
|
||||
|
||||
void G4QNeutrinoPhysics::SetNuNuclearBias(G4double newValue)
|
||||
{
|
||||
if(wasBuilt) G4cout<<"G4QNeutrinoPhysics:No, processes are already builded!"<<G4endl;
|
||||
else nuNucBias = newValue;
|
||||
}
|
||||
|
||||
void G4QNeutrinoPhysics::ConstructProcess()
|
||||
{
|
||||
if(wasBuilt) return;
|
||||
if(nuEleOn || nuMuoOn || nuTauOn)
|
||||
{
|
||||
wasBuilt = true;
|
||||
G4cout<<"Builded=>G4QNeutrinoPhysics: "<<nuEleOn<<", "<<nuMuoOn<<", "<<nuTauOn<<G4endl;
|
||||
inelastic = new G4QInelastic("neutrinoNuclear");
|
||||
inelastic->SetWeakNucBias(nuNucBias); // enough only once (static)
|
||||
if (nuEleOn) BuildNuEleNuclear();
|
||||
if (nuMuoOn) BuildNuMuoNuclear();
|
||||
if (nuTauOn) BuildNuTauNuclear();
|
||||
}
|
||||
}
|
||||
|
||||
void G4QNeutrinoPhysics::BuildNuEleNuclear()
|
||||
{
|
||||
if(nuEleActivated) return;
|
||||
nuEleActivated = true;
|
||||
G4ProcessManager * pManager = 0;
|
||||
|
||||
pManager = G4NeutrinoE::NeutrinoE()->GetProcessManager();
|
||||
pManager->AddDiscreteProcess(inelastic);
|
||||
|
||||
pManager = G4AntiNeutrinoE::AntiNeutrinoE()->GetProcessManager();
|
||||
pManager->AddDiscreteProcess(inelastic);
|
||||
}
|
||||
|
||||
void G4QNeutrinoPhysics::BuildNuMuoNuclear()
|
||||
{
|
||||
if(nuMuoActivated) return;
|
||||
nuMuoActivated = true;
|
||||
G4ProcessManager * pManager = 0;
|
||||
|
||||
pManager = G4NeutrinoMu::NeutrinoMu()->GetProcessManager();
|
||||
pManager->AddDiscreteProcess(inelastic);
|
||||
|
||||
pManager = G4AntiNeutrinoMu::AntiNeutrinoMu()->GetProcessManager();
|
||||
pManager->AddDiscreteProcess(inelastic);
|
||||
}
|
||||
|
||||
void G4QNeutrinoPhysics::BuildNuTauNuclear()
|
||||
{
|
||||
if(nuTauActivated) return;
|
||||
nuTauActivated = true;
|
||||
G4ProcessManager * pManager = 0;
|
||||
|
||||
pManager = G4NeutrinoTau::NeutrinoTau()->GetProcessManager();
|
||||
pManager->AddDiscreteProcess(inelastic);
|
||||
|
||||
pManager = G4AntiNeutrinoTau::AntiNeutrinoTau()->GetProcessManager();
|
||||
pManager->AddDiscreteProcess(inelastic);
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4QNeutronBuilder.cc,v 1.4 2009/11/16 19:12:10 mkossov Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4QNeutronBuilder
|
||||
//
|
||||
// Author: 2009 M. Kosov
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// Short description: for possible use in QGSC_QGSC (not needed for QGSC_CHIPS)
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
#include "G4QNeutronBuilder.hh"
|
||||
|
||||
G4QNeutronBuilder::G4QNeutronBuilder(): wasActivated(false)
|
||||
{
|
||||
theNeutronInelastic = new G4NeutronInelasticProcess;
|
||||
theCHIPSInelastic = new G4QInelastic;
|
||||
const G4String& processName = "MixedNeutronInelasticProcess";
|
||||
const G4ParticleDefinition* proj = G4Neutron::Neutron();
|
||||
theProcessMixer= new G4QDiscProcessMixer(processName, proj);
|
||||
}
|
||||
|
||||
G4QNeutronBuilder::~G4QNeutronBuilder()
|
||||
{
|
||||
delete theProcessMixer;
|
||||
delete theCHIPSInelastic;
|
||||
delete theNeutronInelastic;
|
||||
}
|
||||
|
||||
void G4QNeutronBuilder::Build()
|
||||
{
|
||||
wasActivated = true;
|
||||
std::vector<G4VNeutronBuilder *>::iterator i;
|
||||
for(i=theModelCollections.begin(); i!=theModelCollections.end(); i++)
|
||||
{
|
||||
(*i)->Build(theNeutronInelastic);
|
||||
}
|
||||
G4ProcessManager * theProcMan = G4Neutron::Neutron()->GetProcessManager();
|
||||
theProcessMixer->AddDiscreteProcess(theNeutronInelastic, 1.E8);// the second part is fake
|
||||
theProcessMixer->AddDiscreteProcess(theCHIPSInelastic, 290*megaelectronvolt);
|
||||
theProcMan->AddDiscreteProcess(theNeutronInelastic);
|
||||
}
|
||||
// 2009 by M. Kosov
|
||||
@@ -0,0 +1,206 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4QPhotoNuclearPhysics.cc,v 1.2 2009/11/16 19:12:10 mkossov Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4QPhotoNuclearPhysics
|
||||
//
|
||||
// Author: 2009 M. V. Kosov
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
#include "G4QPhotoNuclearPhysics.hh"
|
||||
|
||||
|
||||
G4QPhotoNuclearPhysics::G4QPhotoNuclearPhysics(const G4String& name):
|
||||
G4VPhysicsConstructor(name), wasBuilt(false), SynchRActivated(false),
|
||||
GamNucActivated(false), EleNucActivated(false), MuoNucActivated(false),
|
||||
TauNucActivated(false), synchrOn(true), synchrMinGam(227.), gamNucOn(true),
|
||||
eleNucOn(true), muoNucOn(true), tauNucOn(true), photoNucBias(1.)
|
||||
{
|
||||
theMessenger = G4QMessenger::GetPointer();
|
||||
theMessenger->Add(this);
|
||||
}
|
||||
|
||||
G4QPhotoNuclearPhysics::~G4QPhotoNuclearPhysics()
|
||||
{
|
||||
if(wasBuilt)
|
||||
{
|
||||
delete inelastic;
|
||||
if(synchrOn) delete synchrad;
|
||||
}
|
||||
}
|
||||
|
||||
void G4QPhotoNuclearPhysics::SetSynchRadOnOff(G4String& newSwitch)
|
||||
{
|
||||
if(wasBuilt) G4cout<<"G4QPhotoNuclearPhysics:No, processes are already builded!"<<G4endl;
|
||||
else if(newSwitch == "on" || newSwitch == "ON" || newSwitch == "On") synchrOn = true;
|
||||
else synchrOn = false;
|
||||
}
|
||||
|
||||
void G4QPhotoNuclearPhysics::SetGammaNuclearOnOff(G4String& newSwitch)
|
||||
{
|
||||
if(wasBuilt) G4cout<<"G4QPhotoNuclearPhysics:No, processes are already builded!"<<G4endl;
|
||||
else if(newSwitch == "on" || newSwitch == "ON" || newSwitch == "On") gamNucOn = true;
|
||||
else gamNucOn = false;
|
||||
}
|
||||
|
||||
void G4QPhotoNuclearPhysics::SetElPosNuclearOnOff(G4String& newSwitch)
|
||||
{
|
||||
if(wasBuilt) G4cout<<"G4QPhotoNuclearPhysics:No, processes are already builded!"<<G4endl;
|
||||
else if(newSwitch == "on" || newSwitch == "ON" || newSwitch == "On") eleNucOn = true;
|
||||
else eleNucOn = false;
|
||||
}
|
||||
|
||||
void G4QPhotoNuclearPhysics::SetMuonNuclearOnOff(G4String& newSwitch)
|
||||
{
|
||||
if(wasBuilt) G4cout<<"G4QPhotoNuclearPhysics:No, processes are already builded!"<<G4endl;
|
||||
else if(newSwitch == "on" || newSwitch == "ON" || newSwitch == "On") muoNucOn = true;
|
||||
else muoNucOn = false;
|
||||
}
|
||||
|
||||
void G4QPhotoNuclearPhysics::SetTauNuclearOnOff(G4String& newSwitch)
|
||||
{
|
||||
if(wasBuilt) G4cout<<"G4QPhotoNuclearPhysics:No, processes are already builded!"<<G4endl;
|
||||
else if(newSwitch == "on" || newSwitch == "ON" || newSwitch == "On") tauNucOn = true;
|
||||
else tauNucOn = false;
|
||||
}
|
||||
|
||||
void G4QPhotoNuclearPhysics::SetMinGammaSR(G4double newValue)
|
||||
{
|
||||
if(wasBuilt) G4cout<<"G4QPhotoNuclearPhysics:No, processes are already builded!"<<G4endl;
|
||||
else synchrMinGam = newValue;
|
||||
}
|
||||
|
||||
void G4QPhotoNuclearPhysics::SetPhotoNucBias(G4double newValue)
|
||||
{
|
||||
if(wasBuilt) G4cout<<"G4QPhotoNuclearPhysics:No, processes are already builded!"<<G4endl;
|
||||
else photoNucBias = newValue;
|
||||
}
|
||||
|
||||
void G4QPhotoNuclearPhysics::ConstructParticle()
|
||||
{
|
||||
G4Gamma::Gamma();
|
||||
G4Electron::Electron();
|
||||
G4Positron::Positron();
|
||||
G4MuonPlus::MuonPlus();
|
||||
G4MuonMinus::MuonMinus();
|
||||
G4TauPlus::TauPlus();
|
||||
G4TauMinus::TauMinus();
|
||||
if (synchrOn)
|
||||
{
|
||||
G4MesonConstructor pMesonConstructor;
|
||||
pMesonConstructor.ConstructParticle();
|
||||
|
||||
G4BaryonConstructor pBaryonConstructor;
|
||||
pBaryonConstructor.ConstructParticle();
|
||||
}
|
||||
}
|
||||
|
||||
void G4QPhotoNuclearPhysics::ConstructProcess()
|
||||
{
|
||||
if(wasBuilt) return;
|
||||
wasBuilt = true;
|
||||
|
||||
inelastic = new G4QInelastic("photoNuclear");
|
||||
inelastic->SetPhotNucBias(photoNucBias);
|
||||
|
||||
if (synchrOn) BuildSynchRad();
|
||||
if (gamNucOn) BuildGammaNuclear();
|
||||
if (eleNucOn) BuildElectroNuclear();
|
||||
if (muoNucOn) BuildMuonNuclear();
|
||||
if (tauNucOn) BuildTauNuclear();
|
||||
}
|
||||
|
||||
void G4QPhotoNuclearPhysics::BuildGammaNuclear()
|
||||
{
|
||||
if(GamNucActivated) return;
|
||||
GamNucActivated = true;
|
||||
G4ProcessManager* pManager = G4Gamma::Gamma()->GetProcessManager();
|
||||
pManager->AddDiscreteProcess(inelastic);
|
||||
}
|
||||
|
||||
void G4QPhotoNuclearPhysics::BuildElectroNuclear()
|
||||
{
|
||||
if(EleNucActivated) return;
|
||||
EleNucActivated = true;
|
||||
G4ProcessManager * pManager = 0;
|
||||
|
||||
pManager = G4Electron::Electron()->GetProcessManager();
|
||||
pManager->AddDiscreteProcess(inelastic);
|
||||
|
||||
pManager = G4Positron::Positron()->GetProcessManager();
|
||||
pManager->AddDiscreteProcess(inelastic);
|
||||
}
|
||||
|
||||
void G4QPhotoNuclearPhysics::BuildMuonNuclear()
|
||||
{
|
||||
if(MuoNucActivated) return;
|
||||
MuoNucActivated = true;
|
||||
G4ProcessManager * pManager = 0;
|
||||
|
||||
pManager = G4MuonPlus::MuonPlus()->GetProcessManager();
|
||||
pManager->AddDiscreteProcess(inelastic);
|
||||
|
||||
pManager = G4MuonMinus::MuonMinus()->GetProcessManager();
|
||||
pManager->AddDiscreteProcess(inelastic);
|
||||
}
|
||||
|
||||
void G4QPhotoNuclearPhysics::BuildTauNuclear()
|
||||
{
|
||||
if(TauNucActivated) return;
|
||||
TauNucActivated = true;
|
||||
G4ProcessManager * pManager = 0;
|
||||
|
||||
pManager = G4TauPlus::TauPlus()->GetProcessManager();
|
||||
pManager->AddDiscreteProcess(inelastic);
|
||||
|
||||
pManager = G4TauMinus::TauMinus()->GetProcessManager();
|
||||
pManager->AddDiscreteProcess(inelastic);
|
||||
}
|
||||
|
||||
// The CHIPS Synchrotron radiation process is working for all charged particles
|
||||
void G4QPhotoNuclearPhysics::BuildSynchRad()
|
||||
{
|
||||
if(SynchRActivated) return;
|
||||
SynchRActivated = true;
|
||||
synchrad = new G4QSynchRad();
|
||||
while( (*theParticleIterator)() )
|
||||
{
|
||||
G4ParticleDefinition* particle = theParticleIterator->value();
|
||||
G4double charge = particle->GetPDGCharge();
|
||||
if(charge != 0.0)
|
||||
{
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
pmanager->AddDiscreteProcess(synchrad);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4QProtonBuilder.cc,v 1.4 2009/11/16 19:12:10 mkossov Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4QProtonBuilder
|
||||
//
|
||||
// Author: 2009 M. Kosov
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// Short description: for G4QDiscProcessMixer use in the QGSC_CHIPS physics list
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
#include "G4QProtonBuilder.hh"
|
||||
|
||||
G4QProtonBuilder::G4QProtonBuilder(): wasActivated(false)
|
||||
{
|
||||
theProtonInelastic = new G4ProtonInelasticProcess;
|
||||
theCHIPSInelastic = new G4QInelastic;
|
||||
const G4String& processName = "MixedProtonInelasticProcess";
|
||||
const G4ParticleDefinition* proj = G4Proton::Proton();
|
||||
theProcessMixer= new G4QDiscProcessMixer(processName, proj);
|
||||
}
|
||||
|
||||
G4QProtonBuilder::~G4QProtonBuilder()
|
||||
{
|
||||
delete theProcessMixer;
|
||||
delete theCHIPSInelastic;
|
||||
delete theProtonInelastic;
|
||||
}
|
||||
|
||||
void G4QProtonBuilder::Build()
|
||||
{
|
||||
wasActivated = true;
|
||||
std::vector<G4VProtonBuilder *>::iterator i;
|
||||
for(i=theModelCollections.begin(); i!=theModelCollections.end(); i++)
|
||||
{
|
||||
(*i)->Build(theProtonInelastic);
|
||||
}
|
||||
G4ProcessManager * theProcMan = G4Proton::Proton()->GetProcessManager();
|
||||
theProcessMixer->AddDiscreteProcess(theProtonInelastic, 1.E8); // the second part is fake
|
||||
theProcessMixer->AddDiscreteProcess(theCHIPSInelastic, 290*megaelectronvolt);
|
||||
theProcMan->AddDiscreteProcess(theProcessMixer);
|
||||
}
|
||||
|
||||
// 2009 by M. Kosov
|
||||
@@ -0,0 +1,53 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4VHadronModelBuilder.cc,v 1.1 2009/10/04 16:29:54 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4VHadronModelBuilder
|
||||
//
|
||||
// Author: 28 June 2009 V.Ivanchenko
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
#include "G4VHadronModelBuilder.hh"
|
||||
|
||||
G4VHadronModelBuilder::G4VHadronModelBuilder(const G4String& aName)
|
||||
: model(0),name(aName)
|
||||
{}
|
||||
|
||||
G4VHadronModelBuilder::~G4VHadronModelBuilder()
|
||||
{}
|
||||
|
||||
G4HadronicInteraction* G4VHadronModelBuilder::GetModel()
|
||||
{
|
||||
if(!model) model = BuildModel();
|
||||
return model;
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4VNeutronBuilder.cc,v 1.1 2009/03/31 18:39:53 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4VNeutronBuilder
|
||||
//
|
||||
// Author: 2002 J.P. Wellisch
|
||||
//
|
||||
// Modified:
|
||||
// 30.03.2009 V.Ivanchenko move constructor and destructor to source
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
#include "G4VNeutronBuilder.hh"
|
||||
|
||||
G4VNeutronBuilder::G4VNeutronBuilder()
|
||||
{}
|
||||
|
||||
G4VNeutronBuilder::~G4VNeutronBuilder()
|
||||
{}
|
||||
@@ -0,0 +1,46 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4VPiKBuilder.cc,v 1.1 2009/03/31 18:39:53 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4VPiKBuilder
|
||||
//
|
||||
// Author: 2002 J.P. Wellisch
|
||||
//
|
||||
// Modified:
|
||||
// 30.03.2009 V.Ivanchenko move constructor and destructor to source
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
#include "G4VPiKBuilder.hh"
|
||||
|
||||
G4VPiKBuilder::G4VPiKBuilder()
|
||||
{}
|
||||
|
||||
G4VPiKBuilder::~G4VPiKBuilder()
|
||||
{}
|
||||
@@ -0,0 +1,46 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4VProtonBuilder.cc,v 1.1 2009/03/31 18:39:53 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-03 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4VProtonBuilder
|
||||
//
|
||||
// Author: 2002 J.P. Wellisch
|
||||
//
|
||||
// Modified:
|
||||
// 30.03.2009 V.Ivanchenko move constructor and destructor to source
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
#include "G4VProtonBuilder.hh"
|
||||
|
||||
G4VProtonBuilder::G4VProtonBuilder()
|
||||
{}
|
||||
|
||||
G4VProtonBuilder::~G4VProtonBuilder()
|
||||
{}
|
||||
@@ -0,0 +1,94 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
|
||||
#include "G4WarnPLStatus.hh"
|
||||
|
||||
G4WarnPLStatus::G4WarnPLStatus()
|
||||
{}
|
||||
|
||||
G4WarnPLStatus::~G4WarnPLStatus()
|
||||
{}
|
||||
|
||||
void G4WarnPLStatus::Replaced(const G4String aPL, const G4String Replacement) const
|
||||
{
|
||||
G4cout <<
|
||||
"*=====================================================================" <<G4endl <<
|
||||
"* " <<G4endl <<
|
||||
"* The Physics list "<<aPL<<" no longer exists " <<G4endl <<
|
||||
"* We recommend you use the physics lists "<<Replacement<< "," <<G4endl <<
|
||||
"* this offers similar functionality for most use cases " <<G4endl <<
|
||||
"* " <<G4endl <<
|
||||
"* " <<G4endl <<
|
||||
"* We invite you to report your use case for, and your experience with" <<G4endl <<
|
||||
"* this physics list on the Geant4 User Forum dedicated to physics " <<G4endl <<
|
||||
"* lists: " <<G4endl <<
|
||||
"* http://hypernews.slac.stanford.edu/HyperNews/geant4/get/phys-list.html"<<G4endl <<
|
||||
"* " <<G4endl <<
|
||||
"*=====================================================================*" <<G4endl<<
|
||||
G4endl;
|
||||
}
|
||||
|
||||
void G4WarnPLStatus::Unsupported(const G4String aPL, const G4String Replacement) const
|
||||
{
|
||||
G4cout <<
|
||||
"*=====================================================================" <<G4endl <<
|
||||
"* " <<G4endl <<
|
||||
"* The Physics list "<<aPL<<" is NO LONGER SUPPORTED ! " <<G4endl <<
|
||||
"* and is likely to be deleted in a future release of Geant4 " <<G4endl <<
|
||||
"* " <<G4endl;
|
||||
if (Replacement.size() > 0)
|
||||
{
|
||||
G4cout <<
|
||||
"* We recommend you try the physics lists "<<Replacement<< "," <<G4endl <<
|
||||
"* this offers similar functionality for most use cases " <<G4endl <<
|
||||
"* " <<G4endl;
|
||||
|
||||
}
|
||||
G4cout <<
|
||||
"* " <<G4endl <<
|
||||
"* We invite you to report your use case for, and your experience with" <<G4endl <<
|
||||
"* this physics list on the Geant4 User Forum dedicated to physics " <<G4endl <<
|
||||
"* lists: " <<G4endl <<
|
||||
"* http://hypernews.slac.stanford.edu/HyperNews/geant4/get/phys-list.html"<<G4endl <<
|
||||
"* " <<G4endl <<
|
||||
"*=====================================================================*" <<G4endl<<
|
||||
G4endl;
|
||||
}
|
||||
|
||||
void G4WarnPLStatus::Experimental(const G4String aPL) const
|
||||
{
|
||||
G4cout <<
|
||||
"*=====================================================================" <<G4endl <<
|
||||
"* " <<G4endl <<
|
||||
"* The Physics list "<<aPL<<" is an experimental physics list ! " <<G4endl <<
|
||||
"* " <<G4endl <<
|
||||
"* Please report your use case for, and your experience with this " <<G4endl <<
|
||||
"* physics list on the Geant4 User Forum dedicated to physics lists: " <<G4endl <<
|
||||
"* http://hypernews.slac.stanford.edu/HyperNews/geant4/get/phys-list.html"<<G4endl <<
|
||||
"* " <<G4endl <<
|
||||
"*=====================================================================*" <<G4endl<<
|
||||
G4endl;
|
||||
}
|
||||
Reference in New Issue
Block a user