CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
SiG4UniversalFluctuation.h
Go to the documentation of this file.
1 //
2 // ********************************************************************
3 // * DISCLAIMER *
4 // * *
5 // * The following disclaimer summarizes all the specific disclaimers *
6 // * of contributors to this software. The specific disclaimers,which *
7 // * govern, are listed with their locations in: *
8 // * http://cern.ch/geant4/license *
9 // * *
10 // * Neither the authors of this software system, nor their employing *
11 // * institutes,nor the agencies providing financial support for this *
12 // * work make any representation or warranty, express or implied, *
13 // * regarding this software system or assume any liability for its *
14 // * use. *
15 // * *
16 // * This code implementation is the intellectual property of the *
17 // * GEANT4 collaboration. *
18 // * By copying, distributing or modifying the Program (or any work *
19 // * based on the Program) you indicate your acceptance of this *
20 // * statement, and all its terms. *
21 // ********************************************************************
22 //
23 // $Id: SiG4UniversalFluctuation.h,v 1.4 2011/06/13 07:18:21 innocent Exp $
24 // GEANT4 tag $Name: CMSSW_6_2_0 $
25 //
26 // -------------------------------------------------------------------
27 //
28 // GEANT4 Class header file
29 //
30 //
31 // File name: G4UniversalFluctuation
32 //
33 // Author: Vladimir Ivanchenko
34 //
35 // Creation date: 03.01.2002
36 //
37 // Modifications:
38 //
39 // 09-12-02 remove warnings (V.Ivanchenko)
40 // 28-12-02 add method Dispersion (V.Ivanchenko)
41 // 07-02-03 change signature (V.Ivanchenko)
42 // 13-02-03 Add name (V.Ivanchenko)
43 // 16-10-03 Changed interface to Initialisation (V.Ivanchenko)
44 // 07-02-05 define problim = 5.e-3 (mma)
45 //
46 // Modified for standalone use in CMSSW. danek k. 2/06
47 //
48 // Class Description:
49 //
50 // Implementation of energy loss fluctuations
51 
52 // -------------------------------------------------------------------
53 //
54 
55 #ifndef SiG4UniversalFluctuation_h
56 #define SiG4UniversalFluctuation_h
57 
58 namespace CLHEP{
59  class HepRandomEngine;
60  class RandPoissonQ;
61  class RandGaussQ;
62  class RandFlat;
63 }
64 
65 //#include "G4VEmFluctuationModel.hh"
66 
68 public:
69 
70  SiG4UniversalFluctuation(CLHEP::HepRandomEngine&);
71 
73 
74  // momentum in MeV/c, mass in MeV, tmax (delta cut) in MeV,
75  // length in mm, meanLoss eloss in MeV.
76  double SampleFluctuations(const double momentum,
77  const double mass,
78  double& tmax,
79  const double length,
80  const double meanLoss);
81 
82  //G4double SampleFluctuations(const G4Material*,
83  // const G4DynamicParticle*,
84  // G4double&,
85  // G4double&,
86  // G4double&);
87 
88  //G4double Dispersion( const G4Material*,
89  // const G4DynamicParticle*,
90  // G4double&,
91  // G4double&);
92  //void InitialiseMe(const G4ParticleDefinition*);
93 
94 protected:
95 
96 private:
97 
98  CLHEP::HepRandomEngine& rndEngine;
99  CLHEP::RandGaussQ* gaussQDistribution;
100  CLHEP::RandPoissonQ* poissonQDistribution;
101  CLHEP::RandFlat* flatDistribution;
102  // hide assignment operator
103  //SiG4UniversalFluctuation & operator=(const SiG4UniversalFluctuation &right);
104  //SiG4UniversalFluctuation(const SiG4UniversalFluctuation&);
105 
106  //const G4ParticleDefinition* particle;
107  //const G4Material* lastMaterial;
108 
109  double particleMass;
110  double chargeSquare;
111 
112  // data members to speed up the fluctuation calculation
113  double ipotFluct;
115  // double zeff;
116 
117  double f1Fluct;
118  double f2Fluct;
119  double e1Fluct;
120  double e2Fluct;
121  double rateFluct;
122  double e1LogFluct;
123  double e2LogFluct;
124  double ipotLogFluct;
125  double e0;
126 
128  double theBohrBeta2;
129  double minLoss;
130  double problim;
131  double sumalim;
132  double alim;
133  double nmaxCont1;
134  double nmaxCont2;
135 };
136 
137 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
138 
139 #endif
140 
SiG4UniversalFluctuation(CLHEP::HepRandomEngine &)
double SampleFluctuations(const double momentum, const double mass, double &tmax, const double length, const double meanLoss)
CLHEP::RandPoissonQ * poissonQDistribution
static const double tmax[3]
CLHEP::RandGaussQ * gaussQDistribution
CLHEP::HepRandomEngine & rndEngine