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

In This Package:

gen.py

Go to the documentation of this file.
00001 #!/usr/bin/env python
00002 
00003 """
00004 Generate AD Reflector Detector Elements.
00005 
00006 This generates the Structure XML for all AD Reflectors into the TDS at
00007 /dd/Structure/AdDetails/ and files in to DDDB/AdReflectorStructure/*.xml.
00008 
00009 This needs to match the hand-written XML in DDDB/AdDetails/geometry.xml.
00010 
00011 """
00012 
00013 class AdReflectorStructure:
00014 
00015     sites = ['db', 'la', 'far']
00016 
00017     def write(self,outdir):
00018         from XmlDetDescGen.util import XmlFile, Comment
00019         from XmlDetDescGen.catalog import Catalog
00020         from XmlDetDescGen.reference import Reference
00021         from XmlDetDescGen.util import ExternalEntity
00022 
00023         topcat = Catalog('Structure');
00024         adcat = Catalog('AdReflectorStructure');
00025         adcat.refs = []
00026         adcat.things = []
00027         topcat.refs = [ adcat ]
00028         topcat.things = []
00029 
00030         ees = []
00031         for site,adcount in zip(AdReflectorStructure.sites,AdReflectors.adcounts):
00032             cat = Catalog('%s-ad'%site);
00033             cat.refs=[]
00034             for iad in range(0,adcount):
00035                 iad += 1
00036                 eename="%s%dreflectors"%(site,iad)
00037                 ees.append((eename,"%s%d.xml"%(site,iad)))
00038                 cat.refs.append(ExternalEntity(eename))
00039                 continue
00040             adcat.refs.append(cat)
00041 
00042         file = XmlFile(dtd="../DTD/structure.dtd",
00043                        external_entities=ees)
00044         file.objects = [ adcat ]
00045         file.write(outdir+"/structure.xml")
00046 
00047 
00048 class AdReflectors:
00049 
00050     lvtopname="/dd/Geometry/AdDetails/lvTopESR"
00051     lvbotname="/dd/Geometry/AdDetails/lvBotESR"
00052     siteids = [0x01,0x02,0x04]
00053     adcounts = [ 2,    2,     4]
00054 
00055     def __init__(self,site,siteid,adcount):
00056         self.site = site
00057         self.siteid = siteid
00058         self.adcount = adcount
00059         pass
00060 
00061     def write(self,outdir):
00062 
00063         from XmlDetDescGen.util import XmlFile, Comment
00064         from XmlDetDescGen.structure import DetElem,UserParameter
00065 
00066         for adn in range(0,self.adcount):
00067             adn += 1
00068 
00069             reflectors = []
00070 
00071             data = {
00072                    'site':site,
00073                    'siteid':siteid,
00074                    'adnum':adn,
00075                    }
00076                     
00077             de = DetElem('%(site)s-ad%(adnum)d-topesr'%data,
00078                         self.lvtopname,
00079                         npath="pvTopReflector/pvTopRefGap/pvTopESR",
00080                         support="/dd/Structure/AD/%(site)s-oil%(adnum)d"%data)
00081             reflectors.append(de)
00082                     
00083             de = DetElem('%(site)s-ad%(adnum)d-botesr'%data,
00084                         self.lvbotname,
00085                         npath="pvBotReflector/pvBotRefGap/pvBotESR",
00086                         support="/dd/Structure/AD/%(site)s-oil%(adnum)d"%data)
00087             reflectors.append(de)
00088 
00089             file = XmlFile()
00090             file.objects = reflectors
00091             file.write(outdir+"/%s%d.xml"%(self.site,adn))
00092             continue
00093                              
00094 if '__main__' == __name__:
00095 
00096     import sys,os
00097     try:
00098         xddroot = sys.argv[1]
00099     except IndexError:
00100         xddroot = os.getenv("XMLDETDESCROOT")
00101 
00102     if not xddroot:
00103         print "No XMLDETDESCROOT directory given by environment or command line"
00104         print "Using current working directory"
00105         xddroot="."
00106 
00107     outdir=xddroot + "/DDDB/AdReflectorStructure"
00108     if not os.path.exists(outdir):
00109         print "Directory does not exist, please make first"
00110         print outdir
00111         sys.exit(1)
00112 
00113 
00114     for site,siteid,adcount in zip(AdReflectorStructure.sites,AdReflectors.siteids,AdReflectors.adcounts):
00115         aps = AdReflectors(site,siteid,adcount)
00116         aps.write(outdir)
00117 
00118     aps = AdReflectorStructure()
00119     aps.write(outdir)
00120 
00121 
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:14:01 2011 for XmlDetDesc by doxygen 1.4.7