Geant4  10.03.p03
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ExExChHyperonFTFPBuilder Class Reference

#include <ExExChHyperonFTFPBuilder.hh>

Public Member Functions

 ExExChHyperonFTFPBuilder ()
 
virtual ~ExExChHyperonFTFPBuilder ()
 
void Build ()
 

Detailed Description

Definition at line 58 of file ExExChHyperonFTFPBuilder.hh.

Constructor & Destructor Documentation

ExExChHyperonFTFPBuilder::ExExChHyperonFTFPBuilder ( )

Definition at line 41 of file ExExChHyperonFTFPBuilder.cc.

41  :
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 
61  HyperonFTFP->SetMinEnergy( 2.*GeV );
62  HyperonFTFP->SetMaxEnergy( 100.*TeV );
63 
64  theStringModel = new G4FTFModel;
65  theLund = new G4LundStringFragmentation;
66  theStringDecay = new G4ExcitedStringDecay(theLund);
67  theStringModel->SetFragmentationModel(theStringDecay);
68 
69  theCascade = new G4GeneratorPrecompoundInterface;
70 
71  theHandler =new G4ExcitationHandler;
72  thePreEquilib = new G4PreCompoundModel(theHandler);
73  theCascade->SetDeExcitation(thePreEquilib);
74 
75  HyperonFTFP->SetTransport(theCascade);
76  HyperonFTFP->SetHighEnergyGenerator(theStringModel);
77 
78  theBertini = new G4CascadeInterface;
79  theBertini->SetMinEnergy( 0.*GeV );
80  theBertini->SetMaxEnergy( 6.*GeV );
81 
82  // AntiHyperons: Use FTFP for full energy range, starting at 0.
83 
84  AntiHyperonFTFP = new G4TheoFSGenerator("FTFP");
85  AntiHyperonFTFP->SetMinEnergy( 0.*GeV );
86  AntiHyperonFTFP->SetMaxEnergy( 100.*TeV );
87  AntiHyperonFTFP->SetTransport(theCascade);
88  AntiHyperonFTFP->SetHighEnergyGenerator(theStringModel);
89 
90  // use CHIPS cross sections
91  theCHIPSInelastic = G4CrossSectionDataSetRegistry::
94 }
G4VCrossSectionDataSet * GetCrossSectionDataSet(const G4String &name, G4bool warning=true)
void SetFragmentationModel(G4VStringFragmentation *aModel)
void SetHighEnergyGenerator(G4VHighEnergyGenerator *const value)
static constexpr double TeV
Definition: G4SIunits.hh:218
void SetMinEnergy(G4double anEnergy)
static G4CrossSectionDataSetRegistry * Instance()
static constexpr double GeV
Definition: G4SIunits.hh:217
void SetMaxEnergy(const G4double anEnergy)
void SetDeExcitation(G4VPreCompoundModel *ptr)
void SetTransport(G4VIntraNuclearTransportModel *const value)

Here is the call graph for this function:

ExExChHyperonFTFPBuilder::~ExExChHyperonFTFPBuilder ( )
virtual

Definition at line 98 of file ExExChHyperonFTFPBuilder.cc.

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;
113  delete theAntiSigmaMinusInelastic;
114  delete theSigmaPlusInelastic;
115  delete theAntiSigmaPlusInelastic;
116  delete theXiMinusInelastic;
117  delete theAntiXiMinusInelastic;
118  delete theXiZeroInelastic;
119  delete theAntiXiZeroInelastic;
120  delete theOmegaMinusInelastic;
121  delete theAntiOmegaMinusInelastic;
122  }
123 }

Member Function Documentation

void ExExChHyperonFTFPBuilder::Build ( void  )

Definition at line 127 of file ExExChHyperonFTFPBuilder.cc.

128 {
129  G4ProcessManager * aProcMan = 0;
130  wasActivated = true;
131 
132  // Lambda
133  theLambdaInelastic = new G4LambdaInelasticProcess();
134  theLambdaInelastic->RegisterMe(theBertini);
135  theLambdaInelastic->RegisterMe(HyperonFTFP);
136  theLambdaInelastic->AddDataSet(theCHIPSInelastic);
137  aProcMan = G4Lambda::Lambda()->GetProcessManager();
138  aProcMan->AddDiscreteProcess(theLambdaInelastic);
139 
140  // AntiLambda
141  theAntiLambdaInelastic = new G4AntiLambdaInelasticProcess();
142  theAntiLambdaInelastic->RegisterMe(AntiHyperonFTFP);
143  theAntiLambdaInelastic->AddDataSet(theCHIPSInelastic);
144 
146  aProcMan->AddDiscreteProcess(theAntiLambdaInelastic);
147 
148  // SigmaMinus
149  theSigmaMinusInelastic = new G4SigmaMinusInelasticProcess();
150  theSigmaMinusInelastic->RegisterMe(theBertini);
151  theSigmaMinusInelastic->RegisterMe(HyperonFTFP);
152  theSigmaMinusInelastic->AddDataSet(theCHIPSInelastic);
153 
155  XWrapperDiscreteProcess* theSigmaMinusInelastic_w =
157  theSigmaMinusInelastic_w->RegisterProcess(theSigmaMinusInelastic,1);
158  aProcMan->AddDiscreteProcess(theSigmaMinusInelastic_w);
159 
160  // anti-SigmaMinus
161  theAntiSigmaMinusInelastic = new G4AntiSigmaMinusInelasticProcess();
162  theAntiSigmaMinusInelastic->RegisterMe(AntiHyperonFTFP);
163  theAntiSigmaMinusInelastic->AddDataSet(theCHIPSInelastic);
164 
166  XWrapperDiscreteProcess* theAntiSigmaMinusInelastic_w =
168  theAntiSigmaMinusInelastic_w->RegisterProcess(theAntiSigmaMinusInelastic,1);
169  aProcMan->AddDiscreteProcess(theAntiSigmaMinusInelastic_w);
170 
171  // SigmaPlus
172  theSigmaPlusInelastic = new G4SigmaPlusInelasticProcess();
173  theSigmaPlusInelastic->RegisterMe(theBertini);
174  theSigmaPlusInelastic->RegisterMe(HyperonFTFP);
175  theSigmaPlusInelastic->AddDataSet(theCHIPSInelastic);
176 
178  XWrapperDiscreteProcess* theSigmaPlusInelastic_w =
180  theSigmaPlusInelastic_w->RegisterProcess(theSigmaPlusInelastic,1);
181  aProcMan->AddDiscreteProcess(theSigmaPlusInelastic_w);
182 
183  // anti-SigmaPlus
184  theAntiSigmaPlusInelastic = new G4AntiSigmaPlusInelasticProcess();
185  theAntiSigmaPlusInelastic->RegisterMe(AntiHyperonFTFP);
186  theAntiSigmaPlusInelastic->AddDataSet(theCHIPSInelastic);
187 
189  XWrapperDiscreteProcess* theAntiSigmaPlusInelastic_w =
191  theAntiSigmaPlusInelastic_w->RegisterProcess(theAntiSigmaPlusInelastic,1);
192  aProcMan->AddDiscreteProcess(theAntiSigmaPlusInelastic_w);
193 
194  // XiMinus
195  theXiMinusInelastic = new G4XiMinusInelasticProcess();
196  theXiMinusInelastic->RegisterMe(theBertini);
197  theXiMinusInelastic->RegisterMe(HyperonFTFP);
198  theXiMinusInelastic->AddDataSet(theCHIPSInelastic);
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
207  theAntiXiMinusInelastic = new G4AntiXiMinusInelasticProcess();
208  theAntiXiMinusInelastic->RegisterMe(AntiHyperonFTFP);
209  theAntiXiMinusInelastic->AddDataSet(theCHIPSInelastic);
210 
212  XWrapperDiscreteProcess* theAntiXiMinusInelastic_w =
214  theAntiXiMinusInelastic_w->RegisterProcess(theAntiXiMinusInelastic,1);
215  aProcMan->AddDiscreteProcess(theAntiXiMinusInelastic_w);
216 
217  // XiZero
218  theXiZeroInelastic = new G4XiZeroInelasticProcess();
219  theXiZeroInelastic->RegisterMe(theBertini);
220  theXiZeroInelastic->RegisterMe(HyperonFTFP);
221  theXiZeroInelastic->AddDataSet(theCHIPSInelastic);
222 
223  aProcMan = G4XiZero::XiZero()->GetProcessManager();
224  aProcMan->AddDiscreteProcess(theXiZeroInelastic);
225 
226  // anti-XiZero
227  theAntiXiZeroInelastic = new G4AntiXiZeroInelasticProcess();
228  theAntiXiZeroInelastic->RegisterMe(AntiHyperonFTFP);
229  theAntiXiZeroInelastic->AddDataSet(theCHIPSInelastic);
230 
232  aProcMan->AddDiscreteProcess(theAntiXiZeroInelastic);
233 
234  // OmegaMinus
235  theOmegaMinusInelastic = new G4OmegaMinusInelasticProcess();
236  theOmegaMinusInelastic->RegisterMe(theBertini);
237  theOmegaMinusInelastic->RegisterMe(HyperonFTFP);
238  theOmegaMinusInelastic->AddDataSet(theCHIPSInelastic);
239 
241  XWrapperDiscreteProcess* theOmegaMinusInelastic_w =
243  theOmegaMinusInelastic_w->RegisterProcess(theOmegaMinusInelastic,1);
244  aProcMan->AddDiscreteProcess(theOmegaMinusInelastic_w);
245 
246  // anti-OmegaMinus
247  theAntiOmegaMinusInelastic = new G4AntiOmegaMinusInelasticProcess();
248  theAntiOmegaMinusInelastic->RegisterMe(AntiHyperonFTFP);
249  theAntiOmegaMinusInelastic->AddDataSet(theCHIPSInelastic);
250 
252  XWrapperDiscreteProcess* theAntiOmegaMinusInelastic_w =
254  theAntiOmegaMinusInelastic_w->RegisterProcess(theAntiOmegaMinusInelastic,1);
255  aProcMan->AddDiscreteProcess(theAntiOmegaMinusInelastic_w);
256 }
static G4AntiOmegaMinus * AntiOmegaMinus()
static G4OmegaMinus * OmegaMinus()
G4int AddDiscreteProcess(G4VProcess *aProcess, G4int ord=ordDefault)
static G4AntiSigmaPlus * AntiSigmaPlus()
void RegisterMe(G4HadronicInteraction *a)
static G4AntiSigmaMinus * AntiSigmaMinus()
static G4XiZero * XiZero()
Definition: G4XiZero.cc:106
void AddDataSet(G4VCrossSectionDataSet *aDataSet)
static G4XiMinus * XiMinus()
Definition: G4XiMinus.cc:106
static G4AntiXiMinus * AntiXiMinus()
static G4SigmaMinus * SigmaMinus()
static G4AntiLambda * AntiLambda()
G4ProcessManager * GetProcessManager() const
static G4AntiXiZero * AntiXiZero()
void RegisterProcess(G4VDiscreteProcess *)
static G4SigmaPlus * SigmaPlus()
Definition: G4SigmaPlus.cc:108
static G4Lambda * Lambda()
Definition: G4Lambda.cc:108

Here is the call graph for this function:


The documentation for this class was generated from the following files: