CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
HadronPhysicsQGSP_BERT_NOLEP1.cc
Go to the documentation of this file.
1 #include "SimG4Core/PhysicsLists/interface/HadronPhysicsQGSP_BERT_NOLEP1.hh"
2 
3 #include "globals.hh"
4 #include "G4ios.hh"
5 #include <iomanip>
6 #include "G4ParticleDefinition.hh"
7 #include "G4ParticleTable.hh"
8 
9 #include "G4MesonConstructor.hh"
10 #include "G4BaryonConstructor.hh"
11 #include "G4ShortLivedConstructor.hh"
12 
13 HadronPhysicsQGSP_BERT_NOLEP1::HadronPhysicsQGSP_BERT_NOLEP1(const G4String& name, G4bool quasiElastic)
14  : G4VPhysicsConstructor(name) , QuasiElastic(quasiElastic) {
15  ProjectileDiffraction=false;
16 }
17 
18 void HadronPhysicsQGSP_BERT_NOLEP1::CreateModels() {
19 
20  theNeutrons=new G4NeutronBuilder;
21  theNeutrons->RegisterMe(theQGSPNeutron=new G4QGSPNeutronBuilder(QuasiElastic, ProjectileDiffraction));
22  theQGSPNeutron->SetMinEnergy(8.5*GeV);
23  theNeutrons->RegisterMe(theLEPNeutron=new G4LEPNeutronBuilder);
24 // do not use LEP for inelastic, but leave capture, etc.
25  theLEPNeutron->SetMinInelasticEnergy(0.*eV);
26  theLEPNeutron->SetMaxInelasticEnergy(0.*eV);
27 
28  theNeutrons->RegisterMe(theBertiniNeutron=new G4BertiniNeutronBuilder);
29  theBertiniNeutron->SetMinEnergy(0.0*GeV);
30  theBertiniNeutron->SetMaxEnergy(9.9*GeV);
31 
32  thePro=new G4ProtonBuilder;
33  thePro->RegisterMe(theQGSPPro=new G4QGSPProtonBuilder(QuasiElastic, ProjectileDiffraction));
34  theQGSPPro->SetMinEnergy(8.5*GeV);
35 
36  thePro->RegisterMe(theBertiniPro=new G4BertiniProtonBuilder);
37  theBertiniPro->SetMaxEnergy(9.9*GeV);
38 
39  thePiK=new G4PiKBuilder;
40  thePiK->RegisterMe(theQGSPPiK=new G4QGSPPiKBuilder(QuasiElastic));
41  theQGSPPiK->SetMinEnergy(8.5*GeV);
42 
43  thePiK->RegisterMe(theBertiniPiK=new G4BertiniPiKBuilder);
44  theBertiniPiK->SetMaxEnergy(9.9*GeV);
45 
46  theMiscLHEP=new G4MiscLHEPBuilder;
47 }
48 
49 HadronPhysicsQGSP_BERT_NOLEP1::~HadronPhysicsQGSP_BERT_NOLEP1() {
50  delete theMiscLHEP;
51  delete theQGSPNeutron;
52  delete theLEPNeutron;
53  delete theBertiniNeutron;
54  delete theQGSPPro;
55  delete thePro;
56  delete theBertiniPro;
57  delete theQGSPPiK;
58  delete theBertiniPiK;
59  delete thePiK;
60 }
61 
62 void HadronPhysicsQGSP_BERT_NOLEP1::ConstructParticle() {
63  G4MesonConstructor pMesonConstructor;
64  pMesonConstructor.ConstructParticle();
65 
66  G4BaryonConstructor pBaryonConstructor;
67  pBaryonConstructor.ConstructParticle();
68 
69  G4ShortLivedConstructor pShortLivedConstructor;
70  pShortLivedConstructor.ConstructParticle();
71 }
72 
73 #include "G4ProcessManager.hh"
74 void HadronPhysicsQGSP_BERT_NOLEP1::ConstructProcess() {
75  CreateModels();
76  theNeutrons->Build();
77  thePro->Build();
78  thePiK->Build();
79  theMiscLHEP->Build();
80 }
81