| 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 337 of file gen.py.


Member Function Documentation

def gen::Pool::__init__ (   self  ) 

Definition at line 338 of file gen.py.

00338                       :
00339         self.parameters_filename="parameters.xml"
00340         self.geometry_filename="geometry.xml"
00341         self.structure_filename="structure.xml"
00342 
00343         hallbot = Element("HallBot","bottom of hall","Rock")
00344         dead = Element("Dead","dead space","DeadWater","84*mm",hallbot)
00345 #        liner = Element("Liner","tyvek liner","Tyvek","50*micrometer",dead)
00346         liner = Element("Liner","tyvek liner","Tyvek","4*mm",dead)
00347         ows = Element("OWS","outer water shield","OwsWater","1.0*m",liner)
00348 #        curtain = Element("Curtain","tyvek curtain","Tyvek","50*micrometer",ows)
00349         curtain = Element("Curtain","tyvek curtain","Tyvek","4*mm",ows)
00350         iws = Element("IWS","inner water shield","IwsWater","4.037*m",curtain)
00351 
00352         self.pool_elements = { "Dead":dead, "Liner":liner, "OWS":ows, "Curtain":curtain, "IWS":iws }
00353 
00354         #self.general_parameters = [
00355         #    Parameter("PoolLipHeight","0.2*m","Height of concrete lip around pool")
00356         #    ]
00357 
00358         self.geometry_cat = None
00359         self.outdir = "."
00360         return
00361 
    def geometry_catalog(self):

def gen::Pool::geometry_catalog (   self  ) 

Definition at line 362 of file gen.py.

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

def gen::Pool::get_param_header (   self  ) 

Definition at line 389 of file gen.py.

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

def gen::Pool::get_pool_parameters (   self  ) 

Definition at line 425 of file gen.py.

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

def gen::Pool::parameters_file (   self  ) 

Definition at line 445 of file gen.py.

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

def gen::Pool::geometry_files (   self  ) 

Definition at line 453 of file gen.py.

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

def gen::Pool::thing_files (   self  ) 

Definition at line 466 of file gen.py.

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

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

Definition at line 494 of file gen.py.

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

def gen::Pool::structure_file (   self  ) 

Definition at line 517 of file gen.py.

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


Member Data Documentation

gen::Pool::parameters_filename

Definition at line 339 of file gen.py.

gen::Pool::geometry_filename

Definition at line 340 of file gen.py.

gen::Pool::structure_filename

Definition at line 341 of file gen.py.

gen::Pool::pool_elements

Definition at line 352 of file gen.py.

gen::Pool::general_parameters

Definition at line 354 of file gen.py.

gen::Pool::geometry_cat

Definition at line 358 of file gen.py.

gen::Pool::outdir

Definition at line 359 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:14:02 2011 for XmlDetDesc by doxygen 1.4.7