#!/usr/bin/python import os,sys,re #from ROOT import * #from clean_canvas import * #from nice_colours import * #gStyle = makegstyle(gStyle) #gStyle = nice_colours(gStyle) def steal_numbers(my_string): return re.findall(r'(\d+)', my_string) def ec_r(r): if r<8000 or r>9000: print 'ERROR: r outside of range; r=',r sys.exit(-1) return None def megaparse(fsim,fib): results = {} # sim first for l in file(fsim,'r').readlines(): if l.startswith('#'): continue else: ls = l.split() r = int(ls[0]) #use the GEANT run number as identified ec_r(r) results[r] = {} for e in ls: if 'msor6' in e: results[r]['s'] = e.split('/')[-1] if 'bfld' in e and 'map' in e: ns = steal_numbers(e) results[r]['bx']=int(ns[1]) results[r]['by']=int(ns[2]) # then internal beam for l in file(fib,'r').readlines(): if l.startswith('#'): continue else: ls = l.split() r = int(ls[0][2:6]) ec_r(r) results[r]['dx'] = float(ls[7]) results[r]['dy'] = float(ls[8]) #debug # ks = results.keys() # ks.sort() # for r in ks: # print r,results[r] return results def fetch(results,bx,by,s): ks = results.keys() for k in ks: x = results[k] if x['s']==s and x['bx']==bx and x['by']==by: return x['dx'],x['dy'] return None,None if __name__=='__main__': # data = {'s74':{'dx':0.22, 'dy':0.015}, # 's75':{'dx':0.265,'dy':0.085}, # 's83':{'dx':0.255,'dy':0.04}, # 's84':{'dx':0.265,'dy':-0.05}, # 's87':{'dx':0.245,'dy':0.125}} results_2006 = megaparse('/twist/data9/jbueno/simulationOutput/bf_trans_brute_2006/log.txt', '/twist/data9/jbueno/analysisOutput/bf_trans_brute_2006/ib_params.txt') results_2007 = megaparse('/twist/data33/jbueno/simulationOutput/bf_trans_brute_2007/log.txt', '/twist/data33/jbueno/analysisOutput/bf_trans_brute_2007/ib_params.txt') # print results_2006 ## i=-1 ## for bx in [0,1,2,3]: ## for by in [0,1,2,3]: ## i+=1 ## dx_quad_sum, dy_quad_sum = 0., 0. ## for s in ['s74','s75']: ## dx,dy = fetch(results_2006,bx,by,s) ## dx_quad_sum += (dx-data[s]['dx'])**2 ## dy_quad_sum += (dy-data[s]['dy'])**2 ### print s,bx,by,dx,dy ## for s in ['s83','s84','s87']: ## dx,dy = fetch(results_2007,bx,by,s) ## dx_quad_sum += (dx-data[s]['dx'])**2 ## dy_quad_sum += (dy-data[s]['dy'])**2 ### print s,bx,by,dx,dy ## ### print bx,by,dx_quad_sum,dy_quad_sum ## gx.SetPoint(i,bx,by,dx_quad_sum) ## gy.SetPoint(i,bx,by,dy_quad_sum) ## gt.SetPoint(i,bx,by,dx_quad_sum+dy_quad_sum) s = 's74' for bx in [0,1,2,3]: for by in [0,1,2,3]: dx,dy = fetch(results_2007,bx,by,'msor6_production_s87_end_set.dat') print bx,by,dx,dy ##c = TCanvas() ##c.Divide(2,2) ##c.cd(1) ##gx.SetTitle('quadratic sum of x differences') ##gx.Clone().Draw('surf2') ##c.cd(2) ##gy.Clone().Draw('surf2') ##gy.SetTitle('quadratic sum of y differences') ##c.cd(3) ##gt.SetTitle('total quadratic sum;bx;by;quad') ##gt.Clone().Draw('surf2') ##c.cd(4) ## ##f1 = TF2('f1','[0] + [1]*(x - [2])*(x - [2]) + [3]*(y - [4])*(y - [4])') ###f1 = TF2('f1','[0] + [1]*(x - [2])*(x - [2]) + [3]*(y - [4])*(y - [4])') ###f1 = TF2('f1','[0]+0.*(x+y)') ###f1 = TF2('f1','[0]+[1]*(x-[2])*(x-[2])+0.*y') ###f1.SetParameters(0.,1.,2.,1.,2.) ##f1.SetParameters(0.,1.,1.,1.,1.) ##gt.Fit(f1) ##gt.SetMarkerStyle(20) ##gt.SetMarkerSize(2) ##gt.Clone().Draw('P') ##f1.Clone().Draw('same surf2') ## ###fi = TF2( ## ###c2 = TCanvas() ###c2.Divide(2,2) ###c2.cd(1) ###gx.ProjectionX().Clone().Draw() ###c2.cd(2) ###gy.ProjectionY().Clone().Draw() ## ##au = raw_input('>') ##