Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
HadronPhysicsHIJING.cc
Go to the documentation of this file.
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 /// \file hadronic/Hadr02/src/HadronPhysicsHIJING.cc
27 /// \brief Implementation of the HadronPhysicsHIJING class
28 //
29 // $Id: HadronPhysicsHIJING.cc,v 1.4 2010-06-15 11:03:50 vnivanch Exp $
30 // GEANT4 tag $Name: not supported by cvs2svn $
31 //
32 //---------------------------------------------------------------------------
33 //
34 // ClassName:
35 //
36 // Author: 2012 A. Dotti
37 // created from HadronPhysicsHIJING
38 //
39 // Modified:
40 //
41 //----------------------------------------------------------------------------
42 //
43 #ifdef G4_USE_HIJING
44 #include "HadronPhysicsHIJING.hh"
45 
46 #include "globals.hh"
47 #include "G4ios.hh"
48 #include <iomanip>
49 #include "G4ParticleDefinition.hh"
50 #include "G4ParticleTable.hh"
51 
52 #include "G4MesonConstructor.hh"
53 #include "G4BaryonConstructor.hh"
59 
60 #include "G4ProcessManager.hh"
61 #include "G4PhysListUtil.hh"
62 
63 #include "G4PiKBuilder.hh"
64 #include "G4FTFPPiKBuilder.hh"
65 #include "G4QGSPPiKBuilder.hh"
66 #include "G4BertiniPiKBuilder.hh"
67 
68 #include "G4ProtonBuilder.hh"
69 #include "G4FTFPProtonBuilder.hh"
70 #include "G4QGSPProtonBuilder.hh"
72 
73 #include "G4NeutronBuilder.hh"
74 #include "G4FTFPNeutronBuilder.hh"
75 #include "G4QGSPNeutronBuilder.hh"
77 
78 #include "G4HyperonFTFPBuilder.hh"
79 #include "G4AntiBarionBuilder.hh"
81 
83  : G4VPhysicsConstructor("hInelastic HIJING")
84 {
85  fNeutrons = 0;
86  fHIJINGNeutron = 0;
87  fPiK = 0;
88  fHIJINGPiK = 0;
89  fPro = 0;
90  fHIJINGPro = 0;
91  fHyperon = 0;
92  fAntiBaryon = 0;
93  fHIJINGAntiBaryon = 0;
94  fCHIPSInelastic = 0;
95 }
96 
97 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
98 
99 void HadronPhysicsHIJING::CreateModels()
100 {
101  G4bool quasiElasFTF = false;
102  G4bool quasiElasQGS = true;
103  G4double minFTFP = 6*GeV;
104  G4double maxBERT = 8*GeV;
105  G4double minHIJING = 12*GeV;
106  G4double minQGSP = 12*GeV;
107  G4double maxFTFP = 25*GeV;
108 
109  //Proton
110  fPro=new G4ProtonBuilder;
111  fHIJINGPro=new HIJINGProtonBuilder();
112  fHIJINGPro->SetMinEnergy(minHIJING);
113  fPro->RegisterMe(fHIJINGPro);
114  G4FTFPProtonBuilder* FTFPPro=new G4FTFPProtonBuilder(quasiElasFTF);
115  FTFPPro->SetMinEnergy( minFTFP );
116  FTFPPro->SetMaxEnergy( maxFTFP );
117  fPro->RegisterMe( FTFPPro );
119  BertPro->SetMaxEnergy( maxBERT );
120 
121  fNeutrons=new G4NeutronBuilder;
122  fHIJINGNeutron=new HIJINGNeutronBuilder();
123  fHIJINGNeutron->SetMinEnergy(minHIJING);
124  fNeutrons->RegisterMe(fHIJINGNeutron);
125  //G4QGSPNeutronBuilder* QGSPNeu = new G4QGSPNeutronBuilder(quasiElasQGS);
126  //QGSPNeu->SetMinEnergy(minQGSP);
127  //fNeutrons->RegisterMe(QGSPNeu);
128  G4FTFPNeutronBuilder* FTFPNeu = new G4FTFPNeutronBuilder(quasiElasFTF);
129  FTFPNeu->SetMinEnergy( minFTFP );
130  FTFPNeu->SetMaxEnergy( maxFTFP );
131  fNeutrons->RegisterMe( FTFPNeu );
133  BertNeu->SetMaxEnergy( maxBERT );
134 
135  fPiK=new G4PiKBuilder;
136  G4QGSPPiKBuilder* QGSPPiK=new G4QGSPPiKBuilder(quasiElasQGS);
137  fPiK->RegisterMe(QGSPPiK);
138  QGSPPiK->SetMinEnergy(minQGSP);
139  G4FTFPPiKBuilder* FTFPPiK=new G4FTFPPiKBuilder(quasiElasFTF);
140  fPiK->RegisterMe(FTFPPiK);
141  FTFPPiK->SetMaxEnergy(maxFTFP);
142  FTFPPiK->SetMinEnergy(minFTFP);
143  G4BertiniPiKBuilder* BertiniPiK=new G4BertiniPiKBuilder();
144  fPiK->RegisterMe(BertiniPiK);
145  BertiniPiK->SetMaxEnergy(maxBERT);
146 
147  //For Hyperons use FTF model
148  fHyperon=new G4HyperonFTFPBuilder;
149 
150  fAntiBaryon=new G4AntiBarionBuilder;
151  //FTFPAntiBaryon=new G4FTFPAntiBarionBuilder(quasiElasFTF);
152  G4FTFPAntiBarionBuilder* FTFPAB = new G4FTFPAntiBarionBuilder(quasiElasFTF);
153  fAntiBaryon->RegisterMe( FTFPAB );
154 }
155 
156 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
157 
159 {
160  delete fNeutrons;
161  delete fHIJINGNeutron;
162 
163  delete fPiK;
164  delete fHIJINGPiK;
165 
166  delete fPro;
167  delete fHIJINGPro;
168 
169  delete fHyperon;
170  delete fAntiBaryon;
171  delete fHIJINGAntiBaryon;
172 
173  delete fCHIPSInelastic;
174 }
175 
176 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
177 
179 {
180  G4MesonConstructor pMesonConstructor;
181  pMesonConstructor.ConstructParticle();
182 
183  G4BaryonConstructor pBaryonConstructor;
184  pBaryonConstructor.ConstructParticle();
185 
186  G4ShortLivedConstructor pShortLivedConstructor;
187  pShortLivedConstructor.ConstructParticle();
188 }
189 
190 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
191 
193 {
194  CreateModels();
195  fNeutrons->Build();
196  fPro->Build();
197  fPiK->Build();
198 
199  // use CHIPS cross sections also for Kaons
200  G4VCrossSectionDataSet* ChipsKaonMinus =
202  GetCrossSectionDataSet(G4ChipsKaonMinusInelasticXS::Default_Name());
203  G4VCrossSectionDataSet* ChipsKaonPlus =
205  GetCrossSectionDataSet(G4ChipsKaonPlusInelasticXS::Default_Name());
206  G4VCrossSectionDataSet* ChipsKaonZero =
208  GetCrossSectionDataSet(G4ChipsKaonZeroInelasticXS::Default_Name());
209  //
210 
212  AddDataSet(ChipsKaonMinus);
214  AddDataSet(ChipsKaonPlus);
216  AddDataSet(ChipsKaonZero );
218  AddDataSet(ChipsKaonZero );
219 
220  fHyperon->Build();
221  fAntiBaryon->Build();
222 }
223 
224 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
225 
227 HadronPhysicsHIJING::FindInelasticProcess(const G4ParticleDefinition* p)
228 {
229  G4HadronicProcess* had = 0;
230  if(p) {
232  size_t n = pvec->size();
233  if(0 < n) {
234  for(size_t i=0; i<n; ++i) {
235  if(fHadronInelastic == ((*pvec)[i])->GetProcessSubType()) {
236  had = static_cast<G4HadronicProcess*>((*pvec)[i]);
237 
238  break;
239  }
240  }
241  }
242  }
243  return had;
244 }
245 
246 #endif //G4_USE_HIJING
virtual ~HadronPhysicsHIJING()
void SetMinEnergy(G4double aM)
const char * p
Definition: xmltok.h:285
static G4KaonZeroLong * KaonZeroLong()
void SetMinEnergy(G4double aM)
void SetMinEnergy(G4double aM)
static void ConstructParticle()
virtual void ConstructProcess()
static void ConstructParticle()
G4ProcessManager * GetProcessManager() const
int G4int
Definition: G4Types.hh:78
static G4KaonMinus * KaonMinus()
Definition: G4KaonMinus.cc:113
void SetMaxEnergy(G4double aM)
static G4HadronicProcess * FindInelasticProcess(const G4ParticleDefinition *)
void SetMinEnergy(G4double aM)
static G4KaonZeroShort * KaonZeroShort()
bool G4bool
Definition: G4Types.hh:79
static G4CrossSectionDataSetRegistry * Instance()
void SetMaxEnergy(G4double aM)
void SetMinEnergy(G4double aM)
const G4int n
void SetMaxEnergy(G4double aM)
HadronPhysicsHIJING(G4int verbose=1)
void SetMinEnergy(G4double aM)
G4int size() const
virtual void ConstructParticle()
void RegisterMe(G4VAntiBarionBuilder *aB)
void RegisterMe(G4VPiKBuilder *aB)
Definition: G4PiKBuilder.hh:58
void RegisterMe(G4VProtonBuilder *aB)
void RegisterMe(G4VNeutronBuilder *aB)
double G4double
Definition: G4Types.hh:76
static G4KaonPlus * KaonPlus()
Definition: G4KaonPlus.cc:113
Definition of the HadronPhysicsHIJING class.
G4ProcessVector * GetProcessList() const
void SetMaxEnergy(G4double aM)