From d10d7e751df06bc188a4aed9fcd80502be48a088 Mon Sep 17 00:00:00 2001 From: jingyu zhang Date: Tue, 19 May 2015 00:31:17 +0200 Subject: [PATCH 1/3] run stage1 emulator for l1t dqm 75x --- DQM/L1TMonitor/interface/L1TdeGCT.h | 30 +- DQM/L1TMonitor/python/L1GtHwValidation_cff.py | 1 + DQM/L1TMonitor/python/L1TDEMONStage1_cfi.py | 18 + .../python/L1TEmulatorMonitor_cff.py | 41 +- .../python/L1TdeStage1Layer2_cfi.py | 13 + .../python/l1Stage1GtHwValidation_cfi.py | 60 ++ DQM/L1TMonitor/src/L1TdeGCT.cc | 864 ++++++++++++------ .../Configuration/python/ValL1Emulator_cff.py | 35 +- .../HardwareValidation/interface/DEtrait.h | 3 +- .../HardwareValidation/interface/DEutils.h | 9 +- .../interface/L1Comparator.h | 2 + .../python/L1Comparator_cfi.py | 1 + .../python/L1ComparatorforStage1_cfi.py | 38 + .../python/L1HardwareValidation_cff.py | 26 + .../HardwareValidation/src/L1Comparator.cc | 226 +++-- 15 files changed, 1029 insertions(+), 338 deletions(-) create mode 100644 DQM/L1TMonitor/python/L1TDEMONStage1_cfi.py create mode 100644 DQM/L1TMonitor/python/L1TdeStage1Layer2_cfi.py create mode 100644 DQM/L1TMonitor/python/l1Stage1GtHwValidation_cfi.py create mode 100644 L1Trigger/HardwareValidation/python/L1ComparatorforStage1_cfi.py diff --git a/DQM/L1TMonitor/interface/L1TdeGCT.h b/DQM/L1TMonitor/interface/L1TdeGCT.h index 4fab04f79a5ef..7f4f390a0d482 100644 --- a/DQM/L1TMonitor/interface/L1TdeGCT.h +++ b/DQM/L1TMonitor/interface/L1TdeGCT.h @@ -56,16 +56,22 @@ class L1TdeGCT : public DQMEDAnalyzer { // dqm histogram folder std::string histFolder_; + bool m_stage1_layer2_; + // dqm common bool monitorDaemon_; // (em) iso, no-iso, (jets) cen, for, tau & energy sums. - static const int nGctColl_ = dedefs::GCThfbit-dedefs::GCTisolaem+1; + static const int nGctColl_ = dedefs::GCThfbit-dedefs::GCTisolaem+1; + static const int nStage1Layer2Coll_ = dedefs::GCTisotaujets-dedefs::GCTisolaem+1; // counters int colCount[nGctColl_]; int nWithCol[nGctColl_]; + int colCount_stage1Layer2[nStage1Layer2Coll_]; + int nWithCol_stage1Layer2[nStage1Layer2Coll_]; + // Ranges and labels const int phiNBins = 18 ; const double phiMinim = -0.5; @@ -73,19 +79,19 @@ class L1TdeGCT : public DQMEDAnalyzer { const int etaNBins = 22 ; const double etaMinim = -0.5; const double etaMaxim = 21.5; - const int rnkNBins = 63; - const double rnkMinim = 0.5; - const double rnkMaxim = 63.5; static const int nerr = 5; const int nbit = 32; std::string cLabel[nGctColl_]= {"IsoEM", "NoisoEM", "CenJet", "ForJet", "TauJet", "HT", "MET", "ET", "MHT", "HFSums", "HFCnts"}; + std::string sLabel[nStage1Layer2Coll_]= + {"IsoEM", "NoisoEM", "CenJet", "ForJet", "TauJet", "HT", "MET", "ET", "MHT", "Stage1HFSums", "HFCnts", "IsoTauJet"}; std::string errLabel[nerr]= {"Agree", "Loc. Agree", "L.Disagree", "Data only", "Emul only"}; // MEs MonitorElement* sysrates; MonitorElement* sysncand[2]; + MonitorElement* errortype[nGctColl_]; // location MonitorElement* etaphi [nGctColl_]; @@ -96,12 +102,26 @@ class L1TdeGCT : public DQMEDAnalyzer { MonitorElement* phiData[nGctColl_]; MonitorElement* rnkData[nGctColl_]; + MonitorElement* errortype_stage1layer2[nStage1Layer2Coll_]; + // location + MonitorElement* etaphi_stage1layer2 [nStage1Layer2Coll_]; + MonitorElement* eta_stage1layer2 [nStage1Layer2Coll_]; + MonitorElement* phi_stage1layer2 [nStage1Layer2Coll_]; + MonitorElement* rnk_stage1layer2 [nStage1Layer2Coll_]; + MonitorElement* etaData_stage1layer2[nStage1Layer2Coll_]; + MonitorElement* phiData_stage1layer2[nStage1Layer2Coll_]; + MonitorElement* rnkData_stage1layer2[nStage1Layer2Coll_]; + // trigger data word + MonitorElement* dword [nGctColl_]; MonitorElement* eword [nGctColl_]; MonitorElement* deword[nGctColl_]; MonitorElement* masked[nGctColl_]; - + MonitorElement* dword_stage1layer2 [nStage1Layer2Coll_]; + MonitorElement* eword_stage1layer2 [nStage1Layer2Coll_]; + MonitorElement* deword_stage1layer2[nStage1Layer2Coll_]; + MonitorElement* masked_stage1layer2[nStage1Layer2Coll_]; public: }; diff --git a/DQM/L1TMonitor/python/L1GtHwValidation_cff.py b/DQM/L1TMonitor/python/L1GtHwValidation_cff.py index 012b4b92c0b70..7964036a89a81 100644 --- a/DQM/L1TMonitor/python/L1GtHwValidation_cff.py +++ b/DQM/L1TMonitor/python/L1GtHwValidation_cff.py @@ -2,3 +2,4 @@ from DQM.L1TMonitor.l1GtHwValidation_cfi import * +from DQM.L1TMonitor.l1Stage1GtHwValidation_cfi import * diff --git a/DQM/L1TMonitor/python/L1TDEMONStage1_cfi.py b/DQM/L1TMonitor/python/L1TDEMONStage1_cfi.py new file mode 100644 index 0000000000000..82eb3ffa288a6 --- /dev/null +++ b/DQM/L1TMonitor/python/L1TDEMONStage1_cfi.py @@ -0,0 +1,18 @@ +import FWCore.ParameterSet.Config as cms + +l1demonstage1 = cms.EDAnalyzer("L1TDEMON", + HistFolder = cms.untracked.string('L1TEMU'), + HistFile = cms.untracked.string('l1demon.root'), + disableROOToutput = cms.untracked.bool(True), + DataEmulCompareSource = cms.InputTag("l1compareforstage1"), + DQMStore = cms.untracked.bool(True), + VerboseFlag = cms.untracked.int32(0), + RunInFilterFarm = cms.untracked.bool(False), + COMPARE_COLLS = cms.untracked.vuint32( + 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0 + # ETP,HTP,RCT,GCT,DTP,DTF,CTP,CTF,RPC,LTC,GMT,GT + ) +) + + + diff --git a/DQM/L1TMonitor/python/L1TEmulatorMonitor_cff.py b/DQM/L1TMonitor/python/L1TEmulatorMonitor_cff.py index 2c3cd9ef0ed3d..d374ef47ac22f 100644 --- a/DQM/L1TMonitor/python/L1TEmulatorMonitor_cff.py +++ b/DQM/L1TMonitor/python/L1TEmulatorMonitor_cff.py @@ -24,19 +24,34 @@ # DQM modules from DQM.L1TMonitor.L1TDEMON_cfi import * +from DQM.L1TMonitor.L1TDEMONStage1_cfi import * + from DQM.L1TMonitor.L1TdeGCT_cfi import * +from DQM.L1TMonitor.L1TdeStage1Layer2_cfi import * + from DQM.L1TMonitor.L1TdeRCT_cfi import * l1TdeRCT.rctSourceData = 'gctDigis' l1TdeRCT.rctSourceEmul = 'valRctDigis' from DQM.L1TMonitor.L1TdeCSCTF_cfi import * -from DQM.L1TMonitor.l1GtHwValidation_cfi import * +from DQM.L1TMonitor.L1GtHwValidation_cff import * # sequence for expert modules for data - emulator comparison # the modules are independent, so uses "+" +############################################################ +# Stage1 unpacker + +from L1Trigger.L1TCommon.l1tRawToDigi_cfi import * + +# transfer stage1 format digis to legacy format digis + +from L1Trigger.L1TCommon.caloStage1LegacyFormatDigis_cfi import * + +############################################################ + l1TdeRCTSeq = cms.Sequence( l1TdeRCT @@ -60,3 +75,27 @@ L1HardwareValidation* l1EmulatorMonitor ) + +# for stage1 +l1ExpertDataVsEmulatorStage1 = cms.Sequence( + caloStage1Digis* + caloStage1LegacyFormatDigis* + l1TdeStage1Layer2 + + l1TdeCSCTF + + l1Stage1GtHwValidation + + l1TdeRCTSeq + ) + +l1EmulatorMonitorStage1 = cms.Sequence( + caloStage1Digis* + caloStage1LegacyFormatDigis* + l1demonstage1+ + l1ExpertDataVsEmulatorStage1 + ) + +l1Stage1HwValEmulatorMonitor = cms.Sequence( + caloStage1Digis* + caloStage1LegacyFormatDigis* + L1HardwareValidationforStage1 + + l1EmulatorMonitorStage1 + ) diff --git a/DQM/L1TMonitor/python/L1TdeStage1Layer2_cfi.py b/DQM/L1TMonitor/python/L1TdeStage1Layer2_cfi.py new file mode 100644 index 0000000000000..3ca4bcb039796 --- /dev/null +++ b/DQM/L1TMonitor/python/L1TdeStage1Layer2_cfi.py @@ -0,0 +1,13 @@ +import FWCore.ParameterSet.Config as cms + +l1TdeStage1Layer2 = cms.EDAnalyzer("L1TdeGCT", + DataEmulCompareSource = cms.InputTag("l1compareforstage1"), + HistFolder = cms.untracked.string('L1TEMU/Stage1Layer2expert'), + HistFile = cms.untracked.string(''), + disableROOToutput = cms.untracked.bool(True), + DQMStore = cms.untracked.bool(True), + VerboseFlag = cms.untracked.int32(0), + stage1_layer2_ = cms.bool(True) +) + + diff --git a/DQM/L1TMonitor/python/l1Stage1GtHwValidation_cfi.py b/DQM/L1TMonitor/python/l1Stage1GtHwValidation_cfi.py new file mode 100644 index 0000000000000..b7fc2002cd5cb --- /dev/null +++ b/DQM/L1TMonitor/python/l1Stage1GtHwValidation_cfi.py @@ -0,0 +1,60 @@ +import FWCore.ParameterSet.Config as cms + +# L1GtHwValidation DQM +# +# V.M. Ghete 2009-10-09 + +l1Stage1GtHwValidation = cms.EDAnalyzer("L1GtHwValidation", + + # input tag for the L1 GT hardware DAQ record + L1GtDataDaqInputTag = cms.InputTag("gtDigis"), + + # input tag for the L1 GT hardware EVM record + L1GtDataEvmInputTag = cms.InputTag("gtEvmDigis"), + + # input tag for the L1 GT emulator DAQ record + L1GtEmulDaqInputTag = cms.InputTag("valStage1GtDigis"), + + # input tag for the L1 GT emulator EVM record + L1GtEmulEvmInputTag = cms.InputTag("valStage1GtDigis"), + + # input tag for the L1 GCT hardware record + L1GctDataInputTag = cms.InputTag("gctDigis"), + + DQMStore = cms.untracked.bool(False), + DirName = cms.untracked.string("L1TEMU/GTexpert"), + + # exclude algorithm triggers from comparison data - emulator by + # condition category and / or type and / or L1 GT object + # see CondFormats/L1TObjects/interface/L1GtFwd.h + # enum L1GtConditionCategory + # enum L1GtConditionType + # and DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerReadoutSetupFwd.h + # enum L1GtObject + # + # if category given and type empty and object empty, exclude all triggers + # containing conditions of that category + # if category given and type given and object empty, exclude all triggers + # containing conditions of that category and that type + # if category given and type given and object given, exclude all triggers + # containing conditions of that category and of that type and that objects + # if category empty and type given and object given, exclude all triggers + # of that type and that objects (all categories) + # ... and so on + + ExcludeCondCategTypeObject = cms.VPSet( + cms.PSet( + ExcludedCondCategory = cms.string(""), + ExcludedCondType = cms.string(""), + ExcludedL1GtObject = cms.string("GtExternal") + ) + ), + # exclude algorithm triggers from comparison data - emulator by algorithm name + # if the corresponding algorithm trigger is not in the menu, nothing will happen + ExcludeAlgoTrigByName = cms.vstring(), + # + + # exclude algorithm triggers from comparison data - emulator by algorithm bit number + ExcludeAlgoTrigByBit = cms.vint32() + # +) diff --git a/DQM/L1TMonitor/src/L1TdeGCT.cc b/DQM/L1TMonitor/src/L1TdeGCT.cc index 5cacba6d46f82..56e79b4eaa580 100644 --- a/DQM/L1TMonitor/src/L1TdeGCT.cc +++ b/DQM/L1TMonitor/src/L1TdeGCT.cc @@ -14,7 +14,7 @@ L1TdeGCT::L1TdeGCT(const edm::ParameterSet& iConfig) { std::cout << "L1TdeGCT::L1TdeGCT()...\n" << std::flush; DEsource_ = consumes(iConfig.getParameter("DataEmulCompareSource")); - histFolder_ = iConfig.getUntrackedParameter("HistFolder", "L1TEMU/GCTexpert"); + histFolder_ = iConfig.getUntrackedParameter("HistFolder"); histFile_ = iConfig.getUntrackedParameter("HistFile", ""); if(iConfig.getUntrackedParameter ("disableROOToutput", true)) @@ -31,140 +31,288 @@ L1TdeGCT::L1TdeGCT(const edm::ParameterSet& iConfig) { if(verbose()) std::cout << "L1TdeGCT::L1TdeGCT()...done.\n" << std::flush; + m_stage1_layer2_ = iConfig.getParameter("stage1_layer2_"); } L1TdeGCT::~L1TdeGCT() {} -void L1TdeGCT::dqmBeginRun(edm::Run const& iRun, edm::EventSetup const& evSetup){ -} +void L1TdeGCT::dqmBeginRun(edm::Run const& iRun, edm::EventSetup const& evSetup) +{} -void L1TdeGCT::beginLuminosityBlock(const edm::LuminosityBlock& iLumi, const edm::EventSetup& evSetup){ -} +void L1TdeGCT::beginLuminosityBlock(const edm::LuminosityBlock& iLumi, const edm::EventSetup& evSetup) +{} void L1TdeGCT::bookHistograms(DQMStore::IBooker &ibooker, edm::Run const&, edm::EventSetup const&){ + int rnkNBins = 63; + double rnkMinim = 0.5; + double rnkMaxim = 63.5; + + if(verbose()) std::cout << "L1TdeGCT::beginRun() start\n" << std::flush; ibooker.setCurrentFolder(histFolder_); - - // book histograms here - sysrates = ibooker.book1D("sysrates","RATE OF COMPARISON FAILURES",nGctColl_, 0, nGctColl_ ); - - for(int j=0; j<2; j++) { - std::string lbl("sysncand"); - lbl += (j==0?"Data":"Emul"); - std::string title("GCT OBJECT MULTIPLICITY "); - title += (j==0?"(DATA)":"(EMULATOR)"); - sysncand[j] = ibooker.book1D(lbl.data(),title.data(),nGctColl_, 0, nGctColl_ ); - } + //for Legacy GCT + if (m_stage1_layer2_ == false) { + + sysrates = ibooker.book1D("sysrates","RATE OF COMPARISON FAILURES",nGctColl_, 0, nGctColl_ ); + + for(int j=0; j<2; j++) { + std::string lbl("sysncand"); + lbl += (j==0?"Data":"Emul"); + std::string title("GCT OBJECT MULTIPLICITY "); + title += (j==0?"(DATA)":"(EMULATOR)"); + sysncand[j] = ibooker.book1D(lbl.data(),title.data(),nGctColl_, 0, nGctColl_ ); + } - for(int j=0; jbook1D(lbl.data(),lbl.data(),nbit,0,nbit); - } + lbl.clear(); + lbl+=cLabel[j];lbl+="Dword"; + dword[j] = ibooker.book1D(lbl.data(),lbl.data(),nbit,0,nbit); + lbl.clear(); + lbl+=cLabel[j];lbl+="Eword"; + eword[j] = ibooker.book1D(lbl.data(),lbl.data(),nbit,0,nbit); + lbl.clear(); + lbl+=cLabel[j];lbl+="DEword"; + deword[j] = ibooker.book1D(lbl.data(),lbl.data(),nbit,0,nbit); + //lbl.clear(); + //lbl+=cLabel[j];lbl+="Masked"; + //masked[j] = dbe->book1D(lbl.data(),lbl.data(),nbit,0,nbit); + } - for(int i=0; isetBinLabel(i+1,cLabel[i]); - sysncand[0]->setBinLabel(i+1,cLabel[i]); - sysncand[1]->setBinLabel(i+1,cLabel[i]); - } + for(int i=0; isetBinLabel(i+1,cLabel[i]); + sysncand[0]->setBinLabel(i+1,cLabel[i]); + sysncand[1]->setBinLabel(i+1,cLabel[i]); + } - for(int i=0; isetBinLabel(j+1,errLabel[j]); + for(int i=0; isetBinLabel(j+1,errLabel[j]); + } } - } - for(int i=0; isetAxisTitle("GCT #eta",1); - etaphi [i]->setAxisTitle("GCT #phi",2); - eta [i]->setAxisTitle("GCT #eta"); - phi [i]->setAxisTitle("GCT #phi"); - rnk [i]->setAxisTitle("Rank"); - etaData[i]->setAxisTitle("GCT #eta"); - phiData[i]->setAxisTitle("GCT #phi"); - rnkData[i]->setAxisTitle("Rank"); - dword [i]->setAxisTitle("trigger data word bit"); - eword [i]->setAxisTitle("trigger data word bit"); - deword [i]->setAxisTitle("trigger data word bit"); - //masked [i]->setAxisTitle("trigger data word bit"); - } + for(int i=0; isetAxisTitle("GCT #eta",1); + etaphi [i]->setAxisTitle("GCT #phi",2); + eta [i]->setAxisTitle("GCT #eta"); + phi [i]->setAxisTitle("GCT #phi"); + rnk [i]->setAxisTitle("Rank"); + etaData[i]->setAxisTitle("GCT #eta"); + phiData[i]->setAxisTitle("GCT #phi"); + rnkData[i]->setAxisTitle("Rank"); + dword [i]->setAxisTitle("trigger data word bit"); + eword [i]->setAxisTitle("trigger data word bit"); + deword [i]->setAxisTitle("trigger data word bit"); + } - for(int i=0; ibook1D(lbl.data(),lbl.data(),nbit,0,nbit); + } + + for(int i=0; isetBinLabel(i+1,sLabel[i]); + sysncand[0]->setBinLabel(i+1,sLabel[i]); + sysncand[1]->setBinLabel(i+1,sLabel[i]); + } + + for(int i=0; isetBinLabel(j+1,errLabel[j]); + } + } + + for(int i=0; isetAxisTitle("Stage1Layer2 #eta",1); + etaphi_stage1layer2[i]->setAxisTitle("Stage1Layer2 #phi",2); + eta_stage1layer2[i]->setAxisTitle("Stage1Layer2 #eta"); + phi_stage1layer2[i]->setAxisTitle("Stage1Layer2 #phi"); + rnk_stage1layer2[i]->setAxisTitle("Rank"); + etaData_stage1layer2[i]->setAxisTitle("Stage1Layer2 #eta"); + phiData_stage1layer2[i]->setAxisTitle("Stage1Layer2 #phi"); + rnkData_stage1layer2[i]->setAxisTitle("Rank"); + dword_stage1layer2 [i]->setAxisTitle("trigger data word bit"); + eword_stage1layer2 [i]->setAxisTitle("trigger data word bit"); + deword_stage1layer2 [i]->setAxisTitle("trigger data word bit"); + } + + for(int i=0; iget_isComp(GCT); - if(!isComp) { - if(verbose()) - std::cout << "[L1TdeGCT] Gct information not generated in de-record." + + if (m_stage1_layer2_ == false) { + bool isComp = deRecord->get_isComp(GCT); + if(!isComp) { + if(verbose()) + std::cout << "[L1TdeGCT] Gct information not generated in de-record." << " Skiping event!\n" << std::flush; - return; - } + return; + } - int DEncand[2]={0}; - for(int j=0; j<2; j++) - DEncand[j] = deRecord->getNCand(GCT,j); + int DEncand[2]={0}; + for(int j=0; j<2; j++) + DEncand[j] = deRecord->getNCand(GCT,j); - if(verbose()) - std::cout << "[L1TdeGCT] ncands" - << " data: " << DEncand[0] - << " emul: " << DEncand[1] - << std::endl; + if(verbose()) + std::cout << "[L1TdeGCT] ncands" + << " data: " << DEncand[0] + << " emul: " << DEncand[1] + << std::endl; - /// get the de candidates - L1DEDigiCollection deColl; - deColl = deRecord->getColl(); + /// get the de candidates + L1DEDigiCollection deColl; + deColl = deRecord->getColl(); - // extract the GCT comparison digis - L1DEDigiCollection gctColl; + // extract the GCT comparison digis + L1DEDigiCollection gctColl; - gctColl.reserve(20); - gctColl.clear(); + gctColl.reserve(20); + gctColl.clear(); - for(L1DEDigiCollection::const_iterator it=deColl.begin(); - it!=deColl.end(); it++) - if(!it->empty()) - if(it->sid()==GCT) - gctColl.push_back(*it); + for(L1DEDigiCollection::const_iterator it=deColl.begin(); + it!=deColl.end(); it++) + if(!it->empty()) + if(it->sid()==GCT) + gctColl.push_back(*it); - if(verbose()) { - std::cout << "[L1TdeGCT] record has " << gctColl.size() - << " gct de digis\n" << std::flush; - for(L1DEDigiCollection::const_iterator it=gctColl.begin(); - it!=gctColl.end(); it++) - std::cout << "\t" << *it << std::endl; - } + if(verbose()) { + std::cout << "[L1TdeGCT] record has " << gctColl.size() + << " gct de digis\n" << std::flush; + for(L1DEDigiCollection::const_iterator it=gctColl.begin(); + it!=gctColl.end(); it++) + std::cout << "\t" << *it << std::endl; + } - const int nullVal = L1DataEmulDigi().reset(); + const int nullVal = L1DataEmulDigi().reset(); - /// --- Fill histograms(me) --- + /// --- Fill histograms(me) --- - // d|e candidate loop - for(L1DEDigiCollection::const_iterator it=gctColl.begin(); - it!=gctColl.end(); it++) { + // d|e candidate loop + for(L1DEDigiCollection::const_iterator it=gctColl.begin(); + it!=gctColl.end(); it++) { - // sid should be GCT - int sid = it->sid(); - // cid: GCTisolaem, GCTnoisoem, GCTcenjets, GCTforjets, GCTtaujets - int cid = it->cid(); - ///(note see L1Trigger/HardwareValidation/interface/DEtrait.h) - - if(verbose()) - std::cout << "[L1TdeGCT] processing digi " - << " sys:" << sid - << " type:" << cid - << " \n\t" - << *it << "\n" - << std::flush; + // sid should be GCT + int sid = it->sid(); + // cid: GCTisolaem, GCTnoisoem, GCTcenjets, GCTforjets, GCTtaujets + int cid = it->cid(); + ///(note see L1Trigger/HardwareValidation/interface/DEtrait.h) + + if(verbose()) + std::cout << "[L1TdeGCT] processing digi " + << " sys:" << sid + << " type:" << cid + << " \n\t" + << *it << "\n" + << std::flush; - //assert(cid==GCT); - if(sid!=GCT || it->empty()) { - LogDebug("L1TdeGCT") << "consistency check failure, non-gct digis!"; - continue; - } + //assert(cid==GCT); + if(sid!=GCT || it->empty()) { + LogDebug("L1TdeGCT") << "consistency check failure, non-gct digis!"; + continue; + } - int type = it->type(); - double phiv = it->x1(); - double etav = it->x2(); - float rankarr[2]; - it->rank(rankarr); - float rnkv = rankarr[0]; - - double wei = 1.; - - unsigned int mask = (~0x0); - - // shift coll type for starting at zero - int ccid = cid - dedefs::GCTisolaem; - if(ccid<0 || ccid >= nGctColl_) { - LogDebug("L1TdeGCT") << "consistency check failure, col type outbounds:" - << ccid << "\n"; - ccid=0; - } + int type = it->type(); + double phiv = it->x1(); + double etav = it->x2(); + float rankarr[2]; + it->rank(rankarr); + float rnkv = rankarr[0]; + + double wei = 1.; + + unsigned int mask = (~0x0); + + // shift coll type for starting at zero + int ccid = cid - dedefs::GCTisolaem; + if(ccid<0 || ccid >= nGctColl_) { + LogDebug("L1TdeGCT") << "consistency check failure, col type outbounds:" + << ccid << "\n"; + ccid=0; + } - //type: 0:agree 1:loc.agree, 2:loc.disagree, 3:data.only, 4:emul.only - if(it->type()<4) - sysncand[0]->Fill(ccid); - if(it->type()<5&&it->type()!=3) - sysncand[1]->Fill(ccid); + //type: 0:agree 1:loc.agree, 2:loc.disagree, 3:data.only, 4:emul.only + if(it->type()<4) + sysncand[0]->Fill(ccid); + if(it->type()<5&&it->type()!=3) + sysncand[1]->Fill(ccid); - errortype[ccid]->Fill(type); - - wei=1.; if(!type) wei=0.; - if(etav!=nullVal && phiv!=nullVal) - etaphi[ccid]->Fill(etav,phiv,wei); - if(etav!=nullVal) - eta [ccid]->Fill(etav,wei); - if(phiv!=nullVal) - phi [ccid]->Fill(phiv,wei); - rnk[ccid]->Fill(rnkv,wei); - - //exclude e-only cands (only data) - wei=1.;if(type==4) wei=0.; - if(etav!=nullVal) - etaData[ccid]->Fill(etav,wei); - if(phiv!=nullVal) - phiData[ccid]->Fill(phiv,wei); - rnkData[ccid]->Fill(rnkv,wei); - wei=1; - - // GCT trigger bits - unsigned int word[2]; - it->data(word); - std::bitset<32> dbits(word[0]); - std::bitset<32> ebits(word[1]); - unsigned int dexor = ( (word[0]) ^ (word[1]) ); - //disagreeing bits - std::bitset<32> debits(dexor); - //disagreeing bits after masking - std::bitset<32> dembits( ( (dexor) & (mask) ) ); + errortype[ccid]->Fill(type); + + wei=1.; if(!type) wei=0.; + if(etav!=nullVal && phiv!=nullVal) + etaphi[ccid]->Fill(etav,phiv,wei); + if(etav!=nullVal) + eta [ccid]->Fill(etav,wei); + if(phiv!=nullVal) + phi [ccid]->Fill(phiv,wei); + rnk[ccid]->Fill(rnkv,wei); + + //exclude e-only cands (only data) + wei=1.;if(type==4) wei=0.; + if(etav!=nullVal) + etaData[ccid]->Fill(etav,wei); + if(phiv!=nullVal) + phiData[ccid]->Fill(phiv,wei); + rnkData[ccid]->Fill(rnkv,wei); + wei=1; + + // GCT trigger bits + unsigned int word[2]; + it->data(word); + std::bitset<32> dbits(word[0]); + std::bitset<32> ebits(word[1]); + unsigned int dexor = ( (word[0]) ^ (word[1]) ); + //disagreeing bits + std::bitset<32> debits(dexor); + //disagreeing bits after masking + std::bitset<32> dembits( ( (dexor) & (mask) ) ); - if(verbose()) - std::cout << "l1degct" - << " sid:" << sid << " cid:" << cid << "\n" - << " data:0x" << std::hex << word[0] << std::dec - << " bitset:" << dbits - << "\n" - << " emul:0x" << std::hex << word[1] << std::dec - << " bitset:" << ebits - << "\n" - << " xor:0x" << std::hex << dexor << std::dec - << " bitset:" << debits - << " bitset:" << ( (dbits) ^ (ebits) ) - << "\n" << std::flush; + if(verbose()) + std::cout << "l1degct" + << " sid:" << sid << " cid:" << cid << "\n" + << " data:0x" << std::hex << word[0] << std::dec + << " bitset:" << dbits + << "\n" + << " emul:0x" << std::hex << word[1] << std::dec + << " bitset:" << ebits + << "\n" + << " xor:0x" << std::hex << dexor << std::dec + << " bitset:" << debits + << " bitset:" << ( (dbits) ^ (ebits) ) + << "\n" << std::flush; - ///bitset loop - for(int ibit=0; ibit<32; ibit++) { - wei=1.; - //comparison gives no info if there's only 1 candidate - if(type==3 || type==4) wei=0.; - if(dbits [ibit]) dword[sid]->Fill(ibit,wei); - if(ebits [ibit]) eword[sid]->Fill(ibit,wei); - if(debits [ibit])deword[sid]->Fill(ibit,wei); - //if(dembits[ibit])masked[sid]->Fill(ibit,wei); - } - wei=1; + ///bitset loop + for(int ibit=0; ibit<32; ibit++) { + wei=1.; + //comparison gives no info if there's only 1 candidate + if(type==3 || type==4) wei=0.; + if(dbits [ibit]) dword[ccid]->Fill(ibit,wei); + if(ebits [ibit]) eword[ccid]->Fill(ibit,wei); + if(debits [ibit])deword[ccid]->Fill(ibit,wei); + //if(dembits[ibit])masked[sid]->Fill(ibit,wei); + } + wei=1; - } + } - //error rates per GCT trigger object type - int hasCol[nGctColl_]={0}; - int nagree[nGctColl_]={0}; - for(L1DEDigiCollection::const_iterator it=gctColl.begin(); - it!=gctColl.end(); it++) { - int ccid = it->cid()-dedefs::GCTisolaem; - ccid = (ccid<0 || ccid >= nGctColl_) ? 0:ccid; - hasCol[ccid]++; - if(!it->type()) - nagree[ccid]++; - } - for(int i=0; icid()-dedefs::GCTisolaem; + ccid = (ccid<0 || ccid >= nGctColl_) ? 0:ccid; + hasCol[ccid]++; + if(!it->type()) + nagree[ccid]++; + } + for(int i=0; isetBinContent(ibin,rate); - if(verbose()) { - std::cout << "[L1TDEMON] analyze rate computation\t\n" + nWithCol[i]+=hasCol[i];//#of objects + colCount[i]+=nagree[i];//#of agreements + } + for(int i=0; isetBinContent(ibin,rate); + if(verbose()) { + std::cout << "[L1TDEMON] analyze rate computation\t\n" << " colid:" << i << "(so far)" << " nWithCol: " << nWithCol[i] @@ -385,11 +534,208 @@ void L1TdeGCT::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) << " nagree: " << nagree[i] << " rate:" << sysrates->getBinContent(ibin) << "\n" << std::flush; - if(rate>1. || rate<0.) - std::cout << "problem, error rate for " << SystLabel[i] + if(rate>1. || rate<0.) + std::cout << "problem, error rate for " << SystLabel[i] <<" is "<getBinContent(ibin) << "\n" << std::flush; + } } - } + } + + if (m_stage1_layer2_ == true) { + bool isComp = deRecord->get_isComp(GCT); + if(!isComp) { + if(verbose()) + std::cout << "[L1TdeGCT] Gct information not generated in de-record." + << " Skiping event!\n" << std::flush; + return; + } + + int DEncand[2]={0}; + for(int j=0; j<2; j++) + DEncand[j] = deRecord->getNCand(GCT,j); + + if(verbose()) + std::cout << "[L1TdeGCT] ncands" + << " data: " << DEncand[0] + << " emul: " << DEncand[1] + << std::endl; + + /// get the de candidates + L1DEDigiCollection deColl; + deColl = deRecord->getColl(); + + // extract the GCT comparison digis + L1DEDigiCollection stage1layer2Coll; + + stage1layer2Coll.reserve(21); + stage1layer2Coll.clear(); + + + for(L1DEDigiCollection::const_iterator it=deColl.begin(); + it!=deColl.end(); it++) + if(!it->empty()) + if(it->sid()==GCT) + stage1layer2Coll.push_back(*it); + + if(verbose()) { + std::cout << "[L1TdeSTAGE1LAYER2] record has " << stage1layer2Coll.size() + << " stage1layer2 de digis\n" << std::endl; + for(L1DEDigiCollection::const_iterator it=stage1layer2Coll.begin(); + it!=stage1layer2Coll.end(); it++) + std::cout << "\t" << *it << std::endl; + } + + const int nullVal = L1DataEmulDigi().reset(); + + /// --- Fill histograms(me) --- + + // d|e candidate loop + for(L1DEDigiCollection::const_iterator it=stage1layer2Coll.begin(); + it!=stage1layer2Coll.end(); it++) { + + // sid should be GCT + int sid = it->sid(); + + int cid = it->cid(); + ///(note see L1Trigger/HardwareValidation/interface/DEtrait.h) + + if(verbose()) + std::cout << "[L1TdeStage1Layer2] processing digi " + << " sys:" << sid + << " type:" << cid + << " \n\t" + << *it << "\n" + << std::endl; + + if(sid!=GCT || it->empty()) { + LogDebug("L1TdeGCT") << "consistency check failure, non-stage1layer2 digis!"; + continue; + } + + int type = it->type(); + double phiv = it->x1(); + double etav = it->x2(); + float rankarr[2]; + it->rank(rankarr); + float rnkv = rankarr[0]; + + double wei = 1.; + + unsigned int mask = (~0x0); + + // shift coll type for starting at zero + int ccid = cid - dedefs::GCTisolaem; + if(ccid<0 || ccid >= nStage1Layer2Coll_) { + LogDebug("L1TdeGCT") << "consistency check failure, col type outbounds:" + << ccid << "\n"; + ccid=0; + } + + //type: 0:agree 1:loc.agree, 2:loc.disagree, 3:data.only, 4:emul.only + if(it->type()<4) + sysncand[0]->Fill(ccid); + if(it->type()<5&&it->type()!=3) + sysncand[1]->Fill(ccid); + errortype_stage1layer2[ccid]->Fill(type); + wei=1.; if(!type) wei=0.; + if(etav!=nullVal && phiv!=nullVal) + etaphi_stage1layer2[ccid]->Fill(etav,phiv,wei); + if(etav!=nullVal) + eta_stage1layer2 [ccid]->Fill(etav,wei); + if(phiv!=nullVal) + phi_stage1layer2 [ccid]->Fill(phiv,wei); + rnk_stage1layer2[ccid]->Fill(rnkv,wei); + + //exclude e-only cands (only data) + wei=1.;if(type==4) wei=0.; + if(etav!=nullVal) + etaData_stage1layer2[ccid]->Fill(etav,wei); + if(phiv!=nullVal) + phiData_stage1layer2[ccid]->Fill(phiv,wei); + rnkData_stage1layer2[ccid]->Fill(rnkv,wei); + wei=1; + + // GCT trigger bits + unsigned int word_stage1layer2[2]; + it->data(word_stage1layer2); + std::bitset<32> dbits(word_stage1layer2[0]); + std::bitset<32> ebits(word_stage1layer2[1]); + unsigned int dexor = ( (word_stage1layer2[0]) ^ (word_stage1layer2[1]) ); + //disagreeing bits + std::bitset<32> debits(dexor); + //disagreeing bits after masking + std::bitset<32> dembits( ( (dexor) & (mask) ) ); + + if(verbose()) + std::cout << "l1degct" + << " sid:" << sid << " cid:" << cid << "\n" + << " data:0x" << std::hex << word_stage1layer2[0] << std::dec + << " bitset:" << dbits + << "\n" + << " emul:0x" << std::hex << word_stage1layer2[1] << std::dec + << " bitset:" << ebits + << "\n" + << " xor:0x" << std::hex << dexor << std::dec + << " bitset:" << debits + << " bitset:" << ( (dbits) ^ (ebits) ) + << "\n" << std::flush; + + ///bitset loop + for(int ibit=0; ibit<32; ibit++) { + wei=1.; + //comparison gives no info if there's only 1 candidate + if(type==3 || type==4) wei=0.; + if(dbits [ibit]) dword_stage1layer2[ccid]->Fill(ibit,wei); + if(ebits [ibit]) eword_stage1layer2[ccid]->Fill(ibit,wei); + if(debits [ibit])deword_stage1layer2[ccid]->Fill(ibit,wei); + //if(dembits[ibit])masked[sid]->Fill(ibit,wei); + } + wei=1; + + } + //error rates per GCT trigger object type + int hasCol[nStage1Layer2Coll_]={0}; + int nagree[nStage1Layer2Coll_]={0}; + for(L1DEDigiCollection::const_iterator it=stage1layer2Coll.begin(); + it!=stage1layer2Coll.end(); it++) { + int ccid = it->cid()-dedefs::GCTisolaem; + ccid = (ccid<0 || ccid >= nStage1Layer2Coll_) ? 0:ccid; + hasCol[ccid]++; + if(!it->type()) + nagree[ccid]++; + } + for(int i=0; isetBinContent(ibin,rate); + if(verbose()) { + std::cout << "[L1TDEMON] analyze rate computation\t\n" + << " colid:" << i + << "(so far)" + << " nWithCol: " << nWithCol_stage1Layer2[i] + << " colCount: " << colCount_stage1Layer2[i] + << "(this event)" + << "hasCol: " << hasCol[i] + << " nagree: " << nagree[i] + << " rate:" << sysrates->getBinContent(ibin) + << "\n" << std::flush; + if(rate>1. || rate<0.) + std::cout << "problem, error rate for " << SystLabel[i] + <<" is "<getBinContent(ibin) + << "\n" << std::flush; + } + } + } } + diff --git a/L1Trigger/Configuration/python/ValL1Emulator_cff.py b/L1Trigger/Configuration/python/ValL1Emulator_cff.py index 7eb58c1b76aa9..d1417c74a566f 100644 --- a/L1Trigger/Configuration/python/ValL1Emulator_cff.py +++ b/L1Trigger/Configuration/python/ValL1Emulator_cff.py @@ -8,6 +8,7 @@ # # V.M. Ghete 2009-11-15 + # ECAL TPG sequence import SimCalorimetry.EcalTrigPrimProducers.ecalTriggerPrimitiveDigis_cfi valEcalTriggerPrimitiveDigis = SimCalorimetry.EcalTrigPrimProducers.ecalTriggerPrimitiveDigis_cfi.simEcalTriggerPrimitiveDigis.clone() @@ -36,7 +37,7 @@ # valHcalTTPDigis.HFDigiCollection = cms.InputTag('hcalDigis') - + # RCT emulator import L1Trigger.RegionalCaloTrigger.rctDigis_cfi valRctDigis = L1Trigger.RegionalCaloTrigger.rctDigis_cfi.rctDigis.clone() @@ -54,6 +55,20 @@ valGctDigis.preSamples = cms.uint32(0) valGctDigis.postSamples = cms.uint32(0) +# Stage1Layer2 emulator +from L1Trigger.L1TCalorimeter.simRctUpgradeFormatDigis_cfi import * +simRctUpgradeFormatDigis.regionTag = cms.InputTag("gctDigis") +simRctUpgradeFormatDigis.emTag = cms.InputTag("gctDigis") +from L1Trigger.L1TCalorimeter.simCaloStage1Digis_cfi import * +from L1Trigger.L1TCalorimeter.simCaloStage1LegacyFormatDigis_cfi import * +valCaloStage1LegacyFormatDigis = L1Trigger.L1TCalorimeter.simCaloStage1LegacyFormatDigis_cfi.simCaloStage1LegacyFormatDigis.clone() +valCaloStage1LegacyFormatDigis.InputCollection = cms.InputTag("simCaloStage1Digis") +valCaloStage1LegacyFormatDigis.InputRlxTauCollection = cms.InputTag("simCaloStage1Digis:rlxTaus") +valCaloStage1LegacyFormatDigis.InputIsoTauCollection = cms.InputTag("simCaloStage1Digis:isoTaus") +valCaloStage1LegacyFormatDigis.InputHFSumsCollection = cms.InputTag("simCaloStage1Digis:HFRingSums") +valCaloStage1LegacyFormatDigis.InputHFCountsCollection = cms.InputTag("simCaloStage1Digis:HFBitCounts") + +from L1Trigger.L1TCalorimeter.caloStage1Params_cfi import * # DT TP emulator from L1Trigger.DTTrigger.dtTriggerPrimitiveDigis_cfi import * @@ -68,6 +83,7 @@ 'MuonCSCComparatorDigi') valCscTriggerPrimitiveDigis.CSCWireDigiProducer = cms.InputTag('muonCSCDigis', 'MuonCSCWireDigi') +valCscTriggerPrimitiveDigis.gangedME1a = cms.untracked.bool(False) # CSC Track Finder - digi track generation # currently used also by DT TF to generate CSCTF stubs @@ -76,7 +92,7 @@ # valCsctfTrackDigis.SectorReceiverInput = 'csctfDigis' valCsctfTrackDigis.DTproducer = 'dttfDigis' - +valCsctfTrackDigis.SectorProcessor.gangedME1a = cms.untracked.bool(False) # DT Track Finder emulator # currently generates CSCTF stubs by running CSCTF emulator @@ -132,14 +148,20 @@ # Global Trigger emulator import L1Trigger.GlobalTrigger.gtDigis_cfi valGtDigis = L1Trigger.GlobalTrigger.gtDigis_cfi.gtDigis.clone() -# valGtDigis.GmtInputTag = 'gtDigis' valGtDigis.GctInputTag = 'gctDigis' valGtDigis.TechnicalTriggersInputTags = cms.VInputTag( cms.InputTag('valRpcTechTrigDigis'), - cms.InputTag('valHcalTechTrigDigis') - ) + cms.InputTag('valHcalTechTrigDigis') ) +# Global Trigger emulator for Stage1 +import L1Trigger.GlobalTrigger.gtDigis_cfi +valStage1GtDigis = L1Trigger.GlobalTrigger.gtDigis_cfi.gtDigis.clone() +valStage1GtDigis.GmtInputTag = 'gtDigis' +valStage1GtDigis.GctInputTag = 'caloStage1LegacyFormatDigis' +valStage1GtDigis.TechnicalTriggersInputTags = cms.VInputTag( + cms.InputTag('valRpcTechTrigDigis'), + cms.InputTag('valHcalTechTrigDigis') ) # L1 Trigger sequences ValL1MuTriggerPrimitives = cms.Sequence(valCscTriggerPrimitiveDigis+valDtTriggerPrimitiveDigis) @@ -151,7 +173,8 @@ valEcalTriggerPrimitiveDigis *valHcalTriggerPrimitiveDigis *valHcalTTPDigis - *valRctDigis*valGctDigis + *valRctDigis + *valGctDigis *ValL1MuTriggerPrimitives*ValL1MuTrackFinders*valRpcTriggerDigis*valGmtDigis *ValL1TechnicalTriggers *valGtDigis) diff --git a/L1Trigger/HardwareValidation/interface/DEtrait.h b/L1Trigger/HardwareValidation/interface/DEtrait.h index 14bb83be4f03a..6214d88f83075 100644 --- a/L1Trigger/HardwareValidation/interface/DEtrait.h +++ b/L1Trigger/HardwareValidation/interface/DEtrait.h @@ -56,7 +56,8 @@ namespace dedefs { ECALtp, HCALtp, RCTem, RCTrgn, GCTem, GCTjet, GCTisolaem, GCTnoisoem, GCTcenjets, GCTforjets, GCTtaujets, - GCTethad, GCTetmiss, GCTettot, GCThtmiss, GCThfring, GCThfbit, GCTjetcnt, + GCTethad, GCTetmiss, GCTettot, GCThtmiss, GCThfring, GCThfbit, GCTisotaujets, + GCTjetcnt, DTtpPh, DTtpTh, DTtf, DTtftrk, CSCtpa, CSCtpc, CSCtpl, CSCsta, CSCtf, CSCtftrk, CSCtftrc, CSCtfsta, MUrtf, RPCcen, RPCfor, diff --git a/L1Trigger/HardwareValidation/interface/DEutils.h b/L1Trigger/HardwareValidation/interface/DEutils.h index edd5771f1ffb0..7ccba3f9c7add 100644 --- a/L1Trigger/HardwareValidation/interface/DEutils.h +++ b/L1Trigger/HardwareValidation/interface/DEutils.h @@ -23,7 +23,7 @@ struct DEutils { public: DEutils() { - if(de_type()>38) + if(de_type()>51) edm::LogError("L1ComparatorDeutilsCollType") //throw cms::Exception("ERROR") << "DEutils::DEutils() :: " << "specialization is still missing for collection of type:" @@ -1367,7 +1367,7 @@ inline std::string DEutils::print(col_cit it) cons template std::string DEutils::GetName(int i) const { - const int nlabel = 16; + const int nlabel = 17; if(!(i::GetName(int i) const { str[1] = "L1GctJetCandCollection"; str[2] = "L1GctJetCand"; break; + case dedefs::GCTisotaujets: + str[0] = "Stage1Layer2 iso-tau jet"; + str[1] = "L1GctJetCandCollection"; + str[2] = "L1GctJetCand"; + break; case dedefs::GCTethad: str[0] = "GCT ht"; str[1] = "L1GctEtHadCollection"; diff --git a/L1Trigger/HardwareValidation/interface/L1Comparator.h b/L1Trigger/HardwareValidation/interface/L1Comparator.h index 1de32cc27f20d..79fde91518437 100644 --- a/L1Trigger/HardwareValidation/interface/L1Comparator.h +++ b/L1Trigger/HardwareValidation/interface/L1Comparator.h @@ -65,6 +65,7 @@ class L1Comparator : public edm::EDProducer { template bool dumpCandidate(const T& dt, const T& em, std::ostream& s); int verbose() {return verbose_;} + bool m_stage1_layer2_; private: @@ -81,6 +82,7 @@ class L1Comparator : public edm::EDProducer { edm::EDGetTokenT tokenGctJetCand_cenJets_[2]; edm::EDGetTokenT tokenGctJetCand_forJets_[2]; edm::EDGetTokenT tokenGctJetCand_tauJets_[2]; + edm::EDGetTokenT tokenGctJetCand_isoTauJets_[2]; edm::EDGetTokenT tokenGctEtTotal_[2]; edm::EDGetTokenT tokenGctEtHad_[2]; edm::EDGetTokenT tokenGctEtMiss_[2]; diff --git a/L1Trigger/HardwareValidation/python/L1Comparator_cfi.py b/L1Trigger/HardwareValidation/python/L1Comparator_cfi.py index 7fd2d8ee5f4a7..736c0e1082ccb 100644 --- a/L1Trigger/HardwareValidation/python/L1Comparator_cfi.py +++ b/L1Trigger/HardwareValidation/python/L1Comparator_cfi.py @@ -27,6 +27,7 @@ DumpFile = cms.untracked.string('dump.txt'), VerboseFlag = cms.untracked.int32(0), + stage1_layer2_ = cms.bool(False), # ECAL TPG (ETP), HCAL TPG (HTP), CSC TF (CTF) LTC, GT not supported - expert modules in DQM COMPARE_COLLS = cms.untracked.vuint32( diff --git a/L1Trigger/HardwareValidation/python/L1ComparatorforStage1_cfi.py b/L1Trigger/HardwareValidation/python/L1ComparatorforStage1_cfi.py new file mode 100644 index 0000000000000..55eeff73596b0 --- /dev/null +++ b/L1Trigger/HardwareValidation/python/L1ComparatorforStage1_cfi.py @@ -0,0 +1,38 @@ +import FWCore.ParameterSet.Config as cms + +l1compareforstage1 = cms.EDProducer("L1Comparator", + + RCTsourceData = cms.InputTag("gctDigis"), + RCTsourceEmul = cms.InputTag("valRctDigis"), + + GCTsourceData = cms.InputTag("caloStage1LegacyFormatDigis"), + GCTsourceEmul = cms.InputTag("valCaloStage1LegacyFormatDigis"), + + DTPsourceData = cms.InputTag("dttfDigis"), + DTPsourceEmul = cms.InputTag("valDtTriggerPrimitiveDigis"), + + DTFsourceData = cms.InputTag("dttfDigis"), + DTFsourceEmul = cms.InputTag("valDttfDigis"), + + RPCsourceData = cms.InputTag("gtDigis"), + RPCsourceEmul = cms.InputTag("valRpcTriggerDigis"), + + GMTsourceData = cms.InputTag("gtDigis"), + GMTsourceEmul = cms.InputTag("valGmtDigis"), + + FEDsourceData = cms.untracked.InputTag("rawDataCollector"), + FEDsourceEmul = cms.untracked.InputTag("rawDataCollector"), + + DumpMode = cms.untracked.int32(0), + DumpFile = cms.untracked.string('dump.txt'), + + VerboseFlag = cms.untracked.int32(0), + stage1_layer2_ = cms.bool(True), + + # ECAL TPG (ETP), HCAL TPG (HTP), CSC TF (CTF) LTC, GT not supported - expert modules in DQM + COMPARE_COLLS = cms.untracked.vuint32( + 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0 + # ETP,HTP,RCT,GCT,DTP,DTF,CTP,CTF,RPC,LTC,GMT,GT + ) +) + diff --git a/L1Trigger/HardwareValidation/python/L1HardwareValidation_cff.py b/L1Trigger/HardwareValidation/python/L1HardwareValidation_cff.py index ec707270ad01c..be181c90d5e32 100644 --- a/L1Trigger/HardwareValidation/python/L1HardwareValidation_cff.py +++ b/L1Trigger/HardwareValidation/python/L1HardwareValidation_cff.py @@ -12,11 +12,19 @@ # the comparator module from L1Trigger.HardwareValidation.L1Comparator_cfi import * +from L1Trigger.HardwareValidation.L1ComparatorforStage1_cfi import * + # subsystem sequences deEcal = cms.Sequence(valEcalTriggerPrimitiveDigis) deHcal = cms.Sequence(valHcalTriggerPrimitiveDigis) deRct = cms.Sequence(valRctDigis) deGct = cms.Sequence(valGctDigis) +deStage1Layer2 = cms.Sequence( + simRctUpgradeFormatDigis + *simCaloStage1Digis + #*simCaloStage1FinalDigis + *valCaloStage1LegacyFormatDigis + ) deDt = cms.Sequence(valDtTriggerPrimitiveDigis) deCsc = cms.Sequence(valCscTriggerPrimitiveDigis) deCsctfTracks = cms.Sequence(valCsctfTrackDigis) @@ -25,6 +33,7 @@ deRpc = cms.Sequence(valRpcTriggerDigis) deGmt = cms.Sequence(valGmtDigis) deGt = cms.Sequence(valGtDigis) +deStage1Gt = cms.Sequence(valStage1GtDigis) # the sequence L1HardwareValidation = cms.Sequence( @@ -42,3 +51,20 @@ deGt* l1compare) +L1HardwareValidationforStage1 = cms.Sequence( + deEcal+ + deHcal+ + deRct+ + deStage1Layer2+ + deDt+ + deCsc+ + deCsctfTracks + + deDttf+ + deCsctf+ + deRpc+ + deGmt+ + deStage1Gt* + l1compareforstage1) + + + diff --git a/L1Trigger/HardwareValidation/src/L1Comparator.cc b/L1Trigger/HardwareValidation/src/L1Comparator.cc index 36b28cdd5b710..78b2808c13107 100644 --- a/L1Trigger/HardwareValidation/src/L1Comparator.cc +++ b/L1Trigger/HardwareValidation/src/L1Comparator.cc @@ -6,6 +6,7 @@ using namespace dedefs; L1Comparator::L1Comparator(const edm::ParameterSet& iConfig) { verbose_ = iConfig.getUntrackedParameter("VerboseFlag",0); + m_stage1_layer2_ = iConfig.getParameter("stage1_layer2_"); if(verbose()) std::cout << "\nL1COMPARATOR constructor...\n" << std::flush; @@ -91,23 +92,46 @@ L1Comparator::L1Comparator(const edm::ParameterSet& iConfig) { tags[0] = iConfig.getParameter("GCTsourceData"); tags[1] = iConfig.getParameter("GCTsourceEmul"); - for (int i = 0; i < 2 ; ++i) { - edm::InputTag const& tag = tags[i]; - std::string const label = tag.label(); - tokenGctEmCand_isoEm_[i] = consumes(edm::InputTag(label, "isoEm")); - tokenGctEmCand_nonIsoEm_[i] = consumes(edm::InputTag(label, "nonIsoEm")); - tokenGctJetCand_cenJets_[i] = consumes(edm::InputTag(label, "cenJets")); - tokenGctJetCand_forJets_[i] = consumes(edm::InputTag(label, "forJets")); - tokenGctJetCand_tauJets_[i] = consumes(edm::InputTag(label, "tauJets")); - tokenGctEtTotal_[i] = consumes(tag); - tokenGctEtHad_[i] = consumes(tag); - tokenGctEtMiss_[i] = consumes(tag); - tokenGctHFRingEtSums_[i] = consumes(tag); - tokenGctHFBitCounts_[i] = consumes(tag); - tokenGctHtMiss_[i] = consumes(tag); - tokenGctJetCounts_[i] = consumes(tag); + if(m_stage1_layer2_ == false) { + + for (int i = 0; i < 2 ; ++i) { + edm::InputTag const& tag = tags[i]; + std::string const label = tag.label(); + tokenGctEmCand_isoEm_[i] = consumes(edm::InputTag(label, "isoEm")); + tokenGctEmCand_nonIsoEm_[i] = consumes(edm::InputTag(label, "nonIsoEm")); + tokenGctJetCand_cenJets_[i] = consumes(edm::InputTag(label, "cenJets")); + tokenGctJetCand_forJets_[i] = consumes(edm::InputTag(label, "forJets")); + tokenGctJetCand_tauJets_[i] = consumes(edm::InputTag(label, "tauJets")); + tokenGctEtTotal_[i] = consumes(tag); + tokenGctEtHad_[i] = consumes(tag); + tokenGctEtMiss_[i] = consumes(tag); + tokenGctHFRingEtSums_[i] = consumes(tag); + tokenGctHFBitCounts_[i] = consumes(tag); + tokenGctHtMiss_[i] = consumes(tag); + tokenGctJetCounts_[i] = consumes(tag); + } + } + if(m_stage1_layer2_ == true) { + for (int i = 0; i < 2 ; ++i) { + edm::InputTag const& tag = tags[i]; + std::string const label = tag.label(); + tokenGctEmCand_isoEm_[i] = consumes(edm::InputTag(label, "isoEm")); + tokenGctEmCand_nonIsoEm_[i] = consumes(edm::InputTag(label, "nonIsoEm")); + tokenGctJetCand_cenJets_[i] = consumes(edm::InputTag(label, "cenJets")); + tokenGctJetCand_forJets_[i] = consumes(edm::InputTag(label, "forJets")); + tokenGctJetCand_tauJets_[i] = consumes(edm::InputTag(label, "tauJets")); + tokenGctJetCand_isoTauJets_[i] = consumes(edm::InputTag(label, "isoTauJets")); + tokenGctEtTotal_[i] = consumes(tag); + tokenGctEtHad_[i] = consumes(tag); + tokenGctEtMiss_[i] = consumes(tag); + tokenGctHFRingEtSums_[i] = consumes(tag); + tokenGctHFBitCounts_[i] = consumes(tag); + tokenGctHtMiss_[i] = consumes(tag); + tokenGctJetCounts_[i] = consumes(tag); + } } } + // -- DTP [drift tube trigger primitive] if(m_doSys[DTP]) { @@ -278,6 +302,8 @@ L1Comparator::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { edm::Handle gct_forjets_emul; edm::Handle gct_taujets_data; edm::Handle gct_taujets_emul; + edm::Handle gct_isotaujets_data; + edm::Handle gct_isotaujets_emul; edm::Handle gct_ht_data; edm::Handle gct_ht_emul; @@ -295,30 +321,60 @@ L1Comparator::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { edm::Handle gct_jetcnt_emul; if(m_doSys[GCT]) { - iEvent.getByToken(tokenGctEmCand_isoEm_[0],gct_isolaem_data); - iEvent.getByToken(tokenGctEmCand_isoEm_[1],gct_isolaem_emul); - iEvent.getByToken(tokenGctEmCand_nonIsoEm_[0],gct_noisoem_data); - iEvent.getByToken(tokenGctEmCand_nonIsoEm_[1],gct_noisoem_emul); - iEvent.getByToken(tokenGctJetCand_cenJets_[0],gct_cenjets_data); - iEvent.getByToken(tokenGctJetCand_cenJets_[1],gct_cenjets_emul); - iEvent.getByToken(tokenGctJetCand_forJets_[0],gct_forjets_data); - iEvent.getByToken(tokenGctJetCand_forJets_[1],gct_forjets_emul); - iEvent.getByToken(tokenGctJetCand_tauJets_[0],gct_taujets_data); - iEvent.getByToken(tokenGctJetCand_tauJets_[1],gct_taujets_emul); - iEvent.getByToken(tokenGctEtHad_[0],gct_ht_data); - iEvent.getByToken(tokenGctEtHad_[1],gct_ht_emul); - iEvent.getByToken(tokenGctEtMiss_[0],gct_etmiss_data); - iEvent.getByToken(tokenGctEtMiss_[1],gct_etmiss_emul); - iEvent.getByToken(tokenGctEtTotal_[0],gct_ettota_data); - iEvent.getByToken(tokenGctEtTotal_[1],gct_ettota_emul); - iEvent.getByToken(tokenGctHtMiss_[0],gct_htmiss_data); - iEvent.getByToken(tokenGctHtMiss_[1],gct_htmiss_emul); - iEvent.getByToken(tokenGctHFRingEtSums_[0],gct_hfring_data); - iEvent.getByToken(tokenGctHFRingEtSums_[1],gct_hfring_emul); - iEvent.getByToken(tokenGctHFBitCounts_[0],gct_hfbcnt_data); - iEvent.getByToken(tokenGctHFBitCounts_[1],gct_hfbcnt_emul); - iEvent.getByToken(tokenGctJetCounts_[0],gct_jetcnt_data); - iEvent.getByToken(tokenGctJetCounts_[1],gct_jetcnt_emul); + if(m_stage1_layer2_ == false){ + iEvent.getByToken(tokenGctEmCand_isoEm_[0],gct_isolaem_data); + iEvent.getByToken(tokenGctEmCand_isoEm_[1],gct_isolaem_emul); + iEvent.getByToken(tokenGctEmCand_nonIsoEm_[0],gct_noisoem_data); + iEvent.getByToken(tokenGctEmCand_nonIsoEm_[1],gct_noisoem_emul); + iEvent.getByToken(tokenGctJetCand_cenJets_[0],gct_cenjets_data); + iEvent.getByToken(tokenGctJetCand_cenJets_[1],gct_cenjets_emul); + iEvent.getByToken(tokenGctJetCand_forJets_[0],gct_forjets_data); + iEvent.getByToken(tokenGctJetCand_forJets_[1],gct_forjets_emul); + iEvent.getByToken(tokenGctJetCand_tauJets_[0],gct_taujets_data); + iEvent.getByToken(tokenGctJetCand_tauJets_[1],gct_taujets_emul); + iEvent.getByToken(tokenGctEtHad_[0],gct_ht_data); + iEvent.getByToken(tokenGctEtHad_[1],gct_ht_emul); + iEvent.getByToken(tokenGctEtMiss_[0],gct_etmiss_data); + iEvent.getByToken(tokenGctEtMiss_[1],gct_etmiss_emul); + iEvent.getByToken(tokenGctEtTotal_[0],gct_ettota_data); + iEvent.getByToken(tokenGctEtTotal_[1],gct_ettota_emul); + iEvent.getByToken(tokenGctHtMiss_[0],gct_htmiss_data); + iEvent.getByToken(tokenGctHtMiss_[1],gct_htmiss_emul); + iEvent.getByToken(tokenGctHFRingEtSums_[0],gct_hfring_data); + iEvent.getByToken(tokenGctHFRingEtSums_[1],gct_hfring_emul); + iEvent.getByToken(tokenGctHFBitCounts_[0],gct_hfbcnt_data); + iEvent.getByToken(tokenGctHFBitCounts_[1],gct_hfbcnt_emul); + iEvent.getByToken(tokenGctJetCounts_[0],gct_jetcnt_data); + iEvent.getByToken(tokenGctJetCounts_[1],gct_jetcnt_emul); + } + if(m_stage1_layer2_ == true){ + iEvent.getByToken(tokenGctEmCand_isoEm_[0],gct_isolaem_data); + iEvent.getByToken(tokenGctEmCand_isoEm_[1],gct_isolaem_emul); + iEvent.getByToken(tokenGctEmCand_nonIsoEm_[0],gct_noisoem_data); + iEvent.getByToken(tokenGctEmCand_nonIsoEm_[1],gct_noisoem_emul); + iEvent.getByToken(tokenGctJetCand_cenJets_[0],gct_cenjets_data); + iEvent.getByToken(tokenGctJetCand_cenJets_[1],gct_cenjets_emul); + iEvent.getByToken(tokenGctJetCand_forJets_[0],gct_forjets_data); + iEvent.getByToken(tokenGctJetCand_forJets_[1],gct_forjets_emul); + iEvent.getByToken(tokenGctJetCand_tauJets_[0],gct_taujets_data); + iEvent.getByToken(tokenGctJetCand_tauJets_[1],gct_taujets_emul); + iEvent.getByToken(tokenGctJetCand_isoTauJets_[0],gct_isotaujets_data); + iEvent.getByToken(tokenGctJetCand_isoTauJets_[1],gct_isotaujets_emul); + iEvent.getByToken(tokenGctEtHad_[0],gct_ht_data); + iEvent.getByToken(tokenGctEtHad_[1],gct_ht_emul); + iEvent.getByToken(tokenGctEtMiss_[0],gct_etmiss_data); + iEvent.getByToken(tokenGctEtMiss_[1],gct_etmiss_emul); + iEvent.getByToken(tokenGctEtTotal_[0],gct_ettota_data); + iEvent.getByToken(tokenGctEtTotal_[1],gct_ettota_emul); + iEvent.getByToken(tokenGctHtMiss_[0],gct_htmiss_data); + iEvent.getByToken(tokenGctHtMiss_[1],gct_htmiss_emul); + iEvent.getByToken(tokenGctHFRingEtSums_[0],gct_hfring_data); + iEvent.getByToken(tokenGctHFRingEtSums_[1],gct_hfring_emul); + iEvent.getByToken(tokenGctHFBitCounts_[0],gct_hfbcnt_data); + iEvent.getByToken(tokenGctHFBitCounts_[1],gct_hfbcnt_emul); + iEvent.getByToken(tokenGctJetCounts_[0],gct_jetcnt_data); + iEvent.getByToken(tokenGctJetCounts_[1],gct_jetcnt_emul); + } } // -- DTP [drift tube trigger primitive] @@ -484,18 +540,43 @@ L1Comparator::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { isValidDE[RCT][0] = rct_em_data .isValid(); isValidDE[RCT][1] = rct_em_emul .isValid(); isValidDE[RCT][0]&= rct_rgn_data .isValid(); isValidDE[RCT][1] = rct_rgn_emul .isValid(); - isValidDE[GCT][0] = gct_isolaem_data .isValid(); isValidDE[GCT][1] =gct_isolaem_emul .isValid(); - isValidDE[GCT][0]&= gct_noisoem_data .isValid(); isValidDE[GCT][1]&=gct_noisoem_emul .isValid(); - isValidDE[GCT][0]&= gct_cenjets_data .isValid(); isValidDE[GCT][1]&=gct_cenjets_emul .isValid(); - isValidDE[GCT][0]&= gct_forjets_data .isValid(); isValidDE[GCT][1]&=gct_forjets_emul .isValid(); - isValidDE[GCT][0]&= gct_taujets_data .isValid(); isValidDE[GCT][1]&=gct_taujets_emul .isValid(); - isValidDE[GCT][0]&= gct_etmiss_data .isValid(); isValidDE[GCT][1]&= gct_etmiss_emul .isValid(); - isValidDE[GCT][0]&= gct_ettota_data .isValid(); isValidDE[GCT][1]&= gct_ettota_emul .isValid(); - isValidDE[GCT][0]&= gct_htmiss_data .isValid(); isValidDE[GCT][1]&= gct_htmiss_emul .isValid(); - isValidDE[GCT][0]&= gct_hfring_data .isValid(); isValidDE[GCT][1]&= gct_hfring_emul .isValid(); - isValidDE[GCT][0]&= gct_hfbcnt_data .isValid(); isValidDE[GCT][1]&= gct_hfbcnt_emul .isValid(); -//isValidDE[GCT][0]&= gct_jetcnt_data .isValid(); isValidDE[GCT][1]&= gct_jetcnt_emul .isValid(); #temporary - + if(m_stage1_layer2_ == false){ + isValidDE[GCT][0] = gct_isolaem_data .isValid(); isValidDE[GCT][1] =gct_isolaem_emul .isValid(); + isValidDE[GCT][0]&= gct_noisoem_data .isValid(); isValidDE[GCT][1]&=gct_noisoem_emul .isValid(); + isValidDE[GCT][0]&= gct_cenjets_data .isValid(); isValidDE[GCT][1]&=gct_cenjets_emul .isValid(); + isValidDE[GCT][0]&= gct_forjets_data .isValid(); isValidDE[GCT][1]&=gct_forjets_emul .isValid(); + isValidDE[GCT][0]&= gct_taujets_data .isValid(); isValidDE[GCT][1]&=gct_taujets_emul .isValid(); + isValidDE[GCT][0]&= gct_etmiss_data .isValid(); isValidDE[GCT][1]&= gct_etmiss_emul .isValid(); + isValidDE[GCT][0]&= gct_ettota_data .isValid(); isValidDE[GCT][1]&= gct_ettota_emul .isValid(); + isValidDE[GCT][0]&= gct_htmiss_data .isValid(); isValidDE[GCT][1]&= gct_htmiss_emul .isValid(); + isValidDE[GCT][0]&= gct_hfring_data .isValid(); isValidDE[GCT][1]&= gct_hfring_emul .isValid(); + isValidDE[GCT][0]&= gct_hfbcnt_data .isValid(); isValidDE[GCT][1]&= gct_hfbcnt_emul .isValid(); + //isValidDE[GCT][0]&= gct_jetcnt_data .isValid(); isValidDE[GCT][1]&= gct_jetcnt_emul .isValid(); #temporary + } + if(m_stage1_layer2_ == true){ + isValidDE[GCT][0] = gct_isolaem_data .isValid(); + isValidDE[GCT][1] = gct_isolaem_emul .isValid(); + isValidDE[GCT][0]&= gct_noisoem_data .isValid(); + isValidDE[GCT][1]&= gct_noisoem_emul .isValid(); + isValidDE[GCT][0]&= gct_cenjets_data .isValid(); + isValidDE[GCT][1]&= gct_cenjets_emul .isValid(); + isValidDE[GCT][0]&= gct_forjets_data .isValid(); + isValidDE[GCT][1]&= gct_forjets_emul .isValid(); + isValidDE[GCT][0]&= gct_taujets_data .isValid(); + isValidDE[GCT][1]&= gct_taujets_emul .isValid(); + isValidDE[GCT][0]&= gct_isotaujets_data .isValid(); + isValidDE[GCT][1]&= gct_isotaujets_emul .isValid(); + isValidDE[GCT][0]&= gct_etmiss_data .isValid(); + isValidDE[GCT][1]&= gct_etmiss_emul .isValid(); + isValidDE[GCT][0]&= gct_ettota_data .isValid(); + isValidDE[GCT][1]&= gct_ettota_emul .isValid(); + isValidDE[GCT][0]&= gct_htmiss_data .isValid(); + isValidDE[GCT][1]&= gct_htmiss_emul .isValid(); + isValidDE[GCT][0]&= gct_hfring_data .isValid(); + isValidDE[GCT][1]&= gct_hfring_emul .isValid(); + isValidDE[GCT][0]&= gct_hfbcnt_data .isValid(); + isValidDE[GCT][1]&= gct_hfbcnt_emul .isValid(); + } isValidDE[DTP][0] = dtp_ph_data_.isValid(); isValidDE[DTP][1] = dtp_ph_emul_.isValid(); isValidDE[DTP][0]&= dtp_th_data_.isValid(); isValidDE[DTP][1]&= dtp_th_emul_.isValid(); @@ -542,19 +623,36 @@ L1Comparator::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { if(m_doSys[RCT]&&isValid[RCT]) process ( rct_em_data, rct_em_emul, RCT,RCTem); if(m_doSys[RCT]&&isValid[RCT]) process ( rct_rgn_data, rct_rgn_emul, RCT,RCTrgn); - if(m_doSys[GCT]&&isValid[GCT]) process (gct_isolaem_data, gct_isolaem_emul, GCT,GCTisolaem); - if(m_doSys[GCT]&&isValid[GCT]) process (gct_noisoem_data, gct_noisoem_emul, GCT,GCTnoisoem); - if(m_doSys[GCT]&&isValid[GCT]) process (gct_cenjets_data, gct_cenjets_emul, GCT,GCTcenjets); - if(m_doSys[GCT]&&isValid[GCT]) process (gct_forjets_data, gct_forjets_emul, GCT,GCTforjets); - if(m_doSys[GCT]&&isValid[GCT]) process (gct_taujets_data, gct_taujets_emul, GCT,GCTtaujets); - if(m_doSys[GCT]&&isValid[GCT]) process ( gct_ht_data, gct_ht_emul, GCT,GCTethad); - if(m_doSys[GCT]&&isValid[GCT]) process ( gct_etmiss_data, gct_etmiss_emul, GCT,GCTetmiss); - if(m_doSys[GCT]&&isValid[GCT]) process ( gct_ettota_data , gct_ettota_emul, GCT,GCTettot); - if(m_doSys[GCT]&&isValid[GCT]) process ( gct_htmiss_data, gct_htmiss_emul, GCT,GCThtmiss); - if(m_doSys[GCT]&&isValid[GCT]) process ( gct_hfring_data, gct_hfring_emul, GCT,GCThfring); - if(m_doSys[GCT]&&isValid[GCT]) process ( gct_hfbcnt_data, gct_hfbcnt_emul, GCT,GCThfbit); -//if(m_doSys[GCT]&&isValid[GCT]) process ( gct_jetcnt_data, gct_jetcnt_emul, GCT,GCTjetcnt);#missing in emulator - + if(m_stage1_layer2_==false){ + if(m_doSys[GCT]&&isValid[GCT]) process (gct_isolaem_data, gct_isolaem_emul, GCT,GCTisolaem); + if(m_doSys[GCT]&&isValid[GCT]) process (gct_noisoem_data, gct_noisoem_emul, GCT,GCTnoisoem); + if(m_doSys[GCT]&&isValid[GCT]) process (gct_cenjets_data, gct_cenjets_emul, GCT,GCTcenjets); + if(m_doSys[GCT]&&isValid[GCT]) process (gct_forjets_data, gct_forjets_emul, GCT,GCTforjets); + if(m_doSys[GCT]&&isValid[GCT]) process (gct_taujets_data, gct_taujets_emul, GCT,GCTtaujets); + if(m_doSys[GCT]&&isValid[GCT]) process ( gct_ht_data, gct_ht_emul, GCT,GCTethad); + if(m_doSys[GCT]&&isValid[GCT]) process ( gct_etmiss_data, gct_etmiss_emul, GCT,GCTetmiss); + if(m_doSys[GCT]&&isValid[GCT]) process ( gct_ettota_data , gct_ettota_emul, GCT,GCTettot); + if(m_doSys[GCT]&&isValid[GCT]) process ( gct_htmiss_data, gct_htmiss_emul, GCT,GCThtmiss); + if(m_doSys[GCT]&&isValid[GCT]) process ( gct_hfring_data, gct_hfring_emul, GCT,GCThfring); + if(m_doSys[GCT]&&isValid[GCT]) process ( gct_hfbcnt_data, gct_hfbcnt_emul, GCT,GCThfbit); + //if(m_doSys[GCT]&&isValid[GCT]) process ( gct_jetcnt_data, gct_jetcnt_emul, GCT,GCTjetcnt);#missing in emulator + } + if(m_stage1_layer2_==true){ + if(m_doSys[GCT]&&isValid[GCT]) process (gct_isolaem_data, gct_isolaem_emul, GCT,GCTisolaem); + if(m_doSys[GCT]&&isValid[GCT]) process (gct_noisoem_data, gct_noisoem_emul, GCT,GCTnoisoem); + if(m_doSys[GCT]&&isValid[GCT]) process (gct_cenjets_data, gct_cenjets_emul, GCT,GCTcenjets); + if(m_doSys[GCT]&&isValid[GCT]) process (gct_forjets_data, gct_forjets_emul, GCT,GCTforjets); + if(m_doSys[GCT]&&isValid[GCT]) process (gct_taujets_data, gct_taujets_emul, GCT,GCTtaujets); + if(m_doSys[GCT]&&isValid[GCT]) process (gct_isotaujets_data,gct_isotaujets_emul, GCT, GCTisotaujets); + if(m_doSys[GCT]&&isValid[GCT]) process ( gct_ht_data, gct_ht_emul, GCT,GCTethad); + if(m_doSys[GCT]&&isValid[GCT]) process ( gct_etmiss_data, gct_etmiss_emul, GCT,GCTetmiss); + if(m_doSys[GCT]&&isValid[GCT]) process ( gct_ettota_data , gct_ettota_emul, GCT,GCTettot); + if(m_doSys[GCT]&&isValid[GCT]) process ( gct_htmiss_data, gct_htmiss_emul, GCT,GCThtmiss); + if(m_doSys[GCT]&&isValid[GCT]) process ( gct_hfring_data, gct_hfring_emul, GCT,GCThfring); + if(m_doSys[GCT]&&isValid[GCT]) process ( gct_hfbcnt_data, gct_hfbcnt_emul, GCT,GCThfbit); + //if(m_doSys[GCT]&&isValid[GCT]) process ( gct_jetcnt_data, gct_jetcnt_emul, GCT,GCTjetcnt);#missing in emulator + } + if(m_doSys[DTP]&&isValid[DTP]) process ( dtp_ph_data, dtp_ph_emul, DTP,DTtpPh); if(m_doSys[DTP]&&isValid[DTP]) process ( dtp_th_data, dtp_th_emul, DTP,DTtpTh); From 28c43682931846e34177c38aaab6a4c43276d2b5 Mon Sep 17 00:00:00 2001 From: jingyu zhang Date: Tue, 19 May 2015 04:34:45 +0200 Subject: [PATCH 2/3] fix --- DQM/L1TMonitor/python/L1TdeGCT_cfi.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/DQM/L1TMonitor/python/L1TdeGCT_cfi.py b/DQM/L1TMonitor/python/L1TdeGCT_cfi.py index f9751e6b84a33..8d7c8869c8b0f 100644 --- a/DQM/L1TMonitor/python/L1TdeGCT_cfi.py +++ b/DQM/L1TMonitor/python/L1TdeGCT_cfi.py @@ -6,7 +6,8 @@ HistFile = cms.untracked.string(''), disableROOToutput = cms.untracked.bool(True), DQMStore = cms.untracked.bool(True), - VerboseFlag = cms.untracked.int32(0) + VerboseFlag = cms.untracked.int32(0), + stage1_layer2_ = cms.bool(False) ) From 223b2941869fb0a5b94a4b35f8cc6fc9853a4021 Mon Sep 17 00:00:00 2001 From: jingyu zhang Date: Fri, 22 May 2015 22:37:37 +0200 Subject: [PATCH 3/3] remove dqmStore and change the create the master config --- ...tage1emulator_dqm_sourceclient-live_cfg.py | 235 ++++++++++++++++++ DQM/L1TMonitor/python/L1TDEMONStage1_cfi.py | 1 - DQM/L1TMonitor/python/L1TDEMON_cfi.py | 1 - DQM/L1TMonitor/python/L1TdeGCT_cfi.py | 1 - .../python/L1TdeStage1Layer2_cfi.py | 1 - DQM/L1TMonitor/python/l1GtHwValidation_cfi.py | 1 - .../python/l1Stage1GtHwValidation_cfi.py | 1 - 7 files changed, 235 insertions(+), 6 deletions(-) create mode 100644 DQM/Integration/python/test/l1tstage1emulator_dqm_sourceclient-live_cfg.py diff --git a/DQM/Integration/python/test/l1tstage1emulator_dqm_sourceclient-live_cfg.py b/DQM/Integration/python/test/l1tstage1emulator_dqm_sourceclient-live_cfg.py new file mode 100644 index 0000000000000..ad790bb26eb11 --- /dev/null +++ b/DQM/Integration/python/test/l1tstage1emulator_dqm_sourceclient-live_cfg.py @@ -0,0 +1,235 @@ +# L1 Emulator DQM sequence +# +# authors previous versions - see CVS +# +# V.M. Ghete 2010-10-22 revised version of L1 emulator DQM + + +import FWCore.ParameterSet.Config as cms + +process = cms.Process("L1TEmuDQMlive") + + +#---------------------------- +# Event Source +# +# for live online DQM in P5 +process.load("DQM.Integration.test.inputsource_cfi") +# +# for testing in lxplus +#process.load("DQM.Integration.test.fileinputsource_cfi") + +#---------------------------- +# DQM Environment +# + +# + +process.load("DQMServices.Components.DQMEnvironment_cfi") +process.dqmEnv.subSystemFolder = 'L1TEMUStage1' + +# +process.load("DQM.Integration.test.environment_cfi") +# for local test +process.dqmSaver.dirName = '.' +# +# no references needed +# replace DQMStore.referenceFileName = "L1TEMU_reference.root" + +# +# Condition for P5 cluster +process.load("DQM.Integration.test.FrontierCondition_GT_cfi") +process.GlobalTag.RefreshEachRun = cms.untracked.bool(True) +# Condition for lxplus +#process.load("DQM.Integration.test.FrontierCondition_GT_Offline_cfi") + +#process.load("Configuration.StandardSequences.GeometryRecoDB_cff") + +process.load("Configuration.StandardSequences.GeometryRecoDB_cff") +#------------------------------------- +# sequences needed for L1 emulator DQM +# + +# standard unpacking sequence +process.load("Configuration.StandardSequences.RawToDigi_Data_cff") + +# L1 data - emulator sequences +process.load("DQM.L1TMonitor.L1TEmulatorMonitor_cff") +process.load("DQM.L1TMonitorClient.L1TEMUMonitorClient_cff") +process.load("L1Trigger.L1TCalorimeter.caloStage1Params_cfi") + +#------------------------------------- +# paths & schedule for L1 emulator DQM +# + +# TODO define a L1 trigger L1TriggerRawToDigi in the standard sequence +# to avoid all these remove +process.rawToDigiPath = cms.Path(process.RawToDigi) +# +process.RawToDigi.remove("siPixelDigis") +process.RawToDigi.remove("siStripDigis") +process.RawToDigi.remove("scalersRawToDigi") +process.RawToDigi.remove("castorDigis") + +process.gtDigis.DaqGtFedId = cms.untracked.int32(809) + +# L1HvVal + emulator monitoring path +process.l1HwValEmulatorMonitorPath = cms.Path(process.l1Stage1HwValEmulatorMonitor) + +# for RCT at P5, read FED vector from OMDS +#process.load("L1TriggerConfig.RCTConfigProducers.l1RCTOmdsFedVectorProducer_cfi") +#process.valRctDigis.getFedsFromOmds = cms.bool(True) + +# +process.l1EmulatorMonitorClientPath = cms.Path(process.l1EmulatorMonitorClient) + +# +process.l1EmulatorMonitorEndPath = cms.EndPath(process.dqmEnv*process.dqmSaver) + +# + +# +process.schedule = cms.Schedule(process.rawToDigiPath, + process.l1HwValEmulatorMonitorPath, + #process.l1EmulatorMonitorClientPath, + process.l1EmulatorMonitorEndPath) + +#--------------------------------------------- + +# examples for quick fixes in case of troubles +# please do not modify the commented lines +# +# remove a module from hardware validation +# cff file: L1Trigger.HardwareValidation.L1HardwareValidation_cff +# +# process.L1HardwareValidation.remove(process.deCsctf) +# +process.L1HardwareValidation.remove(process.deDt) + + +# +# remove a L1 trigger system from the comparator integrated in hardware validation +# cfi file: L1Trigger.HardwareValidation.L1Comparator_cfi +# +#process.l1compare.COMPARE_COLLS = [0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0] +# + +process.l1compareforstage1.COMPARE_COLLS = [ + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 + ] + +process.l1demonstage1.COMPARE_COLLS = [ + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 + ] + #ETP,HTP,RCT,GCT, DTP,DTF,CTP,CTF,RPC,LTC,GMT,GT + + +# +# remove an expert module for L1 trigger system +# cff file: DQM.L1TMonitor.L1TEmulatorMonitor_cff +# +# process.l1ExpertDataVsEmulator.remove(process.l1GtHwValidation) +# + +process.l1ExpertDataVsEmulatorStage1.remove(process.l1TdeCSCTF) + +process.l1ExpertDataVsEmulatorStage1.remove(process.l1TdeRCT) + +process.l1demonstage1.HistFolder = cms.untracked.string('L1TEMUStage1') + +process.l1TdeStage1Layer2.HistFolder = cms.untracked.string('L1TEMUStage1/Stage1Layer2expert') + +process.l1Stage1GtHwValidation.DirName = cms.untracked.string("L1TEMUStage1/GTexpert") + +# +# remove a module / sequence from l1EmulatorMonitorClient +# cff file: DQM.L1TMonitorClient.L1TEmulatorMonitorClient_cff +# +# process.l1EmulatorMonitorClient.remove(process.l1EmulatorErrorFlagClient) +# + + +# +# fast over-mask a system in L1TEMUEventInfoClient: +# if the name of the system is in the list, the system will be masked +# (the default mask value is given in L1Systems VPSet) +# +# names are case sensitive, order is irrelevant +# "ECAL", "HCAL", "RCT", "GCT", "DTTF", "DTTPG", "CSCTF", "CSCTPG", "RPC", "GMT", "GT" +# +# process.l1temuEventInfoClient.DisableL1Systems = cms.vstring("ECAL") +# + + +# +# fast over-mask an object in L1TEMUEventInfoClient: +# if the name of the object is in the list, the object will be masked +# (the default mask value is given in L1Objects VPSet) +# +# names are case sensitive, order is irrelevant +# +# "Mu", "NoIsoEG", "IsoEG", "CenJet", "ForJet", "TauJet", "ETM", "ETT", "HTT", "HTM", +# "HfBitCounts", "HfRingEtSums", "TechTrig", "GtExternal +# +# process.l1temuEventInfoClient.DisableL1Objects = cms.vstring("ETM") +# + + +# +# turn on verbosity in L1TEMUEventInfoClient +# +# process.l1EmulatorEventInfoClient.verbose = cms.untracked.bool(True) + +# un-comment next lines in case you use the file for private tests on the playback server +# see https://twiki.cern.ch/twiki/bin/view/CMS/DQMTest for instructions +# +#process.dqmSaver.dirName = '.' +#process.dqmSaver.saveByRun = 1 +#process.dqmSaver.saveAtJobEnd = True + +print "Running with run type = ", process.runType.getRunType() +process.castorDigis.InputLabel = cms.InputTag("rawDataCollector") +process.csctfDigis.producer = cms.InputTag("rawDataCollector") +process.dttfDigis.DTTF_FED_Source = cms.InputTag("rawDataCollector") +process.ecalDigis.InputLabel = cms.InputTag("rawDataCollector") +process.ecalPreshowerDigis.sourceTag = cms.InputTag("rawDataCollector") +process.gctDigis.inputLabel = cms.InputTag("rawDataCollector") +process.gtDigis.DaqGtInputTag = cms.InputTag("rawDataCollector") +process.gtEvmDigis.EvmGtInputTag = cms.InputTag("rawDataCollector") +process.hcalDigis.InputLabel = cms.InputTag("rawDataCollector") +process.l1compare.FEDsourceEmul = cms.untracked.InputTag("rawDataCollector") +process.l1compare.FEDsourceData = cms.untracked.InputTag("rawDataCollector") +process.muonCSCDigis.InputObjects = cms.InputTag("rawDataCollector") +process.muonDTDigis.inputLabel = cms.InputTag("rawDataCollector") +process.muonRPCDigis.InputLabel = cms.InputTag("rawDataCollector") +process.scalersRawToDigi.scalersInputTag = cms.InputTag("rawDataCollector") +process.siPixelDigis.InputLabel = cms.InputTag("rawDataCollector") +process.siStripDigis.ProductLabel = cms.InputTag("rawDataCollector") + +#-------------------------------------------------- +# Heavy Ion Specific Fed Raw Data Collection Label +#-------------------------------------------------- +if (process.runType.getRunType() == process.runType.hi_run): + process.castorDigis.InputLabel = cms.InputTag("rawDataRepacker") + process.csctfDigis.producer = cms.InputTag("rawDataRepacker") + process.dttfDigis.DTTF_FED_Source = cms.InputTag("rawDataRepacker") + process.ecalDigis.InputLabel = cms.InputTag("rawDataRepacker") + process.ecalPreshowerDigis.sourceTag = cms.InputTag("rawDataRepacker") + process.gctDigis.inputLabel = cms.InputTag("rawDataRepacker") + process.gtDigis.DaqGtInputTag = cms.InputTag("rawDataRepacker") + process.gtEvmDigis.EvmGtInputTag = cms.InputTag("rawDataRepacker") + process.hcalDigis.InputLabel = cms.InputTag("rawDataRepacker") + process.l1compare.FEDsourceEmul = cms.untracked.InputTag("rawDataRepacker") + process.l1compare.FEDsourceData = cms.untracked.InputTag("rawDataRepacker") + process.muonCSCDigis.InputObjects = cms.InputTag("rawDataRepacker") + process.muonDTDigis.inputLabel = cms.InputTag("rawDataRepacker") + process.muonRPCDigis.InputLabel = cms.InputTag("rawDataRepacker") + process.scalersRawToDigi.scalersInputTag = cms.InputTag("rawDataRepacker") + process.siPixelDigis.InputLabel = cms.InputTag("rawDataRepacker") + process.siStripDigis.ProductLabel = cms.InputTag("rawDataRepacker") + + + +### process customizations included here +from DQM.Integration.test.online_customizations_cfi import * +process = customise(process) diff --git a/DQM/L1TMonitor/python/L1TDEMONStage1_cfi.py b/DQM/L1TMonitor/python/L1TDEMONStage1_cfi.py index 82eb3ffa288a6..a920f76909929 100644 --- a/DQM/L1TMonitor/python/L1TDEMONStage1_cfi.py +++ b/DQM/L1TMonitor/python/L1TDEMONStage1_cfi.py @@ -5,7 +5,6 @@ HistFile = cms.untracked.string('l1demon.root'), disableROOToutput = cms.untracked.bool(True), DataEmulCompareSource = cms.InputTag("l1compareforstage1"), - DQMStore = cms.untracked.bool(True), VerboseFlag = cms.untracked.int32(0), RunInFilterFarm = cms.untracked.bool(False), COMPARE_COLLS = cms.untracked.vuint32( diff --git a/DQM/L1TMonitor/python/L1TDEMON_cfi.py b/DQM/L1TMonitor/python/L1TDEMON_cfi.py index 94d5b558ca126..b561ac5255203 100644 --- a/DQM/L1TMonitor/python/L1TDEMON_cfi.py +++ b/DQM/L1TMonitor/python/L1TDEMON_cfi.py @@ -5,7 +5,6 @@ HistFile = cms.untracked.string('l1demon.root'), disableROOToutput = cms.untracked.bool(True), DataEmulCompareSource = cms.InputTag("l1compare"), - DQMStore = cms.untracked.bool(True), VerboseFlag = cms.untracked.int32(0), RunInFilterFarm = cms.untracked.bool(False), COMPARE_COLLS = cms.untracked.vuint32( diff --git a/DQM/L1TMonitor/python/L1TdeGCT_cfi.py b/DQM/L1TMonitor/python/L1TdeGCT_cfi.py index 8d7c8869c8b0f..f4359b57bf90b 100644 --- a/DQM/L1TMonitor/python/L1TdeGCT_cfi.py +++ b/DQM/L1TMonitor/python/L1TdeGCT_cfi.py @@ -5,7 +5,6 @@ HistFolder = cms.untracked.string('L1TEMU/GCTexpert'), HistFile = cms.untracked.string(''), disableROOToutput = cms.untracked.bool(True), - DQMStore = cms.untracked.bool(True), VerboseFlag = cms.untracked.int32(0), stage1_layer2_ = cms.bool(False) ) diff --git a/DQM/L1TMonitor/python/L1TdeStage1Layer2_cfi.py b/DQM/L1TMonitor/python/L1TdeStage1Layer2_cfi.py index 3ca4bcb039796..7ad7a8e67bc64 100644 --- a/DQM/L1TMonitor/python/L1TdeStage1Layer2_cfi.py +++ b/DQM/L1TMonitor/python/L1TdeStage1Layer2_cfi.py @@ -5,7 +5,6 @@ HistFolder = cms.untracked.string('L1TEMU/Stage1Layer2expert'), HistFile = cms.untracked.string(''), disableROOToutput = cms.untracked.bool(True), - DQMStore = cms.untracked.bool(True), VerboseFlag = cms.untracked.int32(0), stage1_layer2_ = cms.bool(True) ) diff --git a/DQM/L1TMonitor/python/l1GtHwValidation_cfi.py b/DQM/L1TMonitor/python/l1GtHwValidation_cfi.py index 6ce11bc7b3c20..d2277d5e44265 100644 --- a/DQM/L1TMonitor/python/l1GtHwValidation_cfi.py +++ b/DQM/L1TMonitor/python/l1GtHwValidation_cfi.py @@ -21,7 +21,6 @@ # input tag for the L1 GCT hardware record L1GctDataInputTag = cms.InputTag("gctDigis"), - DQMStore = cms.untracked.bool(False), DirName = cms.untracked.string("L1TEMU/GTexpert"), # exclude algorithm triggers from comparison data - emulator by diff --git a/DQM/L1TMonitor/python/l1Stage1GtHwValidation_cfi.py b/DQM/L1TMonitor/python/l1Stage1GtHwValidation_cfi.py index b7fc2002cd5cb..6e1ef12db3536 100644 --- a/DQM/L1TMonitor/python/l1Stage1GtHwValidation_cfi.py +++ b/DQM/L1TMonitor/python/l1Stage1GtHwValidation_cfi.py @@ -21,7 +21,6 @@ # input tag for the L1 GCT hardware record L1GctDataInputTag = cms.InputTag("gctDigis"), - DQMStore = cms.untracked.bool(False), DirName = cms.untracked.string("L1TEMU/GTexpert"), # exclude algorithm triggers from comparison data - emulator by