CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Types | Public Member Functions | Private Attributes
edm::BranchIDListHelper Class Reference

#include <BranchIDListHelper.h>

Public Types

typedef std::multimap
< BranchID, IndexPair
BranchIDToIndexMap
 
typedef std::pair
< BranchListIndex,
ProductIndex
IndexPair
 

Public Member Functions

 BranchIDListHelper ()
 
BranchIDLists const & branchIDLists () const
 
BranchIDToIndexMap const & branchIDToIndexMap () const
 
bool fixBranchListIndexes (BranchListIndexes &indexes, bool assertOnFailure=true) const
 Called by sources to convert their read indexes into the indexes used by the job. More...
 
bool hasProducedProducts () const
 
BranchIDListsmutableBranchIDLists ()
 
BranchListIndex producedBranchListIndex () const
 
bool updateFromInput (BranchIDLists const &bidlists)
 
void updateFromParent (BranchIDLists const &bidlists)
 
void updateFromRegistry (ProductRegistry const &reg)
 

Private Attributes

BranchIDLists branchIDLists_
 
BranchIDToIndexMap branchIDToIndexMap_
 
std::vector< BranchListIndexinputIndexToJobIndex_
 
BranchIDLists::size_type nAlreadyCopied_
 
BranchListIndex producedBranchListIndex_
 

Detailed Description

Definition at line 15 of file BranchIDListHelper.h.

Member Typedef Documentation

Definition at line 18 of file BranchIDListHelper.h.

Definition at line 17 of file BranchIDListHelper.h.

Constructor & Destructor Documentation

edm::BranchIDListHelper::BranchIDListHelper ( )

Member Function Documentation

BranchIDLists const& edm::BranchIDListHelper::branchIDLists ( ) const
inline

Definition at line 36 of file BranchIDListHelper.h.

References branchIDLists_.

36 { return branchIDLists_; }
BranchIDToIndexMap const& edm::BranchIDListHelper::branchIDToIndexMap ( ) const
inline

Definition at line 37 of file BranchIDListHelper.h.

References branchIDToIndexMap_.

37 { return branchIDToIndexMap_; }
BranchIDToIndexMap branchIDToIndexMap_
bool edm::BranchIDListHelper::fixBranchListIndexes ( BranchListIndexes indexes,
bool  assertOnFailure = true 
) const

Called by sources to convert their read indexes into the indexes used by the job.

Definition at line 84 of file BranchIDListHelper.cc.

References cms::cuda::assert(), mps_fire::i, and inputIndexToJobIndex_.

84  {
85  for (BranchListIndex& i : indexes) {
86  bool indexInRange = i < inputIndexToJobIndex_.size();
87  if (!indexInRange) {
88  if (assertOnFailure) {
89  assert(indexInRange);
90  }
91  return false;
92  }
94  }
95  return true;
96  }
unsigned short BranchListIndex
assert(be >=bs)
std::vector< BranchListIndex > inputIndexToJobIndex_
bool edm::BranchIDListHelper::hasProducedProducts ( ) const
inline
BranchIDLists& edm::BranchIDListHelper::mutableBranchIDLists ( )
inline

Definition at line 33 of file BranchIDListHelper.h.

References branchIDLists_.

33 { return branchIDLists_; }
BranchListIndex edm::BranchIDListHelper::producedBranchListIndex ( ) const
inline

Definition at line 38 of file BranchIDListHelper.h.

References producedBranchListIndex_.

38 { return producedBranchListIndex_; }
BranchListIndex producedBranchListIndex_
bool edm::BranchIDListHelper::updateFromInput ( BranchIDLists const &  bidlists)

Definition at line 17 of file BranchIDListHelper.cc.

References branchIDLists_, branchIDToIndexMap_, edm::find_in_all(), mps_fire::i, inputIndexToJobIndex_, and dqmiolumiharvest::j.

Referenced by edm::StreamerInputSource::mergeIntoRegistry().

17  {
18  //The BranchIDLists is a list of lists
19  // this routine compares bidlists to branchIDLists_ to see if a list
20  // in branchIDLists_ is already in bidlist and if it isn't we insert
21  // that new list into branchIDLists_
22  bool unchanged = true;
23  inputIndexToJobIndex_.clear();
24  inputIndexToJobIndex_.resize(bidlists.size());
25  for (auto it = bidlists.begin(), itEnd = bidlists.end(); it != itEnd; ++it) {
26  BranchListIndex oldBlix = it - bidlists.begin();
27  auto j = find_in_all(branchIDLists_, *it);
28  BranchListIndex blix = j - branchIDLists_.begin();
29  if (j == branchIDLists_.end()) {
30  branchIDLists_.push_back(*it);
31  for (BranchIDList::const_iterator i = it->begin(), iEnd = it->end(); i != iEnd; ++i) {
32  ProductIndex pix = i - it->begin();
33  branchIDToIndexMap_.insert(std::make_pair(BranchID(*i), std::make_pair(blix, pix)));
34  }
35  }
36  inputIndexToJobIndex_[oldBlix] = blix;
37  if (oldBlix != blix) {
38  unchanged = false;
39  }
40  }
41  return unchanged;
42  }
unsigned short BranchListIndex
ForwardSequence::const_iterator find_in_all(ForwardSequence const &s, Datum const &d)
wrappers for std::find
Definition: Algorithms.h:26
BranchIDToIndexMap branchIDToIndexMap_
unsigned short ProductIndex
Definition: ProductID.h:26
std::vector< BranchListIndex > inputIndexToJobIndex_
void edm::BranchIDListHelper::updateFromParent ( BranchIDLists const &  bidlists)

Definition at line 44 of file BranchIDListHelper.cc.

References branchIDLists_, branchIDToIndexMap_, mps_fire::i, inputIndexToJobIndex_, and nAlreadyCopied_.

44  {
45  inputIndexToJobIndex_.resize(bidlists.size());
46  for (auto it = bidlists.begin() + nAlreadyCopied_, itEnd = bidlists.end(); it != itEnd; ++it) {
47  BranchListIndex oldBlix = it - bidlists.begin();
48  BranchListIndex blix = branchIDLists_.size();
49  branchIDLists_.push_back(*it);
50  for (BranchIDList::const_iterator i = it->begin(), iEnd = it->end(); i != iEnd; ++i) {
51  ProductIndex pix = i - it->begin();
52  branchIDToIndexMap_.insert(std::make_pair(BranchID(*i), std::make_pair(blix, pix)));
53  }
54  inputIndexToJobIndex_[oldBlix] = blix;
55  }
56  nAlreadyCopied_ = bidlists.size();
57  }
unsigned short BranchListIndex
BranchIDLists::size_type nAlreadyCopied_
BranchIDToIndexMap branchIDToIndexMap_
unsigned short ProductIndex
Definition: ProductID.h:26
std::vector< BranchListIndex > inputIndexToJobIndex_
void edm::BranchIDListHelper::updateFromRegistry ( ProductRegistry const &  reg)

Definition at line 59 of file BranchIDListHelper.cc.

References branchIDLists_, branchIDToIndexMap_, mps_fire::i, edm::InEvent, producedBranchListIndex_, and edm::ProductRegistry::productList().

59  {
60  BranchIDList bidlist;
61  // Add entries for current process for ProductID to BranchID mapping.
62  for (ProductRegistry::ProductList::const_iterator it = preg.productList().begin(), itEnd = preg.productList().end();
63  it != itEnd;
64  ++it) {
65  //In the case of the alias, we always use the original branches BranchID
66  if (it->second.produced() and not it->second.isAlias()) {
67  if (it->second.branchType() == InEvent) {
68  bidlist.push_back(it->second.branchID().id());
69  }
70  }
71  }
72  if (!bidlist.empty()) {
73  BranchListIndex blix = branchIDLists_.size();
75  //preg.setProducedBranchListIndex(blix);
76  branchIDLists_.push_back(bidlist);
77  for (BranchIDList::const_iterator i = bidlist.begin(), iEnd = bidlist.end(); i != iEnd; ++i) {
78  ProductIndex pix = i - bidlist.begin();
79  branchIDToIndexMap_.insert(std::make_pair(BranchID(*i), std::make_pair(blix, pix)));
80  }
81  }
82  }
unsigned short BranchListIndex
BranchListIndex producedBranchListIndex_
BranchIDToIndexMap branchIDToIndexMap_
std::vector< BranchID::value_type > BranchIDList
Definition: BranchIDList.h:18
unsigned short ProductIndex
Definition: ProductID.h:26
preg
Definition: Schedule.cc:687

Member Data Documentation

BranchIDLists edm::BranchIDListHelper::branchIDLists_
private
BranchIDToIndexMap edm::BranchIDListHelper::branchIDToIndexMap_
private
std::vector<BranchListIndex> edm::BranchIDListHelper::inputIndexToJobIndex_
private

Definition at line 44 of file BranchIDListHelper.h.

Referenced by fixBranchListIndexes(), updateFromInput(), and updateFromParent().

BranchIDLists::size_type edm::BranchIDListHelper::nAlreadyCopied_
private

Definition at line 46 of file BranchIDListHelper.h.

Referenced by updateFromParent().

BranchListIndex edm::BranchIDListHelper::producedBranchListIndex_
private