14 edm::LogInfo(
"SUSY_HLT_Muon_Hadronic") <<
"Constructor SUSY_HLT_Muon_Hadronic::SUSY_HLT_Muon_Hadronic " << std::endl;
37 edm::LogInfo(
"SUSY_HLT_Muon_Hadronic") <<
"Destructor SUSY_HLT_Muon_Hadronic::~SUSY_HLT_Muon_Hadronic " << std::endl;
46 edm::LogError(
"SUSY_HLT_Muon_Hadronic") <<
"Initialization of HLTConfigProvider failed!!";
50 bool pathFound =
false;
52 for(
size_t j = 0;
j <allTrigNames.size(); ++
j) {
59 LogDebug (
"SUSY_HLT_Muon_Hadronic") <<
"Path not found" <<
"\n";
66 edm::LogInfo(
"SUSY_HLT_Muon_Hadronic") <<
"SUSY_HLT_Muon_Hadronic::beginRun" << std::endl;
71 edm::LogInfo(
"SUSY_HLT_Muon_Hadronic") <<
"SUSY_HLT_Muon_Hadronic::bookHistograms" << std::endl;
79 edm::LogInfo(
"SUSY_HLT_Muon_Hadronic") <<
"SUSY_HLT_Muon_Hadronic::beginLuminosityBlock" << std::endl;
85 edm::LogInfo(
"SUSY_HLT_Muon_Hadronic") <<
"SUSY_HLT_Muon_Hadronic::analyze" << std::endl;
93 if ( !pfMETCollection.
isValid() ){
94 edm::LogError (
"SUSY_HLT_Muon_Hadronic") <<
"invalid collection: PFMET" <<
"\n";
102 if ( !pfJetCollection.
isValid() ){
103 edm::LogError (
"SUSY_HLT_Muon_Hadronic") <<
"invalid collection: PFJets" <<
"\n";
108 if ( !caloJetCollection.
isValid() ){
109 edm::LogError (
"SUSY_HLT_Muon_Hadronic") <<
"invalid collection: CaloJets" <<
"\n";
118 if ( !MuonCollection.
isValid() ){
119 edm::LogError (
"SUSY_HLT_Mu_Hadronic") <<
"invalid collection: Muons " <<
"\n";
130 edm::LogError (
"SUSY_HLT_Muon_Hadronic") <<
"invalid collection: TriggerResults" <<
"\n";
135 if(!triggerSummary.
isValid()) {
136 edm::LogError (
"SUSY_HLT_Muon_Hadronic") <<
"invalid collection: TriggerSummary" <<
"\n";
142 std::vector<Lepton> onlineMuons;
143 size_t filterIndex = triggerSummary->filterIndex(
triggerFilter_ );
145 if( !(filterIndex >= triggerSummary->sizeFilters()) ){
147 for(
size_t j = 0;
j < keys.size(); ++
j ){
149 if(fabs(foundObject.
id()) == 13){
153 Lepton theMuon; theMuon.
pt = foundObject.
pt(); theMuon.
phi = foundObject.
phi(); theMuon.
eta = foundObject.
eta();
154 onlineMuons.push_back(theMuon);
160 bool hasFired =
false;
161 bool hasFiredAuxiliaryForMuonLeg =
false;
162 bool hasFiredAuxiliaryForHadronicLeg =
false;
164 unsigned int numTriggers = trigNames.
size();
165 for(
unsigned int hltIndex=0; hltIndex<numTriggers; ++hltIndex ){
166 if (trigNames.
triggerName(hltIndex).find(
triggerPath_) != std::string::npos && hltresults->wasrun(hltIndex) && hltresults->accept(hltIndex)) hasFired =
true;
167 if (trigNames.
triggerName(hltIndex).find(
triggerPathAuxiliaryForMuon_) != std::string::npos && hltresults->wasrun(hltIndex) && hltresults->accept(hltIndex)) hasFiredAuxiliaryForMuonLeg =
true;
173 if(hasFiredAuxiliaryForMuonLeg || hasFiredAuxiliaryForHadronicLeg || !e.
isRealData()) {
175 std::vector<Lepton> offlineMuons;
176 for(reco::MuonCollection::const_iterator
muon = MuonCollection->begin();
muon != MuonCollection->end() ; ++
muon) {
179 offlineMuons.push_back(theMuon);
195 int indexOfMatchedMuon = -1;
196 int offlineCounter = 0;
197 for(std::vector<Lepton>::iterator offline_muon = offlineMuons.begin(); (offline_muon != offlineMuons.end() && indexOfMatchedMuon == -1); offline_muon++) {
198 for(std::vector<Lepton>::iterator online_muon = onlineMuons.begin(); online_muon != onlineMuons.end(); online_muon++) {
199 if(
sqrt( (offline_muon->phi-online_muon->phi)*(offline_muon->phi-online_muon->phi) +
200 (offline_muon->eta-online_muon->eta)*(offline_muon->eta-online_muon->eta)) < 0.5) {
201 indexOfMatchedMuon = offlineCounter;
210 for (reco::PFJetCollection::const_iterator i_pfjet = pfJetCollection->begin(); i_pfjet != pfJetCollection->end(); ++i_pfjet){
212 if (fabs(i_pfjet->eta()) >
etaThrJet_)
continue;
213 pfHT += i_pfjet->pt();
215 for (reco::CaloJetCollection::const_iterator i_calojet = caloJetCollection->begin(); i_calojet != caloJetCollection->end(); ++i_calojet){
216 if (i_calojet->pt() <
ptThrJet_)
continue;
217 if (fabs(i_calojet->eta()) >
etaThrJet_)
continue;
218 caloHT += i_calojet->pt();
222 if(hasFired && indexOfMatchedMuon >= 0) {
236 if((hasFiredAuxiliaryForHadronicLeg || !e.
isRealData()) && indexOfMatchedMuon >= 0 && offlineMuons.at(indexOfMatchedMuon).pt >
ptMuonOffline_ && pfMETCollection->begin()->et() >
METOffline_) {
248 edm::LogInfo(
"SUSY_HLT_Muon_Hadronic") <<
"SUSY_HLT_Muon_Hadronic::endLuminosityBlock" << std::endl;
254 edm::LogInfo(
"SUSY_HLT_Muon_Hadronic") <<
"SUSY_HLT_Muon_Hadronic::endRun" << std::endl;
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
void endRun(edm::Run const &run, edm::EventSetup const &eSetup)
virtual edm::TriggerNames const & triggerNames(edm::TriggerResults const &triggerResults) const
void dqmBeginRun(edm::Run const &, edm::EventSetup const &) override
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
void analyze(edm::Event const &e, edm::EventSetup const &eSetup)
edm::EDGetTokenT< trigger::TriggerEvent > theTrigSummary_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
#define DEFINE_FWK_MODULE(type)
const std::vector< std::string > & triggerNames() const
names of trigger paths
edm::InputTag triggerFilter_
std::string triggerPathAuxiliaryForHadronic_
Strings::size_type size() const
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
MonitorElement * h_MuTurnOn_den
std::vector< Muon > MuonCollection
collection of Muon objects
MonitorElement * h_triggerMuEta
edm::EDGetTokenT< reco::PFJetCollection > thePfJetCollection_
Single trigger physics object (e.g., an isolated muon)
std::string triggerPathAuxiliaryForMuon_
MonitorElement * h_triggerMuPt
edm::EDGetTokenT< reco::CaloJetCollection > theCaloJetCollection_
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
MonitorElement * h_pfMetTurnOn_num
MonitorElement * h_triggerMuPhi
MonitorElement * book1D(Args &&...args)
HLTConfigProvider fHltConfig
MonitorElement * h_pfHTTurnOn_den
void beginLuminosityBlock(edm::LuminosityBlock const &lumi, edm::EventSetup const &eSetup)
edm::EDGetTokenT< edm::TriggerResults > triggerResults_
edm::EDGetTokenT< reco::MuonCollection > theMuonCollection_
std::vector< TriggerObject > TriggerObjectCollection
collection of trigger physics objects (e.g., all isolated muons)
static const char *const trigNames[]
void endLuminosityBlock(edm::LuminosityBlock const &lumi, edm::EventSetup const &eSetup)
void setCurrentFolder(const std::string &fullpath)
std::string const & triggerName(unsigned int index) const
edm::EDGetTokenT< reco::PFMETCollection > thePfMETCollection_
std::vector< size_type > Keys
MonitorElement * h_pfHTTurnOn_num
bool init(const edm::Run &iRun, const edm::EventSetup &iSetup, const std::string &processName, bool &changed)
d'tor
virtual ~SUSY_HLT_Muon_Hadronic()
MonitorElement * h_MuTurnOn_num
SUSY_HLT_Muon_Hadronic(const edm::ParameterSet &ps)
void bookHistos(DQMStore::IBooker &)
MonitorElement * h_pfMetTurnOn_den
bool comparePt(Lepton a, Lepton b)