Geant4 Cross Reference |
>> 1 // This code implementation is the intellectual property of >> 2 // the GEANT4 collaboration. 1 // 3 // 2 // ******************************************* << 4 // By copying, distributing or modifying the Program (or any work 3 // * License and Disclaimer << 5 // based on the Program) you indicate your acceptance of this statement, 4 // * << 6 // and all its terms. 5 // * The Geant4 software is copyright of th << 7 // 6 // * the Geant4 Collaboration. It is provided << 8 // $Id: G4GammaConversion.hh,v 1.1.10.1 1999/12/07 20:50:48 gunter Exp $ 7 // * conditions of the Geant4 Software License << 9 // GEANT4 tag $Name: geant4-01-00 $ 8 // * LICENSE and available at http://cern.ch/ << 10 // 9 // * include a list of copyright holders. << 11 // 10 // * << 12 // ------------------------------------------------------------ 11 // * Neither the authors of this software syst << 13 // GEANT 4 class header file 12 // * institutes,nor the agencies providing fin << 14 // CERN Geneva Switzerland 13 // * work make any representation or warran << 15 // 14 // * regarding this software system or assum << 16 // For information related to this code contact: 15 // * use. Please see the license in the file << 17 // CERN, CN Division, ASD group 16 // * for the full disclaimer and the limitatio << 18 // History: first implementation, based on object model of 17 // * << 19 // 2nd December 1995, G.Cosmo 18 // * This code implementation is the result << 20 // ------------ G4GammaConversion physics process ------ 19 // * technical work of the GEANT4 collaboratio << 20 // * By using, copying, modifying or distri << 21 // * any work based on the software) you ag << 22 // * use in resulting scientific publicati << 23 // * acceptance of all terms of the Geant4 Sof << 24 // ******************************************* << 25 // << 26 // << 27 // << 28 // << 29 //------------------ G4GammaConversion physics << 30 // by Michel Maire, 24 May 1 21 // by Michel Maire, 24 May 1996 31 // << 22 // ************************************************************ 32 // 11-06-96, Added GetRandomAtom() method and 23 // 11-06-96, Added GetRandomAtom() method and new data member 33 // for cumulative total cross sectio 24 // for cumulative total cross section, by M.Maire 34 // 21-06-96, SetCuts inplementation, M.Maire 25 // 21-06-96, SetCuts inplementation, M.Maire 35 // 16-09-96, Dynamical array PartialSumSigma, 26 // 16-09-96, Dynamical array PartialSumSigma, M.Maire 36 // 14-01-97, crossection table + meanfreepath 27 // 14-01-97, crossection table + meanfreepath table. 37 // PartialSumSigma removed, M.Maire 28 // PartialSumSigma removed, M.Maire 38 // 14-03-97, new physics scheme for geant4alph 29 // 14-03-97, new physics scheme for geant4alpha, M.Maire 39 // 13-08-98, new methods SetBining() PrintInfo << 30 // 13-08-98, new methods SetBining() PrintInfo() 40 // 03-08-01, new methods Store/Retrieve Physic << 31 // ------------------------------------------------------------ 41 // 06-08-01, BuildThePhysicsTable() called fro << 42 // 19-09-01, come back to previous ProcessName << 43 // 20-09-01, DoIt: fminimalEnergy = 1*eV (mma) << 44 // 01-10-01, come back to BuildPhysicsTable(co << 45 // 13-08-04, suppress .icc file << 46 // public ComputeCrossSectionPerAtom << 47 // 09-11-04, Remove Retrieve tables (V.Ivantch << 48 // 19-04-05, Redesign - use G4VEmProcess inter << 49 // 04-05-05, Make class to be default (V.Ivanc << 50 // 09-08-06, add SetModel(G4VEmModel*) (mma) << 51 // 12-09-06, move SetModel(G4VEmModel*) in G4V << 52 // ------------------------------------------- << 53 << 54 // class description << 55 // << 56 << 57 //....oooOO0OOooo........oooOO0OOooo........oo << 58 //....oooOO0OOooo........oooOO0OOooo........oo << 59 32 60 #ifndef G4GammaConversion_h 33 #ifndef G4GammaConversion_h 61 #define G4GammaConversion_h 1 34 #define G4GammaConversion_h 1 62 35 >> 36 #include "G4ios.hh" 63 #include "globals.hh" 37 #include "globals.hh" 64 #include "G4VEmProcess.hh" << 38 #include "Randomize.hh" 65 #include "G4Gamma.hh" << 39 #include "G4VDiscreteProcess.hh" >> 40 #include "G4PhysicsTable.hh" >> 41 #include "G4PhysicsLogVector.hh" >> 42 #include "G4Element.hh" >> 43 #include "G4Gamma.hh" >> 44 #include "G4Electron.hh" >> 45 #include "G4Positron.hh" >> 46 #include "G4Step.hh" >> 47 >> 48 class G4GammaConversion : public G4VDiscreteProcess >> 49 >> 50 { >> 51 public: >> 52 >> 53 G4GammaConversion(const G4String& processName ="conv"); >> 54 >> 55 ~G4GammaConversion(); 66 56 67 //....oooOO0OOooo........oooOO0OOooo........oo << 57 G4bool IsApplicable(const G4ParticleDefinition&); 68 << 58 69 class G4ParticleDefinition; << 59 void SetPhysicsTableBining(G4double lowE, G4double highE, G4int nBins); 70 class G4VEmModel; << 71 class G4MaterialCutsCouple; << 72 class G4DynamicParticle; << 73 << 74 class G4GammaConversion : public G4VEmProcess << 75 60 76 { << 61 void BuildPhysicsTable(const G4ParticleDefinition& GammaType); 77 public: // with description << 62 >> 63 void PrintInfoDefinition(); 78 64 79 explicit G4GammaConversion(const G4String& p << 65 G4double GetMeanFreePath(const G4Track& aTrack, 80 G4ProcessType type = fElectromagnet << 66 G4double previousStepSize, >> 67 G4ForceCondition* condition); 81 68 82 ~G4GammaConversion() override; << 69 G4double GetMicroscopicCrossSection(const G4DynamicParticle* aDynamicGamma, >> 70 G4Element* anElement); 83 71 84 // true for Gamma only. << 72 G4VParticleChange* PostStepDoIt(const G4Track& aTrack, 85 G4bool IsApplicable(const G4ParticleDefiniti << 73 const G4Step& aStep); >> 74 >> 75 protected: 86 76 87 G4double MinPrimaryEnergy(const G4ParticleDe << 77 virtual G4double ComputeMicroscopicCrossSection(G4double GammaEnergy, 88 const G4Material*) override; << 78 G4double AtomicNumber); 89 79 90 // print documentation in html format << 80 virtual G4double ComputeMeanFreePath (G4double GammaEnergy, 91 void ProcessDescription(std::ostream&) const << 81 G4Material* aMaterial); 92 82 93 G4GammaConversion & operator=(const G4Gamma << 83 private: 94 G4GammaConversion(const G4GammaConversion&) << 95 84 96 protected: << 85 G4Element* SelectRandomAtom(const G4DynamicParticle* aDynamicGamma, >> 86 G4Material* aMaterial); 97 87 98 virtual void InitialiseProcess(const G4Parti << 88 G4double ScreenFunction1(G4double ScreenVariable); 99 89 100 private: << 90 G4double ScreenFunction2(G4double ScreenVariable); 101 91 102 G4bool isInitialised = false; << 92 private: >> 93 >> 94 // hide assignment operator as private >> 95 G4GammaConversion& operator=(const G4GammaConversion &right); >> 96 G4GammaConversion(const G4GammaConversion& ); >> 97 >> 98 private: >> 99 >> 100 G4PhysicsTable* theCrossSectionTable; // table for crossection >> 101 G4PhysicsTable* theMeanFreePathTable; >> 102 >> 103 G4double LowestEnergyLimit ; // low energy limit of the crossection formula >> 104 G4double HighestEnergyLimit ; // high energy limit of the crossection formula >> 105 G4int NumbBinTable ; // number of bins in the crossection table >> 106 >> 107 G4double MeanFreePath; // actual Mean Free Path (current medium) 103 }; 108 }; 104 109 105 //....oooOO0OOooo........oooOO0OOooo........oo << 110 #include "G4GammaConversion.icc" 106 111 107 #endif 112 #endif 108 113 109 114