CMS 3D CMS Logo

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