/search.css" rel="stylesheet" type="text/css"/> /search.js">
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

DsG4OpRayleigh.h
Go to the documentation of this file.
00001 //
00013 // ********************************************************************
00014 // * License and Disclaimer                                           *
00015 // *                                                                  *
00016 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
00017 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
00018 // * conditions of the Geant4 Software License,  included in the file *
00019 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
00020 // * include a list of copyright holders.                             *
00021 // *                                                                  *
00022 // * Neither the authors of this software system, nor their employing *
00023 // * institutes,nor the agencies providing financial support for this *
00024 // * work  make  any representation or  warranty, express or implied, *
00025 // * regarding  this  software system or assume any liability for its *
00026 // * use.  Please see the license in the file  LICENSE  and URL above *
00027 // * for the full disclaimer and the limitation of liability.         *
00028 // *                                                                  *
00029 // * This  code  implementation is the result of  the  scientific and *
00030 // * technical work of the GEANT4 collaboration.                      *
00031 // * By using,  copying,  modifying or  distributing the software (or *
00032 // * any work based  on the software)  you  agree  to acknowledge its *
00033 // * use  in  resulting  scientific  publications,  and indicate your *
00034 // * acceptance of all terms of the Geant4 Software license.          *
00035 // ********************************************************************
00036 //
00037 //
00038 // $Id: G4OpRayleigh.hh,v 1.9 2006/06/29 21:08:40 gunter Exp $
00039 // GEANT4 tag $Name: geant4-09-02 $
00040 //
00041 // 
00043 // Optical Photon Rayleigh Scattering Class Definition
00045 //
00046 // File:        G4OpRayleigh.hh
00047 // Description: Discrete Process -- Rayleigh scattering of optical photons 
00048 // Version:     1.0
00049 // Created:     1996-05-31
00050 // Author:      Juliet Armstrong
00051 // Updated:     2005-07-28 add G4ProcessType to constructor
00052 //              1999-10-29 add method and class descriptors
00053 //              1997-04-09 by Peter Gumplinger
00054 //              > new physics/tracking scheme
00055 // mail:        gum@triumf.ca
00056 //
00058 
00059 #ifndef DsG4OpRayleigh_h
00060 #define DsG4OpRayleigh_h 1
00061 
00063 // Includes
00065 
00066 #include "globals.hh"
00067 #include "templates.hh"
00068 #include "Randomize.hh"
00069 #include "G4ThreeVector.hh"
00070 #include "G4ParticleMomentum.hh"
00071 #include "G4Step.hh"
00072 #include "G4VDiscreteProcess.hh"
00073 #include "G4DynamicParticle.hh"
00074 #include "G4Material.hh"
00075 #include "G4OpticalPhoton.hh"
00076 #include "G4PhysicsTable.hh"
00077 #include "G4PhysicsOrderedFreeVector.hh"
00078 
00079 // Class Description:
00080 // Discrete Process -- Rayleigh scattering of optical photons.
00081 // Class inherits publicly from G4VDiscreteProcess.
00082 // Class Description - End:
00083 
00085 // Class Definition
00087 
00088 class DsG4OpRayleigh : public G4VDiscreteProcess 
00089 {
00090 
00091 private:
00092  
00094         // Operators
00096 
00097         // G4OpRayleigh& operator=(const G4OpRayleigh &right);
00098 
00099 public: // Without description
00100 
00102         // Constructors and Destructor
00104  
00105         DsG4OpRayleigh(const G4String& processName = "OpRayleigh",
00106                               G4ProcessType type = fOptical);
00107 
00108         // G4OpRayleigh(const G4OpRayleigh &right);
00109 
00110         ~DsG4OpRayleigh();
00111 
00113         // Methods
00115 
00116 public: // With description
00117 
00118         G4bool IsApplicable(const G4ParticleDefinition& aParticleType);
00119         // Returns true -> 'is applicable' only for an optical photon.
00120 
00121         G4double GetMeanFreePath(const G4Track& aTrack,
00122                                  G4double ,
00123                                  G4ForceCondition* );
00124         // Returns the mean free path for Rayleigh scattering in water.
00125         // --- Not yet implemented for other materials! ---
00126 
00127         G4VParticleChange* PostStepDoIt(const G4Track& aTrack,
00128                                        const G4Step&  aStep);
00129         // This is the method implementing Rayleigh scattering.
00130 
00131         G4PhysicsTable* GetPhysicsTable() const;
00132         // Returns the address of the physics table.
00133 
00134         void DumpPhysicsTable() const;
00135         // Prints the physics table.
00136 
00137 private:
00138 
00139         void BuildThePhysicsTable();
00140 
00142         // Helper Functions
00144 
00145         G4PhysicsOrderedFreeVector* RayleighAttenuationLengthGenerator(
00146                                         G4MaterialPropertiesTable *aMPT);
00147 
00149         // Class Data Members
00151 
00152 protected:
00153 
00154         G4PhysicsTable* thePhysicsTable;
00155         //  A Physics Table can be either a cross-sections table or
00156         //  an energy table (or can be used for other specific
00157         //  purposes).
00158 
00159 private:
00160 
00161         G4bool DefaultWater;
00162 
00163 };
00164 
00166 // Inline methods
00168 
00169 inline
00170 G4bool DsG4OpRayleigh::IsApplicable(const G4ParticleDefinition& aParticleType)
00171 {
00172   return ( &aParticleType == G4OpticalPhoton::OpticalPhoton() );
00173 }
00174 
00175 inline
00176 void DsG4OpRayleigh::DumpPhysicsTable() const
00177 
00178 {
00179         G4int PhysicsTableSize = thePhysicsTable->entries();
00180         G4PhysicsOrderedFreeVector *v;
00181 
00182         for (G4int i = 0 ; i < PhysicsTableSize ; i++ )
00183         {
00184                 v = (G4PhysicsOrderedFreeVector*)(*thePhysicsTable)[i];
00185                 v->DumpValues();
00186         }
00187 }
00188 
00189 inline G4PhysicsTable* DsG4OpRayleigh::GetPhysicsTable() const
00190 {
00191   return thePhysicsTable;
00192 }
00193 
00194 
00195 #endif /* DsG4OpRayleigh_h */
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Fri May 16 2014 10:17:58 for DetSim by doxygen 1.7.4