Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
G4IonQMDPhysics.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//
28//---------------------------------------------------------------------------
29//
30// ClassName: G4IonQMDPhysics
31// Created from G4IonBinaryCascadePhysics
32//
33// Author: G.Folger
34//
35// Modified:
36//
37//----------------------------------------------------------------------------
38//
39
40#include "G4IonQMDPhysics.hh"
41
42#include "G4SystemOfUnits.hh"
47
49#include "G4QMDReaction.hh"
50
51//#include "G4TripathiCrossSection.hh"
52//#include "G4TripathiLightCrossSection.hh"
53//#include "G4IonsShenCrossSection.hh"
54
57
59#include "G4ParticleTable.hh"
60#include "G4ProcessManager.hh"
61
62// Nuclei
63#include "G4IonConstructor.hh"
64#include "G4BuilderType.hh"
65
66// factory
68//
70
72 : G4VPhysicsConstructor("IonQMD"), verbose(ver), wasActivated(false)
73{
74 fLEDModel = 0;
75 fLETModel = 0;
76 fLEAModel = 0;
77// fTripathi = 0;
78// fTripathiLight = 0;
79// fShen = 0;
80 eminBIC = 0.*MeV;
81 eminQMD = 100.*MeV;
82 emaxQMD = 10.*GeV;
83 emaxLHEP = 1.*TeV;
84 overlap = 10*MeV;
86 if(verbose > 1) G4cout << "### G4IonQMDPhysics" << G4endl;
87}
88
90 G4int ver)
91 : G4VPhysicsConstructor(name), verbose(ver), wasActivated(false)
92{
93 fLEDModel = 0;
94 fLETModel = 0;
95 fLEAModel = 0;
96// fTripathi = 0;
97// fTripathiLight = 0;
98// fShen = 0;
99 eminBIC = 0.*MeV;
100 eminQMD = 100.*MeV;
101 emaxQMD = 10.*GeV;
102 emaxLHEP = 1.*TeV;
103 overlap = 10*MeV;
105 if(verbose > 1) G4cout << "### G4IonQMDPhysics" << G4endl;
106}
107
109{
110 if(wasActivated) {
111// delete fTripathi;
112// delete fTripathiLight;
113// delete fShen;
114 delete fLEDModel;
115 delete fLETModel;
116 delete fLEAModel;
117 G4int i;
118 G4int n = p_list.size();
119 for(i=0; i<n; i++) {delete p_list[i];}
120 n = model_list.size();
121 for(i=0; i<n; i++) {delete model_list[i];}
122 }
123}
124
126{
127 if(wasActivated) return;
128 wasActivated = true;
129
131 model_list.push_back(fBC);
132 G4QMDReaction* fQMD= new G4QMDReaction();
133 model_list.push_back(fQMD);
134
135// fShen = new G4IonsShenCrossSection;
136// fTripathi = new G4TripathiCrossSection
137// fTripathiLight = new G4TripathiLightCrossSection;
138
139 fLEDModel = new G4LEDeuteronInelastic();
140 fLETModel = new G4LETritonInelastic();
141 fLEAModel = new G4LEAlphaInelastic();
142
143 AddProcess("dInelastic", G4Deuteron::Deuteron(), fBC, fQMD, fLEDModel );
144 AddProcess("tInelastic",G4Triton::Triton(), fBC, fQMD, fLETModel );
145 AddProcess("He3Inelastic",G4He3::He3(), fBC, fQMD, 0 );
146 AddProcess("alphaInelastic", G4Alpha::Alpha(), fBC, fQMD, fLEAModel );
147 AddProcess("ionInelastic",G4GenericIon::GenericIon(), fBC, fQMD, 0);
148
149}
150
151void G4IonQMDPhysics::AddProcess(const G4String& name,
154 G4QMDReaction* QMD,
156{
158 p_list.push_back(hadi);
159 G4ProcessManager* pManager = p->GetProcessManager();
160 pManager->AddDiscreteProcess(hadi);
161
162// hadi->AddDataSet(fShen);
163// hadi->AddDataSet(fTripathi);
164// hadi->AddDataSet(fTripathiLight);
165
167
168 BIC->SetMinEnergy(eminBIC);
169 BIC->SetMaxEnergy(emaxQMD); //reset when QMD is present
170 hadi->RegisterMe(BIC);
171
172 if(QMD) {
173 QMD->SetMinEnergy(eminQMD);
174 BIC->SetMaxEnergy(eminQMD+overlap);
175 QMD->SetMaxEnergy(emaxQMD);
176 hadi->RegisterMe(QMD);
177 }
178
179 if(LHEP) {
180 LHEP->SetMinEnergy(emaxQMD - overlap);
181 LHEP->SetMaxEnergy(emaxLHEP);
182 hadi->RegisterMe(LHEP);
183 }
184 if(verbose > 1) {
185 G4cout << "Register " << hadi->GetProcessName()
186 << " for " << p->GetParticleName() << G4endl
187 << " Binary Cascade for E(MeV)= " << eminBIC << " - "
188 << (QMD==0 ? emaxQMD : (eminQMD-overlap)) ;
189 if(QMD) {
190 G4cout << G4endl <<" QMD for E(MeV)= " << eminQMD << " - " << emaxQMD;
191 }
192 if(LHEP) {
193 G4cout << G4endl<< " LHEP for E(MeV)= " << emaxQMD-overlap << " - " << emaxLHEP;
194 }
195 G4cout << G4endl;
196 }
197}
198
200{
201 // Construct light ions
202 G4IonConstructor pConstructor;
203 pConstructor.ConstructParticle();
204}
@ bIons
#define G4_DECLARE_PHYSCONSTR_FACTORY(physics_constructor)
int G4int
Definition: G4Types.hh:66
#define G4endl
Definition: G4ios.hh:52
G4DLLIMPORT std::ostream G4cout
static G4Alpha * Alpha()
Definition: G4Alpha.cc:89
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()
G4IonQMDPhysics(G4int verb=0)
virtual ~G4IonQMDPhysics()
virtual void ConstructProcess()
virtual void ConstructParticle()
G4ProcessManager * GetProcessManager() const
const G4String & GetParticleName() const
G4int AddDiscreteProcess(G4VProcess *aProcess, G4int ord=ordDefault)
static G4Triton * Triton()
Definition: G4Triton.cc:95
const G4String & GetProcessName() const
Definition: G4VProcess.hh:379
Definition: LHEP.hh:37