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::
9 CMSFTFPNeutronBuilder(G4bool quasiElastic)
13 theModel =
new G4TheoFSGenerator(
"FTFP");
15 theStringModel =
new G4FTFModel;
16 theStringDecay =
new G4ExcitedStringDecay(
new G4LundStringFragmentation);
17 theStringModel->SetFragmentationModel(theStringDecay);
19 theCascade =
new G4GeneratorPrecompoundInterface;
20 thePreEquilib =
new G4PreCompoundModel(
new G4ExcitationHandler);
21 theCascade->SetDeExcitation(thePreEquilib);
23 theModel->SetTransport(theCascade);
25 theModel->SetHighEnergyGenerator(theStringModel);
28 theQuasiElastic=
new G4QuasiElasticChannel;
29 theModel->SetQuasiElasticChannel(theQuasiElastic);
33 theModel->SetMinEnergy(theMin);
34 theModel->SetMaxEnergy(100*TeV);
37 CMSFTFPNeutronBuilder::
38 ~CMSFTFPNeutronBuilder()
40 delete theStringDecay;
41 delete theStringModel;
44 if ( theQuasiElastic )
delete theQuasiElastic;
47 void CMSFTFPNeutronBuilder::
48 Build(G4HadronElasticProcess * )
52 void CMSFTFPNeutronBuilder::
53 Build(G4HadronFissionProcess * )
57 void CMSFTFPNeutronBuilder::
58 Build(G4HadronCaptureProcess * )
62 void CMSFTFPNeutronBuilder::
63 Build(G4NeutronInelasticProcess * aP)
65 theModel->SetMinEnergy(theMin);
66 theModel->SetMaxEnergy(theMax);
67 aP->RegisterMe(theModel);
68 aP->AddDataSet(
new G4NeutronInelasticCrossSection);