CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
HadronPhysicsQGSPCMS_FTFP_BERT_WP.cc
Go to the documentation of this file.
5 
6 #include "globals.hh"
7 #include "G4ios.hh"
8 #include <iomanip>
9 #include "G4ParticleDefinition.hh"
10 #include "G4ParticleTable.hh"
11 
12 #include "G4MesonConstructor.hh"
13 #include "G4BaryonConstructor.hh"
14 #include "G4ShortLivedConstructor.hh"
15 
16 #include "G4SystemOfUnits.hh"
17 
19  : G4VPhysicsConstructor(name) , QuasiElastic(quasiElastic)
20 {
22 }
23 
25 {
26  // First transition, between BERT and FTF/P
27  G4double minFTFP= 6.0 * GeV; // Was 9.5 for LEP (in FTFP_BERT 6.0 * GeV);
28  G4double maxBERT= 8.0 * GeV; // Was 9.9 for LEP (in FTFP_BERT 8.0 * GeV);
29  // Second transition, between FTF/P and QGS/P
30  G4double minQGSP= 12.0 * GeV;
31  G4double maxFTFP= 25.0 * GeV;
32 
33  G4bool quasiElasFTF= false; // Use built-in quasi-elastic (not add-on)
34  G4bool quasiElasQGS= true; // For QGS, it must use it.
35 
36  G4cout << " New QGSPCMS_FTFP_BERT physics list, replaces LEP with FTF/P for p/n/pi (/K?)";
37  G4cout << " Thresholds: " << G4endl;
38  G4cout << " 1) between BERT and FTF/P over the interval "
39  << minFTFP/GeV << " to " << maxBERT/GeV << " GeV. " << G4endl;
40  G4cout << " 2) between FTF/P and QGS/P over the interval "
41  << minQGSP/GeV << " to " << maxFTFP/GeV << " GeV. " << G4endl;
42  G4cout << " -- quasiElastic was asked to be " << QuasiElastic << G4endl
43  << " Changed to " << quasiElasQGS << " for QGS "
44  << " and to " << quasiElasFTF << " (must be false) for FTF" << G4endl;
45 
46  theNeutrons=new G4NeutronBuilder;
47  theNeutrons->RegisterMe(theQGSPNeutron=new G4QGSPNeutronBuilder(quasiElasQGS));
48  theQGSPNeutron->SetMinEnergy(minQGSP);
49  theNeutrons->RegisterMe(theFTFPNeutron=new CMSFTFPNeutronBuilder(quasiElasFTF));
50  theFTFPNeutron->SetMinEnergy(minFTFP); // was (9.5*GeV);
51  theFTFPNeutron->SetMaxEnergy(maxFTFP); // was (25*GeV);
52  // Exclude LEP only from Inelastic
53  // -- Register it for other processes: Capture, Elastic
54  //theNeutrons->RegisterMe(theLEPNeutron=new G4LEPNeutronBuilder);
55  //theLEPNeutron->SetMinInelasticEnergy(0.0*GeV);
56  // theLEPNeutron->SetMaxInelasticEnergy(0.0*GeV);
57 
58  theNeutrons->RegisterMe(theBertiniNeutron=new G4BertiniNeutronBuilder);
59  theBertiniNeutron->SetMinEnergy(0.0*GeV);
60  theBertiniNeutron->SetMaxEnergy(maxBERT); // was (9.9*GeV);
61 
63  thePro->RegisterMe(theQGSPPro=new G4QGSPProtonBuilder(quasiElasQGS));
64  theQGSPPro->SetMinEnergy(minQGSP);
65  thePro->RegisterMe(theFTFPPro=new CMSFTFPProtonBuilder(quasiElasFTF));
66  theFTFPPro->SetMinEnergy(minFTFP); // was (9.5*GeV);
67  theFTFPPro->SetMaxEnergy(maxFTFP); // was (25*GeV);
68 
69  thePro->RegisterMe(theBertiniPro=new G4BertiniProtonBuilder);
70  theBertiniPro->SetMaxEnergy(maxBERT); // was (9.9*GeV);
71 
73  thePiK->RegisterMe(theQGSPPiK=new G4QGSPPiKBuilder(quasiElasQGS));
74  theQGSPPiK->SetMinEnergy(minQGSP);
75  thePiK->RegisterMe(theFTFPPiK=new CMSFTFPPiKBuilder(quasiElasFTF));
76  theFTFPPiK->SetMaxEnergy(maxFTFP); // was (25*GeV);
77  theFTFPPiK->SetMinEnergy(minFTFP); // was (9.5*GeV);
78 
79  thePiK->RegisterMe(theBertiniPiK=new G4BertiniPiKBuilder);
80  theBertiniPiK->SetMaxEnergy(maxBERT); // was (9.9*GeV);
81 
83 }
84 
86 {
87  delete theMiscLHEP;
88  delete theQGSPNeutron;
89  delete theFTFPNeutron;
90  delete theBertiniNeutron;
91  delete theQGSPPro;
92  delete theFTFPPro;
93  delete thePro;
94  delete theBertiniPro;
95  delete theQGSPPiK;
96  delete theFTFPPiK;
97  delete theBertiniPiK;
98  delete thePiK;
99 }
100 
102 {
103  G4MesonConstructor pMesonConstructor;
104  pMesonConstructor.ConstructParticle();
105 
106  G4BaryonConstructor pBaryonConstructor;
107  pBaryonConstructor.ConstructParticle();
108 
109  G4ShortLivedConstructor pShortLivedConstructor;
110  pShortLivedConstructor.ConstructParticle();
111 }
112 
113 #include "G4ProcessManager.hh"
115 {
116  CreateModels();
117  theNeutrons->Build();
118  thePro->Build();
119  thePiK->Build();
120  theMiscLHEP->Build();
121 }
122 
const double GeV
Definition: MathUtil.h:16
HadronPhysicsQGSPCMS_FTFP_BERT_WP(const G4String &name="hadron", G4bool quasiElastic=true)
void RegisterMe(G4VPiKBuilder *aB)
void RegisterMe(G4VProtonBuilder *aB)