BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
ExN04IonPhysics.cxx
Go to the documentation of this file.
1//
2// ********************************************************************
3// * DISCLAIMER *
4// * *
5// * The following disclaimer summarizes all the specific disclaimers *
6// * of contributors to this software. The specific disclaimers,which *
7// * govern, are listed with their locations in: *
8// * http://cern.ch/geant4/license *
9// * *
10// * Neither the authors of this software system, nor their employing *
11// * institutes,nor the agencies providing financial support for this *
12// * work make any representation or warranty, express or implied, *
13// * regarding this software system or assume any liability for its *
14// * use. *
15// * *
16// * This code implementation is the intellectual property of the *
17// * GEANT4 collaboration. *
18// * By copying, distributing or modifying the Program (or any work *
19// * based on the Program) you indicate your acceptance of this *
20// * statement, and all its terms. *
21// ********************************************************************
22//
23//
24// $Id: ExN04IonPhysics.cxx,v 1.1.1.1 2004/09/28 05:16:53 liwd Exp $
25// GEANT4 tag $Name: G4Svc-00-01-58 $
26//
27//
28
29#include <cmath>
30
32
33#include "G4ios.hh"
34#include "globals.hh"
35
36ExN04IonPhysics::ExN04IonPhysics( const G4String& name ) : G4VPhysicsConstructor( name ) {}
37
39
40#include "G4ParticleDefinition.hh"
41#include "G4ParticleTable.hh"
42
43// Nuclei
44#include "G4IonConstructor.hh"
45
47 // Construct light ions
48 G4IonConstructor pConstructor;
49 pConstructor.ConstructParticle();
50}
51
52#include "G4ProcessManager.hh"
53
55 G4ProcessManager* pManager = 0;
56
57 // Elastic Process
58 theElasticModel = new G4LElastic();
60
61 // Generic Ion
62 pManager = G4GenericIon::GenericIon()->GetProcessManager();
63 // add process
64 pManager->AddDiscreteProcess( &theElasticProcess );
65
66 pManager->AddProcess( &fIonIonisation, ordInActive, 2, 2 );
67
68 pManager->AddProcess( &fIonMultipleScattering );
69 pManager->SetProcessOrdering( &fIonMultipleScattering, idxAlongStep, 1 );
70 pManager->SetProcessOrdering( &fIonMultipleScattering, idxPostStep, 1 );
71
72 // Deuteron
73 pManager = G4Deuteron::Deuteron()->GetProcessManager();
74 // add process
75 pManager->AddDiscreteProcess( &theElasticProcess );
76
77 fDeuteronModel = new G4LEDeuteronInelastic();
78 fDeuteronProcess.RegisterMe( fDeuteronModel );
79 pManager->AddDiscreteProcess( &fDeuteronProcess );
80
81 pManager->AddProcess( &fDeuteronIonisation, ordInActive, 2, 2 );
82
83 pManager->AddProcess( &fDeuteronMultipleScattering );
84 pManager->SetProcessOrdering( &fDeuteronMultipleScattering, idxAlongStep, 1 );
85 pManager->SetProcessOrdering( &fDeuteronMultipleScattering, idxPostStep, 1 );
86
87 // Triton
88 pManager = G4Triton::Triton()->GetProcessManager();
89 // add process
90 pManager->AddDiscreteProcess( &theElasticProcess );
91
92 fTritonModel = new G4LETritonInelastic();
93 fTritonProcess.RegisterMe( fTritonModel );
94 pManager->AddDiscreteProcess( &fTritonProcess );
95
96 pManager->AddProcess( &fTritonIonisation, ordInActive, 2, 2 );
97
98 pManager->AddProcess( &fTritonMultipleScattering );
99 pManager->SetProcessOrdering( &fTritonMultipleScattering, idxAlongStep, 1 );
100 pManager->SetProcessOrdering( &fTritonMultipleScattering, idxPostStep, 1 );
101
102 // Alpha
103 pManager = G4Alpha::Alpha()->GetProcessManager();
104 // add process
105 pManager->AddDiscreteProcess( &theElasticProcess );
106
107 fAlphaModel = new G4LEAlphaInelastic();
108 fAlphaProcess.RegisterMe( fAlphaModel );
109 pManager->AddDiscreteProcess( &fAlphaProcess );
110
111 pManager->AddProcess( &fAlphaIonisation, ordInActive, 2, 2 );
112
113 pManager->AddProcess( &fAlphaMultipleScattering );
114 pManager->SetProcessOrdering( &fAlphaMultipleScattering, idxAlongStep, 1 );
115 pManager->SetProcessOrdering( &fAlphaMultipleScattering, idxPostStep, 1 );
116
117 // He3
118 pManager = G4He3::He3()->GetProcessManager();
119 // add process
120 pManager->AddDiscreteProcess( &theElasticProcess );
121
122 pManager->AddProcess( &fHe3Ionisation, ordInActive, 2, 2 );
123
124 pManager->AddProcess( &fHe3MultipleScattering );
125 pManager->SetProcessOrdering( &fHe3MultipleScattering, idxAlongStep, 1 );
126 pManager->SetProcessOrdering( &fHe3MultipleScattering, idxPostStep, 1 );
127}
virtual ~ExN04IonPhysics()
G4LEAlphaInelastic * fAlphaModel
G4MultipleScattering fHe3MultipleScattering
G4hIonisation fDeuteronIonisation
G4hIonisation fHe3Ionisation
G4LEDeuteronInelastic * fDeuteronModel
G4AlphaInelasticProcess fAlphaProcess
G4MultipleScattering fAlphaMultipleScattering
G4MultipleScattering fDeuteronMultipleScattering
virtual void ConstructProcess()
G4DeuteronInelasticProcess fDeuteronProcess
G4hIonisation fIonIonisation
G4hIonisation fAlphaIonisation
G4TritonInelasticProcess fTritonProcess
G4LETritonInelastic * fTritonModel
ExN04IonPhysics(const G4String &name="ion")
G4MultipleScattering fTritonMultipleScattering
G4hIonisation fTritonIonisation
G4LElastic * theElasticModel
virtual void ConstructParticle()
G4HadronElasticProcess theElasticProcess
G4MultipleScattering fIonMultipleScattering