def test_scatterercopy(self):
        '''scatterercopy'''
        # create a weird shape
        from mccomposite.geometry import primitives
        shape = primitives.block( (1,1,1) )

        #create pure python representation of scatterer composite
        composite1 = mccomposite.composite( shape )
        nprinter = NeutronPrinter( shape )
        composite1.addElement( nprinter )
        #create a copy
        copy = mccomposite.scatterercopy( composite1 )
        
        #create a larget composite
        shape = primitives.block( (1,1,2) )
        composite = mccomposite.composite( shape )
        composite.addElement( composite1, (0,0,-0.5) )
        composite.addElement( copy, (0,0,+0.5) )

        #render the c++ representation
        ccomposite = mccomposite.scattererEngine( composite )

        ev = mcni.neutron( r = (0,0,-5), v = (0,0,1) )
        ccomposite.scatter(ev)
        
        return
Beispiel #2
0
    def test_scatterercopy(self):
        '''scatterercopy'''
        # create a weird shape
        from mccomposite.geometry import primitives
        shape = primitives.block((1, 1, 1))

        #create pure python representation of scatterer composite
        composite1 = mccomposite.composite(shape)
        nprinter = NeutronPrinter(shape)
        composite1.addElement(nprinter)
        #create a copy
        copy = mccomposite.scatterercopy(composite1)

        #create a larget composite
        shape = primitives.block((1, 1, 2))
        composite = mccomposite.composite(shape)
        composite.addElement(composite1, (0, 0, -0.5))
        composite.addElement(copy, (0, 0, +0.5))

        #render the c++ representation
        ccomposite = mccomposite.scattererEngine(composite)

        ev = mcni.neutron(r=(0, 0, -5), v=(0, 0, 1))
        ccomposite.scatter(ev)

        return
Beispiel #3
0
    def test_copy(self):
        '''copy'''
        print "This test creates two identical blocks, each of which "\
              "does not interact with neutrons. They print the info "\
              "about the neutrons passing thru them, however. "\
              "This test then send one neutron through these two "\
              "blocks, so we should see two printings of neutron info, "\
              "differing only on time-of-flight."
        # create a shape
        from mccomposite.geometry import primitives
        smallblock = primitives.block((1, 1, 1))

        #create pure python representation of scatterer composite
        composite1 = mccomposite.composite(smallblock)
        import UseNeutronPrinter2
        nprinter = UseNeutronPrinter2.NeutronPrinter(smallblock)
        composite1.addElement(nprinter)
        #create a copy
        copy = Copy.Copy(composite1)

        #create a larget composite
        largeblock = primitives.block((1, 1, 2))
        composite = mccomposite.composite(largeblock)
        composite.addElement(composite1, (0, 0, -0.5))
        #composite.addElement( nprinter, (0,0,-0.5) )
        composite.addElement(copy, (0, 0, +0.5))

        #render the c++ representation
        ccomposite = mccomposite.scattererEngine(composite)

        ev = mcni.neutron(r=(0, 0, -5), v=(0, 0, 1))

        ccomposite.scatter(ev)
        return
Beispiel #4
0
    def test_copy(self):
        '''copy'''
        print "This test creates two identical blocks, each of which "\
              "does not interact with neutrons. They print the info "\
              "about the neutrons passing thru them, however. "\
              "This test then send one neutron through these two "\
              "blocks, so we should see two printings of neutron info, "\
              "differing only on time-of-flight."
        # create a shape
        from mccomposite.geometry import primitives
        smallblock = primitives.block( (1,1,1) )

        #create pure python representation of scatterer composite
        composite1 = mccomposite.composite( smallblock )
        import UseNeutronPrinter2
        nprinter = UseNeutronPrinter2.NeutronPrinter( smallblock )
        composite1.addElement( nprinter )
        #create a copy
        copy = Copy.Copy( composite1 )
        
        #create a larget composite
        largeblock = primitives.block( (1,1,2) )
        composite = mccomposite.composite( largeblock )
        composite.addElement( composite1, (0,0,-0.5) )
        #composite.addElement( nprinter, (0,0,-0.5) )
        composite.addElement( copy, (0,0,+0.5) )

        #render the c++ representation
        ccomposite = mccomposite.scattererEngine( composite )

        ev = mcni.neutron( r = (0,0,-5), v = (0,0,1) )

        ccomposite.scatter(ev)
        return
    def test3(self):
        '''create pure python representation of a homogeneous scatterer with
        composite kernel. render the c++ computation engine of that kernel.
        '''
        #shape
        from mccomposite.geometry import primitives
        shape = primitives.block( (1,1,1) )

        #kernel
        nprinter = NeutronPrinter( )
        
        #composite kernel
        composite_kernel = hs.compositeKernel()
        composite_kernel.addElement( nprinter )

        #scatterer
        scatterer = hs.homogeneousScatterer(
            shape, composite_kernel)

        #render the c++ representation
        cscatterer = hs.scattererEngine( scatterer )

        for i in range(10):
            ev = mcni.neutron( r = (0,0,-5), v = (0,0,1) )
            cscatterer.scatter(ev)
            continue
        return
Beispiel #6
0
    def test3(self):
        '''create pure python representation of a homogeneous scatterer with
        composite kernel. render the c++ computation engine of that kernel.
        '''
        #shape
        from mccomposite.geometry import primitives
        shape = primitives.block((1, 1, 1))

        #kernel
        nprinter = NeutronPrinter()

        #composite kernel
        composite_kernel = hs.compositeKernel()
        composite_kernel.addElement(nprinter)

        #scatterer
        scatterer = hs.homogeneousScatterer(shape, composite_kernel)

        #render the c++ representation
        cscatterer = hs.scattererEngine(scatterer)

        for i in range(10):
            ev = mcni.neutron(r=(0, 0, -5), v=(0, 0, 1))
            cscatterer.scatter(ev)
            continue
        return
    def test2(self):
        '''create pure python representation of a homogeneous scatterer,
        and render the c++ computation engine of that kernel
        '''
        from mccomposite.geometry import primitives
        shape = primitives.block( (1,1,1) )
        nprinter = NeutronPrinter( )
        scatterer = hs.homogeneousScatterer(shape, nprinter)

        #render the c++ representation
        cscatterer = hs.scattererEngine( scatterer )

        for i in range(10):
            ev = mcni.neutron( r = (0,0,-5), v = (0,0,1) )
            cscatterer.scatter(ev)
            print ev
            continue
        return
Beispiel #8
0
    def test2(self):
        '''create pure python representation of a homogeneous scatterer,
        and render the c++ computation engine of that kernel
        '''
        from mccomposite.geometry import primitives
        shape = primitives.block((1, 1, 1))
        nprinter = NeutronPrinter()
        scatterer = hs.homogeneousScatterer(shape, nprinter)

        #render the c++ representation
        cscatterer = hs.scattererEngine(scatterer)

        for i in range(10):
            ev = mcni.neutron(r=(0, 0, -5), v=(0, 0, 1))
            cscatterer.scatter(ev)
            print ev
            continue
        return
Beispiel #9
0
    def test(self):
        # create a weird shape
        from mccomposite.geometry import primitives
        block = primitives.block((1, 1, 1))
        sphere = primitives.sphere(1)
        cylinder = primitives.cylinder(2, 2.001)

        from mccomposite.geometry import operations
        dilated = operations.dilate(sphere, 2)
        translated = operations.translate(block, (0, 0, 0.5))
        united = operations.unite(dilated, translated)

        rotated = operations.rotate(united, (90, 0, 0))

        intersect = operations.intersect(rotated, cylinder)

        difference = operations.subtract(intersect, sphere)

        print mccomposite.scattererEngine(difference)

        shape = difference
        #shape = block
        #shape = dilated
        #shape = united
        #shape = intersect
        #shape = operations.rotate(block, (90,0,0) )
        #shape = rotated
        #shape = sphere
        #shape = operations.subtract(sphere, block)
        #shape = operations.subtract( primitives.cylinder(1, 2.1), sphere )

        #create pure python representation of scatterer composite
        composite = mccomposite.composite(shape)
        nprinter = NeutronPrinter(shape)
        composite.addElement(nprinter)

        #render the c++ representation
        ccomposite = mccomposite.scattererEngine(composite)

        ev = mcni.neutron(r=(0, 0, -5), v=(0, 0, 1))
        ccomposite.scatter(ev)

        return
    def test(self):
        # create a weird shape
        from mccomposite.geometry import primitives
        block = primitives.block( (1,1,1) )
        sphere = primitives.sphere( 1 )
        cylinder = primitives.cylinder( 2,2.001 )

        from mccomposite.geometry import operations
        dilated = operations.dilate( sphere, 2 )
        translated = operations.translate( block, (0,0,0.5) )
        united = operations.unite( dilated, translated )

        rotated = operations.rotate( united, (90,0,0) )

        intersect = operations.intersect( rotated, cylinder )

        difference = operations.subtract( intersect, sphere )
        
        print mccomposite.scattererEngine( difference )

        shape = difference
        #shape = block
        #shape = dilated
        #shape = united
        #shape = intersect
        #shape = operations.rotate(block, (90,0,0) )
        #shape = rotated
        #shape = sphere
        #shape = operations.subtract(sphere, block)
        #shape = operations.subtract( primitives.cylinder(1, 2.1), sphere )

        #create pure python representation of scatterer composite
        composite = mccomposite.composite( shape )
        nprinter = NeutronPrinter( shape )
        composite.addElement( nprinter )

        #render the c++ representation
        ccomposite = mccomposite.scattererEngine( composite )

        ev = mcni.neutron( r = (0,0,-5), v = (0,0,1) )
        ccomposite.scatter(ev)
        
        return
Beispiel #11
0
def makepack():
    pack = md.pack(
        primitives.block(
            (detradius * 2, detradius * 2 * ndetsperpack, detlength)))
    he3tube0 = md.he3tube_withpixels(radius=detradius,
                                     height=detlength,
                                     npixels=npixelsperdet,
                                     direction='z',
                                     id=0,
                                     pressure=detpressure,
                                     mcweights=(absorption_weight,
                                                scattering_weight,
                                                transmission_weight))
    tubes = [he3tube0]
    for i in range(1, ndetsperpack):
        tubes.append(mccomposite.scatterercopy(he3tube0, id=i))
        continue

    for i in range(ndetsperpack):
        y = -(ndetsperpack - 1.) / 2 * 2 * detradius + i * 2 * detradius
        pack.addElement(tubes[i], (0 * meter, y, 0 * meter))
        continue
    return pack
def makepack( ):
    pack = md.pack(
        primitives.block(
        (detradius*2, detradius*2*ndetsperpack, detlength)
        )
        )
    he3tube0 = md.he3tube_withpixels(
        radius = detradius,
        height = detlength,
        npixels = npixelsperdet, direction = 'z',
        id = 0, pressure = detpressure,
        mcweights = (
        absorption_weight, scattering_weight, transmission_weight)
        )
    tubes = [he3tube0]
    for i in range(1,ndetsperpack):
        tubes.append( mccomposite.scatterercopy( he3tube0, id = i) )
        continue

    for i in range(ndetsperpack):
        y = -(ndetsperpack-1.)/2*2*detradius + i*2*detradius
        pack.addElement( tubes[i], (0*meter, y, 0*meter) )
        continue
    return pack