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 }
60 
61 //#include "G4VEmFluctuationModel.hh"
62 
64 public:
65 
67 
69 
70  // momentum in MeV/c, mass in MeV, tmax (delta cut) in MeV,
71  // length in mm, meanLoss eloss in MeV.
72  double SampleFluctuations(const double momentum,
73  const double mass,
74  double& tmax,
75  const double length,
76  const double meanLoss,
77  CLHEP::HepRandomEngine*);
78 
79  //G4double SampleFluctuations(const G4Material*,
80  // const G4DynamicParticle*,
81  // G4double&,
82  // G4double&,
83  // G4double&);
84 
85  //G4double Dispersion( const G4Material*,
86  // const G4DynamicParticle*,
87  // G4double&,
88  // G4double&);
89  //void InitialiseMe(const G4ParticleDefinition*);
90 
91 protected:
92 
93 private:
94 
95  // hide assignment operator
96  //SiG4UniversalFluctuation & operator=(const SiG4UniversalFluctuation &right);
97  //SiG4UniversalFluctuation(const SiG4UniversalFluctuation&);
98 
99  //const G4ParticleDefinition* particle;
100  //const G4Material* lastMaterial;
101 
102  double particleMass;
103  double chargeSquare;
104 
105  // data members to speed up the fluctuation calculation
106  double ipotFluct;
108  // double zeff;
109 
110  double f1Fluct;
111  double f2Fluct;
112  double e1Fluct;
113  double e2Fluct;
114  double rateFluct;
115  double e1LogFluct;
116  double e2LogFluct;
117  double ipotLogFluct;
118  double e0;
119 
121  double theBohrBeta2;
122  double minLoss;
123  double problim;
124  double sumalim;
125  double alim;
126  double nmaxCont1;
127  double nmaxCont2;
128 };
129 
130 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
131 
132 #endif
133 
static const double tmax[3]
double SampleFluctuations(const double momentum, const double mass, double &tmax, const double length, const double meanLoss, CLHEP::HepRandomEngine *)