G4SynchrotronRadiationInMat.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$
00028 //
00029 // ------------------------------------------------------------
00030 //      GEANT 4 class header file
00031 //      CERN Geneva Switzerland
00032 //
00033 //      
00034 //      History: 
00035 //      21-5-98  1 version , V. Grichine
00036 //      28-05-01, V.Ivanchenko minor changes to provide ANSI -wall compilation
00037 //      19-05-06, V.Ivanchenko rename from G4SynchrotronRadiation
00038 //
00039 //
00040 // ------------------------------------------------------------
00041 
00042 #ifndef G4SynchrotronRadiationInMat_h
00043 #define G4SynchrotronRadiationInMat_h 1
00044 
00045 #include "G4ios.hh"
00046 #include "globals.hh"
00047 #include "Randomize.hh"
00048 #include "G4VDiscreteProcess.hh"
00049 #include "G4TransportationManager.hh"
00050 #include "G4FieldManager.hh"
00051 #include "G4Field.hh"
00052 #include "G4ThreeVector.hh"
00053 #include "G4PropagatorInField.hh"
00054 
00055 #include "G4Track.hh"
00056 #include "G4Step.hh"
00057 
00058 
00059 #include "G4Gamma.hh"
00060 #include "G4Electron.hh"
00061 #include "G4Positron.hh"
00062 
00063 
00064 #include "G4PhysicsTable.hh"
00065 #include "G4PhysicsLogVector.hh"
00066 
00067 
00068 class G4SynchrotronRadiationInMat : public G4VDiscreteProcess
00069 {
00070 public:
00071 
00072   G4SynchrotronRadiationInMat(const G4String& processName =
00073                               "SynchrotronRadiation",
00074                               G4ProcessType type = fElectromagnetic);
00075 
00076   virtual ~G4SynchrotronRadiationInMat();
00077 
00078 private:
00079 
00080   G4SynchrotronRadiationInMat & operator=(const G4SynchrotronRadiationInMat &right);
00081   G4SynchrotronRadiationInMat(const G4SynchrotronRadiationInMat&);
00082 
00083 public:  
00084 
00085   G4double GetMeanFreePath( const G4Track& track,
00086                             G4double previousStepSize,
00087                             G4ForceCondition* condition );
00088 
00089   G4VParticleChange *PostStepDoIt( const G4Track& track,
00090                                       const G4Step& Step    );
00091 
00092   G4double GetPhotonEnergy( const G4Track& trackData,
00093                                const G4Step&  stepData      );
00094 
00095   G4double GetRandomEnergySR( G4double, G4double );
00096 
00097   G4double GetProbSpectrumSRforInt( G4double );
00098   G4double GetIntProbSR( G4double );
00099 
00100   G4double GetProbSpectrumSRforEnergy( G4double );
00101   G4double GetEnergyProbSR( G4double );
00102 
00103   G4double GetIntegrandForAngleK( G4double );
00104   G4double GetAngleK( G4double );
00105   G4double GetAngleNumberAtGammaKsi( G4double );
00106 
00107   G4bool IsApplicable(const G4ParticleDefinition&);
00108 
00109   static G4double GetLambdaConst(){ return fLambdaConst; };
00110   static G4double GetEnergyConst(){ return fEnergyConst; };
00111 
00112   void SetRootNumber(G4int rn){ fRootNumber = rn; };
00113   void SetVerboseLevel(G4int v){ fVerboseLevel = v; };
00114   void SetKsi(G4double ksi){ fKsi = ksi; };
00115   void SetEta(G4double eta){ fEta = eta; };
00116   void SetPsiGamma(G4double psg){ fPsiGamma = psg; };
00117   void SetOrderAngleK(G4double ord){ fOrderAngleK = ord; }; // should be 1/3 or 2/3
00118 
00119 private:
00120 
00121   static const G4double fLambdaConst;
00122 
00123   static const G4double fEnergyConst;
00124 
00125   static const G4double fIntegralProbabilityOfSR[200];
00126 
00127   const G4double
00128   LowestKineticEnergy;   // low  energy limit of the cross-section formula
00129 
00130   const G4double
00131   HighestKineticEnergy;  // high energy limit of the cross-section formula
00132 
00133   G4int TotBin;          // number of bins in the tables
00134 
00135   G4double CutInRange;
00136 
00137   const G4ParticleDefinition* theGamma;
00138   const G4ParticleDefinition* theElectron;
00139   const G4ParticleDefinition* thePositron;
00140 
00141   const G4double* GammaCutInKineticEnergy;
00142   const G4double* ElectronCutInKineticEnergy;
00143   const G4double* PositronCutInKineticEnergy;
00144   const G4double* ParticleCutInKineticEnergy;
00145 
00146 
00147   G4double GammaCutInKineticEnergyNow;
00148   G4double ElectronCutInKineticEnergyNow;
00149   G4double PositronCutInKineticEnergyNow;
00150   G4double ParticleCutInKineticEnergyNow;
00151 
00152   G4double fAlpha;
00153   G4int    fRootNumber;
00154   G4double fKsi;             // omega/omega_c
00155   G4double fPsiGamma;        // Psi-angle*gamma
00156   G4double fEta;             //
00157   G4double fOrderAngleK;     // 1/3 or 2/3
00158 
00159 
00160   G4int    fVerboseLevel;
00161   G4PropagatorInField* fFieldPropagator;
00162 
00163 };
00164 
00165 #endif  // end of G4SynchrotronRadiationInMat.hh
00166 

Generated on Mon May 27 17:49:56 2013 for Geant4 by  doxygen 1.4.7