58 useDBEMap_(pset.getParameter<bool>(
"useDBEMap")),
59 keepDAQStatus_(pset.getParameter<bool>(
"keepDAQStatus")),
60 readMultiBX_(pset.getParameter<bool>(
"readMultiBX")),
61 fedIdStart_(pset.getParameter<unsigned int>(
"fedIdStart")),
62 fedIdEnd_(pset.getParameter<unsigned int>(
"fedIdEnd")),
64 produces<GEMDigiCollection>();
66 produces<GEMAMC13StatusCollection>(
"AMC13Status");
67 produces<GEMAMCStatusCollection>(
"AMCStatus");
68 produces<GEMOHStatusCollection>(
"OHStatus");
69 produces<GEMVFATStatusCollection>(
"VFATStatus");
72 gemEMapToken_ = esConsumes<GEMeMap, GEMeMapRcd, edm::Transition::BeginRun>();
79 desc.
add<
bool>(
"useDBEMap",
false);
80 desc.
add<
bool>(
"keepDAQStatus",
false);
81 desc.
add<
bool>(
"readMultiBX",
false);
84 descriptions.
add(
"muonGEMDigisDefault", desc);
88 auto gemROmap = std::make_shared<GEMROMapping>();
91 auto gemEMap = std::make_unique<GEMeMap>(eMap);
92 gemEMap->convert(*gemROmap);
96 auto gemEMap = std::make_unique<GEMeMap>();
97 gemEMap->convertDummy(*gemROmap);
104 auto outGEMDigis = std::make_unique<GEMDigiCollection>();
105 auto outAMC13Status = std::make_unique<GEMAMC13StatusCollection>();
106 auto outAMCStatus = std::make_unique<GEMAMCStatusCollection>();
107 auto outOHStatus = std::make_unique<GEMOHStatusCollection>();
108 auto outVFATStatus = std::make_unique<GEMVFATStatusCollection>();
120 LogDebug(
"GEMRawToDigiModule") <<
"fedId:" <<
fedId <<
" words: " << nWords;
122 if (st_amc13.
isBad()) {
123 LogDebug(
"GEMRawToDigiModule") << st_amc13;
125 outAMC13Status.get()->insertDigi(
fedId, st_amc13);
134 LogDebug(
"GEMRawToDigiModule") <<
"AMC13 bx:" << amc13->bunchCrossing() <<
" lv1Id:" << int(amc13->lv1Id())
135 <<
" orbitNumber:" << amc13->orbitNumber();
138 for (
const auto&
amc : *(amc13->getAMCpayloads())) {
139 uint8_t amcNum =
amc.amcNum();
141 if (!gemROMap->isValidAMC(amcEC)) {
147 if (st_amc.isBad()) {
148 LogDebug(
"GEMRawToDigiModule") << st_amc;
150 outAMCStatus.get()->insertDigi(
fedId, st_amc);
155 uint16_t amcBx =
amc.bunchCrossing();
156 LogDebug(
"GEMRawToDigiModule") <<
"AMC no.:" << int(
amc.amcNum()) <<
" bx:" <<
int(
amc.bunchCrossing())
157 <<
" lv1Id:" <<
int(
amc.lv1Id()) <<
" orbitNumber:" <<
int(
amc.orbitNumber());
160 for (
const auto& optoHybrid : *
amc.gebs()) {
161 uint8_t gebId = optoHybrid.inputID();
164 bool isValidChamber = gemROMap->isValidChamber(geb_ec);
165 if (!isValidChamber) {
174 LogDebug(
"GEMRawToDigiModule") << st_oh;
176 outOHStatus.get()->insertDigi(gemChId, st_oh);
181 for (
auto vfat : *optoHybrid.vFATs()) {
183 vfat.setVersion(geb_dc.
vfatVer);
184 uint16_t vfatId = vfat.vfatId();
187 if (!gemROMap->isValidChipID(vfat_ec)) {
197 if (st_vfat.isBad()) {
198 LogDebug(
"GEMRawToDigiModule") << st_vfat;
200 outVFATStatus.get()->insertDigi(gemId, st_vfat);
205 int bx(vfat.bc() - amcBx);
210 chan0xf = ((vfat.lsData() >>
chan) & 0x1);
212 chan0xf = ((vfat.msData() >> (
chan - 64)) & 0x1);
226 <<
"fed: " <<
fedId <<
" amc:" << int(amcNum) <<
" geb:" << int(gebId) <<
" vfat id:" << int(vfatId)
227 <<
",type:" << vfat_dc.
vfatType <<
" id:" << gemId <<
" ch:" << chMap.chNum <<
" st:" << digi.
strip()
228 <<
" bx:" << digi.
bx();
230 outGEMDigis.get()->insertDigi(gemId, digi);
235 outVFATStatus.get()->insertDigi(gemId, st_vfat);
241 outOHStatus.get()->insertDigi(gemChId, st_oh);
247 outAMCStatus.get()->insertDigi(
fedId, st_amc);
253 outAMC13Status.get()->insertDigi(
fedId, st_amc13);
EventNumber_t event() const
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
edm::ESGetToken< GEMeMap, GEMeMapRcd > gemEMapToken_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
#define DEFINE_FWK_MODULE(type)
tuple chan
lumi = TPaveText(lowX+0.38, lowY+0.061, lowX+0.45, lowY+0.161, "NDC") lumi.SetBorderSize( 0 ) lumi...
int bunchCrossing() const
Run const & getRun() const
static const int maxChan_
size_t size() const
Lenght of the data buffer in bytes.
static const int nChannels
edm::EDGetTokenT< FEDRawDataCollection > fed_token
void globalEndRun(edm::Run const &, edm::EventSetup const &) const override
bool getData(T &iHolder) const
void produce(edm::StreamID, edm::Event &, edm::EventSetup const &) const override
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
GEMRawToDigiModule(const edm::ParameterSet &pset)
Constructor.
unsigned long long uint64_t
void add(std::string const &label, ParameterSetDescription const &psetDescription)
std::unique_ptr< GEMRawToDigi > gemRawToDigi_
std::shared_ptr< GEMROMapping > globalBeginRun(edm::Run const &, edm::EventSetup const &) const override
const unsigned char * data() const
Return a const pointer to the beginning of the data buffer.