Geant4  10.03
ExExChHyperonFTFPBuilder.cc
Go to the documentation of this file.
1 //
2 // ********************************************************************
3 // * License and Disclaimer *
4 // * *
5 // * The Geant4 software is copyright of the Copyright Holders of *
6 // * the Geant4 Collaboration. It is provided under the terms and *
7 // * conditions of the Geant4 Software License, included in the file *
8 // * LICENSE and available at http://cern.ch/geant4/license . These *
9 // * include a list of copyright holders. *
10 // * *
11 // * Neither the authors of this software system, nor their employing *
12 // * institutes,nor the agencies providing financial support for this *
13 // * work make any representation or warranty, express or implied, *
14 // * regarding this software system or assume any liability for its *
15 // * use. Please see the license in the file LICENSE and URL above *
16 // * for the full disclaimer and the limitation of liability. *
17 // * *
18 // * This code implementation is the result of the scientific and *
19 // * technical work of the GEANT4 collaboration. *
20 // * By using, copying, modifying or distributing the software (or *
21 // * any work based on the software) you agree to acknowledge its *
22 // * use in resulting scientific publications, and indicate your *
23 // * acceptance of all terms of the Geant4 Software license. *
24 // ********************************************************************
25 //
28 //
29 
31 
32 #include "G4SystemOfUnits.hh"
33 #include "G4ParticleDefinition.hh"
34 #include "G4ParticleTable.hh"
35 #include "G4ProcessManager.hh"
37 
38 // Wrapper
40 
42 theLambdaInelastic(0),
43 theAntiLambdaInelastic(0),
44 theSigmaMinusInelastic(0),
45 theAntiSigmaMinusInelastic(0),
46 theSigmaPlusInelastic(0),
47 theAntiSigmaPlusInelastic(0),
48 theXiZeroInelastic(0),
49 theAntiXiZeroInelastic(0),
50 theXiMinusInelastic(0),
51 theAntiXiMinusInelastic(0),
52 theOmegaMinusInelastic(0),
53 theAntiOmegaMinusInelastic(0),
54 wasActivated(false)
55 {
56 
57  // Hyperon : Bertini at low energies, then FTFP
58 
59  HyperonFTFP = new G4TheoFSGenerator("FTFP");
60 
62  HyperonFTFP->SetMaxEnergy( 100.*TeV );
63 
68 
70 
74 
77 
81 
82  // AntiHyperons: Use FTFP for full energy range, starting at 0.
83 
84  AntiHyperonFTFP = new G4TheoFSGenerator("FTFP");
89 
90  // use CHIPS cross sections
94 }
95 
96 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
97 
99 {
100  delete HyperonFTFP;
101  delete theStringModel;
102  delete theStringDecay;
103  delete theCascade;
104  delete thePreEquilib;
105  // delete theHandler;
106  delete theBertini;
107  delete AntiHyperonFTFP;
108 
109  if (wasActivated) {
110  delete theLambdaInelastic;
111  delete theAntiLambdaInelastic;
112  delete theSigmaMinusInelastic;
114  delete theSigmaPlusInelastic;
116  delete theXiMinusInelastic;
118  delete theXiZeroInelastic;
119  delete theAntiXiZeroInelastic;
120  delete theOmegaMinusInelastic;
122  }
123 }
124 
125 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
126 
128 {
129  G4ProcessManager * aProcMan = 0;
130  wasActivated = true;
131 
132  // Lambda
137  aProcMan = G4Lambda::Lambda()->GetProcessManager();
139 
140  // AntiLambda
144 
147 
148  // SigmaMinus
153 
155  XWrapperDiscreteProcess* theSigmaMinusInelastic_w =
157  theSigmaMinusInelastic_w->RegisterProcess(theSigmaMinusInelastic,1);
158  aProcMan->AddDiscreteProcess(theSigmaMinusInelastic_w);
159 
160  // anti-SigmaMinus
164 
166  XWrapperDiscreteProcess* theAntiSigmaMinusInelastic_w =
168  theAntiSigmaMinusInelastic_w->RegisterProcess(theAntiSigmaMinusInelastic,1);
169  aProcMan->AddDiscreteProcess(theAntiSigmaMinusInelastic_w);
170 
171  // SigmaPlus
176 
178  XWrapperDiscreteProcess* theSigmaPlusInelastic_w =
180  theSigmaPlusInelastic_w->RegisterProcess(theSigmaPlusInelastic,1);
181  aProcMan->AddDiscreteProcess(theSigmaPlusInelastic_w);
182 
183  // anti-SigmaPlus
187 
189  XWrapperDiscreteProcess* theAntiSigmaPlusInelastic_w =
191  theAntiSigmaPlusInelastic_w->RegisterProcess(theAntiSigmaPlusInelastic,1);
192  aProcMan->AddDiscreteProcess(theAntiSigmaPlusInelastic_w);
193 
194  // XiMinus
199 
200  aProcMan = G4XiMinus::XiMinus()->GetProcessManager();
201  XWrapperDiscreteProcess* theXiMinusInelastic_w =
203  theXiMinusInelastic_w->RegisterProcess(theXiMinusInelastic,1);
204  aProcMan->AddDiscreteProcess(theXiMinusInelastic_w);
205 
206  // anti-XiMinus
210 
212  XWrapperDiscreteProcess* theAntiXiMinusInelastic_w =
214  theAntiXiMinusInelastic_w->RegisterProcess(theAntiXiMinusInelastic,1);
215  aProcMan->AddDiscreteProcess(theAntiXiMinusInelastic_w);
216 
217  // XiZero
222 
223  aProcMan = G4XiZero::XiZero()->GetProcessManager();
225 
226  // anti-XiZero
230 
233 
234  // OmegaMinus
239 
241  XWrapperDiscreteProcess* theOmegaMinusInelastic_w =
243  theOmegaMinusInelastic_w->RegisterProcess(theOmegaMinusInelastic,1);
244  aProcMan->AddDiscreteProcess(theOmegaMinusInelastic_w);
245 
246  // anti-OmegaMinus
250 
252  XWrapperDiscreteProcess* theAntiOmegaMinusInelastic_w =
254  theAntiOmegaMinusInelastic_w->RegisterProcess(theAntiOmegaMinusInelastic,1);
255  aProcMan->AddDiscreteProcess(theAntiOmegaMinusInelastic_w);
256 }
257 
258 
G4VCrossSectionDataSet * GetCrossSectionDataSet(const G4String &name, G4bool warning=true)
G4AntiSigmaMinusInelasticProcess * theAntiSigmaMinusInelastic
G4AntiOmegaMinusInelasticProcess * theAntiOmegaMinusInelastic
static G4AntiOmegaMinus * AntiOmegaMinus()
G4SigmaPlusInelasticProcess * theSigmaPlusInelastic
void SetFragmentationModel(G4VStringFragmentation *aModel)
static G4OmegaMinus * OmegaMinus()
G4SigmaMinusInelasticProcess * theSigmaMinusInelastic
G4int AddDiscreteProcess(G4VProcess *aProcess, G4int ord=ordDefault)
G4XiMinusInelasticProcess * theXiMinusInelastic
G4VCrossSectionDataSet * theCHIPSInelastic
G4XiZeroInelasticProcess * theXiZeroInelastic
static G4AntiSigmaPlus * AntiSigmaPlus()
G4AntiLambdaInelasticProcess * theAntiLambdaInelastic
void SetHighEnergyGenerator(G4VHighEnergyGenerator *const value)
void RegisterMe(G4HadronicInteraction *a)
G4ExcitedStringDecay * theStringDecay
static constexpr double TeV
Definition: G4SIunits.hh:218
static G4AntiSigmaMinus * AntiSigmaMinus()
static G4XiZero * XiZero()
Definition: G4XiZero.cc:106
void SetMinEnergy(G4double anEnergy)
G4LambdaInelasticProcess * theLambdaInelastic
void AddDataSet(G4VCrossSectionDataSet *aDataSet)
G4AntiXiZeroInelasticProcess * theAntiXiZeroInelastic
static G4XiMinus * XiMinus()
Definition: G4XiMinus.cc:106
static G4AntiXiMinus * AntiXiMinus()
static G4CrossSectionDataSetRegistry * Instance()
G4LundStringFragmentation * theLund
G4ExcitationHandler * theHandler
static G4SigmaMinus * SigmaMinus()
G4PreCompoundModel * thePreEquilib
Definition of the XWrapperDiscreteProcess class.
G4GeneratorPrecompoundInterface * theCascade
static G4AntiLambda * AntiLambda()
G4ProcessManager * GetProcessManager() const
G4OmegaMinusInelasticProcess * theOmegaMinusInelastic
static constexpr double GeV
Definition: G4SIunits.hh:217
void SetMaxEnergy(const G4double anEnergy)
void SetDeExcitation(G4VPreCompoundModel *ptr)
static G4AntiXiZero * AntiXiZero()
void SetTransport(G4VIntraNuclearTransportModel *const value)
void RegisterProcess(G4VDiscreteProcess *)
static G4SigmaPlus * SigmaPlus()
Definition: G4SigmaPlus.cc:108
static G4Lambda * Lambda()
Definition: G4Lambda.cc:108
G4AntiXiMinusInelasticProcess * theAntiXiMinusInelastic
Definition of the ExExChHyperonFTFPBuilder class.
G4AntiSigmaPlusInelasticProcess * theAntiSigmaPlusInelastic