11#include <framework/core/Module.h>
12#include <framework/datastore/StoreArray.h>
13#include <framework/dataobjects/DigitBase.h>
45 virtual void event()
override;
71 template <
class Digit>
80 B2DEBUG(20,
"optional input: " << digits.getName() <<
" " << bgDigits.
getName());
87 template <
class Digit>
92 if (!digits.isValid()) {
93 B2DEBUG(20, digits.getName() <<
" are not valid");
102 B2DEBUG(20, bgDigits.
getName() <<
" are not valid");
107 std::multimap<unsigned, Digit*> multimap;
108 for (
auto& digit : digits) {
109 unsigned id = digit.getUniqueChannelID();
111 multimap.insert(std::pair<unsigned, Digit*>(
id, &digit));
114 int size = digits.getEntries();
117 typedef typename std::multimap<unsigned, Digit*>::iterator
Iterator;
118 for (
const auto& bgDigit : bgDigits) {
120 unsigned id = bgDigit.getUniqueChannelID();
121 std::pair<Iterator, Iterator> range = multimap.equal_range(
id);
122 for (
Iterator it = range.first; it != range.second; ++it) {
123 auto* digit = it->second;
127 if (!pileup) digits.appendNew(bgDigit)->adjustAppendedBGDigit();
131 B2DEBUG(20, digits.getName() <<
": before " << size
133 <<
", after " << digits.getEntries()
134 <<
", merged " << size + bgDigits.
getEntries() - digits.getEntries());
std::string m_CDCHitsName
name of CDC collection to overlay with BG
std::string m_KLMDigitsName
name of KLM collection to overlay with BG
bool m_addCDC
if true add BG digits of CDC
std::vector< std::string > m_components
detector components included in overlay
std::string m_BackgroundInfoInstanceName
name BackgroundInfo name
bool m_addKLM
if true add BG digits of KLM
virtual void initialize() override
Initialize the Module.
virtual void event() override
Event processor.
bool m_addSVD
if true add BG digits of SVD
std::string m_ARICHDigitsName
name of ARICH collection to overlay with BG
bool m_addTOP
if true add BG digits of TOP
void registerDigits(const std::string &name)
Register simulated and BG digits (both as optional input)
std::string m_extensionName
name added to default branch names
void addBGDigits(const std::string &name)
Add BG digits to simulated ones.
bool m_addPXD
if true add BG digits of PXD
BGOverlayExecutorModule()
Constructor.
std::string m_TOPDigitsName
name of TOP collection to overlay with BG
bool m_addARICH
if true add BG digits of ARICH
std::string m_PXDDigitsName
name of PXD collection to overlay with BG
std::string m_SVDShaperDigitsName
name of SVD collection to overlay with BG
@ c_DontAppend
do not append BG digit to digits
const std::string & getName() const
Return name under which the object is saved in the DataStore.
bool isOptional(const std::string &name="")
Tell the DataStore about an optional input.
Accessor to arrays stored in the data store.
bool isValid() const
Check whether the array was registered.
int getEntries() const
Get the number of objects in the array.
map< unsigned, size_t >::const_iterator Iterator
Iterator for m_map.
Abstract base class for different kinds of events.