File indexing completed on 2025-02-27 07:19:50
0001 #ifndef DataFormats_Provenance_ProcessConfiguration_h
0002 #define DataFormats_Provenance_ProcessConfiguration_h
0003
0004 #include "DataFormats/Provenance/interface/HardwareResourcesDescription.h"
0005 #include "DataFormats/Provenance/interface/ParameterSetID.h"
0006 #include "DataFormats/Provenance/interface/ProcessConfigurationID.h"
0007 #include "DataFormats/Provenance/interface/ReleaseVersion.h"
0008
0009 #include <iosfwd>
0010 #include <string>
0011 #include <vector>
0012
0013 namespace edm {
0014 class ProcessConfiguration {
0015 public:
0016 ProcessConfiguration();
0017 ProcessConfiguration(std::string const& procName,
0018 ReleaseVersion const& relVersion,
0019 HardwareResourcesDescription const& hwDescription);
0020
0021 ProcessConfiguration(std::string const& procName,
0022 ParameterSetID const& pSetID,
0023 ReleaseVersion const& relVersion,
0024 HardwareResourcesDescription const& hwDescription);
0025
0026 std::string const& processName() const { return processName_; }
0027 ParameterSetID const& parameterSetID() const;
0028 bool isParameterSetValid() const { return parameterSetID_.isValid(); }
0029 ReleaseVersion const& releaseVersion() const { return releaseVersion_; }
0030
0031 HardwareResourcesDescription hardwareResourcesDescription() const { return HardwareResourcesDescription(passID_); }
0032 std::string const& hardwareResourcesDescriptionSerialized() const { return passID_; }
0033 ProcessConfigurationID id() const;
0034
0035 void setParameterSetID(ParameterSetID const& pSetID);
0036
0037 ProcessConfigurationID setProcessConfigurationID();
0038
0039 void reduce();
0040
0041 void initializeTransients() { transient_.reset(); }
0042
0043 struct Transients {
0044 Transients() : pcid_(), isCurrentProcess_(false) {}
0045 explicit Transients(bool current) : pcid_(), isCurrentProcess_(current) {}
0046 void reset() {
0047 pcid_.reset();
0048 isCurrentProcess_ = false;
0049 }
0050 ProcessConfigurationID pcid_;
0051 bool isCurrentProcess_;
0052 };
0053
0054 private:
0055 void setPCID(ProcessConfigurationID const& pcid) { transient_.pcid_ = pcid; }
0056 bool isCurrentProcess() const { return transient_.isCurrentProcess_; }
0057 void setCurrentProcess() { transient_.isCurrentProcess_ = true; }
0058
0059 std::string processName_;
0060 ParameterSetID parameterSetID_;
0061 ReleaseVersion releaseVersion_;
0062
0063
0064
0065
0066
0067 std::string passID_;
0068 Transients transient_;
0069 };
0070
0071 typedef std::vector<ProcessConfiguration> ProcessConfigurationVector;
0072
0073 bool operator<(ProcessConfiguration const& a, ProcessConfiguration const& b);
0074
0075 inline bool operator==(ProcessConfiguration const& a, ProcessConfiguration const& b) {
0076 return a.processName() == b.processName() && a.parameterSetID() == b.parameterSetID() &&
0077 a.releaseVersion() == b.releaseVersion() &&
0078 a.hardwareResourcesDescriptionSerialized() == b.hardwareResourcesDescriptionSerialized();
0079 }
0080
0081 inline bool operator!=(ProcessConfiguration const& a, ProcessConfiguration const& b) { return !(a == b); }
0082
0083 std::ostream& operator<<(std::ostream& os, ProcessConfiguration const& pc);
0084 }
0085
0086 #endif