CMS 3D CMS Logo

ListGroups.cc
Go to the documentation of this file.
1 #include <string>
2 #include <vector>
3 #include <map>
4 #include <iostream>
5 #include <iomanip>
6 
7 #include "boost/format.hpp"
8 
17 
24 
25 // ROOT
26 #include <TROOT.h>
27 #include <TProfile2D.h>
28 #include <TColor.h>
29 #include <TStyle.h>
30 #include <TCanvas.h>
31 #include <TFrame.h>
32 #include <TText.h>
33 #include <TLegend.h>
34 #include <TLegendEntry.h>
35 #include <TLine.h>
36 
39 
40 static bool dddGetStringRaw(const DDFilteredView &view, const std::string &name, std::string &value) {
41  std::vector<const DDsvalues_type *> result;
42  view.specificsV(result);
43  for (std::vector<const DDsvalues_type *>::iterator it = result.begin(); it != result.end(); ++it) {
45  if (DDfetch(*it, parameter)) {
46  if (parameter.strings().size() == 1) {
47  value = parameter.strings().front();
48  return true;
49  } else {
50  throw cms::Exception("Configuration") << " ERROR: multiple " << name << " tags encountered";
51  return false;
52  }
53  }
54  }
55  return false;
56 }
57 
58 /*
59 static inline
60 double dddGetDouble(const std::string & s, DDFilteredView const & view) {
61  std::string value;
62  if (dddGetStringRaw(view, s, value))
63  return double(::atof(value.c_str()));
64  else
65  return NAN;
66 }
67 */
68 
69 static inline std::string dddGetString(const std::string &s, DDFilteredView const &view) {
71  if (dddGetStringRaw(view, s, value))
72  return value;
73  else
74  return std::string();
75 }
76 
77 class ListGroups : public edm::one::EDAnalyzer<> {
78 public:
80  ~ListGroups() override;
81 
82 private:
83  void analyze(const edm::Event &, const edm::EventSetup &) override;
84  void beginJob() override {}
85  void endJob() override;
86  void fillColor();
88  void fillGradient();
89  std::vector<std::pair<std::shared_ptr<TLine>, std::shared_ptr<TText> > > overlayEtaReferences();
92  std::vector<TH2F *> m_plots;
93  std::set<std::string> m_group_names;
94  std::vector<MaterialAccountingGroup *> m_groups;
95  std::vector<unsigned int> m_color;
96  std::vector<int> m_gradient;
97 
98  // The following maps are automatically filled by the script
99  // dumpFullXML, when run with -c,--compare flag, and are injected in
100  // this code via the header ListGroupsMaterialDifference.h, which is
101  // included below. The first value of the pair in m_diff represents
102  // the relative difference ((new - old)/old * 100, in %) of
103  // radiation length, while the second referes to the energy loss (in
104  // GeV/cm) changes. The values in m_values are ordered in the very
105  // same way, ie. they contain the new values for radiation length
106  // and energy loss, respectively.
107  std::map<std::string, std::pair<float, float> > m_diff;
108  std::map<std::string, std::pair<float, float> > m_values;
109 };
110 
112  m_saveSummaryPlot = iPSet.getUntrackedParameter<bool>("SaveSummaryPlot");
113  m_plots.clear();
114  m_groups.clear();
115  TColor::InitializeColors();
116  fillColor();
118  fillGradient();
119 }
120 
122  for (auto plot : m_plots)
123  delete plot;
124 
125  if (!m_groups.empty())
126  for (auto g : m_groups)
127  delete g;
128 }
129 
131 
133  m_gradient.reserve(200);
134  unsigned int steps = 100;
135  // if no index was given, find the highest used one and start from that plus one
136  unsigned int index = ((TObjArray *)gROOT->GetListOfColors())->GetLast() + 1;
137 
138  float r1, g1, b1, r2, g2, b2;
139  static_cast<TColor *>(gROOT->GetListOfColors()->At(kBlue + 1))->GetRGB(r1, g1, b1);
140  static_cast<TColor *>(gROOT->GetListOfColors()->At(kAzure + 10))->GetRGB(r2, g2, b2);
141  float delta_r = (r2 - r1) / (steps - 1);
142  float delta_g = (g2 - g1) / (steps - 1);
143  float delta_b = (b2 - b1) / (steps - 1);
144 
145  m_gradient.push_back(kBlue + 4); // Underflow lowest bin
146  unsigned int ii = 0;
147  for (unsigned int i = 0; i < steps; ++i, ++ii) {
148  new TColor(static_cast<Int_t>(index + ii), r1 + delta_r * i, g1 + delta_g * i, b1 + delta_b * i);
149  m_gradient.push_back(index + ii);
150  }
151 
152  m_gradient.push_back(kWhite); // 0 level perfectly white
153 
154  static_cast<TColor *>(gROOT->GetListOfColors()->At(kOrange))->GetRGB(r1, g1, b1);
155  static_cast<TColor *>(gROOT->GetListOfColors()->At(kOrange + 7))->GetRGB(r2, g2, b2);
156  delta_r = (r2 - r1) / (steps - 1);
157  delta_g = (g2 - g1) / (steps - 1);
158  delta_b = (b2 - b1) / (steps - 1);
159  for (unsigned int i = 0; i < steps; ++i, ++ii) {
160  new TColor(static_cast<Int_t>(index + ii), r1 + delta_r * i, g1 + delta_g * i, b1 + delta_b * i);
161  m_gradient.push_back(index + ii);
162  }
163  m_gradient.push_back(kRed); // Overflow highest bin
164 }
165 
167  // With the introduction of the support for PhaseI and PhaseII detectors it
168  // became quite difficult to maintain a list of colors that is in sync with
169  // the real number of grouping used in the different scenarios. We therefore
170  // define some reasonable set and loop over it in case the number of grouping
171  // is larger than the number of colors.
172 
173  m_color.push_back(kBlack); // unassigned
174 
175  m_color.push_back(kAzure); // PixelBarrelLayer0_Z0
176  m_color.push_back(kAzure - 1); // PixelBarrelLayer0_Z20
177  m_color.push_back(kAzure + 1); // Layer1_Z0
178  m_color.push_back(kAzure + 2); // Layer1_Z20
179 
180  m_color.push_back(kGreen); // EndCapDisk1_R0
181  m_color.push_back(kGreen + 2); // EndcapDisk1_R11
182  m_color.push_back(kGreen + 4); // EndcapDisk1_R7
183  m_color.push_back(kSpring + 9); // EndcapDisk2_R0
184  m_color.push_back(kSpring + 4); // EndcapDisk2_R7
185  m_color.push_back(kSpring); // EndcapDisk2_R7
186 
187  m_color.push_back(kRed); // TECDisk0_R20
188  m_color.push_back(kRed + 2); // TECDisk0_R40
189  m_color.push_back(kRed - 7); // TECDisk0_R50
190  m_color.push_back(kRed - 5); // TECDisk0_R60
191  m_color.push_back(kRed - 10); // TECDisk0_R90
192  m_color.push_back(kRed - 1); // TECDisk1_Inner
193  m_color.push_back(kRed - 2); // TECDisk1_Outer
194  m_color.push_back(kRed - 3); // TECDisk1_R20
195  m_color.push_back(kPink - 2); // TECDisk2_Inner
196  m_color.push_back(kPink - 3); // TECDisk2_Outer
197  m_color.push_back(kPink - 4); // TECDisk2_R20
198  m_color.push_back(kPink + 9); // TECDisk3_Inner
199  m_color.push_back(kPink + 8); // TECDisk3_Outer
200  m_color.push_back(kPink + 7); // TECDisk3
201  m_color.push_back(kMagenta - 2); // TECDisk4_Inner
202  m_color.push_back(kMagenta - 3); // TECDisk4_Outer
203  m_color.push_back(kMagenta - 4); // TECDisk4_R33
204  m_color.push_back(kMagenta - 5); // TECDisk5_Inner
205  m_color.push_back(kMagenta - 6); // TECDisk5_Outer
206  m_color.push_back(kMagenta - 7); // TECDisk5_R33
207  m_color.push_back(kRed); // TECDisk6
208  m_color.push_back(kMagenta - 9); // TECDisk7_R40
209  m_color.push_back(kViolet); // TECDisk8
210 
211  m_color.push_back(kOrange + 9); // TIBLayer0_Z0
212  m_color.push_back(kOrange + 7); // TIBLayer0_Z20
213  m_color.push_back(kOrange + 5); // TIBLayer0_Z40
214  m_color.push_back(kOrange - 2); // TIBLayer1_Z0
215  m_color.push_back(kOrange - 3); // TIBLayer1_Z30
216  m_color.push_back(kOrange - 6); // TIBLayer1_Z60
217  m_color.push_back(kOrange + 4); // TIBLayer2_Z0
218  m_color.push_back(kOrange - 7); // TIBLayer2_Z40
219  m_color.push_back(kOrange); // TIBLayer3_Z0
220  m_color.push_back(kOrange + 10); // TIBLayer3_Z50
221 
222  m_color.push_back(kViolet + 10); // TIDDisk1_R0
223  m_color.push_back(kViolet + 6); // TIDDisk1_R30
224  m_color.push_back(kViolet + 3); // TIDDisk1_R40
225  m_color.push_back(kViolet - 7); // TIDDisk2_R25
226  m_color.push_back(kViolet - 1); // TIDDisk2_R30
227  m_color.push_back(kViolet + 9); // TIDDisk2_R40
228  m_color.push_back(kViolet - 5); // TIDDisk3_R24
229  m_color.push_back(kViolet - 3); // TIDDisk3_R30
230  m_color.push_back(kViolet); // TIDDisk3_R40
231 
232  m_color.push_back(kAzure); // TOBLayer0_Z0
233  m_color.push_back(kAzure + 8); // TOBLayer0_Z20
234  m_color.push_back(kAzure + 2); // TOBLayer0_Z70
235  m_color.push_back(kAzure + 4); // TOBLayer0_Z80
236  m_color.push_back(kCyan + 1); // TOBLayer1_Z0
237  m_color.push_back(kCyan - 9); // TOBLayer1_Z20
238  m_color.push_back(kCyan + 3); // TOBLayer1_Z80
239  m_color.push_back(kCyan + 4); // TOBLayer1_Z90
240  m_color.push_back(kAzure); // TOBLayer2_Z0
241  m_color.push_back(kAzure + 8); // TOBLayer2_Z25
242  m_color.push_back(kAzure + 2); // TOBLayer2_Z80
243  m_color.push_back(kAzure + 5); // TOBLayer2_Z90
244  m_color.push_back(kCyan + 1); // TOBLayer3_Z0
245  m_color.push_back(kCyan - 9); // TOBLayer3_Z25
246  m_color.push_back(kCyan + 3); // TOBLayer3_Z80
247  m_color.push_back(kCyan + 4); // TOBLayer3_Z90
248  m_color.push_back(kAzure); // TOBLayer4_Z0
249  m_color.push_back(kAzure + 8); // TOBLayer4_Z25
250  m_color.push_back(kAzure + 2); // TOBLayer4_Z80
251  m_color.push_back(kAzure + 5); // TOBLayer4_Z90
252  m_color.push_back(kCyan + 1); // TOBLayer5_Z0
253  m_color.push_back(kCyan - 9); // TOBLayer5_Z25
254  m_color.push_back(kCyan + 3); // TOBLayer5_Z80
255  m_color.push_back(kCyan + 4); // TOBLayer5_Z90
256 }
257 
258 std::vector<std::pair<std::shared_ptr<TLine>, std::shared_ptr<TText> > > ListGroups::overlayEtaReferences() {
259  std::vector<std::pair<std::shared_ptr<TLine>, std::shared_ptr<TText> > > lines;
260 
261  lines.reserve(40);
262  std::pair<float, float> deltaZ(293, 298);
263  std::pair<float, float> deltaR(115, 118);
264  float text_size = 0.033;
265 
266  for (float eta = 0.; eta <= 3.8; eta += 0.2) {
267  float theta = 2. * atan(exp(-eta));
268  if (eta >= 1.8) {
269  lines.push_back(std::make_pair<std::shared_ptr<TLine>, std::shared_ptr<TText> >(
270  std::make_shared<TLine>(deltaZ.first, deltaZ.first * tan(theta), deltaZ.second, deltaZ.second * tan(theta)),
271  std::make_shared<TText>(deltaZ.first, deltaZ.first * tan(theta), str(boost::format("%2.1f") % eta).c_str())));
272  lines.back().second->SetTextFont(42);
273  lines.back().second->SetTextSize(text_size);
274  lines.back().second->SetTextAlign(33);
275  lines.push_back(std::make_pair<std::shared_ptr<TLine>, std::shared_ptr<TText> >(
276  std::make_shared<TLine>(-deltaZ.first, deltaZ.first * tan(theta), -deltaZ.second, deltaZ.second * tan(theta)),
277  std::make_shared<TText>(
278  -deltaZ.first, deltaZ.first * tan(theta), str(boost::format("-%2.1f") % eta).c_str())));
279  lines.back().second->SetTextFont(42);
280  lines.back().second->SetTextSize(text_size);
281  lines.back().second->SetTextAlign(13);
282  } else {
283  lines.push_back(std::make_pair<std::shared_ptr<TLine>, std::shared_ptr<TText> >(
284  std::make_shared<TLine>(deltaR.first / tan(theta), deltaR.first, deltaR.second / tan(theta), deltaR.second),
285  std::make_shared<TText>(deltaR.first / tan(theta), deltaR.first, str(boost::format("%2.1f") % eta).c_str())));
286  lines.back().second->SetTextFont(42);
287  lines.back().second->SetTextSize(text_size);
288  lines.back().second->SetTextAlign(23);
289  if (eta != 0) {
290  lines.push_back(std::make_pair<std::shared_ptr<TLine>, std::shared_ptr<TText> >(
291  std::make_shared<TLine>(
292  -deltaR.first / tan(theta), deltaR.first, -deltaR.second / tan(theta), deltaR.second),
293  std::make_shared<TText>(
294  -deltaR.first / tan(theta), deltaR.first, str(boost::format("-%2.1f") % eta).c_str())));
295  lines.back().second->SetTextFont(42);
296  lines.back().second->SetTextSize(text_size);
297  lines.back().second->SetTextAlign(23);
298  }
299  }
300  }
301  return lines;
302 }
303 
305  const double scale = 10.;
306  std::vector<TText *> nukem_text;
307  static int markerStyles[10] = {kFullCircle,
308  kFullSquare,
309  kFullTriangleUp,
310  kFullTriangleDown,
311  kOpenCircle,
312  kOpenSquare,
313  kOpenTriangleUp,
314  kOpenDiamond,
315  kOpenCross,
316  kFullStar};
317 
319  setup.get<IdealGeometryRecord>().get(hDdd);
320 
321  for (auto n : m_group_names) {
322  m_groups.push_back(new MaterialAccountingGroup(n, *hDdd));
323  };
324 
325  std::unique_ptr<TCanvas> canvas(
326  new TCanvas("Grouping_rz", "Grouping - RZ view", (int)(600 * scale * 1.25), (int)(120 * scale * 1.50)));
327  canvas->GetFrame()->SetFillColor(kWhite);
328  gStyle->SetOptStat(0);
329 
330  unsigned int color_index = 1;
331  // Setup the legend
332  std::unique_ptr<TLegend> leg(new TLegend(0.1, 0.1, 0.23, 0.34));
333  leg->SetHeader("Tracker Material Grouping");
334  leg->SetTextFont(42);
335  leg->SetTextSize(0.008);
336  leg->SetNColumns(3);
337  std::unique_ptr<TProfile2D> radlen(
338  new TProfile2D("OverallRadLen", "OverallRadLen", 600., -300., 300, 120., 0., 120.));
339  std::unique_ptr<TProfile2D> eneloss(
340  new TProfile2D("OverallEnergyLoss", "OverallEnergyLoss", 600., -300., 300, 120., 0., 120.));
341  std::unique_ptr<TProfile2D> radlen_diff(
342  new TProfile2D("OverallDifferencesRadLen", "OverallDifferencesRadLen", 600., -300., 300, 120., 0., 120.));
343  std::unique_ptr<TProfile2D> eneloss_diff(
344  new TProfile2D("OverallDifferencesEnergyLoss", "OverallDifferencesEnergyLoss", 600., -300., 300, 120., 0., 120.));
345 
346  for (auto g : m_groups) {
347  m_plots.push_back(
348  new TH2F(g->name().c_str(), g->name().c_str(), 6000., -300., 300, 1200., 0., 120.)); // 10x10 points per cm2
349  TH2F &current = *m_plots.back();
350  current.SetMarkerColor(m_color[color_index]);
351  current.SetMarkerStyle(markerStyles[color_index % 10]);
352  current.SetMarkerSize(0.8);
353  current.SetLineWidth(1);
354  for (auto element : g->elements()) {
355  current.Fill(element.z(), element.perp());
356  radlen->Fill(element.z(), element.perp(), m_values[g->name()].first);
357  eneloss->Fill(element.z(), element.perp(), m_values[g->name()].second);
358  radlen_diff->Fill(element.z(), element.perp(), m_diff[g->name()].first);
359  eneloss_diff->Fill(element.z(), element.perp(), m_diff[g->name()].second);
360  }
361 
362  if (color_index == 1)
363  current.Draw();
364  else
365  current.Draw("SAME");
366 
367  leg->AddEntry(&current, g->name().c_str(), "lp")->SetTextColor(m_color[color_index]);
368  color_index++;
369 
370  // Loop over the same chromatic scale in case the number of
371  // allocated colors is not big enough.
372  color_index = color_index % m_color.size();
373  }
374  leg->Draw();
375  canvas->SaveAs("Grouping.png");
376 
377  std::vector<std::pair<std::shared_ptr<TLine>, std::shared_ptr<TText> > > lines = overlayEtaReferences();
378 
379  canvas->Clear();
380  radlen->SetMinimum(0);
381  radlen->SetMaximum(0.25);
382  radlen->Draw("COLZ");
383  for (auto line : lines) {
384  line.first->SetLineWidth(5);
385  line.first->Draw();
386  line.second->Draw();
387  }
388  canvas->SaveAs("RadLenValues.png");
389 
390  canvas->Clear();
391  eneloss->SetMinimum(0.00001);
392  eneloss->SetMaximum(0.0005);
393  eneloss->Draw("COLZ");
394  for (auto line : lines) {
395  line.first->SetLineWidth(5);
396  line.first->Draw();
397  line.second->Draw();
398  }
399  canvas->SaveAs("EnergyLossValues.png");
400 
401  canvas->Clear();
402  gStyle->SetPalette(m_gradient.size(), &m_gradient.front());
403  gStyle->SetNumberContours(m_gradient.size());
404  radlen_diff->SetMinimum(-100);
405  radlen_diff->SetMaximum(100);
406  radlen_diff->Draw("COLZ");
407  for (auto line : lines) {
408  line.first->SetLineWidth(5);
409  line.first->Draw();
410  line.second->Draw();
411  }
412  canvas->SaveAs("RadLenChanges.png");
413 
414  canvas->Clear();
415  eneloss_diff->SetMinimum(-100);
416  eneloss_diff->SetMaximum(100);
417  eneloss_diff->Draw("COLZ");
418  for (auto line : lines) {
419  line.first->SetLineWidth(5);
420  line.first->Draw();
421  line.second->Draw();
422  }
423  canvas->SaveAs("EnergyLossChanges.png");
424 
425  for (auto g : nukem_text)
426  delete g;
427 }
428 
431  setup.get<IdealGeometryRecord>().get(hDdd);
432 
433  DDSpecificsHasNamedValueFilter filter{"TrackingMaterialGroup"};
434  DDFilteredView fv(*hDdd, filter);
435 
436  while (fv.next()) {
437  // print the group name and full hierarchy of all items
438  std::cout << dddGetString("TrackingMaterialGroup", fv) << '\t';
439  m_group_names.insert(dddGetString("TrackingMaterialGroup", fv));
440 
441  // start from 2 to skip the leading /OCMS[0]/CMSE[1] part
442  const DDGeoHistory &history = fv.geoHistory();
443  std::cout << '/';
444  for (unsigned int h = 2; h < history.size(); ++h)
445  std::cout << '/' << history[h].logicalPart().name().name() << '[' << history[h].copyno() << ']';
446 
447  // DD3Vector and DDTranslation are the same type as math::XYZVector
448  math::XYZVector position = fv.translation() / 10.; // mm -> cm
449  std::cout << "\t(" << position.x() << ", " << position.y() << ", " << position.z() << ") "
450  << "[rho] " << position.Rho() << std::endl;
451  };
452  std::cout << std::endl;
453 
454  if (m_saveSummaryPlot)
456 }
457 
459 
460 //-------------------------------------------------------------------------
461 // define as a plugin
svgfig.canvas
def canvas(*sub, **attr)
Definition: svgfig.py:482
ListGroups::fillMaterialDifferences
void fillMaterialDifferences()
Definition: ListGroupsMaterialDifference.h:6
EDAnalyzer.h
dddGetString
static std::string dddGetString(const std::string &s, DDFilteredView const &view)
Definition: ListGroups.cc:69
mps_fire.i
i
Definition: mps_fire.py:355
DDGeoHistory
std::vector< DDExpandedNode > DDGeoHistory
Geometrical 'path' of the current node up to the root-node.
Definition: DDExpandedNode.h:82
ListGroups::m_diff
std::map< std::string, std::pair< float, float > > m_diff
Definition: ListGroups.cc:107
ESTransientHandle.h
MessageLogger.h
pfMETsysShiftCorrections_cfi.parameter
parameter
Definition: pfMETsysShiftCorrections_cfi.py:118
dqmiodumpmetadata.n
n
Definition: dqmiodumpmetadata.py:28
types.h
MaterialAccountingGroup.h
hitfit::delta_r
double delta_r(const Fourvec &a, const Fourvec &b)
Find the distance between two four-vectors in the two-dimensional space .
Definition: fourvec.cc:238
h
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
Definition: L1TUtmAlgorithmRcd.h:4
gather_cfg.cout
cout
Definition: gather_cfg.py:144
diffTwoXMLs.g1
g1
Definition: diffTwoXMLs.py:52
ListGroups::m_saveSummaryPlot
bool m_saveSummaryPlot
Definition: ListGroups.cc:91
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
edm::one::EDAnalyzer
Definition: EDAnalyzer.h:30
b2
static constexpr float b2
Definition: L1EGammaCrystalsEmulatorProducer.cc:83
ListGroups::fillGradient
void fillGradient()
Definition: ListGroups.cc:132
plotFactory.plot
plot
Definition: plotFactory.py:109
DDCompactView.h
ListGroups::m_gradient
std::vector< int > m_gradient
Definition: ListGroups.cc:96
singleTopDQM_cfi.setup
setup
Definition: singleTopDQM_cfi.py:37
b1
static constexpr float b1
Definition: L1EGammaCrystalsEmulatorProducer.cc:83
MakerMacros.h
alignCSCRings.s
s
Definition: alignCSCRings.py:92
ListGroups::m_group_names
std::set< std::string > m_group_names
Definition: ListGroups.cc:93
parameter
Definition: vlib.h:168
DDFilteredView.h
ListGroups::ListGroups
ListGroups(const edm::ParameterSet &)
Definition: ListGroups.cc:111
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
ListGroups::m_groups
std::vector< MaterialAccountingGroup * > m_groups
Definition: ListGroups.cc:94
PVValHelper::eta
Definition: PVValidationHelpers.h:69
dqm-mbProfile.format
format
Definition: dqm-mbProfile.py:16
DDFilteredView::next
bool next()
set current node to the next node in the filtered tree
Definition: DDFilteredView.cc:67
TrackingMaterialPlotter.h
str
#define str(s)
Definition: TestProcessor.cc:48
ListGroups::m_values
std::map< std::string, std::pair< float, float > > m_values
Definition: ListGroups.cc:108
DDfetch
bool DDfetch(const DDsvalues_type *, DDValue &)
helper for retrieving DDValues from DDsvalues_type *.
Definition: DDsvalues.cc:79
theta
Geom::Theta< T > theta() const
Definition: Basic3DVectorLD.h:150
h
ALCARECOTkAlBeamHalo_cff.filter
filter
Definition: ALCARECOTkAlBeamHalo_cff.py:27
PbPb_ZMuSkimMuonDPG_cff.deltaR
deltaR
Definition: PbPb_ZMuSkimMuonDPG_cff.py:63
ListGroups::~ListGroups
~ListGroups() override
Definition: ListGroups.cc:121
DDFilteredView::specificsV
void specificsV(std::vector< const DDsvalues_type * > &result) const
User specific data attached to the current node.
Definition: DDFilteredView.cc:38
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
ListGroupsMaterialDifference.h
Scenarios_cff.scale
scale
Definition: Scenarios_cff.py:2186
edm::ParameterSet
Definition: ParameterSet.h:36
groupFilesInBlocks.lines
lines
Definition: groupFilesInBlocks.py:95
Event.h
ListGroups::endJob
void endJob() override
Definition: ListGroups.cc:458
MaterialAccountingGroup
Definition: MaterialAccountingGroup.h:19
math::XYZVector
XYZVectorD XYZVector
spatial vector with cartesian internal representation
Definition: Vector3D.h:31
diffTwoXMLs.r2
r2
Definition: diffTwoXMLs.py:73
position
static int position[264][3]
Definition: ReadPGInfo.cc:289
DDMaterial.h
funct::tan
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
ModuleDef.h
DDSpecificsHasNamedValueFilter
Definition: DDFilter.h:60
value
Definition: value.py:1
IdealGeometryRecord.h
dddGetStringRaw
static bool dddGetStringRaw(const DDFilteredView &view, const std::string &name, std::string &value)
Definition: ListGroups.cc:40
DDFilteredView::geoHistory
const DDGeoHistory & geoHistory() const
The list of ancestors up to the root-node of the current node.
Definition: DDFilteredView.cc:30
edm::EventSetup
Definition: EventSetup.h:57
get
#define get
diffTwoXMLs.g2
g2
Definition: diffTwoXMLs.py:71
edm::ESTransientHandle
Definition: ESTransientHandle.h:41
InputTag.h
ListGroups::analyze
void analyze(const edm::Event &, const edm::EventSetup &) override
Definition: ListGroups.cc:429
ListGroups::fillColor
void fillColor()
Definition: ListGroups.cc:166
ListGroups
Definition: ListGroups.cc:77
DetId.h
DDValue
Definition: DDValue.h:21
diffTwoXMLs.r1
r1
Definition: diffTwoXMLs.py:53
DDFilteredView::translation
const DDTranslation & translation() const
The absolute translation of the current node.
Definition: DDFilteredView.cc:26
relativeConstraints.value
value
Definition: relativeConstraints.py:53
Exception
Definition: hltDiff.cc:246
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
EventSetup.h
ListGroups::beginJob
void beginJob() override
Definition: ListGroups.cc:84
AlignmentPI::index
index
Definition: AlignmentPayloadInspectorHelper.h:46
ListGroups::m_plots
std::vector< TH2F * > m_plots
Definition: ListGroups.cc:92
customisers.steps
steps
Definition: customisers.py:41
DDFilteredView
Definition: DDFilteredView.h:20
ListGroups::m_color
std::vector< unsigned int > m_color
Definition: ListGroups.cc:95
mps_fire.result
result
Definition: mps_fire.py:303
ListGroups::produceAndSaveSummaryPlot
void produceAndSaveSummaryPlot(const edm::EventSetup &)
Definition: ListGroups.cc:304
ParameterSet.h
JetChargeProducer_cfi.exp
exp
Definition: JetChargeProducer_cfi.py:6
edm::Event
Definition: Event.h:73
mps_splice.line
line
Definition: mps_splice.py:76
Vector3D.h
cuy.ii
ii
Definition: cuy.py:590
IdealGeometryRecord
Definition: IdealGeometryRecord.h:27
ListGroups::overlayEtaReferences
std::vector< std::pair< std::shared_ptr< TLine >, std::shared_ptr< TText > > > overlayEtaReferences()
Definition: ListGroups.cc:258
g
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
Definition: Activities.doc:4