33 void process(
const ClusterCollection&
input, std::vector<DetDigiCollection>& output_base);
48 produces<DigiCollection>(
"ZeroSuppressed");
49 produces<DigiCollection>(
"VirginRaw");
50 produces<DigiCollection>(
"ProcessedRaw");
51 produces<DigiCollection>(
"ScopeMode");
57 std::vector<DetDigiCollection> output_base;
59 event.getByToken(
token, input);
64 auto outputZS = std::make_unique<DigiCollection>(output_base);
65 auto outputVR = std::make_unique<DigiCollection>();
66 auto outputPR = std::make_unique<DigiCollection>();
67 auto outputSM = std::make_unique<DigiCollection>();
69 event.put(
std::move(outputZS),
"ZeroSuppressed");
70 event.put(
std::move(outputVR),
"VirginRaw");
71 event.put(
std::move(outputPR),
"ProcessedRaw");
72 event.put(
std::move(outputSM),
"ScopeMode");
76 std::vector<DetDigiCollection>& output_base) {
78 uint32_t detid = it->detId();
84 for (; clus != endclus; clus++) {
86 size_t width = clus->amplitudes().size();
87 size_t firstStrip = clus->firstStrip();
88 uint16_t stripPos = firstStrip;
89 for (; istrip <
width; ++istrip) {
95 if (!detDigis.
empty())
96 output_base.push_back(detDigis);
116 throw cms::Exception(
"Invalid Charge") <<
" digi at strip " << strip <<
" has ADC out of range " <<
adc;
119 uint16_t
charge =
static_cast<uint16_t
>(
122 return (charge > 1022 ? 255 : (charge > 253 ? 254 : charge));
T getParameter(std::string const &) const
void setDetId(const uint32_t id)
edm::DetSetVector< SiStripDigi > DigiCollection
const_iterator end(bool update=false) const
edmNew::DetSet< SiStripCluster > DetClusterCollection
SiStripApvGain::Range gainRange
uint16_t applyGain(const uint16_t &strip, const uint16_t &adc)
data_type const * const_iterator
edm::ESHandle< SiStripGain > gainHandle
float gain(const uint16_t &strip) const
static std::string const input
void initialize(const edm::EventSetup &es)
#define DEFINE_FWK_MODULE(type)
static float getStripGain(const uint16_t &strip, const SiStripApvGain::Range &range)
std::pair< ContainerIterator, ContainerIterator > Range
edm::DetSet< SiStripDigi > DetDigiCollection
constexpr int adc(sample_type sample)
get the ADC sample (12 bits)
A Digi for the silicon strip detector, containing both strip and adc information, and suitable for st...
edm::EDGetTokenT< ClusterCollection > token
edmNew::DetSetVector< SiStripCluster > ClusterCollection
boost::transform_iterator< IterHelp, const_IdIter > const_iterator
void produce(edm::Event &, const edm::EventSetup &) override
void process(const ClusterCollection &input, std::vector< DetDigiCollection > &output_base)
edmNew::DetSet< SiStripCluster >::const_iterator DetClusIter
SiStripClusterToDigiProducer(const edm::ParameterSet &conf)
collection_type::const_iterator const_iterator
edm::DetSet< SiStripDigi >::const_iterator DetDigiIter
const_iterator begin(bool update=false) const
const SiStripApvGain::Range getRange(uint32_t detID) const