36 src_(iConfig.getParameter<
edm::InputTag>(
"src")),
37 maxHoleSize_(iConfig.getParameter<uint32_t>(
"maxHoleSize"))
39 produces<StripCompactDigiSimLinks>();
56 int previousLinkStrip;
57 std::vector<StripCompactDigiSimLinks::key_type> thisStripSignals;
58 std::vector<StripCompactDigiSimLinks::key_type> previousStripSignals;
60 for(
auto const& det : *src) {
61 DEBUG(
std::cerr <<
"\n\nProcessing detset " << det.detId() <<
", size = " << det.size() << std::endl;)
63 previousLinkStrip = -2;
64 thisStripSignals.clear();
65 previousStripSignals.clear();
67 DEBUG(
std::cerr <<
" processing digiSimLink on strip " << it->channel() <<
" left by particle " << it->SimTrackId() <<
", event " << it->eventId().rawId() << std::endl;)
68 if (
int(it->channel()) != previousLinkStrip) {
69 previousStrip = previousLinkStrip;
71 swap(thisStripSignals, previousStripSignals);
72 thisStripSignals.clear();
74 DEBUG(
std::cerr <<
" previous strip " << previousStrip <<
", previous link strip " << previousLinkStrip << std::endl;)
78 bool alreadyClusterized =
false;
79 if (
int(it->channel()) == previousStrip+1) {
81 if (
std::find(previousStripSignals.begin(), previousStripSignals.end(),
key) != previousStripSignals.end()) {
82 alreadyClusterized =
true;
86 if (!alreadyClusterized) {
88 unsigned int size = 1;
89 int myLastStrip = it->channel();
91 DEBUG(
std::cerr <<
" digiSimLink on strip " << it2->channel() <<
" left by particle " << it2->SimTrackId() <<
", event " << it2->eventId().rawId() << std::endl;)
93 DEBUG(
std::cerr <<
" found hole of size " << (it2->channel() - myLastStrip) <<
", stopping." << std::endl;)
96 if ((it2->eventId() ==
key.first) && (it2->SimTrackId() ==
key.second)) {
99 myLastStrip = it2->channel();
104 if (
int(it->channel()) != previousLinkStrip) {
105 previousLinkStrip = it->channel();
107 thisStripSignals.push_back(
key);
108 DEBUG(
std::cerr <<
" ending state " << previousStrip <<
", previous link strip " << previousLinkStrip << std::endl;)
~StripCompactDigiSimLinksProducer() override
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
#define DEFINE_FWK_MODULE(type)
void insert(const key_type &key, const HitRecord &record)
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
void swap(Association< C > &lhs, Association< C > &rhs)
StripCompactDigiSimLinksProducer(const edm::ParameterSet &iConfig)
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
void produce(edm::Event &, const edm::EventSetup &) override
std::pair< EncodedEventId, unsigned int > key_type