File indexing completed on 2024-04-06 12:05:03
0001 #include "DataFormats/Provenance/interface/BranchType.h"
0002
0003 #include <array>
0004 #include <cassert>
0005 #include <cstddef>
0006 #include <iostream>
0007
0008 namespace edm {
0009 std::ostream& operator<<(std::ostream& os, BranchType const& branchType) {
0010 os << BranchTypeToString(branchType);
0011 return os;
0012 }
0013 namespace {
0014
0015
0016 std::string const metaData = "MetaData";
0017 std::string const auxiliary = "Auxiliary";
0018 std::string const aux = "Aux";
0019 std::string const productStatus = "ProductStatus";
0020 std::string const branchEntryInfo = "BranchEntryInfo";
0021 std::string const productProvenance = "ProductProvenance";
0022
0023 std::array<std::string, NumBranchTypes> const branchTypeNames{{"Event", "LuminosityBlock", "Run", "ProcessBlock"}};
0024 std::size_t constexpr eventLumiRunSize = 3;
0025 using NameArray = std::array<std::string, eventLumiRunSize>;
0026
0027 NameArray makeNameArray(std::string const& postfix) {
0028 static_assert(InEvent == 0);
0029 static_assert(InLumi == 1);
0030 static_assert(InRun == 2);
0031 static_assert(InProcess == 3);
0032 NameArray ret;
0033 for (auto i = 0U; i != eventLumiRunSize; ++i) {
0034 ret[i] = branchTypeNames[i] + postfix;
0035 }
0036 return ret;
0037 }
0038
0039 const NameArray treeNames{makeNameArray(std::string("s"))};
0040
0041 const NameArray metaTreeNames{makeNameArray(metaData)};
0042
0043
0044 const NameArray infoNames{makeNameArray(std::string("StatusInformation"))};
0045
0046 const NameArray auxiliaryNames{makeNameArray(auxiliary)};
0047
0048
0049 const NameArray productStatusNames{makeNameArray(productStatus)};
0050
0051
0052 const NameArray eventEntryInfoNames{makeNameArray(branchEntryInfo)};
0053
0054 const NameArray productProvenanceNames{makeNameArray(productProvenance)};
0055
0056
0057 const NameArray auxNames{makeNameArray(aux)};
0058
0059 std::string const entryDescriptionTree = "EntryDescription";
0060 std::string const entryDescriptionIDBranch = "Hash";
0061 std::string const entryDescriptionBranch = "Description";
0062
0063 std::string const parentageTree = "Parentage";
0064 std::string const parentageBranch = "Description";
0065
0066 std::string const metaDataTree = "MetaData";
0067 std::string const productRegistry = "ProductRegistry";
0068 std::string const productDependencies = "ProductDependencies";
0069 std::string const parameterSetMap = "ParameterSetMap";
0070 std::string const moduleDescriptionMap = "ModuleDescriptionMap";
0071 std::string const processHistoryMap = "ProcessHistoryMap";
0072 std::string const processHistory = "ProcessHistory";
0073 std::string const processConfiguration = "ProcessConfiguration";
0074 std::string const branchIDLists = "BranchIDLists";
0075 std::string const thinnedAssociationsHelper = "ThinnedAssociationsHelper";
0076 std::string const fileFormatVersion = "FileFormatVersion";
0077 std::string const fileIdentifier = "FileIdentifier";
0078 std::string const fileIndex = "FileIndex";
0079 std::string const indexIntoFile = "IndexIntoFile";
0080 std::string const mergeableRunProductMetadata = "MergeableRunProductMetadata";
0081 std::string const processBlockHelper = "ProcessBlockHelper";
0082 std::string const eventHistory = "EventHistory";
0083 std::string const eventBranchMapper = "EventBranchMapper";
0084
0085 std::string const eventSelections = "EventSelections";
0086 std::string const branchListIndexes = "BranchListIndexes";
0087 std::string const eventToProcessBlockIndexes = "EventToProcessBlockIndexes";
0088
0089 std::string const parameterSetsTree = "ParameterSets";
0090 std::string const idToParameterSetBlobsBranch = "IdToParameterSetsBlobs";
0091 }
0092
0093 std::string const& BranchTypeToString(BranchType const& branchType) { return branchTypeNames[branchType]; }
0094
0095 std::string const& BranchTypeToProductTreeName(BranchType const& branchType) {
0096 assert(branchType < eventLumiRunSize);
0097 return treeNames[branchType];
0098 }
0099
0100 std::string BranchTypeToProductTreeName(BranchType const& branchType, std::string const& processName) {
0101 assert(branchType == InProcess);
0102 return branchTypeNames[InProcess] + "s" + processName;
0103 }
0104
0105 std::string const& BranchTypeToMetaDataTreeName(BranchType const& branchType) {
0106 assert(branchType < eventLumiRunSize);
0107 return metaTreeNames[branchType];
0108 }
0109
0110
0111 std::string const& BranchTypeToInfoTreeName(BranchType const& branchType) {
0112 assert(branchType < eventLumiRunSize);
0113 return infoNames[branchType];
0114 }
0115
0116 std::string const& BranchTypeToAuxiliaryBranchName(BranchType const& branchType) {
0117 assert(branchType < eventLumiRunSize);
0118 return auxiliaryNames[branchType];
0119 }
0120
0121
0122 std::string const& BranchTypeToAuxBranchName(BranchType const& branchType) {
0123 assert(branchType < eventLumiRunSize);
0124 return auxNames[branchType];
0125 }
0126
0127
0128 std::string const& BranchTypeToProductStatusBranchName(BranchType const& branchType) {
0129 assert(branchType < eventLumiRunSize);
0130 return productStatusNames[branchType];
0131 }
0132
0133
0134 std::string const& BranchTypeToBranchEntryInfoBranchName(BranchType const& branchType) {
0135 assert(branchType < eventLumiRunSize);
0136 return eventEntryInfoNames[branchType];
0137 }
0138
0139 std::string const& BranchTypeToProductProvenanceBranchName(BranchType const& branchType) {
0140 assert(branchType < eventLumiRunSize);
0141 return productProvenanceNames[branchType];
0142 }
0143
0144 namespace poolNames {
0145
0146
0147 std::string const& entryDescriptionTreeName() { return entryDescriptionTree; }
0148
0149 std::string const& entryDescriptionIDBranchName() { return entryDescriptionIDBranch; }
0150
0151 std::string const& entryDescriptionBranchName() { return entryDescriptionBranch; }
0152
0153
0154 std::string const& parentageTreeName() { return parentageTree; }
0155
0156 std::string const& parentageBranchName() { return parentageBranch; }
0157
0158
0159 std::string const& metaDataTreeName() { return metaDataTree; }
0160
0161
0162 std::string const& productDescriptionBranchName() { return productRegistry; }
0163
0164
0165 std::string const& productDependenciesBranchName() { return productDependencies; }
0166
0167
0168 std::string const& parameterSetMapBranchName() { return parameterSetMap; }
0169
0170
0171 std::string const& moduleDescriptionMapBranchName() { return moduleDescriptionMap; }
0172
0173
0174 std::string const& processHistoryMapBranchName() { return processHistoryMap; }
0175
0176
0177 std::string const& processHistoryBranchName() { return processHistory; }
0178
0179
0180 std::string const& processConfigurationBranchName() { return processConfiguration; }
0181
0182
0183 std::string const& branchIDListBranchName() { return branchIDLists; }
0184
0185
0186 std::string const& thinnedAssociationsHelperBranchName() { return thinnedAssociationsHelper; }
0187
0188
0189 std::string const& fileFormatVersionBranchName() { return fileFormatVersion; }
0190
0191
0192 std::string const& fileIdentifierBranchName() { return fileIdentifier; }
0193
0194
0195 std::string const& fileIndexBranchName() { return fileIndex; }
0196
0197
0198 std::string const& indexIntoFileBranchName() { return indexIntoFile; }
0199
0200
0201 std::string const& mergeableRunProductMetadataBranchName() { return mergeableRunProductMetadata; }
0202
0203
0204 std::string const& processBlockHelperBranchName() { return processBlockHelper; }
0205
0206
0207 std::string const& eventHistoryBranchName() { return eventHistory; }
0208
0209
0210 std::string const& eventSelectionsBranchName() { return eventSelections; }
0211
0212 std::string const& branchListIndexesBranchName() { return branchListIndexes; }
0213
0214 std::string const& eventToProcessBlockIndexesBranchName() { return eventToProcessBlockIndexes; }
0215
0216 std::string const& parameterSetsTreeName() { return parameterSetsTree; }
0217
0218 std::string const& idToParameterSetBlobsBranchName() { return idToParameterSetBlobsBranch; }
0219
0220 std::string const& eventTreeName() { return treeNames[InEvent]; }
0221
0222 std::string const& eventMetaDataTreeName() { return metaTreeNames[InEvent]; }
0223
0224 std::string const& eventHistoryTreeName() { return eventHistory; }
0225 std::string const& luminosityBlockTreeName() { return treeNames[InLumi]; }
0226 std::string const& runTreeName() { return treeNames[InRun]; }
0227 }
0228 }