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 // >> 23 // $Id: G4eBremsstrahlung.hh,v 1.23 2004/05/07 16:52:42 vnivanch Exp $ >> 24 // GEANT4 tag $Name: geant4-06-02 $ 26 // 25 // 27 // ------------------------------------------- 26 // ------------------------------------------------------------------- 28 // 27 // 29 // GEANT4 Class header file 28 // GEANT4 Class header file 30 // 29 // 31 // 30 // 32 // File name: G4eBremsstrahlung 31 // File name: G4eBremsstrahlung 33 // 32 // 34 // Author: Laszlo Urban 33 // Author: Laszlo Urban 35 // 34 // 36 // Creation date: 24.06.1996 35 // Creation date: 24.06.1996 37 // 36 // 38 // Modifications: 37 // Modifications: 39 // 38 // 40 // 01-10-96 new type G4OrderedTable; ComputeP 39 // 01-10-96 new type G4OrderedTable; ComputePartialSumSigma() 41 // 20-03-97 new energy loss+ionisation+brems s 40 // 20-03-97 new energy loss+ionisation+brems scheme, L.Urban 42 // 01-09-98 new method PrintInfo() 41 // 01-09-98 new method PrintInfo() 43 // 10-02-00 modifications , new e.m. structure 42 // 10-02-00 modifications , new e.m. structure, L.Urban 44 // 07-08-00 new cross section/en.loss parametr 43 // 07-08-00 new cross section/en.loss parametrisation, LPM flag , L.Urban 45 // 09-08-01 new methods Store/Retrieve Physics 44 // 09-08-01 new methods Store/Retrieve PhysicsTable (mma) 46 // 19-09-01 come back to previous process name 45 // 19-09-01 come back to previous process name "eBrem" 47 // 29-10-01 all static functions no more inlin 46 // 29-10-01 all static functions no more inlined (mma) 48 // 07-01-02 new design of em processes (V.Ivan 47 // 07-01-02 new design of em processes (V.Ivanchenko) 49 // 26-12-02 secondary production moved to deri 48 // 26-12-02 secondary production moved to derived classes (VI) 50 // 24-01-03 Make models region aware (V.Ivanch 49 // 24-01-03 Make models region aware (V.Ivanchenko) 51 // 05-02-03 Fix compilation warnings (V.Ivanch 50 // 05-02-03 Fix compilation warnings (V.Ivanchenko) 52 // 08-08-03 STD substitute standard (V.Ivanch 51 // 08-08-03 STD substitute standard (V.Ivanchenko) 53 // 17-10-03 PrintInfoDefinition - virtual (V.I 52 // 17-10-03 PrintInfoDefinition - virtual (V.Ivanchenko) 54 // 12-11-03 G4EnergyLossSTD -> G4EnergyLossPro 53 // 12-11-03 G4EnergyLossSTD -> G4EnergyLossProcess (V.Ivanchenko) 55 // 21-01-04 Migrade to G4ParticleChangeForLoss 54 // 21-01-04 Migrade to G4ParticleChangeForLoss (V.Ivanchenko) 56 // 04-11-04 add gamma threshold (V.Ivanchenko) << 55 // 57 // 08-11-04 Migration to new interface of Stor << 58 // 08-04-05 Major optimisation of internal int << 59 // 11-04-04 Move MaxSecondaryEnergy to models << 60 // 56 // 61 // Class Description: 57 // Class Description: 62 // 58 // 63 // This class manages the bremsstrahlung for e 59 // This class manages the bremsstrahlung for e-/e+ 64 // it inherites from G4VContinuousDiscreteProc 60 // it inherites from G4VContinuousDiscreteProcess via G4VEnergyLoss. 65 // 61 // 66 62 67 // ------------------------------------------- 63 // ------------------------------------------------------------------- 68 // 64 // 69 65 70 #ifndef G4eBremsstrahlung_h 66 #ifndef G4eBremsstrahlung_h 71 #define G4eBremsstrahlung_h 1 67 #define G4eBremsstrahlung_h 1 72 68 73 #include "G4VEnergyLossProcess.hh" 69 #include "G4VEnergyLossProcess.hh" 74 #include "G4DynamicParticle.hh" << 75 #include "G4Electron.hh" 70 #include "G4Electron.hh" 76 #include "G4Positron.hh" 71 #include "G4Positron.hh" 77 72 78 class G4Material; 73 class G4Material; 79 74 80 class G4eBremsstrahlung : public G4VEnergyLoss 75 class G4eBremsstrahlung : public G4VEnergyLossProcess 81 { 76 { 82 77 83 public: 78 public: 84 79 85 explicit G4eBremsstrahlung(const G4String& n << 80 G4eBremsstrahlung(const G4String& name = "eBrem"); 86 << 87 ~G4eBremsstrahlung() override; << 88 81 89 G4bool IsApplicable(const G4ParticleDefiniti << 82 ~G4eBremsstrahlung(); 90 << 91 // print documentation in html format << 92 void ProcessDescription(std::ostream&) const << 93 83 94 // hide assignment operator << 84 G4bool IsApplicable(const G4ParticleDefinition& p) 95 G4eBremsstrahlung & operator=(const G4eBrems << 85 {return (&p == G4Electron::Electron() || &p == G4Positron::Positron());}; 96 G4eBremsstrahlung(const G4eBremsstrahlung&) << 97 86 98 protected: << 87 virtual G4double MinPrimaryEnergy(const G4ParticleDefinition*, >> 88 const G4Material*, G4double cut) >> 89 {return cut;}; >> 90 >> 91 virtual std::vector<G4Track*>* SecondariesAlongStep( >> 92 const G4Step&, >> 93 G4double&, >> 94 G4double&, >> 95 G4double&) {return 0;}; >> 96 >> 97 virtual void SecondariesPostStep( >> 98 G4VEmModel*, >> 99 const G4MaterialCutsCouple*, >> 100 const G4DynamicParticle*, >> 101 G4double&, >> 102 G4double&); 99 103 >> 104 virtual void PrintInfoDefinition(); 100 // Print out of the class parameters 105 // Print out of the class parameters 101 void StreamProcessInfo(std::ostream& outFile << 102 106 103 void << 107 protected: 104 InitialiseEnergyLossProcess(const G4Particle << 108 105 const G4ParticleDefinition*) overr << 109 virtual G4double MaxSecondaryEnergy(const G4DynamicParticle* dynParticle) >> 110 {return dynParticle->GetKineticEnergy();}; 106 111 107 private: 112 private: 108 113 109 G4bool isInitialised = false; << 114 void InitialiseProcess(); >> 115 >> 116 // hide assignment operator >> 117 G4eBremsstrahlung & operator=(const G4eBremsstrahlung &right); >> 118 G4eBremsstrahlung(const G4eBremsstrahlung&); >> 119 110 }; 120 }; >> 121 >> 122 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... >> 123 >> 124 #include "G4VEmModel.hh" >> 125 >> 126 inline void G4eBremsstrahlung::SecondariesPostStep( >> 127 G4VEmModel* model, >> 128 const G4MaterialCutsCouple* couple, >> 129 const G4DynamicParticle* dp, >> 130 G4double& tcut, >> 131 G4double& kinEnergy) >> 132 { >> 133 G4DynamicParticle* gamma = model->SampleSecondary(couple, dp, tcut, kinEnergy); >> 134 fParticleChange.SetNumberOfSecondaries(1); >> 135 fParticleChange.AddSecondary(gamma); >> 136 kinEnergy -= gamma->GetKineticEnergy(); >> 137 } 111 138 112 //....oooOO0OOooo........oooOO0OOooo........oo 139 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 113 140 114 #endif 141 #endif 115 142 116 143