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

Hlt dqm take 3 #19779

Merged
merged 87 commits into from Jul 18, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
87 commits
Select commit Hold shift + click to select a range
ba0b5c3
tnp, new variables and paths
May 29, 2017
d000186
added few comments, made some variables configurable
May 31, 2017
9884ecf
Merge branch 'master' into from-CMSSW_9_2_0
anigamova May 31, 2017
9e0566a
corrected the paths names
anigamova Jun 1, 2017
26651c8
Update BPHMonitor_cfi.py
anigamova Jun 1, 2017
de04200
paths names correction
Jun 1, 2017
ce42250
singleMu seeds corrected
Jun 1, 2017
9923022
Merge pull request #2 from anigamova/new_branch
anigamova Jun 1, 2017
a062d25
higgs hlt dqm 92X
sroychow Jun 2, 2017
6965d43
updates addressing comments received from PR
sroychow Jun 3, 2017
0092743
new commit
Jun 7, 2017
4d3a42e
Merge pull request #3 from anigamova/new_branch
anigamova Jun 7, 2017
90a5f6c
fixed muoselection name
Jun 7, 2017
2467879
Merge pull request #4 from anigamova/new_branch
anigamova Jun 7, 2017
6b96dce
fixed trigger name
Jun 7, 2017
19f5f95
Merge pull request #5 from anigamova/new_branch
anigamova Jun 7, 2017
f794a42
switched off matching for L3 TnP
Jun 7, 2017
53ecc3c
corrected pt cut
Jun 7, 2017
0feedf0
Merge pull request #7 from anigamova/new_branch
anigamova Jun 7, 2017
f169e3a
updates to directory for cross-triggers;adding efficiency for all thr…
sroychow Jun 9, 2017
33c0800
Update Prompt DQM for HLT Jet
physicist87 Jun 9, 2017
ad4178b
Update Prompt DQM for HLT Jet
physicist87 Jun 9, 2017
f81cdb6
eta binning changes;adding monitors for paths with dz filters
sroychow Jun 12, 2017
fcb9add
adding monitor for TripleMu_10_5_5_DZ
sroychow Jun 12, 2017
b9f19ea
Create BPHMonitor_cfi.py
anigamova Jun 12, 2017
bb3d6ae
added new paths for reference method
Jun 12, 2017
ee1b76b
Merge pull request #8 from anigamova/new_branch
anigamova Jun 12, 2017
af1e918
using triggerSummary instead of TriggerResults
Jun 13, 2017
8b1d7ae
Merge pull request #9 from anigamova/new_branch
anigamova Jun 13, 2017
11fe0e0
updates to take into account changes made in Top PR
sroychow Jun 14, 2017
0710087
Update To use edm::View<reco::Jet>
physicist87 Jun 15, 2017
5eeaf13
Update To use edm::View<reco::Jet>
physicist87 Jun 15, 2017
97f4f26
Ratio Plot(HEP17/HEM17) for eta phi pT
physicist87 Jun 15, 2017
aaa57c0
To avoid the case of non ak4pfjet, bug fix
physicist87 Jun 21, 2017
e542ae9
solved the problem with InputTag
Jul 2, 2017
956a502
Merge pull request #10 from anigamova/new_branch
anigamova Jul 2, 2017
e6a6fe0
fix uncertainty for simpleratio in DQMGenericClient
physicist87 Jul 3, 2017
f5ce0b7
There is no need to use JetPomptDQMPostProcessor, because we will use…
physicist87 Jul 3, 2017
933b1cf
Update JetMETPromptMonitoring_Client_cff, To use DQMGenericClient ins…
physicist87 Jul 3, 2017
42669f2
bug fix
sroychow Jul 3, 2017
e53ce31
Adding revised version of lepton(s) + HT trigger DQM
Jul 5, 2017
6b53348
Removing typo
Jul 6, 2017
4c44fd3
Incorporating various review suggestions: electron VID, move rest of …
Jul 7, 2017
89a6855
the ME initialization into Struct define and modify nbins unsigned in…
physicist87 Jul 7, 2017
31443e7
the ME initialization into Struct define and modify nbins unsigned in…
physicist87 Jul 7, 2017
ed5088e
nbins changed into unsigned int
physicist87 Jul 7, 2017
055628e
nbins changed into unsigned int
physicist87 Jul 7, 2017
42ed5a7
Making muon ID configurable
Jul 7, 2017
9183415
corrected the name of JpsiTrkTrk path
anigamova Jul 10, 2017
ea5db57
corrected a typo in the path naming;
anigamova Jul 10, 2017
137390f
added HTmonitoring, HT plots inside METmonitor, added in ExoClient
sudhaahuja May 23, 2017
20dfcad
edited METmonitor with HT plots
sudhaahuja May 23, 2017
eb6fde8
METmonitor and HTmonitor updated
sudhaahuja May 26, 2017
c15ffda
updates after comment on PR
sudhaahuja May 31, 2017
97ba60c
updated hltpaths in HTmonitor & other changes
sudhaahuja Jun 6, 2017
689b17e
small correction in HT/MET clients
sudhaahuja Jun 12, 2017
7c91b9c
Create ExoticaMonitoring_Client_cff.py
sudhaahuja Jun 12, 2017
9292ad2
B2G monitor added from PR19214 & small changes HT/MET monitor
sudhaahuja Jun 15, 2017
323e954
Code review updates
rappoccio Jun 16, 2017
846afb3
Commenting out JME-dependent modules until it is integrated
rappoccio Jun 16, 2017
794337d
A few edits and corrections
rappoccio Jun 16, 2017
ce39d4a
Changing EDAnalyzer to EDProducer
rappoccio Jun 16, 2017
6ffd645
Suggestions from review implemented
rappoccio Jul 10, 2017
e9ee141
Update BPHMonitor_cff.py
anigamova Jul 10, 2017
a73aee9
Missed one configuration change
rappoccio Jul 10, 2017
9eff198
Switch to lower case function name
Jul 11, 2017
9db2554
Merge pull request #19178 from physicist87/hltjetmet-promptqdm-updateV2
fwyzard Jul 11, 2017
af990cd
Merge pull request #18994 from anigamova/from-CMSSW_9_2_0
fwyzard Jul 11, 2017
edf69d2
Merge pull request #19293 from rappoccio/EXOB2G_HLTMON
fwyzard Jul 11, 2017
f7b3039
fix trivial compilation warnings and errors
fwyzard Jul 11, 2017
ec1810a
Merged HLT_DQM_for_93x_part1 from repository fwyzard
physicist87 Jul 11, 2017
10d4efb
To update Pure MET Trigger, modified METMonitor_cff.py
physicist87 Jul 11, 2017
2ce204c
Add missed Pure METTrigger
physicist87 Jul 12, 2017
c6f3814
remove multiple definition of the same modules
fwyzard Jul 12, 2017
4184467
Merge pull request #19689 from physicist87/Pure-METTrigger-93xV4
fwyzard Jul 12, 2017
156c30e
cleaned up by clang-format 4.0.0
fwyzard Jul 13, 2017
c282bf9
cleaned up by clang-tidy 4.0.0 modernize checks
fwyzard Jul 13, 2017
7927adb
compute once and cache the invariant mass of the di-muons
fwyzard Jul 13, 2017
aad2677
rename the member variables to match the CMS coding rules
fwyzard Jul 13, 2017
3dd761e
Merge branch CMSSW_9_3_X (as of CMSSW_9_3_0_pre2)
fwyzard Jul 13, 2017
9b110bf
Merge pull request #19078 from sroychow/higgsHLT92X
fwyzard Jul 13, 2017
5d3a871
Sync with CMSSW_9_3_X
fwyzard Jul 13, 2017
2d500f5
Merge pull request #19577 from heller3:LepHTMonitoring
fwyzard Jul 13, 2017
3baa036
clean up LepHTMonitor
fwyzard Jul 13, 2017
9219a2c
Merged refs/pull/19731/head from repository cms-sw
davidlange6 Jul 17, 2017
390cbab
revert to f2f2cd03cca559c87c833b3e2dac4857aced59d1
davidlange6 Jul 17, 2017
fd0158d
cleaning up things I missed somehow
davidlange6 Jul 17, 2017
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
1 change: 1 addition & 0 deletions DQMOffline/Trigger/plugins/BuildFile.xml
Expand Up @@ -20,6 +20,7 @@
<use name="DQMServices/Core"/>
<use name="CommonTools/Utils"/>
<use name="CommonTools/TriggerUtils"/>
<use name="DataFormats/VertexReco"/>
<use name="root"/>
<use name="roofit"/>
<use name="boost"/>
Expand Down
285 changes: 285 additions & 0 deletions DQMOffline/Trigger/plugins/HTMonitor.cc
@@ -0,0 +1,285 @@
#include "DQMOffline/Trigger/plugins/HTMonitor.h"

#include "CommonTools/TriggerUtils/interface/GenericTriggerEventFlag.h"

#include "DataFormats/Math/interface/deltaPhi.h"

// -----------------------------
// constructors and destructor
// -----------------------------

HTMonitor::HTMonitor( const edm::ParameterSet& iConfig ) :
folderName_ ( iConfig.getParameter<std::string>("FolderName") )
, metToken_ ( consumes<reco::PFMETCollection> (iConfig.getParameter<edm::InputTag>("met") ) )
, jetToken_ ( mayConsume<reco::PFJetCollection> (iConfig.getParameter<edm::InputTag>("jets") ) )
, eleToken_ ( mayConsume<reco::GsfElectronCollection>(iConfig.getParameter<edm::InputTag>("electrons") ) )
, muoToken_ ( mayConsume<reco::MuonCollection> (iConfig.getParameter<edm::InputTag>("muons") ) )
, vtxToken_ ( mayConsume<reco::VertexCollection> (iConfig.getParameter<edm::InputTag>("vertices") ) )
, ht_variable_binning_ ( iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<std::vector<double> >("htBinning") )
, ht_binning_ ( getHistoPSet (iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet> ("htPSet") ) )
, ls_binning_ ( getHistoLSPSet (iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet> ("lsPSet") ) )
, num_genTriggerEventFlag_(new GenericTriggerEventFlag(iConfig.getParameter<edm::ParameterSet>("numGenericTriggerEventPSet"),consumesCollector(), *this))
, den_genTriggerEventFlag_(new GenericTriggerEventFlag(iConfig.getParameter<edm::ParameterSet>("denGenericTriggerEventPSet"),consumesCollector(), *this))
, metSelection_ ( iConfig.getParameter<std::string>("metSelection") )
, jetSelection_ ( iConfig.getParameter<std::string>("jetSelection") )
, eleSelection_ ( iConfig.getParameter<std::string>("eleSelection") )
, muoSelection_ ( iConfig.getParameter<std::string>("muoSelection") )
, jetSelection_HT_ ( iConfig.getParameter<std::string>("jetSelection_HT") )
, njets_ ( iConfig.getParameter<unsigned>("njets" ) )
, nelectrons_ ( iConfig.getParameter<unsigned>("nelectrons" ) )
, nmuons_ ( iConfig.getParameter<unsigned>("nmuons" ) )
{
}

HTMonitor::~HTMonitor()
{
}

HTMonitor::MEHTbinning HTMonitor::getHistoPSet(edm::ParameterSet pset)
{
return HTMonitor::MEHTbinning{
pset.getParameter<unsigned>("nbins"),
pset.getParameter<double>("xmin"),
pset.getParameter<double>("xmax"),
};
}

HTMonitor::MEHTbinning HTMonitor::getHistoLSPSet(edm::ParameterSet pset)
{
return HTMonitor::MEHTbinning{
pset.getParameter<unsigned>("nbins"),
0.,
double(pset.getParameter<unsigned>("nbins"))
};
}

void HTMonitor::setHTitle(HTME& me, std::string titleX, std::string titleY)
{
me.numerator->setAxisTitle(titleX,1);
me.numerator->setAxisTitle(titleY,2);
me.denominator->setAxisTitle(titleX,1);
me.denominator->setAxisTitle(titleY,2);

}

void HTMonitor::bookME(DQMStore::IBooker &ibooker, HTME& me, const std::string& histname, const std::string& histtitle, int nbins, double min, double max)
{
me.numerator = ibooker.book1D(histname+"_numerator", histtitle+" (numerator)", nbins, min, max);
me.denominator = ibooker.book1D(histname+"_denominator", histtitle+" (denominator)", nbins, min, max);
}
void HTMonitor::bookME(DQMStore::IBooker &ibooker, HTME& me, const std::string& histname, const std::string& histtitle, const std::vector<double>& binning)
{
int nbins = binning.size()-1;
std::vector<float> fbinning(binning.begin(),binning.end());
float* arr = &fbinning[0];
me.numerator = ibooker.book1D(histname+"_numerator", histtitle+" (numerator)", nbins, arr);
me.denominator = ibooker.book1D(histname+"_denominator", histtitle+" (denominator)", nbins, arr);
}
void HTMonitor::bookME(DQMStore::IBooker &ibooker, HTME& me, const std::string& histname, const std::string& histtitle, int nbinsX, double xmin, double xmax, double ymin, double ymax)
{
me.numerator = ibooker.bookProfile(histname+"_numerator", histtitle+" (numerator)", nbinsX, xmin, xmax, ymin, ymax);
me.denominator = ibooker.bookProfile(histname+"_denominator", histtitle+" (denominator)", nbinsX, xmin, xmax, ymin, ymax);
}
void HTMonitor::bookME(DQMStore::IBooker &ibooker, HTME& me, const std::string& histname, const std::string& histtitle, int nbinsX, double xmin, double xmax, int nbinsY, double ymin, double ymax)
{
me.numerator = ibooker.book2D(histname+"_numerator", histtitle+" (numerator)", nbinsX, xmin, xmax, nbinsY, ymin, ymax);
me.denominator = ibooker.book2D(histname+"_denominator", histtitle+" (denominator)", nbinsX, xmin, xmax, nbinsY, ymin, ymax);
}
void HTMonitor::bookME(DQMStore::IBooker &ibooker, HTME& me, const std::string& histname, const std::string& histtitle, const std::vector<double>& binningX, const std::vector<double>& binningY)
{
int nbinsX = binningX.size()-1;
std::vector<float> fbinningX(binningX.begin(),binningX.end());
float* arrX = &fbinningX[0];
int nbinsY = binningY.size()-1;
std::vector<float> fbinningY(binningY.begin(),binningY.end());
float* arrY = &fbinningY[0];

me.numerator = ibooker.book2D(histname+"_numerator", histtitle+" (numerator)", nbinsX, arrX, nbinsY, arrY);
me.denominator = ibooker.book2D(histname+"_denominator", histtitle+" (denominator)", nbinsX, arrX, nbinsY, arrY);
}

void HTMonitor::bookHistograms(DQMStore::IBooker & ibooker,
edm::Run const & iRun,
edm::EventSetup const & iSetup)
{

std::string histname, histtitle;

std::string currentFolder = folderName_ ;
ibooker.setCurrentFolder(currentFolder.c_str());

histname = "ht_variable"; histtitle = "HT";
bookME(ibooker,htME_variableBinning_,histname,histtitle,ht_variable_binning_);
setHTitle(htME_variableBinning_,"HT [GeV]","events / [GeV]");

histname = "htVsLS"; histtitle = "HT vs LS";
bookME(ibooker,htVsLS_,histname,histtitle,ls_binning_.nbins, ls_binning_.xmin, ls_binning_.xmax,ht_binning_.xmin, ht_binning_.xmax);
setHTitle(htVsLS_,"LS","HT [GeV]");

histname = "deltaphi_metjet1"; histtitle = "DPHI_METJ1";
bookME(ibooker,deltaphimetj1ME_,histname,histtitle,phi_binning_.nbins, phi_binning_.xmin, phi_binning_.xmax);
setHTitle(deltaphimetj1ME_,"delta phi (met, j1)","events / 0.1 rad");

histname = "deltaphi_jet1jet2"; histtitle = "DPHI_J1J2";
bookME(ibooker,deltaphij1j2ME_,histname,histtitle,phi_binning_.nbins, phi_binning_.xmin, phi_binning_.xmax);
setHTitle(deltaphij1j2ME_,"delta phi (j1, j2)","events / 0.1 rad");

// Initialize the GenericTriggerEventFlag
if ( num_genTriggerEventFlag_ && num_genTriggerEventFlag_->on() ) num_genTriggerEventFlag_->initRun( iRun, iSetup );
if ( den_genTriggerEventFlag_ && den_genTriggerEventFlag_->on() ) den_genTriggerEventFlag_->initRun( iRun, iSetup );

}

#include "FWCore/Framework/interface/ESHandle.h"
#include "FWCore/Framework/interface/EventSetup.h"
#include "DataFormats/TrackerCommon/interface/TrackerTopology.h"
#include "Geometry/Records/interface/TrackerTopologyRcd.h"
void HTMonitor::analyze(edm::Event const& iEvent, edm::EventSetup const& iSetup) {

// Filter out events if Trigger Filtering is requested
if (den_genTriggerEventFlag_->on() && ! den_genTriggerEventFlag_->accept( iEvent, iSetup) ) return;

edm::Handle<reco::PFMETCollection> metHandle;
iEvent.getByToken( metToken_, metHandle );
reco::PFMET pfmet = metHandle->front();
if ( ! metSelection_( pfmet ) ) return;

float ht = 0.0;

edm::Handle<reco::PFJetCollection> jetHandle; //add a configurable jet collection & jet pt selection
iEvent.getByToken( jetToken_, jetHandle );
std::vector<reco::PFJet> jets;
if ( jetHandle->size() < njets_ ) return;
for ( auto const & j : *jetHandle ) {
if ( jetSelection_( j ) ) {
jets.push_back(j);
}
}
for ( auto const & j : *jetHandle ) {
if ( jetSelection_HT_(j)) ht += j.pt();
}
if ( jets.size() < njets_ ) return;

float deltaPhi_met_j1 = 10.0;
float deltaPhi_j1_j2 = 10.0;

if (jets.size() >= 1) deltaPhi_met_j1 = fabs( deltaPhi( pfmet.phi(), jets[0].phi() ));
if (jets.size() >= 2) deltaPhi_j1_j2 = fabs( deltaPhi( jets[0].phi(), jets[1].phi() ));

edm::Handle<reco::GsfElectronCollection> eleHandle;
iEvent.getByToken( eleToken_, eleHandle );
std::vector<reco::GsfElectron> electrons;
if ( eleHandle->size() < nelectrons_ ) return;
for ( auto const & e : *eleHandle ) {
if ( eleSelection_( e ) ) electrons.push_back(e);
}
if ( electrons.size() < nelectrons_ ) return;

edm::Handle<reco::VertexCollection> vtxHandle;
iEvent.getByToken(vtxToken_, vtxHandle);

reco::Vertex vtx;
for (vector<reco::Vertex>::const_iterator v = vtxHandle->begin(); v != vtxHandle->end(); ++v) {
bool isFake = v->isFake() ;

if (!isFake) {
vtx = *v;
break;
}
}

edm::Handle<reco::MuonCollection> muoHandle;
iEvent.getByToken( muoToken_, muoHandle );
if ( muoHandle->size() < nmuons_ ) return;
std::vector<reco::Muon> muons;
for ( auto const & m : *muoHandle ) {
if ( muoSelection_( m ) && m.isGlobalMuon() && m.isPFMuon() && m.globalTrack()->normalizedChi2() < 10. && m.globalTrack()->hitPattern().numberOfValidMuonHits() > 0 && m.numberOfMatchedStations() > 1 && fabs(m.muonBestTrack()->dxy(vtx.position())) < 0.2 && fabs(m.muonBestTrack()->dz(vtx.position())) < 0.5 && m.innerTrack()->hitPattern().numberOfValidPixelHits() > 0 && m.innerTrack()->hitPattern().trackerLayersWithMeasurement() > 5 ) muons.push_back(m);
}
if ( muons.size() < nmuons_ ) return;

// filling histograms (denominator)
htME_variableBinning_.denominator -> Fill(ht);
deltaphimetj1ME_.denominator -> Fill(deltaPhi_met_j1);
deltaphij1j2ME_.denominator -> Fill(deltaPhi_j1_j2);

int ls = iEvent.id().luminosityBlock();
htVsLS_.denominator -> Fill(ls, ht);

// applying selection for numerator
if (num_genTriggerEventFlag_->on() && ! num_genTriggerEventFlag_->accept( iEvent, iSetup) ) return;

// filling histograms (num_genTriggerEventFlag_)
htME_variableBinning_.numerator -> Fill(ht);
htVsLS_.numerator -> Fill(ls, ht);
deltaphimetj1ME_.numerator -> Fill(deltaPhi_met_j1);
deltaphij1j2ME_.numerator -> Fill(deltaPhi_j1_j2);

}

void HTMonitor::fillHistoPSetDescription(edm::ParameterSetDescription & pset)
{
pset.add<unsigned> ( "nbins");
pset.add<double>( "xmin" );
pset.add<double>( "xmax" );
}

void HTMonitor::fillHistoLSPSetDescription(edm::ParameterSetDescription & pset)
{
pset.add<unsigned> ( "nbins", 2500);
}

void HTMonitor::fillDescriptions(edm::ConfigurationDescriptions & descriptions)
{
edm::ParameterSetDescription desc;
desc.add<std::string> ( "FolderName", "HLT/HT" );

desc.add<edm::InputTag>( "met", edm::InputTag("pfMet") );
desc.add<edm::InputTag>( "jets", edm::InputTag("ak4PFJetsCHS") );
desc.add<edm::InputTag>( "electrons",edm::InputTag("gedGsfElectrons") );
desc.add<edm::InputTag>( "muons", edm::InputTag("muons") );
desc.add<edm::InputTag>( "vertices",edm::InputTag("offlinePrimaryVertices") );
desc.add<std::string>("metSelection", "pt > 0");
desc.add<std::string>("jetSelection", "pt > 0");
desc.add<std::string>("eleSelection", "pt > 0");
desc.add<std::string>("muoSelection", "pt > 0");
desc.add<std::string>("jetSelection_HT", "pt > 30 && eta < 2.5");
desc.add<unsigned>("njets", 0);
desc.add<unsigned>("nelectrons", 0);
desc.add<unsigned>("nmuons", 0);

edm::ParameterSetDescription genericTriggerEventPSet;
genericTriggerEventPSet.add<bool>("andOr");
genericTriggerEventPSet.add<edm::InputTag>("dcsInputTag", edm::InputTag("scalersRawToDigi") );
genericTriggerEventPSet.add<std::vector<int> >("dcsPartitions",{});
genericTriggerEventPSet.add<bool>("andOrDcs", false);
genericTriggerEventPSet.add<bool>("errorReplyDcs", true);
genericTriggerEventPSet.add<std::string>("dbLabel","");
genericTriggerEventPSet.add<bool>("andOrHlt", true);
genericTriggerEventPSet.add<edm::InputTag>("hltInputTag", edm::InputTag("TriggerResults::HLT") );
genericTriggerEventPSet.add<std::vector<std::string> >("hltPaths",{});
genericTriggerEventPSet.add<std::string>("hltDBKey","");
genericTriggerEventPSet.add<bool>("errorReplyHlt",false);
genericTriggerEventPSet.add<unsigned int>("verbosityLevel",1);

desc.add<edm::ParameterSetDescription>("numGenericTriggerEventPSet", genericTriggerEventPSet);
desc.add<edm::ParameterSetDescription>("denGenericTriggerEventPSet", genericTriggerEventPSet);

edm::ParameterSetDescription histoPSet;
edm::ParameterSetDescription htPSet;
fillHistoPSetDescription(htPSet);
histoPSet.add<edm::ParameterSetDescription>("htPSet", htPSet);
std::vector<double> bins = {0.,20.,40.,60.,80.,90.,100.,110.,120.,130.,140.,150.,160.,170.,180.,190.,200.,220.,240.,260.,280.,300.,350.,400.,450.,500.,550.,600.,650.,700.,750.,800.,850.,900.,950.,1000.,1050.,1100.,1200.,1300.,1400.,1500.,2000.,2500.};
histoPSet.add<std::vector<double> >("htBinning", bins);

edm::ParameterSetDescription lsPSet;
fillHistoLSPSetDescription(lsPSet);
histoPSet.add<edm::ParameterSetDescription>("lsPSet", lsPSet);

desc.add<edm::ParameterSetDescription>("histoPSet",histoPSet);

descriptions.add("htMonitoring", desc);
}

// Define this as a plug-in
#include "FWCore/Framework/interface/MakerMacros.h"
DEFINE_FWK_MODULE(HTMonitor);