Geant4  10.03.p03
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
CexmcChargeExchangeReconstructor.hh
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 /*
27  * =============================================================================
28  *
29  * Filename: CexmcChargeExchangeReconstructor.hh
30  *
31  * Description: charge exchange reconstructor
32  *
33  * Version: 1.0
34  * Created: 02.12.2009 15:07:16
35  * Revision: none
36  * Compiler: gcc
37  *
38  * Author: Alexey Radkov (),
39  * Company: PNPI
40  *
41  * =============================================================================
42  */
43 
44 #ifndef CEXMC_CHARGE_EXCHANGE_RECONSTRUCTOR_HH
45 #define CEXMC_CHARGE_EXCHANGE_RECONSTRUCTOR_HH
46 
47 #include "CexmcReconstructor.hh"
49 #include "CexmcCommon.hh"
50 
54 class CexmcParticleGun;
55 
56 
58 {
59  public:
61  const CexmcProductionModel * productionModel );
62 
64 
65  public:
66  void Reconstruct( const CexmcEnergyDepositStore * edStore );
67 
68  public:
69  G4double GetOutputParticleMass( void ) const;
70 
72 
74 
75  void UseTableMass( G4bool on );
76 
77  void UseMassCut( G4bool on );
78 
80 
81  void SetMassCutNOPCenter( G4double value );
82 
83  void SetMassCutOPWidth( G4double value );
84 
85  void SetMassCutNOPWidth( G4double value );
86 
87  void SetMassCutEllipseAngle( G4double value );
88 
89  void UseAbsorbedEnergyCut( G4bool on );
90 
92 
94 
96 
98 
100 
102 
104 
106 
107  void SetupBeamParticle( void );
108 
109  G4bool IsTableMassUsed( void ) const;
110 
111  G4bool IsMassCutUsed( void ) const;
112 
113  G4double GetMassCutOPCenter( void ) const;
114 
115  G4double GetMassCutNOPCenter( void ) const;
116 
117  G4double GetMassCutOPWidth( void ) const;
118 
119  G4double GetMassCutNOPWidth( void ) const;
120 
121  G4double GetMassCutEllipseAngle( void ) const;
122 
123  G4bool HasMassCutTriggered( void ) const;
124 
125  G4bool IsAbsorbedEnergyCutUsed( void ) const;
126 
128 
130 
132 
134 
136 
137  G4double GetExpectedMomentumAmp( void ) const;
138 
140 
142 
143  G4bool HasFullTrigger( void ) const;
144 
145  private:
146  G4double outputParticleMass;
147 
148  G4double nucleusOutputParticleMass;
149 
150  private:
151  CexmcProductionModelData productionModelData;
152 
153  private:
154  G4bool useTableMass;
155 
156  G4bool useMassCut;
157 
158  G4double massCutOPCenter;
159 
160  G4double massCutNOPCenter;
161 
162  G4double massCutOPWidth;
163 
164  G4double massCutNOPWidth;
165 
166  G4double massCutEllipseAngle;
167 
168  G4bool useAbsorbedEnergyCut;
169 
170  G4double absorbedEnergyCutCLCenter;
171 
172  G4double absorbedEnergyCutCRCenter;
173 
174  G4double absorbedEnergyCutCLWidth;
175 
176  G4double absorbedEnergyCutCRWidth;
177 
178  G4double absorbedEnergyCutEllipseAngle;
179 
180  G4double expectedMomentumAmp;
181 
182  CexmcEDCollectionAlgoritm edCollectionAlgorithm;
183 
184  private:
185  G4bool hasMassCutTriggered;
186 
187  G4bool hasAbsorbedEnergyCutTriggered;
188 
189  private:
190  G4bool beamParticleIsInitialized;
191 
192  CexmcParticleGun * particleGun;
193 
195 };
196 
197 
199  void ) const
200 {
201  return outputParticleMass;
202 }
203 
204 
206  void ) const
207 {
208  return nucleusOutputParticleMass;
209 }
210 
211 
212 inline const CexmcProductionModelData &
214 {
215  return productionModelData;
216 }
217 
218 
220 {
221  useTableMass = on;
222 }
223 
224 
226 {
227  useMassCut = on;
228 }
229 
230 
232  G4double value )
233 {
234  massCutOPCenter = value;
235 }
236 
237 
239  G4double value )
240 {
241  massCutNOPCenter = value;
242 }
243 
244 
246  G4double value )
247 {
248  massCutOPWidth = value;
249 }
250 
251 
253  G4double value )
254 {
255  massCutNOPWidth = value;
256 }
257 
258 
260  G4double value )
261 {
262  massCutEllipseAngle = value;
263 }
264 
265 
267  G4bool on )
268 {
269  useAbsorbedEnergyCut = on;
270 }
271 
272 
274  G4double value )
275 {
276  absorbedEnergyCutCLCenter = value;
277 }
278 
279 
281  G4double value )
282 {
283  absorbedEnergyCutCRCenter = value;
284 }
285 
286 
288  G4double value )
289 {
290  absorbedEnergyCutCLWidth = value;
291 }
292 
293 
295  G4double value )
296 {
297  absorbedEnergyCutCRWidth = value;
298 }
299 
300 
302  G4double value )
303 {
304  absorbedEnergyCutEllipseAngle = value;
305 }
306 
307 
309  G4double value )
310 {
311  expectedMomentumAmp = value;
312 }
313 
314 
317 {
318  edCollectionAlgorithm = value;
319 }
320 
321 
323 {
324  return useTableMass;
325 }
326 
327 
329 {
330  return useMassCut;
331 }
332 
333 
335  const
336 {
337  return massCutOPCenter;
338 }
339 
340 
342  const
343 {
344  return massCutNOPCenter;
345 }
346 
347 
349  const
350 {
351  return massCutOPWidth;
352 }
353 
354 
356  const
357 {
358  return massCutNOPWidth;
359 }
360 
361 
363  void ) const
364 {
365  return massCutEllipseAngle;
366 }
367 
368 
370  const
371 {
372  return hasMassCutTriggered;
373 }
374 
375 
377  const
378 {
379  return useAbsorbedEnergyCut;
380 }
381 
382 
384  void ) const
385 {
386  return absorbedEnergyCutCLCenter;
387 }
388 
389 
391  void ) const
392 {
393  return absorbedEnergyCutCRCenter;
394 }
395 
396 
398  void ) const
399 {
400  return absorbedEnergyCutCLWidth;
401 }
402 
403 
405  void ) const
406 {
407  return absorbedEnergyCutCRWidth;
408 }
409 
410 
413 {
414  return absorbedEnergyCutEllipseAngle;
415 }
416 
417 
419  void ) const
420 {
421  return expectedMomentumAmp;
422 }
423 
424 
427 {
428  return edCollectionAlgorithm;
429 }
430 
431 
433  void ) const
434 {
435  return hasAbsorbedEnergyCutTriggered;
436 }
437 
438 
439 #endif
440 
CexmcEDCollectionAlgoritm GetEDCollectionAlgorithm(void) const
const XML_Char int const XML_Char * value
Definition: expat.h:331
CexmcChargeExchangeReconstructor(const CexmcProductionModel *productionModel)
void Reconstruct(const CexmcEnergyDepositStore *edStore)
bool G4bool
Definition: G4Types.hh:79
void SetEDCollectionAlgorithm(CexmcEDCollectionAlgoritm value)
const CexmcProductionModelData & GetProductionModelData(void) const
CexmcEDCollectionAlgoritm
Definition: CexmcCommon.hh:177
double G4double
Definition: G4Types.hh:76