| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

gen::Pool Class Reference

List of all members.

Public Member Functions

def __init__
def geometry_catalog
def get_param_header
def get_pool_parameters
def parameters_file
def geometry_files
def thing_files
def detid
def structure_file

Public Attributes

 parameters_filename
 geometry_filename
 structure_filename
 pool_elements
 general_parameters
 geometry_cat
 outdir

Detailed Description

Definition at line 333 of file gen.py.


Member Function Documentation

def gen::Pool::__init__ (   self  ) 

Definition at line 334 of file gen.py.

00334                       :
00335         self.parameters_filename="parameters.xml"
00336         self.geometry_filename="geometry.xml"
00337         self.structure_filename="structure.xml"
00338 #
00339 # for mini-dry run change the material of the pool from Dead/Ows/Iws/Water to Vacuum
00340 #
00341         print " --------- for mini-dry run change the material of the pool from Dead/Ows/Iws/Water to Vacuum ------ "
00342         hallbot = Element("HallBot","bottom of hall","Rock")
00343         dead = Element("Dead","dead space","Vacuum","84*mm",hallbot)
00344 #        liner = Element("Liner","tyvek liner","Tyvek","50*micrometer",dead)
00345         liner = Element("Liner","tyvek liner","Tyvek","4*mm",dead)
00346         ows = Element("OWS","outer water shield","Vacuum","1.0*m",liner)
00347 #        curtain = Element("Curtain","tyvek curtain","Tyvek","50*micrometer",ows)
00348         curtain = Element("Curtain","tyvek curtain","Tyvek","4*mm",ows)
00349         iws = Element("IWS","inner water shield","Vacuum","4.037*m",curtain)
00350 
00351         self.pool_elements = { "Dead":dead, "Liner":liner, "OWS":ows, "Curtain":curtain, "IWS":iws }
00352 
00353         #self.general_parameters = [
00354         #    Parameter("PoolLipHeight","0.2*m","Height of concrete lip around pool")
00355         #    ]
00356 
00357         self.geometry_cat = None
00358         self.outdir = "."
00359         return
00360 
    def geometry_catalog(self):

def gen::Pool::geometry_catalog (   self  ) 

Definition at line 361 of file gen.py.

00361                               :
00362         if self.geometry_cat: return self.geometry_cat
00363 
00364         from XmlDetDescGen.catalog import Catalog
00365         from XmlDetDescGen.reference import Reference
00366 
00367         topcat = Catalog('Geometry');
00368         poolcat = Catalog('Pool');
00369 
00370         # This is fake, just to get the right /dd/Geometry path
00371         topcat.refs = [ Reference("#Pool",poolcat) ]
00372 
00373         for name in pool_element_names:
00374             ele = self.pool_elements[name]
00375             for site in ["Near","Far"]:
00376                 lv = ele.logical_volume(site)
00377                 poolcat.refs.append(Reference("%s.xml#%s"%(name,lv.name),lv))
00378                 continue
00379             continue
00380 
00381         # Important, needed so full_paths can be set
00382         topcat.update()
00383 
00384         self.geometry_cat = poolcat
00385         return poolcat
00386 
00387 
    def get_param_header(self):

def gen::Pool::get_param_header (   self  ) 

Definition at line 388 of file gen.py.

00388                               :
00389 
00390         from XmlDetDescGen.util import Comment
00391 
00392         s = []
00393         s.append('''
00394      Define the water pool.  This is done by subsequently placing
00395      these volumes inside the bootom of the hall and then placing each
00396      in the previous.
00397 ''')
00398         for thing in pool_element_names:
00399             s.append('    - %s'%thing)
00400             continue
00401         s.append('''
00402      Each of these elements are specified by their thickness relative
00403      to their parents and the assumptions that they are concentric in
00404      X and Y and are lifted by one thickness when placed so that all
00405      their tops are coplanar.  In addition, a bevel size is
00406      calculated.  This is used to subtract out the corners of the
00407      boxes to make octagonal shapes.  It is assumed that Z sizes are
00408      site-independent.
00409 
00410      This all results in parameters looking like:
00411 
00412      NearPool_THING_SizeX
00413      NearPool_THING_SizeY
00414       FarPool_THING_SizeX
00415       FarPool_THING_SizeY
00416          Pool_THING_SizeZ
00417          Pool_THING_LiftZ
00418          Pool_THING_BevelSize
00419 
00420      Where _THING_ is
00421 ''')
00422         for thing in pool_element_names:
00423             ele = self.pool_elements[thing]
            s.append('    %s - %s'%(ele.name,ele.nick))

def gen::Pool::get_pool_parameters (   self  ) 

Definition at line 424 of file gen.py.

00428                                  :
00429         from XmlDetDescGen.parameter import Parameter
00430         ret = [Parameter('TableHeight','2.5*m','Distance from pool floor to AD table'),
00431                Parameter("ADadeZplace",'TableHeight+0.5*ADadeHeight-0.5*PoolIWSSizeZ-PoolDeadThickness-PoolLinerThickness-PoolOWSThickness-PoolCurtainThickness','A position of AD adeelopes'),]
00432         
00433         for thing in pool_element_names:
00434             ele = self.pool_elements[thing]
00435             params = ele.parameters()
00436             p = params[ele.param_fullname('Thickness')]
00437             ret.append(p)
00438             continue
00439         for thing in pool_element_names:
00440             ele = self.pool_elements[thing]
00441             for name,param in ele.params.iteritems():
00442                 if name == ele.param_fullname('Thickness'):continue
00443                 ret.append(param)
                continue

def gen::Pool::parameters_file (   self  ) 

Definition at line 444 of file gen.py.

00448                              :
00449         from XmlDetDescGen.util import XmlFile
00450         objects = [self.get_param_header()]
00451         objects.extend(self.get_pool_parameters())
        file = XmlFile(objects=objects)

def gen::Pool::geometry_files (   self  ) 

Definition at line 452 of file gen.py.

00456                             :
00457         from XmlDetDescGen.util import XmlFile,ExternalEntity
00458         file = XmlFile(dtd="../DTD/geometry.dtd",
00459                        objects=[ExternalEntity("SiteParameters"),
00460                                 ExternalEntity("PoolParameters"),
00461                                 ExternalEntity("PoolDetailsParameters"),
00462                                 self.geometry_catalog()],
00463                        external_entities=[("SiteParameters","../Sites/parameters.xml"),("PoolDetailsParameters","../PoolDetails/parameters.xml"),
00464                                           ("PoolParameters","parameters.xml")])
        file.write(self.outdir+"/"+self.geometry_filename)

def gen::Pool::thing_files (   self  ) 

Definition at line 465 of file gen.py.

00469                          :
00470         from XmlDetDescGen.util import XmlFile,ExternalEntity
00471         for name in pool_element_names:
00472             ele = self.pool_elements[name]
00473 
00474             ees = [("SiteParameters","../Sites/parameters.xml"),("PoolDetailsParameters","../PoolDetails/parameters.xml"),
00475                    ("PoolParameters","parameters.xml"),
00476                    ("FarHandWrittenPhysVols","../PoolDetails/Far%sPhysVols.xml"%name),
00477                    ("NearHandWrittenPhysVols","../PoolDetails/Near%sPhysVols.xml"%name)]
00478 
00479             objects = [ExternalEntity("SiteParameters"),ExternalEntity("PoolDetailsParameters"),
00480                        ExternalEntity("PoolParameters")]
00481 
00482             if name == "IWS":
00483                 ees += [("ADParameters","../AD/parameters.xml")]
00484                 objects += [ExternalEntity("ADParameters")]
00485                 pass
00486 
00487             objects += [ele.logical_volume("Near"),
00488                         ele.logical_volume("Far")]
00489 
00490             file = XmlFile(dtd="../DTD/geometry.dtd",
00491                            objects=objects,
00492                            external_entities=ees)
            file.write("%s/%s.xml"%(self.outdir,name))

def gen::Pool::detid (   self,
  loc,
  det 
)

Definition at line 493 of file gen.py.

00497                            :
00498         # All hard coded numbers from Conventions/DetectorId.h
00499         if loc.lower() == 'db':
00500             iloc = 0x01
00501         elif loc.lower() == 'la':
00502             iloc = 0x02
00503         elif loc.lower() == 'far':
00504             iloc = 0x04
00505         else:
00506             iloc = 0x00
00507         if det.lower() == 'iws':
00508             idet = 5
00509         elif det.lower() == 'ows':
00510             idet = 6
00511         else:
00512             idet = 0
00513         detid = ((iloc<<24)|(idet<<16))
00514         from XmlDetDescGen.structure import UserParameter
00515         return UserParameter("DetectorID","int", ['0x%x'%detid],
                             desc="Packed Detector ID")

def gen::Pool::structure_file (   self  ) 

Definition at line 516 of file gen.py.

00520                             :
00521         from XmlDetDescGen.util import XmlFile,ExternalEntity
00522         from XmlDetDescGen.reference import Reference
00523         from XmlDetDescGen.structure import DetElem
00524         from XmlDetDescGen.catalog import Catalog
00525 
00526         ees = [ ("dbInnFinpmts", "../PoolPmtStructure/dbInnFin.xml"),
00527                 ("dbOutFinpmts", "../PoolPmtStructure/dbOutFin.xml"),
00528                 ("dbOutFoutpmts", "../PoolPmtStructure/dbOutFout.xml"),
00529                 ("laInnFinpmts", "../PoolPmtStructure/laInnFin.xml"),
00530                 ("laOutFinpmts", "../PoolPmtStructure/laOutFin.xml"),
00531                 ("laOutFoutpmts", "../PoolPmtStructure/laOutFout.xml"),
00532                 ("farInnFinpmts", "../PoolPmtStructure/farInnFin.xml"),
00533                 ("farOutFinpmts", "../PoolPmtStructure/farOutFin.xml"),
00534                 ("farOutFoutpmts", "../PoolPmtStructure/farOutFout.xml") 
00535                 ]
00536 
00537         file = XmlFile(dtd="../DTD/structure.dtd",
00538                        external_entities=ees)
00539 
00540         # To assure logical volume's full_path is set
00541         gc = self.geometry_catalog()
00542         gc.update()
00543 
00544         topcat = Catalog('Structure');
00545         poolcat = Catalog('Pool');
00546         # Clear our refs because some how this is filled with the
00547         # contents of the /Geometry/Pool catalog!  Python bug???
00548         poolcat.refs = []       
00549         topcat.refs = [ poolcat ]
00550 
00551         base = "/dd/Structure/Pool/"
00552 
00553         delist = {"DB":[],"LA":[],"Far":[]}
00554 
00555         last_support = "/dd/Structure/Sites/%(loc)s-rock"
00556 
00557         for (thing,npath) in pool_detelem_data:
00558             ele = self.pool_elements[thing]
00559             nf="Near"
00560             for loc,adn in zip(["DB","LA","Far"],[2,2,4]):
00561                 if loc == "Far": nf = "Far"
00562                 lv_name = '/dd/Geometry/Pool/'+ele.logical_volume(nf).name
00563                 de = DetElem(loc.lower()+'-'+thing.lower(),
00564                              lv_name,
00565                              npath%{"loc":loc,"nf":nf},
00566                              last_support%{'loc':loc.lower()})
00567                 de.refs = []
00568                 if thing == 'IWS':
00569                     for iad in range(0,adn):
00570                         iad+=1
00571                         href='../AD/structure.xml#%s-ade%d'%(loc.lower(),iad)
00572                         de.refs.append(Reference(href,de))
00573                         continue
00574                 if thing == 'IWS':
00575                     de.refs.append(ExternalEntity(loc.lower()+"InnFinpmts"))
00576                 if thing == 'OWS':
00577                     de.refs.append(ExternalEntity(loc.lower()+"OutFinpmts"))
00578                     de.refs.append(ExternalEntity(loc.lower()+"OutFoutpmts"))
00579 
00580                 if thing == 'IWS' or thing == 'OWS':
00581                     de.refs.append(self.detid(loc,thing))
00582                 poolcat.things.append(de)
00583                 delist[loc].append(de)
00584                 continue
00585             last_support = base+"%(loc)s-"+ thing.lower()
00586             continue
00587         
00588 
00589         # Fix up detelemrefs
00590         for (k,lst) in delist.iteritems():
00591             lst.reverse()
00592             while lst:
00593                 de = lst.pop()
00594                 try:
00595                     next_de = lst[-1]
00596                 except IndexError:
00597                     break
00598                 de.refs.insert(0,Reference("#%s"%next_de.name,next_de))
00599                 continue
00600             continue
00601 
00602         file.objects = [ poolcat ]
        file.write(self.outdir+"/"+self.structure_filename)


Member Data Documentation

gen::Pool::parameters_filename

Definition at line 335 of file gen.py.

gen::Pool::geometry_filename

Definition at line 336 of file gen.py.

gen::Pool::structure_filename

Definition at line 337 of file gen.py.

gen::Pool::pool_elements

Definition at line 351 of file gen.py.

gen::Pool::general_parameters

Definition at line 353 of file gen.py.

gen::Pool::geometry_cat

Definition at line 357 of file gen.py.

gen::Pool::outdir

Definition at line 358 of file gen.py.


The documentation for this class was generated from the following file:
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:13:45 2011 for MiniDryRunXmlDetDesc by doxygen 1.4.7