ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
GammaRayTelHadronPhysics.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file GammaRayTelHadronPhysics.cc
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 //
28 
29 #include <iomanip>
30 
32 #include "globals.hh"
33 #include "G4ios.hh"
34 #include "G4SystemOfUnits.hh"
36 #include "G4HadronicParameters.hh"
37 
38 
40  : G4VPhysicsConstructor(name)
41 {;}
42 
44 {
45  delete theStringDecay;
46 }
47 
48 
49 #include "G4ProcessManager.hh"
50 
51 
53 {
54 
55  G4ProcessManager * pManager = 0;
56  /*
57  G4cout << "" << G4endl;
58  G4cout << "You are using the GammaRayTelHadronPhysics" << G4endl;
59  G4cout << " - Note that this hadronic physics list is not optimized for any particular usage" << G4endl;
60  G4cout << " - If you wish to have a starting point tailored for a particular area of work," << G4endl;
61  G4cout << " please use one of the available physics lists by use-case." << G4endl;
62  G4cout << "" << G4endl;
63  */
64 
65  // Elastic Process
68 
69  const G4double theBERTMin = 0.0*GeV;
70  const G4double theBERTMax = 5.0*GeV;
71  const G4double theFTFMin = 4.0*GeV;
73 
79 
80  theModel = new G4TheoFSGenerator( "FTFP" );
83  theModel->SetMinEnergy( theFTFMin );
84  theModel->SetMaxEnergy( theFTFMax );
85 
86  G4TheoFSGenerator* theModelDownToZero = new G4TheoFSGenerator( "FTFP" );
87  theModelDownToZero->SetHighEnergyGenerator( theStringModel );
88  theModelDownToZero->SetTransport( theCascade );
89  theModelDownToZero->SetMinEnergy(0*eV);
90  theModelDownToZero->SetMaxEnergy(theFTFMax );
91 
92  G4CascadeInterface * theBERTModel = new G4CascadeInterface;
93  theBERTModel->SetMinEnergy( theBERTMin );
94  theBERTModel->SetMaxEnergy( theBERTMax );
95 
96  // pi+ and pi-
97 
100 
101 
102  // PionPlus
104  pManager = pion ->GetProcessManager();
105  // add process
107  thePionPlusInelastic.AddDataSet(thePiData);
108  thePionPlusInelastic.RegisterMe(theBERTModel);
111 
112  pManager->AddProcess(&thePionPlusIonisation, ordInActive,2, 2);
113 
114  pManager->AddProcess(&thePionPlusMult);
117 
118  // PionMinus
120  pManager = pionMinus -> GetProcessManager();
121  // add process
124  thePionMinusInelastic.RegisterMe(theBERTModel);
127 
129 
130  pManager->AddProcess(&thePionMinusMult);
133 
135 
136  // KaonPlus
138  pManager = kaonPlus->GetProcessManager();
139  // add process
142  GetCrossSectionDataSet(G4ChipsKaonPlusInelasticXS::Default_Name()));
143  theKaonPlusInelastic.RegisterMe(theBERTModel);
146 
147  pManager->AddProcess(&theKaonPlusIonisation, ordInActive,2, 2);
148 
149  pManager->AddProcess(&theKaonPlusMult);
152 
153  // KaonMinus
155  pManager = kaonMinus->GetProcessManager();
156  // add process
159  GetCrossSectionDataSet(G4ChipsKaonMinusInelasticXS::Default_Name()));
160  theKaonMinusInelastic.RegisterMe(theBERTModel);
163 
165 
166  pManager->AddProcess(&theKaonMinusMult);
169 
171 
172  // KaonZeroL
174  // add process
177  ->GetCrossSectionDataSet(G4ChipsKaonZeroInelasticXS::Default_Name()));
178  theKaonZeroLInelastic.RegisterMe(theBERTModel);
181 
182  // KaonZeroS
184  // add process
187  ->GetCrossSectionDataSet(G4ChipsKaonZeroInelasticXS::Default_Name()));
188  theKaonZeroSInelastic.RegisterMe(theBERTModel);
191 
192  // Proton
193  pManager = G4Proton::Proton()->GetProcessManager();
194  // add process
197  theProtonInelastic.RegisterMe(theBERTModel);
200 
201  pManager->AddProcess(&theProtonIonisation, ordInActive,2, 2);
202 
203  pManager->AddProcess(&theProtonMult);
206 
207  // anti-Proton
209  // add process
211  theAntiProtonInelastic.AddDataSet( theAntiNucleonData );
212  theAntiProtonInelastic.RegisterMe(theModelDownToZero);
214 
216 
217  pManager->AddProcess(&theAntiProtonMult);
220 
222 
223  // Neutron
224  pManager = G4Neutron::Neutron()->GetProcessManager();
225  // add process
228  theNeutronInelastic.RegisterMe(theBERTModel);
231 
235 
239 
240  // AntiNeutron
242  // add process
244  theAntiNeutronInelastic.AddDataSet( theAntiNucleonData );
245  theAntiNeutronInelastic.RegisterMe(theModelDownToZero);
247 
248 }