CMS 3D CMS Logo

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

Public Member Functions

 ListGroups (const edm::ParameterSet &)
 
 ~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 const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
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
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
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 (const edm::EventSetup &)
 

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 > m_group_names
 
std::vector< MaterialAccountingGroup * > m_groups
 
std::vector< TH2F * > m_plots
 
bool m_saveSummaryPlot
 
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
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, 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)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Definition at line 77 of file ListGroups.cc.

Constructor & Destructor Documentation

ListGroups::ListGroups ( const edm::ParameterSet iPSet)

Definition at line 111 of file ListGroups.cc.

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

111  {
112  m_saveSummaryPlot = iPSet.getUntrackedParameter<bool>("SaveSummaryPlot");
113  m_plots.clear();
114  m_groups.clear();
115  TColor::InitializeColors();
116  fillColor();
118  fillGradient();
119 }
T getUntrackedParameter(std::string const &, T const &) const
void fillColor()
Definition: ListGroups.cc:166
std::vector< TH2F * > m_plots
Definition: ListGroups.cc:92
bool m_saveSummaryPlot
Definition: ListGroups.cc:91
void fillGradient()
Definition: ListGroups.cc:132
std::vector< MaterialAccountingGroup * > m_groups
Definition: ListGroups.cc:94
ListGroups::~ListGroups ( )
override

Definition at line 121 of file ListGroups.cc.

References g, m_groups, m_plots, and plotFactory::plot.

121  {
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 }
std::vector< TH2F * > m_plots
Definition: ListGroups.cc:92
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
std::vector< MaterialAccountingGroup * > m_groups
Definition: ListGroups.cc:94

Member Function Documentation

void ListGroups::analyze ( const edm::Event evt,
const edm::EventSetup setup 
)
overrideprivate

Definition at line 429 of file ListGroups.cc.

References gather_cfg::cout, dddGetString(), ALCARECOTkAlBeamHalo_cff::filter, DDFilteredView::geoHistory(), edm::EventSetup::get(), h, m_group_names, m_saveSummaryPlot, DDFilteredView::next(), position, produceAndSaveSummaryPlot(), and DDFilteredView::translation().

429  {
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 }
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
void produceAndSaveSummaryPlot(const edm::EventSetup &)
Definition: ListGroups.cc:304
std::vector< DDExpandedNode > DDGeoHistory
Geometrical &#39;path&#39; of the current node up to the root-node.
bool m_saveSummaryPlot
Definition: ListGroups.cc:91
XYZVectorD XYZVector
spatial vector with cartesian internal representation
Definition: Vector3D.h:31
std::set< std::string > m_group_names
Definition: ListGroups.cc:93
static int position[264][3]
Definition: ReadPGInfo.cc:289
T get() const
Definition: EventSetup.h:73
static std::string dddGetString(const std::string &s, DDFilteredView const &view)
Definition: ListGroups.cc:69
void ListGroups::beginJob ( void  )
inlineoverrideprivatevirtual
void ListGroups::endJob ( void  )
overrideprivatevirtual

Reimplemented from edm::one::EDAnalyzerBase.

Definition at line 458 of file ListGroups.cc.

References DEFINE_FWK_MODULE.

Referenced by beginJob().

458 {}
void ListGroups::fillColor ( void  )
private

Definition at line 166 of file ListGroups.cc.

References m_color.

Referenced by beginJob(), and ListGroups().

166  {
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 }
std::vector< unsigned int > m_color
Definition: ListGroups.cc:95
void ListGroups::fillGradient ( void  )
private

Definition at line 132 of file ListGroups.cc.

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

Referenced by beginJob(), and ListGroups().

132  {
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 }
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
ii
Definition: cuy.py:590
std::vector< int > m_gradient
Definition: ListGroups.cc:96
void ListGroups::fillMaterialDifferences ( )
private

Definition at line 6 of file ListGroupsMaterialDifference.h.

Referenced by beginJob(), and ListGroups().

6 {}
std::vector< std::pair< std::shared_ptr< TLine >, std::shared_ptr< TText > > > ListGroups::overlayEtaReferences ( )
private

Definition at line 258 of file ListGroups.cc.

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

Referenced by beginJob(), and produceAndSaveSummaryPlot().

258  {
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 }
Geom::Theta< T > theta() const
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
#define str(s)
void ListGroups::produceAndSaveSummaryPlot ( const edm::EventSetup setup)
private

Definition at line 304 of file ListGroups.cc.

References svgfig::canvas(), g, edm::EventSetup::get(), 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(), and beginJob().

304  {
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 }
std::vector< TH2F * > m_plots
Definition: ListGroups.cc:92
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
std::vector< std::pair< std::shared_ptr< TLine >, std::shared_ptr< TText > > > overlayEtaReferences()
Definition: ListGroups.cc:258
std::vector< unsigned int > m_color
Definition: ListGroups.cc:95
std::map< std::string, std::pair< float, float > > m_diff
Definition: ListGroups.cc:107
std::set< std::string > m_group_names
Definition: ListGroups.cc:93
std::vector< MaterialAccountingGroup * > m_groups
Definition: ListGroups.cc:94
T get() const
Definition: EventSetup.h:73
def canvas(sub, attr)
Definition: svgfig.py:482
std::vector< int > m_gradient
Definition: ListGroups.cc:96
std::map< std::string, std::pair< float, float > > m_values
Definition: ListGroups.cc:108

Member Data Documentation

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

Definition at line 95 of file ListGroups.cc.

Referenced by fillColor(), and produceAndSaveSummaryPlot().

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

Definition at line 107 of file ListGroups.cc.

Referenced by produceAndSaveSummaryPlot().

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

Definition at line 96 of file ListGroups.cc.

Referenced by fillGradient(), and produceAndSaveSummaryPlot().

std::set<std::string> ListGroups::m_group_names
private

Definition at line 93 of file ListGroups.cc.

Referenced by analyze(), and produceAndSaveSummaryPlot().

std::vector<MaterialAccountingGroup *> ListGroups::m_groups
private

Definition at line 94 of file ListGroups.cc.

Referenced by ListGroups(), produceAndSaveSummaryPlot(), and ~ListGroups().

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

Definition at line 92 of file ListGroups.cc.

Referenced by ListGroups(), produceAndSaveSummaryPlot(), and ~ListGroups().

bool ListGroups::m_saveSummaryPlot
private

Definition at line 91 of file ListGroups.cc.

Referenced by analyze(), and ListGroups().

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

Definition at line 108 of file ListGroups.cc.

Referenced by produceAndSaveSummaryPlot().