Import Geant4 11.0.0 source tree
This commit is contained in:
committed by
Ben Morgan
parent
6399a014b6
commit
80e2389dd8
@@ -79,8 +79,6 @@ GammaRayTelAnalysis::GammaRayTelAnalysis()
|
||||
|
||||
GammaRayTelAnalysis::~GammaRayTelAnalysis() {
|
||||
Finish();
|
||||
// Complete clean-up
|
||||
delete G4AnalysisManager::Instance();
|
||||
}
|
||||
|
||||
|
||||
@@ -149,6 +147,7 @@ void GammaRayTelAnalysis::setNtuple(float E, float p, float x,
|
||||
void GammaRayTelAnalysis::BeginOfRun()
|
||||
{
|
||||
G4AnalysisManager* man = G4AnalysisManager::Instance();
|
||||
man->SetDefaultFileType("root");
|
||||
|
||||
// Open an output file
|
||||
|
||||
|
||||
@@ -1,131 +0,0 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
#include "GammaRayTelEMlowePhysics.hh"
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4ios.hh"
|
||||
#include <iomanip>
|
||||
|
||||
// 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-/e+
|
||||
|
||||
#include "G4eMultipleScattering.hh"
|
||||
#include "G4eIonisation.hh"
|
||||
#include "G4LivermoreIonisationModel.hh"
|
||||
#include "G4eBremsstrahlung.hh"
|
||||
#include "G4LivermoreBremsstrahlungModel.hh"
|
||||
#include "G4eplusAnnihilation.hh"
|
||||
|
||||
|
||||
GammaRayTelEMlowePhysics::GammaRayTelEMlowePhysics(const G4String& name)
|
||||
: G4VPhysicsConstructor(name)
|
||||
{
|
||||
}
|
||||
|
||||
GammaRayTelEMlowePhysics::~GammaRayTelEMlowePhysics()
|
||||
{
|
||||
}
|
||||
|
||||
void GammaRayTelEMlowePhysics::ConstructParticle()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
|
||||
void GammaRayTelEMlowePhysics::ConstructProcess()
|
||||
{
|
||||
G4ProcessManager * pManager = 0;
|
||||
|
||||
// Gamma Physics
|
||||
pManager = G4Gamma::Gamma()->GetProcessManager();
|
||||
|
||||
G4RayleighScattering* theRayleigh = new G4RayleighScattering();
|
||||
theRayleigh->SetEmModel(new G4LivermoreRayleighModel());
|
||||
G4PhotoElectricEffect* thePhotoElectricEffect = new G4PhotoElectricEffect();
|
||||
thePhotoElectricEffect->SetEmModel(new G4LivermorePhotoElectricModel());
|
||||
G4ComptonScattering* theComptonScattering = new G4ComptonScattering();
|
||||
theComptonScattering->SetEmModel(new G4LivermoreComptonModel());
|
||||
G4GammaConversion* theGammaConversion = new G4GammaConversion();
|
||||
theGammaConversion->SetEmModel(new G4LivermoreGammaConversionModel());
|
||||
|
||||
pManager->AddDiscreteProcess(theRayleigh);
|
||||
pManager->AddDiscreteProcess(thePhotoElectricEffect);
|
||||
pManager->AddDiscreteProcess(theComptonScattering);
|
||||
pManager->AddDiscreteProcess(theGammaConversion);
|
||||
|
||||
|
||||
// Electron Physics
|
||||
|
||||
pManager = G4Electron::Electron()->GetProcessManager();
|
||||
|
||||
|
||||
G4eMultipleScattering* msc = new G4eMultipleScattering();
|
||||
|
||||
G4eIonisation* eIonisation = new G4eIonisation();
|
||||
eIonisation->SetEmModel(new G4LivermoreIonisationModel());
|
||||
|
||||
G4eBremsstrahlung* eBremsstrahlung = new G4eBremsstrahlung();
|
||||
eBremsstrahlung->SetEmModel(new G4LivermoreBremsstrahlungModel());
|
||||
|
||||
pManager->AddProcess(msc,-1, 1, 1);
|
||||
pManager->AddProcess(eIonisation,-1, 2, 2);
|
||||
pManager->AddProcess(eBremsstrahlung, -1,-3, 3);
|
||||
|
||||
|
||||
//Positron Physics
|
||||
|
||||
pManager = G4Positron::Positron()->GetProcessManager();
|
||||
|
||||
G4eMultipleScattering* msc_p = new G4eMultipleScattering();
|
||||
pManager->AddProcess(msc_p,-1, 1, 1);
|
||||
|
||||
G4eIonisation* eIonisation_p = new G4eIonisation();
|
||||
pManager->AddProcess(eIonisation_p, -1, 2, 2);
|
||||
pManager->AddProcess(new G4eBremsstrahlung(), -1,-1, 3);
|
||||
|
||||
pManager->AddProcess(new G4eplusAnnihilation(),0,-1, 4);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,102 +0,0 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
#include "GammaRayTelEMstdPhysics.hh"
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4ios.hh"
|
||||
#include <iomanip>
|
||||
|
||||
// gamma
|
||||
|
||||
#include "G4PhotoElectricEffect.hh"
|
||||
#include "G4ComptonScattering.hh"
|
||||
#include "G4GammaConversion.hh"
|
||||
|
||||
|
||||
// e-
|
||||
#include "G4eMultipleScattering.hh"
|
||||
#include "G4eIonisation.hh"
|
||||
#include "G4eBremsstrahlung.hh"
|
||||
|
||||
// e+
|
||||
#include "G4eIonisation.hh"
|
||||
#include "G4eBremsstrahlung.hh"
|
||||
#include "G4eplusAnnihilation.hh"
|
||||
|
||||
|
||||
GammaRayTelEMstdPhysics::GammaRayTelEMstdPhysics(const G4String& name)
|
||||
: G4VPhysicsConstructor(name)
|
||||
{
|
||||
}
|
||||
|
||||
GammaRayTelEMstdPhysics::~GammaRayTelEMstdPhysics()
|
||||
{
|
||||
}
|
||||
|
||||
void GammaRayTelEMstdPhysics::ConstructParticle()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
|
||||
void GammaRayTelEMstdPhysics::ConstructProcess()
|
||||
{
|
||||
G4ProcessManager * pManager = 0;
|
||||
|
||||
// Gamma Physics
|
||||
pManager = G4Gamma::Gamma()->GetProcessManager();
|
||||
|
||||
pManager->AddDiscreteProcess(new G4PhotoElectricEffect);
|
||||
pManager->AddDiscreteProcess(new G4ComptonScattering);
|
||||
pManager->AddDiscreteProcess(new G4GammaConversion);
|
||||
|
||||
|
||||
// Electron Physics
|
||||
|
||||
pManager = G4Electron::Electron()->GetProcessManager();
|
||||
|
||||
pManager->AddProcess(new G4eMultipleScattering, -1, 1, 1);
|
||||
pManager->AddProcess(new G4eIonisation, -1, 2, 2);
|
||||
pManager->AddProcess(new G4eBremsstrahlung, -1, 3, 3);
|
||||
|
||||
// Positron Physics
|
||||
|
||||
pManager = G4Positron::Positron()->GetProcessManager();
|
||||
|
||||
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);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,69 +0,0 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
#include "GammaRayTelGeneralPhysics.hh"
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4ios.hh"
|
||||
#include <iomanip>
|
||||
|
||||
GammaRayTelGeneralPhysics::GammaRayTelGeneralPhysics(const G4String& name)
|
||||
: G4VPhysicsConstructor(name)
|
||||
{
|
||||
}
|
||||
|
||||
GammaRayTelGeneralPhysics::~GammaRayTelGeneralPhysics()
|
||||
{
|
||||
}
|
||||
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
void GammaRayTelGeneralPhysics::ConstructParticle()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void GammaRayTelGeneralPhysics::ConstructProcess()
|
||||
{
|
||||
// Add Decay Process
|
||||
auto particleIterator=GetParticleIterator();
|
||||
particleIterator->reset();
|
||||
while( (*particleIterator)() ){
|
||||
G4ParticleDefinition* particle = particleIterator->value();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
if (fDecayProcess.IsApplicable(*particle) && !particle->IsShortLived()) {
|
||||
pmanager ->AddProcess(&fDecayProcess);
|
||||
// set ordering for PostStepDoIt and AtRestDoIt
|
||||
pmanager ->SetProcessOrdering(&fDecayProcess, idxPostStep);
|
||||
pmanager ->SetProcessOrdering(&fDecayProcess, idxAtRest);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,310 +0,0 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
#include <iomanip>
|
||||
|
||||
#include "GammaRayTelHadronPhysics.hh"
|
||||
#include "globals.hh"
|
||||
#include "G4ios.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "G4ShortLivedConstructor.hh"
|
||||
#include "G4HadronicParameters.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
#include "G4hMultipleScattering.hh"
|
||||
#include "G4hIonisation.hh"
|
||||
|
||||
#include "G4HadronElasticProcess.hh"
|
||||
#include "G4NeutronFissionProcess.hh"
|
||||
#include "G4NeutronCaptureProcess.hh"
|
||||
#include "G4NeutronCaptureXS.hh"
|
||||
#include "G4HadronElastic.hh"
|
||||
|
||||
#include "G4HadronInelasticProcess.hh"
|
||||
|
||||
// Low-energy Models
|
||||
#include "G4LFission.hh"
|
||||
|
||||
// Cross section handlers and high energy models
|
||||
#include "G4VCrossSectionDataSet.hh"
|
||||
#include "G4CascadeInterface.hh"
|
||||
#include "G4BGGPionInelasticXS.hh"
|
||||
#include "G4ChipsKaonZeroInelasticXS.hh"
|
||||
#include "G4ChipsKaonMinusInelasticXS.hh"
|
||||
#include "G4ChipsKaonPlusInelasticXS.hh"
|
||||
#include "G4CrossSectionDataSetRegistry.hh"
|
||||
#include "G4CrossSectionInelastic.hh"
|
||||
#include "G4ComponentAntiNuclNuclearXS.hh"
|
||||
#include "G4BGGNucleonInelasticXS.hh"
|
||||
|
||||
// Stopping processes
|
||||
#include "G4HadronStoppingProcess.hh"
|
||||
#include "G4HadronicAbsorptionBertini.hh"
|
||||
#include "G4HadronicAbsorptionFritiof.hh"
|
||||
|
||||
// quark gluon string model with chips afterburner.
|
||||
#include "G4FTFModel.hh"
|
||||
#include "G4TheoFSGenerator.hh"
|
||||
#include "G4ExcitationHandler.hh"
|
||||
#include "G4PreCompoundModel.hh"
|
||||
#include "G4GeneratorPrecompoundInterface.hh"
|
||||
#include "G4QGSMFragmentation.hh"
|
||||
#include "G4ExcitedStringDecay.hh"
|
||||
|
||||
|
||||
GammaRayTelHadronPhysics::GammaRayTelHadronPhysics(const G4String& name)
|
||||
: G4VPhysicsConstructor(name)
|
||||
{;}
|
||||
|
||||
GammaRayTelHadronPhysics::~GammaRayTelHadronPhysics()
|
||||
{}
|
||||
|
||||
|
||||
void GammaRayTelHadronPhysics::ConstructProcess()
|
||||
{
|
||||
G4ProcessManager * pManager = 0;
|
||||
/*
|
||||
G4cout << "" << G4endl;
|
||||
G4cout << "You are using the GammaRayTelHadronPhysics" << G4endl;
|
||||
G4cout << " - Note that this hadronic physics list is not optimized for any particular usage" << G4endl;
|
||||
G4cout << " - If you wish to have a starting point tailored for a particular area of work," << G4endl;
|
||||
G4cout << " please use one of the available physics lists by use-case." << G4endl;
|
||||
G4cout << "" << G4endl;
|
||||
*/
|
||||
|
||||
// Elastic Process
|
||||
G4HadronElastic* theElasticModel = new G4HadronElastic;
|
||||
G4HadronElasticProcess* theElasticProcess = new G4HadronElasticProcess;
|
||||
theElasticProcess->RegisterMe(theElasticModel);
|
||||
|
||||
const G4double theBERTMin = 0.0*GeV;
|
||||
const G4double theBERTMax = 5.0*GeV;
|
||||
const G4double theFTFMin = 4.0*GeV;
|
||||
const G4double theFTFMax = G4HadronicParameters::Instance()->GetMaxEnergy();
|
||||
|
||||
G4FTFModel* theStringModel = new G4FTFModel;
|
||||
G4ExcitedStringDecay* theStringDecay = new G4ExcitedStringDecay();
|
||||
theStringModel->SetFragmentationModel( theStringDecay );
|
||||
G4GeneratorPrecompoundInterface* theCascade = new G4GeneratorPrecompoundInterface();
|
||||
|
||||
G4TheoFSGenerator* theModel = new G4TheoFSGenerator( "FTFP" );
|
||||
theModel->SetHighEnergyGenerator( theStringModel );
|
||||
theModel->SetTransport( theCascade );
|
||||
theModel->SetMinEnergy( theFTFMin );
|
||||
theModel->SetMaxEnergy( theFTFMax );
|
||||
|
||||
G4TheoFSGenerator* theModelDownToZero = new G4TheoFSGenerator( "FTFP" );
|
||||
theModelDownToZero->SetHighEnergyGenerator( theStringModel );
|
||||
theModelDownToZero->SetTransport( theCascade );
|
||||
theModelDownToZero->SetMinEnergy(0*eV);
|
||||
theModelDownToZero->SetMaxEnergy(theFTFMax );
|
||||
|
||||
G4CascadeInterface * theBERTModel = new G4CascadeInterface;
|
||||
theBERTModel->SetMinEnergy( theBERTMin );
|
||||
theBERTModel->SetMaxEnergy( theBERTMax );
|
||||
|
||||
// pi+ and pi-
|
||||
|
||||
G4VCrossSectionDataSet * thePiPlusData = new G4BGGPionInelasticXS( G4PionPlus::Definition() );
|
||||
G4VCrossSectionDataSet * thePiMinusData = new G4BGGPionInelasticXS( G4PionMinus::Definition() );
|
||||
G4VCrossSectionDataSet * theAntiNucleonData = new G4CrossSectionInelastic( new G4ComponentAntiNuclNuclearXS );
|
||||
|
||||
// PionPlus
|
||||
G4ParticleDefinition* pion = G4PionPlus::PionPlusDefinition();
|
||||
pManager = pion ->GetProcessManager();
|
||||
// add process
|
||||
pManager->AddDiscreteProcess(theElasticProcess);
|
||||
G4HadronInelasticProcess* thePionPlusInelastic =
|
||||
new G4HadronInelasticProcess( "piInelastic", G4PionPlus::Definition() );
|
||||
thePionPlusInelastic->AddDataSet(thePiPlusData);
|
||||
thePionPlusInelastic->RegisterMe(theBERTModel);
|
||||
thePionPlusInelastic->RegisterMe(theModel);
|
||||
pManager->AddDiscreteProcess(thePionPlusInelastic);
|
||||
|
||||
pManager->AddProcess(new G4hIonisation, ordInActive,2, 2);
|
||||
|
||||
G4hMultipleScattering* thePionPlusMult = new G4hMultipleScattering;
|
||||
pManager->AddProcess(thePionPlusMult);
|
||||
pManager->SetProcessOrdering(thePionPlusMult, idxAlongStep, 1);
|
||||
pManager->SetProcessOrdering(thePionPlusMult, idxPostStep, 1);
|
||||
|
||||
// PionMinus
|
||||
G4ParticleDefinition* pionMinus = G4PionMinus::PionMinusDefinition();
|
||||
pManager = pionMinus -> GetProcessManager();
|
||||
// add process
|
||||
pManager->AddDiscreteProcess(theElasticProcess);
|
||||
G4HadronInelasticProcess* thePionMinusInelastic =
|
||||
new G4HadronInelasticProcess( "piInelastic", G4PionMinus::Definition() );
|
||||
thePionMinusInelastic->AddDataSet(thePiMinusData);
|
||||
thePionMinusInelastic->RegisterMe(theBERTModel);
|
||||
thePionMinusInelastic->RegisterMe(theModel);
|
||||
pManager->AddDiscreteProcess(thePionMinusInelastic);
|
||||
|
||||
pManager->AddProcess(new G4hIonisation, ordInActive,2, 2);
|
||||
|
||||
G4hMultipleScattering* thePionMinusMult = new G4hMultipleScattering;
|
||||
pManager->AddProcess(thePionMinusMult);
|
||||
pManager->SetProcessOrdering(thePionMinusMult, idxAlongStep, 1);
|
||||
pManager->SetProcessOrdering(thePionMinusMult, idxPostStep, 1);
|
||||
|
||||
pManager->AddRestProcess(new G4HadronicAbsorptionBertini(G4PionMinus::Definition()), ordDefault);
|
||||
|
||||
// KaonPlus
|
||||
G4ParticleDefinition* kaonPlus = G4KaonPlus::KaonPlusDefinition();
|
||||
pManager = kaonPlus->GetProcessManager();
|
||||
// add process
|
||||
pManager->AddDiscreteProcess(theElasticProcess);
|
||||
G4HadronInelasticProcess* theKaonPlusInelastic =
|
||||
new G4HadronInelasticProcess( "kaon+Inelastic", G4KaonPlus::Definition() );
|
||||
theKaonPlusInelastic->AddDataSet( G4CrossSectionDataSetRegistry::Instance()->
|
||||
GetCrossSectionDataSet(G4ChipsKaonPlusInelasticXS::Default_Name()));
|
||||
theKaonPlusInelastic->RegisterMe(theBERTModel);
|
||||
theKaonPlusInelastic->RegisterMe(theModel);
|
||||
pManager->AddDiscreteProcess(theKaonPlusInelastic);
|
||||
|
||||
pManager->AddProcess(new G4hIonisation, ordInActive,2, 2);
|
||||
|
||||
G4hMultipleScattering* theKaonPlusMult = new G4hMultipleScattering;
|
||||
pManager->AddProcess(theKaonPlusMult);
|
||||
pManager->SetProcessOrdering(theKaonPlusMult, idxAlongStep, 1);
|
||||
pManager->SetProcessOrdering(theKaonPlusMult, idxPostStep, 1);
|
||||
|
||||
// KaonMinus
|
||||
G4ParticleDefinition* kaonMinus = G4KaonMinus::KaonMinusDefinition();
|
||||
pManager = kaonMinus->GetProcessManager();
|
||||
// add process
|
||||
pManager->AddDiscreteProcess(theElasticProcess);
|
||||
G4HadronInelasticProcess* theKaonMinusInelastic =
|
||||
new G4HadronInelasticProcess( "kaon-Inelastic", G4KaonMinus::Definition() );
|
||||
theKaonMinusInelastic->AddDataSet( G4CrossSectionDataSetRegistry::Instance()->
|
||||
GetCrossSectionDataSet(G4ChipsKaonMinusInelasticXS::Default_Name()));
|
||||
theKaonMinusInelastic->RegisterMe(theBERTModel);
|
||||
theKaonMinusInelastic->RegisterMe(theModel);
|
||||
pManager->AddDiscreteProcess(theKaonMinusInelastic);
|
||||
|
||||
pManager->AddProcess(new G4hIonisation, ordInActive,2, 2);
|
||||
|
||||
G4hMultipleScattering* theKaonMinusMult = new G4hMultipleScattering;
|
||||
pManager->AddProcess(theKaonMinusMult);
|
||||
pManager->SetProcessOrdering(theKaonMinusMult, idxAlongStep, 1);
|
||||
pManager->SetProcessOrdering(theKaonMinusMult, idxPostStep, 1);
|
||||
|
||||
pManager->AddRestProcess(new G4HadronicAbsorptionBertini(G4KaonMinus::Definition()), ordDefault);
|
||||
|
||||
// KaonZeroL
|
||||
pManager = G4KaonZeroLong::KaonZeroLong()->GetProcessManager();
|
||||
// add process
|
||||
pManager->AddDiscreteProcess(theElasticProcess);
|
||||
G4HadronInelasticProcess* theKaonZeroLInelastic =
|
||||
new G4HadronInelasticProcess( "kaon0LInelastic", G4KaonZeroLong::Definition() );
|
||||
theKaonZeroLInelastic->AddDataSet( G4CrossSectionDataSetRegistry::Instance()
|
||||
->GetCrossSectionDataSet(G4ChipsKaonZeroInelasticXS::Default_Name()));
|
||||
theKaonZeroLInelastic->RegisterMe(theBERTModel);
|
||||
theKaonZeroLInelastic->RegisterMe(theModel);
|
||||
pManager->AddDiscreteProcess(theKaonZeroLInelastic);
|
||||
|
||||
// KaonZeroS
|
||||
pManager = G4KaonZeroShort::KaonZeroShort()->GetProcessManager();
|
||||
// add process
|
||||
pManager->AddDiscreteProcess(theElasticProcess);
|
||||
G4HadronInelasticProcess* theKaonZeroSInelastic =
|
||||
new G4HadronInelasticProcess( "kaon0SInelastic", G4KaonZeroShort::Definition() );
|
||||
theKaonZeroSInelastic->AddDataSet( G4CrossSectionDataSetRegistry::Instance()
|
||||
->GetCrossSectionDataSet(G4ChipsKaonZeroInelasticXS::Default_Name()));
|
||||
theKaonZeroSInelastic->RegisterMe(theBERTModel);
|
||||
theKaonZeroSInelastic->RegisterMe(theModel);
|
||||
pManager->AddDiscreteProcess(theKaonZeroSInelastic);
|
||||
|
||||
// Proton
|
||||
pManager = G4Proton::Proton()->GetProcessManager();
|
||||
// add process
|
||||
pManager->AddDiscreteProcess(theElasticProcess);
|
||||
G4HadronInelasticProcess* theProtonInelastic =
|
||||
new G4HadronInelasticProcess( "protonInelastic", G4Proton::Definition() );
|
||||
theProtonInelastic->AddDataSet(new G4BGGNucleonInelasticXS( G4Proton::Proton() ) );
|
||||
theProtonInelastic->RegisterMe(theBERTModel);
|
||||
theProtonInelastic->RegisterMe(theModel);
|
||||
pManager->AddDiscreteProcess(theProtonInelastic);
|
||||
|
||||
pManager->AddProcess(new G4hIonisation, ordInActive,2, 2);
|
||||
|
||||
G4hMultipleScattering* theProtonMult = new G4hMultipleScattering;
|
||||
pManager->AddProcess(theProtonMult);
|
||||
pManager->SetProcessOrdering(theProtonMult, idxAlongStep, 1);
|
||||
pManager->SetProcessOrdering(theProtonMult, idxPostStep, 1);
|
||||
|
||||
// anti-Proton
|
||||
pManager = G4AntiProton::AntiProton()->GetProcessManager();
|
||||
// add process
|
||||
pManager->AddDiscreteProcess(theElasticProcess);
|
||||
G4HadronInelasticProcess* theAntiProtonInelastic =
|
||||
new G4HadronInelasticProcess( "anti_protonInelastic", G4AntiProton::Definition() );
|
||||
theAntiProtonInelastic->AddDataSet( theAntiNucleonData );
|
||||
theAntiProtonInelastic->RegisterMe(theModelDownToZero);
|
||||
pManager->AddDiscreteProcess(theAntiProtonInelastic);
|
||||
|
||||
pManager->AddProcess(new G4hIonisation, ordInActive,2, 2);
|
||||
|
||||
G4hMultipleScattering* theAntiProtonMult = new G4hMultipleScattering;
|
||||
pManager->AddProcess(theAntiProtonMult);
|
||||
pManager->SetProcessOrdering(theAntiProtonMult, idxAlongStep, 1);
|
||||
pManager->SetProcessOrdering(theAntiProtonMult, idxPostStep, 1);
|
||||
|
||||
pManager->AddRestProcess(new G4HadronicAbsorptionFritiof(G4AntiProton::Definition()));
|
||||
|
||||
// Neutron
|
||||
pManager = G4Neutron::Neutron()->GetProcessManager();
|
||||
// add process
|
||||
pManager->AddDiscreteProcess(theElasticProcess);
|
||||
G4HadronInelasticProcess* theNeutronInelastic =
|
||||
new G4HadronInelasticProcess( "neutronInelastic", G4Neutron::Definition() );
|
||||
theNeutronInelastic->AddDataSet( new G4BGGNucleonInelasticXS( G4Neutron::Neutron() ));
|
||||
theNeutronInelastic->RegisterMe(theBERTModel);
|
||||
theNeutronInelastic->RegisterMe(theModel);
|
||||
pManager->AddDiscreteProcess(theNeutronInelastic);
|
||||
|
||||
G4NeutronFissionProcess* theNeutronFission = new G4NeutronFissionProcess;
|
||||
G4LFission* theNeutronFissionModel = new G4LFission;
|
||||
theNeutronFission->RegisterMe(theNeutronFissionModel);
|
||||
pManager->AddDiscreteProcess(theNeutronFission);
|
||||
|
||||
G4NeutronCaptureProcess* theNeutronCapture = new G4NeutronCaptureProcess;
|
||||
theNeutronCapture->AddDataSet(new G4NeutronCaptureXS());
|
||||
pManager->AddDiscreteProcess(theNeutronCapture);
|
||||
|
||||
// AntiNeutron
|
||||
pManager = G4AntiNeutron::AntiNeutron()->GetProcessManager();
|
||||
// add process
|
||||
pManager->AddDiscreteProcess(theElasticProcess);
|
||||
G4HadronInelasticProcess* theAntiNeutronInelastic =
|
||||
new G4HadronInelasticProcess( "anti_neutronInelastic", G4AntiNeutron::Definition() );
|
||||
theAntiNeutronInelastic->AddDataSet( theAntiNucleonData );
|
||||
theAntiNeutronInelastic->RegisterMe(theModelDownToZero);
|
||||
pManager->AddDiscreteProcess(theAntiNeutronInelastic);
|
||||
|
||||
}
|
||||
@@ -1,207 +0,0 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
#include <iomanip>
|
||||
|
||||
#include "GammaRayTelIonPhysics.hh"
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4ios.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "G4HadronicParameters.hh"
|
||||
|
||||
#include "G4HadronElasticProcess.hh"
|
||||
#include "G4HadronElastic.hh"
|
||||
|
||||
#include "G4HadronInelasticProcess.hh"
|
||||
|
||||
#include "G4hIonisation.hh"
|
||||
#include "G4hMultipleScattering.hh"
|
||||
|
||||
#include "G4VCrossSectionDataSet.hh"
|
||||
#include "G4CrossSectionDataSetRegistry.hh"
|
||||
#include "G4ComponentGGNuclNuclXsc.hh"
|
||||
#include "G4CrossSectionInelastic.hh"
|
||||
|
||||
#include "G4FTFModel.hh"
|
||||
#include "G4TheoFSGenerator.hh"
|
||||
#include "G4ExcitationHandler.hh"
|
||||
#include "G4PreCompoundModel.hh"
|
||||
#include "G4GeneratorPrecompoundInterface.hh"
|
||||
#include "G4QGSMFragmentation.hh"
|
||||
#include "G4ExcitedStringDecay.hh"
|
||||
#include "G4CascadeInterface.hh"
|
||||
|
||||
|
||||
GammaRayTelIonPhysics::GammaRayTelIonPhysics(const G4String& name)
|
||||
: G4VPhysicsConstructor(name)
|
||||
{;}
|
||||
|
||||
GammaRayTelIonPhysics::~GammaRayTelIonPhysics()
|
||||
{;}
|
||||
|
||||
void GammaRayTelIonPhysics::ConstructParticle()
|
||||
{;}
|
||||
|
||||
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
|
||||
void GammaRayTelIonPhysics::ConstructProcess()
|
||||
{
|
||||
|
||||
|
||||
/*
|
||||
|
||||
// Deuteron physics
|
||||
G4HadronInelasticProcess fDeuteronProcess;
|
||||
|
||||
// Triton physics
|
||||
G4HadronInelasticProcess fTritonProcess;
|
||||
|
||||
// Alpha physics
|
||||
G4HadronInelasticProcess fAlphaProcess;
|
||||
|
||||
|
||||
*/
|
||||
|
||||
|
||||
|
||||
G4ProcessManager * pManager = 0;
|
||||
|
||||
const G4double theBERTMin = 0.0*GeV;
|
||||
const G4double theBERTMax = 5.0*GeV;
|
||||
const G4double theFTFMin = 4.0*GeV;
|
||||
const G4double theFTFMax = G4HadronicParameters::Instance()->GetMaxEnergy();
|
||||
|
||||
G4FTFModel* theStringModel = new G4FTFModel;
|
||||
G4ExcitedStringDecay* theStringDecay = new G4ExcitedStringDecay();
|
||||
theStringModel->SetFragmentationModel( theStringDecay );
|
||||
G4GeneratorPrecompoundInterface* theCascade = new G4GeneratorPrecompoundInterface();
|
||||
|
||||
G4TheoFSGenerator* theModel = new G4TheoFSGenerator( "FTFP" );
|
||||
theModel->SetHighEnergyGenerator( theStringModel );
|
||||
theModel->SetTransport( theCascade );
|
||||
theModel->SetMinEnergy( theFTFMin );
|
||||
theModel->SetMaxEnergy( theFTFMax );
|
||||
|
||||
G4CascadeInterface * theBERTModel = new G4CascadeInterface;
|
||||
theBERTModel->SetMinEnergy( theBERTMin );
|
||||
theBERTModel->SetMaxEnergy( theBERTMax );
|
||||
|
||||
// Elastic Process
|
||||
G4HadronElastic* theElasticModel = new G4HadronElastic;
|
||||
G4HadronElasticProcess* theElasticProcess = new G4HadronElasticProcess;
|
||||
theElasticProcess->RegisterMe(theElasticModel);
|
||||
|
||||
// Generic Ion
|
||||
pManager = G4GenericIon::GenericIon()->GetProcessManager();
|
||||
// add process
|
||||
pManager->AddDiscreteProcess(theElasticProcess);
|
||||
|
||||
pManager->AddProcess(new G4hIonisation, ordInActive, 2, 2);
|
||||
|
||||
G4hMultipleScattering* fIonMultipleScattering = new G4hMultipleScattering;
|
||||
pManager->AddProcess(fIonMultipleScattering);
|
||||
pManager->SetProcessOrdering(fIonMultipleScattering, idxAlongStep, 1);
|
||||
pManager->SetProcessOrdering(fIonMultipleScattering, idxPostStep, 1);
|
||||
|
||||
G4ComponentGGNuclNuclXsc * ggNuclNuclXsec = new G4ComponentGGNuclNuclXsc();
|
||||
G4VCrossSectionDataSet * theGGNuclNuclData = new G4CrossSectionInelastic(ggNuclNuclXsec);
|
||||
|
||||
// Deuteron
|
||||
pManager = G4Deuteron::Deuteron()->GetProcessManager();
|
||||
// add process
|
||||
pManager->AddDiscreteProcess(theElasticProcess);
|
||||
G4HadronInelasticProcess* fDeuteronProcess =
|
||||
new G4HadronInelasticProcess( "dInelastic", G4Deuteron::Definition() );
|
||||
fDeuteronProcess->AddDataSet(theGGNuclNuclData);
|
||||
fDeuteronProcess->RegisterMe(theBERTModel);
|
||||
fDeuteronProcess->RegisterMe(theModel);
|
||||
pManager->AddDiscreteProcess(fDeuteronProcess);
|
||||
|
||||
pManager->AddProcess(new G4hIonisation, ordInActive, 2, 2);
|
||||
|
||||
G4hMultipleScattering* fDeuteronMultipleScattering = new G4hMultipleScattering;
|
||||
pManager->AddProcess(fDeuteronMultipleScattering);
|
||||
pManager->SetProcessOrdering(fDeuteronMultipleScattering, idxAlongStep, 1);
|
||||
pManager->SetProcessOrdering(fDeuteronMultipleScattering, idxPostStep, 1);
|
||||
|
||||
// Triton
|
||||
pManager = G4Triton::Triton()->GetProcessManager();
|
||||
// add process
|
||||
pManager->AddDiscreteProcess(theElasticProcess);
|
||||
G4HadronInelasticProcess* fTritonProcess =
|
||||
new G4HadronInelasticProcess( "tInelastic", G4Triton::Definition() );
|
||||
fTritonProcess->AddDataSet(theGGNuclNuclData);
|
||||
fTritonProcess->RegisterMe(theBERTModel);
|
||||
fTritonProcess->RegisterMe(theModel);
|
||||
pManager->AddDiscreteProcess(fTritonProcess);
|
||||
|
||||
pManager->AddProcess(new G4hIonisation, ordInActive, 2, 2);
|
||||
|
||||
G4hMultipleScattering* fTritonMultipleScattering = new G4hMultipleScattering;
|
||||
pManager->AddProcess(fTritonMultipleScattering);
|
||||
pManager->SetProcessOrdering(fTritonMultipleScattering, idxAlongStep, 1);
|
||||
pManager->SetProcessOrdering(fTritonMultipleScattering, idxPostStep, 1);
|
||||
|
||||
// Alpha
|
||||
pManager = G4Alpha::Alpha()->GetProcessManager();
|
||||
// add process
|
||||
pManager->AddDiscreteProcess(theElasticProcess);
|
||||
G4HadronInelasticProcess* fAlphaProcess =
|
||||
new G4HadronInelasticProcess( "alphaInelastic", G4Alpha::Definition() );
|
||||
fAlphaProcess->AddDataSet(theGGNuclNuclData);
|
||||
fAlphaProcess->RegisterMe(theBERTModel);
|
||||
fAlphaProcess->RegisterMe(theModel);
|
||||
pManager->AddDiscreteProcess(fAlphaProcess);
|
||||
|
||||
pManager->AddProcess(new G4hIonisation, ordInActive, 2, 2);
|
||||
|
||||
G4hMultipleScattering* fAlphaMultipleScattering = new G4hMultipleScattering;
|
||||
pManager->AddProcess(fAlphaMultipleScattering);
|
||||
pManager->SetProcessOrdering(fAlphaMultipleScattering, idxAlongStep, 1);
|
||||
pManager->SetProcessOrdering(fAlphaMultipleScattering, idxPostStep, 1);
|
||||
|
||||
// He3
|
||||
pManager = G4He3::He3()->GetProcessManager();
|
||||
// add process
|
||||
pManager->AddDiscreteProcess(theElasticProcess);
|
||||
|
||||
pManager->AddProcess(new G4hIonisation, ordInActive, 2, 2);
|
||||
|
||||
G4hMultipleScattering* fHe3MultipleScattering = new G4hMultipleScattering;
|
||||
pManager->AddProcess(fHe3MultipleScattering);
|
||||
pManager->SetProcessOrdering(fHe3MultipleScattering, idxAlongStep, 1);
|
||||
pManager->SetProcessOrdering(fHe3MultipleScattering, idxPostStep, 1);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,111 +0,0 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
#include "GammaRayTelMuonPhysics.hh"
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4ios.hh"
|
||||
#include "G4MuonPlus.hh"
|
||||
#include "G4TauPlus.hh"
|
||||
#include "G4TauMinus.hh"
|
||||
#include <iomanip>
|
||||
|
||||
|
||||
#include "G4ParticleTypes.hh"
|
||||
|
||||
|
||||
GammaRayTelMuonPhysics::GammaRayTelMuonPhysics(const G4String& name)
|
||||
: G4VPhysicsConstructor(name)
|
||||
{
|
||||
}
|
||||
|
||||
GammaRayTelMuonPhysics::~GammaRayTelMuonPhysics()
|
||||
{
|
||||
}
|
||||
|
||||
void GammaRayTelMuonPhysics::ConstructParticle()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
void GammaRayTelMuonPhysics::ConstructProcess()
|
||||
{
|
||||
G4ProcessManager * pManager = 0;
|
||||
|
||||
// Muon Plus Physics
|
||||
pManager = G4MuonPlus::MuonPlus()->GetProcessManager();
|
||||
// add processes
|
||||
pManager->AddProcess(&fMuPlusIonisation, ordInActive,2, 2);
|
||||
|
||||
pManager->AddDiscreteProcess(&fMuPlusBremsstrahlung);
|
||||
|
||||
pManager->AddDiscreteProcess(&fMuPlusPairProduction);
|
||||
|
||||
pManager->AddProcess(&fMuPlusMultipleScattering);
|
||||
pManager->SetProcessOrdering(&fMuPlusMultipleScattering, idxAlongStep, 1);
|
||||
pManager->SetProcessOrdering(&fMuPlusMultipleScattering, idxPostStep, 1);
|
||||
|
||||
// Muon Minus Physics
|
||||
pManager = G4MuonMinus::MuonMinus()->GetProcessManager();
|
||||
// add processes
|
||||
pManager->AddProcess(&fMuMinusIonisation, ordInActive,2, 2);
|
||||
|
||||
pManager->AddDiscreteProcess(&fMuMinusBremsstrahlung);
|
||||
|
||||
pManager->AddDiscreteProcess(&fMuMinusPairProduction);
|
||||
|
||||
pManager->AddProcess(&fMuMinusMultipleScattering);
|
||||
pManager->SetProcessOrdering(&fMuMinusMultipleScattering, idxAlongStep, 1);
|
||||
pManager->SetProcessOrdering(&fMuMinusMultipleScattering, idxPostStep, 1);
|
||||
pManager->AddRestProcess(&fMuMinusCaptureAtRest);
|
||||
|
||||
// Tau Plus Physics
|
||||
pManager = G4TauPlus::TauPlus()->GetProcessManager();
|
||||
// add processes
|
||||
pManager->AddProcess(&fTauPlusIonisation, ordInActive,2, 2);
|
||||
|
||||
pManager->AddProcess(&fTauPlusMultipleScattering);
|
||||
pManager->SetProcessOrdering(&fTauPlusMultipleScattering, idxAlongStep, 1);
|
||||
pManager->SetProcessOrdering(&fTauPlusMultipleScattering, idxPostStep, 1);
|
||||
|
||||
// Tau Minus Physics
|
||||
pManager = G4TauMinus::TauMinus()->GetProcessManager();
|
||||
// add processes
|
||||
pManager->AddProcess(&fTauMinusIonisation, ordInActive,2, 2);
|
||||
|
||||
pManager->AddProcess(&fTauMinusMultipleScattering);
|
||||
pManager->SetProcessOrdering(&fTauMinusMultipleScattering, idxAlongStep, 1);
|
||||
pManager->SetProcessOrdering(&fTauMinusMultipleScattering, idxPostStep, 1);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,77 +0,0 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// GEANT 4 - Hadrontherapy example
|
||||
// ----------------------------------------------------------------------------
|
||||
// Code developed by:
|
||||
//
|
||||
// S. Guatelli
|
||||
//
|
||||
// National Institute for Nuclear Physics Section of Genova, genova, Italy
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
#include "GammaRayTelParticles.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTypes.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4LeptonConstructor.hh"
|
||||
#include "G4BosonConstructor.hh"
|
||||
#include "G4MesonConstructor.hh"
|
||||
#include "G4BaryonConstructor.hh"
|
||||
#include "G4ShortLivedConstructor.hh"
|
||||
|
||||
GammaRayTelParticles::GammaRayTelParticles(const G4String& name)
|
||||
: G4VPhysicsConstructor(name)
|
||||
{ }
|
||||
|
||||
GammaRayTelParticles::~GammaRayTelParticles()
|
||||
{}
|
||||
|
||||
void GammaRayTelParticles::ConstructParticle()
|
||||
{
|
||||
G4LeptonConstructor lepton;
|
||||
lepton.ConstructParticle();
|
||||
|
||||
G4BosonConstructor boson;
|
||||
boson.ConstructParticle();
|
||||
|
||||
G4MesonConstructor meson;
|
||||
meson.ConstructParticle();
|
||||
|
||||
G4BaryonConstructor baryon;
|
||||
baryon.ConstructParticle();
|
||||
|
||||
G4ShortLivedConstructor shortLived;
|
||||
shortLived.ConstructParticle();
|
||||
// ******//
|
||||
// ions //
|
||||
// ******//
|
||||
G4Deuteron::DeuteronDefinition();
|
||||
G4Triton::TritonDefinition();
|
||||
G4He3::He3Definition();
|
||||
G4Alpha::AlphaDefinition();
|
||||
G4GenericIon::GenericIonDefinition();
|
||||
}
|
||||
@@ -176,7 +176,7 @@ void GammaRayTelPhysicsList::AddPhysicsList(const G4String& name)
|
||||
delete emPhysicsList;
|
||||
emPhysicsList = new G4EmLivermorePolarizedPhysics();
|
||||
G4cout << "THE FOLLOWING ELECTROMAGNETIC PHYSICS LIST HAS BEEN ACTIVATED: G4EmLivermorePhysics" << G4endl;
|
||||
} else if (name == "Gamma_Polarized") {
|
||||
} else if (name == "standard_opt4") {
|
||||
emName = name;
|
||||
delete emPhysicsList;
|
||||
emPhysicsList = new G4EmStandardPhysics_option4();
|
||||
|
||||
@@ -126,17 +126,19 @@ void GammaRayTelRunAction::OpenFile()
|
||||
//check that we are in a worker: returns -1 in a master and -2 in sequential
|
||||
//one file per thread is produced
|
||||
//Tracks_runR.N.dat, where R=run number, N=thread ID
|
||||
char name[25];
|
||||
if (G4Threading::G4GetThreadId() >= 0)
|
||||
sprintf(name,"Tracks_run%d.%d.dat",fRunID,
|
||||
G4Threading::G4GetThreadId());
|
||||
std::stringstream name;
|
||||
if (G4Threading::G4GetThreadId() >= 0)
|
||||
name << "Tracks_run" << fRunID << "."
|
||||
<< G4Threading::G4GetThreadId() << ".dat";
|
||||
else
|
||||
sprintf(name,"Tracks_run%d.dat",fRunID);
|
||||
name << "Tracks_run" << fRunID << "."
|
||||
<< G4Threading::G4GetThreadId() << ".dat";
|
||||
|
||||
if (!outFile)
|
||||
{
|
||||
outFile = new std::ofstream;
|
||||
outFile->open(name);
|
||||
fileName = G4String(name);
|
||||
outFile->open(name.str());
|
||||
fileName = G4String(name.str());
|
||||
}
|
||||
G4cout << "Open file: " << fileName << G4endl;
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user