7 #include "boost/format.hpp" 27 #include <TProfile2D.h> 34 #include <TLegendEntry.h> 41 std::vector<const DDsvalues_type *>
result;
43 for (std::vector<const DDsvalues_type *>::iterator it = result.begin(); it != result.end(); ++it) {
46 if (parameter.
strings().size() == 1) {
47 value = parameter.
strings().front();
50 throw cms::Exception(
"Configuration") <<
" ERROR: multiple " << name <<
" tags encountered";
94 std::vector<MaterialAccountingGroup *>
m_groups;
107 std::map<std::string, std::pair<float, float> >
m_diff;
108 std::map<std::string, std::pair<float, float> >
m_values;
115 TColor::InitializeColors();
131 m_diff[
"TrackerRecMaterialTIBLayer0_Z20"] = std::make_pair<float, float>(0.000000, 0.000000);
132 m_diff[
"TrackerRecMaterialTECDisk0_R60"] = std::make_pair<float, float>(0.000000, 0.000000);
133 m_diff[
"TrackerRecMaterialTOBLayer1_Z80"] = std::make_pair<float, float>(0.000000, 0.000000);
134 m_diff[
"TrackerRecMaterialTOBLayer4_Z0"] = std::make_pair<float, float>(0.000000, 0.000000);
135 m_diff[
"TrackerRecMaterialTOBLayer2_Z0"] = std::make_pair<float, float>(0.000000, 0.000000);
136 m_diff[
"TrackerRecMaterialTOBLayer0_Z70"] = std::make_pair<float, float>(0.000000, 0.000000);
137 m_diff[
"TrackerRecMaterialTECDisk0_R20"] = std::make_pair<float, float>(0.000000, 0.000000);
138 m_diff[
"TrackerRecMaterialTOBLayer5_Z80"] = std::make_pair<float, float>(338.028085, 425.909863);
139 m_diff[
"TrackerRecMaterialPixelEndcapDisk1Fw_Outer"] = std::make_pair<float, float>(0.000000, 0.000000);
140 m_diff[
"TrackerRecMaterialTECDisk1_R20"] = std::make_pair<float, float>(19.426752, 17.294518);
141 m_diff[
"TrackerRecMaterialTOBLayer5_Z0"] = std::make_pair<float, float>(510.125226, 651.305054);
142 m_diff[
"TrackerRecMaterialTECDisk8"] = std::make_pair<float, float>(1098.073793, 778.542517);
143 m_diff[
"TrackerRecMaterialTIDDisk3_R24"] = std::make_pair<float, float>(0.000000, 0.000000);
144 m_diff[
"TrackerRecMaterialTECDisk4_R33"] = std::make_pair<float, float>(51.925713, 42.900250);
145 m_diff[
"TrackerRecMaterialTIBLayer1_Z0"] = std::make_pair<float, float>(0.000000, 0.000000);
146 m_diff[
"TrackerRecMaterialPixelEndcapDisk1Bw_Outer"] = std::make_pair<float, float>(0.000000, 0.000000);
147 m_diff[
"TrackerRecMaterialTIDDisk2_R25"] = std::make_pair<float, float>(0.000000, 0.000000);
148 m_diff[
"TrackerRecMaterialTIBLayer0_Z0"] = std::make_pair<float, float>(0.000000, 0.000000);
149 m_diff[
"TrackerRecMaterialTOBLayer3_Z25"] = std::make_pair<float, float>(0.000000, 0.000000);
150 m_diff[
"TrackerRecMaterialTIBLayer1_Z30"] = std::make_pair<float, float>(0.000000, 0.000000);
151 m_diff[
"TrackerRecMaterialTIDDisk2_R40"] = std::make_pair<float, float>(0.000000, 0.000000);
152 m_diff[
"TrackerRecMaterialTIBLayer2_Z40"] = std::make_pair<float, float>(0.000000, 0.000000);
153 m_diff[
"TrackerRecMaterialTOBLayer1_Z20"] = std::make_pair<float, float>(0.000000, 0.000000);
154 m_diff[
"TrackerRecMaterialPixelEndcapDisk2Bw_Inner"] = std::make_pair<float, float>(0.000000, 0.000000);
155 m_diff[
"TrackerRecMaterialTOBLayer0_Z0"] = std::make_pair<float, float>(0.000000, 0.000000);
156 m_diff[
"TrackerRecMaterialPixelBarrelLayer0"] = std::make_pair<float, float>(0.000000, 0.000000);
157 m_diff[
"TrackerRecMaterialPixelBarrelLayer3"] = std::make_pair<float, float>(0.000000, 0.000000);
158 m_diff[
"TrackerRecMaterialTIBLayer3_Z0"] = std::make_pair<float, float>(0.000000, 0.000000);
159 m_diff[
"TrackerRecMaterialTOBLayer3_Z80"] = std::make_pair<float, float>(118.048766, 116.983451);
160 m_diff[
"TrackerRecMaterialTOBLayer4_Z80"] = std::make_pair<float, float>(210.657923, 218.401623);
161 m_diff[
"TrackerRecMaterialTECDisk5_R33"] = std::make_pair<float, float>(69.556218, 54.695749);
162 m_diff[
"TrackerRecMaterialTOBLayer0_Z20"] = std::make_pair<float, float>(0.000000, 0.000000);
163 m_diff[
"TrackerRecMaterialTIBLayer2_Z0"] = std::make_pair<float, float>(0.000000, 0.000000);
164 m_diff[
"TrackerRecMaterialTECDisk2_R20"] = std::make_pair<float, float>(43.042551, 39.124220);
165 m_diff[
"TrackerRecMaterialPixelEndcapDisk1Bw_Inner"] = std::make_pair<float, float>(0.000000, 0.000000);
166 m_diff[
"TrackerRecMaterialTIDDisk1_R30"] = std::make_pair<float, float>(0.000000, 0.000000);
167 m_diff[
"TrackerRecMaterialTECDisk0_R50"] = std::make_pair<float, float>(0.000000, 0.000000);
168 m_diff[
"TrackerRecMaterialTOBLayer5_Z25"] = std::make_pair<float, float>(308.073141, 389.306637);
169 m_diff[
"TrackerRecMaterialPixelEndcapDisk2Bw_Outer"] = std::make_pair<float, float>(0.000000, 0.000000);
170 m_diff[
"TrackerRecMaterialTIBLayer3_Z50"] = std::make_pair<float, float>(0.000000, 0.000000);
171 m_diff[
"TrackerRecMaterialTECDisk3"] = std::make_pair<float, float>(40.109901, 34.382246);
172 m_diff[
"TrackerRecMaterialPixelBarrelLayer1"] = std::make_pair<float, float>(0.000000, 0.000000);
173 m_diff[
"TrackerRecMaterialPixelBarrelLayer2_External"] = std::make_pair<float, float>(0.000000, 0.000000);
174 m_diff[
"TrackerRecMaterialPixelEndcapDisk2Fw_Inner"] = std::make_pair<float, float>(0.000000, 0.000000);
175 m_diff[
"TrackerRecMaterialTECDisk7_R40"] = std::make_pair<float, float>(219.144902, 162.590326);
176 m_diff[
"TrackerRecMaterialPixelEndcapDisk3Bw_Inner"] = std::make_pair<float, float>(594.908414, 558.979032);
177 m_diff[
"TrackerRecMaterialPixelEndcapDisk2Fw_Outer"] = std::make_pair<float, float>(0.000000, 0.000000);
178 m_diff[
"TrackerRecMaterialPixelEndcapDisk3Fw_Outer"] = std::make_pair<float, float>(0.000000, 0.000000);
179 m_diff[
"TrackerRecMaterialTECDisk6"] = std::make_pair<float, float>(85.692825, 67.990698);
180 m_diff[
"TrackerRecMaterialTOBLayer3_Z0"] = std::make_pair<float, float>(0.000000, 0.000000);
181 m_diff[
"TrackerRecMaterialPixelBarrelLayer2"] = std::make_pair<float, float>(0.000000, 0.000000);
182 m_diff[
"TrackerRecMaterialPixelBarrelLayer3_External"] = std::make_pair<float, float>(0.000000, 0.000000);
183 m_diff[
"TrackerRecMaterialPixelEndcapDisk3Fw_Inner"] = std::make_pair<float, float>(607.142137, 570.407286);
184 m_diff[
"TrackerRecMaterialTOBLayer2_Z25"] = std::make_pair<float, float>(0.000000, 0.000000);
185 m_diff[
"TrackerRecMaterialPixelEndcapDisk3Bw_Outer"] = std::make_pair<float, float>(0.000000, 0.000000);
186 m_diff[
"TrackerRecMaterialPixelBarrelLayer0_External"] = std::make_pair<float, float>(0.000000, 0.000000);
187 m_diff[
"TrackerRecMaterialTECDisk0_R90"] = std::make_pair<float, float>(59.694180, 74.636115);
188 m_diff[
"TrackerRecMaterialTOBLayer1_Z0"] = std::make_pair<float, float>(0.000000, 0.000000);
189 m_diff[
"TrackerRecMaterialTIDDisk1_R0"] = std::make_pair<float, float>(0.000000, 0.000000);
190 m_diff[
"TrackerRecMaterialPixelBarrelLayer1_External"] = std::make_pair<float, float>(0.000000, 0.000000);
191 m_diff[
"TrackerRecMaterialTOBLayer4_Z25"] = std::make_pair<float, float>(0.000000, 0.000000);
192 m_diff[
"TrackerRecMaterialTOBLayer2_Z80"] = std::make_pair<float, float>(2.291492, 2.290657);
193 m_diff[
"TrackerRecMaterialPixelEndcapDisk1Fw_Inner"] = std::make_pair<float, float>(0.000000, 0.000000);
194 m_diff[
"TrackerRecMaterialTECDisk0_R40"] = std::make_pair<float, float>(0.000000, 0.000000);
195 m_diff[
"TrackerRecMaterialTIDDisk2_R30"] = std::make_pair<float, float>(0.000000, 0.000000);
196 m_values[
"TrackerRecMaterialTIBLayer0_Z20"] = std::make_pair<float, float>(0.076264, 0.000162);
197 m_values[
"TrackerRecMaterialTECDisk0_R60"] = std::make_pair<float, float>(0.199482, 0.000368);
198 m_values[
"TrackerRecMaterialTOBLayer1_Z80"] = std::make_pair<float, float>(0.075550, 0.000145);
199 m_values[
"TrackerRecMaterialTOBLayer4_Z0"] = std::make_pair<float, float>(0.014804, 0.000033);
200 m_values[
"TrackerRecMaterialTOBLayer2_Z0"] = std::make_pair<float, float>(0.014947, 0.000033);
201 m_values[
"TrackerRecMaterialTOBLayer0_Z70"] = std::make_pair<float, float>(0.104496, 0.000208);
202 m_values[
"TrackerRecMaterialTECDisk0_R20"] = std::make_pair<float, float>(0.177496, 0.000419);
203 m_values[
"TrackerRecMaterialTOBLayer5_Z80"] = std::make_pair<float, float>(0.095700, 0.000224);
204 m_values[
"TrackerRecMaterialPixelEndcapDisk1Fw_Outer"] = std::make_pair<float, float>(0.063054, 0.000139);
205 m_values[
"TrackerRecMaterialTECDisk1_R20"] = std::make_pair<float, float>(0.086704, 0.000189);
206 m_values[
"TrackerRecMaterialTOBLayer5_Z0"] = std::make_pair<float, float>(0.060576, 0.000155);
207 m_values[
"TrackerRecMaterialTECDisk8"] = std::make_pair<float, float>(0.329777, 0.000532);
208 m_values[
"TrackerRecMaterialTIDDisk3_R24"] = std::make_pair<float, float>(0.154447, 0.000366);
209 m_values[
"TrackerRecMaterialTECDisk4_R33"] = std::make_pair<float, float>(0.072594, 0.000158);
210 m_values[
"TrackerRecMaterialTIBLayer1_Z0"] = std::make_pair<float, float>(0.049604, 0.000102);
211 m_values[
"TrackerRecMaterialPixelEndcapDisk1Bw_Outer"] = std::make_pair<float, float>(0.065873, 0.000145);
212 m_values[
"TrackerRecMaterialTIDDisk2_R25"] = std::make_pair<float, float>(0.067206, 0.000166);
213 m_values[
"TrackerRecMaterialTIBLayer0_Z0"] = std::make_pair<float, float>(0.056395, 0.000125);
214 m_values[
"TrackerRecMaterialTOBLayer3_Z25"] = std::make_pair<float, float>(0.035290, 0.000071);
215 m_values[
"TrackerRecMaterialTIBLayer1_Z30"] = std::make_pair<float, float>(0.068299, 0.000137);
216 m_values[
"TrackerRecMaterialTIDDisk2_R40"] = std::make_pair<float, float>(0.143121, 0.000310);
217 m_values[
"TrackerRecMaterialTIBLayer2_Z40"] = std::make_pair<float, float>(0.077840, 0.000155);
218 m_values[
"TrackerRecMaterialTOBLayer1_Z20"] = std::make_pair<float, float>(0.051913, 0.000103);
219 m_values[
"TrackerRecMaterialPixelEndcapDisk2Bw_Inner"] = std::make_pair<float, float>(0.039093, 0.000090);
220 m_values[
"TrackerRecMaterialTOBLayer0_Z0"] = std::make_pair<float, float>(0.029002, 0.000069);
221 m_values[
"TrackerRecMaterialPixelBarrelLayer0"] = std::make_pair<float, float>(0.018043, 0.000038);
222 m_values[
"TrackerRecMaterialPixelBarrelLayer3"] = std::make_pair<float, float>(0.020661, 0.000042);
223 m_values[
"TrackerRecMaterialTIBLayer3_Z0"] = std::make_pair<float, float>(0.048101, 0.000110);
224 m_values[
"TrackerRecMaterialTOBLayer3_Z80"] = std::make_pair<float, float>(0.093979, 0.000181);
225 m_values[
"TrackerRecMaterialTOBLayer4_Z80"] = std::make_pair<float, float>(0.101240, 0.000203);
226 m_values[
"TrackerRecMaterialTECDisk5_R33"] = std::make_pair<float, float>(0.092564, 0.000201);
227 m_values[
"TrackerRecMaterialTOBLayer0_Z20"] = std::make_pair<float, float>(0.063558, 0.000138);
228 m_values[
"TrackerRecMaterialTIBLayer2_Z0"] = std::make_pair<float, float>(0.036854, 0.000078);
229 m_values[
"TrackerRecMaterialTECDisk2_R20"] = std::make_pair<float, float>(0.107900, 0.000237);
230 m_values[
"TrackerRecMaterialPixelEndcapDisk1Bw_Inner"] = std::make_pair<float, float>(0.039143, 0.000086);
231 m_values[
"TrackerRecMaterialTIDDisk1_R30"] = std::make_pair<float, float>(0.167774, 0.000321);
232 m_values[
"TrackerRecMaterialTECDisk0_R50"] = std::make_pair<float, float>(0.108277, 0.000255);
233 m_values[
"TrackerRecMaterialTOBLayer5_Z25"] = std::make_pair<float, float>(0.086612, 0.000209);
234 m_values[
"TrackerRecMaterialPixelEndcapDisk2Bw_Outer"] = std::make_pair<float, float>(0.070143, 0.000165);
235 m_values[
"TrackerRecMaterialTIBLayer3_Z50"] = std::make_pair<float, float>(0.063872, 0.000138);
236 m_values[
"TrackerRecMaterialTECDisk3"] = std::make_pair<float, float>(0.064126, 0.000139);
237 m_values[
"TrackerRecMaterialPixelBarrelLayer1"] = std::make_pair<float, float>(0.016379, 0.000028);
238 m_values[
"TrackerRecMaterialPixelBarrelLayer2_External"] = std::make_pair<float, float>(0.026687, 0.000046);
239 m_values[
"TrackerRecMaterialPixelEndcapDisk2Fw_Inner"] = std::make_pair<float, float>(0.039737, 0.000091);
240 m_values[
"TrackerRecMaterialTECDisk7_R40"] = std::make_pair<float, float>(0.126225, 0.000235);
241 m_values[
"TrackerRecMaterialPixelEndcapDisk3Bw_Inner"] = std::make_pair<float, float>(0.674984, 0.001356);
242 m_values[
"TrackerRecMaterialPixelEndcapDisk2Fw_Outer"] = std::make_pair<float, float>(0.065935, 0.000151);
243 m_values[
"TrackerRecMaterialPixelEndcapDisk3Fw_Outer"] = std::make_pair<float, float>(0.100139, 0.000205);
244 m_values[
"TrackerRecMaterialTECDisk6"] = std::make_pair<float, float>(0.078988, 0.000163);
245 m_values[
"TrackerRecMaterialTOBLayer3_Z0"] = std::make_pair<float, float>(0.015009, 0.000033);
246 m_values[
"TrackerRecMaterialPixelBarrelLayer2"] = std::make_pair<float, float>(0.017219, 0.000030);
247 m_values[
"TrackerRecMaterialPixelBarrelLayer3_External"] = std::make_pair<float, float>(0.036152, 0.000066);
248 m_values[
"TrackerRecMaterialPixelEndcapDisk3Fw_Inner"] = std::make_pair<float, float>(0.673782, 0.001357);
249 m_values[
"TrackerRecMaterialTOBLayer2_Z25"] = std::make_pair<float, float>(0.034917, 0.000069);
250 m_values[
"TrackerRecMaterialPixelEndcapDisk3Bw_Outer"] = std::make_pair<float, float>(0.100143, 0.000204);
251 m_values[
"TrackerRecMaterialPixelBarrelLayer0_External"] = std::make_pair<float, float>(0.031128, 0.000062);
252 m_values[
"TrackerRecMaterialTECDisk0_R90"] = std::make_pair<float, float>(0.309342, 0.000539);
253 m_values[
"TrackerRecMaterialTOBLayer1_Z0"] = std::make_pair<float, float>(0.023489, 0.000050);
254 m_values[
"TrackerRecMaterialTIDDisk1_R0"] = std::make_pair<float, float>(0.175180, 0.000349);
255 m_values[
"TrackerRecMaterialPixelBarrelLayer1_External"] = std::make_pair<float, float>(0.022508, 0.000036);
256 m_values[
"TrackerRecMaterialTOBLayer4_Z25"] = std::make_pair<float, float>(0.036056, 0.000073);
257 m_values[
"TrackerRecMaterialTOBLayer2_Z80"] = std::make_pair<float, float>(0.062072, 0.000117);
258 m_values[
"TrackerRecMaterialPixelEndcapDisk1Fw_Inner"] = std::make_pair<float, float>(0.039127, 0.000086);
259 m_values[
"TrackerRecMaterialTECDisk0_R40"] = std::make_pair<float, float>(0.084231, 0.000209);
260 m_values[
"TrackerRecMaterialTIDDisk2_R30"] = std::make_pair<float, float>(0.065109, 0.000143);
265 unsigned int steps = 100;
267 unsigned int index = ((TObjArray *)gROOT->GetListOfColors())->GetLast() + 1;
270 static_cast<TColor *
>(gROOT->GetListOfColors()->At(kBlue + 1))->GetRGB(r1, g1, b1);
271 static_cast<TColor *
>(gROOT->GetListOfColors()->At(kAzure + 10))->GetRGB(r2, g2, b2);
273 float delta_g = (g2 -
g1) / (steps - 1);
274 float delta_b = (b2 - b1) / (steps - 1);
278 for (
unsigned int i = 0;
i <
steps; ++
i, ++
ii) {
279 new TColor(static_cast<Int_t>(index + ii), r1 + delta_r *
i, g1 + delta_g * i, b1 + delta_b * i);
285 static_cast<TColor *
>(gROOT->GetListOfColors()->At(kOrange))->GetRGB(r1, g1, b1);
286 static_cast<TColor *
>(gROOT->GetListOfColors()->At(kOrange + 7))->GetRGB(r2, g2, b2);
287 delta_r = (r2 -
r1) / (steps - 1);
288 delta_g = (g2 -
g1) / (steps - 1);
289 delta_b = (b2 - b1) / (steps - 1);
290 for (
unsigned int i = 0;
i <
steps; ++
i, ++
ii) {
291 new TColor(static_cast<Int_t>(index + ii), r1 + delta_r *
i, g1 + delta_g * i, b1 + delta_b * i);
314 m_color.push_back(kSpring + 9);
315 m_color.push_back(kSpring + 4);
332 m_color.push_back(kMagenta - 2);
333 m_color.push_back(kMagenta - 3);
334 m_color.push_back(kMagenta - 4);
335 m_color.push_back(kMagenta - 5);
336 m_color.push_back(kMagenta - 6);
337 m_color.push_back(kMagenta - 7);
339 m_color.push_back(kMagenta - 9);
342 m_color.push_back(kOrange + 9);
343 m_color.push_back(kOrange + 7);
344 m_color.push_back(kOrange + 5);
345 m_color.push_back(kOrange - 2);
346 m_color.push_back(kOrange - 3);
347 m_color.push_back(kOrange - 6);
348 m_color.push_back(kOrange + 4);
349 m_color.push_back(kOrange - 7);
351 m_color.push_back(kOrange + 10);
353 m_color.push_back(kViolet + 10);
354 m_color.push_back(kViolet + 6);
355 m_color.push_back(kViolet + 3);
356 m_color.push_back(kViolet - 7);
357 m_color.push_back(kViolet - 1);
358 m_color.push_back(kViolet + 9);
359 m_color.push_back(kViolet - 5);
360 m_color.push_back(kViolet - 3);
390 std::vector<std::pair<std::shared_ptr<TLine>, std::shared_ptr<TText> > >
lines;
393 std::pair<float, float> deltaZ(293, 298);
394 std::pair<float, float>
deltaR(115, 118);
395 float text_size = 0.033;
397 for (
float eta = 0.;
eta <= 3.8;
eta += 0.2) {
400 lines.push_back(std::make_pair<std::shared_ptr<TLine>, std::shared_ptr<TText> >(
401 std::make_shared<TLine>(deltaZ.first, deltaZ.first *
tan(theta), deltaZ.second, deltaZ.second *
tan(theta)),
402 std::make_shared<TText>(deltaZ.first, deltaZ.first *
tan(theta),
str(
boost::format(
"%2.1f") %
eta).c_str())));
403 lines.back().second->SetTextFont(42);
404 lines.back().second->SetTextSize(text_size);
405 lines.back().second->SetTextAlign(33);
406 lines.push_back(std::make_pair<std::shared_ptr<TLine>, std::shared_ptr<TText> >(
407 std::make_shared<TLine>(-deltaZ.first, deltaZ.first *
tan(theta), -deltaZ.second, deltaZ.second *
tan(theta)),
408 std::make_shared<TText>(
410 lines.back().second->SetTextFont(42);
411 lines.back().second->SetTextSize(text_size);
412 lines.back().second->SetTextAlign(13);
414 lines.push_back(std::make_pair<std::shared_ptr<TLine>, std::shared_ptr<TText> >(
415 std::make_shared<TLine>(deltaR.first /
tan(theta), deltaR.first, deltaR.second /
tan(theta), deltaR.second),
416 std::make_shared<TText>(deltaR.first /
tan(theta), deltaR.first,
str(
boost::format(
"%2.1f") %
eta).c_str())));
417 lines.back().second->SetTextFont(42);
418 lines.back().second->SetTextSize(text_size);
419 lines.back().second->SetTextAlign(23);
421 lines.push_back(std::make_pair<std::shared_ptr<TLine>, std::shared_ptr<TText> >(
422 std::make_shared<TLine>(
423 -deltaR.first /
tan(theta), deltaR.first, -deltaR.second /
tan(theta), deltaR.second),
424 std::make_shared<TText>(
426 lines.back().second->SetTextFont(42);
427 lines.back().second->SetTextSize(text_size);
428 lines.back().second->SetTextAlign(23);
436 const double scale = 10.;
437 std::vector<TText *> nukem_text;
438 static int markerStyles[10] = {kFullCircle,
456 std::unique_ptr<TCanvas>
canvas(
457 new TCanvas(
"Grouping_rz",
"Grouping - RZ view", (
int)(600 * scale * 1.25), (
int)(120 * scale * 1.50)));
458 canvas->GetFrame()->SetFillColor(kWhite);
459 gStyle->SetOptStat(0);
461 unsigned int color_index = 1;
463 std::unique_ptr<TLegend>
leg(
new TLegend(0.1, 0.1, 0.23, 0.34));
464 leg->SetHeader(
"Tracker Material Grouping");
465 leg->SetTextFont(42);
466 leg->SetTextSize(0.008);
468 std::unique_ptr<TProfile2D> radlen(
469 new TProfile2D(
"OverallRadLen",
"OverallRadLen", 600., -300., 300, 120., 0., 120.));
470 std::unique_ptr<TProfile2D> eneloss(
471 new TProfile2D(
"OverallEnergyLoss",
"OverallEnergyLoss", 600., -300., 300, 120., 0., 120.));
472 std::unique_ptr<TProfile2D> radlen_diff(
473 new TProfile2D(
"OverallDifferencesRadLen",
"OverallDifferencesRadLen", 600., -300., 300, 120., 0., 120.));
474 std::unique_ptr<TProfile2D> eneloss_diff(
475 new TProfile2D(
"OverallDifferencesEnergyLoss",
"OverallDifferencesEnergyLoss", 600., -300., 300, 120., 0., 120.));
479 new TH2F(
g->name().c_str(),
g->name().c_str(), 6000., -300., 300, 1200., 0., 120.));
480 TH2F ¤t = *
m_plots.back();
481 current.SetMarkerColor(
m_color[color_index]);
482 current.SetMarkerStyle(markerStyles[color_index % 10]);
483 current.SetMarkerSize(0.8);
484 current.SetLineWidth(1);
485 for (
auto element :
g->elements()) {
486 current.Fill(element.z(), element.perp());
487 radlen->Fill(element.z(), element.perp(),
m_values[
g->name()].first);
488 eneloss->Fill(element.z(), element.perp(),
m_values[
g->name()].second);
489 radlen_diff->Fill(element.z(), element.perp(),
m_diff[
g->name()].first);
490 eneloss_diff->Fill(element.z(), element.perp(),
m_diff[
g->name()].second);
493 if (color_index == 1)
496 current.Draw(
"SAME");
498 leg->AddEntry(¤t,
g->name().c_str(),
"lp")->SetTextColor(
m_color[color_index]);
503 color_index = color_index %
m_color.size();
506 canvas->SaveAs(
"Grouping.png");
511 radlen->SetMinimum(0);
512 radlen->SetMaximum(0.25);
513 radlen->Draw(
"COLZ");
514 for (
auto line : lines) {
515 line.first->SetLineWidth(5);
519 canvas->SaveAs(
"RadLenValues.png");
522 eneloss->SetMinimum(0.00001);
523 eneloss->SetMaximum(0.0005);
524 eneloss->Draw(
"COLZ");
525 for (
auto line : lines) {
526 line.first->SetLineWidth(5);
530 canvas->SaveAs(
"EnergyLossValues.png");
535 radlen_diff->SetMinimum(-100);
536 radlen_diff->SetMaximum(100);
537 radlen_diff->Draw(
"COLZ");
538 for (
auto line : lines) {
539 line.first->SetLineWidth(5);
543 canvas->SaveAs(
"RadLenChanges.png");
546 eneloss_diff->SetMinimum(-100);
547 eneloss_diff->SetMaximum(100);
548 eneloss_diff->Draw(
"COLZ");
549 for (
auto line : lines) {
550 line.first->SetLineWidth(5);
554 canvas->SaveAs(
"EnergyLossChanges.png");
556 for (
auto g : nukem_text)
575 for (
unsigned int h = 2;
h < history.size(); ++
h)
576 std::cout <<
'/' << history[
h].logicalPart().name().name() <<
'[' << history[
h].copyno() <<
']';
580 std::cout <<
"\t(" << position.x() <<
", " << position.y() <<
", " << position.z() <<
") " 581 <<
"[rho] " << position.Rho() << std::endl;
T getUntrackedParameter(std::string const &, T const &) const
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
void analyze(const edm::Event &, const edm::EventSetup &) override
Geom::Theta< T > theta() const
def setup(process, global_tag, zero_tesla=False)
const DDGeoHistory & geoHistory() const
The list of ancestors up to the root-node of the current node.
std::vector< TH2F * > m_plots
bool DDfetch(const DDsvalues_type *, DDValue &)
helper for retrieving DDValues from DDsvalues_type *.
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
#define DEFINE_FWK_MODULE(type)
std::vector< unsigned int > m_color
std::vector< std::pair< std::shared_ptr< TLine >, std::shared_ptr< TText > > > overlayEtaReferences()
void produceAndSaveSummaryPlot(const edm::EventSetup &)
bool next()
set current node to the next node in the filtered tree
void fillMaterialDifferences()
double delta_r(const Fourvec &a, const Fourvec &b)
Find the distance between two four-vectors in the two-dimensional space .
Tan< T >::type tan(const T &t)
format
Some error handling for the usage.
const std::vector< std::string > & strings() const
a reference to the std::string-valued values stored in the given instance of DDValue ...
std::map< std::string, std::pair< float, float > > m_diff
std::vector< DDExpandedNode > DDGeoHistory
Geometrical 'path' of the current node up to the root-node.
XYZVectorD XYZVector
spatial vector with cartesian internal representation
std::set< std::string > m_group_names
std::vector< MaterialAccountingGroup * > m_groups
static int position[264][3]
ListGroups(const edm::ParameterSet &)
std::vector< int > m_gradient
void specificsV(std::vector< const DDsvalues_type * > &result) const
User specific data attached to the current node.
static bool dddGetStringRaw(const DDFilteredView &view, const std::string &name, std::string &value)
const DDTranslation & translation() const
The absolute translation of the current node.
std::map< std::string, std::pair< float, float > > m_values
static std::string dddGetString(const std::string &s, DDFilteredView const &view)