source: trunk/examples/extended/runAndEvent/RE01/src/RE01IonPhysics.cc @ 807

Last change on this file since 807 was 807, checked in by garnier, 16 years ago

update

File size: 5.4 KB
Line 
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//
27// $Id: RE01IonPhysics.cc,v 1.2 2006/06/29 17:44:02 gunter Exp $
28// GEANT4 tag $Name:  $
29//
30
31#include "RE01IonPhysics.hh"
32
33#include "G4ParticleTable.hh"
34#include "G4ProcessManager.hh"
35#include "G4IonConstructor.hh"
36
37// processes
38#include "G4MultipleScattering.hh"
39#include "G4hIonisation.hh"
40#include "G4ionIonisation.hh"
41#include "G4HadronElasticProcess.hh"
42#include "G4DeuteronInelasticProcess.hh"
43#include "G4TritonInelasticProcess.hh"
44#include "G4AlphaInelasticProcess.hh"
45
46// models
47#include "G4LElastic.hh"
48#include "G4LEDeuteronInelastic.hh"
49#include "G4LETritonInelastic.hh"
50#include "G4LEAlphaInelastic.hh"
51
52RE01IonPhysics::RE01IonPhysics(const G4String& name)
53               :  G4VPhysicsConstructor(name)
54{;}
55
56
57RE01IonPhysics::~RE01IonPhysics()
58{;}
59
60
61void RE01IonPhysics::ConstructParticle()
62{ 
63  // Construct light ions (d, t, 3He, alpha, and generic ion)
64  G4IonConstructor ionConstruct;
65  ionConstruct.ConstructParticle();
66}
67
68
69void RE01IonPhysics::ConstructProcess()
70{
71  // Hadronic Elastic Process and Model (for all ions except generic ion)
72
73  G4HadronElasticProcess* elasticProcess = new G4HadronElasticProcess();
74  G4LElastic* elasticModel = new G4LElastic();
75  elasticProcess->RegisterMe(elasticModel);
76
77  // Hadronic inelastic models
78
79  G4ProcessManager * pManager = 0;
80 
81  ///////////////////
82  //               //
83  //   Deuteron    //
84  //               //
85  ///////////////////
86
87  pManager = G4Deuteron::Deuteron()->GetProcessManager();
88
89  // EM processes
90  pManager->AddProcess(new G4MultipleScattering(), -1, 1, 1);
91  pManager->AddProcess(new G4hIonisation(),        -1, 2, 2);
92
93  // hadron elastic
94  pManager->AddDiscreteProcess(elasticProcess);
95
96  // hadron inelastic
97  G4DeuteronInelasticProcess* dinelProc = new G4DeuteronInelasticProcess();
98  G4LEDeuteronInelastic* LEPdModel = new G4LEDeuteronInelastic();
99  dinelProc->RegisterMe(LEPdModel);
100  pManager->AddDiscreteProcess(dinelProc);
101
102  ///////////////////
103  //               //
104  //    Triton     //
105  //               //
106  ///////////////////
107
108  pManager = G4Triton::Triton()->GetProcessManager(); 
109
110  // EM processes
111  pManager->AddProcess(new G4MultipleScattering(), -1, 1, 1);
112  pManager->AddProcess(new G4hIonisation(),        -1, 2, 2);
113
114  // hadron elastic
115  pManager->AddDiscreteProcess(elasticProcess);
116
117  // hadron inelastic
118  G4TritonInelasticProcess* tinelProc = new G4TritonInelasticProcess();
119  G4LETritonInelastic* LEPtModel = new G4LETritonInelastic();
120  tinelProc->RegisterMe(LEPtModel);
121  pManager->AddDiscreteProcess(tinelProc);
122
123  ///////////////////
124  //               //
125  //      3He      //
126  //               //
127  ///////////////////
128
129  pManager = G4He3::He3()->GetProcessManager(); 
130
131  // EM processes
132  pManager->AddProcess(new G4MultipleScattering(), -1, 1, 1);
133  pManager->AddProcess(new G4hIonisation(),        -1, 2, 2);
134
135  // hadron elastic
136  pManager->AddDiscreteProcess(elasticProcess);
137
138  // NO INELASTIC PROCESS AVAILABLE FOR 3HE
139
140  ///////////////////
141  //               //
142  //     Alpha     //
143  //               //
144  ///////////////////
145
146  pManager = G4Alpha::Alpha()->GetProcessManager(); 
147
148  // EM processes
149  pManager->AddProcess(new G4MultipleScattering(), -1, 1, 1);
150  pManager->AddProcess(new G4hIonisation(),        -1, 2, 2);
151 
152  // hadron elastic
153  pManager->AddDiscreteProcess(elasticProcess);
154
155  // hadron inelastic
156  G4AlphaInelasticProcess* ainelProc = new G4AlphaInelasticProcess();
157  G4LEAlphaInelastic* LEPaModel = new G4LEAlphaInelastic();
158  ainelProc->RegisterMe(LEPaModel);
159  pManager->AddDiscreteProcess(ainelProc);
160
161  ///////////////////
162  //               //
163  //  generic ion  //
164  //               //
165  ///////////////////
166
167  pManager = G4GenericIon::GenericIon()->GetProcessManager();
168
169  // Only EM processes for generic ion
170  pManager->AddProcess(new G4MultipleScattering(), -1, 1, 1);
171  pManager->AddProcess(new G4ionIonisation(),      -1, 2, 2);
172 
173}
Note: See TracBrowser for help on using the repository browser.