CMS 3D CMS Logo

List of all members | Public Member Functions | Private Types | Private Member Functions | Private Attributes
DD4hep_TrackingMaterialAnalyser Class Reference

#include <DD4hep_TrackingMaterialAnalyser.h>

Inheritance diagram for DD4hep_TrackingMaterialAnalyser:
edm::one::EDAnalyzer<> edm::one::EDAnalyzerBase edm::EDConsumerBase

Public Member Functions

 DD4hep_TrackingMaterialAnalyser (const edm::ParameterSet &)
 
 ~DD4hep_TrackingMaterialAnalyser () 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 Types

enum  SplitMode { NEAREST_LAYER, INNER_LAYER, OUTER_LAYER, UNDEFINED }
 

Private Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 
void beginJob () override
 
void endJob () override
 
int findLayer (const MaterialAccountingDetector &detector)
 
void saveLayerPlots ()
 
void saveParameters (const char *name)
 
void saveXml (const char *name)
 
void split (MaterialAccountingTrack &track)
 

Private Attributes

std::vector< std::string > m_groupNames
 
std::vector< DD4hep_MaterialAccountingGroup * > m_groups
 
bool m_isHFNose
 
bool m_isHGCal
 
edm::EDGetTokenT< std::vector< MaterialAccountingTrack > > m_materialToken
 
DD4hep_TrackingMaterialPlotterm_plotter
 
bool m_saveDetailedPlots
 
bool m_saveParameters
 
bool m_saveSummaryPlot
 
bool m_saveXml
 
bool m_skipAfterLastDetector
 
bool m_skipBeforeFirstDetector
 
SplitMode m_splitMode
 

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 16 of file DD4hep_TrackingMaterialAnalyser.h.

Member Enumeration Documentation

◆ SplitMode

Enumerator
NEAREST_LAYER 
INNER_LAYER 
OUTER_LAYER 
UNDEFINED 

Definition at line 22 of file DD4hep_TrackingMaterialAnalyser.h.

Constructor & Destructor Documentation

◆ DD4hep_TrackingMaterialAnalyser()

DD4hep_TrackingMaterialAnalyser::DD4hep_TrackingMaterialAnalyser ( const edm::ParameterSet iPSet)
explicit

Definition at line 27 of file DD4hep_TrackingMaterialAnalyser.cc.

27  {
29  consumes<std::vector<MaterialAccountingTrack> >(iPSet.getParameter<edm::InputTag>("MaterialAccounting"));
30  m_groupNames = iPSet.getParameter<std::vector<std::string> >("Groups");
31  const std::string& splitmode = iPSet.getParameter<std::string>("SplitMode");
32  if (strcasecmp(splitmode.c_str(), "NearestLayer") == 0) {
34  } else if (strcasecmp(splitmode.c_str(), "InnerLayer") == 0) {
36  } else if (strcasecmp(splitmode.c_str(), "OuterLayer") == 0) {
38  } else {
41  << "Invalid SplitMode \"" << splitmode
42  << "\". Acceptable values are \"NearestLayer\", \"InnerLayer\", \"OuterLayer\".";
43  }
44  m_skipAfterLastDetector = iPSet.getParameter<bool>("SkipAfterLastDetector");
45  m_skipBeforeFirstDetector = iPSet.getParameter<bool>("SkipBeforeFirstDetector");
46  m_saveSummaryPlot = iPSet.getParameter<bool>("SaveSummaryPlot");
47  m_saveDetailedPlots = iPSet.getParameter<bool>("SaveDetailedPlots");
48  m_saveParameters = iPSet.getParameter<bool>("SaveParameters");
49  m_saveXml = iPSet.getParameter<bool>("SaveXML");
50  m_isHGCal = iPSet.getParameter<bool>("isHGCal");
51  m_isHFNose = iPSet.getParameter<bool>("isHFNose");
52  if (m_saveSummaryPlot) {
53  if (m_isHGCal) {
54  m_plotter = new DD4hep_TrackingMaterialPlotter(550., 300., 10);
55  } else if (m_isHFNose) {
56  m_plotter = new DD4hep_TrackingMaterialPlotter(1200., 350., 10);
57  } else {
58  m_plotter = new DD4hep_TrackingMaterialPlotter(300., 120., 10);
59  } // 10x10 points per cm2
60  } else {
61  m_plotter = nullptr;
62  }
63 }

References Exception, edm::ParameterSet::getParameter(), INNER_LAYER, edm::errors::LogicError, m_groupNames, m_isHFNose, m_isHGCal, m_materialToken, m_plotter, m_saveDetailedPlots, m_saveParameters, m_saveSummaryPlot, m_saveXml, m_skipAfterLastDetector, m_skipBeforeFirstDetector, m_splitMode, NEAREST_LAYER, OUTER_LAYER, AlCaHLTBitMon_QueryRunRegistry::string, and UNDEFINED.

◆ ~DD4hep_TrackingMaterialAnalyser()

DD4hep_TrackingMaterialAnalyser::~DD4hep_TrackingMaterialAnalyser ( void  )
override

Definition at line 66 of file DD4hep_TrackingMaterialAnalyser.cc.

66  {
67  if (m_plotter)
68  delete m_plotter;
69 }

References m_plotter.

Member Function Documentation

◆ analyze()

void DD4hep_TrackingMaterialAnalyser::analyze ( const edm::Event event,
const edm::EventSetup setup 
)
overrideprivatevirtual

Implements edm::one::EDAnalyzerBase.

Definition at line 143 of file DD4hep_TrackingMaterialAnalyser.cc.

143  {
144  using namespace edm;
146  setup.get<IdealGeometryRecord>().get(hDDD);
147 
148  m_groups.reserve(m_groupNames.size());
149  // Initialize m_groups iff it has size equal to zero, so that we are
150  // sure it will never be repopulated with the same entries over and
151  // over again in the eventloop, at each call of the analyze method.
152  if (m_groups.empty()) {
153  for (unsigned int i = 0; i < m_groupNames.size(); ++i)
154  m_groups.push_back(new DD4hep_MaterialAccountingGroup(m_groupNames[i], *hDDD));
155 
156  edm::LogVerbatim("TrackingMaterialAnalyser") << "TrackingMaterialAnalyser: List of the tracker groups: " << std::endl;
157  for (unsigned int i = 0; i < m_groups.size(); ++i)
158  edm::LogVerbatim("TrackingMaterialAnalyser") << i << " TrackingMaterialAnalyser:\t" << m_groups[i]->info() << std::endl;
159  }
161  event.getByToken(m_materialToken, h_tracks);
162 
163  for (std::vector<MaterialAccountingTrack>::const_iterator t = h_tracks->begin(), end = h_tracks->end(); t != end;
164  ++t) {
166  split(track);
167  }
168 }

References end, get, mps_fire::i, m_groupNames, m_groups, m_materialToken, singleTopDQM_cfi::setup, split(), OrderedSet::t, and HLT_2018_cff::track.

◆ beginJob()

void DD4hep_TrackingMaterialAnalyser::beginJob ( void  )
inlineoverrideprivatevirtual

Reimplemented from edm::one::EDAnalyzerBase.

Definition at line 25 of file DD4hep_TrackingMaterialAnalyser.h.

25 {}

◆ endJob()

void DD4hep_TrackingMaterialAnalyser::endJob ( void  )
overrideprivatevirtual

Reimplemented from edm::one::EDAnalyzerBase.

Definition at line 124 of file DD4hep_TrackingMaterialAnalyser.cc.

124  {
125  if (m_saveParameters)
126  saveParameters("parameters");
127 
128  if (m_saveXml)
129  saveXml("parameters.xml");
130 
132  saveLayerPlots();
133 
134  if (m_saveSummaryPlot and m_plotter) {
135  m_plotter->normalize();
136  m_plotter->draw();
137  }
138 }

References DD4hep_TrackingMaterialPlotter::draw(), m_plotter, m_saveDetailedPlots, m_saveParameters, m_saveSummaryPlot, m_saveXml, DD4hep_TrackingMaterialPlotter::normalize(), saveLayerPlots(), saveParameters(), and saveXml().

◆ findLayer()

int DD4hep_TrackingMaterialAnalyser::findLayer ( const MaterialAccountingDetector detector)
private

Definition at line 337 of file DD4hep_TrackingMaterialAnalyser.cc.

337  {
338  int index = 0;
339  size_t inside = 0;
340  for (size_t i = 0; i < m_groups.size(); ++i)
341  if (m_groups[i]->isInside(detector)) {
342  ++inside;
343  index = i + 1;
344  }
345  if (inside == 0) {
346  index = 0;
347  std::cerr << "TrackingMaterialAnalyser::findLayer(...): ERROR: detector does not belong to any DetLayer"
348  << std::endl;
349  std::cerr << "TrackingMaterialAnalyser::findLayer(...): detector position: " << std::fixed
350  << " (r: " << std::setprecision(1) << std::setw(5) << detector.position().perp()
351  << ", z: " << std::setprecision(1) << std::setw(6) << detector.position().z()
352  << ", phi: " << std::setprecision(3) << std::setw(6) << detector.position().phi() << ")" << std::endl;
353  }
354  if (inside > 1) {
355  index = 0;
356  std::cerr << "TrackingMaterialAnalyser::findLayer(...): ERROR: detector belongs to " << inside << " DetLayers"
357  << std::endl;
358  std::cerr << "TrackingMaterialAnalyser::findLayer(...): detector position: " << std::fixed
359  << " (r: " << std::setprecision(1) << std::setw(5) << detector.position().perp()
360  << ", z: " << std::setprecision(1) << std::setw(6) << detector.position().z()
361  << ", phi: " << std::setprecision(3) << std::setw(6) << detector.position().phi() << ")" << std::endl;
362  }
363 
364  return index;
365 }

References beam_dqm_sourceclient-live_cfg::cerr, hgcalTestNeighbor_cfi::detector, alignBH_cfg::fixed, mps_fire::i, and m_groups.

Referenced by split().

◆ saveLayerPlots()

void DD4hep_TrackingMaterialAnalyser::saveLayerPlots ( )
private

Definition at line 116 of file DD4hep_TrackingMaterialAnalyser.cc.

116  {
117  for (unsigned int i = 0; i < m_groups.size(); ++i) {
119  layer.savePlots();
120  }
121 }

References mps_fire::i, m_groups, and DD4hep_MaterialAccountingGroup::savePlots().

Referenced by endJob().

◆ saveParameters()

void DD4hep_TrackingMaterialAnalyser::saveParameters ( const char *  name)
private

Definition at line 72 of file DD4hep_TrackingMaterialAnalyser.cc.

72  {
73  std::ofstream parameters(name);
74  std::cout << std::endl;
75  for (unsigned int i = 0; i < m_groups.size(); ++i) {
77  std::cout << layer.name() << std::endl;
78  std::cout << boost::format("\tnumber of hits: %9d") % layer.tracks() << std::endl;
79  std::cout << boost::format("\tnormalized segment length: %9.1f ± %9.1f cm") % layer.averageLength() %
80  layer.sigmaLength()
81  << std::endl;
82  std::cout << boost::format("\tnormalized radiation lengths: %9.3f ± %9.3f") % layer.averageRadiationLengths() %
83  layer.sigmaRadiationLengths()
84  << std::endl;
85  std::cout << boost::format("\tnormalized energy loss: %6.5fe-03 ± %6.5fe-03 GeV") %
86  layer.averageEnergyLoss() % layer.sigmaEnergyLoss()
87  << std::endl;
88  parameters << boost::format("%-20s\t%7d\t%5.1f ± %5.1f cm\t%6.4f ± %6.4f \t%6.4fe-03 ± %6.4fe-03 GeV") %
89  layer.name() % layer.tracks() % layer.averageLength() % layer.sigmaLength() %
91  layer.sigmaEnergyLoss()
92  << std::endl;
93  }
94  std::cout << std::endl;
95 
96  parameters.close();
97 }

References DD4hep_MaterialAccountingGroup::averageEnergyLoss(), DD4hep_MaterialAccountingGroup::averageLength(), DD4hep_MaterialAccountingGroup::averageRadiationLengths(), gather_cfg::cout, dqm-mbProfile::format, mps_fire::i, m_groups, Skims_PA_cff::name, DD4hep_MaterialAccountingGroup::name(), DD4hep_MaterialAccountingGroup::sigmaEnergyLoss(), DD4hep_MaterialAccountingGroup::sigmaLength(), DD4hep_MaterialAccountingGroup::sigmaRadiationLengths(), and DD4hep_MaterialAccountingGroup::tracks().

Referenced by endJob().

◆ saveXml()

void DD4hep_TrackingMaterialAnalyser::saveXml ( const char *  name)
private

Definition at line 100 of file DD4hep_TrackingMaterialAnalyser.cc.

100  {
101  std::ofstream xml(name);
102  xml << "<?xml version=\"1.0\" encoding=\"utf-8\"?>" << std::endl;
103  xml << "<Groups>" << std::endl;
104  for (unsigned int i = 0; i < m_groups.size(); ++i) {
106  xml << " <Group name=\"" << layer.name() << "\">\n"
107  << " <Parameter name=\"TrackerRadLength\" value=\"" << layer.averageRadiationLengths() << "\"/>\n"
108  << " <Parameter name=\"TrackerXi\" value=\"" << layer.averageEnergyLoss() << "\"/>\n"
109  << " </Group>\n"
110  << std::endl;
111  }
112  xml << "</Groups>" << std::endl;
113 }

References DD4hep_MaterialAccountingGroup::averageEnergyLoss(), DD4hep_MaterialAccountingGroup::averageRadiationLengths(), mps_fire::i, m_groups, Skims_PA_cff::name, and DD4hep_MaterialAccountingGroup::name().

Referenced by endJob().

◆ split()

void DD4hep_TrackingMaterialAnalyser::split ( MaterialAccountingTrack track)
private

Definition at line 179 of file DD4hep_TrackingMaterialAnalyser.cc.

179  {
180  using namespace edm;
181  // group sensitive detectors by their DetLayer
182  std::vector<int> group(track.detectors().size());
183  for (unsigned int i = 0; i < track.detectors().size(); ++i)
184  group[i] = findLayer(track.detectors()[i]);
185 
186  for (unsigned int i = 0; i < group.size(); ++i)
187  if (group[i] > 0)
188  edm::LogVerbatim("TrackingMaterialAnalyser") << "For detector i: " << i << " index: " << group[i]
189  << " R-ranges: " << m_groups[group[i] - 1]->getBoundingR().first << ", "
190  << m_groups[group[i] - 1]->getBoundingR().second << group[i]
191  << " Z-ranges: " << m_groups[group[i] - 1]->getBoundingZ().first << ", "
192  << m_groups[group[i] - 1]->getBoundingZ().second << std::endl;
193 
194  unsigned int detectors = track.detectors().size();
195  if (detectors == 0) {
196  // the track doesn't cross any active detector:
197  // keep al material as unassigned
198  if (m_plotter)
199  for (unsigned int i = 1; i < track.steps().size(); ++i)
201  } else {
202  const double TOLERANCE = 0.0001; // 1 um tolerance
203  std::vector<double> limits(detectors + 2);
204 
205  // define the trivial limits
207  limits[0] = track.detectors()[0].m_curvilinearIn - TOLERANCE;
208  else
209  limits[0] = -TOLERANCE;
211  limits[detectors] = track.detectors()[detectors - 1].m_curvilinearOut + TOLERANCE;
212  else
213  limits[detectors] = track.summary().length() + TOLERANCE;
214  limits[detectors + 1] = INFINITY; // this is probably no more needed, but doesn't harm...
215 
216  // pick the algorithm to define the non-trivial limits
217  switch (m_splitMode) {
218  // assign each segment to the the nearest layer
219  // e.g. the material between pixel barrel 3 and TIB 1 will be split among the two
220  case NEAREST_LAYER:
221  for (unsigned int i = 1; i < detectors; ++i) {
222  limits[i] = (track.detectors()[i - 1].m_curvilinearOut + track.detectors()[i].m_curvilinearIn) / 2.;
223  }
224  break;
225 
226  // assign each segment to the the inner layer
227  // e.g. all material between pixel barrel 3 and TIB 1 will go into the pixel barrel
228  case INNER_LAYER:
229  for (unsigned int i = 1; i < detectors; ++i)
230  limits[i] = track.detectors()[i].m_curvilinearIn - TOLERANCE;
231  break;
232 
233  // assign each segment to the the outer layer
234  // e.g. all material between pixel barrel 3 and TIB 1 will go into the TIB
235  case OUTER_LAYER:
236  for (unsigned int i = 1; i < detectors; ++i)
237  limits[i] = track.detectors()[i - 1].m_curvilinearOut + TOLERANCE;
238  break;
239 
240  case UNDEFINED:
241  [[fallthrough]];
242 
243  default:
244  // throw something
245  throw edm::Exception(edm::errors::LogicError) << "Invalid SplitMode";
246  }
247 
248  double begin = 0.; // beginning of step, along the track
249  double end = 0.; // end of step, along the track
250  unsigned int i = 1; // step conter
251 
252  // skip the material before the first layer
253  while (end < limits[0]) {
254  const MaterialAccountingStep& step = track.steps()[i++];
255  end = begin + step.length();
256 
257  // do not account material before the first layer
258  if (m_plotter)
260 
261  begin = end;
262  }
263 
264  unsigned int index = 0; // which detector
265  while (i < track.steps().size()) {
266  const MaterialAccountingStep& step = track.steps()[i++];
267 
268  end = begin + step.length();
269 
270  if (begin > limits[detectors]) {
271  // segment after last layer and skipping requested in configuation
272  if (m_plotter)
274  begin = end;
275  continue;
276  }
277 
278  // from here onwards we should be in the accountable region, either completely in a single layer:
279  // limits[index] <= begin < end <= limits[index+1]
280  // or possibly split between 2 layers
281  // limits[index] < begin < limits[index+1] < end < limits[index+2]
282  if (begin < limits[index] or end > limits[index + 2]) {
283  // sanity check
284  std::cerr << "MaterialAccountingTrack::split(): ERROR: internal logic error, expected " << limits[index]
285  << " < " << begin << " < " << limits[index + 1] << std::endl;
286  break;
287  }
288 
289  if (limits[index] <= begin and end <= limits[index + 1]) {
290  // step completely inside current detector range
291  track.detectors()[index].account(step, begin, end);
292  if (m_plotter)
294  } else {
295  // step shared beteewn two detectors, transition at limits[index+1]
296  double fraction = (limits[index + 1] - begin) / (end - begin);
297  assert(fraction < 1.);
298  std::pair<MaterialAccountingStep, MaterialAccountingStep> parts = step.split(fraction);
299 
300  if (m_plotter) {
301  if (index > 0)
303  else
304  // track outside acceptance, keep as unassocated
306 
307  if (index + 1 < detectors)
309  else
310  // track outside acceptance, keep as unassocated
312  }
313 
314  track.detectors()[index].account(parts.first, begin, limits[index + 1]);
315  ++index; // next layer
316  if (index < detectors)
317  track.detectors()[index].account(parts.second, limits[index + 1], end);
318  }
319  begin = end;
320  }
321  }
322 
323  // add the material from each detector to its layer (if there is one and only one)
324  for (unsigned int i = 0; i < track.detectors().size(); ++i)
325  if (group[i] != 0)
326  m_groups[group[i] - 1]->addDetector(track.detectors()[i]);
327 
328  // end of track: commit internal buffers and reset the m_groups internal state for a new track
329  for (unsigned int i = 0; i < m_groups.size(); ++i)
330  m_groups[i]->endOfTrack();
331 }

References cms::cuda::assert(), begin, beam_dqm_sourceclient-live_cfg::cerr, MuonGeometrySanityCheck_cfi::detectors(), end, Exception, findLayer(), HLT_2018_cff::fraction, watchdog::group, mps_fire::i, INNER_LAYER, TH2PolyOfflineMaps::limits, edm::errors::LogicError, m_groups, m_plotter, m_skipAfterLastDetector, m_skipBeforeFirstDetector, m_splitMode, NEAREST_LAYER, or, OUTER_LAYER, contentValuesFiles::parts, DD4hep_TrackingMaterialPlotter::plotSegmentInLayer(), DD4hep_TrackingMaterialPlotter::plotSegmentUnassigned(), HLT_2018_cff::track, and UNDEFINED.

Referenced by analyze().

Member Data Documentation

◆ m_groupNames

std::vector<std::string> DD4hep_TrackingMaterialAnalyser::m_groupNames
private

Definition at line 46 of file DD4hep_TrackingMaterialAnalyser.h.

Referenced by analyze(), and DD4hep_TrackingMaterialAnalyser().

◆ m_groups

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

◆ m_isHFNose

bool DD4hep_TrackingMaterialAnalyser::m_isHFNose
private

Definition at line 44 of file DD4hep_TrackingMaterialAnalyser.h.

Referenced by DD4hep_TrackingMaterialAnalyser().

◆ m_isHGCal

bool DD4hep_TrackingMaterialAnalyser::m_isHGCal
private

Definition at line 43 of file DD4hep_TrackingMaterialAnalyser.h.

Referenced by DD4hep_TrackingMaterialAnalyser().

◆ m_materialToken

edm::EDGetTokenT<std::vector<MaterialAccountingTrack> > DD4hep_TrackingMaterialAnalyser::m_materialToken
private

Definition at line 35 of file DD4hep_TrackingMaterialAnalyser.h.

Referenced by analyze(), and DD4hep_TrackingMaterialAnalyser().

◆ m_plotter

DD4hep_TrackingMaterialPlotter* DD4hep_TrackingMaterialAnalyser::m_plotter
private

◆ m_saveDetailedPlots

bool DD4hep_TrackingMaterialAnalyser::m_saveDetailedPlots
private

Definition at line 40 of file DD4hep_TrackingMaterialAnalyser.h.

Referenced by DD4hep_TrackingMaterialAnalyser(), and endJob().

◆ m_saveParameters

bool DD4hep_TrackingMaterialAnalyser::m_saveParameters
private

Definition at line 41 of file DD4hep_TrackingMaterialAnalyser.h.

Referenced by DD4hep_TrackingMaterialAnalyser(), and endJob().

◆ m_saveSummaryPlot

bool DD4hep_TrackingMaterialAnalyser::m_saveSummaryPlot
private

Definition at line 39 of file DD4hep_TrackingMaterialAnalyser.h.

Referenced by DD4hep_TrackingMaterialAnalyser(), and endJob().

◆ m_saveXml

bool DD4hep_TrackingMaterialAnalyser::m_saveXml
private

Definition at line 42 of file DD4hep_TrackingMaterialAnalyser.h.

Referenced by DD4hep_TrackingMaterialAnalyser(), and endJob().

◆ m_skipAfterLastDetector

bool DD4hep_TrackingMaterialAnalyser::m_skipAfterLastDetector
private

Definition at line 37 of file DD4hep_TrackingMaterialAnalyser.h.

Referenced by DD4hep_TrackingMaterialAnalyser(), and split().

◆ m_skipBeforeFirstDetector

bool DD4hep_TrackingMaterialAnalyser::m_skipBeforeFirstDetector
private

Definition at line 38 of file DD4hep_TrackingMaterialAnalyser.h.

Referenced by DD4hep_TrackingMaterialAnalyser(), and split().

◆ m_splitMode

SplitMode DD4hep_TrackingMaterialAnalyser::m_splitMode
private

Definition at line 36 of file DD4hep_TrackingMaterialAnalyser.h.

Referenced by DD4hep_TrackingMaterialAnalyser(), and split().

DD4hep_TrackingMaterialAnalyser::m_groupNames
std::vector< std::string > m_groupNames
Definition: DD4hep_TrackingMaterialAnalyser.h:46
MuonGeometrySanityCheck_cfi.detectors
def detectors(dt=True, csc=True, me42=False, chambers=True, superlayers=False, layers=False)
Definition: MuonGeometrySanityCheck_cfi.py:13
DD4hep_MaterialAccountingGroup::tracks
unsigned int tracks(void) const
Definition: DD4hep_MaterialAccountingGroup.h:68
alignBH_cfg.fixed
fixed
Definition: alignBH_cfg.py:54
DD4hep_TrackingMaterialPlotter
Definition: DD4hep_TrackingMaterialPlotter.h:16
mps_fire.i
i
Definition: mps_fire.py:355
step
step
Definition: StallMonitor.cc:94
edm::errors::LogicError
Definition: EDMException.h:37
DD4hep_TrackingMaterialAnalyser::INNER_LAYER
Definition: DD4hep_TrackingMaterialAnalyser.h:22
DD4hep_TrackingMaterialAnalyser::saveLayerPlots
void saveLayerPlots()
Definition: DD4hep_TrackingMaterialAnalyser.cc:116
edm
HLT enums.
Definition: AlignableModifier.h:19
DD4hep_TrackingMaterialAnalyser::m_saveParameters
bool m_saveParameters
Definition: DD4hep_TrackingMaterialAnalyser.h:41
gather_cfg.cout
cout
Definition: gather_cfg.py:144
DD4hep_TrackingMaterialAnalyser::m_splitMode
SplitMode m_splitMode
Definition: DD4hep_TrackingMaterialAnalyser.h:36
cms::cuda::assert
assert(be >=bs)
DD4hep_MaterialAccountingGroup::sigmaRadiationLengths
double sigmaRadiationLengths(void) const
Definition: DD4hep_MaterialAccountingGroup.cc:227
DD4hep_TrackingMaterialAnalyser::m_saveXml
bool m_saveXml
Definition: DD4hep_TrackingMaterialAnalyser.h:42
DD4hep_TrackingMaterialAnalyser::UNDEFINED
Definition: DD4hep_TrackingMaterialAnalyser.h:22
DD4hep_MaterialAccountingGroup::sigmaLength
double sigmaLength(void) const
Definition: DD4hep_MaterialAccountingGroup.cc:223
edm::Handle
Definition: AssociativeIterator.h:50
DD4hep_TrackingMaterialPlotter::plotSegmentInLayer
void plotSegmentInLayer(const MaterialAccountingStep &step, int layer)
Definition: DD4hep_TrackingMaterialPlotter.cc:136
singleTopDQM_cfi.setup
setup
Definition: singleTopDQM_cfi.py:37
end
#define end
Definition: vmac.h:39
parameters
parameters
Definition: BeamSpot_PayloadInspector.cc:14
DD4hep_TrackingMaterialAnalyser::m_isHGCal
bool m_isHGCal
Definition: DD4hep_TrackingMaterialAnalyser.h:43
contentValuesFiles.parts
parts
Definition: contentValuesFiles.py:58
DD4hep_MaterialAccountingGroup
Definition: DD4hep_MaterialAccountingGroup.h:23
DD4hep_TrackingMaterialAnalyser::m_groups
std::vector< DD4hep_MaterialAccountingGroup * > m_groups
Definition: DD4hep_TrackingMaterialAnalyser.h:45
dqm-mbProfile.format
format
Definition: dqm-mbProfile.py:16
OrderedSet.t
t
Definition: OrderedSet.py:90
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
DD4hep_TrackingMaterialAnalyser::m_skipBeforeFirstDetector
bool m_skipBeforeFirstDetector
Definition: DD4hep_TrackingMaterialAnalyser.h:38
DD4hep_MaterialAccountingGroup::averageLength
double averageLength(void) const
Definition: DD4hep_MaterialAccountingGroup.cc:215
beam_dqm_sourceclient-live_cfg.cerr
cerr
Definition: beam_dqm_sourceclient-live_cfg.py:17
DD4hep_MaterialAccountingGroup::sigmaEnergyLoss
double sigmaEnergyLoss(void) const
Definition: DD4hep_MaterialAccountingGroup.cc:233
DD4hep_TrackingMaterialAnalyser::NEAREST_LAYER
Definition: DD4hep_TrackingMaterialAnalyser.h:22
DD4hep_TrackingMaterialAnalyser::m_saveSummaryPlot
bool m_saveSummaryPlot
Definition: DD4hep_TrackingMaterialAnalyser.h:39
MaterialAccountingTrack
Definition: MaterialAccountingTrack.h:11
DD4hep_TrackingMaterialAnalyser::m_plotter
DD4hep_TrackingMaterialPlotter * m_plotter
Definition: DD4hep_TrackingMaterialAnalyser.h:47
DD4hep_TrackingMaterialAnalyser::saveXml
void saveXml(const char *name)
Definition: DD4hep_TrackingMaterialAnalyser.cc:100
edm::LogVerbatim
Definition: MessageLogger.h:297
DD4hep_TrackingMaterialAnalyser::OUTER_LAYER
Definition: DD4hep_TrackingMaterialAnalyser.h:22
DD4hep_MaterialAccountingGroup::savePlots
void savePlots(void)
Definition: DD4hep_MaterialAccountingGroup.cc:151
DD4hep_TrackingMaterialPlotter::plotSegmentUnassigned
void plotSegmentUnassigned(const MaterialAccountingStep &step)
Definition: DD4hep_TrackingMaterialPlotter.cc:125
get
#define get
DD4hep_TrackingMaterialAnalyser::m_saveDetailedPlots
bool m_saveDetailedPlots
Definition: DD4hep_TrackingMaterialAnalyser.h:40
edm::ESTransientHandle
Definition: ESTransientHandle.h:41
DD4hep_MaterialAccountingGroup::averageEnergyLoss
double averageEnergyLoss(void) const
Definition: DD4hep_MaterialAccountingGroup.cc:219
TH2PolyOfflineMaps.limits
limits
Definition: TH2PolyOfflineMaps.py:45
DD4hep_TrackingMaterialAnalyser::m_skipAfterLastDetector
bool m_skipAfterLastDetector
Definition: DD4hep_TrackingMaterialAnalyser.h:37
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
MaterialAccountingStep
Definition: MaterialAccountingStep.h:9
Exception
Definition: hltDiff.cc:246
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
or
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< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
DD4hep_MaterialAccountingGroup::averageRadiationLengths
double averageRadiationLengths(void) const
Definition: DD4hep_MaterialAccountingGroup.cc:237
AlignmentPI::index
index
Definition: AlignmentPayloadInspectorHelper.h:46
DD4hep_TrackingMaterialAnalyser::m_materialToken
edm::EDGetTokenT< std::vector< MaterialAccountingTrack > > m_materialToken
Definition: DD4hep_TrackingMaterialAnalyser.h:35
hgcalTestNeighbor_cfi.detector
detector
Definition: hgcalTestNeighbor_cfi.py:6
DD4hep_TrackingMaterialAnalyser::m_isHFNose
bool m_isHFNose
Definition: DD4hep_TrackingMaterialAnalyser.h:44
HLT_2018_cff.track
track
Definition: HLT_2018_cff.py:10352
DD4hep_TrackingMaterialAnalyser::split
void split(MaterialAccountingTrack &track)
Definition: DD4hep_TrackingMaterialAnalyser.cc:179
DD4hep_TrackingMaterialAnalyser::saveParameters
void saveParameters(const char *name)
Definition: DD4hep_TrackingMaterialAnalyser.cc:72
DD4hep_TrackingMaterialPlotter::draw
void draw(void)
Definition: DD4hep_TrackingMaterialPlotter.cc:147
DD4hep_MaterialAccountingGroup::name
const std::string & name(void) const
Definition: DD4hep_MaterialAccountingGroup.h:69
HLT_2018_cff.fraction
fraction
Definition: HLT_2018_cff.py:51317
edm::InputTag
Definition: InputTag.h:15
begin
#define begin
Definition: vmac.h:32
IdealGeometryRecord
Definition: IdealGeometryRecord.h:27
DD4hep_TrackingMaterialPlotter::normalize
void normalize(void)
Definition: DD4hep_TrackingMaterialPlotter.h:24
DD4hep_TrackingMaterialAnalyser::findLayer
int findLayer(const MaterialAccountingDetector &detector)
Definition: DD4hep_TrackingMaterialAnalyser.cc:337
watchdog.group
group
Definition: watchdog.py:82