CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
DD4hep_ListGroups Class Reference
Inheritance diagram for DD4hep_ListGroups:
edm::one::EDAnalyzer<> edm::one::EDAnalyzerBase edm::EDConsumerBase

Public Member Functions

 DD4hep_ListGroups (const edm::ParameterSet &iConfig)
 
 ~DD4hep_ListGroups () override
 
- Public Member Functions inherited from edm::one::EDAnalyzer<>
 EDAnalyzer ()=default
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
- Public Member Functions inherited from edm::one::EDAnalyzerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDAnalyzerBase () override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase &&)=default
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 
void beginJob () override
 
void endJob () override
 
void fillColor ()
 
void fillGradient ()
 
void fillMaterialDifferences ()
 
std::vector< std::pair< std::shared_ptr< TLine >, std::shared_ptr< TText > > > overlayEtaReferences ()
 
void produceAndSaveSummaryPlot (cms::DDCompactView cpv)
 

Private Attributes

std::vector< unsigned int > m_color
 
std::map< std::string, std::pair< float, float > > m_diff
 
std::vector< int > m_gradient
 
std::set< std::string_view > m_group_names
 
std::vector< DD4hep_MaterialAccountingGroup * > m_groups
 
std::vector< TH2F * > m_plots
 
bool m_saveSummaryPlot
 
const edm::ESInputTag m_tag
 
std::map< std::string, std::pair< float, float > > m_values
 

Additional Inherited Members

- Public Types inherited from edm::one::EDAnalyzerBase
typedef EDAnalyzerBase ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::one::EDAnalyzerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::EDConsumerBase
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 

Detailed Description

Definition at line 42 of file DD4hep_ListGroups.cc.

Constructor & Destructor Documentation

◆ DD4hep_ListGroups()

DD4hep_ListGroups::DD4hep_ListGroups ( const edm::ParameterSet iConfig)

Definition at line 70 of file DD4hep_ListGroups.cc.

71  : m_tag(iConfig.getParameter<edm::ESInputTag>("DDDetector")) {
72  m_saveSummaryPlot = iConfig.getUntrackedParameter<bool>("SaveSummaryPlot");
73  m_plots.clear();
74  m_groups.clear();
75  TColor::InitializeColors();
76  fillColor();
78  fillGradient();
79 }

References fillColor(), fillGradient(), fillMaterialDifferences(), edm::ParameterSet::getUntrackedParameter(), m_groups, m_plots, and m_saveSummaryPlot.

◆ ~DD4hep_ListGroups()

DD4hep_ListGroups::~DD4hep_ListGroups ( )
override

Definition at line 81 of file DD4hep_ListGroups.cc.

81 {}

Member Function Documentation

◆ analyze()

void DD4hep_ListGroups::analyze ( const edm::Event evt,
const edm::EventSetup setup 
)
overrideprivatevirtual

Implements edm::one::EDAnalyzerBase.

Definition at line 372 of file DD4hep_ListGroups.cc.

372  {
374  setup.get<IdealGeometryRecord>().get(m_tag, cpv);
375  cms::DDFilter filter("TrackingMaterialGroup", "");
376  cms::DDFilteredView fv(*cpv, filter);
377 
378  for (const auto &t : fv.specpars()) {
379  m_group_names.insert(t->strValue("TrackingMaterialGroup"));
380  }
381 
382  for (const auto &i : m_group_names) {
383  cms::DDFilter filter1("TrackingMaterialGroup", {i.data(), i.size()});
384  cms::DDFilteredView fv1(*cpv, filter1);
385  bool firstChild = fv1.firstChild();
386 
387  for (const auto j : fv1.specpars()) {
388  for (const auto &k : j->paths) {
389  if (firstChild) {
390  std::vector<std::vector<cms::Node *>> children = fv1.children(k);
391  for (auto const &path : children) {
392  for (auto const &node : path) {
393  edm::LogVerbatim("TrackingMaterialGroup") << node->GetName() << "/";
394  }
395  cms::Translation trans = fv1.translation(path);
396  edm::LogVerbatim("TrackingMaterialGroup")
397  << "(" << trans.x() << ", " << trans.y() << ", " << trans.z() << ")\n";
398  }
399  }
400  }
401  }
402  }
403 
404  if (m_saveSummaryPlot)
406 }

References class-composition::children, ALCARECOTkAlBeamHalo_cff::filter, get, mps_fire::i, dqmiolumiharvest::j, dqmdumpme::k, m_group_names, m_saveSummaryPlot, m_tag, castor_dqm_sourceclient_file_cfg::path, produceAndSaveSummaryPlot(), singleTopDQM_cfi::setup, cms::DDFilteredView::specpars(), and OrderedSet::t.

◆ beginJob()

void DD4hep_ListGroups::beginJob ( void  )
inlineoverrideprivatevirtual

Reimplemented from edm::one::EDAnalyzerBase.

Definition at line 49 of file DD4hep_ListGroups.cc.

49 {}

◆ endJob()

void DD4hep_ListGroups::endJob ( void  )
overrideprivatevirtual

Reimplemented from edm::one::EDAnalyzerBase.

Definition at line 408 of file DD4hep_ListGroups.cc.

408 {}

◆ fillColor()

void DD4hep_ListGroups::fillColor ( void  )
private

Definition at line 200 of file DD4hep_ListGroups.cc.

200  {
201  // With the introduction of the support for PhaseI and PhaseII detectors it
202  // became quite difficult to maintain a list of colors that is in sync with
203  // the real number of grouping used in the different scenarios. We therefore
204  // define some reasonable set and loop over it in case the number of grouping
205  // is larger than the number of colors.
206 
207  m_color.push_back(kBlack); // unassigned
208 
209  m_color.push_back(kAzure); // PixelBarrelLayer0_Z0
210  m_color.push_back(kAzure - 1); // PixelBarrelLayer0_Z20
211  m_color.push_back(kAzure + 1); // Layer1_Z0
212  m_color.push_back(kAzure + 2); // Layer1_Z20
213 
214  m_color.push_back(kGreen); // EndCapDisk1_R0
215  m_color.push_back(kGreen + 2); // EndcapDisk1_R11
216  m_color.push_back(kGreen + 4); // EndcapDisk1_R7
217  m_color.push_back(kSpring + 9); // EndcapDisk2_R0
218  m_color.push_back(kSpring + 4); // EndcapDisk2_R7
219  m_color.push_back(kSpring); // EndcapDisk2_R7
220 
221  m_color.push_back(kRed); // TECDisk0_R20
222  m_color.push_back(kRed + 2); // TECDisk0_R40
223  m_color.push_back(kRed - 7); // TECDisk0_R50
224  m_color.push_back(kRed - 5); // TECDisk0_R60
225  m_color.push_back(kRed - 10); // TECDisk0_R90
226  m_color.push_back(kRed - 1); // TECDisk1_Inner
227  m_color.push_back(kRed - 2); // TECDisk1_Outer
228  m_color.push_back(kRed - 3); // TECDisk1_R20
229  m_color.push_back(kPink - 2); // TECDisk2_Inner
230  m_color.push_back(kPink - 3); // TECDisk2_Outer
231  m_color.push_back(kPink - 4); // TECDisk2_R20
232  m_color.push_back(kPink + 9); // TECDisk3_Inner
233  m_color.push_back(kPink + 8); // TECDisk3_Outer
234  m_color.push_back(kPink + 7); // TECDisk3
235  m_color.push_back(kMagenta - 2); // TECDisk4_Inner
236  m_color.push_back(kMagenta - 3); // TECDisk4_Outer
237  m_color.push_back(kMagenta - 4); // TECDisk4_R33
238  m_color.push_back(kMagenta - 5); // TECDisk5_Inner
239  m_color.push_back(kMagenta - 6); // TECDisk5_Outer
240  m_color.push_back(kMagenta - 7); // TECDisk5_R33
241  m_color.push_back(kRed); // TECDisk6
242  m_color.push_back(kMagenta - 9); // TECDisk7_R40
243  m_color.push_back(kViolet); // TECDisk8
244 
245  m_color.push_back(kOrange + 9); // TIBLayer0_Z0
246  m_color.push_back(kOrange + 7); // TIBLayer0_Z20
247  m_color.push_back(kOrange + 5); // TIBLayer0_Z40
248  m_color.push_back(kOrange - 2); // TIBLayer1_Z0
249  m_color.push_back(kOrange - 3); // TIBLayer1_Z30
250  m_color.push_back(kOrange - 6); // TIBLayer1_Z60
251  m_color.push_back(kOrange + 4); // TIBLayer2_Z0
252  m_color.push_back(kOrange - 7); // TIBLayer2_Z40
253  m_color.push_back(kOrange); // TIBLayer3_Z0
254  m_color.push_back(kOrange + 10); // TIBLayer3_Z50
255 
256  m_color.push_back(kViolet + 10); // TIDDisk1_R0
257  m_color.push_back(kViolet + 6); // TIDDisk1_R30
258  m_color.push_back(kViolet + 3); // TIDDisk1_R40
259  m_color.push_back(kViolet - 7); // TIDDisk2_R25
260  m_color.push_back(kViolet - 1); // TIDDisk2_R30
261  m_color.push_back(kViolet + 9); // TIDDisk2_R40
262  m_color.push_back(kViolet - 5); // TIDDisk3_R24
263  m_color.push_back(kViolet - 3); // TIDDisk3_R30
264  m_color.push_back(kViolet); // TIDDisk3_R40
265 
266  m_color.push_back(kAzure); // TOBLayer0_Z0
267  m_color.push_back(kAzure + 8); // TOBLayer0_Z20
268  m_color.push_back(kAzure + 2); // TOBLayer0_Z70
269  m_color.push_back(kAzure + 4); // TOBLayer0_Z80
270  m_color.push_back(kCyan + 1); // TOBLayer1_Z0
271  m_color.push_back(kCyan - 9); // TOBLayer1_Z20
272  m_color.push_back(kCyan + 3); // TOBLayer1_Z80
273  m_color.push_back(kCyan + 4); // TOBLayer1_Z90
274  m_color.push_back(kAzure); // TOBLayer2_Z0
275  m_color.push_back(kAzure + 8); // TOBLayer2_Z25
276  m_color.push_back(kAzure + 2); // TOBLayer2_Z80
277  m_color.push_back(kAzure + 5); // TOBLayer2_Z90
278  m_color.push_back(kCyan + 1); // TOBLayer3_Z0
279  m_color.push_back(kCyan - 9); // TOBLayer3_Z25
280  m_color.push_back(kCyan + 3); // TOBLayer3_Z80
281  m_color.push_back(kCyan + 4); // TOBLayer3_Z90
282  m_color.push_back(kAzure); // TOBLayer4_Z0
283  m_color.push_back(kAzure + 8); // TOBLayer4_Z25
284  m_color.push_back(kAzure + 2); // TOBLayer4_Z80
285  m_color.push_back(kAzure + 5); // TOBLayer4_Z90
286  m_color.push_back(kCyan + 1); // TOBLayer5_Z0
287  m_color.push_back(kCyan - 9); // TOBLayer5_Z25
288  m_color.push_back(kCyan + 3); // TOBLayer5_Z80
289  m_color.push_back(kCyan + 4); // TOBLayer5_Z90
290 }

References m_color.

Referenced by DD4hep_ListGroups().

◆ fillGradient()

void DD4hep_ListGroups::fillGradient ( )
private

Definition at line 292 of file DD4hep_ListGroups.cc.

292  {
293  m_gradient.reserve(200);
294  unsigned int steps = 100;
295  // if no index was given, find the highest used one and start from that plus one
296  unsigned int index = ((TObjArray *)gROOT->GetListOfColors())->GetLast() + 1;
297 
298  float r1, g1, b1, r2, g2, b2;
299  static_cast<TColor *>(gROOT->GetListOfColors()->At(kBlue + 1))->GetRGB(r1, g1, b1);
300  static_cast<TColor *>(gROOT->GetListOfColors()->At(kAzure + 10))->GetRGB(r2, g2, b2);
301  float delta_r = (r2 - r1) / (steps - 1);
302  float delta_g = (g2 - g1) / (steps - 1);
303  float delta_b = (b2 - b1) / (steps - 1);
304 
305  m_gradient.push_back(kBlue + 4); // Underflow lowest bin
306  unsigned int ii = 0;
307  for (unsigned int i = 0; i < steps; ++i, ++ii) {
308  new TColor(static_cast<Int_t>(index + ii), r1 + delta_r * i, g1 + delta_g * i, b1 + delta_b * i);
309  m_gradient.push_back(index + ii);
310  }
311 
312  m_gradient.push_back(kWhite); // 0 level perfectly white
313 
314  static_cast<TColor *>(gROOT->GetListOfColors()->At(kOrange))->GetRGB(r1, g1, b1);
315  static_cast<TColor *>(gROOT->GetListOfColors()->At(kOrange + 7))->GetRGB(r2, g2, b2);
316  delta_r = (r2 - r1) / (steps - 1);
317  delta_g = (g2 - g1) / (steps - 1);
318  delta_b = (b2 - b1) / (steps - 1);
319  for (unsigned int i = 0; i < steps; ++i, ++ii) {
320  new TColor(static_cast<Int_t>(index + ii), r1 + delta_r * i, g1 + delta_g * i, b1 + delta_b * i);
321  m_gradient.push_back(index + ii);
322  }
323  m_gradient.push_back(kRed); // Overflow highest bin
324 }

References b1, b2, hitfit::delta_r(), diffTwoXMLs::g1, diffTwoXMLs::g2, mps_fire::i, cuy::ii, m_gradient, diffTwoXMLs::r1, diffTwoXMLs::r2, and customisers::steps.

Referenced by DD4hep_ListGroups().

◆ fillMaterialDifferences()

void DD4hep_ListGroups::fillMaterialDifferences ( )
private

Definition at line 6 of file DD4hep_ListGroupsMaterialDifference.h.

6 {}

Referenced by DD4hep_ListGroups().

◆ overlayEtaReferences()

std::vector< std::pair< std::shared_ptr< TLine >, std::shared_ptr< TText > > > DD4hep_ListGroups::overlayEtaReferences ( )
private

Definition at line 326 of file DD4hep_ListGroups.cc.

326  {
327  std::vector<std::pair<std::shared_ptr<TLine>, std::shared_ptr<TText>>> lines;
328 
329  lines.reserve(40);
330  std::pair<float, float> deltaZ(293, 298);
331  std::pair<float, float> deltaR(115, 118);
332  float text_size = 0.033;
333 
334  for (float eta = 0.; eta <= 3.8; eta += 0.2) {
335  float theta = 2. * atan(exp(-eta));
336  if (eta >= 1.8) {
337  lines.push_back(std::make_pair<std::shared_ptr<TLine>, std::shared_ptr<TText>>(
338  std::make_shared<TLine>(deltaZ.first, deltaZ.first * tan(theta), deltaZ.second, deltaZ.second * tan(theta)),
339  std::make_shared<TText>(deltaZ.first, deltaZ.first * tan(theta), str(boost::format("%2.1f") % eta).c_str())));
340  lines.back().second->SetTextFont(42);
341  lines.back().second->SetTextSize(text_size);
342  lines.back().second->SetTextAlign(33);
343  lines.push_back(std::make_pair<std::shared_ptr<TLine>, std::shared_ptr<TText>>(
344  std::make_shared<TLine>(-deltaZ.first, deltaZ.first * tan(theta), -deltaZ.second, deltaZ.second * tan(theta)),
345  std::make_shared<TText>(
346  -deltaZ.first, deltaZ.first * tan(theta), str(boost::format("-%2.1f") % eta).c_str())));
347  lines.back().second->SetTextFont(42);
348  lines.back().second->SetTextSize(text_size);
349  lines.back().second->SetTextAlign(13);
350  } else {
351  lines.push_back(std::make_pair<std::shared_ptr<TLine>, std::shared_ptr<TText>>(
352  std::make_shared<TLine>(deltaR.first / tan(theta), deltaR.first, deltaR.second / tan(theta), deltaR.second),
353  std::make_shared<TText>(deltaR.first / tan(theta), deltaR.first, str(boost::format("%2.1f") % eta).c_str())));
354  lines.back().second->SetTextFont(42);
355  lines.back().second->SetTextSize(text_size);
356  lines.back().second->SetTextAlign(23);
357  if (eta != 0) {
358  lines.push_back(std::make_pair<std::shared_ptr<TLine>, std::shared_ptr<TText>>(
359  std::make_shared<TLine>(
360  -deltaR.first / tan(theta), deltaR.first, -deltaR.second / tan(theta), deltaR.second),
361  std::make_shared<TText>(
362  -deltaR.first / tan(theta), deltaR.first, str(boost::format("-%2.1f") % eta).c_str())));
363  lines.back().second->SetTextFont(42);
364  lines.back().second->SetTextSize(text_size);
365  lines.back().second->SetTextAlign(23);
366  }
367  }
368  }
369  return lines;
370 }

References PbPb_ZMuSkimMuonDPG_cff::deltaR, PVValHelper::eta, JetChargeProducer_cfi::exp, dqm-mbProfile::format, groupFilesInBlocks::lines, str, funct::tan(), and theta().

Referenced by produceAndSaveSummaryPlot().

◆ produceAndSaveSummaryPlot()

void DD4hep_ListGroups::produceAndSaveSummaryPlot ( cms::DDCompactView  cpv)
private

Definition at line 83 of file DD4hep_ListGroups.cc.

83  {
84  const double scale = 10.;
85 
86  static int markerStyles[10] = {kFullCircle,
87  kFullSquare,
88  kFullTriangleUp,
89  kFullTriangleDown,
90  kOpenCircle,
91  kOpenSquare,
92  kOpenTriangleUp,
93  kOpenDiamond,
94  kOpenCross,
95  kFullStar};
96 
97  for (auto n : m_group_names) {
98  m_groups.push_back(new DD4hep_MaterialAccountingGroup(n.data(), cpv));
99  }
100 
101  std::unique_ptr<TCanvas> canvas(
102  new TCanvas("Grouping_rz", "Grouping - RZ view", (int)(600 * scale * 1.25), (int)(120 * scale * 1.50)));
103  canvas->GetFrame()->SetFillColor(kWhite);
104  gStyle->SetOptStat(0);
105 
106  unsigned int color_index = 1;
107 
108  std::unique_ptr<TLegend> leg(new TLegend(0.1, 0.1, 0.23, 0.34));
109  leg->SetHeader("Tracker Material Grouping");
110  leg->SetTextFont(42);
111  leg->SetTextSize(0.008);
112  leg->SetNColumns(3);
113  std::unique_ptr<TProfile2D> radlen(
114  new TProfile2D("OverallRadLen", "OverallRadLen", 600., -300., 300, 120., 0., 120.));
115  std::unique_ptr<TProfile2D> eneloss(
116  new TProfile2D("OverallEnergyLoss", "OverallEnergyLoss", 600., -300., 300, 120., 0., 120.));
117  std::unique_ptr<TProfile2D> radlen_diff(
118  new TProfile2D("OverallDifferencesRadLen", "OverallDifferencesRadLen", 600., -300., 300, 120., 0., 120.));
119  std::unique_ptr<TProfile2D> eneloss_diff(
120  new TProfile2D("OverallDifferencesEnergyLoss", "OverallDifferencesEnergyLoss", 600., -300., 300, 120., 0., 120.));
121 
122  for (auto g : m_groups) {
123  m_plots.push_back(
124  new TH2F(g->name().c_str(), g->name().c_str(), 6000., -300., 300, 1200., 0., 120.)); // 10x10 points per cm2
125  TH2F &current = *m_plots.back();
126  current.SetMarkerColor(m_color[color_index]);
127  current.SetMarkerStyle(markerStyles[color_index % 10]);
128  current.SetMarkerSize(0.8);
129  current.SetLineWidth(1);
130  for (auto element : g->elements()) {
131  current.Fill(element.z(), element.perp());
132  radlen->Fill(element.z(), element.perp(), m_values[g->name()].first);
133  eneloss->Fill(element.z(), element.perp(), m_values[g->name()].second);
134  radlen_diff->Fill(element.z(), element.perp(), m_diff[g->name()].first);
135  eneloss_diff->Fill(element.z(), element.perp(), m_diff[g->name()].second);
136  }
137 
138  if (color_index == 1)
139  current.Draw();
140  else
141  current.Draw("SAME");
142 
143  leg->AddEntry(&current, g->name().c_str(), "lp")->SetTextColor(m_color[color_index]);
144  color_index++;
145 
146  color_index = color_index % m_color.size();
147  }
148  leg->Draw();
149  canvas->SaveAs("Grouping.png");
150 
151  std::vector<std::pair<std::shared_ptr<TLine>, std::shared_ptr<TText>>> lines = overlayEtaReferences();
152 
153  canvas->Clear();
154  radlen->SetMinimum(0);
155  radlen->SetMaximum(0.25);
156  radlen->Draw("COLZ");
157  for (auto line : lines) {
158  line.first->SetLineWidth(5);
159  line.first->Draw();
160  line.second->Draw();
161  }
162  canvas->SaveAs("RadLenValues.png");
163 
164  canvas->Clear();
165  eneloss->SetMinimum(0.00001);
166  eneloss->SetMaximum(0.0005);
167  eneloss->Draw("COLZ");
168  for (auto line : lines) {
169  line.first->SetLineWidth(5);
170  line.first->Draw();
171  line.second->Draw();
172  }
173  canvas->SaveAs("EnergyLossValues.png");
174 
175  canvas->Clear();
176  gStyle->SetPalette(m_gradient.size(), &m_gradient.front());
177  gStyle->SetNumberContours(m_gradient.size());
178  radlen_diff->SetMinimum(-100);
179  radlen_diff->SetMaximum(100);
180  radlen_diff->Draw("COLZ");
181  for (auto line : lines) {
182  line.first->SetLineWidth(5);
183  line.first->Draw();
184  line.second->Draw();
185  }
186  canvas->SaveAs("RadLenChanges.png");
187 
188  canvas->Clear();
189  eneloss_diff->SetMinimum(-100);
190  eneloss_diff->SetMaximum(100);
191  eneloss_diff->Draw("COLZ");
192  for (auto line : lines) {
193  line.first->SetLineWidth(5);
194  line.first->Draw();
195  line.second->Draw();
196  }
197  canvas->SaveAs("EnergyLossChanges.png");
198 }

References svgfig::canvas(), g, mps_splice::line, groupFilesInBlocks::lines, m_color, m_diff, m_gradient, m_group_names, m_groups, m_plots, m_values, dqmiodumpmetadata::n, overlayEtaReferences(), and Scenarios_cff::scale.

Referenced by analyze().

Member Data Documentation

◆ m_color

std::vector<unsigned int> DD4hep_ListGroups::m_color
private

Definition at line 56 of file DD4hep_ListGroups.cc.

Referenced by fillColor(), and produceAndSaveSummaryPlot().

◆ m_diff

std::map<std::string, std::pair<float, float> > DD4hep_ListGroups::m_diff
private

Definition at line 64 of file DD4hep_ListGroups.cc.

Referenced by produceAndSaveSummaryPlot().

◆ m_gradient

std::vector<int> DD4hep_ListGroups::m_gradient
private

Definition at line 57 of file DD4hep_ListGroups.cc.

Referenced by fillGradient(), and produceAndSaveSummaryPlot().

◆ m_group_names

std::set<std::string_view> DD4hep_ListGroups::m_group_names
private

Definition at line 55 of file DD4hep_ListGroups.cc.

Referenced by analyze(), and produceAndSaveSummaryPlot().

◆ m_groups

std::vector<DD4hep_MaterialAccountingGroup *> DD4hep_ListGroups::m_groups
private

Definition at line 58 of file DD4hep_ListGroups.cc.

Referenced by DD4hep_ListGroups(), and produceAndSaveSummaryPlot().

◆ m_plots

std::vector<TH2F *> DD4hep_ListGroups::m_plots
private

Definition at line 54 of file DD4hep_ListGroups.cc.

Referenced by DD4hep_ListGroups(), and produceAndSaveSummaryPlot().

◆ m_saveSummaryPlot

bool DD4hep_ListGroups::m_saveSummaryPlot
private

Definition at line 53 of file DD4hep_ListGroups.cc.

Referenced by analyze(), and DD4hep_ListGroups().

◆ m_tag

const edm::ESInputTag DD4hep_ListGroups::m_tag
private

Definition at line 51 of file DD4hep_ListGroups.cc.

Referenced by analyze().

◆ m_values

std::map<std::string, std::pair<float, float> > DD4hep_ListGroups::m_values
private

Definition at line 65 of file DD4hep_ListGroups.cc.

Referenced by produceAndSaveSummaryPlot().

svgfig.canvas
def canvas(*sub, **attr)
Definition: svgfig.py:482
DD4hep_ListGroups::produceAndSaveSummaryPlot
void produceAndSaveSummaryPlot(cms::DDCompactView cpv)
Definition: DD4hep_ListGroups.cc:83
mps_fire.i
i
Definition: mps_fire.py:355
edm::ESInputTag
Definition: ESInputTag.h:87
DD4hep_ListGroups::fillColor
void fillColor()
Definition: DD4hep_ListGroups.cc:200
dqmiodumpmetadata.n
n
Definition: dqmiodumpmetadata.py:28
DD4hep_ListGroups::overlayEtaReferences
std::vector< std::pair< std::shared_ptr< TLine >, std::shared_ptr< TText > > > overlayEtaReferences()
Definition: DD4hep_ListGroups.cc:326
class-composition.children
children
Definition: class-composition.py:88
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
DD4hep_ListGroups::fillMaterialDifferences
void fillMaterialDifferences()
Definition: DD4hep_ListGroupsMaterialDifference.h:6
diffTwoXMLs.g1
g1
Definition: diffTwoXMLs.py:52
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
cms::DDFilteredView
Definition: DDFilteredView.h:65
b2
static constexpr float b2
Definition: L1EGammaCrystalsEmulatorProducer.cc:82
DD4hep_ListGroups::m_saveSummaryPlot
bool m_saveSummaryPlot
Definition: DD4hep_ListGroups.cc:53
singleTopDQM_cfi.setup
setup
Definition: singleTopDQM_cfi.py:37
DD4hep_ListGroups::m_plots
std::vector< TH2F * > m_plots
Definition: DD4hep_ListGroups.cc:54
b1
static constexpr float b1
Definition: L1EGammaCrystalsEmulatorProducer.cc:82
DD4hep_MaterialAccountingGroup
Definition: DD4hep_MaterialAccountingGroup.h:23
cms::DDFilter
Definition: DDFilteredView.h:54
DD4hep_ListGroups::m_values
std::map< std::string, std::pair< float, float > > m_values
Definition: DD4hep_ListGroups.cc:65
PVValHelper::eta
Definition: PVValidationHelpers.h:69
dqm-mbProfile.format
format
Definition: dqm-mbProfile.py:16
DD4hep_ListGroups::m_color
std::vector< unsigned int > m_color
Definition: DD4hep_ListGroups.cc:56
DD4hep_ListGroups::fillGradient
void fillGradient()
Definition: DD4hep_ListGroups.cc:292
str
#define str(s)
Definition: TestProcessor.cc:48
theta
Geom::Theta< T > theta() const
Definition: Basic3DVectorLD.h:150
DD4hep_ListGroups::m_diff
std::map< std::string, std::pair< float, float > > m_diff
Definition: DD4hep_ListGroups.cc:64
DD4hep_ListGroups::m_gradient
std::vector< int > m_gradient
Definition: DD4hep_ListGroups.cc:57
dqmdumpme.k
k
Definition: dqmdumpme.py:60
OrderedSet.t
t
Definition: OrderedSet.py:90
ALCARECOTkAlBeamHalo_cff.filter
filter
Definition: ALCARECOTkAlBeamHalo_cff.py:27
PbPb_ZMuSkimMuonDPG_cff.deltaR
deltaR
Definition: PbPb_ZMuSkimMuonDPG_cff.py:63
Scenarios_cff.scale
scale
Definition: Scenarios_cff.py:2186
DD4hep_ListGroups::m_groups
std::vector< DD4hep_MaterialAccountingGroup * > m_groups
Definition: DD4hep_ListGroups.cc:58
groupFilesInBlocks.lines
lines
Definition: groupFilesInBlocks.py:95
DD4hep_ListGroups::m_group_names
std::set< std::string_view > m_group_names
Definition: DD4hep_ListGroups.cc:55
diffTwoXMLs.r2
r2
Definition: diffTwoXMLs.py:73
funct::tan
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
edm::LogVerbatim
Definition: MessageLogger.h:297
get
#define get
diffTwoXMLs.g2
g2
Definition: diffTwoXMLs.py:71
edm::ESTransientHandle
Definition: ESTransientHandle.h:41
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
diffTwoXMLs.r1
r1
Definition: diffTwoXMLs.py:53
AlignmentPI::index
index
Definition: AlignmentPayloadInspectorHelper.h:46
customisers.steps
steps
Definition: customisers.py:41
DD4hep_ListGroups::m_tag
const edm::ESInputTag m_tag
Definition: DD4hep_ListGroups.cc:51
castor_dqm_sourceclient_file_cfg.path
path
Definition: castor_dqm_sourceclient_file_cfg.py:37
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
JetChargeProducer_cfi.exp
exp
Definition: JetChargeProducer_cfi.py:6
mps_splice.line
line
Definition: mps_splice.py:76
cms::Translation
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > Translation
Definition: DDFilteredView.h:51
cuy.ii
ii
Definition: cuy.py:590
IdealGeometryRecord
Definition: IdealGeometryRecord.h:27
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