3 # ================================================================== 
    6 #   Calculation of photon cross section and stopping power for 
   10 # ================================================================== 
   17 __all__ = [ 
'CalculatePhotonCrossSection', 
'CalculateDEDX' ]
 
   23                                 plist=[
"compt", 
"", 
"phot", 
"conv"]):
 
   25   Calculate photon cross section for a given material and 
   26   a list of energy, returing a list of cross sections for 
   27   the components of "Copmton scattering", "rayleigh scattering", 
   28   "photoelectric effect", "pair creation" and total one. 
   33     verbose:  verbose level [0] 
   34     plist:    list of process name 
   35               (compton/rayleigh/photoelectic/conversion) [StandardEM set] 
   38     "compt":     Compton Scattering 
   39     "rayleigh":  Rayleigh Scattering 
   40     "phot" :     photoelectric effect 
   41     "conv" :     pair Creation 
   45     xsec_list= CalculatePhotonCrossSection(...) 
   46     value= xsec_list[energy_index]["compt"] 
   49     print "-------------------------------------------------------------------" 
   50     print "                  Photon Cross Section (", mat, 
")" 
   51     print "Energy      Compton     Raleigh     Photo-      Pair        Total" 
   52     print "            Scattering  Scattering  electric    Creation" 
   53     print "(MeV)       (cm2/g)     (cm2/g)     (cm2/g)     (cm2/g)     (cm2/g)" 
   54     print "-------------------------------------------------------------------" 
   60       = gEmCalculator.ComputeCrossSectionPerVolume(ekin, 
"gamma", plist[0],
 
   63       = gEmCalculator.ComputeCrossSectionPerVolume(ekin, 
"gamma", plist[1],
 
   67       = gEmCalculator.ComputeCrossSectionPerVolume(ekin, 
"gamma", plist[2],
 
   70       = gEmCalculator.ComputeCrossSectionPerVolume(ekin, 
"gamma", plist[3],
 
   73     xsec[
"tot"]= xsec[
"compt"] + xsec[
"rayleigh"] + xsec[
"phot"] + xsec[
"conv"]
 
   75     xsection_list.append((ekin, xsec))
 
   78       print " %8.3e   %8.3e   %8.3e   %8.3e   %8.3e   %8.3e" \
 
   79             % (ekin/MeV, xsec[
"compt"]/(cm2/g), xsec[
"rayleigh"]/(cm2/g), 
 
   80                xsec[
"phot"]/(cm2/g), xsec[
"conv"]/(cm2/g), xsec[
"tot"]/(cm2/g))
 
   89                   plist=[
"eIoni", 
"eBrem", 
"muIoni", 
"muBrems", 
"hIoni"]):
 
   91   Calculate stopping powers for a give particle, material and 
   92   a list of energy, returing stopping power for the components of 
   93   "Ionization", "Radiation" and total one. 
   99     verbose:  verbose level [0] 
  100     plist:    list of process name 
  101               (electron ionization/electron brems/ 
  102                muon ionization/muon brems/hadron ionization) [StandardEM set] 
  106     "brems":  Bremsstrahlung 
  110     dedx_list= CalculateDEDX(...) 
  111     value= dedx_list[energy_index]["ioni"]     
  114     print "------------------------------------------------------" 
  115     print "       Stopping Power (", part, 
",", mat, 
")" 
  116     print "  Energy       Ionization    Radiation     Total" 
  117     print "  (MeV)        (MeVcm2/g)    (MeVcm2/g)    (MeVcm2/g)" 
  118     print "------------------------------------------------------"   
  122   if ( part==
"e+" or part==
"e-" ):
 
  123     procname_ioni= plist[0]
 
  124     procname_brems= plist[1]
 
  125   elif ( part==
"mu+" or part==
"mu-"):
 
  126     procname_ioni= plist[2]
 
  127     procname_brems= plist[3]
 
  129     procname_ioni= plist[4]
 
  136     = gEmCalculator.ComputeDEDX(ekin, part, procname_ioni, mat) * MeV*cm2/g
 
  138     = gEmCalculator.ComputeDEDX(ekin, part, procname_brems, mat) * MeV*cm2/g
 
  139     dedx[
"tot"]= dedx[
"ioni"]+ dedx[
"brems"]
 
  142       print " %8.3e     %8.3e     %8.3e     %8.3e" \
 
  143             % (ekin/MeV, dedx[
"ioni"]/(MeV*cm2/g), 
 
  144                dedx[
"brems"]/(MeV*cm2/g), dedx[
"tot"]/(MeV*cm2/g) )
 
  147     dedx_list.append((ekin, dedx))    
 
def CalculatePhotonCrossSection