00001
00002
00003
00004
00005
00006
00007
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
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
00037 status = self.posTool.placeVolume()
00038 return status
00039
00040 def execute(self):
00041
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
00064 posAlg = PositionerAlg("posAlg")
00065 posAlg.posToolConf = diffBallPositioner
00066 app.addAlgorithm(posAlg)