All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups
SiEnergyFluct.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 // -------------------------------------------------------------------
24 //
25 // This product includes software developed by Members of the Geant4
26 // Collaboration ( http://cern.ch/geant4 ).
27 //
28 // GEANT4 Classes utilized:
29 //
30 // File names: G4UniversalFluctuation (by Vladimir Ivanchenko)
31 // G4MollerBhabhaModel (by Vladimir Ivanchenko)
32 // G4MuBetheBlochModel (by Vladimir Ivanchenko)
33 // G4BetheBlochModel (by Vladimir Ivanchenko)
34 //
35 // -------------------------------------------------------------------
36 
37 #ifndef SIENERGYFLUCT_H
38 #define SIENERGYFLUCT_H
39 
40 // Include LCIO classes
41 #include <lcio.h>
42 #include <EVENT/MCParticle.h>
43 
44 using namespace lcio ;
45 
46 /**
47 \addtogroup SiStripDigi SiStripDigi
48 @{
49 */
50 
51 namespace sistrip {
52 
53 //!
54 //! Special class providing particle energy loss fluctuations in Si material (Landau fluctuations). The main method
55 //! simply follows the strategy taken in Geant4 class G4UniversalFluctuation by V. Ivanchenko. As the fluctuation is
56 //! strongly dependent on particle type and it's energy, detailed calculations of mean ionisation losses have been
57 //! implemented as well. The differ for hadrons (follows Geant4 class G4BetheBlochModel), muons (follows Geant4
58 //! class G4MuBetheBlochModel) and electrons & positrons (follows Geant4 class G4MollerBhabhaModel) ... All the details
59 //! about physics used can be found in http://cern.ch/geant4/UserDocumentation/UsersGuides/PhysicsReferenceManual/fo/PhysicsReferenceManual.pdf
60 //!
61 //! @author Z. Drasal, Charles University, Prague
62 //!
64 
65  public:
66 
67 //!Constructor
68  SiEnergyFluct(double cutOnDeltaRays);
69 
70 //!Destructor
71  ~SiEnergyFluct();
72 
73 //!Method providing energy loss fluctuations, the model used to get the
74 //!fluctuations is essentially the same as in Glandz in Geant3 (Cern program
75 //!library W5013, phys332). L. Urban et al. NIM A362, p.416 (1995) and Geant4
76 //!Physics Reference Manual
77  double SampleFluctuations(const MCParticle * part, const double length);
78 
79 
80 protected:
81 
82 private:
83 
84 //!Method calculating actual dEdx for hadrons - based on ComputeDEDXPerVolume method from G4BetheBlochModel Geant4 class
85  double getHadronDEDX(const MCParticle * part);
86 
87 //!Method calculating actual dEdx for muons - based on ComputeDEDXPerVolume method from G4MuBetheBlochModel Geant4 class
88  double getMuonDEDX(const MCParticle * part);
89 
90 //!Method calculating actual dEdx for electrons & positrons - based on ComputeDEDXPerVolume method G4MollerBhabhaModel from Geant4 class
91  double getElectronDEDX(const MCParticle * part);
92 
93 // Pointer to MCParticle given as a parameter during last call of SampleFluctuations method
94  const MCParticle * _prevMCPart;
95 
96 // Mean dE/dx calculated during last call of SampleFluctuations method
97  double _prevMeanLoss;
98 
99 // Cut on secondary electrons
100  double _cutOnDeltaRays; //!< Cut on secondary electrons - must be the same as in Geant4
101 
102 // Constants related to dE/dx
103  double _twoln10;
104 
105 // Constants related to Si material
106  double _eexc;
107  double _eexc2;
108  double _KBethe;
109  double _Zeff;
110  double _th;
111 
112 // Constants related to Si material & dEdx -> density effect
113  double _aden;
114  double _cden;
115  double _mden;
116  double _x0den;
117  double _x1den;
118 
119  double _xgi[8];
120  double _wgi[8];
121 
124  double _alphaPrime;
125 
126 // Constants related to Si material & universal fluctuations
127  double _minLoss;
129  double _nmaxCont1;
130  double _nmaxCont2;
131 
132  double _facwidth;
133  double _f1Fluct;
134  double _f2Fluct;
135  double _e1Fluct;
136  double _e2Fluct;
137  double _e1LogFluct;
138  double _e2LogFluct;
139  double _ipotFluct;
141  double _e0;
142 
143 }; // Class
144 
145 } // Namespace
146 
147 /** @} */
148 
149 #endif // SIENERGYFLUCT_H
double _cutOnDeltaRays
Cut on secondary electrons - must be the same as in Geant4.
const MCParticle * _prevMCPart
Definition: SiEnergyFluct.h:94
Special class providing particle energy loss fluctuations in Si material (Landau fluctuations).
Definition: SiEnergyFluct.h:63