1 #include "SimG4Core/PhysicsLists/interface/CMSFTFPPiKBuilder.hh" 2 #include "G4ParticleDefinition.hh" 3 #include "G4ParticleTable.hh" 4 #include "G4ProcessManager.hh" 5 #include "G4SystemOfUnits.hh" 7 CMSFTFPPiKBuilder::CMSFTFPPiKBuilder(G4bool quasiElastic)
9 thePiData =
new G4PiNuclearCrossSection;
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->SetHighEnergyGenerator(theStringModel);
25 theQuasiElastic=
new G4QuasiElasticChannel;
26 theModel->SetQuasiElasticChannel(theQuasiElastic);
28 { theQuasiElastic=
nullptr;}
30 theModel->SetTransport(theCascade);
31 theModel->SetMinEnergy(theMin);
32 theModel->SetMaxEnergy(100*TeV);
35 CMSFTFPPiKBuilder::~CMSFTFPPiKBuilder()
38 delete theStringDecay;
39 delete theStringModel;
41 if ( theQuasiElastic )
delete theQuasiElastic;
44 void CMSFTFPPiKBuilder::
45 Build(G4HadronElasticProcess * ) {}
47 void CMSFTFPPiKBuilder::
48 Build(G4PionPlusInelasticProcess * aP)
50 theModel->SetMinEnergy(theMin);
51 theModel->SetMaxEnergy(theMax);
52 aP->AddDataSet(thePiData);
53 aP->RegisterMe(theModel);
56 void CMSFTFPPiKBuilder::
57 Build(G4PionMinusInelasticProcess * aP)
59 theModel->SetMinEnergy(theMin);
60 theModel->SetMaxEnergy(theMax);
61 aP->AddDataSet(thePiData);
62 aP->RegisterMe(theModel);
65 void CMSFTFPPiKBuilder::
66 Build(G4KaonPlusInelasticProcess * aP)
68 theModel->SetMinEnergy(theMin);
69 theModel->SetMaxEnergy(theMax);
70 aP->RegisterMe(theModel);
73 void CMSFTFPPiKBuilder::
74 Build(G4KaonMinusInelasticProcess * aP)
76 theModel->SetMinEnergy(theMin);
77 theModel->SetMaxEnergy(theMax);
78 aP->RegisterMe(theModel);
81 void CMSFTFPPiKBuilder::
82 Build(G4KaonZeroLInelasticProcess * aP)
84 theModel->SetMinEnergy(theMin);
85 theModel->SetMaxEnergy(theMax);
86 aP->RegisterMe(theModel);
89 void CMSFTFPPiKBuilder::
90 Build(G4KaonZeroSInelasticProcess * aP)
92 theModel->SetMinEnergy(theMin);
93 theModel->SetMaxEnergy(theMax);
94 aP->RegisterMe(theModel);