77 const size_t labelSize = iTag.
label().size();
78 const size_t productInstanceSize = iTag.
instance().size();
80 unsigned short delta1 = labelSize+1;
81 unsigned short delta2 = labelSize+2+productInstanceSize;
89 const size_t additionalSize =
91 labelSize+productInstanceSize+3 :
92 labelSize+productInstanceSize+iTag.
process().size()+3;
106 if (!skipCurrentProcess) {
125 itInfo != itEnd; ++itInfo,++itKind,++itLabels) {
126 const unsigned int labelStart = itLabels->m_startOfModuleLabel;
128 itInfo->m_index = iHelper.
index(*itKind,
131 moduleLabel+itLabels->m_deltaToProductInstance,
132 moduleLabel+itLabels->m_deltaToProcessName);
141 if(
info.m_branchType == iBranchType &&
152 for(
unsigned int j=0;
j!=matches.numberOfMatches();++
j) {
154 if(matches.isFullyResolved(
j)) {
155 auto index =matches.index(
j);
194 unsigned int count=0;
199 it != itEnd; ++it,++itAlwaysGet) {
200 if(iBranch==it->m_branchType) {
209 oIndices.reserve(oIndices.size()+
count);
214 it != itEnd; ++it,++itAlwaysGet) {
215 if(iBranch==it->m_branchType) {
218 oIndices.push_back(it->m_index);
230 unsigned int count=0;
235 it != itEnd; ++it,++itAlwaysGet) {
236 if(iBranch==it->m_branchType) {
238 if(not *itAlwaysGet) {
245 oIndices.reserve(oIndices.size()+
count);
250 it != itEnd; ++it,++itAlwaysGet) {
251 if(iBranch==it->m_branchType) {
253 if(not *itAlwaysGet) {
254 oIndices.push_back(it->m_index);
277 throw cms::Exception(
"TypeMismatch")<<
"A get using a EDGetToken used the C++ type '"<<iType.
className()<<
"' but the consumes call was for type '"<<
m_tokenInfo.get<
kLookupInfo>(iToken.
index()).m_type.className()<<
"'.\n Please modify either the consumes or get call so the types match.";
288 throw cms::Exception(
"BadToken")<<
"A get using a EDGetToken with the C++ type '"<<iType.
className()<<
"' was made using an uninitialized token.\n Please check that the variable is being initialized from a 'consumes' call.";
290 throw cms::Exception(
"BadToken")<<
"A get using a EDGetToken with the C++ type '"<<iType.
className()<<
"' was made using a token with a value "<<iToken.
index()<<
" which is beyond the range used by this module.\n Please check that the variable is being initialized from a 'consumes' call from this module.\n You can not share EDGetToken values between modules.";
Matches relatedIndexes(KindOfType kindOfType, TypeID const &typeID, char const *moduleLabel, char const *instance) const
void itemsMayGet(BranchType, std::vector< ProductHolderIndex > &) const
tuple start
Check for commandline option errors.
ProductHolderIndex indexFrom(EDGetToken, BranchType, TypeID const &) const
void updateLookup(BranchType iBranchType, ProductHolderIndexHelper const &)
ProductHolderIndex index(KindOfType kindOfType, TypeID const &typeID, char const *moduleLabel, char const *instance, char const *process=0) const
void throwTypeMismatch(edm::TypeID const &, EDGetToken) const
void itemsToGet(BranchType, std::vector< ProductHolderIndex > &) const
void throwBadToken(edm::TypeID const &iType, EDGetToken iToken) const
const char * productInstance
unsigned int ProductHolderIndex
edm::SoATuple< TokenLookupInfo, bool, LabelPlacement, edm::KindOfType > m_tokenInfo
unsigned int recordConsumes(BranchType iBranch, TypeToGet const &iType, edm::InputTag const &iTag, bool iAlwaysGets)
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
void throwBranchMismatch(BranchType, EDGetToken) const
std::vector< char > m_tokenLabels
virtual ~EDConsumerBase()
std::string const & BranchTypeToString(BranchType const &branchType)
bool isUnitialized() const
void labelsForToken(EDGetToken iToken, Labels &oLabels) const
TypeID const & type() const
std::string const & className() const
unsigned int index() const