CMS 3D CMS Logo

ProcessHistory.cc
Go to the documentation of this file.
1 #include <iterator>
2 #include <ostream>
3 #include <sstream>
6 
8 
9 namespace edm {
11  if (transient_.phid_.isValid()) {
12  return transient_.phid_;
13  }
14  // This implementation is ripe for optimization.
15  // We do not use operator<< because it does not write out everything.
16  std::ostringstream oss;
17  for (auto const& item : *this) {
18  oss << item.processName() << ' ' << item.parameterSetID() << ' ' << item.releaseVersion() << ' ' << item.passID()
19  << ' ';
20  }
21  std::string stringrep = oss.str();
22  cms::Digest md5alg(stringrep);
23  ProcessHistoryID phID(md5alg.digest().toString());
24  return phID;
25  }
26 
28  if (!transient_.phid_.isValid()) {
29  transient_.phid_ = id();
30  }
31  return transient_.phid_;
32  }
33 
35  for (auto const& item : *this) {
36  if (item.processName() == name) {
37  config = item;
38  return true;
39  }
40  }
41  // Name not found!
42  return false;
43  }
44 
46  phid() = ProcessHistoryID();
47  for (auto& item : data_) {
48  item.reduce();
49  }
50  return *this;
51  }
52 
53  bool isAncestor(ProcessHistory const& a, ProcessHistory const& b) {
54  if (a.size() >= b.size())
55  return false;
56  typedef ProcessHistory::collection_type::const_iterator const_iterator;
57  for (const_iterator itA = a.data().begin(), itB = b.data().begin(), itAEnd = a.data().end(); itA != itAEnd;
58  ++itA, ++itB) {
59  if (*itA != *itB)
60  return false;
61  }
62  return true;
63  }
64 
65  std::ostream& operator<<(std::ostream& ost, ProcessHistory const& ph) {
66  ost << "Process History = ";
67  copy_all(ph, std::ostream_iterator<ProcessHistory::value_type>(ost, ";"));
68  return ost;
69  }
70 } // namespace edm
edm::ProcessHistory::transient_
Transients transient_
Definition: ProcessHistory.h:102
edm::ProcessHistory::Transients::phid_
ProcessHistoryID phid_
Definition: ProcessHistory.h:96
edm::copy_all
Func copy_all(ForwardSequence &s, Func f)
wrappers for copy
Definition: Algorithms.h:20
cms::Digest::digest
MD5Result digest()
Definition: Digest.cc:171
edm
HLT enums.
Definition: AlignableModifier.h:19
Algorithms.h
edm::ProcessHistory::id
ProcessHistoryID id() const
Definition: ProcessHistory.cc:10
edm::ProcessHistory::getConfigurationForProcess
bool getConfigurationForProcess(std::string const &name, ProcessConfiguration &config) const
Definition: ProcessHistory.cc:34
edm::operator<<
std::ostream & operator<<(std::ostream &ost, const HLTGlobalStatus &hlt)
Formatted printout of trigger tbale.
Definition: HLTGlobalStatus.h:106
config
Definition: config.py:1
edm::Hash::isValid
bool isValid() const
Definition: Hash.h:141
edm::isAncestor
bool isAncestor(ProcessHistory const &a, ProcessHistory const &b)
Definition: ProcessHistory.cc:53
ProcessHistory.h
cms::Digest
Definition: Digest.h:46
edm::Hash< ProcessHistoryType >
b
double b
Definition: hdecay.h:118
a
double a
Definition: hdecay.h:119
edm::ProcessHistory::data_
collection_type data_
Definition: ProcessHistory.h:101
B2GTnPMonitor_cfi.item
item
Definition: B2GTnPMonitor_cfi.py:147
AlCaHLTBitMon_QueryRunRegistry.string
string string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
edm::ProcessHistory::setProcessHistoryID
ProcessHistoryID setProcessHistoryID()
Definition: ProcessHistory.cc:27
Digest.h
edm::ProcessHistory::phid
ProcessHistoryID & phid()
Definition: ProcessHistory.h:100
edm::ProcessHistoryID
Hash< ProcessHistoryType > ProcessHistoryID
Definition: ProcessHistoryID.h:8
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
edm::ProcessHistory
Definition: ProcessHistory.h:13
edm::ProcessHistory::reduce
ProcessHistory & reduce()
Definition: ProcessHistory.cc:45
cms::MD5Result::toString
std::string toString() const
Definition: Digest.cc:95
edm::ProcessConfiguration
Definition: ProcessConfiguration.h:14