ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
HadronPhysicsHIJING.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file HadronPhysicsHIJING.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 //
28 //
29 //
30 //---------------------------------------------------------------------------
31 //
32 // ClassName:
33 //
34 // Author: 2012 A. Dotti
35 // created from HadronPhysicsHIJING
36 //
37 // Modified:
38 //
39 //----------------------------------------------------------------------------
40 //
41 #ifdef G4_USE_HIJING
42 #include "HadronPhysicsHIJING.hh"
43 
44 #include "globals.hh"
45 #include "G4ios.hh"
46 #include <iomanip>
47 #include "G4ParticleDefinition.hh"
48 #include "G4ParticleTable.hh"
49 
50 #include "G4MesonConstructor.hh"
51 #include "G4BaryonConstructor.hh"
57 
58 #include "G4ProcessManager.hh"
59 #include "G4PhysListUtil.hh"
60 
61 #include "G4PiKBuilder.hh"
62 #include "G4FTFPPiKBuilder.hh"
63 #include "G4QGSPPiKBuilder.hh"
64 #include "G4BertiniPiKBuilder.hh"
65 
66 #include "G4ProtonBuilder.hh"
67 #include "G4FTFPProtonBuilder.hh"
68 #include "G4QGSPProtonBuilder.hh"
70 
71 #include "G4NeutronBuilder.hh"
72 #include "G4FTFPNeutronBuilder.hh"
73 #include "G4QGSPNeutronBuilder.hh"
75 
76 #include "G4HyperonFTFPBuilder.hh"
77 #include "G4AntiBarionBuilder.hh"
79 
81  : G4VPhysicsConstructor("hInelastic HIJING")
82 {
83  fNeutrons = 0;
84  fHIJINGNeutron = 0;
85  fPiK = 0;
86  fHIJINGPiK = 0;
87  fPro = 0;
88  fHIJINGPro = 0;
89  fHyperon = 0;
90  fAntiBaryon = 0;
91  fHIJINGAntiBaryon = 0;
92  fCHIPSInelastic = 0;
93 }
94 
95 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
96 
98 {
99  G4bool quasiElasFTF = false;
100  G4bool quasiElasQGS = true;
101  G4double minFTFP = 6*GeV;
102  G4double maxBERT = 8*GeV;
103  G4double minHIJING = 12*GeV;
104  G4double minQGSP = 12*GeV;
105  G4double maxFTFP = 25*GeV;
106 
107  //Proton
108  fPro=new G4ProtonBuilder;
110  fHIJINGPro->SetMinEnergy(minHIJING);
112  G4FTFPProtonBuilder* FTFPPro=new G4FTFPProtonBuilder(quasiElasFTF);
113  FTFPPro->SetMinEnergy( minFTFP );
114  FTFPPro->SetMaxEnergy( maxFTFP );
115  fPro->RegisterMe( FTFPPro );
117  BertPro->SetMaxEnergy( maxBERT );
118 
121  fHIJINGNeutron->SetMinEnergy(minHIJING);
123  //G4QGSPNeutronBuilder* QGSPNeu = new G4QGSPNeutronBuilder(quasiElasQGS);
124  //QGSPNeu->SetMinEnergy(minQGSP);
125  //fNeutrons->RegisterMe(QGSPNeu);
126  G4FTFPNeutronBuilder* FTFPNeu = new G4FTFPNeutronBuilder(quasiElasFTF);
127  FTFPNeu->SetMinEnergy( minFTFP );
128  FTFPNeu->SetMaxEnergy( maxFTFP );
129  fNeutrons->RegisterMe( FTFPNeu );
131  BertNeu->SetMaxEnergy( maxBERT );
132 
133  fPiK=new G4PiKBuilder;
134  G4QGSPPiKBuilder* QGSPPiK=new G4QGSPPiKBuilder(quasiElasQGS);
135  fPiK->RegisterMe(QGSPPiK);
136  QGSPPiK->SetMinEnergy(minQGSP);
137  G4FTFPPiKBuilder* FTFPPiK=new G4FTFPPiKBuilder(quasiElasFTF);
138  fPiK->RegisterMe(FTFPPiK);
139  FTFPPiK->SetMaxEnergy(maxFTFP);
140  FTFPPiK->SetMinEnergy(minFTFP);
141  G4BertiniPiKBuilder* BertiniPiK=new G4BertiniPiKBuilder();
142  fPiK->RegisterMe(BertiniPiK);
143  BertiniPiK->SetMaxEnergy(maxBERT);
144 
145  //For Hyperons use FTF model
147 
149  //FTFPAntiBaryon=new G4FTFPAntiBarionBuilder(quasiElasFTF);
150  G4FTFPAntiBarionBuilder* FTFPAB = new G4FTFPAntiBarionBuilder(quasiElasFTF);
151  fAntiBaryon->RegisterMe( FTFPAB );
152 }
153 
154 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
155 
157 {
158  delete fNeutrons;
159  delete fHIJINGNeutron;
160 
161  delete fPiK;
162  delete fHIJINGPiK;
163 
164  delete fPro;
165  delete fHIJINGPro;
166 
167  delete fHyperon;
168  delete fAntiBaryon;
169  delete fHIJINGAntiBaryon;
170 
171  delete fCHIPSInelastic;
172 }
173 
174 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
175 
177 {
178  G4MesonConstructor pMesonConstructor;
179  pMesonConstructor.ConstructParticle();
180 
181  G4BaryonConstructor pBaryonConstructor;
182  pBaryonConstructor.ConstructParticle();
183 
184  G4ShortLivedConstructor pShortLivedConstructor;
185  pShortLivedConstructor.ConstructParticle();
186 }
187 
188 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
189 
191 {
192  CreateModels();
193  fNeutrons->Build();
194  fPro->Build();
195  fPiK->Build();
196 
197  // use CHIPS cross sections also for Kaons
198  G4VCrossSectionDataSet* ChipsKaonMinus =
200  GetCrossSectionDataSet(G4ChipsKaonMinusInelasticXS::Default_Name());
201  G4VCrossSectionDataSet* ChipsKaonPlus =
203  GetCrossSectionDataSet(G4ChipsKaonPlusInelasticXS::Default_Name());
204  G4VCrossSectionDataSet* ChipsKaonZero =
206  GetCrossSectionDataSet(G4ChipsKaonZeroInelasticXS::Default_Name());
207  //
208 
210  AddDataSet(ChipsKaonMinus);
212  AddDataSet(ChipsKaonPlus);
214  AddDataSet(ChipsKaonZero );
216  AddDataSet(ChipsKaonZero );
217 
218  fHyperon->Build();
219  fAntiBaryon->Build();
220 }
221 
222 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
223 
226 {
227  G4HadronicProcess* had = 0;
228  if(p) {
230  size_t n = pvec->size();
231  if(0 < n) {
232  for(size_t i=0; i<n; ++i) {
233  if(fHadronInelastic == ((*pvec)[i])->GetProcessSubType()) {
234  had = static_cast<G4HadronicProcess*>((*pvec)[i]);
235 
236  break;
237  }
238  }
239  }
240  }
241  return had;
242 }
243 
244 #endif //G4_USE_HIJING