CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
BranchIDListHelper.cc
Go to the documentation of this file.
2 
5 
6 #include <cassert>
7 
8 namespace edm {
9 
11  branchIDLists_(),
12  branchIDToIndexMap_(),
13  inputIndexToJobIndex_(),
14  producedBranchListIndex_(std::numeric_limits<BranchListIndex>::max()),
15  nAlreadyCopied_(0)
16  {}
17 
18  bool
20  //The BranchIDLists is a list of lists
21  // this routine compares bidlists to branchIDLists_ to see if a list
22  // in branchIDLists_ is already in bidlist and if it isn't we insert
23  // that new list into branchIDLists_
24  bool unchanged = true;
25  inputIndexToJobIndex_.clear();
26  inputIndexToJobIndex_.resize(bidlists.size());
27  for(auto it = bidlists.begin(), itEnd = bidlists.end(); it != itEnd; ++it) {
28  BranchListIndex oldBlix = it - bidlists.begin();
29  auto j = find_in_all(branchIDLists_, *it);
30  BranchListIndex blix = j - branchIDLists_.begin();
31  if(j == branchIDLists_.end()) {
32  branchIDLists_.push_back(*it);
33  for(BranchIDList::const_iterator i = it->begin(), iEnd = it->end(); i != iEnd; ++i) {
34  ProductIndex pix = i - it->begin();
35  branchIDToIndexMap_.insert(std::make_pair(BranchID(*i), std::make_pair(blix, pix)));
36  }
37  }
38  inputIndexToJobIndex_[oldBlix]=blix;
39  if(oldBlix != blix) {
40  unchanged = false;
41  }
42  }
43  return unchanged;
44  }
45 
46  void
48 
49  inputIndexToJobIndex_.resize(bidlists.size());
50  for(auto it = bidlists.begin() + nAlreadyCopied_, itEnd = bidlists.end(); it != itEnd; ++it) {
51  BranchListIndex oldBlix = it - bidlists.begin();
52  BranchListIndex blix = branchIDLists_.size();
53  branchIDLists_.push_back(*it);
54  for(BranchIDList::const_iterator i = it->begin(), iEnd = it->end(); i != iEnd; ++i) {
55  ProductIndex pix = i - it->begin();
56  branchIDToIndexMap_.insert(std::make_pair(BranchID(*i), std::make_pair(blix, pix)));
57  }
58  inputIndexToJobIndex_[oldBlix]=blix;
59  }
60  nAlreadyCopied_ = bidlists.size();
61  }
62 
63  void
65  BranchIDList bidlist;
66  // Add entries for current process for ProductID to BranchID mapping.
67  for(ProductRegistry::ProductList::const_iterator it = preg.productList().begin(), itEnd = preg.productList().end();
68  it != itEnd; ++it) {
69  if(it->second.produced()) {
70  if(it->second.branchType() == InEvent) {
71  bidlist.push_back(it->second.branchID().id());
72  }
73  }
74  }
75  if(!bidlist.empty()) {
76  BranchListIndex blix = branchIDLists_.size();
78  //preg.setProducedBranchListIndex(blix);
79  branchIDLists_.push_back(bidlist);
80  for(BranchIDList::const_iterator i = bidlist.begin(), iEnd = bidlist.end(); i != iEnd; ++i) {
81  ProductIndex pix = i - bidlist.begin();
82  branchIDToIndexMap_.insert(std::make_pair(BranchID(*i), std::make_pair(blix, pix)));
83  }
84  }
85  }
86 
87  void
89  for(BranchListIndex& i : indexes) {
90  assert(i<inputIndexToJobIndex_.size());
92  }
93  }
94 }
int i
Definition: DBlmapReader.cc:9
unsigned short BranchListIndex
std::vector< BranchIDList > BranchIDLists
Definition: BranchIDList.h:19
void updateFromParent(BranchIDLists const &bidlists)
void updateFromRegistry(ProductRegistry const &reg)
BranchIDLists::size_type nAlreadyCopied_
ProductList const & productList() const
std::vector< BranchListIndex > BranchListIndexes
BranchListIndex producedBranchListIndex_
int j
Definition: DBlmapReader.cc:9
ForwardSequence::const_iterator find_in_all(ForwardSequence const &s, Datum const &d)
wrappers for std::find
Definition: Algorithms.h:32
BranchIDToIndexMap branchIDToIndexMap_
bool updateFromInput(BranchIDLists const &bidlists)
void fixBranchListIndexes(BranchListIndexes &indexes) const
Called by sources to convert their read indexes into the indexes used by the job. ...
std::vector< BranchID::value_type > BranchIDList
Definition: BranchIDList.h:18
unsigned short ProductIndex
Definition: ProductID.h:26
preg
Definition: Schedule.cc:369
std::vector< BranchListIndex > inputIndexToJobIndex_
EventID const & max(EventID const &lh, EventID const &rh)
Definition: EventID.h:137