Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/electromagnetic/lowenergy/include/G4PenelopeBremsstrahlungFS.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/lowenergy/include/G4PenelopeBremsstrahlungFS.hh (Version 11.3.0) and /processes/electromagnetic/lowenergy/include/G4PenelopeBremsstrahlungFS.hh (Version 10.0.p4)


  1 //                                                  1 //
  2 // *******************************************      2 // ********************************************************************
  3 // * License and Disclaimer                         3 // * License and Disclaimer                                           *
  4 // *                                                4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of th      5 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
  6 // * the Geant4 Collaboration.  It is provided      6 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
  7 // * conditions of the Geant4 Software License      7 // * conditions of the Geant4 Software License,  included in the file *
  8 // * LICENSE and available at  http://cern.ch/      8 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
  9 // * include a list of copyright holders.           9 // * include a list of copyright holders.                             *
 10 // *                                               10 // *                                                                  *
 11 // * Neither the authors of this software syst     11 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing fin     12 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warran     13 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assum     14 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file      15 // * use.  Please see the license in the file  LICENSE  and URL above *
 16 // * for the full disclaimer and the limitatio     16 // * for the full disclaimer and the limitation of liability.         *
 17 // *                                               17 // *                                                                  *
 18 // * This  code  implementation is the result      18 // * This  code  implementation is the result of  the  scientific and *
 19 // * technical work of the GEANT4 collaboratio     19 // * technical work of the GEANT4 collaboration.                      *
 20 // * By using,  copying,  modifying or  distri     20 // * By using,  copying,  modifying or  distributing the software (or *
 21 // * any work based  on the software)  you  ag     21 // * any work based  on the software)  you  agree  to acknowledge its *
 22 // * use  in  resulting  scientific  publicati     22 // * use  in  resulting  scientific  publications,  and indicate your *
 23 // * acceptance of all terms of the Geant4 Sof     23 // * acceptance of all terms of the Geant4 Software license.          *
 24 // *******************************************     24 // ********************************************************************
 25 //                                                 25 //
                                                   >>  26 // $Id: G4PenelopeBremsstrahlungFS.hh 75573 2013-11-04 11:48:15Z gcosmo $
 26 //                                                 27 //
 27 // Author: Luciano Pandola                         28 // Author: Luciano Pandola
 28 //                                                 29 //
 29 // History:                                        30 // History:
 30 // -----------                                     31 // -----------
 31 // 20 Oct 2010   L. Pandola   1st implementati     32 // 20 Oct 2010   L. Pandola   1st implementation. 
 32 // 02 May 2011   L. Pandola   Remove dependenc     33 // 02 May 2011   L. Pandola   Remove dependency on CLHEP::HepMatrix
 33 // 24 May 2011   L. Pandola   Renamed (make de     34 // 24 May 2011   L. Pandola   Renamed (make default Penelope)
 34 // 03 Oct 2013   L. Pandola   Migration to MT      35 // 03 Oct 2013   L. Pandola   Migration to MT
 35 // 07 Oct 2013   L. Pandola   Add verbosity an     36 // 07 Oct 2013   L. Pandola   Add verbosity and ismaster flag for the 
 36 //                             master-only met     37 //                             master-only methods
 37 // 30 Oct 2013   L. Pandola   Add a G4Cache of     38 // 30 Oct 2013   L. Pandola   Add a G4Cache of temporary vectors as 
 38 //                             private member.     39 //                             private member. 
 39 //                                                 40 //
 40 // -------------------------------------------     41 // -------------------------------------------------------------------
 41 //                                                 42 //
 42 // Class description:                              43 // Class description:
 43 // Helper class for the calculation of final s     44 // Helper class for the calculation of final state (energy and angular 
 44 // distribution) for bremsstrahlung, Penelope      45 // distribution) for bremsstrahlung, Penelope Model, version 2008
 45 // -------------------------------------------     46 // -------------------------------------------------------------------
 46                                                    47 
 47 #ifndef G4PENELOPEBREMSSTRAHLUNGFS_HH              48 #ifndef G4PENELOPEBREMSSTRAHLUNGFS_HH
 48 #define G4PENELOPEBREMSSTRAHLUNGFS_HH 1            49 #define G4PENELOPEBREMSSTRAHLUNGFS_HH 1
 49                                                    50 
 50 #include "globals.hh"                              51 #include "globals.hh"
 51 #include "G4DataVector.hh"                         52 #include "G4DataVector.hh"
 52 #include "G4Cache.hh"                              53 #include "G4Cache.hh"
 53 #include <map>                                     54 #include <map>
 54                                                    55 
 55 class G4PhysicsFreeVector;                         56 class G4PhysicsFreeVector;
 56 class G4PhysicsLogVector;                          57 class G4PhysicsLogVector;
 57 class G4Material;                                  58 class G4Material;
 58 class G4PhysicsTable;                              59 class G4PhysicsTable;
 59                                                    60 
 60 class G4PenelopeBremsstrahlungFS                   61 class G4PenelopeBremsstrahlungFS 
 61 {                                                  62 {
 62 public:                                            63 public:
 63   //! Only master models are supposed to creat     64   //! Only master models are supposed to create instances
 64   explicit G4PenelopeBremsstrahlungFS(G4int ve <<  65   G4PenelopeBremsstrahlungFS(G4int verbosity=0);
 65   ~G4PenelopeBremsstrahlungFS();                   66   ~G4PenelopeBremsstrahlungFS();
 66                                                    67  
 67   //!                                              68   //!
 68   //! Master and workers (do not touch tables)     69   //! Master and workers (do not touch tables)
 69   //! All of them are const                        70   //! All of them are const
 70   //!                                              71   //!
 71   G4double GetEffectiveZSquared(const G4Materi     72   G4double GetEffectiveZSquared(const G4Material* mat) const;
 72   size_t GetNBinsX() const {return fNBinsX;};  <<  73   size_t GetNBinsX() const {return nBinsX;};
 73   G4double GetMomentumIntegral(G4double* y,        74   G4double GetMomentumIntegral(G4double* y,        
 74              G4double up,G4int momOrder) const     75              G4double up,G4int momOrder) const;
 75   const G4PhysicsTable* GetScaledXSTable(const     76   const G4PhysicsTable* GetScaledXSTable(const G4Material*,
 76            const G4double cut) const;              77            const G4double cut) const;
 77   G4double SampleGammaEnergy(G4double energy,      78   G4double SampleGammaEnergy(G4double energy,
 78            const G4Material*, const G4double c     79            const G4Material*, const G4double cut) const;
 79                                                    80 
 80   //! Reserved for the master model: they buil     81   //! Reserved for the master model: they build and handle tables
 81   void ClearTables(G4bool isMaster=true);          82   void ClearTables(G4bool isMaster=true);
 82   void BuildScaledXSTable(const G4Material* ma     83   void BuildScaledXSTable(const G4Material* material,G4double cut,
 83         G4bool isMaster);                          84         G4bool isMaster);
 84                                                    85 
 85   void SetVerbosity(G4int ver){fVerbosity=ver;     86   void SetVerbosity(G4int ver){fVerbosity=ver;};
 86   G4int GetVerbosity(){return fVerbosity;};        87   G4int GetVerbosity(){return fVerbosity;};
 87                                                    88 
 88   G4PenelopeBremsstrahlungFS & operator=(const << 
 89   G4PenelopeBremsstrahlungFS(const G4PenelopeB << 
 90                                                << 
 91 private:                                           89 private:
 92    void ReadDataFile(G4int Z);                 <<  90   //assignment operator
 93   //Tables for energy sampling                 <<  91   G4PenelopeBremsstrahlungFS & operator=(const G4PenelopeBremsstrahlungFS &right);
 94   void InitializeEnergySampling(const G4Materi <<  92   //copy constructor
 95                                                <<  93   G4PenelopeBremsstrahlungFS(const G4PenelopeBremsstrahlungFS&);
                                                   >>  94   
 96   //Differential cross section tables              95   //Differential cross section tables
 97   //Table contains G4PhysicsVectors of log(XS(     96   //Table contains G4PhysicsVectors of log(XS(E,x)) vs. log(E) 
 98   //for a grid of 32 values in x (= reduced ph     97   //for a grid of 32 values in x (= reduced photon energy)
 99   std::map< std::pair<const G4Material*,G4doub     98   std::map< std::pair<const G4Material*,G4double> , 
100       G4PhysicsTable*> *fReducedXSTable;       <<  99       G4PhysicsTable*> *theReducedXSTable; 
101                                                   100 
102   std::map<const G4Material*,G4double> *fEffec << 101   std::map<const G4Material*,G4double> *theEffectiveZSq;
103                                                   102   
                                                   >> 103 
                                                   >> 104   //Element data table
                                                   >> 105   static const size_t nBinsE = 57;
                                                   >> 106   static const size_t nBinsX = 32;
                                                   >> 107   //x and E grids used in the data tables
                                                   >> 108   G4double theXGrid[nBinsX]; 
                                                   >> 109   G4double theEGrid[nBinsE];
                                                   >> 110   void ReadDataFile(G4int Z);  
                                                   >> 111 
104   //Map of element data vs. Z.                    112   //Map of element data vs. Z. 
105   //This is conceptually an array [57][33] wit    113   //This is conceptually an array [57][33] with 57 energy 
106   //points and 32 points in x. The 33-th colum    114   //points and 32 points in x. The 33-th column gives the total XS vs. E.
107   //It is implemented as a one-dimensional arr    115   //It is implemented as a one-dimensional array of dimension
108   //57*33=1881 elements. data[e][x] --> theEle    116   //57*33=1881 elements. data[e][x] --> theElementData[e*(nBinsX+1)+x]
109   std::map<G4int,G4DataVector*> *fElementData; << 117   std::map<G4int,G4DataVector*> *theElementData;
110                                                   118 
                                                   >> 119   //Tables for energy sampling
                                                   >> 120   void InitializeEnergySampling(const G4Material*,G4double cut);
                                                   >> 121   
111   //Table contains G4PhysicsVectors of integra    122   //Table contains G4PhysicsVectors of integral_XS(E,x) vs. x for a grid of 
112   //57 values in energy                           123   //57 values in energy
113   std::map< std::pair<const G4Material*,G4doub    124   std::map< std::pair<const G4Material*,G4double> , 
114       G4PhysicsTable*> *fSamplingTable;        << 125       G4PhysicsTable*> *theSamplingTable;
115   std::map< std::pair<const G4Material*,G4doub    126   std::map< std::pair<const G4Material*,G4double> , 
116       G4PhysicsFreeVector* > *fPBcut;          << 127       G4PhysicsFreeVector* > *thePBcut;
117                                                   128  
118   //temporary vector. Used as member variable     129   //temporary vector. Used as member variable to avoid to book/release the 
119   //memory on the fly. This vector is over-wri    130   //memory on the fly. This vector is over-written at every call of 
120   //SampleGammaEnergy(). It is thread-local (e    131   //SampleGammaEnergy(). It is thread-local (each thread has its own) 
121   //and managed by G4Cache                        132   //and managed by G4Cache
122   G4Cache<G4PhysicsFreeVector*> fCache;           133   G4Cache<G4PhysicsFreeVector*> fCache;
123                                                << 
124   //Element data table                         << 
125   static const size_t fNBinsE = 57;            << 
126   static const size_t fNBinsX = 32;            << 
127   //x and E grids used in the data tables      << 
128   G4double theXGrid[fNBinsX];                  << 
129   G4double theEGrid[fNBinsE];                  << 
130                                                   134 
131   G4int fVerbosity;                               135   G4int fVerbosity;
132                                                   136 
133 };                                                137 };
134                                                   138 
135 #endif                                            139 #endif
136                                                   140 
137                                                   141