|
|
Go to the documentation of this file.
56 geom_token_ = esConsumes<GEMGeometry, MuonGeometryRecord, edm::Transition::BeginRun>();
58 produces<GEMPadDigiCollection>();
59 consumes<GEMDigiCollection>(
digis_);
68 descriptions.
add(
"simMuonGEMPadDigisDef",
desc);
77 GEMPadDigi::NumberPartitions::GE21SplitStrip);
107 std::set<std::tuple<int, int, unsigned> > proto_pads;
111 auto digis = det_digis.get(
p->id());
112 for (
auto d = digis.first;
d != digis.second; ++
d) {
113 unsigned pad_num = static_cast<unsigned>(
p->padOfStrip(
d->strip()));
115 auto nPart = GEMPadDigi::NumberPartitions::GE11;
118 }
else if (
p->isGE21()) {
119 nPart = GEMPadDigi::NumberPartitions::GE21;
124 edm::LogWarning(
"GEMPadDigiProducer") <<
"Invalid " << pad_num <<
" from " << *
d <<
" in " <<
p->id();
126 proto_pads.emplace(pad_num,
d->bx(),
nPart);
130 for (
const auto&
d : proto_pads) {
131 GEMPadDigi pad_digi(std::get<0>(
d), std::get<1>(
d),
p->subsystem(), std::get<2>(
d));
133 out_pads.insertDigi(
p->id(), pad_digi);
147 if (
p->id().roll() % 2 == 0)
151 std::set<std::pair<int, int> > proto_pads;
155 auto digis = det_digis.get(
p->id());
158 p->id().region(),
p->id().ring(),
p->id().station(),
p->id().layer(),
p->id().chamber(),
p->id().roll() + 1);
159 auto digis2 = det_digis.get(gemId2);
161 for (
auto d = digis.first;
d != digis.second; ++
d) {
163 for (
auto d2 = digis2.first; d2 != digis2.second; ++d2) {
164 if (
d->strip() == d2->strip()) {
165 proto_pads.emplace(
d->strip(),
d->bx());
171 for (
const auto&
d : proto_pads) {
172 GEMPadDigi pad_digi(
d.first,
d.second,
p->subsystem(), GEMPadDigi::NumberPartitions::GE21SplitStrip);
174 out_pads.insertDigi(
p->id(), pad_digi);
191 edm::LogError(
"GEMPadDigiProducer") <<
"ME0 geometry appears corrupted";
198 edm::LogError(
"GEMPadDigiProducer") <<
"GE1/1 geometry appears corrupted";
206 edm::LogError(
"GEMPadDigiProducer") <<
"GE2/1 geometry (8 partition) appears corrupted";
211 GEMPadDigi::NumberPartitions::GE21SplitStrip) {
212 edm::LogError(
"GEMPadDigiProducer") <<
"GE2/1 geometry (16 partition) appears corrupted";
void checkValid(const GEMPadDigi &pad, const GEMDetId &id) const
ME0 Data Record : block->header().getID() = 6.
T const * product() const
MuonDigiCollection< GEMDetId, GEMPadDigi > GEMPadDigiCollection
Log< level::Warning, false > LogWarning
void checkGeometry() const
#define DEFINE_FWK_MODULE(type)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
edm::EDGetTokenT< GEMDigiCollection > digi_token_
Name of input digi Collection.
~GEMPadDigiProducer() override
TString nPart(Int_t part, TString string, TString delimit=";", Bool_t removerest=true)
void buildPads16GE21(const GEMDigiCollection &digis, GEMPadDigiCollection &out_pads) const
void buildPads(const GEMDigiCollection &digis, GEMPadDigiCollection &out_pads) const
void produce(edm::Event &, const edm::EventSetup &) override
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
Log< level::Error, false > LogError
GEMPadDigiProducer(const edm::ParameterSet &ps)
const GEMGeometry * geometry_
int nEtaPartitions() const
Retunr numbers of eta partitions.
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
void beginRun(const edm::Run &, const edm::EventSetup &) override
T getParameter(std::string const &) const
const std::vector< const GEMEtaPartition * > & etaPartitions() const
Return a vector of all GEM eta partitions.
const GEMChamber * chamber(GEMDetId id) const
edm::ESGetToken< GEMGeometry, MuonGeometryRecord > geom_token_