Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/electromagnetic/utils/include/G4EmCalculator.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 ]

Diff markup

Differences between /processes/electromagnetic/utils/include/G4EmCalculator.hh (Version 11.3.0) and /processes/electromagnetic/utils/include/G4EmCalculator.hh (Version 7.1.p1)


  1 //                                                  1 //
  2 // *******************************************      2 // ********************************************************************
  3 // * License and Disclaimer                    <<   3 // * DISCLAIMER                                                       *
  4 // *                                                4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of th <<   5 // * The following disclaimer summarizes all the specific disclaimers *
  6 // * the Geant4 Collaboration.  It is provided <<   6 // * of contributors to this software. The specific disclaimers,which *
  7 // * conditions of the Geant4 Software License <<   7 // * govern, are listed with their locations in:                      *
  8 // * LICENSE and available at  http://cern.ch/ <<   8 // *   http://cern.ch/geant4/license                                  *
  9 // * include a list of copyright holders.      << 
 10 // *                                                9 // *                                                                  *
 11 // * Neither the authors of this software syst     10 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing fin     11 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warran     12 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assum     13 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file  <<  14 // * use.                                                             *
 16 // * for the full disclaimer and the limitatio << 
 17 // *                                               15 // *                                                                  *
 18 // * This  code  implementation is the result  <<  16 // * This  code  implementation is the  intellectual property  of the *
 19 // * technical work of the GEANT4 collaboratio <<  17 // * GEANT4 collaboration.                                            *
 20 // * By using,  copying,  modifying or  distri <<  18 // * By copying,  distributing  or modifying the Program (or any work *
 21 // * any work based  on the software)  you  ag <<  19 // * based  on  the Program)  you indicate  your  acceptance of  this *
 22 // * use  in  resulting  scientific  publicati <<  20 // * statement, and all its terms.                                    *
 23 // * acceptance of all terms of the Geant4 Sof << 
 24 // *******************************************     21 // ********************************************************************
 25 //                                                 22 //
                                                   >>  23 // $Id: G4EmCalculator.hh,v 1.9 2005/02/26 22:01:20 vnivanch Exp $
                                                   >>  24 // GEANT4 tag $Name: geant4-07-01-patch-01 $
                                                   >>  25 //
 26 //                                                 26 //
 27 // -------------------------------------------     27 // -------------------------------------------------------------------
 28 //                                                 28 //
 29 // GEANT4 Class header file                        29 // GEANT4 Class header file
 30 //                                                 30 //
 31 //                                                 31 //
 32 // File name:     G4EmCalculator                   32 // File name:     G4EmCalculator
 33 //                                                 33 //
 34 // Author:        Vladimir Ivanchenko              34 // Author:        Vladimir Ivanchenko
 35 //                                                 35 //
 36 // Creation date: 27.06.2004                       36 // Creation date: 27.06.2004
 37 //                                                 37 //
 38 // Modifications:                                  38 // Modifications:
 39 // 17.11.2004 Change signature of methods, add     39 // 17.11.2004 Change signature of methods, add new methods (V.Ivanchenko)
 40 // 11.01.2006 Add GetCSDARange (V.Ivanchenko)  <<  40 //
 41 // 26.01.2006 Rename GetRange -> GetRangeFromR << 
 42 // 22.03.2006 Add ComputeElectronicDEDX and Co << 
 43 // 29.09.2006 Add member loweModel (V.Ivanchen << 
 44 // 15.03.2007 Add ComputeEnergyCutFromRangeCut << 
 45 // 02.02.2018 Add parameter to FindLambdaTable << 
 46 //                                                 41 //
 47 // Class Description:                              42 // Class Description:
 48 //                                                 43 //
 49 // Provide access to dE/dx and cross sections      44 // Provide access to dE/dx and cross sections
 50                                                    45 
 51 // -------------------------------------------     46 // -------------------------------------------------------------------
 52 //                                                 47 //
 53                                                    48 
 54 #ifndef G4EmCalculator_h                           49 #ifndef G4EmCalculator_h
 55 #define G4EmCalculator_h 1                         50 #define G4EmCalculator_h 1
 56                                                    51 
 57 #include <vector>                                  52 #include <vector>
 58 #include "globals.hh"                              53 #include "globals.hh"
 59 #include "G4VAtomDeexcitation.hh"              <<  54 #include "G4DataVector.hh"
 60                                                    55 
 61 class G4LossTableManager;                          56 class G4LossTableManager;
 62 class G4NistManager;                           << 
 63 class G4Material;                                  57 class G4Material;
 64 class G4MaterialCutsCouple;                        58 class G4MaterialCutsCouple;
 65 class G4ParticleDefinition;                        59 class G4ParticleDefinition;
 66 class G4PhysicsTable;                              60 class G4PhysicsTable;
 67 class G4VEmModel;                                  61 class G4VEmModel;
 68 class G4VEnergyLossProcess;                        62 class G4VEnergyLossProcess;
 69 class G4VEmProcess;                            << 
 70 class G4VMultipleScattering;                   << 
 71 class G4VProcess;                              << 
 72 class G4ionEffectiveCharge;                        63 class G4ionEffectiveCharge;
 73 class G4Region;                                    64 class G4Region;
 74 class G4Element;                                   65 class G4Element;
 75 class G4EmCorrections;                             66 class G4EmCorrections;
 76 class G4EmParameters;                          << 
 77 class G4IonTable;                              << 
 78                                                    67 
 79 class G4EmCalculator                               68 class G4EmCalculator
 80 {                                                  69 {
 81                                                    70 
 82 public:                                            71 public:
 83                                                    72 
 84   G4EmCalculator();                                73   G4EmCalculator();
 85                                                    74 
 86   ~G4EmCalculator();                               75   ~G4EmCalculator();
 87                                                    76 
 88   //========================================== << 
 89   // Methods to access precalculated dE/dx and     77   // Methods to access precalculated dE/dx and cross sections
 90   // Materials should exist in the list of the     78   // Materials should exist in the list of the G4MaterialCutsCouple
 91   //========================================== << 
 92                                                    79 
 93   G4double GetDEDX(G4double kinEnergy, const G <<  80   G4double GetDEDX(G4double kinEnergy, const G4ParticleDefinition*, const G4Material*,
 94        const G4Material*,                      <<  81                    const G4Region* r = 0);
 95                    const G4Region* r = nullptr <<  82   G4double GetDEDX(G4double kinEnergy, const G4String& part, const G4String& mat,
 96   inline G4double GetDEDX(G4double kinEnergy,  <<  83                    const G4String& s = "world");
 97        const G4String& mat,                    <<  84 
 98                    const G4String& regname = " <<  85   G4double GetRange(G4double kinEnergy, const G4ParticleDefinition*, const G4Material*,
 99                                                <<  86                    const G4Region* r = 0);
100   G4double GetRangeFromRestricteDEDX(G4double  <<  87   G4double GetRange(G4double kinEnergy, const G4String& part, const G4String& mat,
101              const G4ParticleDefinition*,      <<  88                    const G4String& s = "world");
102              const G4Material*,                <<  89 
103              const G4Region* r = nullptr);     <<  90   G4double GetKinEnergy(G4double range, const G4ParticleDefinition*, const G4Material*,
104   inline G4double GetRangeFromRestricteDEDX(G4 <<  91                    const G4Region* r = 0);
105               const G4String& part,            <<  92   G4double GetKinEnergy(G4double range, const G4String& part, const G4String& mat,
106               const G4String& mat,             <<  93                    const G4String& s = "world");
107               const G4String& regname = "world << 
108                                                << 
109   G4double GetCSDARange(G4double kinEnergy, co << 
110       const G4Material*,                       << 
111       const G4Region* r = nullptr);            << 
112   inline G4double GetCSDARange(G4double kinEne << 
113       const G4String& mat,                     << 
114       const G4String& regname = "world");      << 
115                                                << 
116   G4double GetRange(G4double kinEnergy, const  << 
117       const G4Material*,                       << 
118       const G4Region* r = nullptr);            << 
119   inline G4double GetRange(G4double kinEnergy, << 
120       const G4String& mat,                     << 
121       const G4String& regname = "world");      << 
122                                                << 
123   G4double GetKinEnergy(G4double range, const  << 
124       const G4Material*,                       << 
125       const G4Region* r = nullptr);            << 
126   inline G4double GetKinEnergy(G4double range, << 
127       const G4String& mat,                     << 
128       const G4String& regname = "world");      << 
129                                                    94 
130   G4double GetCrossSectionPerVolume(               95   G4double GetCrossSectionPerVolume(
131                    G4double kinEnergy, const G     96                    G4double kinEnergy, const G4ParticleDefinition*,
132                    const G4String& processName     97                    const G4String& processName,  const G4Material*,
133        const G4Region* r = nullptr);           <<  98        const G4Region* r = 0);
134   inline G4double GetCrossSectionPerVolume(    <<  99   G4double GetCrossSectionPerVolume(
135                    G4double kinEnergy, const G    100                    G4double kinEnergy, const G4String& part, const G4String& proc,
136                    const G4String& mat, const  << 101                    const G4String& mat, const G4String& s = "world");
137                                                << 102   G4double GetCrossSectionPerAtom(
138   G4double GetShellIonisationCrossSectionPerAt << 103                    G4double kinEnergy, const G4ParticleDefinition*,
139                    const G4String& part, G4int << 104                    const G4String& processName,  const G4Material*,
140        G4AtomicShellEnumerator shell,          << 105        const G4Region* r = 0);
141                    G4double kinEnergy);        << 106   G4double GetCrossSectionPerAtom(
                                                   >> 107                    G4double kinEnergy, const G4String& part, const G4String& proc,
                                                   >> 108                    const G4String& mat, const G4String& s = "world");
142                                                   109 
143   G4double GetMeanFreePath(G4double kinEnergy,    110   G4double GetMeanFreePath(G4double kinEnergy, const G4ParticleDefinition*,
144          const G4String& processName,  const G << 111                    const G4String& processName,  const G4Material*,
145          const G4Region* r = nullptr);         << 112        const G4Region* r = 0);
146   inline G4double GetMeanFreePath(G4double kin << 113   G4double GetMeanFreePath(G4double kinEnergy, const G4String& part, const G4String& proc,
147           const G4String& proc, const G4String << 114                    const G4String& mat, const G4String& s = "world");
148           const G4String& regname = "world");  << 
149                                                   115 
150   void PrintDEDXTable(const G4ParticleDefiniti    116   void PrintDEDXTable(const G4ParticleDefinition*);
151                                                   117 
152   void PrintRangeTable(const G4ParticleDefinit    118   void PrintRangeTable(const G4ParticleDefinition*);
153                                                   119 
154   void PrintInverseRangeTable(const G4Particle    120   void PrintInverseRangeTable(const G4ParticleDefinition*);
155                                                   121 
156   //========================================== << 
157   // Methods to calculate dE/dx and cross sect    122   // Methods to calculate dE/dx and cross sections "on fly"
158   // Existing tables and G4MaterialCutsCouples    123   // Existing tables and G4MaterialCutsCouples are not used
159   //========================================== << 
160                                                   124 
161   G4double ComputeDEDX(G4double kinEnergy, con    125   G4double ComputeDEDX(G4double kinEnergy, const G4ParticleDefinition*,
162                        const G4String& process    126                        const G4String& processName,  const G4Material*,
163            G4double cut = DBL_MAX);               127            G4double cut = DBL_MAX);
164   inline G4double ComputeDEDX(G4double kinEner << 128   G4double ComputeDEDX(G4double kinEnergy, const G4String& part, const G4String& proc,
165            const G4String& proc,               << 
166                        const G4String& mat, G4    129                        const G4String& mat, G4double cut = DBL_MAX);
167                                                   130 
168   G4double ComputeElectronicDEDX(G4double kinE << 131   G4double ComputeNuclearDEDX(G4double kinEnergy, const G4ParticleDefinition*, const G4Material*);
169          const G4ParticleDefinition*,          << 132   G4double ComputeNuclearDEDX(G4double kinEnergy, const G4String& part, const G4String& mat);
170          const G4Material* mat, G4double cut = << 
171   inline G4double ComputeElectronicDEDX(G4doub << 
172          const G4String& mat, G4double cut = D << 
173                                                << 
174   G4double ComputeDEDXForCutInRange(G4double k << 
175             const G4ParticleDefinition*,       << 
176             const G4Material* mat, G4double ra << 
177   inline G4double ComputeDEDXForCutInRange(G4d << 
178              const G4String& mat,              << 
179              G4double rangecut = DBL_MAX);     << 
180                                                << 
181   G4double ComputeNuclearDEDX(G4double kinEner << 
182             const G4Material*);                << 
183   inline G4double ComputeNuclearDEDX(G4double  << 
184             const G4String& mat);              << 
185                                                << 
186   G4double ComputeTotalDEDX(G4double kinEnergy << 
187           const G4Material*, G4double cut = DB << 
188   inline G4double ComputeTotalDEDX(G4double ki << 
189           const G4String& mat, G4double cut =  << 
190                                                   133 
191   G4double ComputeCrossSectionPerVolume(          134   G4double ComputeCrossSectionPerVolume(
192                        G4double kinEnergy, con    135                        G4double kinEnergy, const G4ParticleDefinition*,
193                        const G4String& process    136                        const G4String& processName,  const G4Material*,
194            G4double cut = 0.0);                   137            G4double cut = 0.0);
195   inline G4double ComputeCrossSectionPerVolume << 138   G4double ComputeCrossSectionPerVolume(
196                        G4double kinEnergy, con << 139                        G4double kinEnergy, const G4String& part, const G4String& proc,
197            const G4String& proc,               << 
198                        const G4String& mat, G4    140                        const G4String& mat, G4double cut = 0.0);
199                                                   141 
200   G4double ComputeCrossSectionPerAtom(            142   G4double ComputeCrossSectionPerAtom(
201                        G4double kinEnergy, con    143                        G4double kinEnergy, const G4ParticleDefinition*,
202                        const G4String& process    144                        const G4String& processName, G4double Z, G4double A,
203            G4double cut = 0.0);                   145            G4double cut = 0.0);
204   inline G4double ComputeCrossSectionPerAtom(  << 146   G4double ComputeCrossSectionPerAtom(
205                        G4double kinEnergy, con << 
206                        const G4String& process << 
207            G4double cut = 0.0);                << 
208                                                << 
209   G4double ComputeCrossSectionPerShell(        << 
210                        G4double kinEnergy, con << 
211                        const G4String& process << 
212            G4double cut = 0.0);                << 
213   inline G4double ComputeCrossSectionPerShell( << 
214                        G4double kinEnergy, con    147                        G4double kinEnergy, const G4String& part,
215                        const G4String& process    148                        const G4String& processName, const G4Element*,
216                        G4int shellIdx,         << 
217            G4double cut = 0.0);                   149            G4double cut = 0.0);
218                                                   150 
219   G4double ComputeGammaAttenuationLength(G4dou << 
220            const G4Material*);                 << 
221                                                << 
222   G4double ComputeShellIonisationCrossSectionP << 
223                    const G4String& part, G4int << 
224        G4AtomicShellEnumerator shell,          << 
225                    G4double kinEnergy,         << 
226                    const G4Material* mat = nul << 
227                                                << 
228   G4double ComputeMeanFreePath(                   151   G4double ComputeMeanFreePath(
229                        G4double kinEnergy, con    152                        G4double kinEnergy, const G4ParticleDefinition*,
230                        const G4String& process    153                        const G4String& processName,  const G4Material*,
231            G4double cut = 0.0);                   154            G4double cut = 0.0);
232   inline G4double ComputeMeanFreePath(         << 155   G4double ComputeMeanFreePath(
233                        G4double kinEnergy, con    156                        G4double kinEnergy, const G4String&, const G4String&,
234                        const G4String& process    157                        const G4String& processName, G4double cut = 0.0);
235                                                   158 
236   G4double ComputeEnergyCutFromRangeCut(       << 
237                        G4double range, const G << 
238            const G4Material*);                 << 
239   inline G4double ComputeEnergyCutFromRangeCut << 
240                        G4double range, const G << 
241            const G4String&);                   << 
242                                                << 
243   //========================================== << 
244   // Methods to access particles, materials, r << 
245   //========================================== << 
246                                                << 
247   const G4ParticleDefinition* FindParticle(con    159   const G4ParticleDefinition* FindParticle(const G4String&);
248                                                   160 
249   const G4ParticleDefinition* FindIon(G4int Z, << 
250                                                << 
251   const G4Material* FindMaterial(const G4Strin    161   const G4Material* FindMaterial(const G4String&);
252                                                   162 
253   const G4Region* FindRegion(const G4String&);    163   const G4Region* FindRegion(const G4String&);
254                                                   164 
255   const G4MaterialCutsCouple* FindCouple(const << 165   const G4MaterialCutsCouple* FindCouple(const G4Material*, const G4Region* r = 0);
256            const G4Region* r = nullptr);       << 
257                                                << 
258   G4VProcess* FindProcess(const G4ParticleDefi << 
259         const G4String& processName);          << 
260                                                << 
261   void SetupMaterial(const G4Material*);       << 
262                                                << 
263   void SetupMaterial(const G4String&);         << 
264                                                   166 
265   void SetVerbose(G4int val);                     167   void SetVerbose(G4int val);
266                                                   168 
267   inline void SetApplySmoothing(G4int val);    << 
268                                                << 
269   // hide copy and assign                      << 
270   G4EmCalculator & operator=(const  G4EmCalcul << 
271   G4EmCalculator(const  G4EmCalculator&) = del << 
272                                                << 
273 private:                                          169 private:
274                                                   170 
275   G4bool UpdateParticle(const G4ParticleDefini    171   G4bool UpdateParticle(const G4ParticleDefinition*, G4double kinEnergy);
276                                                   172 
277   G4bool UpdateCouple(const G4Material*, G4dou    173   G4bool UpdateCouple(const G4Material*, G4double cut);
278                                                   174 
279   void FindLambdaTable(const G4ParticleDefinit << 175   void FindLambdaTable(const G4ParticleDefinition*, const G4String& processName);
280                        const G4String& process << 
281                        G4double kinEnergy, G4i << 
282                                                   176 
283   G4bool FindEmModel(const G4ParticleDefinitio    177   G4bool FindEmModel(const G4ParticleDefinition*, 
284                      const G4String& processNa    178                      const G4String& processName,
285                            G4double kinEnergy)    179                            G4double kinEnergy);
286                                                   180 
287   G4VEnergyLossProcess* FindEnLossProcess(cons << 181   const G4VEnergyLossProcess* FindEnergyLossProcess(const G4ParticleDefinition*);
288             const G4String& processName);      << 
289                                                << 
290   G4VEmProcess* FindDiscreteProcess(const G4Pa << 
291             const G4String& processName);      << 
292                                                << 
293   G4VMultipleScattering* FindMscProcess(const  << 
294           const G4String& processName);        << 
295                                                   182 
296   G4bool ActiveForParticle(const G4ParticleDef << 183   G4EmCalculator & operator=(const  G4EmCalculator &right);
297          G4VProcess* proc);                    << 184   G4EmCalculator(const  G4EmCalculator&);
298                                                   185 
299   void CheckMaterial(G4int Z);                 << 186   std::vector<const G4Material*>            localMaterials;
                                                   >> 187   std::vector<const G4MaterialCutsCouple*>  localCouples;
300                                                   188 
301   G4EmParameters*              theParameters;  << 
302   G4LossTableManager*          manager;           189   G4LossTableManager*          manager;
303   G4NistManager*               nist;           << 
304   G4IonTable*                  ionTable;       << 
305   G4EmCorrections*             corr;              190   G4EmCorrections*             corr; 
                                                   >> 191   G4DataVector                 localCuts;
                                                   >> 192   G4int                        nLocalMaterials;
306                                                   193 
307   // cache                                     << 194   G4int                        verbose;
308   const G4MaterialCutsCouple*  currentCouple = << 
309   const G4Material*            currentMaterial << 
310   const G4Material*            cutMaterial = n << 
311   const G4ParticleDefinition*  currentParticle << 
312   const G4ParticleDefinition*  lambdaParticle  << 
313   const G4ParticleDefinition*  baseParticle =  << 
314   const G4PhysicsTable*        currentLambda = << 
315                                                << 
316   G4VEmModel*                  currentModel =  << 
317   G4VEmModel*                  loweModel = nul << 
318   G4VEnergyLossProcess*        currentProcess  << 
319   G4VProcess*                  curProcess = nu << 
320   G4DynamicParticle*           dynParticle = n << 
321                                                   195 
322   const G4ParticleDefinition*  theGenericIon;  << 196   // cash
323   G4ionEffectiveCharge*        ionEffCharge;   << 197   G4int                        currentCoupleIndex;
                                                   >> 198   const G4MaterialCutsCouple*  currentCouple;
                                                   >> 199   const G4Material*            currentMaterial;
                                                   >> 200   const G4ParticleDefinition*  currentParticle;
                                                   >> 201   const G4ParticleDefinition*  baseParticle;
                                                   >> 202   const G4PhysicsTable*        currentLambda;
                                                   >> 203         G4VEmModel*            currentModel;
324                                                   204 
325   G4double                     currentCut = DB << 205   G4ionEffectiveCharge*        ionEffCharge;
326   G4double                     chargeSquare =  << 
327   G4double                     massRatio = 1.0 << 
328   G4double                     mass = 0;       << 
329   G4double                     cutenergy[3];   << 
330                                                << 
331   G4int                        currentCoupleIn << 
332   G4int                        nLocalMaterials << 
333   G4int                        verbose = 0;    << 
334                                                << 
335   G4bool                       isIon = false;  << 
336   G4bool                       isApplicable =  << 
337   G4bool                       applySmoothing  << 
338                                                   206 
339   std::vector<const G4Material*>            lo << 207   G4String                     currentName;
340   std::vector<const G4MaterialCutsCouple*>  lo << 208   G4double                     currentCut;
341   std::vector<G4double>                     lo << 209   G4double                     chargeSquare;
                                                   >> 210   G4double                     massRatio;
                                                   >> 211   G4bool                       isIon;
                                                   >> 212   G4bool                       isApplicable;
342                                                   213 
343   G4String                     currentName = " << 214   G4String                     currentParticleName;
344   G4String                     lambdaName = "" << 215   G4String                     currentMaterialName;
345   G4String                     currentParticle << 
346   G4String                     currentMaterial << 
347   G4String                     currentProcessN << 
348 };                                                216 };
349                                                   217 
350 //....oooOO0OOooo.......oooOO0OOooo........ooo    218 //....oooOO0OOooo.......oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
351 //....oooOO0OOooo........oooOO0OOooo........oo << 
352                                                << 
353 inline                                         << 
354 G4double G4EmCalculator::GetDEDX(G4double kinE << 
355                                  const G4Strin << 
356 {                                              << 
357   return GetDEDX(kinEnergy,FindParticle(partic << 
358      FindMaterial(material),FindRegion(reg));  << 
359 }                                              << 
360                                                << 
361 //....oooOO0OOooo........oooOO0OOooo........oo << 
362                                                << 
363 inline                                         << 
364 G4double G4EmCalculator::GetRangeFromRestricte << 
365                const G4String& particle,       << 
366                const G4String& material,       << 
367                const G4String& reg)            << 
368 {                                              << 
369   return GetRangeFromRestricteDEDX(kinEnergy,F << 
370            FindMaterial(material),FindRegion(r << 
371 }                                              << 
372                                                << 
373 //....oooOO0OOooo........oooOO0OOooo........oo << 
374                                                << 
375 inline                                         << 
376 G4double G4EmCalculator::GetCSDARange(G4double << 
377               const G4String& particle,        << 
378               const G4String& material,        << 
379               const G4String& reg)             << 
380 {                                              << 
381   return GetCSDARange(kinEnergy,FindParticle(p << 
382       FindMaterial(material),FindRegion(reg)); << 
383 }                                              << 
384                                                << 
385 //....oooOO0OOooo........oooOO0OOooo........oo << 
386                                                << 
387 inline                                         << 
388 G4double G4EmCalculator::GetRange(G4double kin << 
389           const G4String& particle,            << 
390           const G4String& material,            << 
391           const G4String& reg)                 << 
392 {                                              << 
393   return GetRange(kinEnergy,FindParticle(parti << 
394       FindMaterial(material),FindRegion(reg)); << 
395 }                                              << 
396                                                << 
397 //....oooOO0OOooo........oooOO0OOooo........oo << 
398                                                << 
399 inline                                         << 
400 G4double G4EmCalculator::GetKinEnergy(G4double << 
401                                       const G4 << 
402 {                                              << 
403   return GetKinEnergy(range,FindParticle(parti << 
404           FindMaterial(material),FindRegion(re << 
405 }                                              << 
406                                                << 
407 //....oooOO0OOooo........oooOO0OOooo........oo << 
408                                                << 
409 inline                                         << 
410 G4double G4EmCalculator::GetCrossSectionPerVol << 
411                                             co << 
412               const G4String& processName,     << 
413                                             co << 
414               const G4String& reg)             << 
415 {                                              << 
416   return GetCrossSectionPerVolume(kinEnergy,Fi << 
417                                   FindMaterial << 
418 }                                              << 
419                                                << 
420 //....oooOO0OOooo........oooOO0OOooo........oo << 
421                                                << 
422 inline                                         << 
423 G4double G4EmCalculator::GetMeanFreePath(G4dou << 
424                                          const << 
425            const G4String& processName,        << 
426                                          const << 
427            const G4String& reg)                << 
428 {                                              << 
429   return GetMeanFreePath(kinEnergy,FindParticl << 
430                          FindMaterial(material << 
431 }                                              << 
432                                                << 
433 //....oooOO0OOooo........oooOO0OOooo........oo << 
434                                                << 
435 inline G4double                                << 
436 G4EmCalculator::ComputeElectronicDEDX(G4double << 
437               const G4String& mat, G4double cu << 
438 {                                              << 
439   return                                       << 
440     ComputeElectronicDEDX(kinEnergy,FindPartic << 
441 }                                              << 
442                                                << 
443 //....oooOO0OOooo........oooOO0OOooo........oo << 
444                                                << 
445 inline G4double                                << 
446 G4EmCalculator::ComputeDEDXForCutInRange(G4dou << 
447            const G4String& part,               << 
448            const G4String& mat,                << 
449            G4double rangecut)                  << 
450 {                                              << 
451   return ComputeDEDXForCutInRange(kinEnergy,Fi << 
452           FindMaterial(mat), rangecut);        << 
453 }                                              << 
454                                                << 
455 //....oooOO0OOooo........oooOO0OOooo........oo << 
456                                                << 
457 inline                                         << 
458 G4double G4EmCalculator::ComputeTotalDEDX(G4do << 
459             const G4String& part,              << 
460             const G4String& mat,               << 
461             G4double cut)                      << 
462 {                                              << 
463   return ComputeTotalDEDX(kinEnergy,FindPartic << 
464 }                                              << 
465                                                << 
466 //....oooOO0OOooo........oooOO0OOooo........oo << 
467                                                << 
468 inline                                         << 
469 G4double G4EmCalculator::ComputeDEDX(G4double  << 
470                                      const G4S << 
471              const G4String& processName,      << 
472                                      const G4S << 
473                                            G4d << 
474 {                                              << 
475   return ComputeDEDX(kinEnergy,FindParticle(pa << 
476                      FindMaterial(material),cu << 
477 }                                              << 
478                                                << 
479 //....oooOO0OOooo........oooOO0OOooo........oo << 
480                                                << 
481 inline                                         << 
482 G4double G4EmCalculator::ComputeNuclearDEDX(G4 << 
483                                       const G4 << 
484               const G4String& material)        << 
485 {                                              << 
486   return ComputeNuclearDEDX(kinEnergy,FindPart << 
487           FindMaterial(material));             << 
488 }                                              << 
489                                                << 
490 //....oooOO0OOooo........oooOO0OOooo........oo << 
491                                                << 
492 inline                                         << 
493 G4double G4EmCalculator::ComputeCrossSectionPe << 
494                                                << 
495                                              c << 
496                const G4String& processName,    << 
497                                              c << 
498                                                << 
499 {                                              << 
500   return ComputeCrossSectionPerVolume(kinEnerg << 
501               processName,                     << 
502                                       FindMate << 
503 }                                              << 
504                                                << 
505 //....oooOO0OOooo........oooOO0OOooo........oo << 
506                                                << 
507 inline                                         << 
508 G4double G4EmCalculator::ComputeCrossSectionPe << 
509                                                << 
510                                                << 
511                 const G4Element* elm,          << 
512                                         G4doub << 
513 {                                              << 
514   return ComputeCrossSectionPerAtom(kinEnergy, << 
515             processName,                       << 
516                                     elm->GetZ( << 
517 }                                              << 
518                                                << 
519 //....oooOO0OOooo........oooOO0OOooo........oo << 
520                                                << 
521 inline G4double G4EmCalculator::ComputeCrossSe << 
522                        G4double kinEnergy, con << 
523                        const G4String& process << 
524                        G4int shellIdx, G4doubl << 
525 {                                              << 
526   return ComputeCrossSectionPerShell(kinEnergy << 
527              processName, elm->GetZasInt(),    << 
528              shellIdx, cut);                   << 
529 }                                              << 
530                                                << 
531 //....oooOO0OOooo........oooOO0OOooo........oo << 
532                                                << 
533 inline                                         << 
534 G4double G4EmCalculator::ComputeEnergyCutFromR << 
535                          G4double range,       << 
536        const G4String& particle,               << 
537        const G4String& material)               << 
538 {                                              << 
539   return ComputeEnergyCutFromRangeCut(range,Fi << 
540               FindMaterial(material));         << 
541 }                                              << 
542                                                << 
543 //....oooOO0OOooo........oooOO0OOooo........oo << 
544                                                << 
545 inline                                         << 
546 G4double G4EmCalculator::ComputeMeanFreePath(G << 
547                                              c << 
548                                              c << 
549                                              c << 
550                                                << 
551 {                                              << 
552   return ComputeMeanFreePath(kinEnergy,FindPar << 
553                              FindMaterial(mate << 
554 }                                              << 
555                                                << 
556 //....oooOO0OOooo........oooOO0OOooo........oo << 
557                                                << 
558 inline void G4EmCalculator::SetApplySmoothing( << 
559 {                                              << 
560   applySmoothing = val;                        << 
561 }                                              << 
562                                                << 
563 //....oooOO0OOooo........oooOO0OOooo........oo << 
564                                                   219 
565 #endif                                            220 #endif
566                                                   221