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_CSCvsphi_dxdz.png" :
"map of d(rphi)/dz residual vs phi",
28 "map_CSCvsphi_x.png" :
"map of rphi residual vs phi",
29 "map_CSCvsr_dxdz.png" :
"map of d(rphi)/dz residual vs r",
30 "map_CSCvsr_x.png" :
"map of rphi residual vs r",
31 "segdifphi_dt13_resid.png" :
"segdiff in x residuals vs phi",
32 "segdifphi_dt13_slope.png" :
"segdiff in dxdz residuals vs phi",
33 "segdifphi_dt2_resid.png" :
"segdiff in y residuals vs phi",
34 "segdifphi_dt2_slope.png" :
"segdiff in dydz residuals vs phi",
35 "segdif_dt13_resid.png" :
"segdiff in x residuals",
36 "segdif_dt13_slope.png" :
"segdiff in dxdz residuals",
37 "segdif_dt2_resid.png" :
"segdiff in y residuals",
38 "segdif_dt2_slope.png" :
"segdiff in dydz residuals",
39 "segdif_csc_resid.png" :
"segdiff in rphi residuals",
40 "segdif_csc_slope.png" :
"segdiff in d(rphi)/dz residuals",
41 "dt_bellcurves.png" :
"residuals distributions",
42 "dt_polynomials.png" :
"residuals relations to misalignments",
43 "csc_bellcurves.png" :
"residuals distributions",
44 "csc_polynomials.png" :
"residuals relations to misalignments",
45 'dt_curvature_deltax.png' :
'Delta x residuals vs. curvature',
46 'dt_curvature_deltadxdz.png' :
'Delta dxdz residuals vs. curvature',
47 "medians.png" :
"medians distribution"
55 usage=
'%prog [options]\n'+\
56 'Creates a tree_items.js data file for a browsable JavaScript tree using results produced '+\
57 'by running alignment_validation_plots.py.'
59 parser=optparse.OptionParser(usage)
61 parser.add_option(
"-i",
"--inputDir",
62 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",
67 parser.add_option(
"-v",
"--verbose",
68 help=
"Degree of debug info verbosity",
73 options,args=parser.parse_args()
75 if options.inputDir==
'':
76 print "\nOne or more of REQUIRED options is missing!\n"
93 os.chdir(options.inputDir)
106 iteration_directory = iterationN
110 """it1 and itN are the first and the last iterations' directory names
111 dir is some directory with the results from for the LAST
112 iteration, so it must contain a itN substring
113 label is a label for tree's folder for this directory"""
114 if len(itN)>0
and dir.find(itN)==-1:
115 print "directory ", dir,
"has no ", itN,
" in it!!"
116 return [
"problem!!!",
""]
118 files = os.listdir(dir)
121 if re.match(
".+\.png", f):
122 if len(it1)>0
and len(itN)>0:
123 lnN = [itN,dir+
'/'+f]
124 dir1 = dir.replace(itN,it1)
125 if not os.access(dir1+
'/'+f,os.F_OK):
126 print "WARNING: no ",dir1+
'/'+f,
" file found!!!"
127 ln1 = [it1,dir1+
'/'+f]
128 ln = [NAME_TO_TITLE[f],dir+
'/'+f,ln1,lnN]
131 ln = [NAME_TO_TITLE[f],dir+
'/'+f]
139 tree_level1 = [
'test',
'']
142 dt_basedir = iteration_directory+
'/MB/'
143 tree_level2 =
parseDir(dt_basedir,
"MB",iteration1,iterationN)
144 for wheel
in DT_TYPES:
145 dd = dt_basedir + wheel[0]
147 tree_level3 =
parseDir(dd,wheel[0],iteration1,iterationN)
148 for station
in wheel[2]:
149 dd = dt_basedir + wheel[0]+
'/'+station[1]
151 tree_level4 =
parseDir(dd,station[0],iteration1,iterationN)
152 for sector
in range(1,station[2]+1):
153 ssector =
"%02d" % sector
154 dd = dt_basedir+wheel[0]+
'/'+station[1]+
'/'+ssector
156 tree_level5 =
parseDir(dd,
"%s/%d" % (station[0],sector),iteration1,iterationN)
157 if len(tree_level5) == 2: tree_level5.append([
'none',
''])
158 tree_level4.append(tree_level5)
159 if len(tree_level4) == 2: tree_level4.append([
'none',
''])
160 tree_level3.append(tree_level4)
161 if len(tree_level3) == 2: tree_level3.append([
'none',
''])
162 tree_level2.append(tree_level3)
163 if len(tree_level2) == 2: tree_level2.append([
'none',
''])
164 tree_level1.append(tree_level2)
167 csc_basedir = iteration_directory+
'/'
168 for endcap
in CSC_TYPES:
169 dd = csc_basedir+endcap[0]
171 tree_level2 =
parseDir(dd,endcap[0],iteration1,iterationN)
172 for station
in endcap[2]:
173 dd = csc_basedir+endcap[0]+
'/'+station[1]
175 tree_level3 =
parseDir(dd,station[0],iteration1,iterationN)
176 for ring
in station[2]:
177 dd = csc_basedir+endcap[0]+
'/'+station[1]+
'/'+ring[1]
179 tree_level4 =
parseDir(dd,
"%s/%s" % (station[0],ring[1]),iteration1,iterationN)
180 for chamber
in range(1,ring[2]+1):
181 schamber =
"%02d" % chamber
182 dd = csc_basedir+endcap[0]+
'/'+station[1]+
'/'+ring[1]+
'/'+schamber
184 tree_level5 =
parseDir(dd,
"%s/%s/%d" % (station[0],ring[1],chamber),iteration1,iterationN)
185 tree_level4.append(tree_level5)
186 if len(tree_level4) == 2: tree_level4.append([
'none',
''])
187 tree_level3.append(tree_level4)
188 if len(tree_level3) == 2: tree_level3.append([
'none',
''])
189 tree_level2.append(tree_level3)
190 if len(tree_level2) == 2: tree_level2.append([
'none',
''])
191 tree_level1.append(tree_level2)
194 common_basedir = comdir
195 tree_level2 =
parseDir(common_basedir,
"All")
196 tree_level1.append(tree_level2)
199 mytree.append(tree_level1)
204 ff = open(
"tree_items.js",mode=
"w")
205 print >>ff,
"var TREE_ITEMS = "