20 def plot(MillePedeUser, alignables, config):
21 logger = logging.getLogger(
"mpsvalidate")
23 alignables.create_list(MillePedeUser)
35 for modeNumber, mode
in enumerate([
"xyz",
"rot",
"dist"]):
38 for structNumber, struct
in enumerate(alignables.structures):
39 plots[modeNumber].
append(PlotData(mode))
42 for modeNumber, mode
in enumerate([
"xyz",
"rot",
"dist"]):
43 for structNumber, struct
in enumerate(alignables.structures):
45 plot = plots[modeNumber][structNumber]
49 plot.histo.append(TH1F(
"{0} {1} {2}".
format(struct.get_name(), plot.xyz[
50 i], mode),
"Parameter {0}".
format(plot.xyz[i]), numberOfBins, -1000, 1000))
52 plot.histo.append(TH1F(
"{0} {1} {2}".
format(struct.get_name(), plot.xyz[
53 i], mode),
"Parameter {0}".
format(plot.xyz[i]), numberOfBins, -0.1, 0.1))
55 plot.histo[i].SetXTitle(plot.unit)
56 plot.histo[i].GetXaxis().SetTitleOffset(0.85)
57 plot.histoAxis.append(plot.histo[i].GetXaxis())
60 plot.title = TPaveLabel(
61 0.1, 0.8, 0.9, 0.9,
"Module: {0} {1}".
format(struct.get_name(), mode))
62 plot.text = TPaveText(0.05, 0.1, 0.95, 0.75)
63 plot.text.SetTextAlign(12)
64 plot.text.SetTextSizePixels(20)
67 plots[modeNumber][structNumber] = plot
73 for line
in MillePedeUser:
76 for modeNumber, mode
in enumerate([
"xyz",
"rot",
"dist"]):
77 for structNumber, struct
in enumerate(alignables.structures):
79 plot = plots[modeNumber][structNumber]
82 if (struct.contains_detid(line.Id)):
84 if (
abs(line.Par[plot.data[i]]) != 999999):
88 10000 * line.Par[plot.data[i]])
90 plot.histo[i].
Fill(line.Par[plot.data[i]])
93 plots[modeNumber][structNumber] = plot
99 for modeNumber, mode
in enumerate([
"xyz",
"rot",
"dist"]):
100 for structNumber, struct
in enumerate(alignables.structures):
102 plot = plots[modeNumber][structNumber]
107 if (
abs(numberOfBins / 2 - plot.histo[i].FindFirstBinAbove()) >
abs(plot.histo[i].FindLastBinAbove() - numberOfBins / 2)):
108 plot.maxBinShift[i] =
abs(
109 numberOfBins / 2 - plot.histo[i].FindFirstBinAbove())
111 plot.maxShift[i] = plot.histo[i].GetBinCenter(
112 plot.histo[i].FindFirstBinAbove())
114 plot.maxBinShift[i] =
abs(
115 plot.histo[i].FindLastBinAbove() - numberOfBins / 2)
117 plot.maxShift[i] = plot.histo[i].GetBinCenter(
118 plot.histo[i].FindLastBinAbove())
120 if (
abs(plot.maxBinShift[i]) == numberOfBins / 2 + 1):
121 plot.maxBinShift[i] = 0
126 if (config.rangemode ==
"stddev"):
128 if (plot.histo[i].GetEntries() != 0
and plot.histo[i].GetStdDev() != 0):
131 if (
max(plot.maxShift) / plot.histo[i].GetStdDev() > config.defpeak):
133 binShift = int(plot.histo[i].FindBin(
134 config.widthstddev * plot.histo[i].GetStdDev()) - numberOfBins / 2)
136 binShift =
max(plot.maxBinShift)
139 plot.binShift[i] = binShift
142 if (config.rangemode ==
"all"):
144 plot.binShift[i] = plot.maxBinShift[i]
147 if (config.rangemode ==
"given"):
150 valuelist = config.rangexyzM
152 valuelist = config.rangerotM
154 valuelist = config.rangedistM
156 for value
in valuelist:
158 if (
abs(plot.maxShift[i]) < value):
162 if (
abs(plot.maxShift[i]) > valuelist[-1]):
163 binShift = valuelist[-1]
165 plot.binShift[i] = int(
166 binShift / plot.histo[i].GetBinWidth(1))
169 if (config.samerange == 1):
171 plot.binShift[i] =
max(plot.binShift)
175 plot.usedRange[i] = plot.binShift[i]
180 for j
in range(1, numberOfBins / 2 - plot.binShift[i]):
181 plot.hiddenEntries[i] += plot.histo[i].GetBinContent(j)
183 for j
in range(numberOfBins / 2 + plot.binShift[i], plot.histo[i].GetNbinsX()):
184 plot.hiddenEntries[i] += plot.histo[i].GetBinContent(j)
188 if (plot.histo[i].GetEntries() != 0):
191 mergeNumberBins = plot.binShift[i]
193 if (mergeNumberBins != 0):
195 mergeNumberBins = int(
196 2. * mergeNumberBins / config.numberofbins)
199 if (mergeNumberBins == 0):
201 while (numberOfBins % mergeNumberBins != 0
and mergeNumberBins != 1):
205 plot.histo[i] = plot.histo[i].
Rebin(mergeNumberBins)
206 plot.histoAxis[i] = plot.histo[i].GetXaxis()
211 plot.histoAxis[i].SetRange(int(numberOfBins / (2 * mergeNumberBins) - plot.binShift[
212 i] / mergeNumberBins), int(numberOfBins / (2 * mergeNumberBins) + plot.binShift[i] / mergeNumberBins))
215 limit = config.limit[mode]
218 if (plot.histo[i].GetEntries() > 0):
219 plot.text.AddText(
"max. shift {0}: {1:.2}".
format(
220 plot.xyz[i], plot.maxShift[i]))
221 if (
abs(plot.maxShift[i]) > limit):
223 "! {0} shift bigger than {1} !".
format(plot.xyz[i], limit))
224 if (plot.hiddenEntries[i] != 0):
225 plot.text.AddText(
"! {0} {1} outlier !".
format(
226 plot.xyz[i], int(plot.hiddenEntries[i])))
229 plots[modeNumber][structNumber] = plot
236 gStyle.SetOptStat(
"emrs")
238 for modeNumber, mode
in enumerate([
"xyz",
"rot",
"dist"]):
239 for structNumber, struct
in enumerate(alignables.structures):
241 plot = plots[modeNumber][structNumber]
243 canvas = TCanvas(
"canvasModules{0}_{1}".
format(
244 struct.get_name(), mode),
"Parameter", 300, 0, 800, 600)
260 if(plot.histo[i].GetEntries() > 0):
264 plot.histo[i].DrawCopy()
266 if (plotNumber == 0):
273 "{0}/plots/pdf/modules_{1}_{2}.pdf".
format(config.outputPath, mode, struct.get_name()))
276 image = TImage.Create()
277 image.FromPad(canvas)
279 "{0}/plots/png/modules_{1}_{2}.png".
format(config.outputPath, mode, struct.get_name()))
282 output = OutputData(plottype=
"mod", name=struct.get_name(),
283 parameter=mode, filename=
"modules_{0}_{1}".
format(mode, struct.get_name()))
284 config.outputList.append(output)
290 if (config.showsubmodule == 1):
291 alignables.create_children_list()
292 for modeNumber, mode
in enumerate([
"xyz",
"rot",
"dist"]):
293 for structNumber, struct
in enumerate(alignables.structures):
295 plot = plots[modeNumber][structNumber]
298 mode, struct, plot, config)
def identification
creates the identification text in the top left corner
boost::dynamic_bitset append(const boost::dynamic_bitset<> &bs1, const boost::dynamic_bitset<> &bs2)
this method takes two bitsets bs1 and bs2 and returns result of bs2 appended to the end of bs1 ...
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
Abs< T >::type abs(const T &t)
def setstatsize
statistics size