G4GammaConversionToMuons.hh

Go to the documentation of this file.
00001 //
00002 // ********************************************************************
00003 // * License and Disclaimer                                           *
00004 // *                                                                  *
00005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
00006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
00007 // * conditions of the Geant4 Software License,  included in the file *
00008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
00009 // * include a list of copyright holders.                             *
00010 // *                                                                  *
00011 // * Neither the authors of this software system, nor their employing *
00012 // * institutes,nor the agencies providing financial support for this *
00013 // * work  make  any representation or  warranty, express or implied, *
00014 // * regarding  this  software system or assume any liability for its *
00015 // * use.  Please see the license in the file  LICENSE  and URL above *
00016 // * for the full disclaimer and the limitation of liability.         *
00017 // *                                                                  *
00018 // * This  code  implementation is the result of  the  scientific and *
00019 // * technical work of the GEANT4 collaboration.                      *
00020 // * By using,  copying,  modifying or  distributing the software (or *
00021 // * any work based  on the software)  you  agree  to acknowledge its *
00022 // * use  in  resulting  scientific  publications,  and indicate your *
00023 // * acceptance of all terms of the Geant4 Software license.          *
00024 // ********************************************************************
00025 //
00026 //
00027 // $Id: G4GammaConversionToMuons.hh 66996 2013-01-29 14:50:52Z gcosmo $
00028 //
00029 //         ------------ G4GammaConversionToMuons physics process ------
00030 //         by H.Burkhardt, S. Kelner and R. Kokoulin, April 2002
00031 // -----------------------------------------------------------------------------
00032 //
00033 // 05-08-04: suppression of .icc file (mma)
00034 // 13-08-04, public ComputeCrossSectionPerAtom() and ComputeMeanFreePath() (mma) 
00035 //
00036 // class description
00037 //
00038 // gamma ---> mu+ mu-
00039 // inherit from G4VDiscreteProcess
00040 //
00041 
00042 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00043 
00044 #ifndef G4GammaConversionToMuons_h
00045 #define G4GammaConversionToMuons_h 1
00046 
00047 #include "G4ios.hh"
00048 #include "globals.hh"
00049 #include "Randomize.hh"
00050 #include "G4VDiscreteProcess.hh"
00051 #include "G4PhysicsTable.hh"
00052 #include "G4PhysicsLogVector.hh"
00053 #include "G4Element.hh"
00054 #include "G4Gamma.hh"
00055 #include "G4Electron.hh"
00056 #include "G4Positron.hh"
00057 #include "G4Step.hh"
00058 
00059 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00060 
00061 class G4GammaConversionToMuons : public G4VDiscreteProcess
00062 
00063 {
00064   public:  // with description
00065 
00066      G4GammaConversionToMuons(const G4String& processName ="GammaToMuPair",
00067                                     G4ProcessType type = fElectromagnetic);
00068 
00069     ~G4GammaConversionToMuons();
00070 
00071      G4bool IsApplicable(const G4ParticleDefinition&);
00072        // true for Gamma only.
00073 
00074      void BuildPhysicsTable(const G4ParticleDefinition&);
00075        // here dummy, the total cross section parametrization is used rather
00076        // than tables,  just calling PrintInfoDefinition
00077 
00078      void PrintInfoDefinition();
00079        // Print few lines of informations about the process: validity range,
00080        // origine ..etc..
00081        // Invoked by BuildThePhysicsTable().
00082 
00083      void SetCrossSecFactor(G4double fac);
00084        // Set the factor to artificially increase the crossSection (default 1)
00085 
00086      G4double GetCrossSecFactor() { return CrossSecFactor;}
00087        // Get the factor to artificially increase the cross section
00088 
00089      G4double GetMeanFreePath(const G4Track& aTrack,
00090                               G4double previousStepSize,
00091                               G4ForceCondition* condition);
00092        // It returns the MeanFreePath of the process for the current track :
00093        // (energy, material)
00094        // The previousStepSize and G4ForceCondition* are not used.
00095        // This function overloads a virtual function of the base class.
00096        // It is invoked by the ProcessManager of the Particle.
00097 
00098      G4double GetCrossSectionPerAtom(const G4DynamicParticle* aDynamicGamma,
00099                                            G4Element*         anElement);
00100        // It returns the total CrossSectionPerAtom of the process,
00101        // for the current DynamicGamma (energy), in anElement.
00102 
00103      G4VParticleChange* PostStepDoIt(const G4Track& aTrack,
00104                                     const G4Step& aStep);
00105        // It computes the final state of the process (at end of step),
00106        // returned as a ParticleChange object.
00107        // This function overloads a virtual function of the base class.
00108        // It is invoked by the ProcessManager of the Particle.
00109 
00110      virtual
00111      G4double ComputeCrossSectionPerAtom(G4double GammaEnergy,
00112                                          G4double AtomicZ,G4double AtomicA);
00113 
00114      G4double ComputeMeanFreePath (G4double GammaEnergy,
00115                                    G4Material* aMaterial);
00116 
00117   private:
00118 
00119      G4Element* SelectRandomAtom(const G4DynamicParticle* aDynamicGamma,
00120                                  G4Material* aMaterial);
00121 
00122   private:
00123 
00124      // hide assignment operator as private
00125      G4GammaConversionToMuons& operator=(const G4GammaConversionToMuons &right);
00126      G4GammaConversionToMuons(const G4GammaConversionToMuons& );
00127 
00128   private:
00129 
00130      G4double LowestEnergyLimit ;     // low  energy limit of the tables
00131      G4double HighestEnergyLimit ;    // high energy limit of the tables
00132 
00133      G4double MeanFreePath;           // actual MeanFreePath (current medium)
00134      G4double CrossSecFactor;         // factor to artificially increase
00135                                       // the cross section
00136 
00137 };
00138 
00139 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00140 
00141 #endif
00142 

Generated on Mon May 27 17:48:19 2013 for Geant4 by  doxygen 1.4.7