def construct(self, geom): main_lv, main_hDim = ltools.main_lv( self, geom, "Box") if self.AuxParams != None: ltools.addAuxParams( self, main_lv ) self.add_volume( main_lv ) TranspV = [0,0,1] begingap = ltools.getBeginGap( self ) # initial position, based on the dimension projected on transportation vector pos = [Q('0m'),Q('0m'),-main_hDim[2]+begingap] for i,sb in enumerate(self.get_builders()): sb_lv = sb.get_volume() sb_dim = ltools.getShapeDimensions( sb_lv, geom ) step = [Q('0cm'),Q('0cm'),Q('0cm')] #assert ( sb_dim != None ), " fail" if sb_dim != None: step[2] = sb_dim[2] else: assert( sb.halfDimension != None ), " No volumen defined on %s " % sb step[2] = sb.halfDimension['dz'] pos[2] = pos[2] + step[2] + self.InsideGap[i] # defining position, placement, and finally insert into main logic volume. sb_pos = geom.structure.Position(self.name+sb_lv.name+'_pos_'+str(i), pos[0], pos[1], pos[2]) sb_pla = geom.structure.Placement(self.name+sb_lv.name+'_pla_'+str(i), volume=sb_lv, pos=sb_pos ) main_lv.placements.append(sb_pla.name) pos[2] = pos[2] + step[2]
def construct(self, geom): builders = self.get_builders() sb_0 = builders[0] sb_0_lv = sb_0.get_volume() sb_0_shape = geom.store.shapes.get(sb_0_lv.shape) sb_1 = builders[1] sb_1_lv = sb_1.get_volume() sb_1_shape = geom.store.shapes.get(sb_1_lv.shape) sb_pos = geom.structure.Position(self.name + '_pos', self.SubBPos[0], self.SubBPos[1], self.SubBPos[2]) sb_boolean_shape = geom.shapes.Boolean(self.name + '_' + self.Boolean, type=self.Boolean, first=sb_0_shape, second=sb_1_shape, pos=sb_pos) sb_boolean_lv = geom.structure.Volume('vol' + sb_boolean_shape.name, material=self.Material, shape=sb_boolean_shape) if self.AuxParams != None: ltools.addAuxParams(self, sb_boolean_lv) self.add_volume(sb_boolean_lv)
def construct(self, geom): main_lv, main_hDim = ltools.main_lv(self, geom, "Box") if self.AuxParams != None: ltools.addAuxParams(self, main_lv) self.add_volume(main_lv) for i, sb in enumerate(self.get_builders()): Pos = [Q("0m"), Q("0m"), Q("0m")] Rot = [Q("0deg"), Q("0deg"), Q("0deg")] if self.Positions != None: Pos = self.Positions[i] if self.Rotations != None: Rot = self.Rotations[i] sb_lv = sb.get_volume() sb_pos = geom.structure.Position(sb_lv.name + '_pos', Pos[0], Pos[1], Pos[2]) sb_rot = geom.structure.Rotation(sb_lv.name + '_rot', Rot[0], Rot[1], Rot[2]) sb_pla = geom.structure.Placement(sb_lv.name + '_pla', volume=sb_lv, pos=sb_pos, rot=sb_rot) main_lv.placements.append(sb_pla.name)
def construct(self, geom): main_lv, main_hDim = ltools.main_lv(self, geom, "Box") if self.AuxParams != None: ltools.addAuxParams(self, main_lv) self.add_volume(main_lv) builders = self.get_builders() second_lv = builders[0].get_volume() second_loc = self.Positions[0] third_lv = builders[1].get_volume() third_loc = self.Positions[1] third_pos = geom.structure.Position(third_lv.name + '_pos', third_loc[0], third_loc[1], third_loc[2]) third_pla = geom.structure.Placement(third_lv.name + '_pla', volume=third_lv, pos=third_pos) second_lv.placements.append(third_pla.name) second_pos = geom.structure.Position(second_lv.name + '_pos', second_loc[0], second_loc[1], second_loc[2]) second_pla = geom.structure.Placement(second_lv.name + '_pla', volume=second_lv, pos=second_pos) main_lv.placements.append(second_pla.name)
def construct(self, geom): """ Construct the geometry for Rectangular Bar. :returns: None """ main_lv, main_hDim = ltools.main_lv(self, geom, "Tubs") if self.AuxParams != None: ltools.addAuxParams(self, main_lv) self.add_volume(main_lv)
def construct(self, geom): """ Construct the geometry for Generic Shape. :returns: None """ main_lv, main_hDim = ltools.main_lv(self, geom, self.Shape) if self.AuxParams != None: ltools.addAuxParams(self, main_lv) self.add_volume(main_lv)
def construct(self, geom): main_lv, main_hDim = ltools.main_lv(self, geom, "Box") if self.AuxParams != None: ltools.addAuxParams(self, main_lv) self.add_volume(main_lv) TranspV = [0, 0, 1] if self.TranspV != None: TranspV = self.TranspV ltools.placeUserLocationBuilders(self, geom, main_lv, TranspV)
def construct(self, geom): main_lv, main_hDim = ltools.main_lv(self, geom, "Box") if self.AuxParams != None: ltools.addAuxParams(self, main_lv) self.add_volume(main_lv) builders = self.get_builders() sb_central = builders[0] sb_top = builders[1] sb_side = builders[2] ltools.placeCrossBuilders(main_lv, sb_central, sb_top, sb_side, self, geom)
def construct(self, geom): main_lv, main_hDim = ltools.main_lv(self, geom, "Box") if self.AuxParams != None: ltools.addAuxParams(self, main_lv) self.add_volume(main_lv) if self.NElements != None: TranspV = [0, 0, 1] if self.TranspV != None: TranspV = self.TranspV ltools.placeComplexBuilders(self, geom, main_lv, TranspV) else: print("**Warning, no Elements to place inside " + self.name)