Public Member Functions | |
def | __init__ |
def | parameters |
def | logvol |
Public Attributes | |
zpos | |
radius | |
corner | |
name | |
nsec | |
material | |
parent | |
child | |
params | |
lv | |
Static Public Attributes | |
list | NAMES = ["oav","lso","iav","gds"] |
Definition at line 191 of file gen.py.
def gen::PolyCone::__init__ | ( | self, | ||
name, | ||||
corner, | ||||
material, | ||||
parent = None , |
||||
child = None | ||||
) |
Definition at line 193 of file gen.py.
00193 : 00194 self.zpos=[] 00195 self.radius=[] 00196 self.corner=[] 00197 self.name = name 00198 self.corner=corner 00199 for zpos, radius in self.corner: 00200 self.zpos.append(zpos) 00201 self.radius.append(radius) 00202 self.nsec=len(corner) 00203 self.material=material 00204 self.parent = parent 00205 self.child = child 00206 self.params = [] 00207 self.lv = None 00208 return 00209 def parameters(self):
def gen::PolyCone::parameters | ( | self | ) |
Definition at line 210 of file gen.py.
00210 : 00211 """ 00212 Build up the parameters for a polycone based on the zpos' and radii. 00213 """ 00214 if self.params: return self.params 00215 00216 from XmlDetDescGen.parameter import Parameter 00217 00218 ts = [] 00219 if self.name == "oav": 00220 t = [Parameter("OavThickness", "18*mm", 00221 "Oav wall&lid thickness"), 00222 Parameter("OavBrlHeight", "3982*mm", 00223 "Oav barrel height"), 00224 Parameter("OavBrlOutRadius", "2000*mm", 00225 "Oav barrel outer radius"), 00226 Parameter("OavBrlFlgThickness", "45*mm", 00227 "Oav barrel flange thickness"), 00228 Parameter("OavBrlFlgRadius", "2040*mm", 00229 "Oav barrel flange radius"), 00230 Parameter("OavLidFlgThickness", "39*mm", 00231 "Oav lid flange thickness"), 00232 Parameter("OavLidFlgWidth", "110*mm", 00233 "Oav lid flange width"), 00234 Parameter("OavLidConAngle", "3.*degree", 00235 "Oav lid conical angle"), 00236 Parameter("OavLidConBotRadius", 00237 "OavBrlFlgRadius-OavLidFlgWidth", 00238 "Oav conical lid bottom radius"), 00239 Parameter("OavLidConTopRadius", "125*mm", 00240 "Oav conical lid top radius"), 00241 Parameter("OavLidConHeight", 00242 "(OavLidConBotRadius-OavLidConTopRadius)*tan(OavLidConAngle)", 00243 "Oav cone height from the turning point"), 00244 Parameter("OavHeight", 00245 "OavBrlHeight+OavThickness/cos(OavLidConAngle)+OavLidConHeight", 00246 "Oav height to the top of the cone"), 00247 Parameter("OavLidHeight", "OavHeight-OavBrlHeight", 00248 "Oav lid height from barrel top to the cone top"), 00249 Parameter("OavBotRibHeight", "197*mm", 00250 "Oav bottom rib height") 00251 ] 00252 ts.extend(t) 00253 00254 if self.name == "lso": 00255 t = [Parameter("LsoBrlRadius", "OavBrlOutRadius - OavThickness", 00256 "Lso barrel radius"), 00257 Parameter("LsoBrlHeight", "OavBrlHeight-OavThickness", 00258 "Lso barrel height"), 00259 Parameter("LsoConBotRadius","OavLidConBotRadius", 00260 "Lso cone bottom radius"), 00261 Parameter("LsoConTopRadius", "OavLidConTopRadius", 00262 "Lso cone top radius (same as the OAV lid top)"), 00263 Parameter("LsoConTopTipRadius", "50*mm", 00264 "The tip of LSO (with thickness of OAV lid flange) so LSO is filled to the very top of its container: OAV"), 00265 Parameter("LsoConHeight", 00266 "(LsoConBotRadius-LsoConTopRadius)*tan(OavLidConAngle)", 00267 "Lso cone height"), 00268 Parameter("LsoHeight", 00269 "LsoBrlHeight+OavThickness/cos(OavLidConAngle)+OavLidConHeight", 00270 "Lso total height (till the bot of hub, or the very top of OAV)") 00271 ] 00272 ts.extend(t) 00273 00274 if self.name == "iav": 00275 t = [Parameter("IavBrlThickness", "10*mm", 00276 "Iav barrel thickness"), 00277 Parameter("ADiavRadiusThickness", "IavBrlThickness", 00278 "Iav barrel thickness"), 00279 Parameter("IavBotThickness", "15*mm", 00280 "Iav bottom thickness"), 00281 Parameter("ADiavHeightThickness", "IavBotThickness", 00282 "Iav bottom thickness (close enough for top)"), 00283 Parameter("IavBrlHeight", "3085*mm", 00284 "Iav barrel height"), 00285 Parameter("IavBrlOutRadius", "1560*mm", 00286 "Iav barrel outer radius"), 00287 Parameter("ADiavRadius", "IavBrlOutRadius", 00288 "Iav barrel outer radius"), 00289 Parameter("IavLidRadius","1565*mm", 00290 "Iav lid radius"), 00291 Parameter("IavLidThickness","15*mm", 00292 "Iav lid thickness"), 00293 Parameter("IavLidFlgThickness", "15*mm", 00294 "Iav lid flange thickness"), 00295 Parameter("IavLidConInrRadius", "1520*mm", 00296 "Iav lid cone inside radius"), 00297 Parameter("IavLidConAngle", "3.*degree", 00298 "Iav lid conical angle"), 00299 Parameter("IavLidConBotRadius", 00300 "IavLidConInrRadius+IavLidFlgThickness*tan(IavLidConAngle/2.)", 00301 "Iav lid cone bottom radius"), 00302 Parameter("IavLidConTopRadius", "100*mm", 00303 "Iav lid cone top radius"), 00304 Parameter("IavLidConHeight", 00305 "(IavLidConBotRadius-IavLidConTopRadius)*tan(IavLidConAngle)", 00306 "Iav lid cone height"), 00307 Parameter("IavBotRibHeight", "200*mm", 00308 "Iav bottom rib height"), 00309 Parameter("IavBotVitHeight", "45*mm", 00310 "Iav bottom viton height"), 00311 Parameter("IavCtrOflTubFlgHeight", "200*mm", 00312 "Iav central overflow tube flange height"), 00313 Parameter("IavCtrOflTubFlgThickness", "25*mm", 00314 "Iav central overflow tube flange thickness"), 00315 Parameter("IavCtrOflTubFlgRadius", "150*mm", 00316 "Iav central overflow tube flange radius"), 00317 Parameter("IavHeight", 00318 "IavBrlHeight+IavLidFlgThickness+IavLidConHeight", 00319 "Iav height to the top of the cone"), 00320 Parameter("IavLidHeight", "IavHeight-IavBrlHeight", 00321 "Iav lid height from barrel top the cone top") 00322 ] 00323 ts.extend(t) 00324 00325 if self.name == "gds": 00326 t = [Parameter("GdsConTopRadius", "75*mm", 00327 "Gds cone top radius"), 00328 Parameter("GdsConBotRadius", "IavLidConInrRadius", 00329 "Gds cone bottom radius (same as IAV lid cone inner radius"), 00330 Parameter("GdsBrlRadius", "IavBrlOutRadius-IavBrlThickness", 00331 "Gds barrel radius"), 00332 Parameter("GdsBrlHeight", "IavBrlHeight-IavBotThickness", 00333 "Gds barrel height"), 00334 Parameter("GdsConHeight", 00335 "(GdsConBotRadius-GdsConTopRadius)*tan(IavLidConAngle)", 00336 "Gds cone height"), 00337 Parameter("GdsHeight", 00338 "GdsBrlHeight+IavLidFlgThickness+IavLidConHeight", 00339 "Gds total height (till the bot of IAV hub)") 00340 ] 00341 ts.extend(t) 00342 00343 i=0 00344 for zpos, radius in self.corner: 00345 i = i + 1 00346 t = Parameter("AD%sSec%szPos"%(self.name,i), 00347 zpos, 00348 "The %sth corner z pos of %s"%(i,self.name.upper())) 00349 ts.append(t) 00350 00351 t = Parameter("AD%sSec%sRad"%(self.name,i), 00352 radius, 00353 "The %sth radius for %s"%(i,self.name.upper())) 00354 ts.append(t) 00355 00356 self.params=ts return self.params
def gen::PolyCone::logvol | ( | self | ) |
Definition at line 357 of file gen.py.
00359 : 00360 if self.lv: return self.lv 00361 00362 from XmlDetDescGen.geometry import polyCone, Logvol, Physvol, PosXYZ 00363 from XmlDetDescGen.util import ExternalEntity 00364 00365 pv = [] 00366 if self.child: 00367 if self.name == "oav": 00368 posZ = "OavThickness-(OavBrlHeight-OavBrlFlgThickness)/2" 00369 if self.child.name == "lso": 00370 posZ += "+LsoBrlHeight/2" 00371 pv.append(Physvol("pv"+self.child.name.upper(), 00372 self.child.logvol(), 00373 PosXYZ(Z=posZ))) 00374 if self.name == "lso": 00375 posZ = "OavBotRibHeight+IavBotVitHeight+IavBotRibHeight-LsoBrlHeight/2" 00376 if self.child.name == "iav": 00377 posZ += "+IavBrlHeight/2" 00378 pv.append(Physvol("pv"+self.child.name.upper(), 00379 self.child.logvol(), 00380 PosXYZ(Z=posZ))) 00381 if self.name == "iav": 00382 posZ = "IavBotThickness-IavBrlHeight/2" 00383 if self.child.name == "gds": 00384 posZ += "+GdsBrlHeight/2" 00385 pv.append(Physvol("pv"+self.child.name.upper(), 00386 self.child.logvol(), 00387 PosXYZ(Z=posZ))) 00388 00389 pv.append(ExternalEntity("HandWrittenPhysVols")) 00390 00391 self.lv = Logvol("lv"+self.name.upper(),self.material, 00392 polyCone(self.name, 00393 self.zpos, 00394 self.radius), 00395 pv) 00396 return self.lv
list gen::PolyCone::NAMES = ["oav","lso","iav","gds"] [static] |