CMS 3D CMS Logo

CMSFTFPNeutronBuilder.cc
Go to the documentation of this file.
1 #include "SimG4Core/PhysicsLists/interface/CMSFTFPNeutronBuilder.hh"
2 #include "G4ParticleDefinition.hh"
3 #include "G4ParticleTable.hh"
4 #include "G4ProcessManager.hh"
5 #include "G4NeutronInelasticCrossSection.hh"
6 #include "G4SystemOfUnits.hh"
7 
8 CMSFTFPNeutronBuilder::
9 CMSFTFPNeutronBuilder(G4bool quasiElastic)
10 {
11  theMin = 4*GeV;
12  theMax = 100*TeV;
13  theModel = new G4TheoFSGenerator("FTFP");
14 
15  theStringModel = new G4FTFModel;
16  theStringDecay = new G4ExcitedStringDecay(new G4LundStringFragmentation);
17  theStringModel->SetFragmentationModel(theStringDecay);
18 
19  theCascade = new G4GeneratorPrecompoundInterface;
20  thePreEquilib = new G4PreCompoundModel(new G4ExcitationHandler);
21  theCascade->SetDeExcitation(thePreEquilib);
22 
23  theModel->SetTransport(theCascade);
24 
25  theModel->SetHighEnergyGenerator(theStringModel);
26  if (quasiElastic)
27  {
28  theQuasiElastic=new G4QuasiElasticChannel;
29  theModel->SetQuasiElasticChannel(theQuasiElastic);
30  } else
31  { theQuasiElastic=0;}
32 
33  theModel->SetMinEnergy(theMin);
34  theModel->SetMaxEnergy(100*TeV);
35 }
36 
37 CMSFTFPNeutronBuilder::
38 ~CMSFTFPNeutronBuilder()
39 {
40  delete theStringDecay;
41  delete theStringModel;
42  delete thePreEquilib;
43  delete theCascade;
44  if ( theQuasiElastic ) delete theQuasiElastic;
45 }
46 
47 void CMSFTFPNeutronBuilder::
48 Build(G4HadronElasticProcess * )
49 {
50 }
51 
52 void CMSFTFPNeutronBuilder::
53 Build(G4HadronFissionProcess * )
54 {
55 }
56 
57 void CMSFTFPNeutronBuilder::
58 Build(G4HadronCaptureProcess * )
59 {
60 }
61 
62 void CMSFTFPNeutronBuilder::
63 Build(G4NeutronInelasticProcess * aP)
64 {
65  theModel->SetMinEnergy(theMin);
66  theModel->SetMaxEnergy(theMax);
67  aP->RegisterMe(theModel);
68  aP->AddDataSet(new G4NeutronInelasticCrossSection);
69 }
const double GeV
Definition: MathUtil.h:16