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

In This Package:

positionerTest.py

Go to the documentation of this file.
00001 #!/usr/bin/env python
00002 # An example script showing how to add a volume to the detector geometry
00003 #
00004 #
00005 # dandwyer@caltech.edu 2008-10-22
00006 
00007 # Configure the placement of the LED diffuser ball
00008 from DetHelpers.DetHelpersConf import PositionerTool
00009 diffBallPositioner = PositionerTool("posAlg.diffBallPositioner")
00010 diffBallPositioner.PhysicalVolume = "pvDiffuserBall"
00011 diffBallPositioner.LogicalVolume = "/dd/Geometry/CalibrationSources/lvDiffuserBall"
00012 diffBallPositioner.MotherVolume = "/dd/Geometry/AD/lvOIL"
00013 diffBallPositioner.Position = [0., 0., 0.]
00014 diffBallPositioner.Rotation = [1., 0., 0.,
00015                                0., 1., 0.,
00016                                0., 0., 1.]
00017 diffBallPositioner.Element = "db-diffuserBallCenter1"
00018 diffBallPositioner.Support = "/dd/Structure/DayaBay/db-rock/db-ows/db-curtain/db-iws/db-ade1/db-sst1/db-oil1"
00019 
00020 # Add simple positioner algorithm to list of algs 
00021 from GaudiPython.GaudiAlgs import GaudiAlgo
00022 from GaudiPython import SUCCESS, FAILURE
00023 
00024 class PositionerAlg(GaudiAlgo):
00025     """An algorithm that places a volume in the detector geometry"""
00026     def __init__(self,name):
00027         GaudiAlgo.__init__(self,name)
00028         print "Making PositionerAlg",name
00029         self.posToolConf = None
00030         
00031     def initialize(self):
00032         status = GaudiAlgo.initialize(self)
00033         print "getFullName = ",self.posToolConf.getFullName()
00034         self.posTool = self.tool('IPositionerTool',
00035                                  self.posToolConf.getFullName())
00036         # Place volume
00037         status = self.posTool.placeVolume()
00038         return status
00039     
00040     def execute(self):
00041         # Print some output to look at result of placement
00042         de_name = self.posToolConf.Support
00043         dbSupport = self.getDet(de_name)
00044         dbSupportGeo = dbSupport.geometry()
00045         nPVolumes = dbSupportGeo.lvolume().pvolumes().size()
00046         print "pvolumes: ", nPVolumes
00047         for pvol in dbSupportGeo.lvolume().pvolumes():
00048             print pvol.name(), pvol
00049             print pvol.lvolumeName(), pvol.name()
00050             print pvol.lvolume().name(), pvol.name()
00051             print "\n"
00052             for cde in dbSupport.childIDetectorElements():
00053                 print cde.name()
00054                 print cde.geometry().lvolume().name()
00055                 print "\n"
00056         return SUCCESS
00057         
00058 
00059 def configure():
00060     return
00061 
00062 def run(app):
00063     # Add PositionerAlg to alg list
00064     posAlg = PositionerAlg("posAlg")
00065     posAlg.posToolConf = diffBallPositioner
00066     app.addAlgorithm(posAlg)
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:15:09 2011 for DetHelpers by doxygen 1.4.7