#include <G4HyperonFTFPBuilder.hh>
Public Member Functions | |
G4HyperonFTFPBuilder () | |
virtual | ~G4HyperonFTFPBuilder () |
void | Build () |
Definition at line 66 of file G4HyperonFTFPBuilder.hh.
G4HyperonFTFPBuilder::G4HyperonFTFPBuilder | ( | ) |
Definition at line 47 of file G4HyperonFTFPBuilder.cc.
References G4ChipsHyperonInelasticXS::Default_Name(), G4CrossSectionDataSetRegistry::GetCrossSectionDataSet(), G4CrossSectionDataSetRegistry::Instance(), G4VIntraNuclearTransportModel::SetDeExcitation(), G4VPartonStringModel::SetFragmentationModel(), G4TheoFSGenerator::SetHighEnergyGenerator(), G4HadronicInteraction::SetMaxEnergy(), G4HadronicInteraction::SetMinEnergy(), and G4TheoFSGenerator::SetTransport().
00047 : 00048 theLambdaInelastic(0), 00049 theAntiLambdaInelastic(0), 00050 theSigmaMinusInelastic(0), 00051 theAntiSigmaMinusInelastic(0), 00052 theSigmaPlusInelastic(0), 00053 theAntiSigmaPlusInelastic(0), 00054 theXiZeroInelastic(0), 00055 theAntiXiZeroInelastic(0), 00056 theXiMinusInelastic(0), 00057 theAntiXiMinusInelastic(0), 00058 theOmegaMinusInelastic(0), 00059 theAntiOmegaMinusInelastic(0), 00060 wasActivated(false) 00061 { 00062 00063 // Hyperon : Bertini at low energies, then FTFP 00064 00065 HyperonFTFP = new G4TheoFSGenerator("FTFP"); 00066 00067 HyperonFTFP->SetMinEnergy( 2.*GeV ); 00068 HyperonFTFP->SetMaxEnergy( 100.*TeV ); 00069 00070 theStringModel = new G4FTFModel; 00071 theStringDecay = new G4ExcitedStringDecay(theLund = new G4LundStringFragmentation); 00072 theStringModel->SetFragmentationModel(theStringDecay); 00073 00074 theCascade = new G4GeneratorPrecompoundInterface; 00075 thePreEquilib = new G4PreCompoundModel(theHandler = new G4ExcitationHandler); 00076 theCascade->SetDeExcitation(thePreEquilib); 00077 00078 HyperonFTFP->SetTransport(theCascade); 00079 HyperonFTFP->SetHighEnergyGenerator(theStringModel); 00080 00081 theBertini = new G4CascadeInterface; 00082 theBertini->SetMinEnergy( 0.*GeV ); 00083 theBertini->SetMaxEnergy( 6.*GeV ); 00084 00085 // AntiHyperons: Use FTFP for full energy range, starting at 0. 00086 00087 AntiHyperonFTFP = new G4TheoFSGenerator("FTFP"); 00088 AntiHyperonFTFP->SetMinEnergy( 0.*GeV ); 00089 AntiHyperonFTFP->SetMaxEnergy( 100.*TeV ); 00090 AntiHyperonFTFP->SetTransport(theCascade); 00091 AntiHyperonFTFP->SetHighEnergyGenerator(theStringModel); 00092 00093 // use CHIPS cross sections 00094 theCHIPSInelastic = G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsHyperonInelasticXS::Default_Name()); 00095 }
G4HyperonFTFPBuilder::~G4HyperonFTFPBuilder | ( | ) | [virtual] |
Definition at line 98 of file G4HyperonFTFPBuilder.cc.
00099 { 00100 delete HyperonFTFP; 00101 delete theStringModel; 00102 delete theStringDecay; 00103 delete theCascade; 00104 delete thePreEquilib; 00105 // delete theHandler; 00106 delete theBertini; 00107 delete AntiHyperonFTFP; 00108 00109 if (wasActivated) { 00110 delete theLambdaInelastic; 00111 delete theAntiLambdaInelastic; 00112 delete theSigmaMinusInelastic; 00113 delete theAntiSigmaMinusInelastic; 00114 delete theSigmaPlusInelastic; 00115 delete theAntiSigmaPlusInelastic; 00116 delete theXiMinusInelastic; 00117 delete theAntiXiMinusInelastic; 00118 delete theXiZeroInelastic; 00119 delete theAntiXiZeroInelastic; 00120 delete theOmegaMinusInelastic; 00121 delete theAntiOmegaMinusInelastic; 00122 } 00123 }
void G4HyperonFTFPBuilder::Build | ( | ) |
Definition at line 125 of file G4HyperonFTFPBuilder.cc.
References G4HadronicProcess::AddDataSet(), G4ProcessManager::AddDiscreteProcess(), G4AntiLambda::AntiLambda(), G4AntiOmegaMinus::AntiOmegaMinus(), G4AntiSigmaMinus::AntiSigmaMinus(), G4AntiSigmaPlus::AntiSigmaPlus(), G4AntiXiMinus::AntiXiMinus(), G4AntiXiZero::AntiXiZero(), G4ParticleDefinition::GetProcessManager(), G4Lambda::Lambda(), G4OmegaMinus::OmegaMinus(), G4HadronicProcess::RegisterMe(), G4SigmaMinus::SigmaMinus(), G4SigmaPlus::SigmaPlus(), G4XiMinus::XiMinus(), and G4XiZero::XiZero().
Referenced by HadronPhysicsQGSP_FTFP_BERT_95::ConstructProcess(), HadronPhysicsQGSP_FTFP_BERT::ConstructProcess(), HadronPhysicsFTFP_BERT_TRV::ConstructProcess(), HadronPhysicsFTFP_BERT_HP::ConstructProcess(), HadronPhysicsFTFP_BERT::ConstructProcess(), and HadronPhysicsFTF_BIC::ConstructProcess().
00126 { 00127 G4ProcessManager * aProcMan = 0; 00128 wasActivated = true; 00129 00130 // Lambda 00131 theLambdaInelastic = new G4LambdaInelasticProcess(); 00132 theLambdaInelastic->RegisterMe(theBertini); 00133 theLambdaInelastic->RegisterMe(HyperonFTFP); 00134 theLambdaInelastic->AddDataSet(theCHIPSInelastic); 00135 aProcMan = G4Lambda::Lambda()->GetProcessManager(); 00136 aProcMan->AddDiscreteProcess(theLambdaInelastic); 00137 00138 // AntiLambda 00139 theAntiLambdaInelastic = new G4AntiLambdaInelasticProcess(); 00140 theAntiLambdaInelastic->RegisterMe(AntiHyperonFTFP); 00141 theAntiLambdaInelastic->AddDataSet(theCHIPSInelastic); 00142 00143 aProcMan = G4AntiLambda::AntiLambda()->GetProcessManager(); 00144 aProcMan->AddDiscreteProcess(theAntiLambdaInelastic); 00145 00146 // SigmaMinus 00147 theSigmaMinusInelastic = new G4SigmaMinusInelasticProcess(); 00148 theSigmaMinusInelastic->RegisterMe(theBertini); 00149 theSigmaMinusInelastic->RegisterMe(HyperonFTFP); 00150 theSigmaMinusInelastic->AddDataSet(theCHIPSInelastic); 00151 00152 aProcMan = G4SigmaMinus::SigmaMinus()->GetProcessManager(); 00153 aProcMan->AddDiscreteProcess(theSigmaMinusInelastic); 00154 00155 // anti-SigmaMinus 00156 theAntiSigmaMinusInelastic = new G4AntiSigmaMinusInelasticProcess(); 00157 theAntiSigmaMinusInelastic->RegisterMe(AntiHyperonFTFP); 00158 theAntiSigmaMinusInelastic->AddDataSet(theCHIPSInelastic); 00159 00160 aProcMan = G4AntiSigmaMinus::AntiSigmaMinus()->GetProcessManager(); 00161 aProcMan->AddDiscreteProcess(theAntiSigmaMinusInelastic); 00162 00163 // SigmaPlus 00164 theSigmaPlusInelastic = new G4SigmaPlusInelasticProcess(); 00165 theSigmaPlusInelastic->RegisterMe(theBertini); 00166 theSigmaPlusInelastic->RegisterMe(HyperonFTFP); 00167 theSigmaPlusInelastic->AddDataSet(theCHIPSInelastic); 00168 00169 aProcMan = G4SigmaPlus::SigmaPlus()->GetProcessManager(); 00170 aProcMan->AddDiscreteProcess(theSigmaPlusInelastic); 00171 00172 // anti-SigmaPlus 00173 theAntiSigmaPlusInelastic = new G4AntiSigmaPlusInelasticProcess(); 00174 theAntiSigmaPlusInelastic->RegisterMe(AntiHyperonFTFP); 00175 theAntiSigmaPlusInelastic->AddDataSet(theCHIPSInelastic); 00176 00177 aProcMan = G4AntiSigmaPlus::AntiSigmaPlus()->GetProcessManager(); 00178 aProcMan->AddDiscreteProcess(theAntiSigmaPlusInelastic); 00179 00180 // XiMinus 00181 theXiMinusInelastic = new G4XiMinusInelasticProcess(); 00182 theXiMinusInelastic->RegisterMe(theBertini); 00183 theXiMinusInelastic->RegisterMe(HyperonFTFP); 00184 theXiMinusInelastic->AddDataSet(theCHIPSInelastic); 00185 00186 aProcMan = G4XiMinus::XiMinus()->GetProcessManager(); 00187 aProcMan->AddDiscreteProcess(theXiMinusInelastic); 00188 00189 // anti-XiMinus 00190 theAntiXiMinusInelastic = new G4AntiXiMinusInelasticProcess(); 00191 theAntiXiMinusInelastic->RegisterMe(AntiHyperonFTFP); 00192 theAntiXiMinusInelastic->AddDataSet(theCHIPSInelastic); 00193 00194 aProcMan = G4AntiXiMinus::AntiXiMinus()->GetProcessManager(); 00195 aProcMan->AddDiscreteProcess(theAntiXiMinusInelastic); 00196 00197 // XiZero 00198 theXiZeroInelastic = new G4XiZeroInelasticProcess(); 00199 theXiZeroInelastic->RegisterMe(theBertini); 00200 theXiZeroInelastic->RegisterMe(HyperonFTFP); 00201 theXiZeroInelastic->AddDataSet(theCHIPSInelastic); 00202 00203 aProcMan = G4XiZero::XiZero()->GetProcessManager(); 00204 aProcMan->AddDiscreteProcess(theXiZeroInelastic); 00205 00206 // anti-XiZero 00207 theAntiXiZeroInelastic = new G4AntiXiZeroInelasticProcess(); 00208 theAntiXiZeroInelastic->RegisterMe(AntiHyperonFTFP); 00209 theAntiXiZeroInelastic->AddDataSet(theCHIPSInelastic); 00210 00211 aProcMan = G4AntiXiZero::AntiXiZero()->GetProcessManager(); 00212 aProcMan->AddDiscreteProcess(theAntiXiZeroInelastic); 00213 00214 // OmegaMinus 00215 theOmegaMinusInelastic = new G4OmegaMinusInelasticProcess(); 00216 theOmegaMinusInelastic->RegisterMe(theBertini); 00217 theOmegaMinusInelastic->RegisterMe(HyperonFTFP); 00218 theOmegaMinusInelastic->AddDataSet(theCHIPSInelastic); 00219 00220 aProcMan = G4OmegaMinus::OmegaMinus()->GetProcessManager(); 00221 aProcMan->AddDiscreteProcess(theOmegaMinusInelastic); 00222 00223 // anti-OmegaMinus 00224 theAntiOmegaMinusInelastic = new G4AntiOmegaMinusInelasticProcess(); 00225 theAntiOmegaMinusInelastic->RegisterMe(AntiHyperonFTFP); 00226 theAntiOmegaMinusInelastic->AddDataSet(theCHIPSInelastic); 00227 00228 aProcMan = G4AntiOmegaMinus::AntiOmegaMinus()->GetProcessManager(); 00229 aProcMan->AddDiscreteProcess(theAntiOmegaMinusInelastic); 00230 }