Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4IonPhysics.cc
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26// $Id$
27// GEANT4 tag $Name: $
28//
29//---------------------------------------------------------------------------
30//
31// Class: G4IonPhysics
32//
33// Author: A.Ivanchenko 02.03.2011
34//
35// Modified:
36// 16.10.2012 A.Ribon: renamed G4IonFTFPBinaryCascadePhysics as G4IonPhysics
37//
38//---------------------------------------------------------------------------
39
40#include "G4IonPhysics.hh"
41#include "G4SystemOfUnits.hh"
43#include "G4ProcessManager.hh"
44#include "G4Deuteron.hh"
45#include "G4Triton.hh"
46#include "G4He3.hh"
47#include "G4Alpha.hh"
48#include "G4GenericIon.hh"
49#include "G4IonConstructor.hh"
50
53//#include "G4TripathiCrossSection.hh"
54//#include "G4TripathiLightCrossSection.hh"
55//#include "G4IonsShenCrossSection.hh"
56//#include "G4IonProtonCrossSection.hh"
58
59#include "G4PreCompoundModel.hh"
61#include "G4FTFBuilder.hh"
63#include "G4BuilderType.hh"
64
66
67using namespace std;
68
69// factory
71//
73
74
75//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
76
78 : G4VPhysicsConstructor("ionInelasticFTFP_BIC"),verbose(ver),
79 wasActivated(false)
80{
81// fTripathi = fTripathiLight = fShen = fIonH = 0;
82 fGGNuclNucl=0;
83 theIonBC = 0;
84 theFTFP = 0;
85 theBuilder = 0;
87 if(verbose > 1) { G4cout << "### G4IonPhysics" << G4endl; }
88}
89
90//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
91
93 : G4VPhysicsConstructor(nname),verbose(1),
94 wasActivated(false)
95{
96// fTripathi = fTripathiLight = fShen = fIonH = 0;
97 fGGNuclNucl=0;
98 theIonBC = 0;
99 theFTFP = 0;
100 theBuilder = 0;
102 if(verbose > 1) { G4cout << "### G4IonPhysics" << G4endl; }
103}
104
105//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
106
108{
109 delete theBuilder;
110}
111
112//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
113
115{
116 // Construct ions
117 G4IonConstructor pConstructor;
118 pConstructor.ConstructParticle();
119}
120
121//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
122
124{
125 if(wasActivated) { return; }
126 wasActivated = true;
127
128 G4double emax = 100.*TeV;
129
131 G4PreCompoundModel* thePreCompound = new G4PreCompoundModel(handler);
132
133 // Binary Cascade
134 theIonBC = new G4BinaryLightIonReaction(thePreCompound);
135 theIonBC->SetMinEnergy(0.0);
136 theIonBC->SetMaxEnergy(4*GeV);
137
138 // FTFP
139 theBuilder = new G4FTFBuilder("FTFP",thePreCompound);
140 theFTFP = theBuilder->GetModel();
141 theFTFP->SetMinEnergy(2*GeV);
142 theFTFP->SetMaxEnergy(emax);
143
144 //fShen = new G4IonsShenCrossSection();
145 //fTripathi = new G4TripathiCrossSection();
146 //fTripathiLight = new G4TripathiLightCrossSection();
147 //fIonH = new G4IonProtonCrossSection();
149
150 AddProcess("dInelastic", G4Deuteron::Deuteron(),false);
151 AddProcess("tInelastic",G4Triton::Triton(),false);
152 AddProcess("He3Inelastic",G4He3::He3(),true);
153 AddProcess("alphaInelastic", G4Alpha::Alpha(),true);
154 AddProcess("ionInelastic",G4GenericIon::GenericIon(),true);
155
156 if(verbose > 1) {
157 G4cout << "G4IonPhysics::ConstructProcess done! "
158 << G4endl;
159 }
160}
161
162//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
163
164void G4IonPhysics::AddProcess(const G4String& name,
166 G4bool )//isIon)
167{
169 G4ProcessManager* pManager = part->GetProcessManager();
170 pManager->AddDiscreteProcess(hadi);
171/*
172 hadi->AddDataSet(fShen);
173 //hadi->AddDataSet(fTripathi);
174 //hadi->AddDataSet(fTripathiLight);
175 if(isIon) { hadi->AddDataSet(fIonH); }
176 */
177
178 hadi->AddDataSet(fGGNuclNucl);
179
180 hadi->RegisterMe(theIonBC);
181 hadi->RegisterMe(theFTFP);
182}
183
184//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@ bIons
#define G4_DECLARE_PHYSCONSTR_FACTORY(physics_constructor)
double G4double
Definition: G4Types.hh:64
int G4int
Definition: G4Types.hh:66
bool G4bool
Definition: G4Types.hh:67
#define G4endl
Definition: G4ios.hh:52
G4DLLIMPORT std::ostream G4cout
static G4Alpha * Alpha()
Definition: G4Alpha.cc:89
G4VCrossSectionDataSet * GetCrossSectionDataSet(const G4String &name, G4bool warning=true)
static G4CrossSectionDataSetRegistry * Instance()
static G4Deuteron * Deuteron()
Definition: G4Deuteron.cc:94
static const char * Default_Name()
static G4GenericIon * GenericIon()
Definition: G4GenericIon.cc:92
void SetMinEnergy(G4double anEnergy)
void SetMaxEnergy(const G4double anEnergy)
void AddDataSet(G4VCrossSectionDataSet *aDataSet)
void RegisterMe(G4HadronicInteraction *a)
static G4He3 * He3()
Definition: G4He3.cc:94
static void ConstructParticle()
void ConstructParticle()
virtual ~G4IonPhysics()
void ConstructProcess()
G4IonPhysics(G4int ver=0)
Definition: G4IonPhysics.cc:77
G4ProcessManager * GetProcessManager() const
G4int AddDiscreteProcess(G4VProcess *aProcess, G4int ord=ordDefault)
static G4Triton * Triton()
Definition: G4Triton.cc:95
G4HadronicInteraction * GetModel()