Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/electromagnetic/standard/include/G4GammaConversion.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/standard/include/G4GammaConversion.hh (Version 11.3.0) and /processes/electromagnetic/standard/include/G4GammaConversion.hh (Version 4.1.p1)


  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 //
                                                   >>  24 // $Id: G4GammaConversion.hh,v 1.10 2002/04/09 17:34:40 vnivanch Exp $
                                                   >>  25 // GEANT4 tag $Name: geant4-04-01 $
 27 //                                                 26 //
 28 //                                             <<  27 //------------------ G4GammaConversion physics process -------------------------
 29 //------------------ G4GammaConversion physics << 
 30 //                   by Michel Maire, 24 May 1     28 //                   by Michel Maire, 24 May 1996
 31 //                                                 29 //
 32 // 11-06-96, Added GetRandomAtom() method and      30 // 11-06-96, Added GetRandomAtom() method and new data member
 33 //           for cumulative total cross sectio     31 //           for cumulative total cross section, by M.Maire
 34 // 21-06-96, SetCuts inplementation, M.Maire       32 // 21-06-96, SetCuts inplementation, M.Maire
 35 // 16-09-96, Dynamical array PartialSumSigma,      33 // 16-09-96, Dynamical array PartialSumSigma, M.Maire
 36 // 14-01-97, crossection table + meanfreepath      34 // 14-01-97, crossection table + meanfreepath table.
 37 //           PartialSumSigma removed, M.Maire      35 //           PartialSumSigma removed, M.Maire
 38 // 14-03-97, new physics scheme for geant4alph     36 // 14-03-97, new physics scheme for geant4alpha, M.Maire
 39 // 13-08-98, new methods SetBining() PrintInfo     37 // 13-08-98, new methods SetBining() PrintInfo()
 40 // 03-08-01, new methods Store/Retrieve Physic     38 // 03-08-01, new methods Store/Retrieve PhysicsTable (mma)
 41 // 06-08-01, BuildThePhysicsTable() called fro     39 // 06-08-01, BuildThePhysicsTable() called from constructor (mma)
 42 // 19-09-01, come back to previous ProcessName     40 // 19-09-01, come back to previous ProcessName: "conv"
 43 // 20-09-01, DoIt: fminimalEnergy = 1*eV (mma) <<  41 // 20-09-01, DoIt: fminimalEnergy = 1*eV (mma) 
 44 // 01-10-01, come back to BuildPhysicsTable(co <<  42 // 01-10-01, come back to BuildPhysicsTable(const G4ParticleDefinition&)    
 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 // -------------------------------------------     43 // -----------------------------------------------------------------------------
 53                                                    44 
 54 // class description                               45 // class description
 55 //                                                 46 //
                                                   >>  47 // gamma ---> e+ e- 
                                                   >>  48 // inherit from G4VDiscreteProcess
                                                   >>  49 //
 56                                                    50 
 57 //....oooOO0OOooo........oooOO0OOooo........oo     51 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 58 //....oooOO0OOooo........oooOO0OOooo........oo     52 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 59                                                    53 
 60 #ifndef G4GammaConversion_h                        54 #ifndef G4GammaConversion_h
 61 #define G4GammaConversion_h 1                      55 #define G4GammaConversion_h 1
 62                                                    56 
                                                   >>  57 #include "G4ios.hh" 
 63 #include "globals.hh"                              58 #include "globals.hh"
 64 #include "G4VEmProcess.hh"                     <<  59 #include "Randomize.hh" 
 65 #include "G4Gamma.hh"                          <<  60 #include "G4VDiscreteProcess.hh"
                                                   >>  61 #include "G4PhysicsTable.hh"
                                                   >>  62 #include "G4PhysicsLogVector.hh"
                                                   >>  63 #include "G4Element.hh"
                                                   >>  64 #include "G4Gamma.hh" 
                                                   >>  65 #include "G4Electron.hh"
                                                   >>  66 #include "G4Positron.hh"
                                                   >>  67 #include "G4Step.hh"
 66                                                    68 
 67 //....oooOO0OOooo........oooOO0OOooo........oo     69 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
                                                   >>  70  
                                                   >>  71 class G4GammaConversion : public G4VDiscreteProcess
                                                   >>  72  
                                                   >>  73 {  
                                                   >>  74   public:  // with description
                                                   >>  75  
                                                   >>  76      G4GammaConversion(const G4String& processName ="conv");
                                                   >>  77  
                                                   >>  78     ~G4GammaConversion();
                                                   >>  79 
                                                   >>  80      G4bool IsApplicable(const G4ParticleDefinition&);
                                                   >>  81        // true for Gamma only.
                                                   >>  82           
                                                   >>  83      void SetPhysicsTableBining(G4double lowE, G4double highE, G4int nBins);
                                                   >>  84        // Allows to define the binning of the PhysicsTables, 
                                                   >>  85        // before to build them.
                                                   >>  86      
                                                   >>  87      void BuildPhysicsTable(const G4ParticleDefinition&);
                                                   >>  88        // It builds the total CrossSectionPerAtom table, for Gamma,
                                                   >>  89        // and for every element contained in the elementTable.
                                                   >>  90        // It builds the MeanFreePath table, for Gamma,
                                                   >>  91        // and for every material contained in the materialTable.       
                                                   >>  92        
                                                   >>  93      G4bool StorePhysicsTable(G4ParticleDefinition* ,
                                                   >>  94             const G4String& directory, G4bool);
                                                   >>  95        // store CrossSection and MeanFreePath tables into an external file
                                                   >>  96        // specified by 'directory' (must exist before invokation)
                                                   >>  97 
                                                   >>  98      G4bool RetrievePhysicsTable(G4ParticleDefinition* ,
                                                   >>  99          const G4String& directory, G4bool);
                                                   >> 100        // retrieve CrossSection and MeanFreePath tables from an external file
                                                   >> 101        // specified by 'directory' 
                                                   >> 102                                                   
                                                   >> 103      void PrintInfoDefinition();
                                                   >> 104        // Print few lines of informations about the process: validity range,
                                                   >> 105        // origine ..etc..
                                                   >> 106        // Invoked by BuildThePhysicsTable(). 
                                                   >> 107 
                                                   >> 108      G4double GetMeanFreePath(const G4Track& aTrack,
                                                   >> 109                               G4double previousStepSize,
                                                   >> 110                               G4ForceCondition* condition);
                                                   >> 111        // It returns the MeanFreePath of the process for the current track :
                                                   >> 112        // (energy, material)
                                                   >> 113        // The previousStepSize and G4ForceCondition* are not used.
                                                   >> 114        // This function overloads a virtual function of the base class. 
                                                   >> 115        // It is invoked by the ProcessManager of the Particle.
                                                   >> 116        
                                                   >> 117      G4double GetCrossSectionPerAtom(const G4DynamicParticle* aDynamicGamma,
                                                   >> 118                                            G4Element*         anElement);
                                                   >> 119        // It returns the total CrossSectionPerAtom of the process, 
                                                   >> 120        // for the current DynamicGamma (energy), in anElement.  
                                                   >> 121        
                                                   >> 122      G4VParticleChange* PostStepDoIt(const G4Track& aTrack,
                                                   >> 123                                     const G4Step& aStep);
                                                   >> 124        // It computes the final state of the process (at end of step),
                                                   >> 125        // returned as a ParticleChange object.          
                                                   >> 126        // This function overloads a virtual function of the base class.
                                                   >> 127        // It is invoked by the ProcessManager of the Particle.
                                                   >> 128         
                                                   >> 129   protected:
                                                   >> 130 
                                                   >> 131      virtual G4double ComputeCrossSectionPerAtom(G4double GammaEnergy, 
                                                   >> 132                                                  G4double AtomicNumber);
                                                   >> 133 
                                                   >> 134      virtual G4double ComputeMeanFreePath (G4double GammaEnergy, 
                                                   >> 135                                            G4Material* aMaterial);
 68                                                   136 
 69 class G4ParticleDefinition;                    << 137   private:
 70 class G4VEmModel;                              << 
 71 class G4MaterialCutsCouple;                    << 
 72 class G4DynamicParticle;                       << 
 73                                                << 
 74 class G4GammaConversion : public G4VEmProcess  << 
 75                                                << 
 76 {                                              << 
 77 public:  // with description                   << 
 78                                                << 
 79   explicit G4GammaConversion(const G4String& p << 
 80            G4ProcessType type = fElectromagnet << 
 81                                                << 
 82   ~G4GammaConversion() override;               << 
 83                                                << 
 84   // true for Gamma only.                      << 
 85   G4bool IsApplicable(const G4ParticleDefiniti << 
 86                                                << 
 87   G4double MinPrimaryEnergy(const G4ParticleDe << 
 88           const G4Material*) override;         << 
 89                                                << 
 90   // print documentation in html format        << 
 91   void ProcessDescription(std::ostream&) const << 
 92                                                << 
 93   G4GammaConversion & operator=(const  G4Gamma << 
 94   G4GammaConversion(const  G4GammaConversion&) << 
 95                                                   138 
 96 protected:                                     << 139      G4Element* SelectRandomAtom(const G4DynamicParticle* aDynamicGamma,
                                                   >> 140                                  G4Material* aMaterial);
 97                                                   141 
 98   virtual void InitialiseProcess(const G4Parti << 142      G4double ScreenFunction1(G4double ScreenVariable);
 99                                                   143 
100 private:                                       << 144      G4double ScreenFunction2(G4double ScreenVariable);
                                                   >> 145      
                                                   >> 146   private:
                                                   >> 147   
                                                   >> 148      // hide assignment operator as private 
                                                   >> 149      G4GammaConversion& operator=(const G4GammaConversion &right);
                                                   >> 150      G4GammaConversion(const G4GammaConversion& );
101                                                   151      
102   G4bool isInitialised = false;                << 152   private:
                                                   >> 153   
                                                   >> 154      G4PhysicsTable* theCrossSectionTable;    // table for crossection
                                                   >> 155      G4PhysicsTable* theMeanFreePathTable;
                                                   >> 156      
                                                   >> 157      G4double LowestEnergyLimit ;     // low  energy limit of the tables
                                                   >> 158      G4double HighestEnergyLimit ;    // high energy limit of the tables 
                                                   >> 159      G4int NumbBinTable ;             // number of bins in the tables
                                                   >> 160      
                                                   >> 161      G4double fminimalEnergy;         // minimalEnergy of produced particles
                                                   >> 162     
                                                   >> 163      G4double MeanFreePath;           // actual MeanFreePath (current medium)
103 };                                                164 };
104                                                   165 
105 //....oooOO0OOooo........oooOO0OOooo........oo    166 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
                                                   >> 167 
                                                   >> 168 #include "G4GammaConversion.icc"
106                                                   169   
107 #endif                                            170 #endif
108                                                   171  
109                                                   172