def test1(self): "GlobalGeometer: simplest instrument" import elements from Geometer import Geometer instrument = elements.instrument( "instrument" ) instrument_geometer = Geometer( instrument ) instrument_geometer.finishRegistration() local_geometers = [ instrument_geometer ] global_geometer = GlobalGeometer( instrument, local_geometers ) return
def test2(self): "GlobalGeometer: instrument with one moderator given abs position" import elements from Geometer import Geometer instrument = elements.ElementContainer( "instrument" ) moderator = elements.moderator( "moderator", 100., 100., 10. ) instrument.addElement( moderator ) instrument_geometer = Geometer( instrument ) instrument_geometer.register( moderator, (0,0,-5), (0,0,0) ) instrument_geometer.finishRegistration() local_geometers = [ instrument_geometer ] global_geometer = GlobalGeometer( instrument, local_geometers ) mod_pos = global_geometer.position( moderator ) / meter self.assertAlmostEqual( mod_pos[0], 0 ) self.assertAlmostEqual( mod_pos[1], 0 ) self.assertAlmostEqual( mod_pos[2], -5 ) return
def test3(self): "GlobalGeometer: instrument with one moderator and monitors given relative position" import elements from Geometer import Geometer instrument = elements.ElementContainer( "instrument" ) moderator = elements.moderator( "moderator", 100., 100., 10. ) instrument.addElement( moderator ) monitor1 = elements.monitor( "monitor1", 100., 100., 10. ) instrument.addElement( monitor1 ) monitor2 = elements.monitor( "monitor2", 100., 100., 10. ) instrument.addElement( monitor2 ) instrument_geometer = Geometer( instrument ) instrument_geometer.register( moderator, (0,0,-5), (0,0,0)) instrument_geometer.register( monitor1, (0,0,-3), (0,0,0)) instrument_geometer.register( monitor2, (0,0,2), (0,0,0), relative = monitor1 ) instrument_geometer.finishRegistration() local_geometers = [ instrument_geometer ] global_geometer = GlobalGeometer( instrument, local_geometers ) moderator_pos = global_geometer.position( moderator ) / meter self.assertAlmostEqual( moderator_pos[0], 0 ) self.assertAlmostEqual( moderator_pos[1], 0 ) self.assertAlmostEqual( moderator_pos[2], -5 ) monitor1_pos = global_geometer.position( monitor1 ) / meter self.assertAlmostEqual( monitor1_pos[0], 0 ) self.assertAlmostEqual( monitor1_pos[1], 0 ) self.assertAlmostEqual( monitor1_pos[2], -3 ) monitor2_pos = global_geometer.position( monitor2 ) / meter self.assertAlmostEqual( monitor2_pos[0], 0 ) self.assertAlmostEqual( monitor2_pos[1], 0 ) self.assertAlmostEqual( monitor2_pos[2], -1 ) return
def test4(self): "GlobalGeometer: instrument with layers" import elements from Geometer import Geometer instrument = elements.instrument( "instrument" ) moderator = elements.moderator( "moderator", 100., 100., 10. ) instrument.addElement( moderator ) monitor1 = elements.monitor( "monitor1", 100., 100., 10. ) instrument.addElement( monitor1 ) sample = elements.sample( "sample" ) instrument.addElement( sample) detectorSystem = elements.detectorSystem( "detectorSystem" ) instrument.addElement( detectorSystem ) local_geometers = [] detectorSystem_geometer = Geometer( detectorSystem ) local_geometers.append( detectorSystem_geometer ) #add 8X10 detectors by brute force for i in range(10): detpack = elements.detectorPack( "detpack%s" % i ) detpack_geometer = Geometer( detpack ) for j in range(8): name = "det%s"%j det = elements.detector(name) exec 'det_%s_%s = det' % (i,j) detpack.addElement( det ) detpack_geometer.register( det, (j-3.5, 0, 0 ), (0,0,0) ) continue detpack_geometer.finishRegistration() detectorSystem.addElement( detpack) local_geometers.append( detpack_geometer ) detectorSystem_geometer.register( detpack, (10*i, 0, 0), (0,0,0) ) continue detectorSystem_geometer.finishRegistration() instrument_geometer = Geometer( instrument ) instrument_geometer.register( moderator, (0,0,-5), (0,0,0) ) instrument_geometer.register( sample, (0,0,0), (0,0,0) ) instrument_geometer.register( detectorSystem, (0,0,0), (0,0,0) ) instrument_geometer.register( monitor1, (0,0,-3), (0,0,0) ) instrument_geometer.finishRegistration() local_geometers.append( instrument_geometer ) global_geometer = GlobalGeometer( instrument, local_geometers ) moderator_pos = global_geometer.position( moderator ) / meter self.assertAlmostEqual( moderator_pos[0], 0 ) self.assertAlmostEqual( moderator_pos[1], 0 ) self.assertAlmostEqual( moderator_pos[2], -5 ) detector00_pos = global_geometer.position( 'detectorSystem/detpack0/det0') / meter self.assertAlmostEqual( detector00_pos[0], -3.5 ) self.assertAlmostEqual( detector00_pos[1], 0 ) self.assertAlmostEqual( detector00_pos[2], 0 ) moderator2detector00 = global_geometer.displacement( moderator, 'detectorSystem/detpack0/det0' ) / meter self.assertAlmostEqual( moderator2detector00[0], -3.5 ) self.assertAlmostEqual( moderator2detector00[1], 0 ) self.assertAlmostEqual( moderator2detector00[2], 5 ) return