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
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
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 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
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
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
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
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