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 // GEANT4 tag $Name: CMSSW_4_2_3 $
24 //
25 // -------------------------------------------------------------------
26 //
27 // GEANT4 Class header file
28 //
29 //
30 // File name: G4UniversalFluctuation
31 //
32 // Author: Vladimir Ivanchenko
33 //
34 // Creation date: 03.01.2002
35 //
36 // Modifications:
37 //
38 // 09-12-02 remove warnings (V.Ivanchenko)
39 // 28-12-02 add method Dispersion (V.Ivanchenko)
40 // 07-02-03 change signature (V.Ivanchenko)
41 // 13-02-03 Add name (V.Ivanchenko)
42 // 16-10-03 Changed interface to Initialisation (V.Ivanchenko)
43 // 07-02-05 define problim = 5.e-3 (mma)
44 //
45 // Modified for standalone use in CMSSW. danek k. 2/06
46 //
47 // Class Description:
48 //
49 // Implementation of energy loss fluctuations
50 
51 // -------------------------------------------------------------------
52 //
53 
54 #ifndef SiG4UniversalFluctuation_h
55 #define SiG4UniversalFluctuation_h
56 
57 namespace CLHEP{
58  class HepRandomEngine;
59  class RandPoissonQ;
60  class RandGaussQ;
61  class RandFlat;
62 }
63 
64 //#include "G4VEmFluctuationModel.hh"
65 
67 public:
68 
69  SiG4UniversalFluctuation(CLHEP::HepRandomEngine&);
70 
72 
73  // momentum in MeV/c, mass in MeV, tmax (delta cut) in MeV,
74  // length in mm, meanLoss eloss in MeV.
75  double SampleFluctuations(const double momentum,
76  const double mass,
77  double& tmax,
78  const double length,
79  const double meanLoss);
80 
81  //G4double SampleFluctuations(const G4Material*,
82  // const G4DynamicParticle*,
83  // G4double&,
84  // G4double&,
85  // G4double&);
86 
87  //G4double Dispersion( const G4Material*,
88  // const G4DynamicParticle*,
89  // G4double&,
90  // G4double&);
91  //void InitialiseMe(const G4ParticleDefinition*);
92 
93 protected:
94 
95 private:
96 
97  CLHEP::HepRandomEngine& rndEngine;
98  CLHEP::RandGaussQ* gaussQDistribution;
99  CLHEP::RandPoissonQ* poissonQDistribution;
100  CLHEP::RandFlat* flatDistribution;
101  // hide assignment operator
102  //SiG4UniversalFluctuation & operator=(const SiG4UniversalFluctuation &right);
103  //SiG4UniversalFluctuation(const SiG4UniversalFluctuation&);
104 
105  //const G4ParticleDefinition* particle;
106  //const G4Material* lastMaterial;
107 
108  double particleMass;
109  double chargeSquare;
110 
111  // data members to speed up the fluctuation calculation
112  double ipotFluct;
114  // double zeff;
115 
116  double f1Fluct;
117  double f2Fluct;
118  double e1Fluct;
119  double e2Fluct;
120  double rateFluct;
121  double e1LogFluct;
122  double e2LogFluct;
123  double ipotLogFluct;
124  double e0;
125 
127  double theBohrBeta2;
128  double minLoss;
129  double problim;
130  double sumalim;
131  double alim;
132  double nmaxCont1;
133  double nmaxCont2;
134 };
135 
136 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
137 
138 #endif
139 
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