Geant4 Cross Reference |
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 // 26 // 23 // 27 // ------------------------------------------- 24 // ------------------------------------------------------------------- 28 // 25 // 29 // GEANT4 Class file 26 // GEANT4 Class file 30 // 27 // 31 // 28 // 32 // File name: G4Generator2BN 29 // File name: G4Generator2BN 33 // 30 // 34 // Author: Andreia Trindade (andreia@lip.p 31 // Author: Andreia Trindade (andreia@lip.pt) 35 // Pedro Rodrigues (psilva@lip.pt 32 // Pedro Rodrigues (psilva@lip.pt) 36 // Luis Peralta (luis@lip.pt) 33 // Luis Peralta (luis@lip.pt) 37 // 34 // 38 // Creation date: 2 June 2003 35 // Creation date: 2 June 2003 39 // 36 // 40 // Modifications: 37 // Modifications: 41 // 02 Jun 2003 First 38 // 02 Jun 2003 First implementation acording with new design 42 // 07 Nov 2003 Locku 39 // 07 Nov 2003 Lockup tables for fast initialization 43 // 40 // 44 // 41 // 45 // Class Description: 42 // Class Description: 46 // 43 // 47 // Concrete class for Bremsstrahlung Angular D 44 // Concrete class for Bremsstrahlung Angular Distribution Generation - 2BN Distribution 48 // Further documentation available from http:/ 45 // Further documentation available from http://www.ge.infn.it/geant4/lowE 49 46 50 // ------------------------------------------- 47 // ------------------------------------------------------------------- 51 // 48 // 52 49 53 #ifndef G4Generator2BN_h 50 #ifndef G4Generator2BN_h 54 #define G4Generator2BN_h 1 51 #define G4Generator2BN_h 1 55 52 56 #include "G4ios.hh" 53 #include "G4ios.hh" 57 #include "globals.hh" 54 #include "globals.hh" 58 #include "G4VEmAngularDistribution.hh" << 55 #include "G4VBremAngularDistribution.hh" 59 #include "G4Generator2BS.hh" << 60 56 61 class G4Generator2BN : public G4VEmAngularDist << 57 class G4Generator2BN : public G4VBremAngularDistribution 62 { 58 { 63 59 64 public: 60 public: 65 explicit G4Generator2BN(const G4String& name << 66 61 67 virtual ~G4Generator2BN(){;}; << 62 G4Generator2BN(const G4String& name); 68 63 69 G4ThreeVector& SampleDirection(const G4Dynam << 64 ~G4Generator2BN(); 70 G4double out_energy, << 65 71 G4int Z, << 66 G4double PolarAngle(const G4double initial_energy, 72 const G4Material* mat = nullptr) over << 67 const G4double final_energy, 73 << 68 const G4int Z); 74 void PrintGeneratorInformation() const overr << 69 >> 70 void PrintGeneratorInformation() const; >> 71 >> 72 public: 75 73 76 void SetInterpolationThetaIncrement(G4double 74 void SetInterpolationThetaIncrement(G4double increment) {dtheta = increment;}; 77 G4double GetInterpolationThetaIncrement() {r 75 G4double GetInterpolationThetaIncrement() {return dtheta;}; 78 76 79 void SetGammaCutValue(G4double cutValue) {kc 77 void SetGammaCutValue(G4double cutValue) {kcut = cutValue;}; 80 G4double GetGammaCutValue() {return kcut;}; 78 G4double GetGammaCutValue() {return kcut;}; 81 79 82 void ConstructMajorantSurface(); 80 void ConstructMajorantSurface(); 83 81 84 G4Generator2BN & operator=(const G4Generato << 85 G4Generator2BN(const G4Generator2BN&) = del << 86 << 87 protected: 82 protected: 88 83 89 G4double CalculateFkt(G4double k, G4double t 84 G4double CalculateFkt(G4double k, G4double theta, G4double A, G4double c) const; 90 G4double Calculatedsdkdt(G4double kout, G4do 85 G4double Calculatedsdkdt(G4double kout, G4double theta, G4double Eel) const; >> 86 G4double Generate2BN(G4double Ek, G4double k) const; >> 87 91 88 92 private: 89 private: 93 G4Generator2BS fGenerator2BS; << 90 94 static G4double Atab[320]; << 95 static G4double ctab[320]; << 96 G4double b; 91 G4double b; 97 << 92 G4int index_min, index_max; 98 G4double kmin, Ekmin; 93 G4double kmin, Ekmin; 99 G4double dtheta; 94 G4double dtheta; 100 G4double kcut; 95 G4double kcut; 101 << 96 static G4double Atab[320]; 102 G4int index_min, index_max; << 97 static G4double ctab[320]; 103 G4int nwarn; << 98 >> 99 // hide assignment operator >> 100 G4Generator2BN & operator=(const G4Generator2BN &right); >> 101 G4Generator2BN(const G4Generator2BN&); 104 102 105 }; 103 }; 106 104 107 #endif 105 #endif 108 106 109 107