G4GammaXTRadiator.cc

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 #include <complex>
00031 
00032 #include "G4GammaXTRadiator.hh"
00033 #include "Randomize.hh"
00034 
00035 #include "G4Gamma.hh"
00036 
00038 //
00039 // Constructor, destructor
00040 
00041 G4GammaXTRadiator::G4GammaXTRadiator(G4LogicalVolume* anEnvelope, 
00042                                      G4double alphaPlate,
00043                                      G4double alphaGas,
00044                                      G4Material* foilMat,G4Material* gasMat, 
00045                                      G4double a, G4double b, G4int n,
00046                                      const G4String& processName) :
00047   G4VXTRenergyLoss(anEnvelope,foilMat,gasMat,a,b,n,processName)
00048 {
00049   G4cout<<"Gammma distributed X-ray TR radiator model is called"<<G4endl ;
00050 
00051   // Build energy and angular integral spectra of X-ray TR photons from
00052   // a radiator
00053 
00054   fAlphaPlate = alphaPlate ;
00055   fAlphaGas   = alphaGas   ;
00056   G4cout<<"fAlphaPlate = "<<fAlphaPlate<<" ; fAlphaGas = "<<fAlphaGas<<G4endl ;
00057 
00058   // BuildTable() ;
00059 }
00060 
00062 
00063 G4GammaXTRadiator::~G4GammaXTRadiator()
00064 {
00065   ;
00066 }
00067 
00068 
00069 
00071 //
00072 // Rough approximation for radiator interference factor for the case of
00073 // fully GamDistr radiator. The plate and gas gap thicknesses are distributed 
00074 // according to exponent. The mean values of the plate and gas gap thicknesses 
00075 // are supposed to be about XTR formation zones but much less than 
00076 // mean absorption length of XTR photons in coresponding material.
00077 
00078 G4double 
00079 G4GammaXTRadiator::GetStackFactor( G4double energy, 
00080                                          G4double gamma, G4double varAngle )
00081 {
00082   G4double result, Za, Zb, Ma, Mb ;
00083   
00084   Za = GetPlateFormationZone(energy,gamma,varAngle) ;
00085   Zb = GetGasFormationZone(energy,gamma,varAngle) ;
00086 
00087   Ma = GetPlateLinearPhotoAbs(energy) ;
00088   Mb = GetGasLinearPhotoAbs(energy) ;
00089 
00090 
00091   G4complex Ca(1.0+0.5*fPlateThick*Ma/fAlphaPlate,fPlateThick/Za/fAlphaPlate) ; 
00092   G4complex Cb(1.0+0.5*fGasThick*Mb/fAlphaGas,fGasThick/Zb/fAlphaGas) ; 
00093 
00094   G4complex Ha = std::pow(Ca,-fAlphaPlate) ;  
00095   G4complex Hb = std::pow(Cb,-fAlphaGas) ;
00096   G4complex H  = Ha*Hb ;
00097 
00098   G4complex F1 =   (1.0 - Ha)*(1.0 - Hb )/(1.0 - H)
00099                  * G4double(fPlateNumber) ;
00100 
00101   G4complex F2 =   (1.0-Ha)*(1.0-Ha)*Hb/(1.0-H)/(1.0-H)
00102                  * (1.0 - std::pow(H,fPlateNumber)) ;
00103 
00104   G4complex R  = (F1 + F2)*OneInterfaceXTRdEdx(energy,gamma,varAngle) ;
00105 
00106   result       = 2.0*std::real(R) ;
00107   
00108   return      result ;
00109 }
00110 
00111 
00112 //
00113 //
00115 
00116 
00117 
00118 
00119 
00120 
00121 
00122 

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