import argparse, ROOT, math parser=argparse.ArgumentParser(description='Reads a COMSOL field file and creates another field file.') parser.add_argument('filename',help='name of the COMSOL field file') parser.add_argument('filename2',help='name of the COMSOL field file for add in') parser.add_argument('--cutlz',help='lower value to cut and past z',default=7) parser.add_argument('--cutuz',help='lower value to cut and past z',default=13) parser.add_argument('--filllz',help='lower value to cut and past z',default=16) parser.add_argument('--filluz',help='lower value to cut and past z',default=17.6) args = parser.parse_args() file=open(args.filename,'r') file2=open(args.filename2,'r') r=[] z=[] Er=[] Ez=[] radd=[] zadd=[] rmin=1000 zmin=1000 for line in file: words=line.split() if words[0]=='%': continue r.append(float(words[0])) z.append(float(words[1])) Er.append(float(words[2])/100.) Ez.append(float(words[3])/100.) if float(words[0])args.cutlz and float(words[1])149: radd.append(float(words[2])/100.) else: radd.append(0.) zadd.append(float(words[3])/100.) print "done reading the files" #print "len(r)",len(r),"lenz",len(z),r[0],r[len(r)-1 field=ROOT.TH2D("field","field",int(len(r)/1000),r[0],r[len(r)-1],int(len(z)/1000),z[0],z[len(z)-1]) fieldz=ROOT.TH2D("fieldz","fieldz",int(len(r)/1000),r[0],r[len(r)-1],int(len(z)/1000),z[0],z[len(z)-1]) dr=abs(r[0]-r[1]) dz=dr#abs(z[0]-z[1]) nomEz=309.6 stepsr=abs(r[0]-r[len(r)-1])/dr stepsz=abs(z[0]-z[len(z)-1])/dz newr=[] newz=[] newEr=[] newEz=[] counter=-1 zoff=0 rcounter=0 for i in range(len(r)): # dont forget to loop over z too, now they are disentangled!!!! counter+=1 newr.append(r[i]) newz.append(z[i]+zoff) newEr.append(Er[i]) newEz.append(Ez[i]) if z[i]>=args.filllz and r[i]==50. and z[i]