def histo1_old(beam,col,xrange=None,yrange=None,nbins=50,nolost=0,ref=0,write=0,title='HISTO1',xtitle=None,ytitle=None,calfwhm=0,noplot=0): ''' Plot the histogram of a column, simply counting the rays, or weighting with the intensity. It returns a ShadowTools.Histo1_Ticket which contains the histogram data, and the figure. Inumpy.ts: beam : str instance with the name of the shadow file to be loaded, or a Shadow.Beam initialized instance. col : int for the chosen column. Optional Inumpy.ts: xrange : tuple or list of length 2 describing the interval of interest for x, the data read from the chosen column. yrange : tuple or list of length 2 describing the interval of interest for y, counts or intensity depending on ref. nbins : number of bins of the histogram. nolost : 0 All rays 1 Only good rays 2 Only lost rays ref : 0 only count the rays 1 weight with intensity (look at 23 |E|^2 total intensity) write : 0 don't write any file 1 write the histogram into the file 'HISTO1'. title : title of the figure, it will appear on top of the window. xtitle : label for the x axis. ytitle : label for the y axis. calfwhm : 0 don't compute the fwhm 1 compute the fwhm noplot : 0 plot the histogram 1 don't plot the histogram orientation : 'vertical' x axis for data, y for intensity 'horizontal' y axis for data, x for intensity plotxy : 0 standalone version 1 to use within plotxy Outputs: ShadowTools.Histo1_Ticket instance. Error: if an error occurs an ArgsError is raised. Possible choice for col are: 1 X spatial coordinate [user's unit] 2 Y spatial coordinate [user's unit] 3 Z spatial coordinate [user's unit] 4 X' direction or divergence [rads] 5 Y' direction or divergence [rads] 6 Z' direction or divergence [rads] 7 X component of the electromagnetic vector (s-polariz) 8 Y component of the electromagnetic vector (s-polariz) 9 Z component of the electromagnetic vector (s-polariz) 10 Lost ray flag 11 Energy [eV] 12 Ray index 13 Optical path length 14 Phase (s-polarization) 15 Phase (p-polarization) 16 X component of the electromagnetic vector (p-polariz) 17 Y component of the electromagnetic vector (p-polariz) 18 Z component of the electromagnetic vector (p-polariz) 19 Wavelength [A] 20 R= SQRT(X^2+Y^2+Z^2) 21 angle from Y axis 22 the magnituse of the Electromagnetic vector 23 |E|^2 (total intensity) 24 total intensity for s-polarization 25 total intensity for p-polarization 26 K = 2 pi / lambda [A^-1] 27 K = 2 pi / lambda * col4 [A^-1] 28 K = 2 pi / lambda * col5 [A^-1] 29 K = 2 pi / lambda * col6 [A^-1] 30 S0-stokes = |Es|^2 + |Ep|^2 31 S1-stokes = |Es|^2 - |Ep|^2 32 S2-stokes = 2 |Es| |Ep| cos(phase_s-phase_p) 33 S3-stokes = 2 |Es| |Ep| sin(phase_s-phase_p) ''' try: stp.Histo1_CheckArg(beam,col,xrange,yrange,nbins,nolost,ref,write,title,xtitle,ytitle,calfwhm,noplot) except stp.ArgsError as e: raise e col=col-1 if ref==1: ref = 23 #plot_nicc.ioff() plt.ioff() figure = plt.figure() axHist = figure.add_axes([0.1,0.1,0.8,0.8]) if ytitle!=None: ytitlesave=ytitle else: ytitlesave=None if ref==0: x, a = getshcol(beam,(col+1,10)) w = numpy.ones(len(x)) else: x, a, w = getshcol(beam,(col+1,10,ref)) if nolost==0: t = numpy.where(a!=-3299) ytitle = 'All rays' if nolost==1: t = numpy.where(a==1.0) ytitle = 'Good rays' if nolost==2: t = numpy.where(a!=1.0) ytitle = 'Lost rays' if len(t[0])==0: print ("no rays match the selection, the histogram will not be plotted") return if ref==0: ytitle = 'counts ' + ytitle h,bins,patches = axHist.hist(x[t],bins=nbins,range=xrange,histtype='step',alpha=0.5) if yrange==None: yrange = [0.0, numpy.max(h)] hw=h if ref>=22: ytitle = (stp.getLabel(ref-1))[0] + ' ' + ytitle h,bins = numpy.histogram(x[t],range=xrange,bins=nbins) hw,bins,patches = axHist.hist(x[t],range=xrange, bins=nbins,histtype='step',alpha=0.5,weights=w[t]) if yrange==None: yrange = [0.0, numpy.max(hw)] fwhm = None if calfwhm==1: fwhm, tf, ti = stp.calcFWHM(hw,bins[1]-bins[0]) axHist.plot([bins[ti],bins[tf+1]],[max(h)*0.5,max(h)*0.5],'x-') print ("fwhm = %g" % fwhm) if write==1: stp.Histo1_write(title,bins,h,hw,col,beam,ref-1) if xtitle==None: xtitle=(stp.getLabel(col))[0] axHist.set_xlabel(xtitle) if ytitlesave!=None: axHist.set_ylabel(ytitlesave) else: axHist.set_ylabel(ytitle) if title!=None: axHist.set_title(title) if xrange!=None: axHist.set_xlim(xrange) if yrange!=None: axHist.set_ylim(yrange) if noplot==0: plt.show() ticket = Histo1_Ticket() ticket.histogram = hw ticket.bin_center = bins[:-1]+(bins[1]-bins[0])*0.5 ticket.bin_left = bins[:-1] ticket.figure = figure ticket.xrange = xrange ticket.yrange = yrange ticket.xtitle = xtitle ticket.ytitle = ytitle ticket.title = title ticket.fwhm = fwhm ticket.intensity = w[t].sum() return ticket