39 verbose_(ps.getUntrackedParameter<bool>(
"verbose",
false)),
40 l1GtDataSource_(ps.getParameter<edm::
InputTag>(
"l1GtData")),
41 denomIsTech_(ps.getUntrackedParameter<bool>(
"denomIsTech",
true)),
42 denomBit_(ps.getUntrackedParameter<unsigned int>(
"denomBit", 40)),
43 tfIsTech_(ps.getUntrackedParameter<bool>(
"tfIsTech",
true)),
44 tfBit_(ps.getUntrackedParameter<unsigned int>(
"tfBit", 41)),
45 algoSelected_(ps.getUntrackedParameter<std::vector<unsigned int> >(
46 "algoMonitorBits", std::vector<unsigned int>())),
47 techSelected_(ps.getUntrackedParameter<std::vector<unsigned int> >(
48 "techMonitorBits", std::vector<unsigned int>())),
49 folderName_(ps.getUntrackedParameter<std::
string>(
50 "dqmFolder", std::
string(
"L1T/L1Scalers_EvF"))),
60 fedStart_(ps.getUntrackedParameter<unsigned int>(
"firstFED", 0)),
61 fedStop_(ps.getUntrackedParameter<unsigned int>(
"lastFED", 931)),
64 fedRawCollection_(ps.getParameter<edm::
InputTag>(
"fedRawData")),
65 maskedList_(ps.getUntrackedParameter<std::vector<int> >(
68 HcalRecHitCollection_(
69 ps.getParameter<edm::
InputTag>(
"HFRecHitCollection")) {
77 iBooker.
book1D(
"l1AlgoBits",
"L1 Algorithm Bits", 128, -0.5, 127.5);
79 "L1 Algorithm Bits vs "
81 3600, -0.5, 3599.5, 128, -0.5, 127.5);
85 128, -0.5, 127.5, 128, -0.5, 127.5);
87 iBooker.
book1D(
"l1TechBits",
"L1 Tech. Trigger Bits", 64, -0.5, 63.5);
91 "Bits vs Bunch Number",
92 3600, -0.5, 3599.5, 64, -0.5, 63.5);
93 bxNum_ = iBooker.
book1D(
"bxNum",
"Bunch number from GTFE", 3600, -0.5, 3599.5);
102 std::stringstream sdenom;
114 std::stringstream
ss;
117 "BX_diff_algo" + ss.str(), 9, -4, 5));
119 iBooker.
book2D(
"BX_diffvslumi_algo" + ss.str(),
"BX_diff_algo" + ss.str(),
124 std::stringstream
ss;
127 "BX_diff_tech" + ss.str(), 9, -4, 5));
129 iBooker.
book2D(
"BX_diffvslumi_tech" + ss.str(),
"BX_diff_tech" + ss.str(),
135 std::stringstream ss1;
137 dtBxDiff_ = iBooker.
book1D(
"BX_diff_DT" + ss1.str(),
"BX_diff_DT" + ss1.str(),
143 "BX_diff_CSC" + ss1.str(), 9, -4, 5);
148 "BX_diff_RPCb" + ss1.str(), 9, -4, 5);
153 "BX_diff_RPCf" + ss1.str(), 9, -4, 5);
162 LogDebug(
"Status") <<
"L1Scalers::analyze event " <<
nev_;
171 LogDebug(
"Product") <<
"can't find L1GlobalTriggerReadoutRecord "
175 int gtfeBx = gtfeWord.
bxNr();
178 bool tfBitGood =
false;
182 for (
int iebx = 0; iebx <= 4; iebx++) {
184 DecisionWord gtDecisionWord = gtRecord->decisionWord(iebx - 2);
186 if (!gtDecisionWord.empty()) {
188 for (uint
i = 0;
i < gtDecisionWord.size(); ++
i) {
189 if (gtDecisionWord[
i]) {
196 for (uint
i = 0;
i < gtDecisionWord.size(); ++
i) {
197 if (gtDecisionWord[
i]) {
200 for (uint
j = i + 1;
j < gtDecisionWord.size(); ++
j) {
201 if (gtDecisionWord[
j]) {
216 for (uint
i = 0;
i < tw.size(); ++
i) {
223 for (uint
i = 0;
i < tw.size(); ++
i) {
234 if (tw[
tfBit_]) tfBitGood =
true;
252 if (!gmtCollection.
isValid()) {
254 <<
"can't find L1MuGMTReadoutCollection with label "
259 int bx1st[4] = {9, 9, 9, 9};
263 for (
int iebx = 0; iebx <= 4; iebx++) {
265 DecisionWord gtDecisionWord = gtRecord->decisionWord(iebx - 2);
267 bool denomBitGood =
false;
278 if (!gtDecisionWord.empty()) {
299 if (!gtDecisionWord.empty()) {
316 std::vector<L1MuGMTReadoutRecord> gmt_records = gmtrc->
getRecords();
318 std::vector<L1MuGMTReadoutRecord>::const_iterator RRItr;
320 for (RRItr = gmt_records.begin(); RRItr != gmt_records.end();
322 std::vector<L1MuRegionalCand> INPCands[4] = {
323 RRItr->getDTBXCands(), RRItr->getBrlRPCCands(),
324 RRItr->getCSCCands(), RRItr->getFwdRPCCands()};
325 std::vector<L1MuRegionalCand>::const_iterator INPItr;
326 int BxInEvent = RRItr->getBxInEvent();
329 for (
int i = 0;
i < 4;
i++) {
330 for (INPItr = INPCands[
i].
begin(); INPItr != INPCands[
i].end();
332 if (!INPItr->empty()) {
334 bx1st[
i] = BxInEvent +
LuminosityBlockID id() const
MonitorElement * l1scalers_
std::vector< MonitorElement * > techBxDiff_
std::vector< MonitorElement * > algoBxDiffLumi_
edm::InputTag l1GtDataSource_
std::vector< MonitorElement * > algoBxDiff_
MonitorElement * rpcfBxDiffLumi_
MonitorElement * bookInt(Args &&...args)
L1Scalers(const edm::ParameterSet &ps)
edm::LuminosityBlockNumber_t luminosityBlock() const
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
MonitorElement * rpcbBxDiffLumi_
MonitorElement * dtBxDiffLumi_
void endLuminosityBlock(const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &c)
DQM Client Diagnostic should be performed here:
std::vector< int > earliestTech_
void analyze(const edm::Event &e, const edm::EventSetup &c)
MonitorElement * cscBxDiff_
MonitorElement * l1techScalers_
std::vector< bool > DecisionWord
typedefs
MonitorElement * l1scalersBx_
MonitorElement * book1D(Args &&...args)
MonitorElement * l1TtCounter_
std::vector< bool > TechnicalTriggerWord
technical trigger bits (64 bits)
std::vector< MonitorElement * > techBxDiffLumi_
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
std::vector< unsigned int > algoSelected_
const cms_uint16_t bxNr() const
get/set bunch cross number as counted in the GTFE board
MonitorElement * l1Correlations_
std::vector< unsigned int > techSelected_
MonitorElement * rpcbBxDiff_
MonitorElement * dtBxDiff_
void setCurrentFolder(const std::string &fullpath)
T const * product() const
unsigned int rateAlgoCounter_
MonitorElement * book2D(Args &&...args)
std::vector< int > earliestAlgo_
MonitorElement * nLumiBlock_
LuminosityBlockNumber_t luminosityBlock() const
MonitorElement * l1techScalersBx_
std::vector< L1MuGMTReadoutRecord > const & getRecords() const
MonitorElement * l1AlgoCounter_
volatile std::atomic< bool > shutdown_flag false
MonitorElement * rpcfBxDiff_
unsigned int rateTtCounter_
MonitorElement * cscBxDiffLumi_