00001
00002 '''
00003 Configure radioactivity background generators
00004
00005 Examples for how to use.
00006 For Fifteen package usage:
00007
00008 from SourceRate.Radioactivity import K40_PMT
00009 k40_PMT=K40_PMT()
00010
00011 from Gnrtr.GnrtrConf import Gnrtr
00012 gnrtrK40PMT = Gnrtr("gnrtrK40PMT");
00013 gnrtrK40PMT.GenTools = k40_PMT.tools()
00014 gnrtrK40PMT.ThisStageName = "Kinematic"
00015 gnrtrK40PMT.TimeStamp = int(wallTime)
00016 stageCfg.KinematicSequence.Members.append(gnrtrK40PMT)
00017
00018 For Single usage:
00019
00020 from SourceRate.Radioactivity import U238_sst
00021 u238_sst=U238_sst()
00022
00023 import GenTools
00024 gtc = GenTools.Configure(genname="U238_sst")
00025 gtc.generator.TimeStamp = int(wallTime)
00026 gtc.register(u238_sst)
00027
00028 '''
00029
00030 import GaudiKernel.SystemOfUnits as units
00031
00032 class Radioact:
00033 ''' Configure GenDecay generator '''
00034
00035 def __init__(self,
00036 name = None,
00037 volume = None,
00038 nuclide = None,
00039 abundance = None,
00040 strategy = None,
00041 material = None,
00042 fillvolumes = None,
00043 ):
00044
00045 from GenDecay.Helpers import Decay
00046
00047 radioact = Decay(name)
00048 radioact.decay.ParentNuclide = nuclide
00049 radioact.decay.ParentAbundance = abundance
00050 radioact.decay.SecularEquilibrium = True
00051 radioact.decay.CorrelationTime = 0.01*units.second
00052
00053 radioact.positioner.Volume = volume
00054 radioact.positioner.Position = [0, 0, 0]
00055 radioact.positioner.Mode = "Uniform"
00056 radioact.positioner.Spread = 20*units.m
00057 radioact.positioner.Strategy = strategy
00058 if radioact.positioner.Strategy == 'VolumeType':
00059 radioact.positioner.FillVolumes = [fillvolumes]
00060 if radioact.positioner.Strategy == 'Material':
00061 radioact.positioner.FillMaterials = [material]
00062
00063 radioact.transformer.Volume = volume
00064
00065 self.radioact = radioact
00066
00067 def tools(self):
00068 return self.radioact.tools()
00069
00070 pass
00071
00072
00073 class U238_gds:
00074 ''' U238 in gd doped scintillator '''
00075
00076 def __init__(self,
00077 volume):
00078 u238 = Radioact(name = 'U238_gds',
00079 volume = volume,
00080 nuclide = 'U238',
00081 abundance = 5.06e16,
00082 strategy = 'Material',
00083 material = 'GdDopedLS')
00084 self.u238 = u238
00085 def tools(self):
00086 return self.u238.tools()
00087
00088 pass
00089
00090
00091 class U238_lso:
00092 ''' U238 in luquid scintillator '''
00093
00094 def __init__(self,
00095 volume):
00096 u238 = Radioact(name = 'U238_lso',
00097 volume = volume,
00098 nuclide = 'U238',
00099 abundance = 5.43e16,
00100 strategy = 'Material',
00101 material = 'LiquidScintillator')
00102 self.u238 = u238
00103 def tools(self):
00104 return self.u238.tools()
00105
00106 pass
00107
00108 class U238_PMT:
00109 ''' U238 in PMT '''
00110
00111 def __init__(self,
00112 volume):
00113 u238 = Radioact(name = 'U238_PMT',
00114 volume = volume,
00115 nuclide = 'U238',
00116 abundance = 6.21e19,
00117 strategy = 'VolumeType',
00118 fillvolumes= 'lvPmtHemiVacuum')
00119 self.u238 = u238
00120 def tools(self):
00121 return self.u238.tools()
00122
00123 pass
00124
00125 class U238_2inPMT:
00126 ''' U238 in 2 inch PMT '''
00127
00128 def __init__(self,
00129 volume):
00130 u238 = Radioact(name = 'U238_2inPMT',
00131 volume = volume,
00132 nuclide = 'U238',
00133 abundance = 3.05e17,
00134 strategy = 'VolumeType',
00135 fillvolumes= 'lvHeadonPmtVacuum')
00136 self.u238 = u238
00137 def tools(self):
00138 return self.u238.tools()
00139
00140 pass
00141
00142 class U238_sst:
00143 ''' U238 in stainless steel '''
00144
00145 def __init__(self,
00146 volume):
00147 u238 = Radioact(name = 'U238_sst',
00148 volume = volume,
00149 nuclide = 'U238',
00150 abundance = 4.65e18,
00151 strategy = 'Material',
00152 material = 'StainlessSteel')
00153 self.u238 = u238
00154 def tools(self):
00155 return self.u238.tools()
00156
00157 pass
00158
00159
00160 class Th232_gds:
00161 ''' Th232 in gd doped scintillator '''
00162
00163 def __init__(self,
00164 volume):
00165 th232 = Radioact(name = 'Th232_gds',
00166 volume = volume,
00167 nuclide = 'Th232',
00168 abundance = 5.19e16,
00169 strategy = 'Material',
00170 material = 'GdDopedLS')
00171 self.th232 = th232
00172 def tools(self):
00173 return self.th232.tools()
00174
00175 pass
00176
00177
00178 class Th232_lso:
00179 ''' Th232 in liquid scintillator '''
00180
00181 def __init__(self,
00182 volume):
00183 th232 = Radioact(name = 'Th232_lso',
00184 volume = volume,
00185 nuclide = 'Th232',
00186 abundance = 5.57e16,
00187 strategy = 'Material',
00188 material = 'LiquidScintillator')
00189 self.th232 = th232
00190 def tools(self):
00191 return self.th232.tools()
00192
00193 pass
00194
00195 class Th232_PMT:
00196 ''' Th232 in PMT '''
00197
00198 def __init__(self,
00199 volume):
00200 th232 = Radioact(name = 'Th232_PMT',
00201 volume = volume,
00202 nuclide = 'Th232',
00203 abundance = 1.38e20,
00204 strategy = 'VolumeType',
00205 fillvolumes= 'lvPmtHemiVacuum')
00206 self.th232 = th232
00207 def tools(self):
00208 return self.th232.tools()
00209
00210 pass
00211
00212 class Th232_2inPMT:
00213 ''' Th232 in 2 inch PMT '''
00214
00215 def __init__(self,
00216 volume):
00217 th232 = Radioact(name = 'Th232_2inPMT',
00218 volume = volume,
00219 nuclide = 'Th232',
00220 abundance = 1.59e17,
00221 strategy = 'VolumeType',
00222 fillvolumes= 'lvHeadonPmtVacuum')
00223 self.th232 = th232
00224 def tools(self):
00225 return self.th232.tools()
00226
00227 pass
00228
00229 class Th232_sst:
00230 ''' Th232 in stainless steel '''
00231
00232 def __init__(self,
00233 volume):
00234 th232 = Radioact(name = 'Th232_sst',
00235 volume = volume,
00236 nuclide = 'Th232',
00237 abundance = 7.22e19,
00238 strategy = 'Material',
00239 material = 'StainlessSteel')
00240 self.th232 = th232
00241 def tools(self):
00242 return self.th232.tools()
00243
00244 pass
00245
00246
00247 class K40_gds:
00248 ''' K40 in gd doped scintillator '''
00249
00250 def __init__(self,
00251 volume):
00252 k40 = Radioact(name = 'K40_gds',
00253 volume = volume,
00254 nuclide = 'K40',
00255 abundance = 3.01e17,
00256 strategy = 'Material',
00257 material = 'GdDopedLS')
00258 self.k40 = k40
00259 def tools(self):
00260 return self.k40.tools()
00261
00262 pass
00263
00264
00265 class K40_lso:
00266 ''' K40 in liquid scintillator '''
00267
00268 def __init__(self,
00269 volume):
00270 k40 = Radioact(name = 'K40_lso',
00271 volume = volume,
00272 nuclide = 'K40',
00273 abundance = 3.23e17,
00274 strategy = 'Material',
00275 material = 'LiquidScintillator')
00276 self.k40 = k40
00277 def tools(self):
00278 return self.k40.tools()
00279
00280 pass
00281
00282 class K40_PMT:
00283 ''' K40 in PMT '''
00284
00285 def __init__(self,
00286 volume):
00287 k40 = Radioact(name = 'K40_PMT',
00288 volume = volume,
00289 nuclide = 'K40',
00290 abundance = 4.71e19,
00291 strategy = 'VolumeType',
00292 fillvolumes= 'lvPmtHemiVacuum')
00293 self.k40 = k40
00294 def tools(self):
00295 return self.k40.tools()
00296
00297 pass
00298
00299 class K40_2inPMT:
00300 ''' K40 in 2 inch PMT '''
00301
00302 def __init__(self,
00303 volume):
00304 k40 = Radioact(name = 'K40_2inPMT',
00305 volume = volume,
00306 nuclide = 'K40',
00307 abundance = 8.52e17,
00308 strategy = 'VolumeType',
00309 fillvolumes= 'lvHeadonPmtVacuum')
00310 self.k40 = k40
00311 def tools(self):
00312 return self.k40.tools()
00313
00314 pass
00315
00316 class K40_sst:
00317 ''' K40 in stainless steel '''
00318
00319 def __init__(self,
00320 volume):
00321 k40 = Radioact(name = 'K40_sst',
00322 volume = volume,
00323 nuclide = 'K40',
00324 abundance = 1.43e19,
00325 strategy = 'Material',
00326 material = 'StainlessSteel')
00327 self.k40 = k40
00328 def tools(self):
00329 return self.k40.tools()
00330
00331 pass
00332
00333
00334 class Co60_PMT:
00335 ''' Co60 in PMT '''
00336
00337 def __init__(self,
00338 volume):
00339 co60 = Radioact(name = 'Co60_PMT',
00340 volume = volume,
00341 nuclide = 'Co60',
00342 abundance = 3.51e8,
00343 strategy = 'VolumeType',
00344 fillvolumes= 'lvPmtHemiVacuum')
00345 self.co60 = co60
00346 def tools(self):
00347 return self.co60.tools()
00348
00349 pass
00350
00351 class Co60_sst:
00352 ''' Co60 in stainless steel '''
00353
00354 def __init__(self,
00355 volume):
00356 co60 = Radioact(name = 'Co60_sst',
00357 volume = volume,
00358 nuclide = 'Co60',
00359 abundance = 9.11e9,
00360 strategy = 'Material',
00361 material = 'StainlessSteel')
00362 self.co60 = co60
00363 def tools(self):
00364 return self.co60.tools()
00365
00366 pass