Import Geant4 10.7.0.beta source tree
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user