/[PAMELA software]/PamG4/src/IonPhysics.cc
ViewVC logotype

Annotation of /PamG4/src/IonPhysics.cc

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1.1.1 - (hide annotations) (download) (vendor branch)
Tue Dec 13 16:20:39 2005 UTC (18 years, 11 months ago) by cafagna
Branch: start, MAIN
CVS Tags: v1r0, bogo, HEAD
Changes since 1.1: +0 -0 lines
Geant4 code for ND and Calorimeter

1 cafagna 1.1
2     #include "IonPhysics.hh"
3    
4     #include "globals.hh"
5     #include "G4ios.hh"
6    
7    
8     #include "G4ParticleDefinition.hh"
9     #include "G4ProcessManager.hh"
10     //#include "G4LFission.hh"
11     //#include "G4LCapture.hh"
12     #include "G4Deuteron.hh"
13     #include "G4Triton.hh"
14     #include "G4He3.hh"
15     #include "G4Alpha.hh"
16     //#include "IonC12.hh"
17     #include "G4GenericIon.hh"
18    
19     #include "G4ExcitationHandler.hh"
20     #include "G4Evaporation.hh"
21     #include "G4FermiBreakUp.hh"
22     #include "G4StatMF.hh"
23     #include "G4GeneratorPrecompoundInterface.hh"
24    
25     #include "G4HadronInelasticProcess.hh"
26     #include "G4BinaryLightIonReaction.hh"
27     #include "G4TripathiCrossSection.hh"
28     #include "G4IonsShenCrossSection.hh"
29     #include "G4LEDeuteronInelastic.hh"
30     #include "G4LETritonInelastic.hh"
31     #include "G4LEAlphaInelastic.hh"
32    
33    
34     IonPhysics::IonPhysics(const G4String& name)
35     : G4VPhysicsConstructor(name)
36     {
37     }
38     IonPhysics::~IonPhysics()
39     {
40     }
41    
42     //#include "G4ParticleDefinition.hh"
43     //#include "G4ParticleTable.hh"
44    
45     // Nuclei
46     #include "G4IonConstructor.hh"
47    
48     void IonPhysics::ConstructParticle()
49     {
50     // Construct light ions
51     G4IonConstructor pConstructor;
52     pConstructor.ConstructParticle();
53     }
54    
55    
56     //#include "G4ProcessManager.hh"
57    
58    
59     void IonPhysics::ConstructProcess()
60     {
61    
62     G4ParticleDefinition* particle = 0;
63     G4ProcessManager* pmanager = 0;
64     G4BinaryLightIonReaction* theBC = new G4BinaryLightIonReaction();
65     theBC->SetMinEnergy(80*MeV);
66     theBC->SetMaxEnergy(20*GeV);
67    
68     G4TripathiCrossSection * TripathiCrossSection= new G4TripathiCrossSection;
69     G4IonsShenCrossSection * aShen = new G4IonsShenCrossSection;
70    
71    
72     // Elastic Process
73     theElasticModel = new G4LElastic();
74     theElasticProcess.RegisterMe(theElasticModel);
75    
76     // Generic Ion
77     // pmanager = G4GenericIon::GenericIon()->GetProcessManager();
78     // add process
79    
80    
81    
82     // GenericIon
83     particle = G4GenericIon::GenericIon();
84     pmanager = particle->GetProcessManager();
85     G4HadronInelasticProcess* theIPGenericIon =
86     new G4HadronInelasticProcess("IonInelastic",particle);
87     theIPGenericIon->AddDataSet(TripathiCrossSection);
88     theIPGenericIon->AddDataSet(aShen);
89     G4BinaryLightIonReaction * theGenIonBC= new G4BinaryLightIonReaction;
90     theGenIonBC->SetMinEnergy(0*MeV);
91     theGenIonBC->SetMaxEnergy(10*GeV);
92     theIPGenericIon->RegisterMe(theGenIonBC);
93     pmanager->AddDiscreteProcess(theIPGenericIon);
94     //-------------------------------------------------
95     pmanager->AddDiscreteProcess(&theElasticProcess);
96     pmanager->AddProcess(&fIonIonisation, ordInActive, 2, 2);
97     pmanager->AddProcess(&fIonMultipleScattering);
98     pmanager->SetProcessOrdering(&fIonMultipleScattering, idxAlongStep, 1);
99     pmanager->SetProcessOrdering(&fIonMultipleScattering, idxPostStep, 1);
100     //------------------------------------------------------------------------
101    
102     // C12
103     // particle = IonC12::Ion();
104     // pmanager = particle->GetProcessManager();
105     // G4HadronInelasticProcess* theIPIonC12 =
106     // new G4HadronInelasticProcess("IonC12Inelastic",particle);
107     // theIPIonC12->AddDataSet(TripathiCrossSection);
108     // theIPIonC12->AddDataSet(aShen);
109     // theIPIonC12->RegisterMe(theGenIonBC);
110     // pmanager->AddDiscreteProcess(theIPIonC12);
111     //------------------------------------------------------------------------
112     // Deuteron
113     particle = G4Deuteron::Deuteron();
114     pmanager = particle->GetProcessManager();
115     G4LEDeuteronInelastic* theDIModel = new G4LEDeuteronInelastic;
116     theDIModel->SetMaxEnergy(100*MeV);
117     theIPdeuteron.AddDataSet(TripathiCrossSection);
118     theIPdeuteron.AddDataSet(aShen);
119     theIPdeuteron.RegisterMe(theDIModel);
120     theIPdeuteron.RegisterMe(theBC);
121     pmanager->AddDiscreteProcess(&theIPdeuteron);
122     //------------------------------------------------------
123     // pmanager = G4Deuteron::Deuteron()->GetProcessManager();
124     // add process
125     pmanager->AddDiscreteProcess(&theElasticProcess);
126    
127     // fDeuteronModel = new G4LEDeuteronInelastic();
128     // fDeuteronProcess.RegisterMe(fDeuteronModel);
129     // pmanager->AddDiscreteProcess(&fDeuteronProcess);
130    
131     pmanager->AddProcess(&fDeuteronIonisation, ordInActive, 2, 2);
132    
133     pmanager->AddProcess(&fDeuteronMultipleScattering);
134     pmanager->SetProcessOrdering(&fDeuteronMultipleScattering, idxAlongStep, 1);
135     pmanager->SetProcessOrdering(&fDeuteronMultipleScattering, idxPostStep, 1);
136     //------------------------------------------------------------------------------
137     // Triton
138     //-----------------------------------------------------------------------------
139     particle = G4Triton::Triton();
140     pmanager = particle->GetProcessManager();
141     G4LETritonInelastic* theTIModel = new G4LETritonInelastic;
142     theTIModel->SetMaxEnergy(100*MeV);
143     theIPtriton.AddDataSet(TripathiCrossSection);
144     theIPtriton.AddDataSet(aShen);
145     theIPtriton.RegisterMe(theTIModel);
146     theIPtriton.RegisterMe(theBC);
147     pmanager->AddDiscreteProcess(&theIPtriton);
148     pmanager = G4Triton::Triton()->GetProcessManager();
149     // add process
150     //----------------------------------------------
151     pmanager->AddDiscreteProcess(&theElasticProcess);
152    
153     // fTritonModel = new G4LETritonInelastic();
154     // fTritonProcess.RegisterMe(fTritonModel);
155     //pmanager->AddDiscreteProcess(&fTritonProcess);
156    
157     pmanager->AddProcess(&fTritonIonisation, ordInActive, 2, 2);
158    
159     pmanager->AddProcess(&fTritonMultipleScattering);
160     pmanager->SetProcessOrdering(&fTritonMultipleScattering, idxAlongStep, 1);
161     pmanager->SetProcessOrdering(&fTritonMultipleScattering, idxPostStep, 1);
162    
163     // Alpha
164    
165     particle = G4Alpha::Alpha();
166     pmanager = particle->GetProcessManager();
167     G4LEAlphaInelastic* theAIModel = new G4LEAlphaInelastic;
168     theAIModel->SetMaxEnergy(100*MeV);
169     theIPalpha.AddDataSet(TripathiCrossSection);
170     theIPalpha.AddDataSet(aShen);
171     theIPalpha.RegisterMe(theAIModel);
172     theIPalpha.RegisterMe(theBC);
173     pmanager->AddDiscreteProcess(&theIPalpha);
174     //-------------------------------------------------------------------------
175     // pmanager = G4Alpha::Alpha()->GetProcessManager();
176     // add process
177     pmanager->AddDiscreteProcess(&theElasticProcess);
178    
179     // fAlphaModel = new G4LEAlphaInelastic();
180     // fAlphaProcess.RegisterMe(fAlphaModel);
181     // pmanager->AddDiscreteProcess(&fAlphaProcess);
182    
183     pmanager->AddProcess(&fAlphaIonisation, ordInActive, 2, 2);
184    
185     pmanager->AddProcess(&fAlphaMultipleScattering);
186     pmanager->SetProcessOrdering(&fAlphaMultipleScattering, idxAlongStep, 1);
187     pmanager->SetProcessOrdering(&fAlphaMultipleScattering, idxPostStep, 1);
188     //------------------------------------------------------------------------
189     // He3
190     particle = G4He3::He3();
191     pmanager = particle->GetProcessManager();
192     G4HadronInelasticProcess* theIPHe3 =
193     new G4HadronInelasticProcess("He3Inelastic",particle);
194     theIPHe3->AddDataSet(TripathiCrossSection);
195     theIPHe3->AddDataSet(aShen);
196     theIPHe3->RegisterMe(theGenIonBC);
197     pmanager->AddDiscreteProcess(theIPHe3);
198     //------------------------------------------------------------------------
199     // pmanager = G4He3::He3()->GetProcessManager();
200     // add process
201     pmanager->AddDiscreteProcess(&theElasticProcess);
202    
203     pmanager->AddProcess(&fHe3Ionisation, ordInActive, 2, 2);
204    
205     pmanager->AddProcess(&fHe3MultipleScattering);
206     pmanager->SetProcessOrdering(&fHe3MultipleScattering, idxAlongStep, 1);
207     pmanager->SetProcessOrdering(&fHe3MultipleScattering, idxPostStep, 1);
208    
209     }
210    
211    
212    

  ViewVC Help
Powered by ViewVC 1.1.23