This file was automatically generated by mantidgeometry/ILL/IDF/panther_generateIDF.py """ validFrom = '1900-01-31 23:59:59' geometry = MantidGeom(instrumentName, comment=comment, valid_from=validFrom) geometry.addSnsDefaults(theta_sign_axis='x') geometry.addComponentILL('fermi_chopper', 0.0, 0.0, -l1, 'Source') geometry.addComponentILL('sample-position', 0.0, 0.0, 0.0, 'SamplePos') geometry.addMonitors(names=['monitor'], distance=[monitorZ]) geometry.addDummyMonitor(0.01, 0.03) geometry.addMonitorIds(['100000']) geometry.addCylinderPixelAdvanced( 'pixel', center_bottom_base={'x': 0., 'y': 0., 'z': -pixelHeight / 2.}, axis={'x': 0., 'y': 1., 'z': 0.}, pixel_radius=pixelRadius, pixel_height=pixelHeight, algebra='pixel_shape') root = geometry.getRoot() bank = le.SubElement(root, 'type', name='bank') tubes = le.SubElement(bank, 'component', type='tube') for boxIndex, boxAngle in enumerate(boxAngles): for tubeIndex in range(numberOfTubesPerBox): tubeAngle = boxAngle - boxAngleWidth / 2. + tubeIndex * tubeAngleStep x = l2 * np.sin(np.deg2rad(tubeAngle)) y = tubeVerticalShift z = l2 * np.cos(np.deg2rad(tubeAngle)) attributes = { 'x': str(x), 'y': str(y), 'z': str(z), 'rot': str(tubeAngle), 'axis-x': str(0.), 'axis-y': str(1.),
for i in range(NUM_DETS): bank = det.addComponent("bank"+str(i+1), idlist="bank"+str(i+1), root=doc_handle) log = le.SubElement(bank, "parameter", **{"name": "y"}) le.SubElement(log, "logfile", **{"id": "HB2C:Mot:detz.RBV", # detz is in mm "eq": "rint(value*100)/100000", # Round to 0.01mm and convert to metres "extract-single-value-as": "mean"}) det_type = "panel" angle = (i)*15+7.5 # Mantid angle -= 0.03125*6 # Offset by six pixels #angle = i*15+7.5 # Flipped type_element = le.SubElement(det.getRoot(), "type", name="bank"+str(i+1)) comp_element = le.SubElement(type_element, "component", type=det_type) location = le.SubElement(comp_element, "location") log = le.SubElement(location, "parameter", **{"name": "r-position"}) le.SubElement(log, "value", **{"val": str(RADIUS)}) log = le.SubElement(location, "parameter", **{"name": "t-position"}) le.SubElement(log, "logfile", **{"id": "HB2C:Mot:s2.RBV", "eq": str(angle)+"+rint(value*1000)/1000", # Round to 1/1000 of a degree "extract-single-value-as": "mean"}) log = le.SubElement(location, "parameter", **{"name": "roty"}) le.SubElement(log, "logfile", **{"id": "HB2C:Mot:s2.RBV",
le.SubElement( log, "logfile", **{ "id": "HB2C:Mot:detz.RBV", # detz is in mm "eq": "rint(value*100)/100000", # Round to 0.01mm and convert to metres "extract-single-value-as": "mean" }) det_type = "panel" angle = (i) * 15 + 7.5 # Mantid angle -= 0.03125 * 6 # Offset by six pixels #angle = i*15+7.5 # Flipped type_element = le.SubElement(det.getRoot(), "type", name="bank" + str(i + 1)) comp_element = le.SubElement(type_element, "component", type=det_type) location = le.SubElement(comp_element, "location") log = le.SubElement(location, "parameter", **{"name": "r-position"}) le.SubElement(log, "value", **{"val": str(RADIUS)}) log = le.SubElement(location, "parameter", **{"name": "t-position"}) le.SubElement( log, "logfile", **{ "id": "HB2C:Mot:s2.RBV", "eq": str(angle) + "+rint(value*1000)/1000", # Round to 1/1000 of a degree
geometry.addMonitorIds(['100000']) geometry.addCylinderPixelAdvanced('pixel', center_bottom_base={ 'x': 0., 'y': -pixelHeight / 2., 'z': 0. }, axis={ 'x': 0., 'y': 1., 'z': 0. }, pixel_radius=pixelRadius, pixel_height=pixelHeight, algebra='pixel_shape') root = geometry.getRoot() detectorType = le.SubElement(root, 'type', name='detector') tubes = le.SubElement(detectorType, 'component', type='tube') for tubeIndex, tubeAngle in enumerate(tubeAngles): x = l2 * np.sin(-np.deg2rad(tubeAngle)) z = l2 * np.cos(np.deg2rad(tubeAngle)) attributes = { 'x': str(x), 'y': str(0.), 'z': str(z), 'name': 'tube_{}'.format(tubeIndex + 1) } le.SubElement(tubes, 'location', **attributes) tubeType = le.SubElement(root, 'type', name='tube', outline='yes') tube = le.SubElement(tubeType, 'component', type='pixel') tube_bottom_pos = -(equator - 1) * pixelHeight