CMS 3D CMS Logo

HadronPhysicsQGSPCMS_FTFP_BERT.cc
Go to the documentation of this file.
3 
4 #include "globals.hh"
5 #include "G4ios.hh"
6 #include "G4SystemOfUnits.hh"
7 #include "G4ParticleDefinition.hh"
8 #include "G4ParticleTable.hh"
9 
10 #include "G4PionBuilder.hh"
11 #include "G4FTFPPionBuilder.hh"
12 #include "G4QGSPPionBuilder.hh"
13 #include "G4BertiniPionBuilder.hh"
14 
15 #include "G4KaonBuilder.hh"
16 #include "G4FTFPKaonBuilder.hh"
17 #include "G4QGSPKaonBuilder.hh"
18 #include "G4BertiniKaonBuilder.hh"
19 
20 #include "G4ProtonBuilder.hh"
21 #include "G4FTFPProtonBuilder.hh"
22 #include "G4QGSPProtonBuilder.hh"
23 #include "G4BertiniProtonBuilder.hh"
24 
25 #include "G4NeutronBuilder.hh"
26 #include "G4FTFPNeutronBuilder.hh"
27 #include "G4QGSPNeutronBuilder.hh"
28 #include "G4BertiniNeutronBuilder.hh"
29 
30 #include "G4HyperonFTFPBuilder.hh"
31 #include "G4AntiBarionBuilder.hh"
32 #include "G4FTFPAntiBarionBuilder.hh"
33 #include "G4MesonConstructor.hh"
34 #include "G4BaryonConstructor.hh"
35 #include "G4ShortLivedConstructor.hh"
36 #include "G4IonConstructor.hh"
37 
38 #include "G4HadronCaptureProcess.hh"
39 #include "G4NeutronRadCapture.hh"
40 #include "G4NeutronInelasticXS.hh"
41 #include "G4NeutronCaptureXS.hh"
42 #include "G4CrossSectionDataSetRegistry.hh"
43 
44 #include "G4PhysListUtil.hh"
45 #include "G4ProcessManager.hh"
46 
48  : HadronPhysicsQGSPCMS_FTFP_BERT(3., 6., 12., 25., 12.) {}
49 
51  G4double e1, G4double e2, G4double e3, G4double e4, G4double e5)
52  : G4VPhysicsConstructor("hInelasticQGSPCMS_FTFP_BERT") {
53  minFTFP_ = e1;
54  maxBERT_ = e2;
55  minQGSP_ = e3;
56  maxFTFP_ = e4;
57  maxBERTpi_ = e5;
58 }
59 
61 
63  G4MesonConstructor pMesonConstructor;
64  pMesonConstructor.ConstructParticle();
65 
66  G4BaryonConstructor pBaryonConstructor;
67  pBaryonConstructor.ConstructParticle();
68 
69  G4ShortLivedConstructor pShortLivedConstructor;
70  pShortLivedConstructor.ConstructParticle();
71 }
72 
74  G4cout << "### QGSP_FTFP_BERT : transition between BERT and FTFP is over the interval " << minFTFP_ / CLHEP::GeV
75  << " to " << maxBERT_ / CLHEP::GeV << " GeV"
76  << " transition between FTFP and QGSP is over the interval " << minQGSP_ / CLHEP::GeV
77  << " to " << maxFTFP_ / CLHEP::GeV << G4endl;
78 }
79 
81  Neutron();
82  Proton();
83  Pion();
84  Kaon();
85  Others();
86 }
87 
89  //General schema:
90  // 1) Create a builder
91  // 2) Call AddBuilder
92  // 3) Configure the builder, possibly with sub-builders
93  // 4) Call builder->Build()
94  auto neu = new G4NeutronBuilder;
95  AddBuilder(neu);
96  auto qgs = new G4QGSPNeutronBuilder(true);
97  AddBuilder(qgs);
98  qgs->SetMinEnergy(minQGSP_);
99  neu->RegisterMe(qgs);
100  auto ftf = new G4FTFPNeutronBuilder(false);
101  AddBuilder(ftf);
102  ftf->SetMinEnergy(minFTFP_);
103  ftf->SetMaxEnergy(maxFTFP_);
104  neu->RegisterMe(ftf);
105  auto bert = new G4BertiniNeutronBuilder;
106  AddBuilder(bert);
107  bert->SetMinEnergy(0.0);
108  bert->SetMaxEnergy(maxBERT_);
109  neu->RegisterMe(bert);
110  neu->Build();
111 }
112 
114  auto pro = new G4ProtonBuilder;
115  AddBuilder(pro);
116  auto qgs = new G4QGSPProtonBuilder(true);
117  AddBuilder(qgs);
118  qgs->SetMinEnergy(minQGSP_);
119  pro->RegisterMe(qgs);
120  auto ftf = new G4FTFPProtonBuilder(false);
121  AddBuilder(ftf);
122  ftf->SetMinEnergy(minFTFP_);
123  ftf->SetMaxEnergy(maxFTFP_);
124  pro->RegisterMe(ftf);
125  auto bert = new G4BertiniProtonBuilder;
126  AddBuilder(bert);
127  bert->SetMinEnergy(0.0);
128  bert->SetMaxEnergy(maxBERT_);
129  pro->RegisterMe(bert);
130  pro->Build();
131 }
132 
134  auto pi = new G4PionBuilder;
135  AddBuilder(pi);
136  auto qgs = new G4QGSPPionBuilder(true);
137  AddBuilder(qgs);
138  qgs->SetMinEnergy(minQGSP_);
139  pi->RegisterMe(qgs);
140  auto ftf = new G4FTFPPionBuilder(false);
141  AddBuilder(ftf);
142  ftf->SetMinEnergy(minFTFP_);
143  ftf->SetMaxEnergy(maxFTFP_);
144  pi->RegisterMe(ftf);
145  auto bert = new G4BertiniPionBuilder;
146  AddBuilder(bert);
147  bert->SetMinEnergy(0.0);
148  bert->SetMaxEnergy(maxBERTpi_);
149  pi->RegisterMe(bert);
150  pi->Build();
151 }
152 
154  auto k = new G4KaonBuilder;
155  AddBuilder(k);
156  auto qgs = new G4QGSPKaonBuilder(true);
157  AddBuilder(qgs);
158  qgs->SetMinEnergy(minQGSP_);
159  k->RegisterMe(qgs);
160  auto ftf = new G4FTFPKaonBuilder(false);
161  AddBuilder(ftf);
162  k->RegisterMe(ftf);
163  ftf->SetMinEnergy(minFTFP_);
164  ftf->SetMaxEnergy(maxFTFP_);
165  auto bert = new G4BertiniKaonBuilder;
166  AddBuilder(bert);
167  k->RegisterMe(bert);
168  bert->SetMaxEnergy(maxBERT_);
169  bert->SetMinEnergy(0.0);
170  k->Build();
171 }
172 
174  auto hyp = new CMSHyperonFTFPBuilder();
175  AddBuilder(hyp);
176  hyp->Build();
177 
178  auto abar = new G4AntiBarionBuilder();
179  AddBuilder(abar);
180  auto ftf = new G4FTFPAntiBarionBuilder(false);
181  AddBuilder(ftf);
182  abar->RegisterMe(ftf);
183  abar->Build();
184 }
185 
187  if (G4Threading::IsMasterThread()) {
188  DumpBanner();
189  }
190  CreateModels();
192 }
193 
195  const G4ParticleDefinition* neutron = G4Neutron::Neutron();
196  G4HadronicProcess* inel = G4PhysListUtil::FindInelasticProcess(neutron);
197  if (inel) {
198  inel->AddDataSet(new G4NeutronInelasticXS());
199  }
200 
201  G4HadronicProcess* capture = nullptr;
202  G4ProcessVector* pvec = neutron->GetProcessManager()->GetProcessList();
203  size_t n = pvec->size();
204  for (size_t i = 0; i < n; ++i) {
205  if (fCapture == ((*pvec)[i])->GetProcessSubType()) {
206  capture = static_cast<G4HadronicProcess*>((*pvec)[i]);
207  break;
208  }
209  }
210  if (capture) {
211  capture->RegisterMe(new G4NeutronRadCapture());
212  capture->AddDataSet(new G4NeutronCaptureXS());
213  }
214 }
HadronPhysicsQGSPCMS_FTFP_BERT::Kaon
void Kaon()
Definition: HadronPhysicsQGSPCMS_FTFP_BERT.cc:153
mps_fire.i
i
Definition: mps_fire.py:428
dqmiodumpmetadata.n
n
Definition: dqmiodumpmetadata.py:28
HadronPhysicsQGSPCMS_FTFP_BERT::Others
void Others()
Definition: HadronPhysicsQGSPCMS_FTFP_BERT.cc:173
HadronPhysicsQGSPCMS_FTFP_BERT::~HadronPhysicsQGSPCMS_FTFP_BERT
~HadronPhysicsQGSPCMS_FTFP_BERT() override
Definition: HadronPhysicsQGSPCMS_FTFP_BERT.cc:60
CMSHyperonFTFPBuilder.h
HadronPhysicsQGSPCMS_FTFP_BERT::minQGSP_
G4double minQGSP_
Definition: HadronPhysicsQGSPCMS_FTFP_BERT.h:32
HadronPhysicsQGSPCMS_FTFP_BERT::CreateModels
void CreateModels()
Definition: HadronPhysicsQGSPCMS_FTFP_BERT.cc:80
HadronPhysicsQGSPCMS_FTFP_BERT::Neutron
void Neutron()
Definition: HadronPhysicsQGSPCMS_FTFP_BERT.cc:88
HadronPhysicsQGSPCMS_FTFP_BERT.h
HadronPhysicsQGSPCMS_FTFP_BERT::ConstructParticle
void ConstructParticle() override
Definition: HadronPhysicsQGSPCMS_FTFP_BERT.cc:62
HadronPhysicsQGSPCMS_FTFP_BERT::maxFTFP_
G4double maxFTFP_
Definition: HadronPhysicsQGSPCMS_FTFP_BERT.h:33
dqmdumpme.k
k
Definition: dqmdumpme.py:60
HadronPhysicsQGSPCMS_FTFP_BERT::ExtraConfiguration
void ExtraConfiguration()
Definition: HadronPhysicsQGSPCMS_FTFP_BERT.cc:194
ztee.capture
def capture(fd, args)
Definition: ztee.py:94
HadronPhysicsQGSPCMS_FTFP_BERT::Proton
void Proton()
Definition: HadronPhysicsQGSPCMS_FTFP_BERT.cc:113
HadronPhysicsQGSPCMS_FTFP_BERT::ConstructProcess
void ConstructProcess() override
Definition: HadronPhysicsQGSPCMS_FTFP_BERT.cc:186
HadronPhysicsQGSPCMS_FTFP_BERT::maxBERTpi_
G4double maxBERTpi_
Definition: HadronPhysicsQGSPCMS_FTFP_BERT.h:34
HadronPhysicsQGSPCMS_FTFP_BERT::HadronPhysicsQGSPCMS_FTFP_BERT
HadronPhysicsQGSPCMS_FTFP_BERT(G4int verbose)
Definition: HadronPhysicsQGSPCMS_FTFP_BERT.cc:47
HadronPhysicsQGSPCMS_FTFP_BERT::Pion
void Pion()
Definition: HadronPhysicsQGSPCMS_FTFP_BERT.cc:133
GeV
const double GeV
Definition: MathUtil.h:16
StorageManager_cfg.e1
e1
Definition: StorageManager_cfg.py:16
HadronPhysicsQGSPCMS_FTFP_BERT
Definition: HadronPhysicsQGSPCMS_FTFP_BERT.h:9
HadronPhysicsQGSPCMS_FTFP_BERT::DumpBanner
void DumpBanner()
Definition: HadronPhysicsQGSPCMS_FTFP_BERT.cc:73
SiPixelPhase1Clusters_cfi.e3
e3
Definition: SiPixelPhase1Clusters_cfi.py:9
HadronPhysicsQGSPCMS_FTFP_BERT::maxBERT_
G4double maxBERT_
Definition: HadronPhysicsQGSPCMS_FTFP_BERT.h:31
pi
const Double_t pi
Definition: trackSplitPlot.h:36
CMSHyperonFTFPBuilder
Definition: CMSHyperonFTFPBuilder.h:17
ecalTB2006H4_GenSimDigiReco_cfg.G4cout
G4cout
Definition: ecalTB2006H4_GenSimDigiReco_cfg.py:303
vertexPlots.e4
e4
Definition: vertexPlots.py:64
HadronPhysicsQGSPCMS_FTFP_BERT::minFTFP_
G4double minFTFP_
Definition: HadronPhysicsQGSPCMS_FTFP_BERT.h:30