39 verbose_(ps.getUntrackedParameter<bool>(
"verbose",
false)),
42 denomIsTech_(ps.getUntrackedParameter<bool>(
"denomIsTech",
true)),
43 denomBit_(ps.getUntrackedParameter<unsigned int>(
"denomBit", 40)),
44 tfIsTech_(ps.getUntrackedParameter<bool>(
"tfIsTech",
true)),
45 tfBit_(ps.getUntrackedParameter<unsigned int>(
"tfBit", 41)),
46 algoSelected_(ps.getUntrackedParameter<std::vector<unsigned int> >(
47 "algoMonitorBits", std::vector<unsigned int>())),
48 techSelected_(ps.getUntrackedParameter<std::vector<unsigned int> >(
49 "techMonitorBits", std::vector<unsigned int>())),
50 folderName_(ps.getUntrackedParameter<std::
string>(
51 "dqmFolder", std::
string(
"L1T/L1Scalers_EvF"))),
61 fedStart_(ps.getUntrackedParameter<unsigned int>(
"firstFED", 0)),
62 fedStop_(ps.getUntrackedParameter<unsigned int>(
"lastFED", 931)),
65 fedRawCollection_(ps.getParameter<edm::
InputTag>(
"fedRawData")),
66 maskedList_(ps.getUntrackedParameter<std::vector<int> >(
69 HcalRecHitCollection_(
70 ps.getParameter<edm::
InputTag>(
"HFRecHitCollection")) {
78 iBooker.
book1D(
"l1AlgoBits",
"L1 Algorithm Bits", 128, -0.5, 127.5);
80 "L1 Algorithm Bits vs "
82 3600, -0.5, 3599.5, 128, -0.5, 127.5);
86 128, -0.5, 127.5, 128, -0.5, 127.5);
88 iBooker.
book1D(
"l1TechBits",
"L1 Tech. Trigger Bits", 64, -0.5, 63.5);
92 "Bits vs Bunch Number",
93 3600, -0.5, 3599.5, 64, -0.5, 63.5);
94 bxNum_ = iBooker.
book1D(
"bxNum",
"Bunch number from GTFE", 3600, -0.5, 3599.5);
103 std::stringstream sdenom;
115 std::stringstream
ss;
118 "BX_diff_algo" + ss.str(), 9, -4, 5));
120 iBooker.
book2D(
"BX_diffvslumi_algo" + ss.str(),
"BX_diff_algo" + ss.str(),
125 std::stringstream
ss;
128 "BX_diff_tech" + ss.str(), 9, -4, 5));
130 iBooker.
book2D(
"BX_diffvslumi_tech" + ss.str(),
"BX_diff_tech" + ss.str(),
136 std::stringstream ss1;
138 dtBxDiff_ = iBooker.
book1D(
"BX_diff_DT" + ss1.str(),
"BX_diff_DT" + ss1.str(),
144 "BX_diff_CSC" + ss1.str(), 9, -4, 5);
149 "BX_diff_RPCb" + ss1.str(), 9, -4, 5);
154 "BX_diff_RPCf" + ss1.str(), 9, -4, 5);
163 LogDebug(
"Status") <<
"L1Scalers::analyze event " <<
nev_;
172 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";
258 int bx1st[4] = {9, 9, 9, 9};
262 for (
int iebx = 0; iebx <= 4; iebx++) {
264 DecisionWord gtDecisionWord = gtRecord->decisionWord(iebx - 2);
266 bool denomBitGood =
false;
277 if (!gtDecisionWord.empty()) {
298 if (!gtDecisionWord.empty()) {
315 std::vector<L1MuGMTReadoutRecord> gmt_records = gmtrc->
getRecords();
317 std::vector<L1MuGMTReadoutRecord>::const_iterator RRItr;
319 for (RRItr = gmt_records.begin(); RRItr != gmt_records.end();
321 std::vector<L1MuRegionalCand> INPCands[4] = {
322 RRItr->getDTBXCands(), RRItr->getBrlRPCCands(),
323 RRItr->getCSCCands(), RRItr->getFwdRPCCands()};
324 std::vector<L1MuRegionalCand>::const_iterator INPItr;
325 int BxInEvent = RRItr->getBxInEvent();
328 for (
int i = 0;
i < 4;
i++) {
329 for (INPItr = INPCands[
i].
begin(); INPItr != INPCands[
i].end();
331 if (!INPItr->empty()) {
333 bx1st[
i] = BxInEvent +
LuminosityBlockID id() const
MonitorElement * l1scalers_
std::vector< MonitorElement * > techBxDiff_
std::vector< MonitorElement * > algoBxDiffLumi_
std::vector< MonitorElement * > algoBxDiff_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
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_
std::vector< int > earliestTech_
MonitorElement * cscBxDiff_
MonitorElement * l1techScalers_
std::vector< bool > DecisionWord
typedefs
MonitorElement * l1scalersBx_
MonitorElement * book1D(Args &&...args)
void endLuminosityBlock(const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &c) override
DQM Client Diagnostic should be performed here:
MonitorElement * l1TtCounter_
std::vector< bool > TechnicalTriggerWord
technical trigger bits (64 bits)
std::vector< MonitorElement * > techBxDiffLumi_
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)
edm::EDGetTokenT< L1GlobalTriggerReadoutRecord > l1GtDataSource_
T const * product() const
unsigned int rateAlgoCounter_
MonitorElement * book2D(Args &&...args)
std::vector< int > earliestAlgo_
edm::EDGetTokenT< L1MuGMTReadoutCollection > l1GmtDataSource_
MonitorElement * nLumiBlock_
LuminosityBlockNumber_t luminosityBlock() const
MonitorElement * l1techScalersBx_
void analyze(const edm::Event &e, const edm::EventSetup &c) override
std::vector< L1MuGMTReadoutRecord > const & getRecords() const
MonitorElement * l1AlgoCounter_
volatile std::atomic< bool > shutdown_flag false
MonitorElement * rpcfBxDiff_
unsigned int rateTtCounter_
MonitorElement * cscBxDiffLumi_