import os, sys from pathlib import Path import matplotlib.pyplot as plt import numpy as np #from creader import ClusterFileReader import creader as cr #import clusterFunctions as cf """ fname = "/mnt/myData/230914_30s_star_100um_nofi/star_" fnameff = "/mnt/myData/230914_30s_flat_100um_nofi/flat_" xmin=161+20 xmax=xmin+40 ymin=161+20 ymax=ymin+40 emin=0 emax=30 ecutmin=8 ecutmax=12 subpix=5 i = 0 nbins=100 hist1=np.zeros(nbins) #hist=np.zeros(10000) bin_edges=np.zeros(nbins+1) gain=150 im=np.zeros((xmax-xmin,ymax-ymin)) intim=np.zeros((subpix*(xmax-xmin),subpix*(ymax-ymin))) etabins=251 etas=np.zeros((etabins,etabins)) csize=3 if csize==3: etamin=-0.6 etamax=0.6 else: etamin=-0.1 etamax=1.1 for i in range(1,21): ff=fname+str(i)+".clust" print(ff) r = cr.ClusterFileReader(ff) """ def analyze_clusters(r, emin, emax, ecutmin, ecutmax, xmin, xmax, ymin, ymax, ietax=None, ietay=None, im=None, sp=None, etas=None, intim=None, csize=3,gain=150, nbins=100, etabins=250, subpix=5): if csize==3: etamin=-0.6 etamax=0.6 else: etamin=-0.1 etamax=1.1 ttx=None tty=None n=0 while (cl:=r.read(100000,None)).size: v=cr.clusterize(csize,cl['data']) spectrum, ebins =np.histogram(v['tot'][np.where((cl['x']>=xmin) & (cl['x']=ymin) & (cl['y']ecutmin) & (v['tot']/gainecutmin) & (v['tot']/gainecutmin) & (v['tot']/gain=xmin) & (cl['x']=ymin) & (cl['y']ecutmin) & (v['tot']/gain=xmin) & (cl['x']=ymin) & (cl['y']=etabinsx.shape[0]-1)]=etabinsx.shape[0]-2 iby[np.where(iby>=etabinsy.shape[0]-1)]=etabinsy.shape[0]-2 if csize==3: px=cl['x']+ietax[ibx,iby]-0.5 py=cl['y']+ietay[ibx,iby]-0.5 #print("***",v['corner'][i],"\n",v['etax'][i],v['etay'][i],"\n",etabinsx[ibx[i]],etabinsy[iby[i]],"\n",ietax[ibx,iby][i],ietay[ibx,iby][i],"\n",cl['x'][i],cl['y'][i],"\n",px[i],py[i]) else: offx=v['corner']%2 offy=(v['corner']/2).astype(int) px=cl['x'].astype(float)+(-1+offx.astype(float))+ietax[ibx,iby] py=cl['y'].astype(float)+(-1+offy.astype(float))+ietay[ibx,iby] #print("***",v['corner'][i],"\n",offx[i], offy[i],"\n",v['etax'][i],v['etay'][i],"\n",etabinsx[ibx[i]],etabinsy[iby[i]],"\n",ietax[ibx,iby][i],ietay[ibx,iby][i],"\n",cl['x'][i],cl['y'][i],"\n",px[i],py[i],"\n",((-1+offx.astype(float))+ietax[ibx,iby])[i],((-1+offy.astype(float)))[i]+ietax[ibx,iby][i]) else: offx=v['corner']%2 offy=(v['corner']/2).astype(int) px=cl['x'].astype(float)+(0.25+0.5*offx.astype(float)) py=cl['y'].astype(float)+(0.25+0.5*offy.astype(float)) #print(v['corner'][i],offx[i], offy[i],v['etax'][i],v['etay'][i],cl['x'][i],cl['y'][i],px[i],py[i]) intimage,xedges,yedges=np.histogram2d(px[np.where((v['tot']/gain>ecutmin) & (v['tot']/gainecutmin) & (v['tot']/gainvmax: vmin=0 fig1, axs1 = plt.subplots() vv=axs1.imshow(hist2d,origin='upper',cmap=plt.cm.gray,vmax=vmax,vmin=vmin, interpolation='none' ) fig1.colorbar(vv, ax=axs1) fig1.show()