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
 
- Public Member Functions inherited from edm::one::EDAnalyzerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzerBase ()
 
ModuleDescription const & moduleDescription () 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
 
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
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
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 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 85 of file ListGroups.cc.

Constructor & Destructor Documentation

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

Definition at line 120 of file ListGroups.cc.

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

120  {
121  m_saveSummaryPlot = iPSet.getUntrackedParameter<bool>("SaveSummaryPlot");
122  m_plots.clear();
123  m_groups.clear();
124  TColor::InitializeColors();
125  fillColor();
127  fillGradient();
128 }
T getUntrackedParameter(std::string const &, T const &) const
void fillColor()
Definition: ListGroups.cc:176
std::vector< TH2F * > m_plots
Definition: ListGroups.cc:101
bool m_saveSummaryPlot
Definition: ListGroups.cc:100
void fillGradient()
Definition: ListGroups.cc:141
std::vector< MaterialAccountingGroup * > m_groups
Definition: ListGroups.cc:103
ListGroups::~ListGroups ( )
override

Definition at line 130 of file ListGroups.cc.

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

130  {
131  for (auto plot : m_plots)
132  delete plot;
133 
134  if (!m_groups.empty())
135  for (auto g : m_groups)
136  delete g;
137 }
std::vector< TH2F * > m_plots
Definition: ListGroups.cc:101
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:103

Member Function Documentation

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

Definition at line 450 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().

450  {
452  setup.get<IdealGeometryRecord>().get( hDdd );
453 
454  DDSpecificsHasNamedValueFilter filter{"TrackingMaterialGroup"};
455  DDFilteredView fv(*hDdd,filter);
456 
457  while (fv.next()) {
458  // print the group name and full hierarchy of all items
459  std::cout << dddGetString("TrackingMaterialGroup", fv) << '\t';
460  m_group_names.insert(dddGetString("TrackingMaterialGroup", fv));
461 
462  // start from 2 to skip the leading /OCMS[0]/CMSE[1] part
463  const DDGeoHistory & history = fv.geoHistory();
464  std::cout << '/';
465  for (unsigned int h = 2; h < history.size(); ++h)
466  std::cout << '/' << history[h].logicalPart().name().name() << '[' << history[h].copyno() << ']';
467 
468  // DD3Vector and DDTranslation are the same type as math::XYZVector
469  math::XYZVector position = fv.translation() / 10.; // mm -> cm
470  std::cout << "\t(" << position.x()
471  << ", " << position.y()
472  << ", " << position.z() << ") "
473  << "[rho] " << position.Rho() << std::endl;
474  };
475  std::cout << std::endl;
476 
477  if (m_saveSummaryPlot)
479 }
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
void produceAndSaveSummaryPlot(const edm::EventSetup &)
Definition: ListGroups.cc:325
std::vector< DDExpandedNode > DDGeoHistory
Geometrical &#39;path&#39; of the current node up to the root-node.
bool m_saveSummaryPlot
Definition: ListGroups.cc:100
XYZVectorD XYZVector
spatial vector with cartesian internal representation
Definition: Vector3D.h:30
const T & get() const
Definition: EventSetup.h:55
std::set< std::string > m_group_names
Definition: ListGroups.cc:102
static int position[264][3]
Definition: ReadPGInfo.cc:509
static std::string dddGetString(const std::string &s, DDFilteredView const &view)
Definition: ListGroups.cc:71
void ListGroups::beginJob ( void  )
inlineoverrideprivatevirtual
void ListGroups::endJob ( void  )
overrideprivatevirtual

Reimplemented from edm::one::EDAnalyzerBase.

Definition at line 482 of file ListGroups.cc.

References DEFINE_FWK_MODULE.

Referenced by beginJob().

482  {
483 }
void ListGroups::fillColor ( void  )
private

Definition at line 176 of file ListGroups.cc.

References m_color.

Referenced by beginJob(), and ListGroups().

176  {
177  // With the introduction of the support for PhaseI and PhaseII detectors it
178  // became quite difficult to maintain a list of colors that is in sync with
179  // the real number of grouping used in the different scenarios. We therefore
180  // define some reasonable set and loop over it in case the number of grouping
181  // is larger than the number of colors.
182 
183  m_color.push_back(kBlack); // unassigned
184 
185  m_color.push_back(kAzure); // PixelBarrelLayer0_Z0
186  m_color.push_back(kAzure - 1); // PixelBarrelLayer0_Z20
187  m_color.push_back(kAzure + 1) ; // Layer1_Z0
188  m_color.push_back(kAzure + 2) ; // Layer1_Z20
189 
190  m_color.push_back(kGreen); // EndCapDisk1_R0
191  m_color.push_back(kGreen + 2); // EndcapDisk1_R11
192  m_color.push_back(kGreen + 4); // EndcapDisk1_R7
193  m_color.push_back(kSpring + 9); // EndcapDisk2_R0
194  m_color.push_back(kSpring + 4); // EndcapDisk2_R7
195  m_color.push_back(kSpring ); // EndcapDisk2_R7
196 
197  m_color.push_back(kRed); // TECDisk0_R20
198  m_color.push_back(kRed + 2); // TECDisk0_R40
199  m_color.push_back(kRed - 7); // TECDisk0_R50
200  m_color.push_back(kRed - 5); // TECDisk0_R60
201  m_color.push_back(kRed - 10); // TECDisk0_R90
202  m_color.push_back(kRed - 1); // TECDisk1_Inner
203  m_color.push_back(kRed - 2); // TECDisk1_Outer
204  m_color.push_back(kRed - 3); // TECDisk1_R20
205  m_color.push_back(kPink - 2); // TECDisk2_Inner
206  m_color.push_back(kPink - 3); // TECDisk2_Outer
207  m_color.push_back(kPink - 4); // TECDisk2_R20
208  m_color.push_back(kPink + 9); // TECDisk3_Inner
209  m_color.push_back(kPink + 8); // TECDisk3_Outer
210  m_color.push_back(kPink + 7); // TECDisk3
211  m_color.push_back(kMagenta - 2); // TECDisk4_Inner
212  m_color.push_back(kMagenta - 3); // TECDisk4_Outer
213  m_color.push_back(kMagenta - 4); // TECDisk4_R33
214  m_color.push_back(kMagenta - 5); // TECDisk5_Inner
215  m_color.push_back(kMagenta - 6); // TECDisk5_Outer
216  m_color.push_back(kMagenta - 7); // TECDisk5_R33
217  m_color.push_back(kRed); // TECDisk6
218  m_color.push_back(kMagenta - 9); // TECDisk7_R40
219  m_color.push_back(kViolet); // TECDisk8
220 
221  m_color.push_back(kOrange + 9); // TIBLayer0_Z0
222  m_color.push_back(kOrange + 7); // TIBLayer0_Z20
223  m_color.push_back(kOrange + 5); // TIBLayer0_Z40
224  m_color.push_back(kOrange - 2); // TIBLayer1_Z0
225  m_color.push_back(kOrange - 3); // TIBLayer1_Z30
226  m_color.push_back(kOrange - 6); // TIBLayer1_Z60
227  m_color.push_back(kOrange + 4); // TIBLayer2_Z0
228  m_color.push_back(kOrange - 7); // TIBLayer2_Z40
229  m_color.push_back(kOrange); // TIBLayer3_Z0
230  m_color.push_back(kOrange + 10); // TIBLayer3_Z50
231 
232  m_color.push_back(kViolet + 10); // TIDDisk1_R0
233  m_color.push_back(kViolet + 6); // TIDDisk1_R30
234  m_color.push_back(kViolet + 3); // TIDDisk1_R40
235  m_color.push_back(kViolet - 7); // TIDDisk2_R25
236  m_color.push_back(kViolet - 1); // TIDDisk2_R30
237  m_color.push_back(kViolet + 9); // TIDDisk2_R40
238  m_color.push_back(kViolet - 5); // TIDDisk3_R24
239  m_color.push_back(kViolet - 3); // TIDDisk3_R30
240  m_color.push_back(kViolet); // TIDDisk3_R40
241 
242  m_color.push_back(kAzure ); // TOBLayer0_Z0
243  m_color.push_back(kAzure + 8); // TOBLayer0_Z20
244  m_color.push_back(kAzure + 2); // TOBLayer0_Z70
245  m_color.push_back(kAzure + 4); // TOBLayer0_Z80
246  m_color.push_back(kCyan + 1); // TOBLayer1_Z0
247  m_color.push_back(kCyan - 9); // TOBLayer1_Z20
248  m_color.push_back(kCyan + 3); // TOBLayer1_Z80
249  m_color.push_back(kCyan + 4); // TOBLayer1_Z90
250  m_color.push_back(kAzure ); // TOBLayer2_Z0
251  m_color.push_back(kAzure + 8); // TOBLayer2_Z25
252  m_color.push_back(kAzure + 2); // TOBLayer2_Z80
253  m_color.push_back(kAzure + 5); // TOBLayer2_Z90
254  m_color.push_back(kCyan + 1); // TOBLayer3_Z0
255  m_color.push_back(kCyan - 9); // TOBLayer3_Z25
256  m_color.push_back(kCyan + 3); // TOBLayer3_Z80
257  m_color.push_back(kCyan + 4); // TOBLayer3_Z90
258  m_color.push_back(kAzure ); // TOBLayer4_Z0
259  m_color.push_back(kAzure + 8); // TOBLayer4_Z25
260  m_color.push_back(kAzure + 2); // TOBLayer4_Z80
261  m_color.push_back(kAzure + 5); // TOBLayer4_Z90
262  m_color.push_back(kCyan + 1); // TOBLayer5_Z0
263  m_color.push_back(kCyan - 9); // TOBLayer5_Z25
264  m_color.push_back(kCyan + 3); // TOBLayer5_Z80
265  m_color.push_back(kCyan + 4); // TOBLayer5_Z90
266 }
std::vector< unsigned int > m_color
Definition: ListGroups.cc:104
void ListGroups::fillGradient ( void  )
private

Definition at line 141 of file ListGroups.cc.

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

Referenced by beginJob(), and ListGroups().

142 {
143  m_gradient.reserve(200);
144  unsigned int steps = 100;
145  // if no index was given, find the highest used one and start from that plus one
146  unsigned int index = ((TObjArray*) gROOT->GetListOfColors())->GetLast() + 1;
147 
148  float r1, g1, b1, r2, g2, b2;
149  static_cast<TColor *>(gROOT->GetListOfColors()->At(kBlue + 1))->GetRGB(r1, g1, b1);
150  static_cast<TColor *>(gROOT->GetListOfColors()->At(kAzure + 10))->GetRGB(r2, g2, b2);
151  float delta_r = (r2 - r1) / (steps - 1);
152  float delta_g = (g2 - g1) / (steps - 1);
153  float delta_b = (b2 - b1) / (steps - 1);
154 
155  m_gradient.push_back(kBlue + 4); // Underflow lowest bin
156  unsigned int ii = 0;
157  for (unsigned int i = 0; i < steps; ++i, ++ii) {
158  new TColor(static_cast<Int_t>(index + ii), r1 + delta_r * i, g1 + delta_g * i, b1 + delta_b * i);
159  m_gradient.push_back(index + ii);
160  }
161 
162  m_gradient.push_back(kWhite); // 0 level perfectly white
163 
164  static_cast<TColor *>(gROOT->GetListOfColors()->At(kOrange))->GetRGB(r1, g1, b1);
165  static_cast<TColor *>(gROOT->GetListOfColors()->At(kOrange + 7))->GetRGB(r2, g2, b2);
166  delta_r = (r2 - r1) / (steps - 1);
167  delta_g = (g2 - g1) / (steps - 1);
168  delta_b = (b2 - b1) / (steps - 1);
169  for (unsigned int i = 0; i < steps; ++i, ++ii) {
170  new TColor(static_cast<Int_t>(index + ii), r1 + delta_r * i, g1 + delta_g * i, b1 + delta_b * i);
171  m_gradient.push_back(index + ii);
172  }
173  m_gradient.push_back(kRed); // Overflow highest bin
174 }
double delta_r(const Fourvec &a, const Fourvec &b)
Find the distance between two four-vectors in the two-dimensional space .
Definition: fourvec.cc:249
ii
Definition: cuy.py:588
std::vector< int > m_gradient
Definition: ListGroups.cc:105
void ListGroups::fillMaterialDifferences ( )
private

Definition at line 5 of file ListGroupsMaterialDifference.h.

References m_diff, and m_values.

Referenced by beginJob(), and ListGroups().

5  {
6  m_diff["TrackerRecMaterialTIBLayer0_Z20"] = std::make_pair<float, float>(0.000000, 0.000000);
7  m_diff["TrackerRecMaterialTECDisk0_R60"] = std::make_pair<float, float>(0.000000, 0.000000);
8  m_diff["TrackerRecMaterialTOBLayer1_Z80"] = std::make_pair<float, float>(0.000000, 0.000000);
9  m_diff["TrackerRecMaterialTOBLayer4_Z0"] = std::make_pair<float, float>(0.000000, 0.000000);
10  m_diff["TrackerRecMaterialTOBLayer2_Z0"] = std::make_pair<float, float>(0.000000, 0.000000);
11  m_diff["TrackerRecMaterialTOBLayer0_Z70"] = std::make_pair<float, float>(0.000000, 0.000000);
12  m_diff["TrackerRecMaterialTECDisk0_R20"] = std::make_pair<float, float>(0.000000, 0.000000);
13  m_diff["TrackerRecMaterialTOBLayer5_Z80"] = std::make_pair<float, float>(338.028085, 425.909863);
14  m_diff["TrackerRecMaterialPixelEndcapDisk1Fw_Outer"] = std::make_pair<float, float>(0.000000, 0.000000);
15  m_diff["TrackerRecMaterialTECDisk1_R20"] = std::make_pair<float, float>(19.426752, 17.294518);
16  m_diff["TrackerRecMaterialTOBLayer5_Z0"] = std::make_pair<float, float>(510.125226, 651.305054);
17  m_diff["TrackerRecMaterialTECDisk8"] = std::make_pair<float, float>(1098.073793, 778.542517);
18  m_diff["TrackerRecMaterialTIDDisk3_R24"] = std::make_pair<float, float>(0.000000, 0.000000);
19  m_diff["TrackerRecMaterialTECDisk4_R33"] = std::make_pair<float, float>(51.925713, 42.900250);
20  m_diff["TrackerRecMaterialTIBLayer1_Z0"] = std::make_pair<float, float>(0.000000, 0.000000);
21  m_diff["TrackerRecMaterialPixelEndcapDisk1Bw_Outer"] = std::make_pair<float, float>(0.000000, 0.000000);
22  m_diff["TrackerRecMaterialTIDDisk2_R25"] = std::make_pair<float, float>(0.000000, 0.000000);
23  m_diff["TrackerRecMaterialTIBLayer0_Z0"] = std::make_pair<float, float>(0.000000, 0.000000);
24  m_diff["TrackerRecMaterialTOBLayer3_Z25"] = std::make_pair<float, float>(0.000000, 0.000000);
25  m_diff["TrackerRecMaterialTIBLayer1_Z30"] = std::make_pair<float, float>(0.000000, 0.000000);
26  m_diff["TrackerRecMaterialTIDDisk2_R40"] = std::make_pair<float, float>(0.000000, 0.000000);
27  m_diff["TrackerRecMaterialTIBLayer2_Z40"] = std::make_pair<float, float>(0.000000, 0.000000);
28  m_diff["TrackerRecMaterialTOBLayer1_Z20"] = std::make_pair<float, float>(0.000000, 0.000000);
29  m_diff["TrackerRecMaterialPixelEndcapDisk2Bw_Inner"] = std::make_pair<float, float>(0.000000, 0.000000);
30  m_diff["TrackerRecMaterialTOBLayer0_Z0"] = std::make_pair<float, float>(0.000000, 0.000000);
31  m_diff["TrackerRecMaterialPixelBarrelLayer0"] = std::make_pair<float, float>(0.000000, 0.000000);
32  m_diff["TrackerRecMaterialPixelBarrelLayer3"] = std::make_pair<float, float>(0.000000, 0.000000);
33  m_diff["TrackerRecMaterialTIBLayer3_Z0"] = std::make_pair<float, float>(0.000000, 0.000000);
34  m_diff["TrackerRecMaterialTOBLayer3_Z80"] = std::make_pair<float, float>(118.048766, 116.983451);
35  m_diff["TrackerRecMaterialTOBLayer4_Z80"] = std::make_pair<float, float>(210.657923, 218.401623);
36  m_diff["TrackerRecMaterialTECDisk5_R33"] = std::make_pair<float, float>(69.556218, 54.695749);
37  m_diff["TrackerRecMaterialTOBLayer0_Z20"] = std::make_pair<float, float>(0.000000, 0.000000);
38  m_diff["TrackerRecMaterialTIBLayer2_Z0"] = std::make_pair<float, float>(0.000000, 0.000000);
39  m_diff["TrackerRecMaterialTECDisk2_R20"] = std::make_pair<float, float>(43.042551, 39.124220);
40  m_diff["TrackerRecMaterialPixelEndcapDisk1Bw_Inner"] = std::make_pair<float, float>(0.000000, 0.000000);
41  m_diff["TrackerRecMaterialTIDDisk1_R30"] = std::make_pair<float, float>(0.000000, 0.000000);
42  m_diff["TrackerRecMaterialTECDisk0_R50"] = std::make_pair<float, float>(0.000000, 0.000000);
43  m_diff["TrackerRecMaterialTOBLayer5_Z25"] = std::make_pair<float, float>(308.073141, 389.306637);
44  m_diff["TrackerRecMaterialPixelEndcapDisk2Bw_Outer"] = std::make_pair<float, float>(0.000000, 0.000000);
45  m_diff["TrackerRecMaterialTIBLayer3_Z50"] = std::make_pair<float, float>(0.000000, 0.000000);
46  m_diff["TrackerRecMaterialTECDisk3"] = std::make_pair<float, float>(40.109901, 34.382246);
47  m_diff["TrackerRecMaterialPixelBarrelLayer1"] = std::make_pair<float, float>(0.000000, 0.000000);
48  m_diff["TrackerRecMaterialPixelBarrelLayer2_External"] = std::make_pair<float, float>(0.000000, 0.000000);
49  m_diff["TrackerRecMaterialPixelEndcapDisk2Fw_Inner"] = std::make_pair<float, float>(0.000000, 0.000000);
50  m_diff["TrackerRecMaterialTECDisk7_R40"] = std::make_pair<float, float>(219.144902, 162.590326);
51  m_diff["TrackerRecMaterialPixelEndcapDisk3Bw_Inner"] = std::make_pair<float, float>(594.908414, 558.979032);
52  m_diff["TrackerRecMaterialPixelEndcapDisk2Fw_Outer"] = std::make_pair<float, float>(0.000000, 0.000000);
53  m_diff["TrackerRecMaterialPixelEndcapDisk3Fw_Outer"] = std::make_pair<float, float>(0.000000, 0.000000);
54  m_diff["TrackerRecMaterialTECDisk6"] = std::make_pair<float, float>(85.692825, 67.990698);
55  m_diff["TrackerRecMaterialTOBLayer3_Z0"] = std::make_pair<float, float>(0.000000, 0.000000);
56  m_diff["TrackerRecMaterialPixelBarrelLayer2"] = std::make_pair<float, float>(0.000000, 0.000000);
57  m_diff["TrackerRecMaterialPixelBarrelLayer3_External"] = std::make_pair<float, float>(0.000000, 0.000000);
58  m_diff["TrackerRecMaterialPixelEndcapDisk3Fw_Inner"] = std::make_pair<float, float>(607.142137, 570.407286);
59  m_diff["TrackerRecMaterialTOBLayer2_Z25"] = std::make_pair<float, float>(0.000000, 0.000000);
60  m_diff["TrackerRecMaterialPixelEndcapDisk3Bw_Outer"] = std::make_pair<float, float>(0.000000, 0.000000);
61  m_diff["TrackerRecMaterialPixelBarrelLayer0_External"] = std::make_pair<float, float>(0.000000, 0.000000);
62  m_diff["TrackerRecMaterialTECDisk0_R90"] = std::make_pair<float, float>(59.694180, 74.636115);
63  m_diff["TrackerRecMaterialTOBLayer1_Z0"] = std::make_pair<float, float>(0.000000, 0.000000);
64  m_diff["TrackerRecMaterialTIDDisk1_R0"] = std::make_pair<float, float>(0.000000, 0.000000);
65  m_diff["TrackerRecMaterialPixelBarrelLayer1_External"] = std::make_pair<float, float>(0.000000, 0.000000);
66  m_diff["TrackerRecMaterialTOBLayer4_Z25"] = std::make_pair<float, float>(0.000000, 0.000000);
67  m_diff["TrackerRecMaterialTOBLayer2_Z80"] = std::make_pair<float, float>(2.291492, 2.290657);
68  m_diff["TrackerRecMaterialPixelEndcapDisk1Fw_Inner"] = std::make_pair<float, float>(0.000000, 0.000000);
69  m_diff["TrackerRecMaterialTECDisk0_R40"] = std::make_pair<float, float>(0.000000, 0.000000);
70  m_diff["TrackerRecMaterialTIDDisk2_R30"] = std::make_pair<float, float>(0.000000, 0.000000);
71  m_values["TrackerRecMaterialTIBLayer0_Z20"] = std::make_pair<float, float>(0.076264, 0.000162);
72  m_values["TrackerRecMaterialTECDisk0_R60"] = std::make_pair<float, float>(0.199482, 0.000368);
73  m_values["TrackerRecMaterialTOBLayer1_Z80"] = std::make_pair<float, float>(0.075550, 0.000145);
74  m_values["TrackerRecMaterialTOBLayer4_Z0"] = std::make_pair<float, float>(0.014804, 0.000033);
75  m_values["TrackerRecMaterialTOBLayer2_Z0"] = std::make_pair<float, float>(0.014947, 0.000033);
76  m_values["TrackerRecMaterialTOBLayer0_Z70"] = std::make_pair<float, float>(0.104496, 0.000208);
77  m_values["TrackerRecMaterialTECDisk0_R20"] = std::make_pair<float, float>(0.177496, 0.000419);
78  m_values["TrackerRecMaterialTOBLayer5_Z80"] = std::make_pair<float, float>(0.095700, 0.000224);
79  m_values["TrackerRecMaterialPixelEndcapDisk1Fw_Outer"] = std::make_pair<float, float>(0.063054, 0.000139);
80  m_values["TrackerRecMaterialTECDisk1_R20"] = std::make_pair<float, float>(0.086704, 0.000189);
81  m_values["TrackerRecMaterialTOBLayer5_Z0"] = std::make_pair<float, float>(0.060576, 0.000155);
82  m_values["TrackerRecMaterialTECDisk8"] = std::make_pair<float, float>(0.329777, 0.000532);
83  m_values["TrackerRecMaterialTIDDisk3_R24"] = std::make_pair<float, float>(0.154447, 0.000366);
84  m_values["TrackerRecMaterialTECDisk4_R33"] = std::make_pair<float, float>(0.072594, 0.000158);
85  m_values["TrackerRecMaterialTIBLayer1_Z0"] = std::make_pair<float, float>(0.049604, 0.000102);
86  m_values["TrackerRecMaterialPixelEndcapDisk1Bw_Outer"] = std::make_pair<float, float>(0.065873, 0.000145);
87  m_values["TrackerRecMaterialTIDDisk2_R25"] = std::make_pair<float, float>(0.067206, 0.000166);
88  m_values["TrackerRecMaterialTIBLayer0_Z0"] = std::make_pair<float, float>(0.056395, 0.000125);
89  m_values["TrackerRecMaterialTOBLayer3_Z25"] = std::make_pair<float, float>(0.035290, 0.000071);
90  m_values["TrackerRecMaterialTIBLayer1_Z30"] = std::make_pair<float, float>(0.068299, 0.000137);
91  m_values["TrackerRecMaterialTIDDisk2_R40"] = std::make_pair<float, float>(0.143121, 0.000310);
92  m_values["TrackerRecMaterialTIBLayer2_Z40"] = std::make_pair<float, float>(0.077840, 0.000155);
93  m_values["TrackerRecMaterialTOBLayer1_Z20"] = std::make_pair<float, float>(0.051913, 0.000103);
94  m_values["TrackerRecMaterialPixelEndcapDisk2Bw_Inner"] = std::make_pair<float, float>(0.039093, 0.000090);
95  m_values["TrackerRecMaterialTOBLayer0_Z0"] = std::make_pair<float, float>(0.029002, 0.000069);
96  m_values["TrackerRecMaterialPixelBarrelLayer0"] = std::make_pair<float, float>(0.018043, 0.000038);
97  m_values["TrackerRecMaterialPixelBarrelLayer3"] = std::make_pair<float, float>(0.020661, 0.000042);
98  m_values["TrackerRecMaterialTIBLayer3_Z0"] = std::make_pair<float, float>(0.048101, 0.000110);
99  m_values["TrackerRecMaterialTOBLayer3_Z80"] = std::make_pair<float, float>(0.093979, 0.000181);
100  m_values["TrackerRecMaterialTOBLayer4_Z80"] = std::make_pair<float, float>(0.101240, 0.000203);
101  m_values["TrackerRecMaterialTECDisk5_R33"] = std::make_pair<float, float>(0.092564, 0.000201);
102  m_values["TrackerRecMaterialTOBLayer0_Z20"] = std::make_pair<float, float>(0.063558, 0.000138);
103  m_values["TrackerRecMaterialTIBLayer2_Z0"] = std::make_pair<float, float>(0.036854, 0.000078);
104  m_values["TrackerRecMaterialTECDisk2_R20"] = std::make_pair<float, float>(0.107900, 0.000237);
105  m_values["TrackerRecMaterialPixelEndcapDisk1Bw_Inner"] = std::make_pair<float, float>(0.039143, 0.000086);
106  m_values["TrackerRecMaterialTIDDisk1_R30"] = std::make_pair<float, float>(0.167774, 0.000321);
107  m_values["TrackerRecMaterialTECDisk0_R50"] = std::make_pair<float, float>(0.108277, 0.000255);
108  m_values["TrackerRecMaterialTOBLayer5_Z25"] = std::make_pair<float, float>(0.086612, 0.000209);
109  m_values["TrackerRecMaterialPixelEndcapDisk2Bw_Outer"] = std::make_pair<float, float>(0.070143, 0.000165);
110  m_values["TrackerRecMaterialTIBLayer3_Z50"] = std::make_pair<float, float>(0.063872, 0.000138);
111  m_values["TrackerRecMaterialTECDisk3"] = std::make_pair<float, float>(0.064126, 0.000139);
112  m_values["TrackerRecMaterialPixelBarrelLayer1"] = std::make_pair<float, float>(0.016379, 0.000028);
113  m_values["TrackerRecMaterialPixelBarrelLayer2_External"] = std::make_pair<float, float>(0.026687, 0.000046);
114  m_values["TrackerRecMaterialPixelEndcapDisk2Fw_Inner"] = std::make_pair<float, float>(0.039737, 0.000091);
115  m_values["TrackerRecMaterialTECDisk7_R40"] = std::make_pair<float, float>(0.126225, 0.000235);
116  m_values["TrackerRecMaterialPixelEndcapDisk3Bw_Inner"] = std::make_pair<float, float>(0.674984, 0.001356);
117  m_values["TrackerRecMaterialPixelEndcapDisk2Fw_Outer"] = std::make_pair<float, float>(0.065935, 0.000151);
118  m_values["TrackerRecMaterialPixelEndcapDisk3Fw_Outer"] = std::make_pair<float, float>(0.100139, 0.000205);
119  m_values["TrackerRecMaterialTECDisk6"] = std::make_pair<float, float>(0.078988, 0.000163);
120  m_values["TrackerRecMaterialTOBLayer3_Z0"] = std::make_pair<float, float>(0.015009, 0.000033);
121  m_values["TrackerRecMaterialPixelBarrelLayer2"] = std::make_pair<float, float>(0.017219, 0.000030);
122  m_values["TrackerRecMaterialPixelBarrelLayer3_External"] = std::make_pair<float, float>(0.036152, 0.000066);
123  m_values["TrackerRecMaterialPixelEndcapDisk3Fw_Inner"] = std::make_pair<float, float>(0.673782, 0.001357);
124  m_values["TrackerRecMaterialTOBLayer2_Z25"] = std::make_pair<float, float>(0.034917, 0.000069);
125  m_values["TrackerRecMaterialPixelEndcapDisk3Bw_Outer"] = std::make_pair<float, float>(0.100143, 0.000204);
126  m_values["TrackerRecMaterialPixelBarrelLayer0_External"] = std::make_pair<float, float>(0.031128, 0.000062);
127  m_values["TrackerRecMaterialTECDisk0_R90"] = std::make_pair<float, float>(0.309342, 0.000539);
128  m_values["TrackerRecMaterialTOBLayer1_Z0"] = std::make_pair<float, float>(0.023489, 0.000050);
129  m_values["TrackerRecMaterialTIDDisk1_R0"] = std::make_pair<float, float>(0.175180, 0.000349);
130  m_values["TrackerRecMaterialPixelBarrelLayer1_External"] = std::make_pair<float, float>(0.022508, 0.000036);
131  m_values["TrackerRecMaterialTOBLayer4_Z25"] = std::make_pair<float, float>(0.036056, 0.000073);
132  m_values["TrackerRecMaterialTOBLayer2_Z80"] = std::make_pair<float, float>(0.062072, 0.000117);
133  m_values["TrackerRecMaterialPixelEndcapDisk1Fw_Inner"] = std::make_pair<float, float>(0.039127, 0.000086);
134  m_values["TrackerRecMaterialTECDisk0_R40"] = std::make_pair<float, float>(0.084231, 0.000209);
135  m_values["TrackerRecMaterialTIDDisk2_R30"] = std::make_pair<float, float>(0.065109, 0.000143);
136 
137 }
std::map< std::string, std::pair< float, float > > m_diff
Definition: ListGroups.cc:116
std::map< std::string, std::pair< float, float > > m_values
Definition: ListGroups.cc:117
std::vector< std::pair< std::shared_ptr< TLine >, std::shared_ptr< TText > > > ListGroups::overlayEtaReferences ( )
private

Definition at line 269 of file ListGroups.cc.

References deltaR(), PVValHelper::eta, JetChargeProducer_cfi::exp, cmsPerfStripChart::format, groupFilesInBlocks::lines, harvestTrackValidationPlots::str, funct::tan(), and theta().

Referenced by beginJob(), and produceAndSaveSummaryPlot().

269  {
270  std::vector<std::pair<std::shared_ptr<TLine>, std::shared_ptr<TText> > > lines;
271 
272  lines.reserve(40);
273  std::pair<float, float> deltaZ(293, 298);
274  std::pair<float, float> deltaR(115, 118);
275  float text_size = 0.033;
276 
277  for (float eta = 0.; eta <= 3.8; eta += 0.2) {
278  float theta = 2. * atan (exp(-eta));
279  if (eta >= 1.8) {
280  lines.push_back(
281  std::make_pair<std::shared_ptr<TLine>, std::shared_ptr<TText> > (
282  std::make_shared<TLine>(
283  deltaZ.first, deltaZ.first * tan(theta), deltaZ.second, deltaZ.second * tan(theta)),
284  std::make_shared<TText>(
285  deltaZ.first, deltaZ.first * tan(theta), 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(33);
289  lines.push_back(
290  std::make_pair<std::shared_ptr<TLine>, std::shared_ptr<TText> > (
291  std::make_shared<TLine>(
292  -deltaZ.first, deltaZ.first * tan(theta), -deltaZ.second, deltaZ.second * tan(theta)),
293  std::make_shared<TText>(
294  -deltaZ.first, deltaZ.first * tan(theta), 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(13);
298  } else {
299  lines.push_back(
300  std::make_pair<std::shared_ptr<TLine>, std::shared_ptr<TText> > (
301  std::make_shared<TLine>(
302  deltaR.first / tan(theta), deltaR.first, deltaR.second / tan(theta), deltaR.second),
303  std::make_shared<TText>(
304  deltaR.first / tan(theta), deltaR.first, str(boost::format("%2.1f") % eta).c_str())));
305  lines.back().second->SetTextFont(42);
306  lines.back().second->SetTextSize(text_size);
307  lines.back().second->SetTextAlign(23);
308  if (eta != 0) {
309  lines.push_back(
310  std::make_pair<std::shared_ptr<TLine>, std::shared_ptr<TText> > (
311  std::make_shared<TLine>(
312  - deltaR.first / tan(theta), deltaR.first, - deltaR.second / tan(theta), deltaR.second),
313  std::make_shared<TText>(
314  - deltaR.first / tan(theta), deltaR.first, str(boost::format("-%2.1f") % eta).c_str())));
315  lines.back().second->SetTextFont(42);
316  lines.back().second->SetTextSize(text_size);
317  lines.back().second->SetTextAlign(23);
318  }
319  }
320  }
321  return lines;
322 }
Geom::Theta< T > theta() const
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
format
Some error handling for the usage.
double deltaR(double eta1, double eta2, double phi1, double phi2)
Definition: TreeUtility.cc:17
void ListGroups::produceAndSaveSummaryPlot ( const edm::EventSetup setup)
private

Definition at line 325 of file ListGroups.cc.

References svgfig::canvas(), g, edm::EventSetup::get(), create_public_lumi_plots::leg, geometryCSVtoXML::line, groupFilesInBlocks::lines, m_color, m_diff, m_gradient, m_group_names, m_groups, m_plots, m_values, gen::n, overlayEtaReferences(), and Scenarios_cff::scale.

Referenced by analyze(), and beginJob().

325  {
326  const double scale = 10.;
327  std::vector<TText *> nukem_text;
328  static int markerStyles[10] = {kFullCircle, kFullSquare, kFullTriangleUp, kFullTriangleDown, kOpenCircle, kOpenSquare, kOpenTriangleUp, kOpenDiamond, kOpenCross, kFullStar};
329 
331  setup.get<IdealGeometryRecord>().get( hDdd );
332 
333  for (auto n : m_group_names) {
334  m_groups.push_back( new MaterialAccountingGroup(n, *hDdd) );
335  };
336 
337  std::unique_ptr<TCanvas> canvas(
338  new TCanvas("Grouping_rz", "Grouping - RZ view",
339  (int) (600 * scale * 1.25), (int) (120 * scale * 1.50)));
340  canvas->GetFrame()->SetFillColor(kWhite);
341  gStyle->SetOptStat(0);
342 
343  unsigned int color_index = 1;
344  // Setup the legend
345  std::unique_ptr<TLegend> leg(new TLegend(0.1,0.1,0.23,0.34));
346  leg->SetHeader("Tracker Material Grouping");
347  leg->SetTextFont(42);
348  leg->SetTextSize(0.008);
349  leg->SetNColumns(3);
350  std::unique_ptr<TProfile2D> radlen(
351  new TProfile2D( "OverallRadLen", "OverallRadLen",
352  600., -300., 300, 120., 0., 120.));
353  std::unique_ptr<TProfile2D> eneloss(
354  new TProfile2D( "OverallEnergyLoss", "OverallEnergyLoss",
355  600., -300., 300, 120., 0., 120.));
356  std::unique_ptr<TProfile2D> radlen_diff(
357  new TProfile2D( "OverallDifferencesRadLen", "OverallDifferencesRadLen",
358  600., -300., 300, 120., 0., 120.));
359  std::unique_ptr<TProfile2D> eneloss_diff(
360  new TProfile2D( "OverallDifferencesEnergyLoss", "OverallDifferencesEnergyLoss",
361  600., -300., 300, 120., 0., 120.));
362 
363  for (auto g : m_groups) {
364  m_plots.push_back(
365  new TH2F( g->name().c_str(), g->name().c_str(),
366  6000., -300., 300, 1200., 0., 120.)); // 10x10 points per cm2
367  TH2F &current = *m_plots.back();
368  current.SetMarkerColor(m_color[color_index]);
369  current.SetMarkerStyle(markerStyles[color_index%10]);
370  current.SetMarkerSize(0.8);
371  current.SetLineWidth(1);
372  for (auto element : g->elements()) {
373  current.Fill(element.z(), element.perp());
374  radlen->Fill(element.z(), element.perp(), m_values[g->name()].first);
375  eneloss->Fill(element.z(), element.perp(), m_values[g->name()].second);
376  radlen_diff->Fill(element.z(), element.perp(), m_diff[g->name()].first);
377  eneloss_diff->Fill(element.z(), element.perp(), m_diff[g->name()].second);
378  }
379 
380  if (color_index == 1)
381  current.Draw();
382  else
383  current.Draw("SAME");
384 
385  leg->AddEntry(&current , g->name().c_str(), "lp")->SetTextColor(m_color[color_index]);
386  color_index++;
387 
388  // Loop over the same chromatic scale in case the number of
389  // allocated colors is not big enough.
390  color_index = color_index%m_color.size();
391  }
392  leg->Draw();
393  canvas->SaveAs("Grouping.png");
394 
395  std::vector<std::pair<std::shared_ptr<TLine>, std::shared_ptr<TText> > > lines = overlayEtaReferences();
396 
397  canvas->Clear();
398  radlen->SetMinimum(0);
399  radlen->SetMaximum(0.25);
400  radlen->Draw("COLZ");
401  for (auto line : lines) {
402  line.first->SetLineWidth(5);
403  line.first->Draw();
404  line.second->Draw();
405  }
406  canvas->SaveAs("RadLenValues.png");
407 
408  canvas->Clear();
409  eneloss->SetMinimum(0.00001);
410  eneloss->SetMaximum(0.0005);
411  eneloss->Draw("COLZ");
412  for (auto line : lines) {
413  line.first->SetLineWidth(5);
414  line.first->Draw();
415  line.second->Draw();
416  }
417  canvas->SaveAs("EnergyLossValues.png");
418 
419  canvas->Clear();
420  gStyle->SetPalette( m_gradient.size(), & m_gradient.front() );
421  gStyle->SetNumberContours( m_gradient.size() );
422  radlen_diff->SetMinimum(-100);
423  radlen_diff->SetMaximum(100);
424  radlen_diff->Draw("COLZ");
425  for (auto line : lines) {
426  line.first->SetLineWidth(5);
427  line.first->Draw();
428  line.second->Draw();
429  }
430  canvas->SaveAs("RadLenChanges.png");
431 
432  canvas->Clear();
433  eneloss_diff->SetMinimum(-100);
434  eneloss_diff->SetMaximum(100);
435  eneloss_diff->Draw("COLZ");
436  for (auto line : lines) {
437  line.first->SetLineWidth(5);
438  line.first->Draw();
439  line.second->Draw();
440  }
441  canvas->SaveAs("EnergyLossChanges.png");
442 
443  for (auto g : nukem_text)
444  delete g;
445 
446 }
std::vector< TH2F * > m_plots
Definition: ListGroups.cc:101
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:269
std::vector< unsigned int > m_color
Definition: ListGroups.cc:104
std::map< std::string, std::pair< float, float > > m_diff
Definition: ListGroups.cc:116
const T & get() const
Definition: EventSetup.h:55
std::set< std::string > m_group_names
Definition: ListGroups.cc:102
std::vector< MaterialAccountingGroup * > m_groups
Definition: ListGroups.cc:103
def canvas(sub, attr)
Definition: svgfig.py:481
std::vector< int > m_gradient
Definition: ListGroups.cc:105
std::map< std::string, std::pair< float, float > > m_values
Definition: ListGroups.cc:117

Member Data Documentation

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

Definition at line 104 of file ListGroups.cc.

Referenced by fillColor(), and produceAndSaveSummaryPlot().

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

Definition at line 116 of file ListGroups.cc.

Referenced by fillMaterialDifferences(), and produceAndSaveSummaryPlot().

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

Definition at line 105 of file ListGroups.cc.

Referenced by fillGradient(), and produceAndSaveSummaryPlot().

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

Definition at line 102 of file ListGroups.cc.

Referenced by analyze(), and produceAndSaveSummaryPlot().

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

Definition at line 103 of file ListGroups.cc.

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

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

Definition at line 101 of file ListGroups.cc.

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

bool ListGroups::m_saveSummaryPlot
private

Definition at line 100 of file ListGroups.cc.

Referenced by analyze(), and ListGroups().

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

Definition at line 117 of file ListGroups.cc.

Referenced by fillMaterialDifferences(), and produceAndSaveSummaryPlot().