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.7.p1)


  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 //                                                 26 //
 27 // Author: Luciano Pandola                         27 // Author: Luciano Pandola
 28 //                                                 28 //
 29 // History:                                        29 // History:
 30 // -----------                                     30 // -----------
 31 // 20 Oct 2010   L. Pandola   1st implementati     31 // 20 Oct 2010   L. Pandola   1st implementation. 
 32 // 02 May 2011   L. Pandola   Remove dependenc     32 // 02 May 2011   L. Pandola   Remove dependency on CLHEP::HepMatrix
 33 // 24 May 2011   L. Pandola   Renamed (make de     33 // 24 May 2011   L. Pandola   Renamed (make default Penelope)
 34 // 03 Oct 2013   L. Pandola   Migration to MT      34 // 03 Oct 2013   L. Pandola   Migration to MT
 35 // 07 Oct 2013   L. Pandola   Add verbosity an     35 // 07 Oct 2013   L. Pandola   Add verbosity and ismaster flag for the 
 36 //                             master-only met     36 //                             master-only methods
 37 // 30 Oct 2013   L. Pandola   Add a G4Cache of     37 // 30 Oct 2013   L. Pandola   Add a G4Cache of temporary vectors as 
 38 //                             private member.     38 //                             private member. 
 39 //                                                 39 //
 40 // -------------------------------------------     40 // -------------------------------------------------------------------
 41 //                                                 41 //
 42 // Class description:                              42 // Class description:
 43 // Helper class for the calculation of final s     43 // Helper class for the calculation of final state (energy and angular 
 44 // distribution) for bremsstrahlung, Penelope      44 // distribution) for bremsstrahlung, Penelope Model, version 2008
 45 // -------------------------------------------     45 // -------------------------------------------------------------------
 46                                                    46 
 47 #ifndef G4PENELOPEBREMSSTRAHLUNGFS_HH              47 #ifndef G4PENELOPEBREMSSTRAHLUNGFS_HH
 48 #define G4PENELOPEBREMSSTRAHLUNGFS_HH 1            48 #define G4PENELOPEBREMSSTRAHLUNGFS_HH 1
 49                                                    49 
 50 #include "globals.hh"                              50 #include "globals.hh"
 51 #include "G4DataVector.hh"                         51 #include "G4DataVector.hh"
 52 #include "G4Cache.hh"                              52 #include "G4Cache.hh"
 53 #include <map>                                     53 #include <map>
 54                                                    54 
 55 class G4PhysicsFreeVector;                         55 class G4PhysicsFreeVector;
 56 class G4PhysicsLogVector;                          56 class G4PhysicsLogVector;
 57 class G4Material;                                  57 class G4Material;
 58 class G4PhysicsTable;                              58 class G4PhysicsTable;
 59                                                    59 
 60 class G4PenelopeBremsstrahlungFS                   60 class G4PenelopeBremsstrahlungFS 
 61 {                                                  61 {
 62 public:                                            62 public:
 63   //! Only master models are supposed to creat     63   //! Only master models are supposed to create instances
 64   explicit G4PenelopeBremsstrahlungFS(G4int ve <<  64   G4PenelopeBremsstrahlungFS(G4int verbosity=0);
 65   ~G4PenelopeBremsstrahlungFS();                   65   ~G4PenelopeBremsstrahlungFS();
 66                                                    66  
 67   //!                                              67   //!
 68   //! Master and workers (do not touch tables)     68   //! Master and workers (do not touch tables)
 69   //! All of them are const                        69   //! All of them are const
 70   //!                                              70   //!
 71   G4double GetEffectiveZSquared(const G4Materi     71   G4double GetEffectiveZSquared(const G4Material* mat) const;
 72   size_t GetNBinsX() const {return fNBinsX;};  <<  72   size_t GetNBinsX() const {return nBinsX;};
 73   G4double GetMomentumIntegral(G4double* y,        73   G4double GetMomentumIntegral(G4double* y,        
 74              G4double up,G4int momOrder) const     74              G4double up,G4int momOrder) const;
 75   const G4PhysicsTable* GetScaledXSTable(const     75   const G4PhysicsTable* GetScaledXSTable(const G4Material*,
 76            const G4double cut) const;              76            const G4double cut) const;
 77   G4double SampleGammaEnergy(G4double energy,      77   G4double SampleGammaEnergy(G4double energy,
 78            const G4Material*, const G4double c     78            const G4Material*, const G4double cut) const;
 79                                                    79 
 80   //! Reserved for the master model: they buil     80   //! Reserved for the master model: they build and handle tables
 81   void ClearTables(G4bool isMaster=true);          81   void ClearTables(G4bool isMaster=true);
 82   void BuildScaledXSTable(const G4Material* ma     82   void BuildScaledXSTable(const G4Material* material,G4double cut,
 83         G4bool isMaster);                          83         G4bool isMaster);
 84                                                    84 
 85   void SetVerbosity(G4int ver){fVerbosity=ver;     85   void SetVerbosity(G4int ver){fVerbosity=ver;};
 86   G4int GetVerbosity(){return fVerbosity;};        86   G4int GetVerbosity(){return fVerbosity;};
 87                                                    87 
 88   G4PenelopeBremsstrahlungFS & operator=(const << 
 89   G4PenelopeBremsstrahlungFS(const G4PenelopeB << 
 90                                                << 
 91 private:                                           88 private:
 92    void ReadDataFile(G4int Z);                 <<  89   //assignment operator
 93   //Tables for energy sampling                 <<  90   G4PenelopeBremsstrahlungFS & operator=(const G4PenelopeBremsstrahlungFS &right);
 94   void InitializeEnergySampling(const G4Materi <<  91   //copy constructor
 95                                                <<  92   G4PenelopeBremsstrahlungFS(const G4PenelopeBremsstrahlungFS&);
                                                   >>  93   
 96   //Differential cross section tables              94   //Differential cross section tables
 97   //Table contains G4PhysicsVectors of log(XS(     95   //Table contains G4PhysicsVectors of log(XS(E,x)) vs. log(E) 
 98   //for a grid of 32 values in x (= reduced ph     96   //for a grid of 32 values in x (= reduced photon energy)
 99   std::map< std::pair<const G4Material*,G4doub     97   std::map< std::pair<const G4Material*,G4double> , 
100       G4PhysicsTable*> *fReducedXSTable;       <<  98       G4PhysicsTable*> *theReducedXSTable; 
101                                                    99 
102   std::map<const G4Material*,G4double> *fEffec << 100   std::map<const G4Material*,G4double> *theEffectiveZSq;
103                                                   101   
                                                   >> 102 
                                                   >> 103   //Element data table
                                                   >> 104   static const size_t nBinsE = 57;
                                                   >> 105   static const size_t nBinsX = 32;
                                                   >> 106   //x and E grids used in the data tables
                                                   >> 107   G4double theXGrid[nBinsX]; 
                                                   >> 108   G4double theEGrid[nBinsE];
                                                   >> 109   void ReadDataFile(G4int Z);  
                                                   >> 110 
104   //Map of element data vs. Z.                    111   //Map of element data vs. Z. 
105   //This is conceptually an array [57][33] wit    112   //This is conceptually an array [57][33] with 57 energy 
106   //points and 32 points in x. The 33-th colum    113   //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    114   //It is implemented as a one-dimensional array of dimension
108   //57*33=1881 elements. data[e][x] --> theEle    115   //57*33=1881 elements. data[e][x] --> theElementData[e*(nBinsX+1)+x]
109   std::map<G4int,G4DataVector*> *fElementData; << 116   std::map<G4int,G4DataVector*> *theElementData;
110                                                   117 
                                                   >> 118   //Tables for energy sampling
                                                   >> 119   void InitializeEnergySampling(const G4Material*,G4double cut);
                                                   >> 120   
111   //Table contains G4PhysicsVectors of integra    121   //Table contains G4PhysicsVectors of integral_XS(E,x) vs. x for a grid of 
112   //57 values in energy                           122   //57 values in energy
113   std::map< std::pair<const G4Material*,G4doub    123   std::map< std::pair<const G4Material*,G4double> , 
114       G4PhysicsTable*> *fSamplingTable;        << 124       G4PhysicsTable*> *theSamplingTable;
115   std::map< std::pair<const G4Material*,G4doub    125   std::map< std::pair<const G4Material*,G4double> , 
116       G4PhysicsFreeVector* > *fPBcut;          << 126       G4PhysicsFreeVector* > *thePBcut;
117                                                   127  
118   //temporary vector. Used as member variable     128   //temporary vector. Used as member variable to avoid to book/release the 
119   //memory on the fly. This vector is over-wri    129   //memory on the fly. This vector is over-written at every call of 
120   //SampleGammaEnergy(). It is thread-local (e    130   //SampleGammaEnergy(). It is thread-local (each thread has its own) 
121   //and managed by G4Cache                        131   //and managed by G4Cache
122   G4Cache<G4PhysicsFreeVector*> fCache;           132   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                                                   133 
131   G4int fVerbosity;                               134   G4int fVerbosity;
132                                                   135 
133 };                                                136 };
134                                                   137 
135 #endif                                            138 #endif
136                                                   139 
137                                                   140