55 siStripClusterInfo_(consumesCollector()) {
56 produces<std::vector<unsigned>>(
Prefix +
"number");
57 produces<std::vector<unsigned>>(
Prefix +
"width");
58 produces<std::vector<float>>(
Prefix +
"variance");
59 produces<std::vector<float>>(
Prefix +
"barystrip");
60 produces<std::vector<float>>(
Prefix +
"middlestrip");
61 produces<std::vector<unsigned>>(
Prefix +
"charge");
62 produces<std::vector<float>>(
Prefix +
"noise");
63 produces<std::vector<float>>(
Prefix +
"ston");
64 produces<std::vector<unsigned>>(
Prefix +
"seedstrip");
65 produces<std::vector<unsigned>>(
Prefix +
"seedindex");
66 produces<std::vector<unsigned>>(
Prefix +
"seedcharge");
67 produces<std::vector<float>>(
Prefix +
"seednoise");
68 produces<std::vector<float>>(
Prefix +
"seedgain");
69 produces<std::vector<unsigned>>(
Prefix +
"qualityisbad");
71 produces<std::vector<float>>(
Prefix +
"rawchargeC");
72 produces<std::vector<float>>(
Prefix +
"rawchargeL");
73 produces<std::vector<float>>(
Prefix +
"rawchargeR");
74 produces<std::vector<float>>(
Prefix +
"rawchargeLL");
75 produces<std::vector<float>>(
Prefix +
"rawchargeRR");
76 produces<std::vector<float>>(
Prefix +
"eta");
77 produces<std::vector<float>>(
Prefix +
"foldedeta");
78 produces<std::vector<float>>(
Prefix +
"etaX");
79 produces<std::vector<float>>(
Prefix +
"etaasymm");
80 produces<std::vector<float>>(
Prefix +
"outsideasymm");
81 produces<std::vector<float>>(
Prefix +
"neweta");
82 produces<std::vector<float>>(
Prefix +
"newetaerr");
84 produces<std::vector<unsigned>>(
Prefix +
"detid");
85 produces<std::vector<int>>(
Prefix +
"subdetid");
86 produces<std::vector<int>>(
Prefix +
"module");
87 produces<std::vector<int>>(
Prefix +
"side");
88 produces<std::vector<int>>(
Prefix +
"layerwheel");
89 produces<std::vector<int>>(
Prefix +
"stringringrod");
90 produces<std::vector<int>>(
Prefix +
"petal");
91 produces<std::vector<int>>(
Prefix +
"stereo");
104 auto number = std::make_unique<std::vector<unsigned>>(7, 0);
105 auto width = std::make_unique<std::vector<unsigned>>();
106 auto variance = std::make_unique<std::vector<float>>();
107 auto barystrip = std::make_unique<std::vector<float>>();
108 auto middlestrip = std::make_unique<std::vector<float>>();
109 auto charge = std::make_unique<std::vector<unsigned>>();
110 auto noise = std::make_unique<std::vector<float>>();
111 auto ston = std::make_unique<std::vector<float>>();
112 auto seedstrip = std::make_unique<std::vector<unsigned>>();
113 auto seedindex = std::make_unique<std::vector<unsigned>>();
114 auto seedcharge = std::make_unique<std::vector<unsigned>>();
115 auto seednoise = std::make_unique<std::vector<float>>();
116 auto seedgain = std::make_unique<std::vector<float>>();
117 auto qualityisbad = std::make_unique<std::vector<unsigned>>();
119 auto rawchargeC = std::make_unique<std::vector<float>>();
120 auto rawchargeL = std::make_unique<std::vector<float>>();
121 auto rawchargeR = std::make_unique<std::vector<float>>();
122 auto rawchargeLL = std::make_unique<std::vector<float>>();
123 auto rawchargeRR = std::make_unique<std::vector<float>>();
124 auto etaX = std::make_unique<std::vector<float>>();
125 auto eta = std::make_unique<std::vector<float>>();
126 auto foldedeta = std::make_unique<std::vector<float>>();
127 auto etaasymm = std::make_unique<std::vector<float>>();
128 auto outsideasymm = std::make_unique<std::vector<float>>();
129 auto neweta = std::make_unique<std::vector<float>>();
130 auto newetaerr = std::make_unique<std::vector<float>>();
132 auto detid = std::make_unique<std::vector<unsigned>>();
133 auto subdetid = std::make_unique<std::vector<int>>();
134 auto side = std::make_unique<std::vector<int>>();
135 auto module = std::make_unique<std::vector<int>>();
136 auto layerwheel = std::make_unique<std::vector<int>>();
137 auto stringringrod = std::make_unique<std::vector<int>>();
138 auto petal = std::make_unique<std::vector<int>>();
139 auto stereo = std::make_unique<std::vector<int>>();
150 for (; itClusters !=
clusters->end(); ++itClusters) {
151 uint32_t
id = itClusters->
id();
161 width->push_back(cluster->amplitudes().size());
162 barystrip->push_back(cluster->barycenter());
163 variance->push_back(
info.variance());
164 middlestrip->push_back(
info.firstStrip() +
info.width() / 2.0);
166 noise->push_back(
info.noiseRescaledByGain());
167 ston->push_back(
info.signalOverNoise());
168 seedstrip->push_back(
info.maxStrip());
169 seedindex->push_back(
info.maxIndex());
170 seedcharge->push_back(
info.maxCharge());
171 seednoise->push_back(
info.stripNoisesRescaledByGain().at(
info.maxIndex()));
172 seedgain->push_back(
info.stripGains().at(
info.maxIndex()));
173 qualityisbad->push_back(
info.IsAnythingBad());
175 rawchargeC->push_back(digis.
max);
176 rawchargeL->push_back(digis.
left);
177 rawchargeR->push_back(digis.
right);
178 rawchargeLL->push_back(digis.
Lleft);
179 rawchargeRR->push_back(digis.
Rright);
180 etaX->push_back(digis.
etaX());
181 eta->push_back(digis.
eta());
182 etaasymm->push_back(digis.
etaasymm());
184 neweta->push_back((digis.
last - digis.
first) /
info.charge());
187 detid->push_back(
id);
188 subdetid->push_back(moduleV.
subdetid);
189 side->push_back(moduleV.
side);
193 petal->push_back(moduleV.
petal);
194 stereo->push_back(moduleV.
stereo);
238 left =
info.maxIndex() > uint16_t(0) ?
info.stripCharges()[
info.maxIndex() - 1] : 0;
239 Lleft =
info.maxIndex() > uint16_t(1) ?
info.stripCharges()[
info.maxIndex() - 2] : 0;
240 right = unsigned(
info.maxIndex() + 1) <
info.stripCharges().size() ?
info.stripCharges()[
info.maxIndex() + 1] : 0;
241 Rright = unsigned(
info.maxIndex() + 2) <
info.stripCharges().size() ?
info.stripCharges()[
info.maxIndex() + 2] : 0;
249 if (digiframe != rawProcessedDigis.
end()) {
250 max = digiframe->data.at(
info.maxStrip()).
adc();
251 left =
info.maxStrip() > uint16_t(0) ? digiframe->data.at(
info.maxStrip() - 1).
adc() : 0;
252 Lleft =
info.maxStrip() > uint16_t(1) ? digiframe->data.at(
info.maxStrip() - 2).
adc() : 0;
253 right = unsigned(
info.maxStrip() + 1) < digiframe->data.
size() ? digiframe->data.at(
info.maxStrip() + 1).
adc() : 0;
254 Rright = unsigned(
info.maxStrip() + 2) < digiframe->data.
size() ? digiframe->data.at(
info.maxStrip() + 2).
adc() : 0;
268 layerwheel = tTopo->
tibLayer(detid);
274 layerwheel = tTopo->
tidWheel(detid);
275 stringringrod = tTopo->
tidRing(detid);
280 layerwheel = tTopo->
tobLayer(detid);
281 stringringrod = tTopo->
tobRod(detid);
286 layerwheel = tTopo->
tecWheel(detid);
287 stringringrod = tTopo->
tecRing(detid);
unsigned int tecPetalNumber(const DetId &id) const
void produce(edm::Event &iEvent, const edm::EventSetup &iSetup) override
edm::InputTag theClustersLabel
T getParameter(std::string const &) const
unsigned int tobLayer(const DetId &id) const
iterator find(det_id_type id)
void setCluster(const SiStripCluster &cluster, int detId)
bool tobIsZMinusSide(const DetId &id) const
static constexpr auto TID
unsigned int tibModule(const DetId &id) const
#define DEFINE_FWK_MODULE(type)
unsigned int tidWheel(const DetId &id) const
ShallowClustersProducer(const edm::ParameterSet &)
bool tibIsZMinusSide(const DetId &id) const
unsigned int tecWheel(const DetId &id) const
unsigned int tibString(const DetId &id) const
SubDetector subDetector() const
bool tecIsZMinusSide(const DetId &id) const
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > topoToken_
data_type const * const_iterator
moduleVars(uint32_t, const TrackerTopology *)
unsigned int tecRing(const DetId &id) const
ring id
bool tibIsStereo(const DetId &id) const
const_iterator end(bool update=false) const
bool tidIsZMinusSide(const DetId &id) const
bool tobIsStereo(const DetId &id) const
unsigned int tidModule(const DetId &id) const
unsigned int tecModule(const DetId &id) const
T const * product() const
size_type size() const
Return the number of contained DetSets.
float outsideasymm() const
NearDigis(const SiStripClusterInfo &)
id_type id(size_t cell) const
static constexpr auto TOB
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
iterator end()
Return the off-the-end iterator.
Detector identifier class for the strip tracker.
boost::transform_iterator< IterHelp, const_IdIter > const_iterator
const_iterator begin(bool update=false) const
bool tecIsStereo(const DetId &id) const
unsigned int tobRod(const DetId &id) const
static constexpr auto TIB
bool tidIsStereo(const DetId &id) const
edm::EDGetTokenT< edmNew::DetSetVector< SiStripCluster > > theClustersToken_
edm::EDGetTokenT< edm::DetSetVector< SiStripProcessedRawDigi > > theDigisToken_
SiStripClusterInfo siStripClusterInfo_
unsigned int tidRing(const DetId &id) const
unsigned int tibLayer(const DetId &id) const
unsigned int tobModule(const DetId &id) const
void initEvent(const edm::EventSetup &iSetup)
collection_type::const_iterator const_iterator
Power< A, B >::type pow(const A &a, const B &b)
static constexpr auto TEC
uint16_t *__restrict__ uint16_t const *__restrict__ adc