Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/examples/advanced/ChargeExchangeMC/include/CexmcChargeExchangeReconstructor.hh

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

  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"
 48 #include "CexmcProductionModelData.hh"
 49 #include "CexmcCommon.hh"
 50 
 51 class  CexmcChargeExchangeReconstructorMessenger;
 52 struct  CexmcEnergyDepositStore;
 53 class  CexmcProductionModel;
 54 class  CexmcParticleGun;
 55 
 56 
 57 class  CexmcChargeExchangeReconstructor : public CexmcReconstructor
 58 {
 59     public:
 60         CexmcChargeExchangeReconstructor(
 61                                 const CexmcProductionModel *  productionModel );
 62 
 63         ~CexmcChargeExchangeReconstructor();
 64 
 65     public:
 66         void  Reconstruct( const CexmcEnergyDepositStore *  edStore );
 67 
 68     public:
 69         G4double  GetOutputParticleMass( void ) const;
 70 
 71         G4double  GetNucleusOutputParticleMass( void ) const;
 72 
 73         const CexmcProductionModelData &  GetProductionModelData( void ) const;
 74 
 75         void      UseTableMass( G4bool  on );
 76 
 77         void      UseMassCut( G4bool  on );
 78 
 79         void      SetMassCutOPCenter( G4double  value );
 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 
 91         void      SetAbsorbedEnergyCutCLCenter( G4double  value );
 92 
 93         void      SetAbsorbedEnergyCutCRCenter( G4double  value );
 94 
 95         void      SetAbsorbedEnergyCutCLWidth( G4double  value );
 96 
 97         void      SetAbsorbedEnergyCutCRWidth( G4double  value );
 98 
 99         void      SetAbsorbedEnergyCutEllipseAngle( G4double  value );
100 
101         void      SetExpectedMomentumAmp( G4double );
102 
103         void      SetExpectedMomentumAmpDiff( G4double );
104 
105         void      SetEDCollectionAlgorithm( CexmcEDCollectionAlgoritm  value );
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 
127         G4double  GetAbsorbedEnergyCutCLCenter( void ) const;
128 
129         G4double  GetAbsorbedEnergyCutCRCenter( void ) const;
130 
131         G4double  GetAbsorbedEnergyCutCLWidth( void ) const;
132 
133         G4double  GetAbsorbedEnergyCutCRWidth( void ) const;
134 
135         G4double  GetAbsorbedEnergyCutEllipseAngle( void ) const;
136 
137         G4double  GetExpectedMomentumAmp( void ) const;
138 
139         CexmcEDCollectionAlgoritm  GetEDCollectionAlgorithm( void ) const;
140 
141         G4bool    HasAbsorbedEnergyCutTriggered( void ) const;
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 
194         CexmcChargeExchangeReconstructorMessenger *  messenger;
195 };
196 
197 
198 inline G4double  CexmcChargeExchangeReconstructor::GetOutputParticleMass(
199                                                                     void ) const
200 {
201     return outputParticleMass;
202 }
203 
204 
205 inline G4double  CexmcChargeExchangeReconstructor::GetNucleusOutputParticleMass(
206                                                                     void ) const
207 {
208     return nucleusOutputParticleMass;
209 }
210 
211 
212 inline const CexmcProductionModelData &
213         CexmcChargeExchangeReconstructor::GetProductionModelData( void ) const
214 {
215     return productionModelData;
216 }
217 
218 
219 inline void  CexmcChargeExchangeReconstructor::UseTableMass( G4bool  on )
220 {
221     useTableMass = on;
222 }
223 
224 
225 inline void  CexmcChargeExchangeReconstructor::UseMassCut( G4bool  on )
226 {
227     useMassCut = on;
228 }
229 
230 
231 inline void  CexmcChargeExchangeReconstructor::SetMassCutOPCenter(
232                                                             G4double  value )
233 {
234     massCutOPCenter = value;
235 }
236 
237 
238 inline void  CexmcChargeExchangeReconstructor::SetMassCutNOPCenter(
239                                                             G4double  value )
240 {
241     massCutNOPCenter = value;
242 }
243 
244 
245 inline void  CexmcChargeExchangeReconstructor::SetMassCutOPWidth(
246                                                             G4double  value )
247 {
248     massCutOPWidth = value;
249 }
250 
251 
252 inline void  CexmcChargeExchangeReconstructor::SetMassCutNOPWidth(
253                                                             G4double  value )
254 {
255     massCutNOPWidth = value;
256 }
257 
258 
259 inline void  CexmcChargeExchangeReconstructor::SetMassCutEllipseAngle(
260                                                             G4double  value )
261 {
262     massCutEllipseAngle = value;
263 }
264 
265 
266 inline void  CexmcChargeExchangeReconstructor::UseAbsorbedEnergyCut(
267                                                                 G4bool  on )
268 {
269     useAbsorbedEnergyCut = on;
270 }
271 
272 
273 inline void  CexmcChargeExchangeReconstructor::SetAbsorbedEnergyCutCLCenter(
274                                                             G4double  value )
275 {
276     absorbedEnergyCutCLCenter = value;
277 }
278 
279 
280 inline void  CexmcChargeExchangeReconstructor::SetAbsorbedEnergyCutCRCenter(
281                                                             G4double  value )
282 {
283     absorbedEnergyCutCRCenter = value;
284 }
285 
286 
287 inline void  CexmcChargeExchangeReconstructor::SetAbsorbedEnergyCutCLWidth(
288                                                             G4double  value )
289 {
290     absorbedEnergyCutCLWidth = value;
291 }
292 
293 
294 inline void  CexmcChargeExchangeReconstructor::SetAbsorbedEnergyCutCRWidth(
295                                                             G4double  value )
296 {
297     absorbedEnergyCutCRWidth = value;
298 }
299 
300 
301 inline void  CexmcChargeExchangeReconstructor::SetAbsorbedEnergyCutEllipseAngle(
302                                                             G4double  value )
303 {
304     absorbedEnergyCutEllipseAngle = value;
305 }
306 
307 
308 inline void  CexmcChargeExchangeReconstructor::SetExpectedMomentumAmp(
309                                                             G4double  value )
310 {
311     expectedMomentumAmp = value;
312 }
313 
314 
315 inline void  CexmcChargeExchangeReconstructor::SetEDCollectionAlgorithm(
316                                             CexmcEDCollectionAlgoritm  value )
317 {
318     edCollectionAlgorithm = value;
319 }
320 
321 
322 inline G4bool  CexmcChargeExchangeReconstructor::IsTableMassUsed( void ) const
323 {
324     return useTableMass;
325 }
326 
327 
328 inline G4bool  CexmcChargeExchangeReconstructor::IsMassCutUsed( void ) const
329 {
330     return useMassCut;
331 }
332 
333 
334 inline G4double  CexmcChargeExchangeReconstructor::GetMassCutOPCenter( void )
335                                                                         const
336 {
337     return massCutOPCenter;
338 }
339 
340 
341 inline G4double  CexmcChargeExchangeReconstructor::GetMassCutNOPCenter( void )
342                                                                         const
343 {
344     return massCutNOPCenter;
345 }
346 
347 
348 inline G4double  CexmcChargeExchangeReconstructor::GetMassCutOPWidth( void )
349                                                                         const
350 {
351     return massCutOPWidth;
352 }
353 
354 
355 inline G4double  CexmcChargeExchangeReconstructor::GetMassCutNOPWidth( void )
356                                                                         const
357 {
358     return massCutNOPWidth;
359 }
360 
361 
362 inline G4double  CexmcChargeExchangeReconstructor::GetMassCutEllipseAngle(
363                                                                     void ) const
364 {
365     return massCutEllipseAngle;
366 }
367 
368 
369 inline G4bool  CexmcChargeExchangeReconstructor::HasMassCutTriggered( void )
370                                                                         const
371 {
372     return hasMassCutTriggered;
373 }
374 
375 
376 inline G4bool  CexmcChargeExchangeReconstructor::IsAbsorbedEnergyCutUsed( void )
377                                                                         const
378 {
379     return useAbsorbedEnergyCut;
380 }
381 
382 
383 inline G4double  CexmcChargeExchangeReconstructor::GetAbsorbedEnergyCutCLCenter(
384                                                                     void ) const
385 {
386     return absorbedEnergyCutCLCenter;
387 }
388 
389 
390 inline G4double  CexmcChargeExchangeReconstructor::GetAbsorbedEnergyCutCRCenter(
391                                                                     void ) const
392 {
393     return absorbedEnergyCutCRCenter;
394 }
395 
396 
397 inline G4double  CexmcChargeExchangeReconstructor::GetAbsorbedEnergyCutCLWidth(
398                                                                     void ) const
399 {
400     return absorbedEnergyCutCLWidth;
401 }
402 
403 
404 inline G4double  CexmcChargeExchangeReconstructor::GetAbsorbedEnergyCutCRWidth(
405                                                                     void ) const
406 {
407     return absorbedEnergyCutCRWidth;
408 }
409 
410 
411 inline G4double  CexmcChargeExchangeReconstructor::
412                                 GetAbsorbedEnergyCutEllipseAngle( void ) const
413 {
414     return absorbedEnergyCutEllipseAngle;
415 }
416 
417 
418 inline G4double  CexmcChargeExchangeReconstructor::GetExpectedMomentumAmp(
419                                                                     void ) const
420 {
421     return expectedMomentumAmp;
422 }
423 
424 
425 inline CexmcEDCollectionAlgoritm  CexmcChargeExchangeReconstructor::
426                                 GetEDCollectionAlgorithm( void ) const
427 {
428     return edCollectionAlgorithm;
429 }
430 
431 
432 inline G4bool  CexmcChargeExchangeReconstructor::HasAbsorbedEnergyCutTriggered(
433                                                                     void ) const
434 {
435     return hasAbsorbedEnergyCutTriggered;
436 }
437 
438 
439 #endif
440 
441