def blazeGratingToPoint(self,blazePoint):
		changed = True
		I = self.input.center-self.grating.points
		mI = np.sqrt(np.sum(I**2,1))
		S = blazePoint-self.grating.points
		angleI = su.angle(I)
		self.grating.angles = (angleI+su.angle(S))/2
		an = np.diff((self.grating.angles[1:]+self.grating.angles[:-1])/2)
		an = np.hstack((an,an[-1]))
		an = np.hstack((an[0],an))
		self.grating.widths = an*mI/np.cos(self.grating.angles-angleI)
device.setOutputWidth(1.4e-6)
device.setOutputAngle((30+180)*np.pi/180)
device.setOutputFieldMode(spectrometer.cosModeFunction)
device.setRowlandRadius(750e-6)
device.setDiffractionOrder(10)
device.setInputWidth(1.2e-6)
device.setInputAngle((44+180)*np.pi/180)
device.setInputCenterOnRowlandCircle()
device.setInputFieldMode(spectrometer.cosModeFunction)
device.setNumberOfGratingGrooves(340)
device.setGratingPitch(4e-6)
print ' Building Aberration Reduced Grating'
device.makeUniformGrating(centralGroove=145)
p = device.grating.points[0]-device.grating.points[-1]
print 'gratingLength=',np.sqrt(sum(p**2))
print 'gratingAngle=',su.angle(p)*180/np.pi
print ' Calculating Grating Blaze Angles'
device.blazeGratingToPoint(device.getAberrationFreePoint())
#fig=figure(1)
print 'Calculating output waveguide position, angle and width'
device.calculateOutputsArray()
#device.viewSpectrometer()
print 'Simulating'
print ' Calculating Eletromagnetic Field on Grating'
device.propagateToGrating(device.getAberrationFreeWavelength())
#plt.figure(2)
#device.grating.plotField()
#plt.show()
swavelengths = np.linspace(1549e-9,1601e-9,500)
spectra = []
for output in device.output_list: