コード例 #1
0
    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]
コード例 #2
0
    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)
コード例 #3
0
    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)
コード例 #4
0
    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)
コード例 #5
0
    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)
コード例 #6
0
ファイル: GenSolid.py プロジェクト: quantatanu/dunendggd
    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)
コード例 #7
0
    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)
コード例 #8
0
    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)
コード例 #9
0
    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)