ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4HadronPhysicsFTF_BIC.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4HadronPhysicsFTF_BIC.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 // ClassName: G4HadronPhysicsFTF_BIC
30 //
31 // Author: 2007 Gunter Folger
32 //
33 // Modified:
34 //
35 //----------------------------------------------------------------------------
36 //
37 #include <iomanip>
39 #include "globals.hh"
40 #include "G4ios.hh"
41 #include "G4SystemOfUnits.hh"
42 #include "G4ParticleDefinition.hh"
43 #include "G4ParticleTable.hh"
44 #include "G4MesonConstructor.hh"
45 #include "G4BaryonConstructor.hh"
47 #include "G4PionBuilder.hh"
48 #include "G4KaonBuilder.hh"
49 #include "G4BinaryPionBuilder.hh"
50 #include "G4BertiniPionBuilder.hh"
51 #include "G4BertiniKaonBuilder.hh"
54 #include "G4ProtonBuilder.hh"
56 #include "G4BinaryProtonBuilder.hh"
57 #include "G4NeutronBuilder.hh"
60 #include "G4HyperonFTFPBuilder.hh"
61 #include "G4AntiBarionBuilder.hh"
63 #include "G4ProcessManager.hh"
64 #include "G4ProcessVector.hh"
66 #include "G4NeutronRadCapture.hh"
67 #include "G4NeutronInelasticXS.hh"
68 #include "G4NeutronCaptureXS.hh"
70 #include "G4PhysListUtil.hh"
71 #include "G4HadronicParameters.hh"
73 
75 
77  : G4HadronPhysicsFTF_BIC("hInelastic FTF_BIC",false) {}
78 
80  : G4VPhysicsConstructor(name)
81  , QuasiElastic(quasiElastic)
82 {
85  maxBIC_pion = 1.5*GeV;
86  minBERT_pion = 1.0*GeV;
87 }
88 
90 {}
91 
93 {
94  Neutron();
95  Proton();
96  Pion();
97  Kaon();
98  Others();
99 }
100 
102 {
103  //General schema:
104  // 1) Create a builder
105  // 2) Call AddBuilder
106  // 3) Configure the builder, possibly with sub-builders
107  // 4) Call builder->Build()
108  auto neu = new G4NeutronBuilder;
109  AddBuilder(neu);
110  auto ftfn = new G4FTFBinaryNeutronBuilder(QuasiElastic);
111  AddBuilder( ftfn );
112  neu->RegisterMe(ftfn);
113  auto bicn = new G4BinaryNeutronBuilder;
114  AddBuilder(bicn);
115  neu->RegisterMe(bicn);
116  bicn->SetMinEnergy(0.0);
117  bicn->SetMaxEnergy(maxBIC_neutron);
118  neu->Build();
119 }
120 
122 {
123  auto pro = new G4ProtonBuilder;
124  AddBuilder(pro);
125  auto ftfp = new G4FTFBinaryProtonBuilder(QuasiElastic);
126  AddBuilder(ftfp);
127  pro->RegisterMe(ftfp);
128  auto bicp = new G4BinaryProtonBuilder;
129  AddBuilder(bicp);
130  pro->RegisterMe(bicp);
131  bicp->SetMaxEnergy(maxBIC_proton);
132  pro->Build();
133 }
134 
136 {
137  auto pi = new G4PionBuilder;
138  AddBuilder(pi);
139  auto ftfpi = new G4FTFBinaryPionBuilder(QuasiElastic);
140  AddBuilder(ftfpi);
141  pi->RegisterMe(ftfpi);
142  auto bertpi = new G4BertiniPionBuilder;
143  AddBuilder(bertpi);
144  bertpi->SetMinEnergy(minBERT_pion);
145  bertpi->SetMaxEnergy(maxBERT_pion);
146  pi->RegisterMe(bertpi);
147  auto bicpi = new G4BinaryPionBuilder;
148  AddBuilder(bicpi);
149  pi->RegisterMe(bicpi);
150  bicpi->SetMaxEnergy(maxBIC_pion);
151  pi->Build();
152 }
153 
155 {
156  auto k = new G4KaonBuilder;
157  AddBuilder(k);
158  auto ftfk = new G4FTFBinaryKaonBuilder(QuasiElastic);
159  AddBuilder(ftfk);
160  k->RegisterMe(ftfk);
161  auto bertk = new G4BertiniKaonBuilder;
162  AddBuilder(bertk);
163  k->RegisterMe(bertk);
164  bertk->SetMaxEnergy(maxBERT_kaon);
165  k->Build();
166 }
167 
169 {
170  auto hyp = new G4HyperonFTFPBuilder;
171  AddBuilder(hyp);
172  hyp->Build();
173 
174  auto abar = new G4AntiBarionBuilder;
175  AddBuilder(abar);
176  auto ftfpabar = new G4FTFPAntiBarionBuilder(QuasiElastic);
177  AddBuilder(ftfpabar);
178  abar->RegisterMe(ftfpabar);
179  abar->Build();
180 }
181 
183 {
184  G4MesonConstructor pMesonConstructor;
185  pMesonConstructor.ConstructParticle();
186 
187  G4BaryonConstructor pBaryonConstructor;
188  pBaryonConstructor.ConstructParticle();
189 
190  G4ShortLivedConstructor pShortLivedConstructor;
191  pShortLivedConstructor.ConstructParticle();
192 }
193 
195 {
197  DumpBanner();
198  }
199  CreateModels();
201 }
202 
203 //#include "G4ProcessManager.hh"
204 #include "G4PhysListUtil.hh"
206 {
207  // --- Neutrons ---
210  if(inel) { inel->AddDataSet(new G4NeutronInelasticXS()); }
212  if (capture) {
213  capture->RegisterMe(new G4NeutronRadCapture());
214  }
215 }
216