Import Geant4 10.7.0.beta source tree

This commit is contained in:
Gabriele Cosmo
2020-06-26 10:23:25 +02:00
parent c02c370437
commit 67ba86d073
1871 changed files with 174422 additions and 131884 deletions
@@ -38,6 +38,7 @@
// Processes
#include "G4PhotoNuclearProcess.hh"
#include "G4LowEGammaNuclearModel.hh"
#include "G4CascadeInterface.hh"
#include "G4SystemOfUnits.hh"
@@ -57,14 +58,26 @@ GammaNuclearPhysics::~GammaNuclearPhysics()
void GammaNuclearPhysics::ConstructProcess()
{
G4ProcessManager* pManager = G4Gamma::Gamma()->GetProcessManager();
//
G4PhotoNuclearProcess* process = new G4PhotoNuclearProcess();
//
G4CascadeInterface* bertini = new G4CascadeInterface();
bertini->SetMaxEnergy(10*GeV);
process->RegisterMe(bertini);
//
// to not register a model, set Emax=0; eg. Emax1 = 0.
const G4double Emax1 = 200*MeV, Emax2 = 10*GeV;
if (Emax1 > 0.) { // model 1
G4LowEGammaNuclearModel* model1 = new G4LowEGammaNuclearModel();
model1->SetMaxEnergy(Emax1);
process->RegisterMe(model1);
}
if (Emax2 > 0.) { // model 2
G4CascadeInterface* model2 = new G4CascadeInterface();
G4double Emin2 = std::max(Emax1-1*MeV, 0.);
model2->SetMinEnergy(Emin2);
model2->SetMaxEnergy(Emax2);
process->RegisterMe(model2);
}
G4ProcessManager* pManager = G4Gamma::Gamma()->GetProcessManager();
pManager->AddDiscreteProcess(process);
}
@@ -0,0 +1,76 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
/// \file hadronic/Hadr03/src/GammaNuclearPhysicsLEND.cc
/// \brief Implementation of the GammaNuclearPhysicsLEND class
//
// $Id: GammaNuclearPhysics.cc 66587 2012-12-21 11:06:44Z ihrivnac $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "GammaNuclearPhysicsLEND.hh"
#include "G4ParticleDefinition.hh"
#include "G4ProcessManager.hh"
// Processes
#include "G4PhotoNuclearProcess.hh"
#include "G4LENDorBERTModel.hh"
#include "G4LENDCombinedCrossSection.hh"
#include "G4SystemOfUnits.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
GammaNuclearPhysicsLEND::GammaNuclearPhysicsLEND(const G4String& name)
: G4VPhysicsConstructor(name)
{ }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
GammaNuclearPhysicsLEND::~GammaNuclearPhysicsLEND()
{ }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void GammaNuclearPhysicsLEND::ConstructProcess()
{
G4ProcessManager* pManager = G4Gamma::Gamma()->GetProcessManager();
//
G4PhotoNuclearProcess* process = new G4PhotoNuclearProcess();
//
G4LENDorBERTModel* lend = new G4LENDorBERTModel(G4Gamma::Gamma());
lend->SetMaxEnergy(20*MeV);
process->RegisterMe(lend);
//
G4LENDCombinedCrossSection* lendXS = new G4LENDCombinedCrossSection(G4Gamma::Gamma());
process->AddDataSet(lendXS);
//
pManager->AddDiscreteProcess(process);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -61,23 +61,24 @@ void HistoManager::Book()
analysisManager->SetActivation(true); //enable inactivation of histograms
// Define histograms start values
const G4int kMaxHisto = 13;
const G4int kMaxHisto = 14;
const G4String id[] = {"0","1","2","3","4","5","6","7","8","9",
"10","11","12"};
"10","11","12","13"};
const G4String title[] =
{ "dummy", //0
"kinetic energy of scattered primary particle", //1
"kinetic energy of gamma", //2
"kinetic energy of neutrons", //3
"kinetic energy of protons", //4
"kinetic energy of deuterons", //5
"kinetic energy of alphas", //6
"kinetic energy of nuclei", //7
"kinetic energy of mesons", //8
"kinetic energy of baryons", //9
"Q = Ekin out - Ekin in", //10
"Pbalance = mag(P_out - P_in)", //11
"atomic mass of nuclei" //12
"kinetic energy of electrons", //3
"kinetic energy of neutrons", //4
"kinetic energy of protons", //5
"kinetic energy of deuterons", //6
"kinetic energy of alphas", //7
"kinetic energy of nuclei", //8
"kinetic energy of mesons", //9
"kinetic energy of baryons", //10
"Q = Ekin out - Ekin in", //11
"Pbalance = mag(P_out - P_in)", //12
"atomic mass of nuclei" //13
};
// Default values (to be reset via /analysis/h1/set command)
@@ -40,8 +40,10 @@
#include "G4HadronPhysicsFTFP_BERT_HP.hh"
#include "G4HadronPhysicsQGSP_BIC_HP.hh"
#include "G4HadronPhysicsQGSP_BIC_AllHP.hh"
#include "G4HadronPhysicsQGSP_BIC.hh"
#include "G4HadronInelasticQBBC.hh"
#include "G4HadronPhysicsINCLXX.hh"
#include "G4HadronPhysicsShielding.hh"
#include "G4IonElasticPhysics.hh"
#include "G4IonPhysicsXS.hh"
@@ -50,6 +52,7 @@
#include "G4IonINCLXXPhysics.hh"
#include "GammaNuclearPhysics.hh"
#include "G4RadioactiveDecayPhysics.hh"
// particles
@@ -84,9 +87,11 @@ PhysicsList::PhysicsList()
////RegisterPhysics( new G4HadronPhysicsFTFP_BERT_HP(verb));
RegisterPhysics( new G4HadronPhysicsQGSP_BIC_HP(verb));
////RegisterPhysics( new G4HadronPhysicsQGSP_BIC_AllHP(verb));
////RegisterPhysics( new G4HadronPhysicsQGSP_BIC(verb));
////RegisterPhysics( new G4HadronInelasticQBBC(verb));
////RegisterPhysics( new G4HadronPhysicsINCLXX(verb));
////RegisterPhysics( new G4HadronPhysicsShielding(verb));
// Ion Elastic scattering
//
RegisterPhysics( new G4IonElasticPhysics(verb));
@@ -101,7 +106,9 @@ PhysicsList::PhysicsList()
// Gamma physics
//
RegisterPhysics( new GammaNuclearPhysics("gamma"));
// Radioactive decay
RegisterPhysics(new G4RadioactiveDecayPhysics());
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -120,18 +120,19 @@ void SteppingAction::UserSteppingAction(const G4Step* aStep)
//energy spectrum
ih = 0;
if (particle == G4Gamma::Gamma()) ih = 2;
else if (particle == G4Neutron::Neutron()) ih = 3;
else if (particle == G4Proton::Proton()) ih = 4;
else if (particle == G4Deuteron::Deuteron()) ih = 5;
else if (particle == G4Alpha::Alpha()) ih = 6;
else if (type == "nucleus") ih = 7;
else if (type == "meson") ih = 8;
else if (type == "baryon") ih = 9;
else if (particle == G4Electron::Electron()) ih = 3;
else if (particle == G4Neutron::Neutron()) ih = 4;
else if (particle == G4Proton::Proton()) ih = 5;
else if (particle == G4Deuteron::Deuteron()) ih = 6;
else if (particle == G4Alpha::Alpha()) ih = 7;
else if (type == "nucleus") ih = 8;
else if (type == "meson") ih = 9;
else if (type == "baryon") ih = 10;
if (ih > 0) analysis->FillH1(ih,energy);
//atomic mass
if (type == "nucleus") {
G4int A = particle->GetAtomicMass();
analysis->FillH1(12, A);
analysis->FillH1(13, A);
}
//energy-momentum balance
G4ThreeVector momentum = (*secondary)[lp]->GetMomentum();
@@ -146,9 +147,9 @@ void SteppingAction::UserSteppingAction(const G4Step* aStep)
//energy-momentum balance
G4double Pbal = Pbalance.mag();
run->Balance(Pbal);
ih = 10;
analysis->FillH1(ih,Q);
ih = 11;
analysis->FillH1(ih,Q);
ih = 12;
analysis->FillH1(ih,Pbal);
// nuclear channel