23 gtSource_(ps.getParameter<edm::InputTag> (
"gtSource")),
24 gtEvmSource_(ps.getParameter<edm::InputTag> (
"gtEvmSource")),
25 m_runInEventLoop(ps.getUntrackedParameter<bool>(
"runInEventLoop",
false)),
26 m_runInEndLumi(ps.getUntrackedParameter<bool>(
"runInEndLumi",
false)),
27 m_runInEndRun(ps.getUntrackedParameter<bool>(
"runInEndRun",
false)),
28 m_runInEndJob(ps.getUntrackedParameter<bool>(
"runInEndJob",
false)),
29 verbose_(ps.getUntrackedParameter<bool> (
"verbose",
false)),
32 m_nrEvJob(0), m_nrEvRun(0),
33 preGps_(0ULL), preOrb_(0ULL)
41 edm::LogInfo(
"L1TGT") <<
"\n Unable to get DQMStore service.";
74 edm::LogInfo(
"L1TGT") <<
"\n Unable to get DQMStore service.";
109 edm::LogInfo(
"L1TGT") <<
"L1TGT: analyze...." << std::endl;
116 long long int orbitTcs = -1;
117 int orbitEvmFdl = -1;
129 if (!gtEvmReadoutRecord.
isValid()) {
131 <<
"can't find L1GlobalTriggerEvmReadoutRecord with label "
137 const L1GtfeWord& gtfeEvmWord = gtEvmReadoutRecord->gtfeWord();
138 const L1GtfeExtWord& gtfeEvmExtWord = gtEvmReadoutRecord->gtfeWord();
140 gtfeEvmBx = gtfeEvmWord.
bxNr();
145 const L1TcsWord& tcsWord = gtEvmReadoutRecord->tcsWord();
147 tcsBx = tcsWord.
bxNr();
160 static_cast<double>(tcsWord.
eventNr()) / static_cast<double>(tcsWord.
partTrigNr()));
165 boost::uint16_t beam = gtfeEvmExtWord.
beamMode();
166 boost::uint16_t momentum = gtfeEvmExtWord.
beamMomentum();
180 edm::LogInfo(
"L1TGT") <<
" check mode = " << beam <<
" momentum " << momentum
181 <<
" int2 " << intensity2 << std::endl;
190 Long64_t delorb = orbitTcs -
preOrb_;
191 Long64_t delgps = gps -
preGps_;
195 freq = ((Double_t)(delorb)) * 3564. / ((Double_t)(delgps));
204 edm::LogInfo(
"L1TGT") <<
" preOrb_ = " << preOrb_ <<
" orbitTcs=" << orbitTcs
205 <<
" delorb=" << delorb << std::hex <<
" preGps_="
206 << preGps_ <<
" gps=" << gps << std::dec
207 <<
" delgps=" << delgps <<
" freq=" << freq
221 const L1GtFdlWord& fdlWord = gtEvmReadoutRecord->gtFdlWord();
223 orbitEvmFdl = fdlWord.
orbitNr();
227 if ((orbitTcs >= 0) && (orbitEvmFdl >= 0)) {
229 int diffOrbit =
static_cast<float> (orbitTcs - orbitEvmFdl);
230 edm::LogInfo(
"L1TGT") <<
"\n orbitTcs = " << orbitTcs <<
" orbitEvmFdl = "
231 << orbitEvmFdl <<
" diffOrbit = " << diffOrbit
232 <<
" orbitEvent = " << iEvent.
orbitNumber() << std::endl;
252 }
else if (orbitEvmFdl >= 0) {
263 if ((lsTcs >= 0) && (lsEvmFdl >= 0)) {
265 int diffLs =
static_cast<float> (lsTcs - lsEvmFdl);
266 edm::LogInfo(
"L1TGT") <<
"\n lsTcs = " << lsTcs <<
" lsEvmFdl = " << lsEvmFdl
267 <<
" diffLs = " << diffLs <<
" lsEvent = "
268 << lsNumber << std::endl;
287 }
else if (lsEvmFdl >= 0) {
304 if (!gtReadoutRecord.
isValid()) {
306 <<
"can't find L1GlobalTriggerReadoutRecord with label "
313 int fdlBx[2] = { -1, -1 };
314 int psbBx[2][7] = { { -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, -1, -1, -1,
319 const L1GtfeWord& gtfeWord = gtReadoutRecord->gtfeWord();
320 gtfeBx = gtfeWord.
bxNr();
330 if (gmtReadoutCollection.
isValid()) {
331 gmtBx = gmtReadoutCollection->getRecord().getBxNr();
337 const L1GtFdlWord& fdlWord = gtReadoutRecord->gtFdlWord();
338 fdlBx[0] = fdlWord.
bxNr();
342 const DecisionWord& gtDecisionWord = gtReadoutRecord->decisionWord();
344 gtReadoutRecord->technicalTriggerWord();
347 DecisionWord::const_iterator GTdbitItr;
349 for (GTdbitItr = gtDecisionWord.begin(); GTdbitItr
350 != gtDecisionWord.end(); GTdbitItr++) {
355 DecisionWord::const_iterator GTdbitItr1;
356 for (GTdbitItr1 = gtDecisionWord.begin(); GTdbitItr1
357 != gtDecisionWord.end(); GTdbitItr1++) {
363 TechnicalTriggerWord::const_iterator GTtbitItr1;
364 for (GTtbitItr1 = gtTTWord.begin(); GTtbitItr1
365 != gtTTWord.end(); GTtbitItr1++) {
375 TechnicalTriggerWord::const_iterator GTtbitItr;
377 for (GTtbitItr = gtTTWord.begin(); GTtbitItr != gtTTWord.end(); GTtbitItr++) {
382 TechnicalTriggerWord::const_iterator GTtbitItr1;
383 for (GTtbitItr1 = gtTTWord.begin(); GTtbitItr1
384 != gtTTWord.end(); GTtbitItr1++) {
400 static_cast<float> (pfIndexAlgoTrig));
407 std::pair<int, int> pairLsPfi = std::make_pair(lsNumber,
424 int psbID[7] = { 0xbb09, 0xbb0d, 0xbb0e, 0xbb0f, 0xbb13, 0xbb14, 0xbb15 };
425 for (
int i = 0;
i < 7;
i++) {
426 if (
isActive(gtfeActiveBoards, ibit)) {
427 L1GtPsbWord psbWord = gtReadoutRecord->gtPsbWord(psbID[
i]);
428 psbBx[0][
i] = psbWord.
bxNr();
439 for (
int i = 0;
i < 2;
i++) {
443 for (
int j = 0;
j < 7;
j++) {
444 for (
int i = 0;
i < 2;
i++) {
445 if (psbBx[
i][
j] > -1)
490 const int TotalNrBinsLs = 1000;
491 const double totalNrBinsLs =
static_cast<double>(TotalNrBinsLs);
500 "GT algorithm trigger bit correlation",
501 128, -0.5, 127.5, 128, -0.5, 127.5);
506 "GT technical trigger bits",
511 "GT technical trigger bit correlation",
512 64, -0.5, 63.5, 64, -0.5, 63.5);
517 "GT algorithm - technical trigger bit correlation",
518 128, -0.5, 127.5, 64, -0.5, 63.5);
523 "GT algorithm trigger bit rate per LS",
524 TotalNrBinsLs, 0., totalNrBinsLs, 128, -0.5, 127.5);
529 "GT technical trigger bit rate per LS",
530 TotalNrBinsLs, 0., totalNrBinsLs, 64, -0.5, 63.5);
544 "GT event number (from last resync)",
549 "GT event number (from last resync) vs LS",
550 TotalNrBinsLs, 0., totalNrBinsLs, 100, -0.1, 1.e15,
"s");
555 "GT trigger number (from start run)",
560 "GT trigger number (from start run) vs LS",
561 TotalNrBinsLs, 0., totalNrBinsLs, 100, -0.1, 1.e15,
"s");
566 "GT event/trigger number ratio vs LS",
567 TotalNrBinsLs, 0., totalNrBinsLs, 100, -0.1, 2.,
"s");
572 "GT orbit number vs LS",
573 TotalNrBinsLs, 0., totalNrBinsLs, 100, -0.1, 1.e15,
"s");
578 "GT setup version vs LS",
579 TotalNrBinsLs, 0., totalNrBinsLs, 100, -0.1, 1.e10,
"i");
587 "delta Bx of GT modules wrt GTFE",
588 20, 0., 20., 100, -4000., 4000.,
"i");
612 "BST master status over LS",
613 TotalNrBinsLs, 0., totalNrBinsLs, 6, -1., 5.);
620 "BST turn count over LS",
621 TotalNrBinsLs, 0., totalNrBinsLs, 250, 0., 4.3e9);
626 "BST LHC fill number % 1000", 1000, 0., 1000.);
630 "BST beam mode over LS",
631 TotalNrBinsLs, 0., totalNrBinsLs, 25, 1., 26.);
658 TotalNrBinsLs, 0., totalNrBinsLs, 100, 0., 7200.);
667 "Clock frequency measured by GPS", 1000, -2., 200.);
671 "Clock frequency measured by GPS",
672 TotalNrBinsLs, 0., totalNrBinsLs, 100, 39.95, 40.2);
678 TotalNrBinsLs, 0., totalNrBinsLs, 1000, 0., 5000.);
684 TotalNrBinsLs, 0., totalNrBinsLs, 1000, 0., 5000.);
691 "Index of L1 prescale factor set",
692 TotalNrBinsLs, 0., totalNrBinsLs, 25, 0., 25.);
697 "Number of prescale factor indices used per LS", 10, 0., 10.);
708 "Orbit number difference (TCS - EVM_FDL)",
716 "LS number difference (TCS - EVM_FDL)",
726 "Orbit number difference (TCS - EVM_FDL)",
727 TotalNrBinsLs, 0., totalNrBinsLs,
735 "LS number difference (TCS - EVM_FDL)",
736 TotalNrBinsLs, 0., totalNrBinsLs,
753 if (word & (1 << bit))
762 edm::LogInfo(
"L1TGT") <<
"\n Prescale factor indices used in a LS "
769 <<
" pfIndex = " << (*cIt).second << std::endl;
780 int previousLsNumber = -1;
781 int previousPfsIndex = -1;
789 int pfsIndicesPerLs = 1;
791 if ((*cIt).first == previousLsNumber) {
793 if ((*cIt).second != previousPfsIndex) {
795 previousPfsIndex = (*cIt).second;
801 if (previousLsNumber != -1) {
806 previousLsNumber = (*cIt).first;
807 previousPfsIndex = (*cIt).second;
MonitorElement * m_monL1PrescaleFactorSet
T getUntrackedParameter(std::string const &, T const &) const
MonitorElement * gpsfreqwide
const cms_uint16_t bxNr() const
get/set bunch cross number of the actual bx
const cms_uint64_t orbitNr() const
get/set orbit number since start of run
DQMStore * m_dbe
internal members
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
void rmdir(const std::string &fullpath)
MonitorElement * m_monLsNrDiffTcsFdlEvmLs
std::vector< std::pair< int, int > >::const_iterator CItVecPair
const cms_uint64_t gpsTime() const
LHC-BOB-ES-0001 (EDMS 638899)
std::vector< std::pair< int, int > > m_pairLsNumberPfIndex
void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
edm::LuminosityBlockNumber_t luminosityBlock() const
const cms_uint16_t luminositySegmentNr() const
get/set luminosity segment number
MonitorElement * BST_intensityBeam1
static const int MaxOrbitNrDiffTcsFdlEvm
MonitorElement * algo_bits_corr
bool verbose_
verbosity switch
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
const cms_uint16_t bstMasterStatus() const
const cms_uint32_t partTrigNr() const
get/set total number of L1A sent since start of the run to this DAQ partition
edm::InputTag gtSource_
input parameters
MonitorElement * BST_beamMode
MonitorElement * BST_MasterStatus
const cms_uint16_t beamMomentum() const
const cms_uint16_t bxNr() const
get/set BxNr - bunch cross number of the actual bx
MonitorElement * BST_intensityBeam2
const cms_uint16_t bxNr() const
get/set bunch cross number as counted in the TCS chip
void bookHistograms()
book all histograms for the module
MonitorElement * event_number
edm::InputTag gtEvmSource_
input tag for L1 GT EVM readout record
std::vector< bool > DecisionWord
typedefs
static const int MaxLsNrDiffTcsFdlEvm
MonitorElement * orbit_lumi
std::vector< bool > TechnicalTriggerWord
technical trigger bits (64 bits)
MonitorElement * bookProfile(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, const char *option="s")
std::string m_histFolder
histogram folder for L1 GT plots
const cms_uint16_t localBxNr() const
get/set local bunch cross number of the actual bx
MonitorElement * algo_bits_lumi
virtual void beginLuminosityBlock(const edm::LuminosityBlock &, const edm::EventSetup &)
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
const cms_uint16_t activeBoards() const
get/set boards contributing to EVM respectively DAQ record
MonitorElement * m_monLsNrDiffTcsFdlEvm
const cms_uint16_t bxNr() const
get/set bunch cross number as counted in the GTFE board
bool dirExists(const std::string &path) const
true if directory exists
const cms_uint32_t totalIntensityBeam2() const
const cms_uint32_t totalIntensityBeam1() const
MonitorElement * algo_bits
MonitorElement * event_type
const cms_uint16_t gtPrescaleFactorIndexAlgo() const
MonitorElement * m_monOrbitNrDiffTcsFdlEvmLs
const cms_uint16_t lumiSegmentNr() const
get/set luminosity segment number of the actual bx
MonitorElement * dbx_module
unsigned long long uint64_t
virtual void endLuminosityBlock(const edm::LuminosityBlock &, const edm::EventSetup &)
end section
const cms_uint32_t lhcFillNumber() const
MonitorElement * tt_bits_corr
virtual void endRun(const edm::Run &, const edm::EventSetup &)
bool isActive(int word, int bit)
MonitorElement * gpsfreqlum
int m_nrEvJob
number of events processed
void countPfsIndicesPerLs()
const cms_uint16_t triggerType() const
get/set trigger type, identical with event type in CMS header
MonitorElement * m_monL1PfIndicesPerLs
const cms_uint32_t eventNr() const
get/set event number since last L1 reset generated in TCS chip
const cms_uint32_t setupVersion() const
get/set setup version
MonitorElement * trigger_number
virtual void beginRun(const edm::Run &, const edm::EventSetup &)
MonitorElement * BST_beamMomentum
MonitorElement * BST_lhcFillNumber
MonitorElement * setupversion_lumi
virtual void analyze(const edm::Event &, const edm::EventSetup &)
const cms_uint32_t turnCountNumber() const
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
MonitorElement * BST_turnCountNumber
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
void Reset(void)
reset ME (ie. contents, errors, etc)
MonitorElement * event_lumi
const cms_uint16_t beamMode() const
MonitorElement * tt_bits_lumi
MonitorElement * trigger_lumi
MonitorElement * evnum_trignum_lumi
const cms_uint32_t orbitNr() const
get/set orbit number
MonitorElement * algo_tt_bits_corr
void setCurrentFolder(const std::string &fullpath)
const cms_uint16_t localBxNr() const
get/set local bunch cross number of the actual bx
MonitorElement * m_monOrbitNrDiffTcsFdlEvm
L1TGT(const edm::ParameterSet &ps)