CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
ProvenanceDumper Class Reference
Inheritance diagram for ProvenanceDumper:

Public Member Functions

void dump (std::ostream &os)
 
int exitCode () const
 
void printErrors (std::ostream &os)
 
 ProvenanceDumper (std::string const &filename, bool showDependencies, bool excludeESModules, bool showAllModules, std::string const &findMatch)
 

Private Member Functions

void dumpEventFilteringParameterSets (edm::EventSelectionIDVector const &ids)
 
void dumpEventFilteringParameterSets_ (TFile *file)
 
void dumpParameterSetForID_ (edm::ParameterSetID const &id)
 
void dumpProcessHistory_ ()
 
void work_ ()
 

Private Attributes

int errorCount_
 
std::stringstream errorLog_
 
bool excludeESModules_
 
int exitCode_
 
std::string filename_
 
std::string findMatch_
 
HistoryNode historyGraph_
 
boost::scoped_ptr< TFile > inputFile_
 
edm::ProcessConfigurationVector phc_
 
edm::ProcessHistoryVector phv_
 
ParameterSetMap psm_
 
edm::ProductRegistry reg_
 
bool showDependencies_
 
bool showOtherModules_
 

Detailed Description

Definition at line 373 of file EdmProvDump.cc.

Constructor & Destructor Documentation

ProvenanceDumper::ProvenanceDumper ( std::string const &  filename,
bool  showDependencies,
bool  excludeESModules,
bool  showAllModules,
std::string const &  findMatch 
)

Definition at line 411 of file EdmProvDump.cc.

415  :
417  inputFile_(makeTFile(filename)),
418  exitCode_(0),
419  errorLog_(),
420  errorCount_(0),
421  showDependencies_(showDependencies),
422  excludeESModules_(excludeESModules),
423  showOtherModules_(showOtherModules),
424  findMatch_(findMatch) {
425 }
std::stringstream errorLog_
Definition: EdmProvDump.cc:392
boost::scoped_ptr< TFile > inputFile_
Definition: EdmProvDump.cc:390
std::string findMatch_
Definition: EdmProvDump.cc:402
std::string filename_
Definition: EdmProvDump.cc:389
tuple filename
Definition: lut2db_cfg.py:20

Member Function Documentation

void ProvenanceDumper::dump ( std::ostream &  os)

Definition at line 428 of file EdmProvDump.cc.

References work_().

Referenced by main().

428  {
429  work_();
430 }
void ProvenanceDumper::dumpEventFilteringParameterSets ( edm::EventSelectionIDVector const &  ids)
private

Definition at line 443 of file EdmProvDump.cc.

References gather_cfg::cout, dumpParameterSetForID_(), and i.

Referenced by dumpEventFilteringParameterSets_().

443  {
444  edm::EventSelectionIDVector::size_type num_ids = ids.size();
445  if(num_ids == 0) {
446  std::cout << "No event filtering information is available.\n";
447  std::cout << "------------------------------\n";
448  } else {
449  std::cout << "Event filtering information for "
450  << num_ids
451  << " processing steps is available.\n"
452  << "The ParameterSets will be printed out, "
453  << "with the oldest printed first.\n";
454  for(edm::EventSelectionIDVector::size_type i = 0; i != num_ids; ++i) {
456  }
457  }
458 }
int i
Definition: DBlmapReader.cc:9
void dumpParameterSetForID_(edm::ParameterSetID const &id)
Definition: EdmProvDump.cc:491
uint16_t size_type
tuple cout
Definition: gather_cfg.py:41
void ProvenanceDumper::dumpEventFilteringParameterSets_ ( TFile *  file)
private

Definition at line 461 of file EdmProvDump.cc.

References gather_cfg::cout, dumpEventFilteringParameterSets(), edm::poolNames::eventHistoryBranchName(), edm::poolNames::eventHistoryTreeName(), patZpeak::events, edm::History::eventSelectionIDs(), edm::poolNames::eventSelectionsBranchName(), edm::poolNames::eventTreeName(), and h.

Referenced by work_().

461  {
462 
463  TTree* history = dynamic_cast<TTree*>(file->Get(edm::poolNames::eventHistoryTreeName().c_str()));
464  if(history != 0) {
465  edm::History h;
466  edm::History* ph = &h;
467 
468  history->SetBranchAddress(edm::poolNames::eventHistoryBranchName().c_str(), &ph);
469  if(history->GetEntry(0) <= 0) {
470  std::cout << "No event filtering information is available; the event history tree has no entries\n";
471  } else {
473  }
474  } else {
475  TTree* events = dynamic_cast<TTree*>(file->Get(edm::poolNames::eventTreeName().c_str()));
476  assert (events != 0);
477  TBranch* eventSelectionsBranch = events->GetBranch(edm::poolNames::eventSelectionsBranchName().c_str());
478  assert (eventSelectionsBranch != 0);
480  edm::EventSelectionIDVector* pids = &ids;
481  eventSelectionsBranch->SetAddress(&pids);
482  if(eventSelectionsBranch->GetEntry(0) <= 0) {
483  std::cout << "No event filtering information is available; the event selections branch has no entries\n";
484  } else {
486  }
487  }
488 }
std::string const & eventSelectionsBranchName()
Definition: BranchType.cc:227
std::vector< EventSelectionID > EventSelectionIDVector
EventSelectionIDVector const & eventSelectionIDs() const
Definition: History.h:42
void dumpEventFilteringParameterSets(edm::EventSelectionIDVector const &ids)
Definition: EdmProvDump.cc:443
std::string const & eventHistoryBranchName()
Definition: BranchType.cc:222
tuple events
Definition: patZpeak.py:19
std::string const & eventTreeName()
Definition: BranchType.cc:244
tuple cout
Definition: gather_cfg.py:41
std::string const & eventHistoryTreeName()
Definition: BranchType.cc:252
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
void ProvenanceDumper::dumpParameterSetForID_ ( edm::ParameterSetID const &  id)
private

Definition at line 491 of file EdmProvDump.cc.

References gather_cfg::cout, relativeConstraints::empty, i, edm::ParameterSet::id(), prettyPrint(), and psm_.

Referenced by dumpEventFilteringParameterSets().

491  {
492  std::cout << "ParameterSetID: " << id << '\n';
493  if(id.isValid()) {
494  ParameterSetMap::const_iterator i = psm_.find(id);
495  if(i == psm_.end()) {
496  std::cout << "We are unable to find the corresponding ParameterSet\n";
498  if(id == empty.id()) {
499  std::cout << "But it would have been empty anyway\n";
500  }
501  } else {
502  edm::ParameterSet ps(i->second.pset());
503  prettyPrint(std::cout, ps, " ", " ");
504  std::cout<< '\n';
505  }
506  } else {
507  std::cout << "This ID is not valid\n";
508  }
509  std::cout << " -------------------------\n";
510 }
int i
Definition: DBlmapReader.cc:9
ParameterSetID id() const
ParameterSetMap psm_
Definition: EdmProvDump.cc:397
static std::ostream & prettyPrint(std::ostream &oStream, edm::ParameterSet const &iPSet, std::string const &iIndent, std::string const &iIndentDelta)
Definition: EdmProvDump.cc:345
tuple cout
Definition: gather_cfg.py:41
void ProvenanceDumper::dumpProcessHistory_ ( )
private

Definition at line 513 of file EdmProvDump.cc.

References gather_cfg::cout, historyGraph_, dbtoconf::parent, and phv_.

Referenced by work_().

513  {
514  std::cout << "Processing History:" << std::endl;
515  if(1 == phv_.size()) {
516  std::cout << *phv_.begin();
517  historyGraph_.addChild(HistoryNode(*(phv_.begin()->begin()), 1));
518  } else {
519  bool multipleHistories = false;
520  std::map<edm::ProcessConfigurationID, unsigned int> simpleIDs;
521  for(edm::ProcessHistoryVector::const_iterator it = phv_.begin(), itEnd = phv_.end();
522  it != itEnd;
523  ++it) {
524  //loop over the history entries looking for matches
525  HistoryNode* parent = &historyGraph_;
526  for(edm::ProcessHistory::const_iterator itH = it->begin(), e = it->end();
527  itH != e;
528  ++itH) {
529  if(parent->size() == 0) {
530  unsigned int id = simpleIDs[itH->id()];
531  if(0 == id) {
532  id = 1;
533  simpleIDs[itH->id()] = id;
534  }
535  parent->addChild(HistoryNode(*itH, id));
536  parent = parent->lastChildAddress();
537  } else {
538  //see if this is unique
539  bool isUnique = true;
540  for(HistoryNode::iterator itChild = parent->begin(), itChildEnd = parent->end();
541  itChild != itChildEnd;
542  ++itChild) {
543  if(itChild->configurationID() == itH->id()) {
544  isUnique = false;
545  parent = &(*itChild);
546  break;
547  }
548  }
549  if(isUnique) {
550  multipleHistories = true;
551  simpleIDs[itH->id()] = parent->size() + 1;
552  parent->addChild(HistoryNode(*itH, simpleIDs[itH->id()]));
553  parent = parent->lastChildAddress();
554  }
555  }
556  }
557  }
558  historyGraph_.printHistory();
559  }
560 }
collection_type::const_iterator const_iterator
list parent
Definition: dbtoconf.py:74
HistoryNode historyGraph_
Definition: EdmProvDump.cc:398
edm::ProcessHistoryVector phv_
Definition: EdmProvDump.cc:396
tuple cout
Definition: gather_cfg.py:41
int ProvenanceDumper::exitCode ( ) const

Definition at line 438 of file EdmProvDump.cc.

References exitCode_.

Referenced by main().

438  {
439  return exitCode_;
440 }
void ProvenanceDumper::printErrors ( std::ostream &  os)

Definition at line 433 of file EdmProvDump.cc.

References errorCount_, and errorLog_.

Referenced by main().

433  {
434  if(errorCount_ > 0) os << errorLog_.str() << std::endl;
435 }
std::stringstream errorLog_
Definition: EdmProvDump.cc:392
void ProvenanceDumper::work_ ( )
private

Definition at line 563 of file EdmProvDump.cc.

References edm::BranchTypeToBranchEntryInfoBranchName(), edm::BranchTypeToMetaDataTreeName(), edm::BranchTypeToProductTreeName(), benchmark_cfg::cerr, gather_cfg::cout, dumpEventFilteringParameterSets_(), dumpProcessHistory_(), errorCount_, errorLog_, excludeESModules_, exitCode_, f, edm::fillProductRegistryTransients(), findMatch_, edm::detail::ThreadSafeRegistry< KEY, T, E >::getMapped(), historyGraph_, i, edm::poolNames::idToParameterSetBlobsBranchName(), edm::InEvent, info, inputFile_, edm::detail::ThreadSafeRegistry< KEY, T, E >::insertMapped(), edm::detail::ThreadSafeRegistry< KEY, T, E >::instance(), j, edm::poolNames::metaDataTreeName(), edm::poolNames::moduleDescriptionMapBranchName(), edm::numEntries(), or, edm::poolNames::parameterSetMapBranchName(), edm::poolNames::parameterSetsTreeName(), edm::poolNames::parentageBranchName(), edm::poolNames::parentageTreeName(), edm::Parentage::parents(), phc_, phv_, prettyPrint(), edm::poolNames::processConfigurationBranchName(), edm::poolNames::processHistoryBranchName(), edm::poolNames::processHistoryMapBranchName(), edm::poolNames::productDescriptionBranchName(), edm::ProductRegistry::productList(), MultipleCompare::pset, psm_, reg_, PhysicsTools::registry, asciidump::s, showDependencies_, showOtherModules_, edm::sort_all(), and cond::rpcobtemp::temp.

Referenced by dump().

563  {
564 
565  TTree* meta = dynamic_cast<TTree*>(inputFile_->Get(edm::poolNames::metaDataTreeName().c_str()));
566  assert(0 != meta);
567 
568  edm::ProductRegistry* pReg = &reg_;
569  meta->SetBranchAddress(edm::poolNames::productDescriptionBranchName().c_str(), &pReg);
570 
571  ParameterSetMap* pPsm = &psm_;
572  if(meta->FindBranch(edm::poolNames::parameterSetMapBranchName().c_str()) != 0) {
573  meta->SetBranchAddress(edm::poolNames::parameterSetMapBranchName().c_str(), &pPsm);
574  } else {
575  TTree* psetTree = dynamic_cast<TTree *>(inputFile_->Get(edm::poolNames::parameterSetsTreeName().c_str()));
576  assert(0 != psetTree);
577  typedef std::pair<edm::ParameterSetID, edm::ParameterSetBlob> IdToBlobs;
578  IdToBlobs idToBlob;
579  IdToBlobs* pIdToBlob = &idToBlob;
580  psetTree->SetBranchAddress(edm::poolNames::idToParameterSetBlobsBranchName().c_str(), &pIdToBlob);
581  for(long long i = 0; i != psetTree->GetEntries(); ++i) {
582  psetTree->GetEntry(i);
583  psm_.insert(idToBlob);
584  }
585  }
587  if(meta->FindBranch(edm::poolNames::processConfigurationBranchName().c_str()) != 0) {
588  meta->SetBranchAddress(edm::poolNames::processConfigurationBranchName().c_str(), &pPhc);
589  }
590 
592  if(meta->FindBranch(edm::poolNames::processHistoryBranchName().c_str()) != 0) {
593  meta->SetBranchAddress(edm::poolNames::processHistoryBranchName().c_str(), &pPhv);
594  }
595 
597  edm::ProcessHistoryMap* pPhm = &phm;
598  if(meta->FindBranch(edm::poolNames::processHistoryMapBranchName().c_str()) != 0) {
599  meta->SetBranchAddress(edm::poolNames::processHistoryMapBranchName().c_str(), &pPhm);
600  }
601 
602  if(meta->FindBranch(edm::poolNames::moduleDescriptionMapBranchName().c_str()) != 0) {
603  if(meta->GetBranch(edm::poolNames::moduleDescriptionMapBranchName().c_str())->GetSplitLevel() != 0) {
604  meta->SetBranchStatus((edm::poolNames::moduleDescriptionMapBranchName() + ".*").c_str(), 0);
605  } else {
606  meta->SetBranchStatus(edm::poolNames::moduleDescriptionMapBranchName().c_str(), 0);
607  }
608  }
609 
610  meta->GetEntry(0);
611  assert(0 != pReg);
612 
614  for(ParameterSetMap::const_iterator i = psm_.begin(), iEnd = psm_.end(); i != iEnd; ++i) {
615  edm::ParameterSet pset(i->second.pset());
616  pset.setID(i->first);
617  psetRegistry.insertMapped(pset);
618  }
619 
620 
621  // backward compatibility
622  if(!phm.empty()) {
623  for(edm::ProcessHistoryMap::const_iterator i = phm.begin(), e = phm.end(); i != e; ++i) {
624  phv_.push_back(i->second);
625  for(edm::ProcessConfigurationVector::const_iterator j = i->second.begin(), f = i->second.end(); j != f; ++j) {
626  phc_.push_back(*j);
627  }
628  }
630  phc_.erase(std::unique(phc_.begin(), phc_.end()), phc_.end());
631  }
632 
634 
635  //Prepare the parentage information if requested
636  std::map<edm::BranchID, std::set<edm::ParentageID> > perProductParentage;
637 
638  if(showDependencies_){
639  TTree* parentageTree = dynamic_cast<TTree*>(inputFile_->Get(edm::poolNames::parentageTreeName().c_str()));
640  if(0 == parentageTree) {
641  std::cerr << "no Parentage tree available so can not show dependencies/n";
642  showDependencies_ = false;
643  } else {
644 
646 
647  for(Long64_t i = 0, numEntries = parentageTree->GetEntries(); i < numEntries; ++i) {
648  edm::Parentage parentageBuffer;
649  edm::Parentage *pParentageBuffer = &parentageBuffer;
650  parentageTree->SetBranchAddress(edm::poolNames::parentageBranchName().c_str(), &pParentageBuffer);
651  parentageTree->GetEntry(i);
652  registry.insertMapped(parentageBuffer);
653  }
654  parentageTree->SetBranchAddress(edm::poolNames::parentageBranchName().c_str(), 0);
655 
656  TTree* eventMetaTree = dynamic_cast<TTree*>(inputFile_->Get(edm::BranchTypeToMetaDataTreeName(edm::InEvent).c_str()));
657  if(0 == eventMetaTree) {
658  eventMetaTree = dynamic_cast<TTree*>(inputFile_->Get(edm::BranchTypeToProductTreeName(edm::InEvent).c_str()));
659  }
660  if(0 == eventMetaTree) {
661  std::cerr << "no '" << edm::BranchTypeToProductTreeName(edm::InEvent)<< "' Tree in file so can not show dependencies\n";
662  showDependencies_ = false;
663  } else {
664  TBranch* productProvBranch = eventMetaTree->GetBranch(edm::BranchTypeToBranchEntryInfoBranchName(edm::InEvent).c_str());
665 
666  std::vector<edm::ProductProvenance> info;
667  std::vector<edm::ProductProvenance>* pInfo = &info;
668  productProvBranch->SetAddress(&pInfo);
669  for(Long64_t i = 0, numEntries = eventMetaTree->GetEntries(); i < numEntries; ++i) {
670  productProvBranch->GetEntry(i);
671  for(std::vector<edm::ProductProvenance>::const_iterator it = info.begin(), itEnd = info.end();
672  it != itEnd; ++it) {
673  perProductParentage[it->branchID()].insert(it->parentageID());
674  }
675  }
676  }
677  }
678  }
679 
680 
682 
684 
685  std::cout << "---------Producers with data in file---------" << std::endl;
686 
687  //using edm::ParameterSetID as the key does not work
688  // typedef std::map<edm::ParameterSetID, std::vector<edm::BranchDescription> > IdToBranches
689  ModuleToIdBranches moduleToIdBranches;
690  //IdToBranches idToBranches;
691 
692  std::map<edm::BranchID, std::string> branchIDToBranchName;
693 
694  for(edm::ProductRegistry::ProductList::const_iterator it =
695  reg_.productList().begin(), itEnd = reg_.productList().end();
696  it != itEnd;
697  ++it) {
698  //force it to rebuild the branch name
699  it->second.init();
700 
701  if(showDependencies_) {
702  branchIDToBranchName[it->second.branchID()] = it->second.branchName();
703  }
704  /*
705  std::cout << it->second.branchName()
706  << " id " << it->second.productID() << std::endl;
707  */
708  for(std::map<edm::ProcessConfigurationID, edm::ParameterSetID>::const_iterator
709  itId = it->second.parameterSetIDs().begin(),
710  itIdEnd = it->second.parameterSetIDs().end();
711  itId != itIdEnd;
712  ++itId) {
713 
714  std::stringstream s;
715  s << itId->second;
716  moduleToIdBranches[std::make_pair(it->second.processName(), it->second.moduleLabel())][s.str()].push_back(it->second);
717  //idToBranches[*itId].push_back(it->second);
718  }
719  }
720  for(ModuleToIdBranches::const_iterator it = moduleToIdBranches.begin(),
721  itEnd = moduleToIdBranches.end();
722  it != itEnd;
723  ++it) {
724  std::ostringstream sout;
725  sout << "Module: " << it->first.second << " " << it->first.first << std::endl;
726  IdToBranches const& idToBranches = it->second;
727  for(IdToBranches::const_iterator itIdBranch = idToBranches.begin(),
728  itIdBranchEnd = idToBranches.end();
729  itIdBranch != itIdBranchEnd;
730  ++itIdBranch) {
731  sout << " PSet id:" << itIdBranch->first << std::endl;
732  sout << " products: {" << std::endl;
733  std::set<edm::BranchID> branchIDs;
734  for(std::vector<edm::BranchDescription>::const_iterator itBranch = itIdBranch->second.begin(),
735  itBranchEnd = itIdBranch->second.end();
736  itBranch != itBranchEnd;
737  ++itBranch) {
738  sout << " " << itBranch->branchName() << std::endl;
739  branchIDs.insert(itBranch->branchID());
740  }
741  sout << " }" << std::endl;
742  edm::ParameterSetID psid(itIdBranch->first);
743  ParameterSetMap::const_iterator itpsm = psm_.find(psid);
744  if(psm_.end() == itpsm) {
745  ++errorCount_;
746  errorLog_ << "No ParameterSetID for " << psid << std::endl;
747  exitCode_ = 1;
748  } else {
749  sout << " parameters: ";
750  prettyPrint(sout, edm::ParameterSet((*itpsm).second.pset()), " ", " ");
751  sout << std::endl;
752  }
753  if(showDependencies_) {
755 
756  sout << " dependencies: {" << std::endl;
757  std::set<edm::ParentageID> parentageIDs;
758  for(std::set<edm::BranchID>::const_iterator itBranch = branchIDs.begin(), itBranchEnd = branchIDs.end();
759  itBranch != itBranchEnd;
760  ++itBranch) {
761  std::set<edm::ParentageID> const& temp = perProductParentage[*itBranch];
762  parentageIDs.insert(temp.begin(), temp.end());
763  }
764  for(std::set<edm::ParentageID>::const_iterator itParentID = parentageIDs.begin(), itEndParentID = parentageIDs.end();
765  itParentID != itEndParentID;
766  ++itParentID) {
767  edm::Parentage const* parentage = registry.getMapped(*itParentID);
768  if(0 != parentage) {
769  for(std::vector<edm::BranchID>::const_iterator itBranch = parentage->parents().begin(), itEndBranch = parentage->parents().end();
770  itBranch != itEndBranch;
771  ++itBranch) {
772  sout << " " << branchIDToBranchName[*itBranch] << std::endl;
773  }
774  } else {
775  sout << " ERROR:parentage info not in registry ParentageID=" << *itParentID << std::endl;
776  }
777  }
778  if(parentageIDs.empty()) {
779  sout << " no dependencies recorded (event may not contain data from this module)" << std::endl;
780  }
781  sout << " }" << std::endl;
782  }
783  if(findMatch_.empty() or sout.str().find(findMatch_) != std::string::npos) {
784  std::cout <<sout.str()<<std::endl;
785  }
786  }
787  }
788  if(showOtherModules_) {
789  std::cout << "---------Other Modules---------" << std::endl;
790  historyGraph_.printOtherModulesHistory(psm_, moduleToIdBranches, findMatch_, errorLog_);
791  }
792 
793  if(!excludeESModules_) {
794  std::cout << "---------EventSetup---------" << std::endl;
795  historyGraph_.printEventSetupHistory(psm_, findMatch_, errorLog_);
796  }
797  if(errorCount_ != 0) {
798  exitCode_ = 1;
799  }
800 }
std::stringstream errorLog_
Definition: EdmProvDump.cc:392
std::string const & idToParameterSetBlobsBranchName()
Definition: BranchType.cc:239
int i
Definition: DBlmapReader.cc:9
std::string const & BranchTypeToMetaDataTreeName(BranchType const &branchType)
Definition: BranchType.cc:100
std::string const & parentageTreeName()
Definition: BranchType.cc:148
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::EventIDconst &, edm::Timestampconst & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
edm::ProductRegistry reg_
Definition: EdmProvDump.cc:394
ParameterSetMap psm_
Definition: EdmProvDump.cc:397
boost::scoped_ptr< TFile > inputFile_
Definition: EdmProvDump.cc:390
bool getMapped(key_type const &k, value_type &result) const
HistoryNode historyGraph_
Definition: EdmProvDump.cc:398
ProcessHistoryRegistry::collection_type ProcessHistoryMap
void dumpEventFilteringParameterSets_(TFile *file)
Definition: EdmProvDump.cc:461
bool insertMapped(value_type const &v)
edm::ProcessHistoryVector phv_
Definition: EdmProvDump.cc:396
void fillProductRegistryTransients(std::vector< ProcessConfiguration > const &pcVec, ProductRegistry const &preg, bool okToRegister=false)
std::string const & parameterSetsTreeName()
Definition: BranchType.cc:235
ProcessConfigurationRegistry::vector_type ProcessConfigurationVector
std::vector< BranchID > const & parents() const
Definition: Parentage.h:39
ProductList const & productList() const
std::string const & processHistoryMapBranchName()
Definition: BranchType.cc:182
std::map< std::pair< std::string, std::string >, IdToBranches > ModuleToIdBranches
Definition: EdmProvDump.cc:41
std::string findMatch_
Definition: EdmProvDump.cc:402
Long64_t numEntries(TFile *hdl, std::string const &trname)
Definition: CollUtil.cc:50
int j
Definition: DBlmapReader.cc:9
double f[11][100]
ProcessHistoryRegistry::vector_type ProcessHistoryVector
std::string const & BranchTypeToBranchEntryInfoBranchName(BranchType const &branchType)
Definition: BranchType.cc:120
std::string const & metaDataTreeName()
Definition: BranchType.cc:157
std::string const & BranchTypeToProductTreeName(BranchType const &branchType)
Definition: BranchType.cc:96
std::string const & parameterSetMapBranchName()
Definition: BranchType.cc:172
static std::ostream & prettyPrint(std::ostream &oStream, edm::ParameterSet const &iPSet, std::string const &iIndent, std::string const &iIndentDelta)
Definition: EdmProvDump.cc:345
std::string const & processHistoryBranchName()
Definition: BranchType.cc:187
std::map< std::string, std::vector< edm::BranchDescription > > IdToBranches
Definition: EdmProvDump.cc:40
void dumpProcessHistory_()
Definition: EdmProvDump.cc:513
edm::ProcessConfigurationVector phc_
Definition: EdmProvDump.cc:395
void sort_all(RandomAccessSequence &s)
wrappers for std::sort
Definition: Algorithms.h:120
std::string const & parentageBranchName()
Definition: BranchType.cc:152
std::map< ParameterSetID, ParameterSetBlob > ParameterSetMap
std::string const & productDescriptionBranchName()
Definition: BranchType.cc:162
std::string const & processConfigurationBranchName()
Definition: BranchType.cc:192
author Stefano ARGIRO author Bill Tanenbaum
tuple cout
Definition: gather_cfg.py:41
static ThreadSafeRegistry * instance()
string s
Definition: asciidump.py:422
static Interceptor::Registry registry("Interceptor")
std::string const & moduleDescriptionMapBranchName()
Definition: BranchType.cc:177

Member Data Documentation

int ProvenanceDumper::errorCount_
private

Definition at line 393 of file EdmProvDump.cc.

Referenced by printErrors(), and work_().

std::stringstream ProvenanceDumper::errorLog_
private

Definition at line 392 of file EdmProvDump.cc.

Referenced by printErrors(), and work_().

bool ProvenanceDumper::excludeESModules_
private

Definition at line 400 of file EdmProvDump.cc.

Referenced by work_().

int ProvenanceDumper::exitCode_
private

Definition at line 391 of file EdmProvDump.cc.

Referenced by exitCode(), and work_().

std::string ProvenanceDumper::filename_
private

Definition at line 389 of file EdmProvDump.cc.

std::string ProvenanceDumper::findMatch_
private

Definition at line 402 of file EdmProvDump.cc.

Referenced by work_().

HistoryNode ProvenanceDumper::historyGraph_
private

Definition at line 398 of file EdmProvDump.cc.

Referenced by dumpProcessHistory_(), and work_().

boost::scoped_ptr<TFile> ProvenanceDumper::inputFile_
private

Definition at line 390 of file EdmProvDump.cc.

Referenced by work_().

edm::ProcessConfigurationVector ProvenanceDumper::phc_
private

Definition at line 395 of file EdmProvDump.cc.

Referenced by work_().

edm::ProcessHistoryVector ProvenanceDumper::phv_
private

Definition at line 396 of file EdmProvDump.cc.

Referenced by dumpProcessHistory_(), and work_().

ParameterSetMap ProvenanceDumper::psm_
private

Definition at line 397 of file EdmProvDump.cc.

Referenced by dumpParameterSetForID_(), and work_().

edm::ProductRegistry ProvenanceDumper::reg_
private

Definition at line 394 of file EdmProvDump.cc.

Referenced by work_().

bool ProvenanceDumper::showDependencies_
private

Definition at line 399 of file EdmProvDump.cc.

Referenced by work_().

bool ProvenanceDumper::showOtherModules_
private

Definition at line 401 of file EdmProvDump.cc.

Referenced by work_().