00087 :
00088
00089 movedChamberKeys = []
00090
00091 if muSystem == "DT":
00092 keys = geom0.dt.keys()
00093 keys.sort(dtorder)
00094 elif muSystem == "CSC":
00095 keys = geom0.csc.keys()
00096 keys.sort(cscorder)
00097 else: raise Exception
00098
00099 nkeys, nkeysr, nkeyspass, nmoved, nnotmoved = 0,0,0,0,0
00100 nfail_toideal, nfail_deltafinal, nfail_lowstat, nfail_nsigma = 0,0,0,0
00101 nok_toideal, nok_deltafinal, nok_lowstat, nok_nsigma = 0,0,0,0
00102
00103 for key in keys:
00104 is_ch = True
00105 if muSystem == "DT":
00106 if len(key) != 3: is_ch = False
00107 ch_key = key[:3]
00108 g1 = geom0.dt[key]
00109 g2 = geomN.dt[key]
00110 ch_g1 = geom0.dt[ch_key]
00111 ch_g2 = geomN.dt[ch_key]
00112 else:
00113 if len(key) != 4: is_ch = False
00114 ch_key = key[:4]
00115 g1 = geom0.csc[key]
00116 g2 = geomN.csc[key]
00117 ch_g1 = geom0.csc[ch_key]
00118 ch_g2 = geomN.csc[ch_key]
00119 if is_ch: nkeys+=1
00120
00121 chWasntMoved = True
00122 if ch_key in movedChamberKeys:
00123 chWasntMoved = False
00124
00125 if g1.relativeto != g2.relativeto:
00126 print "%s %s relativeto=\"%s\" versus relativeto=\"%s\"" % (muSystem, str(key), g1.relativeto, g2.relativeto)
00127
00128 found = False
00129
00130 for r in reports:
00131 if r.postal_address[1:] == ch_key:
00132 found = True
00133 rep = r
00134 break
00135 if not found:
00136 if is_ch: print muSystem, str(key), "not found in the report. Continue..."
00137 continue
00138 if is_ch: nkeysr+=1
00139
00140 if rep.status != "PASS":
00141 if is_ch: print muSystem, str(key), "status is not PASS: %s Continue..." % rep.status
00142 continue
00143
00144 if is_ch: nkeyspass+=1
00145
00146
00147
00148
00149 ok = True
00150
00151 if muSystem == "DT" and chWasntMoved:
00152
00153
00154 if abs(ch_g2.x) > 2. or abs(ch_g2.y) > 2. or abs(ch_g2.phiy) > 0.02 or abs(ch_g2.phiz) > 0.02:
00155 ok = False
00156 if is_ch:
00157 nfail_toideal += 1
00158 print "Warning!!!", muSystem, str(key), \
00159 "moved too much with respect to ideal: dx=%.2f mm dy=%.2f mm dphiy=%.2f mrad dphiz=%.2f mrad skipping..." % (ch_g2.x*10, ch_g2.y*10, ch_g2.phiy*1000, ch_g2.phiz*1000)
00160 if is_ch and ok: nok_toideal +=1
00161
00162
00163
00164 if key[1] != 4 :
00165 if abs(rep.deltax.value) > 0.03 or abs(rep.deltay.value) > 0.03 or abs(rep.deltaphiy.value) > 0.0003 or abs(rep.deltaphiz.value) > 0.0006:
00166 ok = False
00167 if is_ch:
00168 nfail_deltafinal += 1
00169 print "Warning!!!", muSystem, str(key), \
00170 "moved too much at final iteration: dx=%.2f mm dy=%.2f mm dphiy=%.2f mrad dphiz=%.2f mrad skipping..." % \
00171 (rep.deltax.value*10, rep.deltay.value*10, rep.deltaphiy.value*1000, rep.deltaphiz.value*1000)
00172 else:
00173 if abs(rep.deltax.value) > 0.03 or abs(rep.deltaphiy.value) > 0.0003 or abs(rep.deltaphiz.value) > 0.0006:
00174 ok = False
00175 if is_ch:
00176 nfail_deltafinal += 1
00177 print "Warning!!!", muSystem, str(key), \
00178 "moved too much at final iteration: dx=%.2f mm dphiy=%.2f mrad dphiz=%.2f mrad skipping..." % \
00179 (rep.deltax.value*10, rep.deltaphiy.value*1000, rep.deltaphiz.value*1000)
00180 if is_ch and ok: nok_deltafinal +=1
00181
00182
00183 if rep.deltax.error > 0.5:
00184 ok = False
00185 if is_ch:
00186 nfail_lowstat +=1
00187 print "Warning!!!", muSystem, str(key), "low statistics chamber with too big dx.error = %.2f mm skipping..." % (rep.deltax.error*10.)
00188 if is_ch and ok: nok_lowstat +=1
00189
00190
00191
00192
00193 if abs(ch_g1.x - ch_g2.x) < theNSigma * math.sqrt ( rep.deltax.error*rep.deltax.error + 0.02*0.02 ) :
00194 ok = False
00195 if is_ch:
00196 nfail_nsigma += 1
00197 print muSystem, str(key), "not moved: xN-x0 = %.3f - %.3f = %.3f < %.3f mm" % \
00198 ( ch_g2.x*10., ch_g1.x*10., (ch_g2.x-ch_g1.x)*10., theNSigma * math.sqrt ( rep.deltax.error*rep.deltax.error + 0.02*0.02 )*10.)
00199
00200 if ok: chWasntMoved = False
00201
00202 if not ok or chWasntMoved: continue
00203
00204
00205
00206 if is_ch:
00207 movedChamberKeys.append(ch_key)
00208 print muSystem, str(key), "moved!"
00209 nmoved+=1
00210
00211 if muSystem == "DT":
00212 geom0.dt[key] = copy.copy(geomN.dt[key])
00213 else:
00214 geom0.csc[key] = copy.copy(geomN.csc[key])
00215
00216 nnotmoved = nkeys - nmoved
00217 nsig = int(theNSigma)
00218 print """
00219 %(muSystem)s REPORT for %(nsig)d sigma policy:
00220 Cumulative counters:
00221 %(nkeys)d\t chambers in geometry
00222 %(nkeysr)d\t chambers in report
00223 %(nkeyspass)d\t have PASS status
00224 %(nok_toideal)d\t pass big shift with respect to ideal check
00225 %(nok_deltafinal)d\t pass big deltas during final iteration
00226 %(nok_lowstat)d\t pass low statistics (or big deltax.error) check
00227 %(nmoved)d\t moved
00228 Not moved counters:
00229 %(nnotmoved)d\t chambers not moved
00230 Numbers of chambers were not moved due to:
00231 %(nfail_toideal)d\t big shift with respect to ideal
00232 %(nfail_deltafinal)d\t big deltas during final iteration
00233 %(nfail_lowstat)d\t low statistics (or big deltax.error)
00234 %(nfail_nsigma)d\t |x_final - x_initial| < nsigma
00235 """ % vars()