11 edm::LogInfo(
"SUSY_HLT_DoubleMuon_Hadronic") <<
"Constructor SUSY_HLT_DoubleMuon_Hadronic::SUSY_HLT_DoubleMuon_Hadronic " << std::endl;
29 edm::LogInfo(
"SUSY_HLT_DoubleMuon_Hadronic") <<
"Destructor SUSY_HLT_DoubleMuon_Hadronic::~SUSY_HLT_DoubleMuon_Hadronic " << std::endl;
38 edm::LogError(
"SUSY_HLT_DoubleMuon_Hadronic") <<
"Initialization of HLTConfigProvider failed!!";
42 bool pathFound =
false;
44 for(
size_t j = 0;
j <allTrigNames.size(); ++
j) {
51 LogDebug(
"SUSY_HLT_DoubleMuon_Hadronic") <<
"Path not found" <<
"\n";
58 edm::LogInfo(
"SUSY_HLT_DoubleMuon_Hadronic") <<
"SUSY_HLT_DoubleMuon_Hadronic::beginRun" << std::endl;
63 edm::LogInfo(
"SUSY_HLT_DoubleMuon_Hadronic") <<
"SUSY_HLT_DoubleMuon_Hadronic::bookHistograms" << std::endl;
71 edm::LogInfo(
"SUSY_HLT_DoubleMuon_Hadronic") <<
"SUSY_HLT_DoubleMuon_Hadronic::beginLuminosityBlock" << std::endl;
77 edm::LogInfo(
"SUSY_HLT_DoubleMuon_Hadronic") <<
"SUSY_HLT_DoubleMuon_Hadronic::analyze" << std::endl;
84 if ( !pfJetCollection.
isValid() ){
85 edm::LogError (
"SUSY_HLT_DoubleMuon_Hadronic") <<
"invalid collection: PFJets" <<
"\n";
90 if ( !caloJetCollection.
isValid() ){
91 edm::LogError (
"SUSY_HLT_DoubleMuon_Hadronic") <<
"invalid collection: CaloJets" <<
"\n";
100 if ( !MuonCollection.
isValid() ){
101 edm::LogError (
"SUSY_HLT_DoubleMuon_Hadronic") <<
"invalid collection: Muons " <<
"\n";
112 edm::LogError (
"SUSY_HLT_DoubleMuon_Hadronic") <<
"invalid collection: TriggerResults" <<
"\n";
117 if(!triggerSummary.
isValid()) {
118 edm::LogError (
"SUSY_HLT_DoubleMuon_Hadronic") <<
"invalid collection: TriggerSummary" <<
"\n";
123 std::vector<float> ptMuon, etaMuon, phiMuon;
124 size_t filterIndex = triggerSummary->filterIndex(
triggerFilter_ );
126 if( !(filterIndex >= triggerSummary->sizeFilters()) ){
128 for(
size_t j = 0;
j < keys.size(); ++
j ){
130 if(fabs(foundObject.
id()) == 13){
134 ptMuon.push_back(foundObject.
pt());
135 etaMuon.push_back(foundObject.
eta());
136 phiMuon.push_back(foundObject.
phi());
139 if (ptMuon.size()>=2) {
152 bool hasFired =
false;
153 bool hasFiredAuxiliaryForMuonLeg =
false;
154 bool hasFiredAuxiliaryForHadronicLeg =
false;
156 unsigned int numTriggers = trigNames.
size();
157 for(
unsigned int hltIndex=0; hltIndex<numTriggers; ++hltIndex ){
158 if (trigNames.
triggerName(hltIndex).find(
triggerPath_) != std::string::npos && hltresults->wasrun(hltIndex) && hltresults->accept(hltIndex)) hasFired =
true;
159 if (trigNames.
triggerName(hltIndex).find(
triggerPathAuxiliaryForMuon_) != std::string::npos && hltresults->wasrun(hltIndex) && hltresults->accept(hltIndex)) hasFiredAuxiliaryForMuonLeg =
true;
165 if(hasFiredAuxiliaryForMuonLeg || hasFiredAuxiliaryForHadronicLeg) {
168 int indexOfMatchedMuon[2] = {-1};
169 int matchedCounter = 0;
170 int offlineCounter = 0;
171 for(reco::MuonCollection::const_iterator
muon = MuonCollection->begin(); (
muon != MuonCollection->end() && matchedCounter < 2) ; ++
muon) {
172 for(
size_t off_i = 0; off_i < ptMuon.size(); ++off_i) {
173 if(
sqrt((
muon->phi()-phiMuon[off_i])*(
muon->phi()-phiMuon[off_i]) + (
muon->eta()-etaMuon[off_i])*(
muon->eta()-etaMuon[off_i])) < 0.5) {
174 indexOfMatchedMuon[matchedCounter] = offlineCounter;
184 for (reco::PFJetCollection::const_iterator i_pfjet = pfJetCollection->begin(); i_pfjet != pfJetCollection->end(); ++i_pfjet){
186 if (fabs(i_pfjet->eta()) >
etaThrJet_)
continue;
187 pfHT += i_pfjet->pt();
189 for (reco::CaloJetCollection::const_iterator i_calojet = caloJetCollection->begin(); i_calojet != caloJetCollection->end(); ++i_calojet){
190 if (i_calojet->pt() <
ptThrJet_)
continue;
191 if (fabs(i_calojet->eta()) >
etaThrJet_)
continue;
192 caloHT += i_calojet->pt();
195 if(hasFiredAuxiliaryForMuonLeg && MuonCollection->size()>1) {
196 if(hasFired && indexOfMatchedMuon[1] >= 0) {
201 if(hasFiredAuxiliaryForHadronicLeg) {
213 edm::LogInfo(
"SUSY_HLT_DoubleMuon_Hadronic") <<
"SUSY_HLT_DoubleMuon_Hadronic::endLuminosityBlock" << std::endl;
219 edm::LogInfo(
"SUSY_HLT_DoubleMuon_Hadronic") <<
"SUSY_HLT_DoubleMuon_Hadronic::endRun" << std::endl;
T getParameter(std::string const &) const
MonitorElement * h_pfHTTurnOn_num
T getUntrackedParameter(std::string const &, T const &) const
MonitorElement * h_MuTurnOn_den
virtual edm::TriggerNames const & triggerNames(edm::TriggerResults const &triggerResults) const
ROOT::Math::LorentzVector< ROOT::Math::PtEtaPhiM4D< double > > PtEtaPhiMLorentzVectorD
Lorentz vector with cartesian internal representation.
SUSY_HLT_DoubleMuon_Hadronic(const edm::ParameterSet &ps)
void bookHistos(DQMStore::IBooker &)
MonitorElement * h_triggerMuPhi
std::string triggerPathAuxiliaryForHadronic_
edm::EDGetTokenT< trigger::TriggerEvent > theTrigSummary_
void beginLuminosityBlock(edm::LuminosityBlock const &lumi, edm::EventSetup const &eSetup)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
virtual ~SUSY_HLT_DoubleMuon_Hadronic()
void dqmBeginRun(edm::Run const &, edm::EventSetup const &) override
#define DEFINE_FWK_MODULE(type)
MonitorElement * h_MuTurnOn_num
const std::vector< std::string > & triggerNames() const
names of trigger paths
edm::EDGetTokenT< reco::PFJetCollection > thePfJetCollection_
Strings::size_type size() const
std::string triggerPathAuxiliaryForMuon_
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
std::vector< Muon > MuonCollection
collection of Muon objects
Single trigger physics object (e.g., an isolated muon)
edm::InputTag triggerFilter_
edm::EDGetTokenT< edm::TriggerResults > triggerResults_
void endLuminosityBlock(edm::LuminosityBlock const &lumi, edm::EventSetup const &eSetup)
edm::EDGetTokenT< reco::MuonCollection > theMuonCollection_
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
MonitorElement * book1D(Args &&...args)
MonitorElement * h_triggerMuPt
MonitorElement * h_triggerDoubleMuMass
std::vector< TriggerObject > TriggerObjectCollection
collection of trigger physics objects (e.g., all isolated muons)
static const char *const trigNames[]
void setCurrentFolder(const std::string &fullpath)
void endRun(edm::Run const &run, edm::EventSetup const &eSetup)
MonitorElement * h_pfHTTurnOn_den
std::string const & triggerName(unsigned int index) const
std::vector< size_type > Keys
bool init(const edm::Run &iRun, const edm::EventSetup &iSetup, const std::string &processName, bool &changed)
d'tor
HLTConfigProvider fHltConfig
edm::EDGetTokenT< reco::CaloJetCollection > theCaloJetCollection_
void analyze(edm::Event const &e, edm::EventSetup const &eSetup)
MonitorElement * h_triggerMuEta