10 import simplejson
as json
15 pp = pprint.PrettyPrinter(indent=2)
19 "map_DTvsphi_dxdz.png" :
"map of dxdz residual vs phi",
20 "map_DTvsphi_dydz.png" :
"map of dydz residual vs phi",
21 "map_DTvsphi_x.png" :
"map of x residual vs phi",
22 "map_DTvsphi_y.png" :
"map of y residual vs phi",
23 "map_DTvsz_dxdz.png" :
"map of dxdz residual vs z",
24 "map_DTvsz_dydz.png" :
"map of dydz residual vs z",
25 "map_DTvsz_x.png" :
"map of x residual vs z",
26 "map_DTvsz_y.png" :
"map of y residual vs z",
27 "map_DTvsz_all_dxdz.png" :
"map of dxdz residual vs z",
28 "map_DTvsz_all_dydz.png" :
"map of dydz residual vs z",
29 "map_DTvsz_all_x.png" :
"map of x residual vs z",
30 "map_DTvsz_all_y.png" :
"map of y residual vs z",
31 "map_CSCvsphi_dxdz.png" :
"map of d(rphi)/dz residual vs phi",
32 "map_CSCvsphi_x.png" :
"map of rphi residual vs phi",
33 "map_CSCvsr_dxdz.png" :
"map of d(rphi)/dz residual vs r",
34 "map_CSCvsr_x.png" :
"map of rphi residual vs r",
35 "segdifphi_x_dt_csc_resid.png" :
"segdiff DT-CSC in x residuals vs phi",
36 "segdifphi_dt13_resid.png" :
"segdiff in x residuals vs phi",
37 "segdifphi_dt13_slope.png" :
"segdiff in dxdz residuals vs phi",
38 "segdifphi_dt2_resid.png" :
"segdiff in y residuals vs phi",
39 "segdifphi_dt2_slope.png" :
"segdiff in dydz residuals vs phi",
40 "segdif_x_dt_csc_resid.png" :
"segdiff DT-CSC in x residuals",
41 "segdif_dt13_resid.png" :
"segdiff in x residuals",
42 "segdif_dt13_slope.png" :
"segdiff in dxdz residuals",
43 "segdif_dt2_resid.png" :
"segdiff in y residuals",
44 "segdif_dt2_slope.png" :
"segdiff in dydz residuals",
45 "segdifphi_csc_resid.png" :
"segdiff in rphi residuals vs phi",
46 "segdifphi_csc_slope.png" :
"segdiff in d(rphi)/dz residuals vs phi",
47 "segdif_csc_resid.png" :
"segdiff in rphi residuals",
48 "segdif_csc_slope.png" :
"segdiff in d(rphi)/dz residuals",
49 "dt_bellcurves.png" :
"residuals distributions",
50 "dt_polynomials.png" :
"residuals relations to misalignments",
51 "csc_bellcurves.png" :
"residuals distributions",
52 "csc_polynomials.png" :
"residuals relations to misalignments",
53 'dt_curvature_deltax.png' :
'Delta x residuals vs. curvature',
54 'dt_curvature_deltadxdz.png' :
'Delta dxdz residuals vs. curvature',
55 "medians.png" :
"medians distribution" 63 usage=
'%prog [options]\n'+\
64 'Creates a tree_items.js data file for a browsable JavaScript tree using results produced '+\
65 'by running alignment_validation_plots.py.' 67 parser=optparse.OptionParser(usage)
69 parser.add_option(
"-i",
"--inputDir",
70 help=
"[REQUIRED] input directory: should contain 'iter1', 'iterN' and 'common' directories filled with alignment_validation_plots.py. The resulting tree_items.js is also dumped into this directory",
75 parser.add_option(
"-v",
"--verbose",
76 help=
"Degree of debug info verbosity",
81 options,args=parser.parse_args()
83 if options.inputDir==
'':
84 print "\nOne or more of REQUIRED options is missing!\n" 101 os.chdir(options.inputDir)
114 iteration_directory = iterationN
118 """it1 and itN are the first and the last iterations' directory names 119 dir is some directory with the results from for the LAST 120 iteration, so it must contain a itN substring 121 label is a label for tree's folder for this directory""" 122 if len(itN)>0
and dir.find(itN)==-1:
123 print "directory ", dir,
"has no ", itN,
" in it!!" 124 return [
"problem!!!",
""]
126 files = os.listdir(dir)
129 if re.match(
".+\.png", f):
130 if len(it1)>0
and len(itN)>0:
131 lnN = [itN,dir+
'/'+f]
132 dir1 = dir.replace(itN,it1)
133 if not os.access(dir1+
'/'+f,os.F_OK):
134 print "WARNING: no ",dir1+
'/'+f,
" file found!!!" 135 ln1 = [it1,dir1+
'/'+f]
136 ln = [NAME_TO_TITLE[f],dir+
'/'+f,ln1,lnN]
139 ln = [NAME_TO_TITLE[f],dir+
'/'+f]
147 tree_level1 = [
'test',
'']
150 dt_basedir = iteration_directory+
'/MB/' 151 tree_level2 =
parseDir(dt_basedir,
"MB",iteration1,iterationN)
152 for wheel
in DT_TYPES:
153 dd = dt_basedir + wheel[0]
155 tree_level3 =
parseDir(dd,wheel[0],iteration1,iterationN)
156 for station
in wheel[2]:
157 dd = dt_basedir + wheel[0]+
'/'+station[1]
159 tree_level4 =
parseDir(dd,station[0],iteration1,iterationN)
160 for sector
in range(1,station[2]+1):
161 ssector =
"%02d" % sector
162 dd = dt_basedir+wheel[0]+
'/'+station[1]+
'/'+ssector
164 tree_level5 =
parseDir(dd,
"%s/%d" % (station[0],sector),iteration1,iterationN)
165 if len(tree_level5) == 2: tree_level5.append([
'none',
''])
166 tree_level4.append(tree_level5)
167 if len(tree_level4) == 2: tree_level4.append([
'none',
''])
168 tree_level3.append(tree_level4)
169 if len(tree_level3) == 2: tree_level3.append([
'none',
''])
170 tree_level2.append(tree_level3)
171 if len(tree_level2) == 2: tree_level2.append([
'none',
''])
172 tree_level1.append(tree_level2)
175 csc_basedir = iteration_directory+
'/' 176 for endcap
in CSC_TYPES:
177 dd = csc_basedir+endcap[0]
179 tree_level2 =
parseDir(dd,endcap[0],iteration1,iterationN)
180 for station
in endcap[2]:
181 dd = csc_basedir+endcap[0]+
'/'+station[1]
183 tree_level3 =
parseDir(dd,station[0],iteration1,iterationN)
184 for ring
in station[2]:
185 dd = csc_basedir+endcap[0]+
'/'+station[1]+
'/'+ring[1]
187 tree_level4 =
parseDir(dd,
"%s/%s" % (station[0],ring[1]),iteration1,iterationN)
188 for chamber
in range(1,ring[2]+1):
189 schamber =
"%02d" % chamber
190 dd = csc_basedir+endcap[0]+
'/'+station[1]+
'/'+ring[1]+
'/'+schamber
192 tree_level5 =
parseDir(dd,
"%s/%s/%d" % (station[0],ring[1],chamber),iteration1,iterationN)
193 tree_level4.append(tree_level5)
194 if len(tree_level4) == 2: tree_level4.append([
'none',
''])
195 tree_level3.append(tree_level4)
196 if len(tree_level3) == 2: tree_level3.append([
'none',
''])
197 tree_level2.append(tree_level3)
198 if len(tree_level2) == 2: tree_level2.append([
'none',
''])
199 tree_level1.append(tree_level2)
202 common_basedir = comdir
203 tree_level2 =
parseDir(common_basedir,
"All")
204 tree_level1.append(tree_level2)
207 mytree.append(tree_level1)
212 ff = open(
"tree_items.js",mode=
"w")
213 print >>ff,
"var TREE_ITEMS = " def parseDir(dir, label, it1="", itN="")