Geant4  10.01.p02
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 //
26 
28 
29 #include "G4SystemOfUnits.hh"
30 #include "G4ParticleDefinition.hh"
31 #include "G4ParticleTable.hh"
32 #include "G4ProcessManager.hh"
34 
35 // Wrapper
37 
39 theLambdaInelastic(0),
40 theAntiLambdaInelastic(0),
41 theSigmaMinusInelastic(0),
42 theAntiSigmaMinusInelastic(0),
43 theSigmaPlusInelastic(0),
44 theAntiSigmaPlusInelastic(0),
45 theXiZeroInelastic(0),
46 theAntiXiZeroInelastic(0),
47 theXiMinusInelastic(0),
48 theAntiXiMinusInelastic(0),
49 theOmegaMinusInelastic(0),
50 theAntiOmegaMinusInelastic(0),
51 wasActivated(false)
52 {
53 
54  // Hyperon : Bertini at low energies, then FTFP
55 
56  HyperonFTFP = new G4TheoFSGenerator("FTFP");
57 
59  HyperonFTFP->SetMaxEnergy( 100.*TeV );
60 
65 
67 
71 
74 
78 
79  // AntiHyperons: Use FTFP for full energy range, starting at 0.
80 
81  AntiHyperonFTFP = new G4TheoFSGenerator("FTFP");
86 
87  // use CHIPS cross sections
91 }
92 
93 
95 {
96  delete HyperonFTFP;
97  delete theStringModel;
98  delete theStringDecay;
99  delete theCascade;
100  delete thePreEquilib;
101  // delete theHandler;
102  delete theBertini;
103  delete AntiHyperonFTFP;
104 
105  if (wasActivated) {
106  delete theLambdaInelastic;
107  delete theAntiLambdaInelastic;
108  delete theSigmaMinusInelastic;
110  delete theSigmaPlusInelastic;
112  delete theXiMinusInelastic;
114  delete theXiZeroInelastic;
115  delete theAntiXiZeroInelastic;
116  delete theOmegaMinusInelastic;
118  }
119 }
120 
122 {
123  G4ProcessManager * aProcMan = 0;
124  wasActivated = true;
125 
126  // Lambda
131  aProcMan = G4Lambda::Lambda()->GetProcessManager();
133 
134  // AntiLambda
138 
141 
142  // SigmaMinus
147 
149  XWrapperDiscreteProcess* theSigmaMinusInelastic_w =
151  theSigmaMinusInelastic_w->RegisterProcess(theSigmaMinusInelastic,1);
152  aProcMan->AddDiscreteProcess(theSigmaMinusInelastic_w);
153 
154  // anti-SigmaMinus
158 
160  XWrapperDiscreteProcess* theAntiSigmaMinusInelastic_w =
162  theAntiSigmaMinusInelastic_w->RegisterProcess(theAntiSigmaMinusInelastic,1);
163  aProcMan->AddDiscreteProcess(theAntiSigmaMinusInelastic_w);
164 
165  // SigmaPlus
170 
172  XWrapperDiscreteProcess* theSigmaPlusInelastic_w =
174  theSigmaPlusInelastic_w->RegisterProcess(theSigmaPlusInelastic,1);
175  aProcMan->AddDiscreteProcess(theSigmaPlusInelastic_w);
176 
177  // anti-SigmaPlus
181 
183  XWrapperDiscreteProcess* theAntiSigmaPlusInelastic_w =
185  theAntiSigmaPlusInelastic_w->RegisterProcess(theAntiSigmaPlusInelastic,1);
186  aProcMan->AddDiscreteProcess(theAntiSigmaPlusInelastic_w);
187 
188  // XiMinus
193 
194  aProcMan = G4XiMinus::XiMinus()->GetProcessManager();
195  XWrapperDiscreteProcess* theXiMinusInelastic_w =
197  theXiMinusInelastic_w->RegisterProcess(theXiMinusInelastic,1);
198  aProcMan->AddDiscreteProcess(theXiMinusInelastic_w);
199 
200  // anti-XiMinus
204 
206  XWrapperDiscreteProcess* theAntiXiMinusInelastic_w =
208  theAntiXiMinusInelastic_w->RegisterProcess(theAntiXiMinusInelastic,1);
209  aProcMan->AddDiscreteProcess(theAntiXiMinusInelastic_w);
210 
211  // XiZero
216 
217  aProcMan = G4XiZero::XiZero()->GetProcessManager();
219 
220  // anti-XiZero
224 
227 
228  // OmegaMinus
233 
235  XWrapperDiscreteProcess* theOmegaMinusInelastic_w =
237  theOmegaMinusInelastic_w->RegisterProcess(theOmegaMinusInelastic,1);
238  aProcMan->AddDiscreteProcess(theOmegaMinusInelastic_w);
239 
240  // anti-OmegaMinus
244 
246  XWrapperDiscreteProcess* theAntiOmegaMinusInelastic_w =
248  theAntiOmegaMinusInelastic_w->RegisterProcess(theAntiOmegaMinusInelastic,1);
249  aProcMan->AddDiscreteProcess(theAntiOmegaMinusInelastic_w);
250 }
251 
252 
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
G4ProcessManager * GetProcessManager() const
void SetHighEnergyGenerator(G4VHighEnergyGenerator *const value)
void RegisterMe(G4HadronicInteraction *a)
G4ExcitedStringDecay * theStringDecay
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()
static const double GeV
Definition: G4SIunits.hh:196
G4LundStringFragmentation * theLund
G4ExcitationHandler * theHandler
static G4SigmaMinus * SigmaMinus()
G4PreCompoundModel * thePreEquilib
G4GeneratorPrecompoundInterface * theCascade
static G4AntiLambda * AntiLambda()
G4OmegaMinusInelasticProcess * theOmegaMinusInelastic
void SetMaxEnergy(const G4double anEnergy)
void SetDeExcitation(G4VPreCompoundModel *ptr)
static G4AntiXiZero * AntiXiZero()
void SetTransport(G4VIntraNuclearTransportModel *const value)
static const double TeV
Definition: G4SIunits.hh:197
void RegisterProcess(G4VDiscreteProcess *)
static G4SigmaPlus * SigmaPlus()
Definition: G4SigmaPlus.cc:108
static G4Lambda * Lambda()
Definition: G4Lambda.cc:108
G4AntiXiMinusInelasticProcess * theAntiXiMinusInelastic
G4AntiSigmaPlusInelasticProcess * theAntiSigmaPlusInelastic