CMS 3D CMS Logo

EventContentAnalyzer.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: Modules
4 // Class: EventContentAnalyzer
5 //
12 //
13 // Original Author: Chris Jones
14 // Created: Mon Sep 19 11:47:28 CEST 2005
15 //
16 //
17 
18 // user include files
36 
37 // system include files
38 #include <algorithm>
39 #include <iomanip>
40 #include <iostream>
41 #include <map>
42 #include <sstream>
43 #include <string>
44 #include <vector>
45 
46 namespace edm {
48  namespace {
49  std::string formatClassName(std::string const& iName) { return std::string("(") + iName + ")"; }
50 
51  char const* kNameValueSep = "=";
53  template <typename T>
54  void doPrint(std::string const& iName, ObjectWithDict const& iObject, std::string const& iIndent) {
55  LogAbsolute("EventContent") << iIndent << iName << kNameValueSep
56  << *reinterpret_cast<T*>(iObject.address()); // << "\n";
57  }
58 
59  template <>
60  void doPrint<char>(std::string const& iName, ObjectWithDict const& iObject, std::string const& iIndent) {
61  LogAbsolute("EventContent") << iIndent << iName << kNameValueSep
62  << static_cast<int>(*reinterpret_cast<char*>(iObject.address())); // << "\n";
63  }
64 
65  template <>
66  void doPrint<unsigned char>(std::string const& iName, ObjectWithDict const& iObject, std::string const& iIndent) {
67  LogAbsolute("EventContent") << iIndent << iName << kNameValueSep
68  << static_cast<unsigned int>(
69  *reinterpret_cast<unsigned char*>(iObject.address())); // << "\n";
70  }
71 
72  template <>
73  void doPrint<bool>(std::string const& iName, ObjectWithDict const& iObject, std::string const& iIndent) {
74  LogAbsolute("EventContent") << iIndent << iName << kNameValueSep
75  << ((*reinterpret_cast<bool*>(iObject.address())) ? "true" : "false"); // << "\n";
76  }
77 
78  typedef void (*FunctionType)(std::string const&, ObjectWithDict const&, std::string const&);
79  typedef std::map<std::string, FunctionType> TypeToPrintMap;
80 
81  template <typename T>
82  void addToMap(TypeToPrintMap& iMap) {
83  iMap[typeid(T).name()] = doPrint<T>;
84  }
85 
86  bool printAsBuiltin(std::string const& iName, ObjectWithDict const& iObject, std::string const& iIndent) {
87  typedef void (*FunctionType)(std::string const&, ObjectWithDict const&, std::string const&);
88  typedef std::map<std::string, FunctionType> TypeToPrintMap;
89  static TypeToPrintMap s_map;
90  static bool isFirst = true;
91  if (isFirst) {
92  addToMap<bool>(s_map);
93  addToMap<char>(s_map);
94  addToMap<short>(s_map);
95  addToMap<int>(s_map);
96  addToMap<long>(s_map);
97  addToMap<unsigned char>(s_map);
98  addToMap<unsigned short>(s_map);
99  addToMap<unsigned int>(s_map);
100  addToMap<unsigned long>(s_map);
101  addToMap<float>(s_map);
102  addToMap<double>(s_map);
103  isFirst = false;
104  }
105  TypeToPrintMap::iterator itFound = s_map.find(iObject.typeOf().name());
106  if (itFound == s_map.end()) {
107  return false;
108  }
109  itFound->second(iName, iObject, iIndent);
110  return true;
111  }
112 
113  bool printAsContainer(std::string const& iName,
114  ObjectWithDict const& iObject,
115  std::string const& iIndent,
116  std::string const& iIndentDelta);
117 
118  void printObject(std::string const& iName,
119  ObjectWithDict const& iObject,
120  std::string const& iIndent,
121  std::string const& iIndentDelta) {
122  const std::string& printName = iName;
123  const ObjectWithDict& objectToPrint = iObject;
124  std::string indent(iIndent);
125  if (iObject.typeOf().isPointer()) {
126  LogAbsolute("EventContent") << iIndent << iName << kNameValueSep << formatClassName(iObject.typeOf().name())
127  << std::hex << iObject.address() << std::dec; // << "\n";
128  TypeWithDict pointedType = iObject.typeOf().toType(); // for Pointers, I get the real type this way
129  if (TypeWithDict::byName("void") == pointedType || pointedType.isPointer() || iObject.address() == nullptr) {
130  return;
131  }
132  return;
133  /*
134  //have the code that follows print the contents of the data to which the pointer points
135  objectToPrint = ObjectWithDict(pointedType, iObject.address());
136  //try to convert it to its actual type (assuming the original type was a base class)
137  objectToPrint = ObjectWithDict(objectToPrint.castObject(objectToPrint.dynamicType()));
138  printName = std::string("*")+iName;
139  indent += iIndentDelta;
140  */
141  }
142  std::string typeName(objectToPrint.typeOf().name());
143  if (typeName.empty()) {
144  typeName = "<unknown>";
145  }
146 
147  if (printAsBuiltin(printName, objectToPrint, indent)) {
148  return;
149  }
150  if (printAsContainer(printName, objectToPrint, indent, iIndentDelta)) {
151  return;
152  }
153 
154  LogAbsolute("EventContent") << indent << printName << " " << formatClassName(typeName); // << "\n";
155  indent += iIndentDelta;
156  //print all the data members
157  TypeDataMembers dataMembers(objectToPrint.typeOf());
158  for (auto const& dataMember : dataMembers) {
159  MemberWithDict const member(dataMember);
160  //LogAbsolute("EventContent") << " debug " << member.name() << " " << member.typeName() << "\n";
161  try {
162  printObject(member.name(), member.get(objectToPrint), indent, iIndentDelta);
163  } catch (std::exception& iEx) {
164  LogAbsolute("EventContent") << indent << member.name() << " <exception caught(" << iEx.what() << ")>\n";
165  }
166  }
167  }
168 
169  bool printAsContainer(std::string const& iName,
170  ObjectWithDict const& iObject,
171  std::string const& iIndent,
172  std::string const& iIndentDelta) {
173  ObjectWithDict sizeObj;
174  try {
175  size_t temp; //used to hold the memory for the return value
176  FunctionWithDict sizeFunc = iObject.typeOf().functionMemberByName("size");
177  assert(sizeFunc.finalReturnType() == typeid(size_t));
178  sizeObj = ObjectWithDict(TypeWithDict(typeid(size_t)), &temp);
179  sizeFunc.invoke(iObject, &sizeObj);
180  //std::cout << "size of type '" << sizeObj.name() << "' " << sizeObj.typeName() << std::endl;
181  size_t size = *reinterpret_cast<size_t*>(sizeObj.address());
182  FunctionWithDict atMember;
183  try {
184  atMember = iObject.typeOf().functionMemberByName("at");
185  } catch (std::exception const& x) {
186  //std::cerr << "could not get 'at' member because " << x.what() << std::endl;
187  return false;
188  }
189  LogAbsolute("EventContent") << iIndent << iName << kNameValueSep << "[size=" << size << "]"; //"\n";
190  ObjectWithDict contained;
191  std::string indexIndent = iIndent + iIndentDelta;
192  TypeWithDict atReturnType(atMember.finalReturnType());
193  //std::cout << "return type " << atReturnType.name() << " size of " << atReturnType.SizeOf()
194  // << " pointer? " << atReturnType.isPointer() << " ref? " << atReturnType.isReference() << std::endl;
195 
196  //Return by reference must be treated differently since reflex will not properly create
197  // memory for a ref (which should just be a pointer to the object and not the object itself)
198  //So we will create memory on the stack which can be used to hold a reference
199  bool const isRef = atReturnType.isReference();
200  void* refMemoryBuffer = nullptr;
201  size_t index = 0;
202  //The argument to the 'at' function is the index. Since the argument list holds pointers to the arguments
203  // we only need to create it once and then when the value of index changes the pointer already
204  // gets the new value
205  std::vector<void*> args;
206  args.push_back(&index);
207  for (; index != size; ++index) {
208  std::ostringstream sizeS;
209  sizeS << "[" << index << "]";
210  if (isRef) {
211  ObjectWithDict refObject(atReturnType, &refMemoryBuffer);
212  atMember.invoke(iObject, &refObject, args);
213  //Although to hold the return value from a reference reflex requires you to pass it a
214  // void** when it tries to call methods on the reference it expects to be given a void*
215  contained = ObjectWithDict(atReturnType, refMemoryBuffer);
216  } else {
217  contained = atReturnType.construct();
218  atMember.invoke(iObject, &contained, args);
219  }
220  //LogAbsolute("EventContent") << "invoked 'at'" << std::endl;
221  try {
222  printObject(sizeS.str(), contained, indexIndent, iIndentDelta);
223  } catch (std::exception& iEx) {
224  LogAbsolute("EventContent") << indexIndent << iName << " <exception caught(" << iEx.what() << ")>\n";
225  }
226  if (!isRef) {
227  contained.destruct(true);
228  }
229  }
230  return true;
231  } catch (std::exception const& x) {
232  //std::cerr << "failed to invoke 'at' because " << x.what() << std::endl;
233  return false;
234  }
235  return false;
236  }
237 
238  void printObject(Event const& iEvent,
239  std::string const& iClassName,
240  std::string const& iModuleLabel,
241  std::string const& iInstanceLabel,
242  std::string const& iProcessName,
243  std::string const& iIndent,
244  std::string const& iIndentDelta) {
245  try {
246  GenericHandle handle(iClassName);
247  } catch (edm::Exception const&) {
248  LogAbsolute("EventContent") << iIndent << " \"" << iClassName << "\""
249  << " is an unknown type" << std::endl;
250  return;
251  }
252  GenericHandle handle(iClassName);
253  iEvent.getByLabel(InputTag(iModuleLabel, iInstanceLabel, iProcessName), handle);
254  std::string className = formatClassName(iClassName);
255  printObject(className, *handle, iIndent, iIndentDelta);
256  }
257  } // namespace
258 
260  public:
261  explicit EventContentAnalyzer(ParameterSet const&);
262  ~EventContentAnalyzer() override;
263 
264  void analyze(Event const&, EventSetup const&) override;
265  void endJob() override;
266 
267  static void fillDescriptions(ConfigurationDescriptions& descriptions);
268 
269  private:
270  // ----------member data ---------------------------
273  std::vector<std::string> moduleLabels_;
274  bool verbose_;
275  std::vector<std::string> getModuleLabels_;
276  bool getData_;
277  int evno_;
278  std::map<std::string, int> cumulates_;
281  };
282 
283  //
284  // constructors and destructor
285  //
287  : indentation_(iConfig.getUntrackedParameter("indentation", std::string("++"))),
288  verboseIndentation_(iConfig.getUntrackedParameter("verboseIndentation", std::string(" "))),
289  moduleLabels_(iConfig.getUntrackedParameter("verboseForModuleLabels", std::vector<std::string>())),
290  verbose_(iConfig.getUntrackedParameter("verbose", false) || !moduleLabels_.empty()),
291  getModuleLabels_(iConfig.getUntrackedParameter("getDataForModuleLabels", std::vector<std::string>())),
292  getData_(iConfig.getUntrackedParameter("getData", false) || !getModuleLabels_.empty()),
293  evno_(1),
294  listContent_(iConfig.getUntrackedParameter("listContent", true)),
295  listProvenance_(iConfig.getUntrackedParameter("listProvenance", false)) {
296  //now do what ever initialization is needed
299  if (getData_) {
301  if (getModuleLabels_.empty()) {
302  const std::string kPathStatus("edm::PathStatus");
303  const std::string kEndPathStatus("edm::EndPathStatus");
304  if (iBranch.className() != kPathStatus && iBranch.className() != kEndPathStatus) {
306  edm::InputTag{iBranch.moduleLabel(), iBranch.productInstanceName(), iBranch.processName()});
307  }
308  } else {
309  for (auto const& mod : this->getModuleLabels_) {
310  if (iBranch.moduleLabel() == mod) {
312  edm::InputTag{mod, iBranch.productInstanceName(), iBranch.processName()});
313  break;
314  }
315  }
316  }
317  });
318  }
319  }
320 
322  // do anything here that needs to be done at destruction time
323  // (e.g. close files, deallocate resources etc.)
324  }
325 
326  //
327  // member functions
328  //
329 
330  // ------------ method called to produce the data ------------
332  typedef std::vector<StableProvenance const*> Provenances;
333  Provenances provenances;
334 
335  iEvent.getAllStableProvenance(provenances);
336 
337  if (listContent_) {
338  LogAbsolute("EventContent") << "\n"
339  << indentation_ << "Event " << std::setw(5) << evno_ << " contains "
340  << provenances.size() << " product" << (provenances.size() == 1 ? "" : "s")
341  << " with friendlyClassName, moduleLabel, productInstanceName and processName:"
342  << std::endl;
343  }
344 
346  for (auto const& provenance : provenances) {
347  std::string const& className = provenance->className();
348  const std::string kPathStatus("edm::PathStatus");
349  const std::string kEndPathStatus("edm::EndPathStatus");
350  if (className == kPathStatus || className == kEndPathStatus) {
351  continue;
352  }
353  std::string const& friendlyName = provenance->friendlyClassName();
354  //if(friendlyName.empty()) friendlyName = std::string("||");
355 
356  std::string const& modLabel = provenance->moduleLabel();
357  //if(modLabel.empty()) modLabel = std::string("||");
358 
359  std::string const& instanceName = provenance->productInstanceName();
360  //if(instanceName.empty()) instanceName = std::string("||");
361 
362  std::string const& processName = provenance->processName();
363 
364  bool doVerbose = verbose_ && (moduleLabels_.empty() || binary_search_all(moduleLabels_, modLabel));
365 
366  if (listContent_ || doVerbose) {
367  LogAbsolute("EventContent") << indentation_ << friendlyName << " \"" << modLabel << "\" \"" << instanceName
368  << "\" \"" << processName << "\""
369  << " (productId = " << provenance->productID() << ")" << std::endl;
370 
371  if (listProvenance_) {
372  auto const& prov = iEvent.getProvenance(provenance->branchID());
373  auto const* productProvenance = prov.productProvenance();
374  if (productProvenance) {
375  const bool isAlias = productProvenance->branchID() != provenance->branchID();
376  std::string aliasForModLabel;
377  LogAbsolute("EventContent") << prov;
378  if (isAlias) {
379  aliasForModLabel = iEvent.getProvenance(productProvenance->branchID()).moduleLabel();
380  LogAbsolute("EventContent") << "Is an alias for " << aliasForModLabel;
381  }
382  ProcessHistory const& processHistory = iEvent.processHistory();
383  for (ProcessConfiguration const& pc : processHistory) {
384  if (pc.processName() == prov.processName()) {
385  ParameterSetID const& psetID = pc.parameterSetID();
386  pset::Registry const* psetRegistry = pset::Registry::instance();
387  ParameterSet const* processPset = psetRegistry->getMapped(psetID);
388  if (processPset) {
389  if (processPset->existsAs<ParameterSet>(modLabel)) {
390  if (isAlias) {
391  LogAbsolute("EventContent") << "Alias PSet";
392  }
393  LogAbsolute("EventContent") << processPset->getParameterSet(modLabel);
394  }
395  if (isAlias and processPset->existsAs<ParameterSet>(aliasForModLabel)) {
396  LogAbsolute("EventContent") << processPset->getParameterSet(aliasForModLabel);
397  }
398  }
399  }
400  }
401  }
402  }
403  }
404  std::string key = friendlyName + std::string(" + \"") + modLabel + std::string("\" + \"") + instanceName +
405  "\" \"" + processName + "\"";
406  ++cumulates_[key];
407 
408  if (doVerbose) {
409  //indent one level before starting to print
410  printObject(iEvent, className, modLabel, instanceName, processName, startIndent, verboseIndentation_);
411  continue;
412  }
413  if (getData_) {
414  std::string class_and_label = friendlyName + "_" + modLabel;
415  if (getModuleLabels_.empty() || binary_search_all(getModuleLabels_, modLabel) ||
416  binary_search_all(getModuleLabels_, class_and_label)) {
417  try {
419  } catch (edm::Exception const&) {
420  LogAbsolute("EventContent") << startIndent << " \"" << className << "\""
421  << " is an unknown type" << std::endl;
422  return;
423  }
425  iEvent.getByLabel(InputTag(modLabel, instanceName, processName), handle);
426  }
427  }
428  }
429  //std::cout << "Mine" << std::endl;
430  ++evno_;
431  }
432 
433  // ------------ method called at end of job -------------------
435  typedef std::map<std::string, int> nameMap;
436 
437  LogAbsolute("EventContent") << "\nSummary for key being the concatenation of friendlyClassName, moduleLabel, "
438  "productInstanceName and processName"
439  << std::endl;
440  for (nameMap::const_iterator it = cumulates_.begin(), itEnd = cumulates_.end(); it != itEnd; ++it) {
441  LogAbsolute("EventContent") << std::setw(6) << it->second << " occurrences of key " << it->first << std::endl;
442  }
443 
444  // Test boost::lexical_cast We don't need this right now so comment it out.
445  // int k = 137;
446  // std::string ktext = boost::lexical_cast<std::string>(k);
447  // std::cout << "\nInteger " << k << " expressed as a string is |" << ktext << "|" << std::endl;
448  }
449 
451  descriptions.setComment(
452  "This plugin will print a list of all products in the event "
453  "provenance. It also has options to print and/or get each product.");
454 
456 
458 
459  std::string defaultString("++");
460  np = desc.addOptionalUntracked<std::string>("indentation", defaultString);
461  np->setComment("This string is printed at the beginning of every line printed during event processing.");
462 
463  np = desc.addOptionalUntracked<bool>("verbose", false);
464  np->setComment("If true, the contents of products are printed.");
465 
466  defaultString = " ";
467  np = desc.addOptionalUntracked<std::string>("verboseIndentation", defaultString);
468  np->setComment(
469  "This string is used to further indent lines when printing the contents of products in verbose mode.");
470 
471  std::vector<std::string> defaultVString;
472 
473  np = desc.addOptionalUntracked<std::vector<std::string> >("verboseForModuleLabels", defaultVString);
474  np->setComment("If this vector is not empty, then only products with module labels on this list are printed.");
475 
476  np = desc.addOptionalUntracked<bool>("getData", false);
477  np->setComment("If true the products will be retrieved using getByLabel.");
478 
479  np = desc.addOptionalUntracked<std::vector<std::string> >("getDataForModuleLabels", defaultVString);
480  np->setComment(
481  "If this vector is not empty, then only products with module labels on this list are retrieved by getByLabel.");
482 
483  np = desc.addOptionalUntracked<bool>("listContent", true);
484  np->setComment("If true then print a list of all the event content.");
485 
486  np = desc.addOptionalUntracked<bool>("listProvenance", false);
487  np->setComment("If true, and if listContent or verbose is true, print provenance information for each product");
488 
489  descriptions.add("printContent", desc);
490  }
491 } // namespace edm
492 
ConfigurationDescriptions.h
edm::pset::Registry::instance
static Registry * instance()
Definition: Registry.cc:12
writedatasetfile.args
args
Definition: writedatasetfile.py:18
edm::LogAbsolute
Definition: MessageLogger.h:469
TypeToGet.h
edm::TypeWithDict::byName
static TypeWithDict byName(std::string const &name)
Definition: TypeWithDict.cc:74
edm::BranchDescription::productInstanceName
std::string const & productInstanceName() const
Definition: BranchDescription.h:81
edm::EventContentAnalyzer::~EventContentAnalyzer
~EventContentAnalyzer() override
Definition: EventContentAnalyzer.cc:321
MessageLogger.h
funct::false
false
Definition: Factorize.h:34
edm::PRODUCT_TYPE
Definition: ProductKindOfType.h:5
edm::sort_all
void sort_all(RandomAccessSequence &s)
wrappers for std::sort
Definition: Algorithms.h:92
patZpeak.handle
handle
Definition: patZpeak.py:23
edm
HLT enums.
Definition: AlignableModifier.h:19
mod
T mod(const T &a, const T &b)
Definition: ecalDccMap.h:4
np
int np
Definition: AMPTWrapper.h:43
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
Algorithms.h
edm::EventContentAnalyzer::listProvenance_
bool listProvenance_
Definition: EventContentAnalyzer.cc:280
cms::cuda::assert
assert(be >=bs)
edm::EventContentAnalyzer
Definition: EventContentAnalyzer.cc:259
edm::EventContentAnalyzer::fillDescriptions
static void fillDescriptions(ConfigurationDescriptions &descriptions)
Definition: EventContentAnalyzer.cc:450
TypeWithDict.h
EDAnalyzer.h
edm::ParameterSet::existsAs
bool existsAs(std::string const &parameterName, bool trackiness=true) const
checks if a parameter exists as a given type
Definition: ParameterSet.h:160
edm::EventContentAnalyzer::EventContentAnalyzer
EventContentAnalyzer(ParameterSet const &)
Definition: EventContentAnalyzer.cc:286
edm::EventContentAnalyzer::listContent_
bool listContent_
Definition: EventContentAnalyzer.cc:279
cuy.isFirst
isFirst
Definition: cuy.py:419
groupFilesInBlocks.temp
list temp
Definition: groupFilesInBlocks.py:142
edm::EventContentAnalyzer::analyze
void analyze(Event const &, EventSetup const &) override
Definition: EventContentAnalyzer.cc:331
edm::ParameterSetDescription::addOptionalUntracked
ParameterDescriptionBase * addOptionalUntracked(U const &iLabel, T const &value)
Definition: ParameterSetDescription.h:110
edm::EDAnalyzer
Definition: EDAnalyzer.h:29
edm::Exception
Definition: EDMException.h:77
ObjectWithDict.h
MakerMacros.h
GenericHandle.h
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
edm::ConfigurationDescriptions::add
void add(std::string const &label, ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:57
edm::BranchDescription::processName
std::string const & processName() const
Definition: BranchDescription.h:73
GenericHandle
edm::TypeWithDict::isPointer
bool isPointer() const
Definition: TypeWithDict.cc:416
Provenance.h
edm::EventContentAnalyzer::endJob
void endJob() override
Definition: EventContentAnalyzer.cc:434
edm::BranchDescription::unwrappedTypeID
TypeID unwrappedTypeID() const
Definition: BranchDescription.h:97
Event
edm::Hash< ParameterSetType >
ParameterDescriptionNode.h
edm::binary_search_all
bool binary_search_all(ForwardSequence const &s, Datum const &d)
wrappers for std::binary_search
Definition: Algorithms.h:58
ParameterSetDescription.h
edm::ConfigurationDescriptions
Definition: ConfigurationDescriptions.h:28
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
edm::EventContentAnalyzer::indentation_
std::string indentation_
Definition: EventContentAnalyzer.cc:271
cppFunctionSkipper.exception
exception
Definition: cppFunctionSkipper.py:10
funct::true
true
Definition: Factorize.h:173
dqmiodumpindices.typeName
typeName
Definition: dqmiodumpindices.py:33
HLT_2018_cff.InputTag
InputTag
Definition: HLT_2018_cff.py:79016
edm::ParameterSet
Definition: ParameterSet.h:36
Event.h
edm::EventContentAnalyzer::cumulates_
std::map< std::string, int > cumulates_
Definition: EventContentAnalyzer.cc:278
edm::ConfigurationDescriptions::setComment
void setComment(std::string const &value)
Definition: ConfigurationDescriptions.cc:48
edm::friendlyname::friendlyName
std::string friendlyName(std::string const &iFullName)
Definition: FriendlyName.cc:233
iEvent
int iEvent
Definition: GenABIO.cc:224
edm::EventSetup
Definition: EventSetup.h:57
SimL1EmulatorRepack_CalouGT_cff.processName
processName
Definition: SimL1EmulatorRepack_CalouGT_cff.py:17
Registry.h
std
Definition: JetResolutionObject.h:76
ConfigurationDescriptions
edm::BranchDescription::moduleLabel
std::string const & moduleLabel() const
Definition: BranchDescription.h:72
T
long double T
Definition: Basic3DVectorLD.h:48
edm::EDAnalyzer::callWhenNewProductsRegistered
void callWhenNewProductsRegistered(std::function< void(BranchDescription const &)> const &func)
Definition: EDAnalyzer.cc:99
relativeConstraints.empty
bool empty
Definition: relativeConstraints.py:46
util.rrClient.indent
indent
Definition: rrClient.py:41
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
edm::EventContentAnalyzer::moduleLabels_
std::vector< std::string > moduleLabels_
Definition: EventContentAnalyzer.cc:273
AlignmentPI::index
index
Definition: AlignmentPayloadInspectorHelper.h:46
funct::void
TEMPL(T2) struct Divides void
Definition: Factorize.h:29
edm::EventContentAnalyzer::evno_
int evno_
Definition: EventContentAnalyzer.cc:277
className
std::string className(const T &t)
Definition: ClassName.h:31
edm::BranchDescription
Definition: BranchDescription.h:32
edm::BranchDescription::className
std::string const & className() const
Definition: BranchDescription.h:79
doPrint
static const bool doPrint
Definition: MSLayersAtAngle.cc:73
edm::ProcessHistory
Definition: ProcessHistory.h:13
ParameterSet.h
HerwigMaxPtPartonFilter_cfi.moduleLabel
moduleLabel
Definition: HerwigMaxPtPartonFilter_cfi.py:4
edm::EDConsumerBase::consumes
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
Definition: EDConsumerBase.h:126
edm::EventContentAnalyzer::getModuleLabels_
std::vector< std::string > getModuleLabels_
Definition: EventContentAnalyzer.cc:275
edm::TypeToGet
Definition: TypeToGet.h:32
edm::Event
Definition: Event.h:73
edm::EventContentAnalyzer::verboseIndentation_
std::string verboseIndentation_
Definition: EventContentAnalyzer.cc:272
MuonErrorMatrixAdjuster_cfi.instanceName
instanceName
Definition: MuonErrorMatrixAdjuster_cfi.py:16
crabWrapper.key
key
Definition: crabWrapper.py:19
edm::ParameterDescriptionNode
Definition: ParameterDescriptionNode.h:82
edm::Handle< GenericObject >
Definition: GenericHandle.h:43
MemberWithDict.h
edm::pset::Registry::getMapped
bool getMapped(key_type const &k, value_type &result) const
Definition: Registry.cc:17
TauDecayModes.dec
dec
Definition: TauDecayModes.py:143
edm::InputTag
Definition: InputTag.h:15
edm::ProcessConfiguration
Definition: ProcessConfiguration.h:14
edm::ParameterSet::getParameterSet
ParameterSet const & getParameterSet(std::string const &) const
Definition: ParameterSet.cc:2121
edm::pset::Registry
Definition: Registry.h:26
edm::EventContentAnalyzer::getData_
bool getData_
Definition: EventContentAnalyzer.cc:276
FunctionWithDict.h
findQualityFiles.size
size
Write out results.
Definition: findQualityFiles.py:443
edm::EventContentAnalyzer::verbose_
bool verbose_
Definition: EventContentAnalyzer.cc:274