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

In This Package:

gen::Element Class Reference

List of all members.

Public Member Functions

def __init__
def param_fullname
def param_diffname
def parameters
def logical_volume
def physical_volume

Public Attributes

 name
 nick
 thickness
 material
 parent
 child
 params
 logvol
 physvol

Detailed Description

Definition at line 18 of file gen.py.


Member Function Documentation

def gen::Element::__init__ (   self,
  name,
  nick,
  material,
  thickness = "0*m",
  parent = None 
)

Definition at line 19 of file gen.py.

00019                                                                      :
00020         self.name=name
00021         self.nick=nick
00022         self.thickness=thickness
00023         self.material=material
00024         self.parent=parent
00025         self.child=None
00026         if parent: parent.child = self
00027         self.params = {}
00028         self.logvol = {}
00029         self.physvol = {}
00030         return
00031 
    def param_fullname(self,param_name,site=""):

def gen::Element::param_fullname (   self,
  param_name,
  site = "" 
)

Definition at line 32 of file gen.py.

00032                                                :
00033         if self.name == 'HallBot':
00034             return "%s%s%s"%(site,self.name,param_name)
00035         return "%sPool%s%s"%(site,self.name,param_name)
00036 
    def param_diffname(self,diffname,param_name,site=""):

def gen::Element::param_diffname (   self,
  diffname,
  param_name,
  site = "" 
)

Definition at line 37 of file gen.py.

00037                                                         :
00038         return "%sPool%s%s"%(site,diffname,param_name)
00039 
00040 
    def parameters(self):

def gen::Element::parameters (   self  ) 

Definition at line 41 of file gen.py.

00041                         :
00042         from XmlDetDescGen.parameter import Parameter
00043 
00044         if self.params: return self.params
00045 
00046         p = Parameter(self.param_fullname("Thickness"),self.thickness,"Thickness of %s"%self.nick)
00047         self.params[self.param_fullname("Thickness")] = p
00048         
00049 
00050         if self.parent.name == 'HallBot':
00051             parentThickness = "0*m"
00052         else:
00053             parentThickness = self.parent.param_fullname('Thickness')
00054         for site in ["Near","Far"]:
00055             for dim in ["X","Y"]:
00056                 pname = "Size"+dim
00057                 self.params[self.param_fullname(pname,site)] = \
00058                     Parameter(self.param_fullname(pname,site),
00059                               self.parent.param_fullname(pname,site)+"-2*"+parentThickness)
00060                 continue
00061             continue
00062 
00063         self.params[self.param_fullname('SizeZ')] = \
00064             Parameter(self.param_fullname('SizeZ'),
00065                       self.parent.param_fullname('SizeZ')+"-"+parentThickness)
00066 
00067         self.params[self.param_fullname('LiftSizeZ')] = \
00068             Parameter(self.param_fullname('LiftSizeZ'),"0.5*"+parentThickness)
00069 
00070         bevel = []
00071         elem = self
00072         while elem:
00073             bevel.append(elem.param_fullname('Thickness'))
00074             elem = elem.child
00075             continue
00076         self.params[self.param_fullname('BevelSize')] = \
00077             Parameter(self.param_fullname('BevelSize'),
00078                       "2*(sqrt(2)-1)*(%s)"%"+".join(bevel))
00079 
00080         return self.params
00081     
    def logical_volume(self,site):

def gen::Element::logical_volume (   self,
  site 
)

Definition at line 82 of file gen.py.

00082                                  :
00083         try:
00084             return self.logvol[site]
00085         except KeyError:
00086             pass
00087             
00088         from XmlDetDescGen.geometry import Box,Boolean,BooleanSecondary,Logvol,PosXYZ,RotXYZ
00089 
00090         # Make the subtracted ones first
00091         subtracted = []
00092         signX = ['0.5*%s', '0.5*%s','-0.5*%s','-0.5*%s']
00093         signY = ['0.5*%s','-0.5*%s', '0.5*%s','-0.5*%s']
00094         signX2 = ['0.5*%s', '0.5*%s','-0.5*%s','-0.5*%s']
00095         signY2 = ['0*%s', '0.5*%s','-0.5*%s', '0.5*%s','-0.5*%s']
00096         signR = ['0*%s', '0.5*%s','-0.5*%s', '0.5*%s','-0.5*%s']
00097 
00098         if self.name=="OWS":
00099             
00100             for ind in range(0,4):
00101                 subtracted.append(BooleanSecondary(
00102                     Box(site.lower()+'_pool_'+self.name.lower()+'_sub%d'%ind,
00103                         sizeX=self.param_diffname('Liner','BevelSize'),
00104                         sizeY=self.param_diffname('Liner','BevelSize'),
00105                         sizeZ="SubShift+" + self.param_fullname('SizeZ')),
00106                     PosXYZ(X=signX[ind]%self.param_diffname('Liner','SizeX',site),
00107                            Y=signY[ind]%self.param_diffname('Liner','SizeY',site),
00108                            Z="0*m"),
00109                     RotXYZ(rotZ="45*degree")))
00110 
00111             for ind in range(4,8):
00112                 subtracted.append(BooleanSecondary(
00113                     Box(site.lower()+'_pool_'+self.name.lower()+'_sub%d'%ind,
00114                         sizeX=self.param_fullname('BevelSize'),
00115                         sizeY=self.param_fullname('BevelSize'),
00116                         sizeZ=self.param_fullname('SizeZ')),
00117                     PosXYZ(X=signX[ind-4]%self.param_fullname('SizeX',site),
00118                            Y=signY[ind-4]%self.param_fullname('SizeY',site),
00119                            Z="-TopGapThickness"),
00120                     RotXYZ(rotZ="45*degree")))
00121                 
00122             subtracted.append(BooleanSecondary(
00123                 Box(site.lower()+'_pool_'+self.name.lower()+'_sub8',
00124                     sizeX=self.param_fullname('SizeX',site),
00125                     sizeY="SubShift",
00126                     sizeZ=self.param_fullname('SizeZ')),
00127                 PosXYZ(X="0*cm",
00128                        Y=self.param_fullname('SizeY',site)+"/2."+"+SubShift/2.-PoolLinerThickness",
00129                        Z="-TopGapThickness"),
00130                 RotXYZ(rotZ="0*degree")))
00131 
00132             subtracted.append(BooleanSecondary(
00133                 Box(site.lower()+'_pool_'+self.name.lower()+'_sub9',
00134                     sizeX=self.param_fullname('SizeX',site),
00135                     sizeY="SubShift",
00136                     sizeZ=self.param_fullname('SizeZ')),
00137                 PosXYZ(X="0*cm",
00138                        Y=self.param_fullname('SizeY',site)+"/(-2.)"+"-SubShift/2.+PoolLinerThickness",
00139                        Z="-TopGapThickness"),
00140                 RotXYZ(rotZ="0*degree")))
00141 
00142             subtracted.append(BooleanSecondary(
00143                 Box(site.lower()+'_pool_'+self.name.lower()+'_sub10',
00144                     sizeX=self.param_fullname('SizeX',site),
00145                     sizeY="SubShift",
00146                     sizeZ=self.param_fullname('SizeZ')),
00147                 PosXYZ(X=self.param_fullname('SizeX',site)+"/2."+"+SubShift/2.-PoolLinerThickness",
00148                        Y="0*cm",
00149                        Z="-TopGapThickness"),
00150                 RotXYZ(rotZ="90*degree")))
00151 
00152             subtracted.append(BooleanSecondary(
00153                 Box(site.lower()+'_pool_'+self.name.lower()+'_sub11',
00154                     sizeX=self.param_fullname('SizeX',site),
00155                     sizeY="SubShift",
00156                     sizeZ=self.param_fullname('SizeZ')),
00157                 PosXYZ(X=self.param_fullname('SizeX',site)+"/(-2.)"+"-SubShift/2.+PoolLinerThickness",
00158                        Y="0*cm",
00159                        Z="-TopGapThickness"),
00160                 RotXYZ(rotZ="90*degree")))
00161 
00162 
00163 
00164             # Make the subtraction
00165             sub = Boolean("subtraction",site.lower()+'_pool_'+self.name.lower()+'_box',
00166                           Box(site.lower()+'_pool_'+self.name.lower(),
00167                               sizeX=self.param_diffname('Liner','SizeX',site),
00168                               sizeY=self.param_diffname('Liner','SizeY',site),
00169                               sizeZ=self.param_fullname('SizeZ')),
00170                           subtracted)
00171 
00172         elif self.name=="IWS":
00173 
00174             for ind in range(0,4):
00175                 subtracted.append(BooleanSecondary(
00176                     Box(site.lower()+'_pool_'+self.name.lower()+'_sub%d'%ind,
00177                         sizeX=self.param_diffname('Curtain','BevelSize'),
00178                         sizeY=self.param_diffname('Curtain','BevelSize'),
00179                         sizeZ="SubShift+" + self.param_fullname('SizeZ')),
00180                     PosXYZ(X=signX[ind]%self.param_diffname('Curtain','SizeX',site),
00181                            Y=signY[ind]%self.param_diffname('Curtain','SizeY',site),
00182                            Z="0*m"),
00183                     RotXYZ(rotZ="45*degree")))
00184 
00185             for ind in range(4,8):
00186                 subtracted.append(BooleanSecondary(
00187                     Box(site.lower()+'_pool_'+self.name.lower()+'_sub%d'%ind,
00188                         sizeX=self.param_fullname('BevelSize'),
00189                         sizeY=self.param_fullname('BevelSize'),
00190                         sizeZ=self.param_fullname('SizeZ')),
00191                     PosXYZ(X=signX[ind-4]%self.param_fullname('SizeX',site),
00192                            Y=signY[ind-4]%self.param_fullname('SizeY',site),
00193                            Z="-TopGapThickness"),
00194                     RotXYZ(rotZ="45*degree")))
00195                 
00196             subtracted.append(BooleanSecondary(
00197                 Box(site.lower()+'_pool_'+self.name.lower()+'_sub8',
00198                     sizeX=self.param_fullname('SizeX',site),
00199                     sizeY="SubShift",
00200                     sizeZ=self.param_fullname('SizeZ')),
00201                 PosXYZ(X="0*cm",
00202                        Y=self.param_fullname('SizeY',site)+"/2."+"+SubShift/2.-PoolCurtainThickness",
00203                        Z="-TopGapThickness"),
00204                 RotXYZ(rotZ="0*degree")))
00205 
00206             subtracted.append(BooleanSecondary(
00207                 Box(site.lower()+'_pool_'+self.name.lower()+'_sub9',
00208                     sizeX=self.param_fullname('SizeX',site),
00209                     sizeY="SubShift",
00210                     sizeZ=self.param_fullname('SizeZ')),
00211                 PosXYZ(X="0*cm",
00212                        Y=self.param_fullname('SizeY',site)+"/(-2.)"+"-SubShift/2.+PoolCurtainThickness",
00213                        Z="-TopGapThickness"),
00214                 RotXYZ(rotZ="0*degree")))
00215 
00216             subtracted.append(BooleanSecondary(
00217                 Box(site.lower()+'_pool_'+self.name.lower()+'_sub10',
00218                     sizeX=self.param_fullname('SizeX',site),
00219                     sizeY="SubShift",
00220                     sizeZ=self.param_fullname('SizeZ')),
00221                 PosXYZ(X=self.param_fullname('SizeX',site)+"/2."+"+SubShift/2.-PoolCurtainThickness",
00222                        Y="0*cm",
00223                        Z="-TopGapThickness"),
00224                 RotXYZ(rotZ="90*degree")))
00225 
00226             subtracted.append(BooleanSecondary(
00227                 Box(site.lower()+'_pool_'+self.name.lower()+'_sub11',
00228                     sizeX=self.param_fullname('SizeX',site),
00229                     sizeY="SubShift",
00230                     sizeZ=self.param_fullname('SizeZ')),
00231                 PosXYZ(X=self.param_fullname('SizeX',site)+"/(-2.)"+"-SubShift/2.+PoolCurtainThickness",
00232                        Y="0*cm",
00233                        Z="-TopGapThickness"),
00234                 RotXYZ(rotZ="90*degree")))
00235 
00236 
00237 
00238             # Make the subtraction
00239             sub = Boolean("subtraction",site.lower()+'_pool_'+self.name.lower()+'_box',
00240                           Box(site.lower()+'_pool_'+self.name.lower(),
00241                               sizeX=self.param_diffname('Curtain','SizeX',site),
00242                               sizeY=self.param_diffname('Curtain','SizeY',site),
00243                               sizeZ=self.param_fullname('SizeZ')),
00244                           subtracted)
00245 
00246         else:
00247             for ind in range(0,4):
00248                 subtracted.append(BooleanSecondary(
00249                     Box(site.lower()+'_pool_'+self.name.lower()+'_sub%d'%ind,
00250                         sizeX=self.param_fullname('BevelSize'),
00251                         sizeY=self.param_fullname('BevelSize'),
00252                         sizeZ="1*cm+"+self.param_fullname('SizeZ')),
00253                     PosXYZ(X=signX[ind]%self.param_fullname('SizeX',site),
00254                            Y=signY[ind]%self.param_fullname('SizeY',site),
00255                            Z="0*m"),
00256                     RotXYZ(rotZ="45*degree")))
00257 
00258             # Make the subtraction
00259             sub = Boolean("subtraction",site.lower()+'_pool_'+self.name.lower()+'_box',
00260                           Box(site.lower()+'_pool_'+self.name.lower(),
00261                               sizeX=self.param_fullname('SizeX',site),
00262                               sizeY=self.param_fullname('SizeY',site),
00263                               sizeZ=self.param_fullname('SizeZ')),
00264                           subtracted)
00265                 
00266 
00267         if self.child: 
00268             from XmlDetDescGen.geometry import Physvol
00269 
00270             pvs = self.child.physical_volume(site)
00271             if gen_pool_pmts and self.name == "OWS":
00272                 pvs.append(Physvol("pv%sOutPTE"%site,"/dd/Geometry/PmtPanel/lv%sOutPTE"%site))
00273 
00274             
00275         else:                   # must be OWS, add ADEs
00276             #from XmlDetDescGen.util import ExternalEntity
00277             #pvs = [ ExternalEntity('AD%sPlacements'%site) ]
00278 
00279             from XmlDetDescGen.geometry import Physvol, PosXYZ
00280             
00281             pvs = []
00282             if site == 'Near':
00283                 pvs.append(Physvol("pvNearADE1","/dd/Geometry/AD/lvADE",
00284                                    PosXYZ(X="1*(0.5*NearPoolIWSSizeX-PoolIWSThickness)",
00285                                           Z="ADadeZplace")));
00286                 pvs.append(Physvol("pvNearADE2","/dd/Geometry/AD/lvADE",
00287                                    PosXYZ(X="-1*(0.5*NearPoolIWSSizeX-PoolIWSThickness)",
00288                                           Z="ADadeZplace")));
00289             else:
00290                 pvs.append(Physvol("pvFarADE1","/dd/Geometry/AD/lvADE",
00291                                    PosXYZ(X="1*(0.5*FarPoolIWSSizeX-PoolIWSThickness)",
00292                                           Y="1*(0.5*FarPoolIWSSizeY-PoolIWSThickness)",
00293                                           Z="ADadeZplace")))
00294                 pvs.append(Physvol("pvFarADE2","/dd/Geometry/AD/lvADE",
00295                                    PosXYZ(X="-1*(0.5*FarPoolIWSSizeX-PoolIWSThickness)",
00296                                           Y="1*(0.5*FarPoolIWSSizeY-PoolIWSThickness)",
00297                                           Z="ADadeZplace")))
00298                 pvs.append(Physvol("pvFarADE3","/dd/Geometry/AD/lvADE",
00299                                    PosXYZ(X="-1*(0.5*FarPoolIWSSizeX-PoolIWSThickness)",
00300                                           Y="-1*(0.5*FarPoolIWSSizeY-PoolIWSThickness)",
00301                                           Z="ADadeZplace")))
00302                 pvs.append(Physvol("pvFarADE4","/dd/Geometry/AD/lvADE",
00303                                    PosXYZ(X="1*(0.5*FarPoolIWSSizeX-PoolIWSThickness)",
00304                                           Y="-1*(0.5*FarPoolIWSSizeY-PoolIWSThickness)",
00305                                           Z="ADadeZplace")))
00306             if gen_pool_pmts:
00307                 pvs.append(Physvol("pv%sInPTE"%site,"/dd/Geometry/PmtPanel/lv%sInPTE"%site))
00308 
00309         from XmlDetDescGen.util import ExternalEntity
00310         pvs.append(ExternalEntity("%sHandWrittenPhysVols"%site))
00311 
00312         lv = Logvol('lv'+site+'Pool'+self.name,self.material,sub,pvs)
00313         self.logvol[site] = lv;
00314         return lv;
00315 
    def physical_volume(self,site):

def gen::Element::physical_volume (   self,
  site 
)

Definition at line 316 of file gen.py.

00316                                   :
00317         try:
00318             return self.physvol[site]
00319         except KeyError:
00320             pass
00321 
00322         from XmlDetDescGen.geometry import Physvol,PosXYZ
00323             
00324         lv = self.logical_volume(site)
00325         #print site,self.name,lv.name
00326         pv = Physvol('pv'+site+'Pool'+self.name,lv,
00327                      PosXYZ(X="0*m",Y="0*m",Z=self.param_fullname('LiftSizeZ')))
00328         self.physvol[site] = [pv]
00329         return self.physvol[site]
00330     
00331 
00332 
class Pool:


Member Data Documentation

gen::Element::name

Definition at line 20 of file gen.py.

gen::Element::nick

Definition at line 21 of file gen.py.

gen::Element::thickness

Definition at line 22 of file gen.py.

gen::Element::material

Definition at line 23 of file gen.py.

gen::Element::parent

Definition at line 24 of file gen.py.

gen::Element::child

Definition at line 25 of file gen.py.

gen::Element::params

Definition at line 27 of file gen.py.

gen::Element::logvol

Definition at line 28 of file gen.py.

gen::Element::physvol

Definition at line 29 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:13:45 2011 for MiniDryRunXmlDetDesc by doxygen 1.4.7