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" 8 CMSFTFPNeutronBuilder::CMSFTFPNeutronBuilder(G4bool quasiElastic)
12 theModel =
new G4TheoFSGenerator(
"FTFP");
14 theStringModel =
new G4FTFModel;
15 theStringDecay =
new G4ExcitedStringDecay(
new G4LundStringFragmentation);
16 theStringModel->SetFragmentationModel(theStringDecay);
18 theCascade =
new G4GeneratorPrecompoundInterface;
19 thePreEquilib =
new G4PreCompoundModel(
new G4ExcitationHandler);
20 theCascade->SetDeExcitation(thePreEquilib);
22 theModel->SetTransport(theCascade);
24 theModel->SetHighEnergyGenerator(theStringModel);
27 theQuasiElastic=
new G4QuasiElasticChannel;
28 theModel->SetQuasiElasticChannel(theQuasiElastic);
30 { theQuasiElastic=
nullptr;}
32 theModel->SetMinEnergy(theMin);
33 theModel->SetMaxEnergy(100*TeV);
36 CMSFTFPNeutronBuilder::
37 ~CMSFTFPNeutronBuilder()
39 delete theStringDecay;
40 delete theStringModel;
43 if ( theQuasiElastic )
delete theQuasiElastic;
46 void CMSFTFPNeutronBuilder::
47 Build(G4HadronElasticProcess * )
51 void CMSFTFPNeutronBuilder::
52 Build(G4HadronFissionProcess * )
56 void CMSFTFPNeutronBuilder::
57 Build(G4HadronCaptureProcess * )
61 void CMSFTFPNeutronBuilder::
62 Build(G4NeutronInelasticProcess * aP)
64 theModel->SetMinEnergy(theMin);
65 theModel->SetMaxEnergy(theMax);
66 aP->RegisterMe(theModel);
67 aP->AddDataSet(
new G4NeutronInelasticCrossSection);