/home/cern/BDSIM_new/include/BDSGammaConversionToMuons.hh

00001 //
00002 // ********************************************************************
00003 // * DISCLAIMER                                                       *
00004 // *                                                                  *
00005 // * The following disclaimer summarizes all the specific disclaimers *
00006 // * of contributors to this software. The specific disclaimers,which *
00007 // * govern, are listed with their locations in:                      *
00008 // *   http://cern.ch/geant4/license                                  *
00009 // *                                                                  *
00010 // * Neither the authors of this software system, nor their employing *
00011 // * institutes,nor the agencies providing financial support for this *
00012 // * work  make  any representation or  warranty, express or implied, *
00013 // * regarding  this  software system or assume any liability for its *
00014 // * use.                                                             *
00015 // *                                                                  *
00016 // * This  code  implementation is the  intellectual property  of the *
00017 // * GEANT4 collaboration.                                            *
00018 // * By copying,  distributing  or modifying the Program (or any work *
00019 // * based  on  the Program)  you indicate  your  acceptance of  this *
00020 // * statement, and all its terms.                                    *
00021 // ********************************************************************
00022 //
00023 //
00024 // $Id: BDSGammaConversionToMuons.hh,v 1.1 2006/04/09 17:59:43 agapov Exp $
00025 // GEANT4 tag $Name:  $
00026 //
00027 //         ------------ G4GammaConversionToMuons physics process ------
00028 //         by H.Burkhardt, S. Kelner and R. Kokoulin, April 2002
00029 // -----------------------------------------------------------------------------
00030 //
00031 // 05-08-04: suppression of .icc file (mma)
00032 // 13-08-04, public ComputeCrossSectionPerAtom() and ComputeMeanFreePath() (mma) 
00033 //
00034 // class description
00035 //
00036 // gamma ---> mu+ mu-
00037 // inherit from G4VDiscreteProcess
00038 //
00039 
00040 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00041 
00042 #ifndef BDSGammaConversionToMuons_h
00043 #define BDSGammaConversionToMuons_h 1
00044 
00045 #include "G4ios.hh"
00046 #include "globals.hh"
00047 #include "Randomize.hh"
00048 #include "G4VDiscreteProcess.hh"
00049 #include "G4PhysicsTable.hh"
00050 #include "G4PhysicsLogVector.hh"
00051 #include "G4Element.hh"
00052 #include "G4Gamma.hh"
00053 #include "G4Electron.hh"
00054 #include "G4Positron.hh"
00055 #include "G4Step.hh"
00056 
00057 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00058 
00059 class BDSGammaConversionToMuons : public G4VDiscreteProcess
00060 
00061 {
00062   public:  // with description
00063 
00064      BDSGammaConversionToMuons(const G4String& processName ="BDS-GammaToMuPair",
00065                                     G4ProcessType type = fElectromagnetic);
00066 
00067     ~BDSGammaConversionToMuons();
00068 
00069      G4bool IsApplicable(const G4ParticleDefinition&);
00070        // true for Gamma only.
00071 
00072      void BuildPhysicsTable(const G4ParticleDefinition&);
00073        // here dummy, the total cross section parametrization is used rather
00074        // than tables,  just calling PrintInfoDefinition
00075 
00076      void PrintInfoDefinition();
00077        // Print few lines of informations about the process: validity range,
00078        // origine ..etc..
00079        // Invoked by BuildThePhysicsTable().
00080 
00081      void SetCrossSecFactor(G4double fac);
00082        // Set the factor to artificially increase the crossSection (default 1)
00083 
00084      G4double GetCrossSecFactor() { return CrossSecFactor;}
00085        // Get the factor to artificially increase the cross section
00086 
00087      G4double GetMeanFreePath(const G4Track& aTrack,
00088                               G4double previousStepSize,
00089                               G4ForceCondition* condition);
00090        // It returns the MeanFreePath of the process for the current track :
00091        // (energy, material)
00092        // The previousStepSize and G4ForceCondition* are not used.
00093        // This function overloads a virtual function of the base class.
00094        // It is invoked by the ProcessManager of the Particle.
00095 
00096      G4double GetCrossSectionPerAtom(const G4DynamicParticle* aDynamicGamma,
00097                                            G4Element*         anElement);
00098        // It returns the total CrossSectionPerAtom of the process,
00099        // for the current DynamicGamma (energy), in anElement.
00100 
00101      G4VParticleChange* PostStepDoIt(const G4Track& aTrack,
00102                                     const G4Step& aStep);
00103        // It computes the final state of the process (at end of step),
00104        // returned as a ParticleChange object.
00105        // This function overloads a virtual function of the base class.
00106        // It is invoked by the ProcessManager of the Particle.
00107 
00108      virtual
00109      G4double ComputeCrossSectionPerAtom(G4double GammaEnergy,
00110                                          G4double AtomicZ,G4double AtomicA);
00111 
00112      G4double ComputeMeanFreePath (G4double GammaEnergy,
00113                                    G4Material* aMaterial);
00114 
00115   private:
00116 
00117      G4Element* SelectRandomAtom(const G4DynamicParticle* aDynamicGamma,
00118                                  G4Material* aMaterial);
00119 
00120   private:
00121 
00122      // hide assignment operator as private
00123      BDSGammaConversionToMuons& operator=(const BDSGammaConversionToMuons &right);
00124      BDSGammaConversionToMuons(const BDSGammaConversionToMuons& );
00125 
00126   private:
00127 
00128      G4double LowestEnergyLimit ;     // low  energy limit of the tables
00129      G4double HighestEnergyLimit ;    // high energy limit of the tables
00130 
00131      G4double fminimalEnergy;         // minimalEnergy of produced particles
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 Wed Mar 5 17:25:21 2008 for BDSIM by  doxygen 1.5.3