Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dqm physics ewk module update trigger fix #1746

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 2 additions & 1 deletion DQM/Physics/python/ewkElecDQM_cfi.py
Expand Up @@ -6,12 +6,13 @@
TrigTag = cms.untracked.InputTag("TriggerResults::HLT"),
# MuonTag = cms.untracked.InputTag("muons"),
ElecTag = cms.untracked.InputTag("gsfElectrons"),
METTag = cms.untracked.InputTag("met"),
METTag = cms.untracked.InputTag("pfMet"),
METIncludesMuons = cms.untracked.bool(False),
JetTag = cms.untracked.InputTag("ak5PFJets"),
# JetTag = cms.untracked.InputTag("ak5CaloJets"),
# JetTag = cms.untracked.InputTag("sisCone5CaloJets"),
VertexTag= cms.untracked.InputTag("offlinePrimaryVertices"),
BeamSpotTag = cms.untracked.InputTag("offlineBeamSpot"),

# Main cuts ->
# MuonTrig = cms.untracked.string("HLT_Mu9"),
Expand Down
60 changes: 40 additions & 20 deletions DQM/Physics/src/EwkElecDQM.cc
Expand Up @@ -54,7 +54,7 @@ EwkElecDQM::EwkElecDQM( const ParameterSet & cfg ) :
jetToken_(consumes<edm::View<reco::Jet> >(
cfg.getUntrackedParameter<edm::InputTag> ("JetTag",
edm::InputTag("sisCone5CaloJets")))),
vertexTag_(consumes<reco::VertexCollection>(
vertexTag_(consumes<edm::View<reco::Vertex> >(
cfg.getUntrackedParameter<edm::InputTag> ("VertexTag",
edm::InputTag("offlinePrimaryVertices")))),
beamSpotTag_(consumes<reco::BeamSpot>(
Expand Down Expand Up @@ -370,7 +370,10 @@ void EwkElecDQM::endRun(const Run& r, const EventSetup&) {
LogVerbatim("") << ">>>>>> SELECTION SUMMARY END >>>>>>>>>>>>>>>\n";
}

void EwkElecDQM::analyze (const Event & ev, const EventSetup &) {
inline void HERE(const char *msg) { std::cout << msg << "\n"; }


void EwkElecDQM::analyze (const Event & ev, const EventSetup & iSet) {

// Reset global event selection flags
bool rec_sel = false;
Expand All @@ -392,6 +395,7 @@ void EwkElecDQM::analyze (const Event & ev, const EventSetup &) {
//LogWarning("") << ">>> No beam spot found !!!";
return;
}

// MET
double met_px = 0.;
double met_py = 0.;
Expand All @@ -400,6 +404,7 @@ void EwkElecDQM::analyze (const Event & ev, const EventSetup &) {
//LogWarning("") << ">>> MET collection does not exist !!!";
return;
}

const MET& met = metCollection->at(0);
met_px = met.px();
met_py = met.py();
Expand All @@ -423,22 +428,23 @@ void EwkElecDQM::analyze (const Event & ev, const EventSetup &) {
LogError("") << ">>> Vertex collection does not exist !!!";
return;
}

for (unsigned int i=0; i<vertexCollection->size(); i++) {
const Vertex& vertex = vertexCollection->at(i);
if (vertex.isValid()) npvCount++;
}
npvs_before_->Fill(npvCount);


// Trigger
// Trigger
Handle<TriggerResults> triggerResults;
if (!ev.getByToken(trigTag_, triggerResults)) {
//LogWarning("") << ">>> TRIGGER collection does not exist !!!";
return;
}
const edm::TriggerNames & trigNames = ev.triggerNames(*triggerResults);
bool trigger_fired = false;
/*

/* very old code
for (unsigned int i=0; i<triggerResults->size(); i++) {
if (triggerResults->accept(i)) {
LogTrace("") << "Accept by: " << i << ", Trigger: " << trigNames.triggerName(i);
Expand All @@ -452,6 +458,7 @@ void EwkElecDQM::analyze (const Event & ev, const EventSetup &) {
if (triggerResults->accept(itrig1)) trigger_fired = true;
*/
//suggested replacement: lm250909
/* Fix buggy trigger logic
for (unsigned int i=0; i<triggerResults->size(); i++)
{
std::string trigName = trigNames.triggerName(i);
Expand Down Expand Up @@ -481,7 +488,35 @@ void EwkElecDQM::analyze (const Event & ev, const EventSetup &) {
if(triggerResults->accept(i) && !prescaled) trigger_fired=true;

}
*/

// get the prescale set for this event
const int prescaleSet=hltConfigProvider_.prescaleSet(ev,iSet);
if (prescaleSet==-1) {
LogTrace("") << "Failed to determine prescaleSet\n";
//std::cout << "Failed to determine prescaleSet. Check cmsRun GlobalTag\n";
return;
}

for (unsigned int i=0; (i<triggerResults->size()) && (trigger_fired==false); i++) {
// skip trigger, if it did not fire
if (!triggerResults->accept(i)) continue;

// skip trigger, if it is not on our list
bool found=false;
const std::string trigName = trigNames.triggerName(i);
for(unsigned int index=0; index<elecTrig_.size() && found==false; index++) {
if ( trigName.find(elecTrig_.at(index)) == 0 ) found=true;
}
if(!found) continue;

// skip trigger, if it is prescaled
if (hltConfigProvider_.prescaleValue(prescaleSet,trigName) != 1)
continue;

//std::cout << "found unprescaled trigger that fired: " << trigName << "\n";
trigger_fired=true;
}

LogTrace("") << ">>> Trigger bit: " << trigger_fired << " for one of ( " ;
for (unsigned int k = 0; k < elecTrig_.size(); k++)
Expand All @@ -491,21 +526,6 @@ void EwkElecDQM::analyze (const Event & ev, const EventSetup &) {
LogTrace("") << ")";
trig_before_->Fill(trigger_fired);

// // Loop to reject/control Z->mumu is done separately
// unsigned int nmuonsForZ1 = 0;
// unsigned int nmuonsForZ2 = 0;
// for (unsigned int i=0; i<muonCollectionSize; i++) {
// const Muon& mu = muonCollection->at(i);
// if (!mu.isGlobalMuon()) continue;
// double pt = mu.pt();
// if (pt>ptThrForZ1_) nmuonsForZ1++;
// if (pt>ptThrForZ2_) nmuonsForZ2++;
// }
// LogTrace("") << "> Z rejection: muons above " << ptThrForZ1_ << " [GeV]: " << nmuonsForZ1;
// LogTrace("") << "> Z rejection: muons above " << ptThrForZ2_ << " [GeV]: " << nmuonsForZ2;
// nz1_before_->Fill(nmuonsForZ1);
// nz2_before_->Fill(nmuonsForZ2);

// Jet collection
Handle<View<Jet> > jetCollection;
if (!ev.getByToken(jetToken_, jetCollection)) {
Expand Down
2 changes: 1 addition & 1 deletion DQM/Physics/src/EwkElecDQM.h
Expand Up @@ -42,7 +42,7 @@ class EwkElecDQM : public edm::EDAnalyzer {
edm::EDGetTokenT<edm::View<reco::GsfElectron> > elecTag_;
edm::EDGetTokenT<edm::View<reco::MET> > metToken_;
edm::EDGetTokenT<edm::View<reco::Jet> > jetToken_;
edm::EDGetTokenT<reco::VertexCollection> vertexTag_;
edm::EDGetTokenT<edm::View<reco::Vertex> > vertexTag_;
edm::EDGetTokenT<reco::BeamSpot> beamSpotTag_;
bool metIncludesMuons_;

Expand Down
61 changes: 55 additions & 6 deletions DQM/Physics/src/EwkMuDQM.cc
Expand Up @@ -137,8 +137,8 @@ void EwkMuDQM::init_histograms() {
eta_before_ = theDbe->book1D("ETA_BEFORECUTS","Muon pseudo-rapidity",50,-2.5,2.5);
eta_after_ = theDbe->book1D("ETA_AFTERWCUTS","Muon pseudo-rapidity",50,-2.5,2.5);

dxy_before_ = theDbe->book1D("DXY_BEFORECUTS","Muon transverse distance to beam spot [cm]",1000,-0.5,0.5);
dxy_after_ = theDbe->book1D("DXY_AFTERWCUTS","Muon transverse distance to beam spot [cm]",1000,-0.5,0.5);
dxy_before_ = theDbe->book1D("DXY_BEFORECUTS","Muon transverse distance to beam spot [cm]",100,-0.5,0.5);
dxy_after_ = theDbe->book1D("DXY_AFTERWCUTS","Muon transverse distance to beam spot [cm]",100,-0.5,0.5);

goodewkmuon_before_ = theDbe->book1D("GOODEWKMUON_BEFORECUTS","Quality-muon flag",2,-0.5,1.5);
goodewkmuon_after_ = theDbe->book1D("GOODEWKMUON_AFTERWCUTS","Quality-muon flag",2,-0.5,1.5);
Expand Down Expand Up @@ -210,7 +210,7 @@ void EwkMuDQM::init_histograms() {

pt1_afterZ_ = theDbe->book1D("PT1_AFTERZCUTS","Muon transverse momentum (global muon) [GeV]",100,0.,100.);
eta1_afterZ_ = theDbe->book1D("ETA1_AFTERZCUTS","Muon pseudo-rapidity",50,-2.5,2.5);
dxy1_afterZ_ = theDbe->book1D("DXY1_AFTERZCUTS","Muon transverse distance to beam spot [cm]",1000,-0.5,0.5);
dxy1_afterZ_ = theDbe->book1D("DXY1_AFTERZCUTS","Muon transverse distance to beam spot [cm]",100,-0.5,0.5);
goodewkmuon1_afterZ_ = theDbe->book1D("GOODEWKMUON1_AFTERZCUTS","Quality-muon flag",2,-0.5,1.5);

if (isRelativeIso_) {
Expand All @@ -233,7 +233,7 @@ void EwkMuDQM::init_histograms() {

pt2_afterZ_ = theDbe->book1D("PT2_AFTERZCUTS","Muon transverse momentum (global muon) [GeV]",100,0.,100.);
eta2_afterZ_ = theDbe->book1D("ETA2_AFTERZCUTS","Muon pseudo-rapidity",50,-2.5,2.5);
dxy2_afterZ_ = theDbe->book1D("DXY2_AFTERZCUTS","Muon transverse distance to beam spot [cm]",1000,-0.5,0.5);
dxy2_afterZ_ = theDbe->book1D("DXY2_AFTERZCUTS","Muon transverse distance to beam spot [cm]",100,-0.5,0.5);
goodewkmuon2_afterZ_ = theDbe->book1D("GOODEWKMUON2_AFTERZCUTS","Quality-muon flag",2,-0.5,1.5);
ztrig_afterZ_ = theDbe->book1D("ZTRIG_AFTERZCUTS","Trigger response (boolean of muon triggers)",2,-0.5,1.5);
dimuonmass_before_= theDbe->book1D("DIMUONMASS_BEFORECUTS","DiMuonMass (2 globals)",100,0,200);
Expand All @@ -251,7 +251,7 @@ void EwkMuDQM::init_histograms() {

nph_ = theDbe->book1D("nph","Number of photons in the event",20,0.,20.);
//npfph_ = theDbe->book1D("npfph","Number of PF photons in the event",20,0.,20.);
phPt_ = theDbe->book1D("phPt","Photon transverse momentum [GeV]",1000,0.,1000.);
phPt_ = theDbe->book1D("phPt","Photon transverse momentum [GeV]",100,0.,1000.);
//pfphPt_ = theDbe->book1D("pfphPt","PF Photon transverse momentum [GeV]",1000,0.,1000.);
snprintf(chtitle, 255, "Photon pseudorapidity (pT>%4.1f)",ptThrForPhoton_);
phEta_ = theDbe->book1D("phEta",chtitle,100,-2.5,2.5);
Expand Down Expand Up @@ -357,7 +357,7 @@ void EwkMuDQM::analyze (const Event & ev, const EventSetup & iSet) {
const edm::TriggerNames & trigNames = ev.triggerNames(*triggerResults);
// LogWarning("")<<"Loop over triggers";


/* change faulty logic of triggering
for (unsigned int i=0; i<triggerResults->size(); i++)
{
const std::string trigName = trigNames.triggerName(i);
Expand All @@ -378,6 +378,55 @@ void EwkMuDQM::analyze (const Event & ev, const EventSetup & iSet) {
if( triggerResults->accept(i) && !prescaled){ trigger_fired=true;}
// LogWarning("")<<"TrigNo: "<<i<<" "<<found<<" "<<trigName<<" ---> FIRED";}
}
*/

// get the prescale set for this event
const int prescaleSet=hltConfigProvider_.prescaleSet(ev,iSet);
if (prescaleSet==-1) {
LogTrace("") << "Failed to determine prescaleSet\n";
//std::cout << "Failed to determine prescaleSet. Check the GlobalTag in cfg\n";
return;
}

for (unsigned int i=0; (i<triggerResults->size()) && (trigger_fired==false); i++) {
// skip trigger, if it did not fire
if (!triggerResults->accept(i)) continue;

// skip trigger, if it is not on our list
bool found=false;
const std::string trigName = trigNames.triggerName(i);
for(unsigned int index=0; index<trigPathNames_.size() && found==false; index++) {
if ( trigName.find(trigPathNames_.at(index)) == 0 ) found=true;
}
if(!found) continue;

// skip trigger, if it is prescaled
if (prescaleSet!=-1) {
if (hltConfigProvider_.prescaleValue(prescaleSet,trigName) != 1)
continue;
}
else {
// prescaleSet is not known.
// This branch is not needed, if prescaleSet=-1 forces to skip event
int prescaled=0;
for (unsigned int ps=0;
!prescaled && (ps<hltConfigProvider_.prescaleSize());
++ps) {
if (hltConfigProvider_.prescaleValue(ps, trigName) != 1) {
prescaled=1;
}
}
if (prescaled) {
//std::cout << "trigger prescaled\n";
continue;
}
}

//std::cout << "found unprescaled trigger that fired: " << trigName << "\n";
trigger_fired=true;
}
//if (trigger_fired) std::cout << "\n\tGot Trigger\n";

trig_before_->Fill(trigger_fired);

// Jet collection
Expand Down
82 changes: 43 additions & 39 deletions DQM/Physics/test/ewkElecDQM_cfg.py
@@ -1,68 +1,72 @@
import FWCore.ParameterSet.Config as cms



process = cms.Process("EwkDQM")
process.load("DQM.Physics.ewkElecDQM_cfi")

process.load("DQMServices.Core.DQM_cfg")
process.load("DQMServices.Components.DQMEnvironment_cfi")
process.DQM.collectorHost = ''

process.dqmSaver.workflow = cms.untracked.string('/Physics/EWK/Elec')
#keep the logging output to a nice level
process.load("FWCore.MessageLogger.MessageLogger_cfi")
process.MessageLogger.cerr.FwkReport.reportEvery = 1

# load the full reconstraction configuration, to make sure we're getting all needed dependencies
process.load("Configuration.StandardSequences.MagneticField_cff")
#process.load("Configuration.StandardSequences.Geometry_cff") #old one, to use for old releases
process.load("Configuration.Geometry.GeometryIdeal_cff")
process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
process.load("Configuration.StandardSequences.Reconstruction_cff")
process.GlobalTag.globaltag = 'FT_53_V21_AN6::All'
#process.GlobalTag.globaltag = 'START70_V2::All'

process.maxEvents = cms.untracked.PSet(
# input = cms.untracked.int32(-1)
input = cms.untracked.int32(5000)
input = cms.untracked.int32(-1)
# input = cms.untracked.int32(5000)
)

process.source = cms.Source("PoolSource",
fileNames = cms.untracked.vstring(
# RelVal Zee 315
# '/store/relval/CMSSW_3_1_5/RelValZEE/GEN-SIM-RECO/MC_31X_V3-v1/0001/D484792A-D8D1-DE11-AD79-00261894388B.root',
# '/store/relval/CMSSW_3_1_5/RelValZEE/GEN-SIM-RECO/MC_31X_V3-v1/0001/CAC4B678-49D1-DE11-8F6D-002618943981.root',
# '/store/relval/CMSSW_3_1_5/RelValZEE/GEN-SIM-RECO/MC_31X_V3-v1/0001/56101012-48D1-DE11-B885-00261894394A.root'

# RelVal Zee, Zmm, We, Wm - 311 BAD ELECTRONS!
# '/store/relval/CMSSW_3_1_1/RelValZEE/GEN-SIM-RECO/MC_31X_V2-v1/0002/FC71916C-756B-DE11-8631-000423D94700.root',
# '/store/relval/CMSSW_3_1_1/RelValZEE/GEN-SIM-RECO/MC_31X_V2-v1/0002/B672A1C5-746B-DE11-93A8-000423D944F0.root',
# '/store/relval/CMSSW_3_1_1/RelValZEE/GEN-SIM-RECO/MC_31X_V2-v1/0002/5A0F871C-756B-DE11-BFE1-001D09F2545B.root',
# '/store/relval/CMSSW_3_1_1/RelValZEE/GEN-SIM-RECO/MC_31X_V2-v1/0002/44507D17-D66B-DE11-A165-000423D94524.root',
## '/store/relval/CMSSW_3_1_1/RelValZMM/GEN-SIM-RECO/STARTUP31X_V1-v2/0002/C8CEE598-CB6B-DE11-871F-001D09F2905B.root',
## '/store/relval/CMSSW_3_1_1/RelValZMM/GEN-SIM-RECO/STARTUP31X_V1-v2/0002/642F8176-C96B-DE11-9D10-000423D98BE8.root',
## '/store/relval/CMSSW_3_1_1/RelValZMM/GEN-SIM-RECO/STARTUP31X_V1-v2/0002/46AA6A11-D46B-DE11-A614-001D09F25438.root',
## '/store/relval/CMSSW_3_1_1/RelValZMM/GEN-SIM-RECO/STARTUP31X_V1-v2/0002/443BC1DD-CC6B-DE11-804C-000423D98EC4.root'
# '/store/relval/CMSSW_3_1_1/RelValWE/GEN-SIM-RECO/STARTUP31X_V1-v2/0003/08DBA390-F66B-DE11-A7EC-0030487A3C9A.root',
# '/store/relval/CMSSW_3_1_1/RelValWE/GEN-SIM-RECO/STARTUP31X_V1-v2/0002/88B35291-C16B-DE11-B9AB-000423D98F98.root',
# '/store/relval/CMSSW_3_1_1/RelValWE/GEN-SIM-RECO/STARTUP31X_V1-v2/0002/7A84CA74-BC6B-DE11-B2E1-000423D6CA6E.root',
# '/store/relval/CMSSW_3_1_1/RelValWE/GEN-SIM-RECO/STARTUP31X_V1-v2/0002/50D84AA9-C46B-DE11-8209-000423D98BC4.root',
# '/store/relval/CMSSW_3_1_1/RelValWE/GEN-SIM-RECO/STARTUP31X_V1-v2/0002/1E5726C8-E16B-DE11-A98B-000423D99AAE.root',
## '/store/relval/CMSSW_3_1_1/RelValWM/GEN-SIM-RECO/STARTUP31X_V1-v2/0003/8AC3E97D-EF6B-DE11-ADBA-001D09F29619.root',
## '/store/relval/CMSSW_3_1_1/RelValWM/GEN-SIM-RECO/STARTUP31X_V1-v2/0002/EA593FE4-E26B-DE11-8173-001D09F2438A.root',
## '/store/relval/CMSSW_3_1_1/RelValWM/GEN-SIM-RECO/STARTUP31X_V1-v2/0002/9270F55B-E26B-DE11-994E-001D09F2AF1E.root',
## '/store/relval/CMSSW_3_1_1/RelValWM/GEN-SIM-RECO/STARTUP31X_V1-v2/0002/8E5D0675-E36B-DE11-8F71-001D09F242EF.root'

# 'file:/data4/Wmunu-Summer09-MC_31X_V2_preproduction_311-v1/0011/F4C91F77-766D-DE11-981F-00163E1124E7.root'

# MinBias real data!
# '/store/data/BeamCommissioning09/MinimumBias/RECO/v2/000/124/196/3C9489A4-B5E8-DE11-A475-001D09F2A465.root',
#'/store/data/BeamCommissioning09/MinimumBias/RECO/v2/000/124/188/34641279-B5E8-DE11-A475-001D09F2910A.root',

# Real data, run 124120
'/store/data/BeamCommissioning09/MinimumBias/RECO/v2/000/124/120/F08F782B-77E8-DE11-B1FC-0019B9F72BFF.root',
'/store/data/BeamCommissioning09/MinimumBias/RECO/v2/000/124/120/EE9412FD-80E8-DE11-9FDD-000423D94908.root',
'/store/data/BeamCommissioning09/MinimumBias/RECO/v2/000/124/120/7C9741F5-78E8-DE11-8E69-001D09F2AD84.root',
'/store/data/BeamCommissioning09/MinimumBias/RECO/v2/000/124/120/44255E49-80E8-DE11-B6DB-000423D991F0.root',
'/store/data/BeamCommissioning09/MinimumBias/RECO/v2/000/124/120/3C02A810-7CE8-DE11-BB51-003048D375AA.root',
'/store/data/BeamCommissioning09/MinimumBias/RECO/v2/000/124/120/04F15557-7BE8-DE11-8A41-003048D2C1C4.root',
'/store/data/BeamCommissioning09/MinimumBias/RECO/v2/000/124/120/04092AB7-75E8-DE11-958F-000423D98750.root'
# Real data
#'/store/data/Run2012B/SingleElectron/AOD/22Jan2013-v1/30000/FE93DA20-837E-E211-8A41-002481E73676.root'
# 'file:12251709-D77E-E211-96C8-003048F118FE.root' # data
# , 'file:5072427B-407E-E211-88EF-003048F237FE.root' #data
# 'file:DEC5AD62-280C-E311-89A7-002618FDA216.root'
# 'file:/tmp/andriusj/ZeePU.root'
'file:/tmp/andriusj/Data2012D_DoubleEl.root'
)
)

runOnData = False

#process.dqmEnv.subSystemFolder = 'SMP'
process.dqmSaver.producer = 'DQM'
process.dqmSaver.workflow = cms.untracked.string('/Physics/EWK/Elec')
process.dqmSaver.convention = 'Offline'
process.dqmSaver.saveByRun = cms.untracked.int32(-1)
process.dqmSaver.saveAtJobEnd =cms.untracked.bool(True)
process.dqmSaver.forceRunNumber = cms.untracked.int32(1)

if runOnData:
process.dqmSaver.saveByRun = cms.untracked.int32(1)
process.dqmSaver.saveAtJobEnd =cms.untracked.bool(False)
process.dqmSaver.forceRunNumber = cms.untracked.int32(-1)


)
)
process.MessageLogger = cms.Service("MessageLogger",
destinations = cms.untracked.vstring('detailedInfo'),
detailedInfo = cms.untracked.PSet(
default = cms.untracked.PSet( limit = cms.untracked.int32(10) ),
threshold = cms.untracked.string('INFO')
default = cms.untracked.PSet( limit = cms.untracked.int32(100) ),
threshold = cms.untracked.string('DEBUG')
#threshold = cms.untracked.string('INFO')
#threshold = cms.untracked.string('ERROR')
)
)
Expand Down