| 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     lvbotname="/dd/Geometry/AdDetails/lvBotESR"
00051     siteids = [0x01,0x02,0x04]
00052     adcounts = [ 2,    2,     4]
00053 
00054     def __init__(self,site,siteid,adcount):
00055         self.site = site
00056         self.siteid = siteid
00057         self.adcount = adcount
00058         pass
00059 
00060     def write(self,outdir):
00061 
00062         from XmlDetDescGen.util import XmlFile, Comment
00063         from XmlDetDescGen.structure import DetElem,UserParameter
00064 
00065         for adn in range(0,self.adcount):
00066             adn += 1
00067 
00068             reflectors = []
00069 
00070             data = {
00071                    'site':site,
00072                    'siteid':siteid,
00073                    'adnum':adn,
00074                    }
00075                     
00076             de = DetElem('%(site)s-ad%(adnum)d-botesr'%data,
00077                         self.lvbotname,
00078                         npath="pvBotReflector/pvBotRefGap/pvBotESR",
00079                         support="/dd/Structure/AD/%(site)s-oil%(adnum)d"%data)
00080             reflectors.append(de)
00081 
00082             file = XmlFile()
00083             file.objects = reflectors
00084             file.write(outdir+"/%s%d.xml"%(self.site,adn))
00085             continue
00086                              
00087 if '__main__' == __name__:
00088 
00089     import sys,os
00090     try:
00091         xddroot = sys.argv[1]
00092     except IndexError:
00093         xddroot = os.getenv("XMLDETDESCROOT")
00094 
00095     if not xddroot:
00096         print "No XMLDETDESCROOT directory given by environment or command line"
00097         print "Using current working directory"
00098         xddroot="."
00099 
00100     # to fix the local vs systematic path problem. --- Wei, Jan, 2010
00101     xddroot = ".."
00102 
00103     outdir=xddroot + "/DDDB/AdReflectorStructure"
00104     if not os.path.exists(outdir):
00105         print "Directory does not exist, please make first"
00106         print outdir
00107         sys.exit(1)
00108 
00109 
00110     for site,siteid,adcount in zip(AdReflectorStructure.sites,AdReflectors.siteids,AdReflectors.adcounts):
00111         aps = AdReflectors(site,siteid,adcount)
00112         aps.write(outdir)
00113 
00114     aps = AdReflectorStructure()
00115     aps.write(outdir)
00116 
00117 
| 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