3 from __future__
import print_function
4 from builtins
import range
12 import simplejson
as json
17 pp = pprint.PrettyPrinter(indent=2)
21 "map_DTvsphi_dxdz.png" :
"map of dxdz residual vs phi",
22 "map_DTvsphi_dydz.png" :
"map of dydz residual vs phi",
23 "map_DTvsphi_x.png" :
"map of x residual vs phi",
24 "map_DTvsphi_y.png" :
"map of y residual vs phi",
25 "map_DTvsz_dxdz.png" :
"map of dxdz residual vs z",
26 "map_DTvsz_dydz.png" :
"map of dydz residual vs z",
27 "map_DTvsz_x.png" :
"map of x residual vs z",
28 "map_DTvsz_y.png" :
"map of y residual vs z",
29 "map_DTvsz_all_dxdz.png" :
"map of dxdz residual vs z",
30 "map_DTvsz_all_dydz.png" :
"map of dydz residual vs z",
31 "map_DTvsz_all_x.png" :
"map of x residual vs z",
32 "map_DTvsz_all_y.png" :
"map of y residual vs z",
33 "map_CSCvsphi_dxdz.png" :
"map of d(rphi)/dz residual vs phi",
34 "map_CSCvsphi_x.png" :
"map of rphi residual vs phi",
35 "map_CSCvsr_dxdz.png" :
"map of d(rphi)/dz residual vs r",
36 "map_CSCvsr_x.png" :
"map of rphi residual vs r",
37 "segdifphi_x_dt_csc_resid.png" :
"segdiff DT-CSC in x residuals vs phi",
38 "segdifphi_dt13_resid.png" :
"segdiff in x residuals vs phi",
39 "segdifphi_dt13_slope.png" :
"segdiff in dxdz residuals vs phi",
40 "segdifphi_dt2_resid.png" :
"segdiff in y residuals vs phi",
41 "segdifphi_dt2_slope.png" :
"segdiff in dydz residuals vs phi",
42 "segdif_x_dt_csc_resid.png" :
"segdiff DT-CSC in x residuals",
43 "segdif_dt13_resid.png" :
"segdiff in x residuals",
44 "segdif_dt13_slope.png" :
"segdiff in dxdz residuals",
45 "segdif_dt2_resid.png" :
"segdiff in y residuals",
46 "segdif_dt2_slope.png" :
"segdiff in dydz residuals",
47 "segdifphi_csc_resid.png" :
"segdiff in rphi residuals vs phi",
48 "segdifphi_csc_slope.png" :
"segdiff in d(rphi)/dz residuals vs phi",
49 "segdif_csc_resid.png" :
"segdiff in rphi residuals",
50 "segdif_csc_slope.png" :
"segdiff in d(rphi)/dz residuals",
51 "dt_bellcurves.png" :
"residuals distributions",
52 "dt_polynomials.png" :
"residuals relations to misalignments",
53 "csc_bellcurves.png" :
"residuals distributions",
54 "csc_polynomials.png" :
"residuals relations to misalignments",
55 'dt_curvature_deltax.png' :
'Delta x residuals vs. curvature',
56 'dt_curvature_deltadxdz.png' :
'Delta dxdz residuals vs. curvature',
57 "medians.png" :
"medians distribution"
65 usage=
'%prog [options]\n'+\
66 'Creates a tree_items.js data file for a browsable JavaScript tree using results produced '+\
67 'by running alignment_validation_plots.py.'
69 parser=optparse.OptionParser(usage)
71 parser.add_option(
"-i",
"--inputDir",
72 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",
77 parser.add_option(
"-v",
"--verbose",
78 help=
"Degree of debug info verbosity",
83 options,args=parser.parse_args()
85 if options.inputDir==
'':
86 print(
"\nOne or more of REQUIRED options is missing!\n")
103 os.chdir(options.inputDir)
116 iteration_directory = iterationN
120 """it1 and itN are the first and the last iterations' directory names
121 dir is some directory with the results from for the LAST
122 iteration, so it must contain a itN substring
123 label is a label for tree's folder for this directory"""
124 if len(itN)>0
and dir.find(itN)==-1:
125 print(
"directory ", dir,
"has no ", itN,
" in it!!")
126 return [
"problem!!!",
""]
128 files = sorted(os.listdir(dir))
130 if re.match(
".+\.png", f):
131 if len(it1)>0
and len(itN)>0:
132 lnN = [itN,dir+
'/'+f]
133 dir1 = dir.replace(itN,it1)
134 if not os.access(dir1+
'/'+f,os.F_OK):
135 print(
"WARNING: no ",dir1+
'/'+f,
" file found!!!")
136 ln1 = [it1,dir1+
'/'+f]
137 ln = [NAME_TO_TITLE[f],dir+
'/'+f,ln1,lnN]
140 ln = [NAME_TO_TITLE[f],dir+
'/'+f]
148 tree_level1 = [
'test',
'']
151 dt_basedir = iteration_directory+
'/MB/'
152 tree_level2 =
parseDir(dt_basedir,
"MB",iteration1,iterationN)
153 for wheel
in DT_TYPES:
154 dd = dt_basedir + wheel[0]
156 tree_level3 =
parseDir(dd,wheel[0],iteration1,iterationN)
157 for station
in wheel[2]:
158 dd = dt_basedir + wheel[0]+
'/'+station[1]
160 tree_level4 =
parseDir(dd,station[0],iteration1,iterationN)
161 for sector
in range(1,station[2]+1):
162 ssector =
"%02d" % sector
163 dd = dt_basedir+wheel[0]+
'/'+station[1]+
'/'+ssector
165 tree_level5 =
parseDir(dd,
"%s/%d" % (station[0],sector),iteration1,iterationN)
166 if len(tree_level5) == 2: tree_level5.append([
'none',
''])
167 tree_level4.append(tree_level5)
168 if len(tree_level4) == 2: tree_level4.append([
'none',
''])
169 tree_level3.append(tree_level4)
170 if len(tree_level3) == 2: tree_level3.append([
'none',
''])
171 tree_level2.append(tree_level3)
172 if len(tree_level2) == 2: tree_level2.append([
'none',
''])
173 tree_level1.append(tree_level2)
176 csc_basedir = iteration_directory+
'/'
177 for endcap
in CSC_TYPES:
178 dd = csc_basedir+endcap[0]
180 tree_level2 =
parseDir(dd,endcap[0],iteration1,iterationN)
181 for station
in endcap[2]:
182 dd = csc_basedir+endcap[0]+
'/'+station[1]
184 tree_level3 =
parseDir(dd,station[0],iteration1,iterationN)
185 for ring
in station[2]:
186 dd = csc_basedir+endcap[0]+
'/'+station[1]+
'/'+ring[1]
188 tree_level4 =
parseDir(dd,
"%s/%s" % (station[0],ring[1]),iteration1,iterationN)
189 for chamber
in range(1,ring[2]+1):
190 schamber =
"%02d" % chamber
191 dd = csc_basedir+endcap[0]+
'/'+station[1]+
'/'+ring[1]+
'/'+schamber
193 tree_level5 =
parseDir(dd,
"%s/%s/%d" % (station[0],ring[1],chamber),iteration1,iterationN)
194 tree_level4.append(tree_level5)
195 if len(tree_level4) == 2: tree_level4.append([
'none',
''])
196 tree_level3.append(tree_level4)
197 if len(tree_level3) == 2: tree_level3.append([
'none',
''])
198 tree_level2.append(tree_level3)
199 if len(tree_level2) == 2: tree_level2.append([
'none',
''])
200 tree_level1.append(tree_level2)
203 common_basedir = comdir
204 tree_level2 =
parseDir(common_basedir,
"All")
205 tree_level1.append(tree_level2)
208 mytree.append(tree_level1)
213 ff = open(
"tree_items.js",mode=
"w")