Import Geant4 9.3.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-09 16:15:05 +02:00
parent b79225fb37
commit 74cad5e589
3877 changed files with 234205 additions and 167127 deletions
+203 -3
View File
@@ -1,4 +1,4 @@
$Id: History,v 1.75 2008/12/05 15:14:36 gcosmo Exp $
q$Id: History,v 1.119 2009/12/04 13:09:12 gcosmo Exp $
-------------------------------------------------------------------
=========================================================
@@ -15,14 +15,214 @@ track of all tags.
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
04-12-2009, K.Murakami (phys-lists-V09-02-46)
- Fixed typo in FTFP_EMV.icc for wrong call to G4WarnPLStatus.
03-12-2009, P.Kaitaniemi (phys-lists-V09-02-45)
- QGSP_INCL_ABLA, Fix: Use Bertini cascade for kaons in the energy range 0 - 10 GeV.
30-11-2009, M.Kosov (phys-lists-V09-02-44)
- G4QNeutrinoPhysics - process is not created if neutrino is not simulated
28-11-2009, V.Ivanchenko (phys-lists-V09-02-43)
- QBBC - fixed cross sections for hadron elastic
27-11-2009, G.Folger (phys-lists-V09-02-42)
- QGSP_BERT_TRV, change transition energies in HadronPhysicsQGSP_BERT_TRV to
use BERT ]0,9.9], LEP [9.5, 15], QGSP [10, inf[
- QGSP_BERT_NOLEP, use G4HadronQElasticPhysics
- explicitely mark experimental: QGSP_BERT_EMX, QGSP_BERT_TRV, QGSP_FTFP_BERT,
QGSP_INCL_ABLA
- mark as obsolete: FTFP, QGSP, QGSC, QGSC_CHIPS, QGSC_EMV, QGSC_QGSC
- mark supported ( remove experimental) :FTFP_BERT, FTFP_BERT_EMV
- Add initial version of G4IonQMDPhysics
25-11-2009, V.Ivanchenko (phys-lists-V09-02-41)
- G4PhysListFactory - update list of supported referenced PhysicsLists
- QBBC - updated for the release
24-11-2009, V.Ivanchenko (phys-lists-V09-02-40)
- G4EmStandardPhysics_option3, G4EmLivermorePhysics, G4EmPenelopePhysics,
G4EmLivermorePolarizedPhysics - set finalRange=10um for ions
- G4EmStandardPhysics_option2 - use default StepFunction for ions
20-11-2009, M.Kosov (phys-lists-V09-02-39)
- Something was wrong in CHIPS lis, but now it is working
20-11-2009, M.Kosov (phys-lists-V09-02-38)
- G4QAtomicPhysics and xs_dependent is excluded from the GNUmakefile's
18-11-2009, M.Kosov (phys-lists-V09-02-37)
- bug fix in CHIPS.icc (call for G4QCaptureAtRestPhysics)
17-11-2009, M.Kosov (phys-lists-V09-02-36)
- improved dependencies on CHIPS
16-11-2009, M.Kosov (phys-lists-V09-02-35)
- dependencies on split CHIPS-body and new class G4QCaptureAtRestPhysics
13-11-2009, M.Kosov (phys-lists-V09-02-34)
- two builders G4QNeutrinoPhysics & G4QPhotoNuclearPhysics with
the G4QMessenger are added to the CHIPS physics list
10-11-2009, V.Ivanchenko (phys-lists-V09-02-33)
- G4EmStandardPhysics_option3, G4EmLivermorePhysics, G4EmPenelopePhysics,
G4EmLivermorePolarizedPhysics - added G4NuclearStopping process for
GenericIon, He3, alpha particles
4-11-2009, P.Gumplinger (phys-lists-V09-02-32)
- add G4OpticalPhysics and G4OpticalPhysicsMessenger class
3-11-2009, M.Kosov (phys-lists-V09-02-31)
- close the warning about not used quasiElastic
31-10-2009, V.Ivanchenko (phys-lists-V09-02-30)
- G4EmDNAPhysics (S.Inserti) updated combined Physics List standard/DNA
30-10-2009, V.Ivanchenko (phys-lists-V09-02-29)
- Review of all EM builders:
- in all builders separate definition of processes for He3 and
He4 ions; G4eMultipleScattering for e+, e-,
G4MuMultipleScattering for muons;
- G4UrbanMscModel93 for e+- for all builders except Opt0 and Opt1
- G4WentzelVIModel for muons for all builders except Opt0 and Opt1
- G4ParameterizedIonModel for Opt3 and all combined builders
- StepFunction (0.1, 0.02*mm) for ions inside Opt2
30-10-2009, M.Kosov (phys-lists-V09-02-28)
- first implementation of the one model CHIPS physics list
08-10-2009, V.Ivanchenko (phys-lists-V09-02-27)
- fixed compillation problem in G4HadronPhysicsQBBC
04-10-2009, V.Ivanchenko (phys-lists-V09-02-26)
- modified QBBC - remove template and move QBBC.icc to QBBC.cc;
use a new G4VHadronPhysics interface
- G4HadroHElasticPhysics uses G4WHadronElasticProcess (the result of
redesign of elastic) instead of G4UHadronElasticProcess
- QGSP_BERT_EMV uses G4HadroHElasticPhysics instead of G4HadroElasticPhysics
02-10-2009, V.Ivanchenko (phys-lists-V09-02-25)
- modified EM standard Physics Lists
G4EmStandardPhysics - return 9.2 configuration
G4EmStandardPhysics_option1 - use ApplyCuts=true
G4EmStandardPhysics_option2 - use G4eMultipleScattering for e+-
09-09-2009, S.Incerti (phys-lists-V09-02-24)
- added high energy limit to e- models for better clarity in
G4EmLivermorePhysics.cc
G4EmLivermorePolarizedPhysics.cc
19-07-2009, P.Kaitaniemi (phys-lists-V09-02-23)
- Added INCL/ABLA physics builders for protons, neutrons, pions and light ions
- Added QGSP_INCL_ABLA physics list
- Added QGSP_INCL_ABLA to the G4PhysListFactory
08-07-2009, S.Incerti (phys-lists-V09-02-22)
- adapted G4EmLivermorePolarizedPhysics builder similarly to
the non polarized case
03-06-2009, G.Folger (phys-lists-V09-02-21)
- no code change
- use versions of phys-lists-V09-02-18 for
builders/include/G4QGSC_CHIPSNeutronBuilder.hh
builders/*/G4QNeutronBuilder.{hh,cc}
02-06-2009, G.Folger (phys-lists-V09-02-20)
- Rename HadronPhysicsFB68.{hh,cc} to HadronPhysicsFTFP_BERT_TRV.{hh,cc};
required changes in FTFP_BERT_TRV.icc as well.
- correct typo in experimental/Unsupported names in FTF_BIC.icc and QGSP_EMX.icc
25-05-2009, M.Kosov (phys-lists-V09-02-19)
- Two new low energy (<290 MeV) nA CHIPS reactions are implemented in the QGSC_CHIPS
physics list (works together with the hadr-chips-inter-V09-02-07 CHIPS tag
18-05-2009, G.Folger (phys-lists-V09-02-18)
- Declare several list obsolete, partially disabling use.
Obsolete + disabled (= remove)
FTF_EMV, replacment FTFP_BERT_EMV
QGSC_EFLOW, replacment QGSC_CHIPS
QGSP_EMX, replacment QGSP_BERT_EMX
Obsolete:
FTFC
LHEP_BERT, LHEP_BERT_HP, LHEP_PRECO_HP
QGSP_BERT_DIF, QGSP_BERT_NQE, QGSP_DIF, QGSP_EMV, QGSP_EMV_NQE,
QGSP_NQE, QGSP_QEL
11-05-2009, V.Ivanchenko phys-lists-V09-02-17
- Added new PhysLists with special EM options: FTFP_BERT_EMV,
FTFP_BERT_EMX, QGSP_BERT_EMX, QGSP_BIC_EMY (opt3 EM physics)
- Renamed FB68 to FTFP_BERT_TRV
- G4PhysicsListFactory - updated list of supported PhysLists
10-05-2009, V.Ivanchenko phys-lists-V09-02-16
G4EmStandardPhysics, G4EmStandardPhysics_option1 - use 9.2 msc
model for e+-
G4EmStandardPhysics_option2 - use G4WentzelVIModel for e+-
G4EmStandardPhysics_option3 - use updated G4UrbanMscModel2 and
use G4RayleighScattering
G4EmLivermorePhysics - upper limit of Livermore models 1 GeV
23-04-2009, J.Apostolakis phys-lists-V09-02-15
- Added MaxEnergy method in FTF builders.
- Added QGSP_FTFP_BERT based on QGSP_BERT replacing the bridging LEP with FTFP,
and transitioning from BERT to FTFP between 7 and 9 GeV;
- Added FB68 as variant of FTFP_BERT with transition between 6 and 8 GeV.
20-04-2009, M.Kosov phys-lists-V09-02-14
- Two new physics lists QGSC_QGSC and QGSC_CHIPS are added.
- QGSC_QGSC physics list uses the QGS model with the MultySoft
interface to CHIPS at all energies, starting from E=0. For neutrons
it still uses LHEP models for the radiativ capture and fission.
- QGSC_CHIPS physics list uses the QGS model with the EnergyFlow
interface to CHIPS at all energies. For the pA interactions the
native CHIPS process G4QCollision is used below 290 MeV. The QGSC and
G4QCollision processes are joined in one process by the CHIPS
G4QDiscProcessMixer interface.
- The corresponding physics builders are added.
17-04-2009, V.Ivanchenko phys-lists-V09-02-12
- Restore History after modification of CHIPS builders
- Fixed G4EmLivermorePhysics, G4EmPenelopePhysics
- Added new CHIPS PhysLists to the G4PhysListFactory
- Fixed G4HadronInelasticQBBC - cross sections are created by new,
not by value, fission only instantiated for HP
31-03-2009, V.Ivanchenko phys-lists-V09-02-05
- To fix bug #1056 all cross section data sets are included not as a
member of classes but created by new
- inline constructor and destructors are moved to source for classes:
G4VNeutronBuilder, G4VPiKBuilder, G4VProtonBuilder, G4WarnPLStatus
26-03-2009, S.Incerti phys-lists-V09-02-04
- Added builders for Livermore and Penelope physics processes:
G4EmLivermorePhysics, G4EmLivermorePolarizedPhysics, G4EmPenelopePhysics.
25-03-2009, S.Incerti phys-lists-V09-02-03
- Added builder for DNA physics processes: G4EmDNAPhysics.
12-03-2009, V.Ivanchenko phys-lists-V09-02-02
- HadronPhysicsQGSC: fixed crash at destruction.
16-02-2009, V.Ivanchenko phys-lists-V09-02-01
- G4IonBinaryCascadePhysics: use Shen cross section only if Tripathi is
not applicable (fixed order of x-sections).
- G4HadronInelasticQBBC: use G4StringChipsParticleLevelInterface instead of
obsolete G4StringChipsInterface.
05-02-2009, V.Ivanchenko phys-lists-V09-02-00
- G4MiscLHEPBuilder: create processes by "new" in order to have proper
deletion at the end of job.
05-12-2008, G.Cosmo phys-lists-V09-01-20
- Added missing dependency to "run" category in GLOBLIBS for DLL parsing
induced by G4PhysicsListFactory which now brings in dependency on
G4VModularPhysicsList.
01-12-2008, V.Ivanchenko phys-lists-V09-01-19
G4HadronElasticPhysics - fixed adding optional Barashenkov Xsection
QBBC - added QBBBG option
- G4HadronElasticPhysics: fixed adding optional Barashenkov Xsection
QBBC - added QBBBG option
21-11-2008, V.Ivanchenko phys-lists-V09-01-18
- Added sigma_c+, sigma_c++ in the list of stable hadrons
+7 -1
View File
@@ -1,4 +1,4 @@
# $Id: GNUmakefile,v 1.5 2008/10/15 18:24:11 vnivanch Exp $
# $Id: GNUmakefile,v 1.11 2009/11/27 17:26:44 gunter Exp $
# ---------------------------------------------------------------------------
# GNUmakefile for physics_lists/builders library. Gunter Folger 25-Oct-2006.
# ---------------------------------------------------------------------------
@@ -13,6 +13,7 @@ include $(G4INSTALL)/config/architecture.gmk
CPPFLAGS += -I$(G4BASE)/global/management/include \
-I$(G4BASE)/global/HEPRandom/include \
-I$(G4BASE)/global/HEPNumerics/include \
-I$(G4BASE)/global/HEPGeometry/include \
-I$(G4BASE)/geometry/volumes/include \
-I$(G4BASE)/geometry/management/include \
@@ -48,7 +49,11 @@ CPPFLAGS += -I$(G4BASE)/global/management/include \
-I$(G4BASE)/processes/hadronic/models/util/include \
-I$(G4BASE)/processes/hadronic/models/binary_cascade/include \
-I$(G4BASE)/processes/hadronic/models/cascade/cascade/include \
-I$(G4BASE)/processes/hadronic/models/qmd/include \
-I$(G4BASE)/processes/hadronic/models/chiral_inv_phase_space/body/include \
-I$(G4BASE)/processes/hadronic/models/chiral_inv_phase_space/cross_sections/include \
-I$(G4BASE)/processes/hadronic/models/chiral_inv_phase_space/processes/include \
-I$(G4BASE)/processes/hadronic/models/chiral_inv_phase_space/fragmentation/include \
-I$(G4BASE)/processes/hadronic/models/chiral_inv_phase_space/interface/include \
-I$(G4BASE)/processes/hadronic/models/coherent_elastic/include \
-I$(G4BASE)/processes/hadronic/models/de_excitation/evaporation/include \
@@ -60,6 +65,7 @@ CPPFLAGS += -I$(G4BASE)/global/management/include \
-I$(G4BASE)/processes/hadronic/models/de_excitation/util/include \
-I$(G4BASE)/processes/hadronic/models/high_energy/include \
-I$(G4BASE)/processes/hadronic/models/im_r_matrix/include \
-I$(G4BASE)/processes/hadronic/models/incl/include \
-I$(G4BASE)/processes/hadronic/models/leading_particle/include \
-I$(G4BASE)/processes/hadronic/models/low_energy/include \
-I$(G4BASE)/processes/hadronic/models/neutron_hp/include \
@@ -23,6 +23,20 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4BertiniNeutronBuilder.hh,v 1.2 2009/03/31 18:38:33 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-03 $
//
//---------------------------------------------------------------------------
//
// ClassName: G4BertiniNeutronBuilder
//
// Author: 2002 H.P. Wellisch
//
// Modified:
// 30.03.2009 V.Ivanchenko create cross section by new
//
//----------------------------------------------------------------------------
//
#ifndef G4BertiniNeutronBuilder_h
#define G4BertiniNeutronBuilder_h 1
@@ -35,7 +49,6 @@
#include "G4VNeutronBuilder.hh"
#include "G4CascadeInterface.hh"
#include "G4NeutronInelasticCrossSection.hh"
class G4BertiniNeutronBuilder : public G4VNeutronBuilder
{
@@ -54,7 +67,6 @@ class G4BertiniNeutronBuilder : public G4VNeutronBuilder
private:
G4CascadeInterface * theModel;
G4NeutronInelasticCrossSection theXSec;
G4double theMin;
G4double theMax;
@@ -23,6 +23,20 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4BertiniPiKBuilder.hh,v 1.2 2009/03/31 18:38:33 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-03 $
//
//---------------------------------------------------------------------------
//
// ClassName: G4BertiniPiKBuilder
//
// Author: 2002 H.P. Wellisch
//
// Modified:
// 30.03.2009 V.Ivanchenko create cross section by new
//
//----------------------------------------------------------------------------
//
#ifndef G4BertiniPiKBuilder_h
#define G4BertiniPiKBuilder_h 1
@@ -56,7 +70,7 @@ class G4BertiniPiKBuilder : public G4VPiKBuilder
void SetMaxEnergy(G4double aM) {theMax = aM;}
private:
G4PiNuclearCrossSection thePiData;
G4PiNuclearCrossSection* thePiData;
G4CascadeInterface * theModel;
G4double theMin;
G4double theMax;
@@ -23,6 +23,20 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4BertiniProtonBuilder.hh,v 1.2 2009/03/31 18:38:33 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-03 $
//
//---------------------------------------------------------------------------
//
// ClassName: G4BertiniProtonBuilder
//
// Author: 2002 H.P. Wellisch
//
// Modified:
// 30.03.2009 V.Ivanchenko create cross section by new
//
//----------------------------------------------------------------------------
//
#ifndef G4BertiniProtonBuilder_h
#define G4BertiniProtonBuilder_h
@@ -35,7 +49,6 @@
#include "G4VProtonBuilder.hh"
#include "G4CascadeInterface.hh"
#include "G4ProtonInelasticCrossSection.hh"
class G4BertiniProtonBuilder : public G4VProtonBuilder
{
@@ -51,7 +64,7 @@ class G4BertiniProtonBuilder : public G4VProtonBuilder
void SetMaxEnergy(G4double aM) {theMax = aM;}
private:
G4ProtonInelasticCrossSection theXSec;
G4CascadeInterface * theModel;
G4double theMin;
G4double theMax;
@@ -23,6 +23,20 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4BinaryNeutronBuilder.hh,v 1.2 2009/03/31 18:38:33 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-03 $
//
//---------------------------------------------------------------------------
//
// ClassName: G4BinaryNeutronBuilder
//
// Author: 2002 H.P. Wellisch
//
// Modified:
// 30.03.2009 V.Ivanchenko create cross section by new
//
//----------------------------------------------------------------------------
//
#ifndef G4BinaryNeutronBuilder_h
#define G4BinaryNeutronBuilder_h 1
@@ -35,7 +49,6 @@
#include "G4VNeutronBuilder.hh"
#include "G4BinaryCascade.hh"
#include "G4NeutronInelasticCrossSection.hh"
class G4BinaryNeutronBuilder : public G4VNeutronBuilder
{
@@ -54,7 +67,6 @@ class G4BinaryNeutronBuilder : public G4VNeutronBuilder
private:
G4BinaryCascade * theModel;
G4NeutronInelasticCrossSection theXSec;
G4double theMin;
G4double theMax;
@@ -23,6 +23,20 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4BinaryPiKBuilder.hh,v 1.2 2009/03/31 18:38:33 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-03 $
//
//---------------------------------------------------------------------------
//
// ClassName: G4BinaryPiKBuilder
//
// Author: 2002 H.P. Wellisch
//
// Modified:
// 30.03.2009 V.Ivanchenko create cross section by new
//
//----------------------------------------------------------------------------
//
#ifndef G4BinaryPiKBuilder_h
#define G4BinaryPiKBuilder_h 1
@@ -56,7 +70,7 @@ class G4BinaryPiKBuilder : public G4VPiKBuilder
void SetMaxEnergy(G4double aM) {theMax = aM;}
private:
G4PiNuclearCrossSection thePiData;
G4PiNuclearCrossSection* thePiData;
G4BinaryCascade * theModel;
G4double theMin;
G4double theMax;
@@ -23,6 +23,20 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4BinaryProtonBuilder.hh,v 1.2 2009/03/31 18:38:33 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-03 $
//
//---------------------------------------------------------------------------
//
// ClassName: G4BinaryProtonBuilder
//
// Author: 2002 H.P. Wellisch
//
// Modified:
// 30.03.2009 V.Ivanchenko create cross section by new
//
//----------------------------------------------------------------------------
//
#ifndef G4BinaryProtonBuilder_h
#define G4BinaryProtonBuilder_h
@@ -35,7 +49,6 @@
#include "G4VProtonBuilder.hh"
#include "G4BinaryCascade.hh"
#include "G4ProtonInelasticCrossSection.hh"
class G4BinaryProtonBuilder : public G4VProtonBuilder
{
@@ -51,7 +64,7 @@ class G4BinaryProtonBuilder : public G4VProtonBuilder
void SetMaxEnergy(G4double aM) {theMax = aM;}
private:
G4ProtonInelasticCrossSection theXSec;
G4BinaryCascade * theModel;
G4double theMin;
G4double theMax;
@@ -32,23 +32,24 @@
#include "G4ProtonInelasticProcess.hh"
#include "G4VPiKBuilder.hh"
enum G4DataType {no, photon, neutron, radioactive, lowenergy};
enum G4DataType {no, photon, neutron, radioactive, lowenergy, optical};
class G4DataQuestionaire
{
public:
G4DataQuestionaire(G4DataType t1=no, G4DataType t2=no, G4DataType t3=no, G4DataType t4=no)
G4DataQuestionaire(G4DataType t1=no, G4DataType t2=no, G4DataType t3=no, G4DataType t4=no, G4DataType t5=no)
{
G4cout << G4endl;
G4cout << "<<< Geant4 Physics List engine packaging library: PACK 5.4"<<G4endl;
G4cout << "<<< Geant4 Physics List engine packaging library: PACK 5.5"<<G4endl;
// G4cout <<G4endl<<G4endl;
// G4cout << "##### the input "<<t1<<" "<<t2<<" "<<t3<<" "<<t4<<G4endl;
for(G4int i=0; i<4; i++)
for(G4int i=0; i<5; i++)
{
G4DataType t(no);
if(i==0) t=t1;
if(i==1) t=t2;
if(i==2) t=t3;
if(i==3) t=t4;
if(i==4) t=t5;
switch(t)
{
case photon:
@@ -95,6 +96,17 @@ class G4DataQuestionaire
"Fatal error: Missing mandatory data for this simulation engine");
}
break;
case optical:
if(!getenv("G4LEDATA") )
{
G4cout << "Data describing surface propeties for optical photons are needed."<<G4endl;
G4cout << "Please set the environmental variable G4REALSURFACEDATA"<<G4endl;
G4cout << "to point to your RealSurface directory."<<G4endl;
G4cout << "Data are available from the Geant4 download page."<<G4endl;
G4Exception("G4DataQuestionaire", "007", FatalException,
"Fatal error: Missing mandatory data for this simulation engine");
}
break;
case no:
// all ok
break;
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4DecayPhysics.hh,v 1.1 2006/10/31 11:35:01 gunter Exp $
// GEANT4 tag $Name: geant4-09-02 $
// $Id: G4DecayPhysics.hh,v 1.2 2009/11/05 01:24:47 gum Exp $
// GEANT4 tag $Name: geant4-09-03 $
//
//---------------------------------------------------------------------------
//
@@ -63,6 +63,8 @@ class G4DecayPhysics : public G4VPhysicsConstructor
// registered to the process manager of each particle type
virtual void ConstructProcess();
virtual G4Decay* GetDecayProcess() { return fDecayProcess; }
private:
G4Decay* fDecayProcess;
G4int verbose;
@@ -0,0 +1,61 @@
//
// ********************************************************************
// * 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.hh,v 1.1 2009/03/25 11:28:07 sincerti Exp $
// GEANT4 tag $Name: geant4-09-03 $
#ifndef G4EmDNAPhysics_h
#define G4EmDNAPhysics_h 1
#include "G4VPhysicsConstructor.hh"
#include "globals.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class G4EmDNAPhysics : public G4VPhysicsConstructor
{
public:
G4EmDNAPhysics(G4int ver = 1,
const G4String& name = "G4EmDNAPhysics");
virtual ~G4EmDNAPhysics();
virtual void ConstructParticle();
virtual void ConstructProcess();
private:
G4int verbose;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,61 @@
//
// ********************************************************************
// * 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.hh,v 1.1 2009/03/25 20:54:32 sincerti Exp $
// GEANT4 tag $Name: geant4-09-03 $
#ifndef G4EmLivermorePhysics_h
#define G4EmLivermorePhysics_h 1
#include "G4VPhysicsConstructor.hh"
#include "globals.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class G4EmLivermorePhysics : public G4VPhysicsConstructor
{
public:
G4EmLivermorePhysics(G4int ver = 1,
const G4String& name = "G4EmLivermorePhysics");
virtual ~G4EmLivermorePhysics();
virtual void ConstructParticle();
virtual void ConstructProcess();
private:
G4int verbose;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,61 @@
//
// ********************************************************************
// * 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.hh,v 1.1 2009/03/25 20:54:32 sincerti Exp $
// GEANT4 tag $Name: geant4-09-03 $
#ifndef G4EmLivermorePolarizedPhysics_h
#define G4EmLivermorePolarizedPhysics_h 1
#include "G4VPhysicsConstructor.hh"
#include "globals.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class G4EmLivermorePolarizedPhysics : public G4VPhysicsConstructor
{
public:
G4EmLivermorePolarizedPhysics(G4int ver = 1,
const G4String& name = "G4EmLivermorePolarizedPhysics");
virtual ~G4EmLivermorePolarizedPhysics();
virtual void ConstructParticle();
virtual void ConstructProcess();
private:
G4int verbose;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,61 @@
//
// ********************************************************************
// * 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.hh,v 1.1 2009/03/25 13:24:57 pandola Exp $
// GEANT4 tag $Name: geant4-09-03 $
#ifndef G4EmPenelopePhysics_h
#define G4EmPenelopePhysics_h 1
#include "G4VPhysicsConstructor.hh"
#include "globals.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class G4EmPenelopePhysics : public G4VPhysicsConstructor
{
public:
G4EmPenelopePhysics(G4int ver = 1,
const G4String& name = "G4EmPenelopePhysics");
virtual ~G4EmPenelopePhysics();
virtual void ConstructParticle();
virtual void ConstructProcess();
private:
G4int verbose;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -23,6 +23,20 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4FTFBinaryNeutronBuilder.hh,v 1.3 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
//
//----------------------------------------------------------------------------
//
#ifndef G4FTFBinaryNeutronBuilder_h
#define G4FTFBinaryNeutronBuilder_h 1
@@ -34,7 +48,6 @@
#include "G4NeutronInelasticProcess.hh"
#include "G4VNeutronBuilder.hh"
#include "G4NeutronInelasticCrossSection.hh"
#include "G4TheoFSGenerator.hh"
#include "G4ExcitationHandler.hh"
#include "G4PreCompoundModel.hh"
@@ -65,7 +78,6 @@ class G4FTFBinaryNeutronBuilder : public G4VNeutronBuilder
G4ExcitedStringDecay * theStringDecay;
G4QuasiElasticChannel * theQuasiElastic;
G4NeutronInelasticCrossSection theXSec;
G4double theMin;
};
@@ -23,6 +23,20 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4FTFBinaryPiKBuilder.hh,v 1.2 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
//
//----------------------------------------------------------------------------
//
#ifndef G4FTFBinaryPiKBuilder_h
#define G4FTFBinaryPiKBuilder_h 1
@@ -70,7 +84,7 @@ class G4FTFBinaryPiKBuilder : public G4VPiKBuilder
G4ExcitedStringDecay * theStringDecay;
G4QuasiElasticChannel * theQuasiElastic;
G4PiNuclearCrossSection thePiData;
G4PiNuclearCrossSection* thePiData;
G4double theMin;
};
@@ -23,6 +23,20 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4FTFBinaryProtonBuilder.hh,v 1.2 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
//
//----------------------------------------------------------------------------
//
#ifndef G4FTFBinaryProtonBuilder_h
#define G4FTFBinaryProtonBuilder_h
@@ -34,7 +48,6 @@
#include "G4ProtonInelasticProcess.hh"
#include "G4VProtonBuilder.hh"
#include "G4NeutronInelasticCrossSection.hh"
#include "G4TheoFSGenerator.hh"
#include "G4ExcitationHandler.hh"
#include "G4PreCompoundModel.hh"
@@ -44,8 +57,6 @@
#include "G4ExcitedStringDecay.hh"
#include "G4QuasiElasticChannel.hh"
#include "G4ProtonInelasticCrossSection.hh"
class G4FTFBinaryProtonBuilder : public G4VProtonBuilder
{
public:
@@ -66,7 +77,6 @@ class G4FTFBinaryProtonBuilder : public G4VProtonBuilder
G4ExcitedStringDecay * theStringDecay;
G4QuasiElasticChannel * theQuasiElastic;
G4ProtonInelasticCrossSection theXSec;
G4double theMin;
};
@@ -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: G4FTFBuilder.hh,v 1.1 2009/10/04 16:29:54 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-03 $
//
//---------------------------------------------------------------------------
//
// ClassName: G4FTFBuilder
//
// Author: 28 June 2009 V.Ivanchenko
//
// Modified:
//
//----------------------------------------------------------------------------
//
#ifndef G4FTFBuilder_h
#define G4FTFBuilder_h 1
#include "globals.hh"
#include "G4VHadronModelBuilder.hh"
class G4FTFModel;
class G4ExcitedStringDecay;
class G4FTFBuilder : public G4VHadronModelBuilder
{
public:
G4FTFBuilder(const G4String& name ="");
virtual ~G4FTFBuilder();
protected:
virtual G4HadronicInteraction* BuildModel();
private:
// copy constructor and hide assignment operator
G4FTFBuilder(G4FTFBuilder &);
G4FTFBuilder & operator=(const G4FTFBuilder &right);
G4FTFModel* theStringModel;
G4ExcitedStringDecay* theStringDecay;
};
#endif
@@ -23,6 +23,20 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4FTFCNeutronBuilder.hh,v 1.3 2009/03/31 18:38:33 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
//
//----------------------------------------------------------------------------
//
#ifndef G4FTFCNeutronBuilder_h
#define G4FTFCNeutronBuilder_h 1
@@ -34,7 +48,6 @@
#include "G4NeutronInelasticProcess.hh"
#include "G4VNeutronBuilder.hh"
#include "G4NeutronInelasticCrossSection.hh"
#include "G4TheoFSGenerator.hh"
#include "G4StringChipsParticleLevelInterface.hh"
#include "G4FTFModel.hh"
@@ -63,7 +76,6 @@ class G4FTFCNeutronBuilder : public G4VNeutronBuilder
G4ExcitedStringDecay * theStringDecay;
G4QuasiElasticChannel * theQuasiElastic;
G4NeutronInelasticCrossSection theXSec;
G4double theMin;
};
@@ -23,6 +23,20 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4FTFCPiKBuilder.hh,v 1.3 2009/03/31 18:38:33 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
//
//----------------------------------------------------------------------------
//
#ifndef G4FTFCPiKBuilder_h
#define G4FTFCPiKBuilder_h 1
@@ -67,7 +81,7 @@ class G4FTFCPiKBuilder : public G4VPiKBuilder
G4ExcitedStringDecay * theStringDecay;
G4QuasiElasticChannel * theQuasiElastic;
G4PiNuclearCrossSection thePiData;
G4PiNuclearCrossSection* thePiData;
G4double theMin;
};
@@ -23,6 +23,20 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4FTFCProtonBuilder.hh,v 1.4 2009/03/31 18:38:33 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
//
//----------------------------------------------------------------------------
//
#ifndef G4FTFCProtonBuilder_h
#define G4FTFCProtonBuilder_h
@@ -34,7 +48,6 @@
#include "G4ProtonInelasticProcess.hh"
#include "G4VProtonBuilder.hh"
#include "G4NeutronInelasticCrossSection.hh"
#include "G4TheoFSGenerator.hh"
#include "G4StringChipsParticleLevelInterface.hh"
#include "G4FTFModel.hh"
@@ -42,23 +55,24 @@
#include "G4ExcitedStringDecay.hh"
#include "G4QuasiElasticChannel.hh"
#include "G4ProtonInelasticCrossSection.hh"
class G4FTFCProtonBuilder : public G4VProtonBuilder
{
public:
G4FTFCProtonBuilder(G4bool quasiElastic=false);
virtual ~G4FTFCProtonBuilder(){};
virtual ~G4FTFCProtonBuilder();
public:
virtual void Build(G4HadronElasticProcess * ){};
virtual void Build(G4HadronElasticProcess * );
virtual void Build(G4ProtonInelasticProcess * aP);
void SetMinEnergy(G4double aM) {theMin = aM;}
private:
G4ProtonInelasticCrossSection theXSec;
G4TheoFSGenerator * theModel;
G4StringChipsParticleLevelInterface * theCascade;
G4FTFModel * theStringModel;
G4ExcitedStringDecay * theStringDecay;
G4QuasiElasticChannel * theQuasiElastic;
G4double theMin;
@@ -23,6 +23,20 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4FTFPNeutronBuilder.hh,v 1.4 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
//
//----------------------------------------------------------------------------
//
#ifndef G4FTFPNeutronBuilder_h
#define G4FTFPNeutronBuilder_h 1
@@ -34,7 +48,6 @@
#include "G4NeutronInelasticProcess.hh"
#include "G4VNeutronBuilder.hh"
#include "G4NeutronInelasticCrossSection.hh"
#include "G4TheoFSGenerator.hh"
#include "G4ExcitationHandler.hh"
#include "G4PreCompoundModel.hh"
@@ -57,6 +70,7 @@ class G4FTFPNeutronBuilder : public G4VNeutronBuilder
virtual void Build(G4NeutronInelasticProcess * aP);
void SetMinEnergy(G4double aM) {theMin = aM;}
void SetMaxEnergy(G4double aM) {theMax = aM;}
private:
G4TheoFSGenerator * theModel;
@@ -66,9 +80,8 @@ class G4FTFPNeutronBuilder : public G4VNeutronBuilder
G4ExcitedStringDecay * theStringDecay;
G4QuasiElasticChannel * theQuasiElastic;
G4NeutronInelasticCrossSection theXSec;
G4double theMin;
G4double theMax;
};
// 2002 by J.P. Wellisch
@@ -23,6 +23,20 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4FTFPPiKBuilder.hh,v 1.4 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
//
//----------------------------------------------------------------------------
//
#ifndef G4FTFPPiKBuilder_h
#define G4FTFPPiKBuilder_h 1
@@ -61,6 +75,7 @@ class G4FTFPPiKBuilder : public G4VPiKBuilder
virtual void Build(G4KaonZeroSInelasticProcess * aP);
void SetMinEnergy(G4double aM) {theMin = aM;}
void SetMaxEnergy(G4double aM) {theMax = aM;}
private:
G4TheoFSGenerator * theModel;
@@ -70,8 +85,9 @@ class G4FTFPPiKBuilder : public G4VPiKBuilder
G4ExcitedStringDecay * theStringDecay;
G4QuasiElasticChannel * theQuasiElastic;
G4PiNuclearCrossSection thePiData;
G4PiNuclearCrossSection* thePiData;
G4double theMin;
G4double theMax;
};
@@ -23,6 +23,20 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4FTFPProtonBuilder.hh,v 1.4 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
//
//----------------------------------------------------------------------------
//
#ifndef G4FTFPProtonBuilder_h
#define G4FTFPProtonBuilder_h
@@ -34,7 +48,6 @@
#include "G4ProtonInelasticProcess.hh"
#include "G4VProtonBuilder.hh"
#include "G4NeutronInelasticCrossSection.hh"
#include "G4TheoFSGenerator.hh"
#include "G4ExcitationHandler.hh"
#include "G4PreCompoundModel.hh"
@@ -44,8 +57,6 @@
#include "G4ExcitedStringDecay.hh"
#include "G4QuasiElasticChannel.hh"
#include "G4ProtonInelasticCrossSection.hh"
class G4FTFPProtonBuilder : public G4VProtonBuilder
{
public:
@@ -57,6 +68,7 @@ class G4FTFPProtonBuilder : public G4VProtonBuilder
virtual void Build(G4ProtonInelasticProcess * aP);
void SetMinEnergy(G4double aM) {theMin = aM;}
void SetMaxEnergy(G4double aM) {theMax = aM;}
private:
G4TheoFSGenerator * theModel;
@@ -66,8 +78,8 @@ class G4FTFPProtonBuilder : public G4VProtonBuilder
G4ExcitedStringDecay * theStringDecay;
G4QuasiElasticChannel * theQuasiElastic;
G4ProtonInelasticCrossSection theXSec;
G4double theMin;
G4double theMax;
};
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4HadronHElasticPhysics.hh,v 1.2 2007/11/15 18:08:11 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-02 $
// $Id: G4HadronHElasticPhysics.hh,v 1.4 2009/11/28 17:35:01 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-03 $
//
//---------------------------------------------------------------------------
//
@@ -50,7 +50,8 @@
class G4HadronHElasticPhysics : public G4VPhysicsConstructor
{
public:
G4HadronHElasticPhysics(G4int ver = 0, G4bool hp = false);
G4HadronHElasticPhysics(G4int ver = 0, G4bool hp = false,
const G4String& type = "");
virtual ~G4HadronHElasticPhysics();
public:
@@ -65,15 +66,10 @@ public:
private:
G4HadronicInteraction* model;
G4HadronicInteraction* neutronModel;
G4HadronicInteraction* neutronHPModel;
G4String mname;
G4int verbose;
G4bool hpFlag;
G4bool wasActivated;
G4String subtype;
};
@@ -0,0 +1,80 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
#ifndef G4InclAblaNeutronBuilder_h
#define G4InclAblaNeutronBuilder_h 1
#include "globals.hh"
#include "G4HadronElasticProcess.hh"
#include "G4HadronFissionProcess.hh"
#include "G4HadronCaptureProcess.hh"
#include "G4NeutronInelasticProcess.hh"
#include "G4VNeutronBuilder.hh"
#include "G4InclAblaCascadeInterface.hh"
#include "G4NeutronInelasticCrossSection.hh"
/**
* Builder for neutron processes using the INCL/ABLA intra-nuclear
* cascade and de-excitation models.
*
* By default the INCL/ABLA models are used for projectile energies 0 - 3 GeV.
*
* The builder uses INCL cascade model with build-in ABLA
* de-excitation. This is implemented in interface
* G4InclAblaCascadeInterface.
*
* @see G4InclAblaCascadeInterface
* @see G4InclAblaProtonBuilder
* @see G4InclAblaPiKBuilder
*/
class G4InclAblaNeutronBuilder : public G4VNeutronBuilder
{
public:
G4InclAblaNeutronBuilder();
virtual ~G4InclAblaNeutronBuilder();
public:
virtual void Build(G4HadronElasticProcess * aP);
virtual void Build(G4HadronFissionProcess * aP);
virtual void Build(G4HadronCaptureProcess * aP);
virtual void Build(G4NeutronInelasticProcess * aP);
void SetMinEnergy(G4double aM) {theMin = aM;}
void SetMaxEnergy(G4double aM) {theMax = aM;}
private:
G4InclAblaCascadeInterface * theModel;
G4NeutronInelasticCrossSection theXSec;
G4double theMin;
G4double theMax;
};
// 2002 by J.P. Wellisch
#endif
@@ -0,0 +1,84 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
#ifndef G4InclAblaPiKBuilder_h
#define G4InclAblaPiKBuilder_h 1
#include "globals.hh"
#include "G4HadronElasticProcess.hh"
#include "G4HadronFissionProcess.hh"
#include "G4HadronCaptureProcess.hh"
#include "G4NeutronInelasticProcess.hh"
#include "G4VPiKBuilder.hh"
#include "G4PiNuclearCrossSection.hh"
#include "G4InclAblaCascadeInterface.hh"
#include "G4CascadeInterface.hh"
/**
* Builder for pion processes using the INCL/ABLA intra-nuclear
* cascade and de-excitation models.
*
* By default the INCL/ABLA models are used for projectile energies 0 - 3 GeV.
*
* The builder uses INCL cascade model with build-in ABLA
* de-excitation. This is implemented in interface
* G4InclAblaCascadeInterface.
*
* @see G4InclAblaCascadeInterface
* @see G4InclAblaProtonBuilder
* @see G4InclAblaNeutronBuilder
*/
class G4InclAblaPiKBuilder : public G4VPiKBuilder
{
public:
G4InclAblaPiKBuilder();
virtual ~G4InclAblaPiKBuilder();
public:
virtual void Build(G4HadronElasticProcess * aP);
virtual void Build(G4PionPlusInelasticProcess * aP);
virtual void Build(G4PionMinusInelasticProcess * aP);
virtual void Build(G4KaonPlusInelasticProcess * aP);
virtual void Build(G4KaonMinusInelasticProcess * aP);
virtual void Build(G4KaonZeroLInelasticProcess * aP);
virtual void Build(G4KaonZeroSInelasticProcess * aP);
void SetMinEnergy(G4double aM) {theMin = aM;}
void SetMaxEnergy(G4double aM) {theMax = aM;}
private:
G4PiNuclearCrossSection thePiData;
G4InclAblaCascadeInterface * theModel;
G4double theMin;
G4double theMax;
G4CascadeInterface *theBertiniModel;
};
// 2002 by J.P. Wellisch
#endif
@@ -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. *
// ********************************************************************
//
#ifndef G4InclAblaProtonBuilder_h
#define G4InclAblaProtonBuilder_h
#include "globals.hh"
#include "G4HadronElasticProcess.hh"
#include "G4HadronFissionProcess.hh"
#include "G4HadronCaptureProcess.hh"
#include "G4ProtonInelasticProcess.hh"
#include "G4VProtonBuilder.hh"
#include "G4InclAblaCascadeInterface.hh"
#include "G4ProtonInelasticCrossSection.hh"
/**
* Builder for proton processes using the INCL/ABLA intra-nuclear
* cascade and de-excitation models.
*
* By default the INCL/ABLA models are used for projectile energies 0 - 3 GeV.
*
* The builder uses INCL cascade model with build-in ABLA
* de-excitation. This is implemented in interface
* G4InclAblaCascadeInterface.
*
* @see G4InclAblaCascadeInterface
* @see G4InclAblaNeutronBuilder
* @see G4InclAblaPiKBuilder
*/
class G4InclAblaProtonBuilder : public G4VProtonBuilder
{
public:
G4InclAblaProtonBuilder();
virtual ~G4InclAblaProtonBuilder();
public:
/**
* Build elastic process.
*
* No elastic process is built.
*/
virtual void Build(G4HadronElasticProcess * aP);
/**
* Build inelastic process.
*/
virtual void Build(G4ProtonInelasticProcess * aP);
/**
* Set the minimum energy limit for the model.
*/
void SetMinEnergy(G4double aM) {theMin = aM;}
/**
* Set the maximum energy limit for the model.
*/
void SetMaxEnergy(G4double aM) {theMax = aM;}
private:
G4ProtonInelasticCrossSection theXSec;
G4InclAblaCascadeInterface * theModel;
G4double theMin;
G4double theMax;
};
// 2002 by J.P. Wellisch
#endif
@@ -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. *
// ********************************************************************
//
// $Id: G4IonInclAblaPhysics.hh,v 1.1 2009/07/19 18:24:03 kaitanie Exp $
// GEANT4 tag $Name: geant4-09-03 $
//
//---------------------------------------------------------------------------
//
// ClassName: G4IonInclAblaBuilder
//
// Author: P. Kaitaniemi 18.05.2009
//
// Modified:
//
//----------------------------------------------------------------------------
//
#ifndef G4IonInclAblaPhysics_h
#define G4IonInclAblaPhysics_h 1
#include "globals.hh"
#include "G4VPhysicsConstructor.hh"
#include "G4LEDeuteronInelastic.hh"
#include "G4LETritonInelastic.hh"
#include "G4LEAlphaInelastic.hh"
#include <vector>
class G4HadronInelasticProcess;
class G4HadronicInteraction;
class G4TripathiLightCrossSection;
class G4TripathiCrossSection;
class G4IonsShenCrossSection;
class G4IonInclAblaPhysics : public G4VPhysicsConstructor
{
public:
G4IonInclAblaPhysics(const G4String& name="ions", G4int verb = 0);
virtual ~G4IonInclAblaPhysics();
// This method will be invoked in the Construct() method.
// each particle type will be instantiated
virtual void ConstructParticle();
// This method will be invoked in the Construct() method.
// each physics process will be instantiated and
// registered to the process manager of each particle type
virtual void ConstructProcess();
private:
void AddProcess(const G4String&,
G4ParticleDefinition*,
G4HadronicInteraction*,
G4HadronicInteraction*,
const G4double);
std::vector<G4HadronInelasticProcess*> p_list;
std::vector<G4HadronicInteraction*> model_list;
G4TripathiCrossSection* fTripathi;
G4TripathiLightCrossSection* fTripathiLight;
G4IonsShenCrossSection* fShen;
G4LEDeuteronInelastic* fLEDModel;
G4LETritonInelastic* fLETModel;
G4LEAlphaInelastic* fLEAModel;
G4double emin;
G4double emax_d, emax_t, emax_he3, emax_alpha;
G4double emaxLHEP;
G4int verbose;
G4bool wasActivated;
};
#endif
@@ -0,0 +1,111 @@
//
// ********************************************************************
// * 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.hh,v 1.1 2009/11/27 17:25:15 gunter Exp $
// GEANT4 tag $Name: geant4-09-03 $
//
//---------------------------------------------------------------------------
//
// ClassName: G4IonBinaryCascadeBuilder
// Created from G4IonBinaryCascadePhysics
//
// Author: G.Folger
//
// Modified:
//
//----------------------------------------------------------------------------
//
#ifndef G4IonQMDPhysics_h
#define G4IonQMDPhysics_h 1
#include "globals.hh"
#include "G4VPhysicsConstructor.hh"
#include "G4LEDeuteronInelastic.hh"
#include "G4LETritonInelastic.hh"
#include "G4LEAlphaInelastic.hh"
#include <vector>
class G4HadronInelasticProcess;
class G4HadronicInteraction;
class G4BinaryLightIonReaction;
class G4QMDReaction;
class G4TripathiLightCrossSection;
class G4TripathiCrossSection;
class G4IonsShenCrossSection;
class G4IonQMDPhysics : public G4VPhysicsConstructor
{
public:
G4IonQMDPhysics(const G4String& name="ions", G4int verb = 0);
virtual ~G4IonQMDPhysics();
// This method will be invoked in the Construct() method.
// each particle type will be instantiated
virtual void ConstructParticle();
// This method will be invoked in the Construct() method.
// each physics process will be instantiated and
// registered to the process manager of each particle type
virtual void ConstructProcess();
private:
void AddProcess(const G4String&,
G4ParticleDefinition*,
G4BinaryLightIonReaction*,
G4QMDReaction*,
G4HadronicInteraction*);
std::vector<G4HadronInelasticProcess*> p_list;
std::vector<G4HadronicInteraction*> model_list;
G4TripathiCrossSection* fTripathi;
G4TripathiLightCrossSection* fTripathiLight;
G4IonsShenCrossSection* fShen;
G4LEDeuteronInelastic* fLEDModel;
G4LETritonInelastic* fLETModel;
G4LEAlphaInelastic* fLEAModel;
G4double eminBIC;
G4double eminQMD;
G4double emaxQMD;
G4double emaxLHEP;
G4double overlap;
G4int verbose;
G4bool wasActivated;
};
#endif
@@ -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 $
//
//---------------------------------------------------------------------------
//
@@ -101,72 +101,72 @@ class G4MiscLHEPBuilder
private:
// anti-proton
G4AntiProtonInelasticProcess theAntiProtonInelastic;
G4AntiProtonInelasticProcess* theAntiProtonInelastic;
G4LEAntiProtonInelastic* theLEAntiProtonModel;
G4HEAntiProtonInelastic* theHEAntiProtonModel;
// anti-neutron
G4AntiNeutronInelasticProcess theAntiNeutronInelastic;
G4AntiNeutronInelasticProcess* theAntiNeutronInelastic;
G4LEAntiNeutronInelastic* theLEAntiNeutronModel;
G4HEAntiNeutronInelastic* theHEAntiNeutronModel;
// Lambda
G4LambdaInelasticProcess theLambdaInelastic;
G4LambdaInelasticProcess* theLambdaInelastic;
G4LELambdaInelastic* theLELambdaModel;
G4HELambdaInelastic* theHELambdaModel;
// AntiLambda
G4AntiLambdaInelasticProcess theAntiLambdaInelastic;
G4AntiLambdaInelasticProcess* theAntiLambdaInelastic;
G4LEAntiLambdaInelastic* theLEAntiLambdaModel;
G4HEAntiLambdaInelastic* theHEAntiLambdaModel;
// SigmaMinus
G4SigmaMinusInelasticProcess theSigmaMinusInelastic;
G4SigmaMinusInelasticProcess* theSigmaMinusInelastic;
G4LESigmaMinusInelastic* theLESigmaMinusModel;
G4HESigmaMinusInelastic* theHESigmaMinusModel;
// AntiSigmaMinus
G4AntiSigmaMinusInelasticProcess theAntiSigmaMinusInelastic;
G4AntiSigmaMinusInelasticProcess* theAntiSigmaMinusInelastic;
G4LEAntiSigmaMinusInelastic* theLEAntiSigmaMinusModel;
G4HEAntiSigmaMinusInelastic* theHEAntiSigmaMinusModel;
// SigmaPlus
G4SigmaPlusInelasticProcess theSigmaPlusInelastic;
G4SigmaPlusInelasticProcess* theSigmaPlusInelastic;
G4LESigmaPlusInelastic* theLESigmaPlusModel;
G4HESigmaPlusInelastic* theHESigmaPlusModel;
// AntiSigmaPlus
G4AntiSigmaPlusInelasticProcess theAntiSigmaPlusInelastic;
G4AntiSigmaPlusInelasticProcess* theAntiSigmaPlusInelastic;
G4LEAntiSigmaPlusInelastic* theLEAntiSigmaPlusModel;
G4HEAntiSigmaPlusInelastic* theHEAntiSigmaPlusModel;
// XiZero
G4XiZeroInelasticProcess theXiZeroInelastic;
G4XiZeroInelasticProcess* theXiZeroInelastic;
G4LEXiZeroInelastic* theLEXiZeroModel;
G4HEXiZeroInelastic* theHEXiZeroModel;
// AntiXiZero
G4AntiXiZeroInelasticProcess theAntiXiZeroInelastic;
G4AntiXiZeroInelasticProcess* theAntiXiZeroInelastic;
G4LEAntiXiZeroInelastic* theLEAntiXiZeroModel;
G4HEAntiXiZeroInelastic* theHEAntiXiZeroModel;
// XiMinus
G4XiMinusInelasticProcess theXiMinusInelastic;
G4XiMinusInelasticProcess* theXiMinusInelastic;
G4LEXiMinusInelastic* theLEXiMinusModel;
G4HEXiMinusInelastic* theHEXiMinusModel;
// AntiXiMinus
G4AntiXiMinusInelasticProcess theAntiXiMinusInelastic;
G4AntiXiMinusInelasticProcess* theAntiXiMinusInelastic;
G4LEAntiXiMinusInelastic* theLEAntiXiMinusModel;
G4HEAntiXiMinusInelastic* theHEAntiXiMinusModel;
// OmegaMinus
G4OmegaMinusInelasticProcess theOmegaMinusInelastic;
G4OmegaMinusInelasticProcess* theOmegaMinusInelastic;
G4LEOmegaMinusInelastic* theLEOmegaMinusModel;
G4HEOmegaMinusInelastic* theHEOmegaMinusModel;
// AntiOmegaMinus
G4AntiOmegaMinusInelasticProcess theAntiOmegaMinusInelastic;
G4AntiOmegaMinusInelasticProcess* theAntiOmegaMinusInelastic;
G4LEAntiOmegaMinusInelastic* theLEAntiOmegaMinusModel;
G4HEAntiOmegaMinusInelastic* theHEAntiOmegaMinusModel;
@@ -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: G4MiscQGSCBuilder
//
// Author: 2009 M. Kossov (on the basis of the G4MiscLHEPBuilder)
//
// Modified:
//
//----------------------------------------------------------------------------
//
#ifndef G4MiscQGSCBuilder_h
#define G4MiscQGSCBuilder_h 1
#include "globals.hh"
#include "G4VPhysicsConstructor.hh"
#include "G4HadronInelasticProcess.hh"
#include "G4TheoFSGenerator.hh"
#include "G4StringChipsParticleLevelInterface.hh"
#include "G4QGSModel.hh"
#include "G4QGSParticipants.hh"
#include "G4QGSMFragmentation.hh"
#include "G4ExcitedStringDecay.hh"
#include "G4QuasiElasticChannel.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
#include "G4ProcessManager.hh"
//class G4HadronicProcess;
//class G4TheoFSGenerator;
//class G4StringChipsParticleLevelInterface;
//class G4ExcitedStringDecay;
//class G4HadronProcessStore;
//class G4QuasiElasticChannel;
class G4MiscQGSCBuilder
//class G4MiscQGSCBuilder : public G4VPhysicsConstructor
{
public:
G4MiscQGSCBuilder(G4int verbose);
virtual ~G4MiscQGSCBuilder();
public:
void Build();
protected:
// the particle table has the complete List of existing particle types
G4ParticleTable* theParticleTable;
G4ParticleTable::G4PTblDicIterator* theParticleIterator;
private:
G4TheoFSGenerator * theModel;
G4StringChipsParticleLevelInterface * theCascade;
G4QGSModel< G4QGSParticipants > * theQGSCModel;
G4ExcitedStringDecay * theQGSCDecay;
G4QuasiElasticChannel * theQuasiElastic;
G4int verbose;
G4bool wasActivated;
};
// 2009 by M. Kossov
#endif
@@ -0,0 +1,151 @@
//
// ********************************************************************
// * 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:
//
//----------------------------------------------------------------------------
//
// This class provides construction of default optical physics
//
#ifndef G4OpticalPhysics_h
#define G4OpticalPhysics_h 1
#include "globals.hh"
#include "G4VPhysicsConstructor.hh"
#include "G4OpticalPhysicsMessenger.hh"
#include "G4OpWLS.hh"
#include "G4Scintillation.hh"
#include "G4Cerenkov.hh"
#include "G4OpAbsorption.hh"
#include "G4OpRayleigh.hh"
#include "G4OpBoundaryProcess.hh"
#include "G4OpticalSurface.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class G4OpticalPhysics : public G4VPhysicsConstructor
{
public:
G4OpticalPhysics(G4int verbose = 0, const G4String& name = "Optical");
virtual ~G4OpticalPhysics();
protected:
// construct particle and physics
virtual void ConstructParticle();
virtual void ConstructProcess();
private:
/// Not implemented
G4OpticalPhysics(const G4OpticalPhysics& right);
/// Not implemented
G4OpticalPhysics& operator=(const G4OpticalPhysics& right);
public:
// get methods
virtual G4Scintillation* GetScintillationProcess()
{ return fScintillationProcess; }
virtual G4Cerenkov* GetCerenkovProcess() { return fCerenkovProcess; }
virtual G4OpWLS* GetOpWLSProcess() { return fOpWLSProcess; }
virtual G4OpAbsorption* GetOpAbsorptionProcess()
{ return fOpAbsorptionProcess; }
virtual G4OpRayleigh* GetOpRayleighProcess()
{ return fOpRayleighScatteringProcess; }
virtual G4OpBoundaryProcess* GetOpBoundaryProcess()
{ return fOpBoundaryProcess; }
// set methods
void SetMaxNumPhotonsPerStep(G4int );
void SetMaxBetaChangePerStep(G4double );
void SetScintillationYieldFactor(G4double );
void SetScintillationExcitationRatio(G4double );
void SetOpticalSurfaceModel(G4OpticalSurfaceModel );
void SetWLSTimeProfile(G4String );
void AddScintillationSaturation(G4EmSaturation* );
void SetTrackSecondariesFirst(G4bool );
private:
// data members
G4bool wasActivated;
G4OpticalPhysicsMessenger* fMessenger;
G4Scintillation* fScintillationProcess;
G4Cerenkov* fCerenkovProcess;
G4OpWLS* fOpWLSProcess;
G4OpAbsorption* fOpAbsorptionProcess;
G4OpRayleigh* fOpRayleighScatteringProcess;
G4OpBoundaryProcess* fOpBoundaryProcess;
/// max number of Cerenkov photons per step
G4int fMaxNumPhotons;
/// max change of beta per step
G4double fMaxBetaChange;
/// scintillation yield factor
G4double fYieldFactor;
/// scintillation excitation ratio
G4double fExcitationRatio;
/// the optical surface model (glisur or unified)
G4OpticalSurfaceModel fSurfaceModel;
/// the WLS process time profile
G4String fProfile;
/// option to track secondaries before finishing their parent track
G4bool fTrackSecondariesFirst;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,103 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
#ifndef G4OpticalPhysicsMessenger_h
#define G4OpticalPhysicsMessenger_h 1
#include "globals.hh"
#include "G4UImessenger.hh"
class G4VProcess;
class G4OpticalPhysics;
class G4UIdirectory;
class G4UIcmdWithABool;
class G4UIcmdWithADouble;
class G4UIcmdWithAString;
class G4UIcmdWithAnInteger;
class G4OpticalPhysicsMessenger: public G4UImessenger
{
public:
G4OpticalPhysicsMessenger(G4OpticalPhysics*);
~G4OpticalPhysicsMessenger();
// methods
void SetNewValue(G4UIcommand*, G4String);
private:
/// Not implemented
G4OpticalPhysicsMessenger();
/// Not implemented
G4OpticalPhysicsMessenger(const G4OpticalPhysicsMessenger& right);
/// Not implemented
G4OpticalPhysicsMessenger& operator=(const G4OpticalPhysicsMessenger& right);
// data members
/// associated clas
G4OpticalPhysics* fOpticalPhysics;
/// command directory
G4UIdirectory* fDir;
/// selected optical process
G4VProcess* fSelectedProcess;
/// selectOpProcess command
G4UIcmdWithAString* fSelectOpProcessCmd;
/// setCerenkovActivation command
G4UIcmdWithABool* fSetOpProcessActivationCmd;
/// setCerenkovVerbose command
G4UIcmdWithAnInteger* fSetOpProcessVerboseCmd;
/// setCerenkovMaxPhotons command
G4UIcmdWithAnInteger* fSetCerenkovMaxPhotonsCmd;
/// setCerenkovMaxBetaChange command
G4UIcmdWithADouble* fSetCerenkovMaxBetaChangeCmd;
/// setScintillationYieldFactor command
G4UIcmdWithADouble* fSetScintillationYieldFactorCmd;
/// setOpticalSurfaceModel command
G4UIcmdWithAString* fSetOpticalSurfaceModelCmd;
/// setWLSTimeProfile command
G4UIcmdWithAString* fSetWLSTimeProfileCmd;
/// setTrackSecondariesFirst command
G4UIcmdWithABool* fSetTrackSecondariesFirstCmd;
};
#endif
@@ -23,6 +23,20 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4PrecoNeutronBuilder.hh,v 1.2 2009/03/31 11:04:01 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
//
//----------------------------------------------------------------------------
//
#ifndef G4PrecoNeutronBuilder_h
#define G4PrecoNeutronBuilder_h 1
@@ -54,7 +68,6 @@ class G4PrecoNeutronBuilder : public G4VNeutronBuilder
private:
G4PreCompoundModel * theModel;
G4NeutronInelasticCrossSection theXSec;
G4double theMin;
G4double theMax;
@@ -23,6 +23,20 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4PrecoProtonBuilder.hh,v 1.2 2009/03/31 11:04:01 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
//
//----------------------------------------------------------------------------
//
#ifndef G4PrecoProtonBuilder_h
#define G4PrecoProtonBuilder_h
@@ -35,7 +49,6 @@
#include "G4VProtonBuilder.hh"
#include "G4PreCompoundModel.hh"
#include "G4ProtonInelasticCrossSection.hh"
class G4PrecoProtonBuilder : public G4VProtonBuilder
{
@@ -50,7 +63,7 @@ class G4PrecoProtonBuilder : public G4VProtonBuilder
void SetMinEnergy(G4double aM) {theMin = aM;}
private:
G4ProtonInelasticCrossSection theXSec;
G4PreCompoundModel * theModel;
G4double theMin;
G4double theMax;
@@ -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. *
// ********************************************************************
//
//
// $Id: G4QAtomicPhysics.hh,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 G4EmStandardPhysics)
//
// Modified:
//
//---------------------------------------------------------------------------
//
// This class provides construction of CHIPS-modified Electromagnetic physics
//
//---------------------------------------------------------------------------
#ifndef G4QAtomicPhysics_h
#define G4QAtomicPhysics_h 1
#include "G4VPhysicsConstructor.hh"
#include "globals.hh"
class G4QAtomicPhysics : public G4VPhysicsConstructor
{
public:
G4QAtomicPhysics(G4int ver = 0, const G4String& name = "G4QAtomic");
virtual ~G4QAtomicPhysics();
virtual void ConstructParticle();
virtual void ConstructProcess();
private:
G4int verbose;
};
#endif
@@ -0,0 +1,79 @@
//
// ********************************************************************
// * 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.hh,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:
//
//----------------------------------------------------------------------------
//
#ifndef G4QCaptureAtRestPhysics_h
#define G4QCaptureAtRestPhysics_h 1
#include "globals.hh"
#include "G4VPhysicsConstructor.hh"
#include "G4ProcessManager.hh"
#include "G4ParticleDefinition.hh"
#include "G4Electron.hh"
#include "G4LeptonConstructor.hh"
#include "G4MesonConstructor.hh"
#include "G4BaryonConstructor.hh"
#include "G4QCaptureAtRest.hh"
class G4QCaptureAtRest;
class G4QCaptureAtRestPhysics : public G4VPhysicsConstructor
{
public:
G4QCaptureAtRestPhysics(const G4String& name = "nuclear_capture", G4int ver = 1);
virtual ~G4QCaptureAtRestPhysics();
public:
// This method will be invoked in the Construct() method.
// each particle type will be instantiated
virtual void ConstructParticle();
// This method will be invoked in the Construct() method.
// each physics process will be instantiated and
// registered to the process manager of each particle type
virtual void ConstructProcess();
private:
G4QCaptureAtRest* captureProcess;
G4int verbose;
G4bool wasActivated;
};
#endif
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4QEmExtraPhysics.hh,v 1.1 2007/05/23 17:38:35 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-02 $
// $Id: G4QEmExtraPhysics.hh,v 1.2 2009/11/16 19:12:10 mkossov Exp $
// GEANT4 tag $Name: geant4-09-03 $
//
//---------------------------------------------------------------------------
//
@@ -32,7 +32,7 @@
//
// Author: 11 April 2006 V. Ivanchenko
//
// Modified:
// Modified: 19 Nov 2009 M.Kosov: G4QInelastic instead of G4QCollision
//
//----------------------------------------------------------------------------
//
@@ -43,7 +43,7 @@
#include "globals.hh"
#include "G4VPhysicsConstructor.hh"
class G4QCollision;
class G4QInelastic;
class G4QEmExtraPhysics : public G4VPhysicsConstructor
{
@@ -63,7 +63,7 @@ public:
private:
G4QCollision* hProcess;
G4QInelastic* hProcess;
G4int verbose;
G4bool wasActivated;
@@ -23,6 +23,20 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4QGSBinaryNeutronBuilder.hh,v 1.2 2009/03/31 11:04:01 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
//
//----------------------------------------------------------------------------
//
#ifndef G4QGSBinaryNeutronBuilder_h
#define G4QGSBinaryNeutronBuilder_h 1
@@ -34,7 +48,6 @@
#include "G4NeutronInelasticProcess.hh"
#include "G4VNeutronBuilder.hh"
#include "G4NeutronInelasticCrossSection.hh"
#include "G4TheoFSGenerator.hh"
#include "G4ExcitationHandler.hh"
#include "G4PreCompoundModel.hh"
@@ -67,7 +80,6 @@ class G4QGSBinaryNeutronBuilder : public G4VNeutronBuilder
G4ExcitedStringDecay * theStringDecay;
G4QuasiElasticChannel * theQuasiElastic;
G4NeutronInelasticCrossSection theXSec;
G4double theMin;
};
@@ -23,6 +23,20 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4QGSBinaryPiKBuilder.hh,v 1.2 2009/03/31 11:04:01 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
//
//----------------------------------------------------------------------------
//
#ifndef G4QGSBinaryPiKBuilder_h
#define G4QGSBinaryPiKBuilder_h 1
@@ -64,7 +78,7 @@ class G4QGSBinaryPiKBuilder : public G4VPiKBuilder
void SetMinEnergy(G4double aM) {theMin = aM;}
private:
G4PiNuclearCrossSection thePiData;
G4PiNuclearCrossSection* thePiData;
G4TheoFSGenerator * theModel;
G4PreCompoundModel * thePreEquilib;
G4BinaryCascade * theCascade;
@@ -23,6 +23,20 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4QGSBinaryProtonBuilder.hh,v 1.2 2009/03/31 11:04:01 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
//
//----------------------------------------------------------------------------
//
#ifndef G4QGSBinaryProtonBuilder_h
#define G4QGSBinaryProtonBuilder_h
@@ -34,7 +48,6 @@
#include "G4ProtonInelasticProcess.hh"
#include "G4VProtonBuilder.hh"
#include "G4NeutronInelasticCrossSection.hh"
#include "G4TheoFSGenerator.hh"
#include "G4ExcitationHandler.hh"
#include "G4PreCompoundModel.hh"
@@ -45,8 +58,6 @@
#include "G4ExcitedStringDecay.hh"
#include "G4QuasiElasticChannel.hh"
#include "G4ProtonInelasticCrossSection.hh"
class G4QGSBinaryProtonBuilder : public G4VProtonBuilder
{
public:
@@ -60,7 +71,7 @@ class G4QGSBinaryProtonBuilder : public G4VProtonBuilder
void SetMinEnergy(G4double aM) {theMin = aM;}
private:
G4ProtonInelasticCrossSection theXSec;
G4TheoFSGenerator * theModel;
G4PreCompoundModel * thePreEquilib;
G4BinaryCascade * theCascade;
@@ -0,0 +1,84 @@
//
// ********************************************************************
// * 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.hh,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:
//
//----------------------------------------------------------------------------
//
#ifndef G4QGSBuilder_h
#define G4QGSBuilder_h 1
#include "globals.hh"
#include "G4VHadronModelBuilder.hh"
#include "G4QGSModel.hh"
#include "G4QGSParticipants.hh"
class G4ExcitedStringDecay;
class G4QuasiElasticChannel;
class G4ProjectileDiffractiveChannel;
class G4QGSBuilder : public G4VHadronModelBuilder
{
public:
G4QGSBuilder(const G4String& name ="",
G4bool quasiElastic=true,
G4bool projectileDiffraction=false);
virtual ~G4QGSBuilder();
protected:
virtual G4HadronicInteraction* BuildModel();
private:
// copy constructor and hide assignment operator
G4QGSBuilder(G4QGSBuilder &);
G4QGSBuilder & operator=(const G4QGSBuilder &right);
G4QGSModel< G4QGSParticipants > * theQGStringModel;
G4ExcitedStringDecay* theQGStringDecay;
G4QuasiElasticChannel* theQuasiElastic;
G4ProjectileDiffractiveChannel* theProjectileDiffraction;
G4bool quasielFlag;
G4bool diffFlag;
};
#endif
@@ -23,6 +23,20 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4QGSCEflowNeutronBuilder.hh,v 1.3 2009/03/31 11:04:01 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
//
//----------------------------------------------------------------------------
//
#ifndef G4QGSCEflowNeutronBuilder_h
#define G4QGSCEflowNeutronBuilder_h 1
@@ -34,7 +48,6 @@
#include "G4NeutronInelasticProcess.hh"
#include "G4VNeutronBuilder.hh"
#include "G4NeutronInelasticCrossSection.hh"
#include "G4TheoFSGenerator.hh"
#include "G4StringChipsParticleLevelInterface.hh"
#include "G4QGSModel.hh"
@@ -64,7 +77,6 @@ class G4QGSCEflowNeutronBuilder : public G4VNeutronBuilder
G4ExcitedStringDecay * theStringDecay;
G4QuasiElasticChannel * theQuasiElastic;
G4NeutronInelasticCrossSection theXSec;
G4double theMin;
};
@@ -23,6 +23,20 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4QGSCEflowPiKBuilder.hh,v 1.3 2009/03/31 11:04:01 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
//
//----------------------------------------------------------------------------
//
#ifndef G4QGSCEflowPiKBuilder_h
#define G4QGSCEflowPiKBuilder_h 1
@@ -62,7 +76,7 @@ class G4QGSCEflowPiKBuilder : public G4VPiKBuilder
void SetMinEnergy(G4double aM) {theMin = aM;}
private:
G4PiNuclearCrossSection thePiCross;
G4PiNuclearCrossSection* thePiCross;
G4TheoFSGenerator * theModel;
G4StringChipsParticleLevelInterface * theCascade;
@@ -23,6 +23,20 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4QGSCEflowProtonBuilder.hh,v 1.3 2009/03/31 11:04:01 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
//
//----------------------------------------------------------------------------
//
#ifndef G4QGSCEflowProtonBuilder_h
#define G4QGSCEflowProtonBuilder_h
@@ -43,8 +57,6 @@
#include "G4ExcitedStringDecay.hh"
#include "G4QuasiElasticChannel.hh"
#include "G4ProtonInelasticCrossSection.hh"
class G4QGSCEflowProtonBuilder : public G4VProtonBuilder
{
public:
@@ -58,7 +70,7 @@ class G4QGSCEflowProtonBuilder : public G4VProtonBuilder
void SetMinEnergy(G4double aM) {theMin = aM;}
private:
G4ProtonInelasticCrossSection theXSec;
G4TheoFSGenerator * theModel;
G4StringChipsParticleLevelInterface * theCascade;
G4QGSModel< G4QGSParticipants > * theStringModel;
@@ -23,6 +23,20 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4QGSCNeutronBuilder.hh,v 1.4 2009/03/31 11:04:01 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
//
//----------------------------------------------------------------------------
//
#ifndef G4QGSCNeutronBuilder_h
#define G4QGSCNeutronBuilder_h 1
@@ -34,7 +48,6 @@
#include "G4NeutronInelasticProcess.hh"
#include "G4VNeutronBuilder.hh"
#include "G4NeutronInelasticCrossSection.hh"
#include "G4TheoFSGenerator.hh"
#include "G4QStringChipsParticleLevelInterface.hh"
#include "G4QGSModel.hh"
@@ -64,9 +77,7 @@ class G4QGSCNeutronBuilder : public G4VNeutronBuilder
G4ExcitedStringDecay * theStringDecay;
G4QuasiElasticChannel * theQuasiElastic;
G4NeutronInelasticCrossSection theXSec;
G4double theMin;
};
// 2002 by J.P. Wellisch
@@ -23,6 +23,20 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4QGSCPiKBuilder.hh,v 1.4 2009/03/31 11:04:01 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
//
//----------------------------------------------------------------------------
//
#ifndef G4QGSCPiKBuilder_h
#define G4QGSCPiKBuilder_h 1
@@ -62,7 +76,7 @@ class G4QGSCPiKBuilder : public G4VPiKBuilder
void SetMinEnergy(G4double aM) {theMin = aM;}
private:
G4PiNuclearCrossSection thePiCross;
G4PiNuclearCrossSection* thePiCross;
G4TheoFSGenerator * theModel;
G4QStringChipsParticleLevelInterface * theCascade;
@@ -23,6 +23,20 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4QGSCProtonBuilder.hh,v 1.4 2009/03/31 11:04:01 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
//
//----------------------------------------------------------------------------
//
#ifndef G4QGSCProtonBuilder_h
#define G4QGSCProtonBuilder_h
@@ -43,8 +57,6 @@
#include "G4ExcitedStringDecay.hh"
#include "G4QuasiElasticChannel.hh"
#include "G4ProtonInelasticCrossSection.hh"
class G4QGSCProtonBuilder : public G4VProtonBuilder
{
public:
@@ -58,7 +70,7 @@ class G4QGSCProtonBuilder : public G4VProtonBuilder
void SetMinEnergy(G4double aM) {theMin = aM;}
private:
G4ProtonInelasticCrossSection theXSec;
G4TheoFSGenerator * theModel;
G4QStringChipsParticleLevelInterface * theCascade;
G4QGSModel< G4QGSParticipants > * theStringModel;
@@ -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. *
// ********************************************************************
//
#ifndef G4QGSC_CHIPSNeutronBuilder_h
#define G4QGSC_CHIPSNeutronBuilder_h 1
#include "globals.hh"
#include "G4HadronElasticProcess.hh"
#include "G4HadronFissionProcess.hh"
#include "G4HadronCaptureProcess.hh"
#include "G4NeutronInelasticProcess.hh"
#include "G4VNeutronBuilder.hh"
#include "G4NeutronInelasticCrossSection.hh"
#include "G4TheoFSGenerator.hh"
#include "G4StringChipsParticleLevelInterface.hh"
#include "G4QGSModel.hh"
#include "G4QGSParticipants.hh"
#include "G4QGSMFragmentation.hh"
#include "G4ExcitedStringDecay.hh"
#include "G4QuasiElasticChannel.hh"
#include "G4NeutronInelasticCrossSection.hh"
class G4QGSC_CHIPSNeutronBuilder : public G4VNeutronBuilder
{
public:
G4QGSC_CHIPSNeutronBuilder(G4bool quasiElastic=false);
virtual ~G4QGSC_CHIPSNeutronBuilder();
public:
virtual void Build(G4HadronElasticProcess * ){}
virtual void Build(G4HadronFissionProcess * ){}
virtual void Build(G4HadronCaptureProcess * ){}
virtual void Build(G4NeutronInelasticProcess * aP);
void SetMinEnergy(G4double aM) {theMin = aM;}
private:
G4NeutronInelasticCrossSection theXSec;
G4TheoFSGenerator * theModel;
G4StringChipsParticleLevelInterface * theCascade;
G4QGSModel< G4QGSParticipants > * theStringModel;
G4ExcitedStringDecay * theStringDecay;
G4QuasiElasticChannel * theQuasiElastic;
G4double theMin;
};
// 2009 by M. Kosov
#endif
@@ -0,0 +1,81 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
#ifndef G4QGSC_CHIPSPiKBuilder_h
#define G4QGSC_CHIPSPiKBuilder_h 1
#include "globals.hh"
#include "G4HadronElasticProcess.hh"
#include "G4HadronFissionProcess.hh"
#include "G4HadronCaptureProcess.hh"
#include "G4NeutronInelasticProcess.hh"
#include "G4VPiKBuilder.hh"
#include "G4PiNuclearCrossSection.hh"
#include "G4TheoFSGenerator.hh"
#include "G4StringChipsParticleLevelInterface.hh"
#include "G4QGSModel.hh"
#include "G4QGSParticipants.hh"
#include "G4QGSMFragmentation.hh"
#include "G4ExcitedStringDecay.hh"
#include "G4QuasiElasticChannel.hh"
class G4QGSC_CHIPSPiKBuilder : public G4VPiKBuilder
{
public:
G4QGSC_CHIPSPiKBuilder(G4bool quasiElastic=false);
virtual ~G4QGSC_CHIPSPiKBuilder();
public:
virtual void Build(G4HadronElasticProcess * aP);
virtual void Build(G4PionPlusInelasticProcess * aP);
virtual void Build(G4PionMinusInelasticProcess * aP);
virtual void Build(G4KaonPlusInelasticProcess * aP);
virtual void Build(G4KaonMinusInelasticProcess * aP);
virtual void Build(G4KaonZeroLInelasticProcess * aP);
virtual void Build(G4KaonZeroSInelasticProcess * aP);
void SetMinEnergy(G4double aM) {theMin = aM;}
private:
G4PiNuclearCrossSection thePiCross;
G4TheoFSGenerator * theModel;
G4StringChipsParticleLevelInterface * theCascade;
G4QGSModel< G4QGSParticipants > * theStringModel;
G4QGSMFragmentation theFragmentation;
G4ExcitedStringDecay * theStringDecay;
G4QuasiElasticChannel * theQuasiElastic;
G4double theMin;
};
// 2009 by M. Kosov
#endif
@@ -0,0 +1,75 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
#ifndef G4QGSC_CHIPSProtonBuilder_h
#define G4QGSC_CHIPSProtonBuilder_h
#include "globals.hh"
#include "G4HadronElasticProcess.hh"
#include "G4HadronFissionProcess.hh"
#include "G4HadronCaptureProcess.hh"
#include "G4ProtonInelasticProcess.hh"
#include "G4VProtonBuilder.hh"
#include "G4NeutronInelasticCrossSection.hh"
#include "G4TheoFSGenerator.hh"
#include "G4StringChipsParticleLevelInterface.hh"
#include "G4QGSModel.hh"
#include "G4QGSParticipants.hh"
#include "G4QGSMFragmentation.hh"
#include "G4ExcitedStringDecay.hh"
#include "G4QuasiElasticChannel.hh"
#include "G4ProtonInelasticCrossSection.hh"
class G4QGSC_CHIPSProtonBuilder : public G4VProtonBuilder
{
public:
G4QGSC_CHIPSProtonBuilder(G4bool quasiElastic=false);
virtual ~G4QGSC_CHIPSProtonBuilder();
public:
virtual void Build(G4HadronElasticProcess * aP);
virtual void Build(G4ProtonInelasticProcess * aP);
void SetMinEnergy(G4double aM) {theMin = aM;}
private:
G4ProtonInelasticCrossSection theXSec;
G4TheoFSGenerator * theModel;
G4StringChipsParticleLevelInterface * theCascade;
G4QGSModel< G4QGSParticipants > * theStringModel;
G4ExcitedStringDecay * theStringDecay;
G4QuasiElasticChannel * theQuasiElastic;
G4double theMin;
};
// 2009 by M. Kosov
#endif
@@ -0,0 +1,75 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
#ifndef G4QGSC_QGSCNeutronBuilder_h
#define G4QGSC_QGSCNeutronBuilder_h 1
#include "globals.hh"
#include "G4HadronElasticProcess.hh"
#include "G4HadronFissionProcess.hh"
#include "G4HadronCaptureProcess.hh"
#include "G4NeutronInelasticProcess.hh"
#include "G4VNeutronBuilder.hh"
#include "G4NeutronInelasticCrossSection.hh"
#include "G4TheoFSGenerator.hh"
#include "G4QStringChipsParticleLevelInterface.hh"
#include "G4QGSModel.hh"
#include "G4QGSParticipants.hh"
#include "G4QGSMFragmentation.hh"
#include "G4ExcitedStringDecay.hh"
#include "G4QuasiElasticChannel.hh"
class G4QGSC_QGSCNeutronBuilder : public G4VNeutronBuilder
{
public:
G4QGSC_QGSCNeutronBuilder(G4bool quasiElastic=false);
virtual ~G4QGSC_QGSCNeutronBuilder();
public:
virtual void Build(G4HadronElasticProcess * ){}
virtual void Build(G4HadronFissionProcess * ){}
virtual void Build(G4HadronCaptureProcess * ){}
virtual void Build(G4NeutronInelasticProcess * aP);
void SetMinEnergy(G4double aM) {theMin = aM;}
private:
G4QGSModel< G4QGSParticipants > * theStringModel;
G4QStringChipsParticleLevelInterface * theCascade;
G4TheoFSGenerator * theModel;
G4ExcitedStringDecay * theStringDecay;
G4QuasiElasticChannel * theQuasiElastic;
G4NeutronInelasticCrossSection theXSec;
G4double theMin;
};
// 2009 by M. Kosov
#endif
@@ -0,0 +1,81 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
#ifndef G4QGSC_QGSCPiKBuilder_h
#define G4QGSC_QGSCPiKBuilder_h 1
#include "globals.hh"
#include "G4HadronElasticProcess.hh"
#include "G4HadronFissionProcess.hh"
#include "G4HadronCaptureProcess.hh"
#include "G4NeutronInelasticProcess.hh"
#include "G4VPiKBuilder.hh"
#include "G4PiNuclearCrossSection.hh"
#include "G4TheoFSGenerator.hh"
#include "G4QStringChipsParticleLevelInterface.hh"
#include "G4QGSModel.hh"
#include "G4QGSParticipants.hh"
#include "G4QGSMFragmentation.hh"
#include "G4ExcitedStringDecay.hh"
#include "G4QuasiElasticChannel.hh"
class G4QGSC_QGSCPiKBuilder : public G4VPiKBuilder
{
public:
G4QGSC_QGSCPiKBuilder(G4bool quasiElastic=false);
virtual ~G4QGSC_QGSCPiKBuilder();
public:
virtual void Build(G4HadronElasticProcess * aP);
virtual void Build(G4PionPlusInelasticProcess * aP);
virtual void Build(G4PionMinusInelasticProcess * aP);
virtual void Build(G4KaonPlusInelasticProcess * aP);
virtual void Build(G4KaonMinusInelasticProcess * aP);
virtual void Build(G4KaonZeroLInelasticProcess * aP);
virtual void Build(G4KaonZeroSInelasticProcess * aP);
void SetMinEnergy(G4double aM) {theMin = aM;}
private:
G4PiNuclearCrossSection thePiCross;
G4TheoFSGenerator * theModel;
G4QStringChipsParticleLevelInterface * theCascade;
G4QGSModel< G4QGSParticipants > * theStringModel;
G4QGSMFragmentation theFragmentation;
G4ExcitedStringDecay * theStringDecay;
G4QuasiElasticChannel * theQuasiElastic;
G4double theMin;
};
// 2009 by M. Kosov
#endif
@@ -0,0 +1,75 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
#ifndef G4QGSC_QGSCProtonBuilder_h
#define G4QGSC_QGSCProtonBuilder_h
#include "globals.hh"
#include "G4HadronElasticProcess.hh"
#include "G4HadronFissionProcess.hh"
#include "G4HadronCaptureProcess.hh"
#include "G4ProtonInelasticProcess.hh"
#include "G4VProtonBuilder.hh"
#include "G4NeutronInelasticCrossSection.hh"
#include "G4TheoFSGenerator.hh"
#include "G4QStringChipsParticleLevelInterface.hh"
#include "G4QGSModel.hh"
#include "G4QGSParticipants.hh"
#include "G4QGSMFragmentation.hh"
#include "G4ExcitedStringDecay.hh"
#include "G4QuasiElasticChannel.hh"
#include "G4ProtonInelasticCrossSection.hh"
class G4QGSC_QGSCProtonBuilder : public G4VProtonBuilder
{
public:
G4QGSC_QGSCProtonBuilder(G4bool quasiElastic=false);
virtual ~G4QGSC_QGSCProtonBuilder();
public:
virtual void Build(G4HadronElasticProcess * aP);
virtual void Build(G4ProtonInelasticProcess * aP);
void SetMinEnergy(G4double aM) {theMin = aM;}
private:
G4ProtonInelasticCrossSection theXSec;
G4TheoFSGenerator * theModel;
G4QStringChipsParticleLevelInterface * theCascade;
G4QGSModel< G4QGSParticipants > * theStringModel;
G4ExcitedStringDecay * theStringDecay;
G4QuasiElasticChannel * theQuasiElastic;
G4double theMin;
};
// 2009 by M. Kosov
#endif
@@ -23,6 +23,20 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4QGSPNeutronBuilder.hh,v 1.4 2009/03/31 11:04:01 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
//
//----------------------------------------------------------------------------
//
#ifndef G4QGSPNeutronBuilder_h
#define G4QGSPNeutronBuilder_h 1
@@ -45,8 +59,6 @@
#include "G4QuasiElasticChannel.hh"
#include "G4ProjectileDiffractiveChannel.hh"
#include "G4NeutronInelasticCrossSection.hh"
class G4QGSPNeutronBuilder : public G4VNeutronBuilder
{
public:
@@ -71,7 +83,6 @@ class G4QGSPNeutronBuilder : public G4VNeutronBuilder
G4QuasiElasticChannel * theQuasiElastic;
G4ProjectileDiffractiveChannel * theProjectileDiffraction;
G4NeutronInelasticCrossSection theXSec;
G4double theMin;
};
@@ -23,6 +23,20 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4QGSPPiKBuilder.hh,v 1.4 2009/03/31 11:04:01 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
//
//----------------------------------------------------------------------------
//
#ifndef G4QGSPPiKBuilder_h
#define G4QGSPPiKBuilder_h 1
@@ -44,8 +58,7 @@
#include "G4ExcitedStringDecay.hh"
#include "G4QuasiElasticChannel.hh"
#include "G4ProjectileDiffractiveChannel.hh"
#include "G4PiNuclearCrossSection.hh"
#include "G4VCrossSectionDataSet.hh"
class G4QGSPPiKBuilder : public G4VPiKBuilder
{
@@ -66,7 +79,7 @@ class G4QGSPPiKBuilder : public G4VPiKBuilder
void SetMinEnergy(G4double aM) {theMin = aM;}
private:
G4PiNuclearCrossSection thePiData;
G4VCrossSectionDataSet* thePiData;
G4TheoFSGenerator * theModel;
G4PreCompoundModel * thePreEquilib;
G4GeneratorPrecompoundInterface * theCascade;
@@ -23,6 +23,20 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4QGSPProtonBuilder.hh,v 1.5 2009/03/31 11:04:01 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
//
//----------------------------------------------------------------------------
//
#ifndef G4QGSPProtonBuilder_h
#define G4QGSPProtonBuilder_h
@@ -62,7 +76,7 @@ class G4QGSPProtonBuilder : public G4VProtonBuilder
void SetMinEnergy(G4double aM) {theMin = aM;}
private:
G4ProtonInelasticCrossSection theXSec;
G4TheoFSGenerator * theModel;
G4PreCompoundModel * thePreEquilib;
G4GeneratorPrecompoundInterface * theCascade;
@@ -0,0 +1,84 @@
//
// ********************************************************************
// * 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. Kossov
//
// Modified:
//
//----------------------------------------------------------------------------
//
// 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 very simple,
// this builder with time can be not used in the CHIPS physics list.
//
// -----------------------------------------------------------------------------
#ifndef G4QInelasticCHIPSBuilder_h
#define G4QInelasticCHIPSBuilder_h 1
#include "globals.hh"
#include "G4VPhysicsConstructor.hh"
#include "G4QInelastic.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
#include "G4ProcessManager.hh"
class G4QInelasticCHIPSBuilder
{
public:
G4QInelasticCHIPSBuilder(G4int verbose);
virtual ~G4QInelasticCHIPSBuilder();
public:
void Build();
protected:
// the particle table has the complete List of existing particle types
G4ParticleTable* theParticleTable;
G4ParticleTable::G4PTblDicIterator* theParticleIterator;
private:
G4int verbose;
G4bool wasActivated;
G4QInelastic* inelastic;
};
// 2009 by M. Kossov
#endif
@@ -0,0 +1,93 @@
//
// ********************************************************************
// * 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.hh,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:
//
//----------------------------------------------------------------------------
//
#ifndef G4QMessenger_h
#define G4QMessenger_h 1
class G4EmExtraPhysics;
#include "G4UImessenger.hh"
#include "G4UIdirectory.hh"
#include "G4UIcmdWithAString.hh"
#include "G4UIcmdWithABool.hh"
#include "G4UIcmdWithADouble.hh"
#include "G4UIcmdWithAnInteger.hh"
#include "G4UIcmdWithADoubleAndUnit.hh"
class G4QNeutrinoPhysics;
class G4QPhotoNuclearPhysics;
class G4QMessenger: public G4UImessenger
{
G4QMessenger();
public:
~G4QMessenger();
static G4QMessenger* GetPointer(); // Gives a pointer to this singletone
void Add(G4QNeutrinoPhysics* weak);
void Add(G4QPhotoNuclearPhysics* photo);
void SetNewValue(G4UIcommand* aComm, G4String aS);
G4String GetCurrentValue(G4UIcommand* aComm);
private:
G4UIdirectory* rootDir;
G4UIdirectory* weakDir;
G4QNeutrinoPhysics* theWeak;
G4UIcmdWithAString* theNuElN;
G4UIcmdWithAString* theNuMuN;
G4UIcmdWithAString* theNuTaN;
G4UIcmdWithADouble* biasNuNuc;
G4UIdirectory* photoDir;
G4QPhotoNuclearPhysics* thePhoto;
G4UIcmdWithAString* theSynchR;
G4UIcmdWithADouble* minGamSR;
G4UIcmdWithAString* theGamN;
G4UIcmdWithAString* theEleN;
G4UIcmdWithAString* theMuoN;
G4UIcmdWithAString* theTauN;
G4UIcmdWithADouble* biasPhotoN;
};
#endif
@@ -0,0 +1,96 @@
//
// ********************************************************************
// * 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.hh,v 1.2 2009/11/16 19:12:10 mkossov Exp $
// GEANT4 tag $Name: geant4-09-03 $
//
//---------------------------------------------------------------------------
//
// ClassName: G4QNeutrinoPhysics
//
// Author: 2009 M. V. Kosov
//
// Modified:
//
//----------------------------------------------------------------------------
//
#ifndef G4QNeutrinoPhysics_h
#define G4QNeutrinoPhysics_h 1
#include "G4VPhysicsConstructor.hh"
#include "globals.hh"
#include "G4QMessenger.hh"
#include "G4QInelastic.hh"
#include "G4NeutrinoE.hh"
#include "G4AntiNeutrinoE.hh"
#include "G4NeutrinoMu.hh"
#include "G4AntiNeutrinoMu.hh"
#include "G4NeutrinoTau.hh"
#include "G4AntiNeutrinoTau.hh"
#include "G4ProcessManager.hh"
class G4QNeutrinoPhysics : public G4VPhysicsConstructor
{
public:
G4QNeutrinoPhysics(const G4String& name = "CHIPS neutrino-nuclear");
virtual ~G4QNeutrinoPhysics();
void ConstructParticle();
void ConstructProcess();
G4String GetNuElNuclearOnOff() {return nuEleOn ? "on" : "off";}
G4String GetNuMuNuclearOnOff() {return nuMuoOn ? "on" : "off";}
G4String GetNuTauNuclearOnOff() {return nuTauOn ? "on" : "off";}
void SetNuElNuclearOnOff(G4String& aState);
void SetNuMuNuclearOnOff(G4String& aState);
void SetNuTauNuclearOnOff(G4String& aState);
void SetNuNuclearBias(G4double newValue);
private:
void BuildNuEleNuclear();
void BuildNuMuoNuclear();
void BuildNuTauNuclear();
G4bool wasBuilt;
G4bool nuEleActivated;
G4bool nuMuoActivated;
G4bool nuTauActivated;
G4bool nuEleOn;
G4bool nuMuoOn;
G4bool nuTauOn;
G4double nuNucBias; // Biasing factor for neutrino-nuclear processes
G4QInelastic* inelastic;
G4QMessenger* theMessenger;
};
#endif
@@ -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. *
// ********************************************************************
//
// 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)
//-----------------------------------------------------------------------------
//
#ifndef G4QNeutronBuilder_h
#define G4QNeutronBuilder_h 1
#include "globals.hh"
#include "G4NeutronInelasticProcess.hh"
#include "G4QInelastic.hh"
#include "G4QDiscProcessMixer.hh"
#include "G4VNeutronBuilder.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
#include "G4ProcessManager.hh"
#include <vector>
class G4QNeutronBuilder
{
public:
G4QNeutronBuilder();
virtual ~G4QNeutronBuilder();
public:
void Build();
void RegisterMe(G4VNeutronBuilder * aB) {theModelCollections.push_back(aB);}
private:
G4QDiscProcessMixer* theProcessMixer;
std::vector<G4VNeutronBuilder *> theModelCollections;
G4NeutronInelasticProcess* theNeutronInelastic;
G4QInelastic* theCHIPSInelastic;
G4bool wasActivated;
};
// 2009 by M. Kosov
#endif
@@ -0,0 +1,115 @@
//
// ********************************************************************
// * 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.hh,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:
//
//----------------------------------------------------------------------------
//
#ifndef G4QPhotoNuclearPhysics_h
#define G4QPhotoNuclearPhysics_h 1
#include "G4VPhysicsConstructor.hh"
#include "globals.hh"
#include "G4QMessenger.hh"
#include "G4QSynchRad.hh"
#include "G4QInelastic.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
#include "G4Gamma.hh"
#include "G4Electron.hh"
#include "G4Positron.hh"
#include "G4MuonPlus.hh"
#include "G4MuonMinus.hh"
#include "G4TauPlus.hh"
#include "G4TauMinus.hh"
#include "G4MesonConstructor.hh"
#include "G4BaryonConstructor.hh"
#include "G4ProcessManager.hh"
class G4QPhotoNuclearPhysics : public G4VPhysicsConstructor
{
public:
G4QPhotoNuclearPhysics(const G4String& name = "CHIPS photo-nuclear");
virtual ~G4QPhotoNuclearPhysics();
void ConstructParticle();
void ConstructProcess();
G4String GetSynchRadOnOff() {return synchrOn ? "on" : "off";}
G4String GetGammaNuclearOnOff() {return gamNucOn ? "on" : "off";}
G4String GetElPosNuclearOnOff() {return eleNucOn ? "on" : "off";}
G4String GetMuonNuclearOnOff() {return muoNucOn ? "on" : "off";}
G4String GetTauNuclearOnOff() {return tauNucOn ? "on" : "off";}
void SetSynchRadOnOff(G4String& aSwitch);
void SetGammaNuclearOnOff(G4String& aSwitch);
void SetElPosNuclearOnOff(G4String& aSwitch);
void SetMuonNuclearOnOff(G4String& aSwitch);
void SetTauNuclearOnOff(G4String& aSwitch);
void SetMinGammaSR(G4double newValue);
void SetPhotoNucBias(G4double newValue);
private:
void BuildSynchRad();
void BuildGammaNuclear();
void BuildElectroNuclear();
void BuildMuonNuclear();
void BuildTauNuclear();
G4bool wasBuilt; // Flag of forbidden reactivation of processes
G4bool SynchRActivated; // Flag of finished activation of SynchroRadiation
G4bool GamNucActivated; // Flag of finished activation of gamma-nuclear
G4bool EleNucActivated; // Flag of finished activation of electron-nuclear
G4bool MuoNucActivated; // Flag of finished activation of muon-nuclear
G4bool TauNucActivated; // Flag of finished activation of tau-nuclear
G4bool synchrOn; // Switch flag for Synchrotron Radiation process
G4double synchrMinGam; // MinimumGamma for SynchrotronRadiation activation
G4bool gamNucOn; // Switch flag for the gamma-nuclear process
G4bool eleNucOn; // Switch flag for the electron-nuclear process
G4bool muoNucOn; // Switch flag for the electron-nuclear process
G4bool tauNucOn; // Switch flag for the electron-nuclear process
G4double photoNucBias; // Biasing factor for photo-nuclear processes
G4QInelastic* inelastic;
G4QSynchRad* synchrad;
G4QMessenger* theMessenger;
};
#endif
@@ -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. *
// ********************************************************************
//
// GEANT4 tag $Name: geant4-09-03 $
//
//---------------------------------------------------------------------------
//
// ClassName: G4QProtonBuilder
//
// Author: 2009 M. Kosov
//
// Modified:
//
//-----------------------------------------------------------------------------
// Short description: for G4QDiscProcessMixer use in the QGSC_CHIPS physics list
//-----------------------------------------------------------------------------
//
#ifndef G4QProtonBuilder_h
#define G4QProtonBuilder_h 1
#include "globals.hh"
#include "G4ProtonInelasticProcess.hh"
#include "G4QInelastic.hh"
#include "G4QDiscProcessMixer.hh"
#include "G4VProtonBuilder.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
#include "G4ProcessManager.hh"
#include <vector>
class G4QProtonBuilder
{
public:
G4QProtonBuilder();
virtual ~G4QProtonBuilder();
public:
void Build();
void RegisterMe(G4VProtonBuilder * aB) {theModelCollections.push_back(aB);}
private:
G4QDiscProcessMixer* theProcessMixer;
std::vector<G4VProtonBuilder *> theModelCollections;
G4ProtonInelasticProcess* theProtonInelastic;
G4QInelastic* theCHIPSInelastic;
G4bool wasActivated;
};
// 2009 by M. Kosov
#endif
@@ -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. *
// ********************************************************************
//
// $Id: G4VHadronModelBuilder.hh,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:
//
//----------------------------------------------------------------------------
//
#ifndef G4VHadronModelBuilder_h
#define G4VHadronModelBuilder_h 1
#include "G4HadronicInteraction.hh"
#include "globals.hh"
class G4VHadronModelBuilder
{
public:
G4VHadronModelBuilder(const G4String& name ="");
virtual ~G4VHadronModelBuilder();
G4HadronicInteraction* GetModel();
inline const G4String& GetName() const;
protected:
virtual G4HadronicInteraction* BuildModel() = 0;
private:
// copy constructor and hide assignment operator
G4VHadronModelBuilder(G4VHadronModelBuilder &);
G4VHadronModelBuilder & operator=(const G4VHadronModelBuilder &right);
G4HadronicInteraction* model;
G4String name;
};
inline const G4String& G4VHadronModelBuilder::GetName() const
{
return name;
}
#endif
@@ -23,6 +23,21 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4VNeutronBuilder.hh,v 1.2 2009/03/31 11:04:01 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-03 $
//
//---------------------------------------------------------------------------
//
// ClassName: G4VNeutronBuilder
//
// Author: 2002 J.P. Wellisch
//
// Modified:
// 21.11.2005 G.Folger: don't keep processes as data members, but new these
// 30.03.2009 V.Ivanchenko move constructor and destructor to source
//
//----------------------------------------------------------------------------
//
#ifndef G4VNeutronBuilder_h
#define G4VNeutronBuilder_h
@@ -33,13 +48,13 @@ class G4NeutronInelasticProcess;
class G4VNeutronBuilder
{
public:
G4VNeutronBuilder() {}
virtual ~G4VNeutronBuilder() {}
virtual void Build(G4HadronElasticProcess * aP) = 0;
virtual void Build(G4HadronFissionProcess * aP) = 0;
virtual void Build(G4HadronCaptureProcess * aP) = 0;
virtual void Build(G4NeutronInelasticProcess * aP) = 0;
public:
G4VNeutronBuilder();
virtual ~G4VNeutronBuilder();
virtual void Build(G4HadronElasticProcess * aP) = 0;
virtual void Build(G4HadronFissionProcess * aP) = 0;
virtual void Build(G4HadronCaptureProcess * aP) = 0;
virtual void Build(G4NeutronInelasticProcess * aP) = 0;
};
// 2002 by J.P. Wellisch
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4VPiKBuilder.hh,v 1.1 2006/10/31 11:35:02 gunter Exp $
// GEANT4 tag $Name: geant4-09-02 $
// $Id: G4VPiKBuilder.hh,v 1.2 2009/03/31 11:04:01 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-03 $
//
//---------------------------------------------------------------------------
//
@@ -34,6 +34,7 @@
//
// Modified:
// 16.11.2005 G.Folger: don't keep processes as data members, but new these
// 30.03.2009 V.Ivanchenko move constructor and destructor to source
//
//----------------------------------------------------------------------------
//
@@ -50,16 +51,16 @@
class G4VPiKBuilder
{
public:
G4VPiKBuilder() {}
virtual ~G4VPiKBuilder() {}
virtual void Build(G4HadronElasticProcess * aP) = 0;
virtual void Build(G4PionPlusInelasticProcess * aP) = 0;
virtual void Build(G4PionMinusInelasticProcess * aP) = 0;
virtual void Build(G4KaonPlusInelasticProcess * aP) = 0;
virtual void Build(G4KaonMinusInelasticProcess * aP) = 0;
virtual void Build(G4KaonZeroLInelasticProcess * aP) = 0;
virtual void Build(G4KaonZeroSInelasticProcess * aP) = 0;
public:
G4VPiKBuilder();
virtual ~G4VPiKBuilder();
virtual void Build(G4HadronElasticProcess * aP) = 0;
virtual void Build(G4PionPlusInelasticProcess * aP) = 0;
virtual void Build(G4PionMinusInelasticProcess * aP) = 0;
virtual void Build(G4KaonPlusInelasticProcess * aP) = 0;
virtual void Build(G4KaonMinusInelasticProcess * aP) = 0;
virtual void Build(G4KaonZeroLInelasticProcess * aP) = 0;
virtual void Build(G4KaonZeroSInelasticProcess * aP) = 0;
};
// 2002 by J.P. Wellisch
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4VProtonBuilder.hh,v 1.1 2006/10/31 11:35:02 gunter Exp $
// GEANT4 tag $Name: geant4-09-02 $
// $Id: G4VProtonBuilder.hh,v 1.2 2009/03/31 11:04:01 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-03 $
//
//---------------------------------------------------------------------------
//
@@ -34,6 +34,7 @@
//
// Modified:
// 21.11.2005 G.Folger: don't keep processes as data members, but new these
// 30.03.2009 V.Ivanchenko move constructor and destructor to source
//
//----------------------------------------------------------------------------
//
@@ -45,11 +46,11 @@ class G4HadronElasticProcess;
class G4VProtonBuilder
{
public:
G4VProtonBuilder() {}
virtual ~G4VProtonBuilder() {}
virtual void Build(G4HadronElasticProcess * aP) = 0;
virtual void Build(G4ProtonInelasticProcess * aP) = 0;
public:
G4VProtonBuilder();
virtual ~G4VProtonBuilder();
virtual void Build(G4HadronElasticProcess * aP) = 0;
virtual void Build(G4ProtonInelasticProcess * aP) = 0;
};
// 2002 by J.P. Wellisch
@@ -26,60 +26,17 @@
#ifndef G4WarnPLStatus_hh
#define G4WarnPLStatus_hh
#include "G4String.hh"
#include "globals.hh"
class G4WarnPLStatus
{
public:
G4WarnPLStatus();
~G4WarnPLStatus();
void Replaced(const G4String aPL, const G4String Replacement) const ;
void Unsupported(const G4String aPL, const G4String Replacement ="") const ;
void Experimental(const G4String aPL) const ;
};
inline
G4WarnPLStatus::G4WarnPLStatus()
{}
inline
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://geant4-hn.slac.stanford.edu:5090/HyperNews/public/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://geant4-hn.slac.stanford.edu:5090/HyperNews/public/get/phys-list.html"<<G4endl <<
"* " <<G4endl <<
"*=====================================================================*" <<G4endl<<
G4endl;
}
#endif
@@ -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();
}

Some files were not shown because too many files have changed in this diff Show More