CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
MuTriggerAnalyzer Class Reference
Inheritance diagram for MuTriggerAnalyzer:
edm::EDAnalyzer edm::EDConsumerBase

Public Member Functions

 MuTriggerAnalyzer (const edm::ParameterSet &pset)
 
- Public Member Functions inherited from edm::EDAnalyzer
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzer ()
 
SerialTaskQueueglobalLuminosityBlocksQueue ()
 
SerialTaskQueueglobalRunsQueue ()
 
ModuleDescription const & moduleDescription () const
 
std::string workerType () const
 
 ~EDAnalyzer () override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Member Functions

void analyze (const edm::Event &event, const edm::EventSetup &setup) override
 
void endJob () override
 
bool IsMuMatchedToHLTMu (const reco::Muon &, std::vector< reco::Particle > &, double, double)
 

Private Attributes

TH1D * deltaPtOverPt_
 
TH1D * deltaR_
 
double etaMuCut_
 
edm::Handle< trigger::TriggerEventhandleTriggerEvent_
 
std::string hltPath_
 
TH1D * hTrigMuonPtDenS_
 
TH1D * hTrigMuonPtNumS_
 
std::string L3FilterName_
 
double maxDeltaR_
 
double maxDPtRel_
 
edm::EDGetTokenT< View< Muon > > muonToken_
 
const int nbins_
 
const double ptMax_
 
double ptMuCut_
 
edm::InputTag trigEvTag_
 
edm::EDGetTokenT< trigger::TriggerEventtrigEvToken_
 
edm::Handle< edm::TriggerResultstriggerResults_
 
edm::TriggerNames const * trigNames_
 
edm::EDGetTokenT< TriggerResultstrigToken_
 

Additional Inherited Members

- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::EDAnalyzer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
static bool wantsGlobalLuminosityBlocks ()
 
static bool wantsGlobalRuns ()
 
static bool wantsStreamLuminosityBlocks ()
 
static bool wantsStreamRuns ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Definition at line 48 of file MuTriggerAnalyzer.cc.

Constructor & Destructor Documentation

MuTriggerAnalyzer::MuTriggerAnalyzer ( const edm::ParameterSet pset)

Definition at line 111 of file MuTriggerAnalyzer.cc.

References deltaPtOverPt_, deltaR_, hTrigMuonPtDenS_, hTrigMuonPtNumS_, TFileService::make(), maxDeltaR_, maxDPtRel_, nbins_, and ptMax_.

112  : trigToken_(consumes<TriggerResults>(cfg.getParameter<edm::InputTag>("TrigTag"))),
113  trigEvTag_(cfg.getParameter<edm::InputTag>("triggerEvent")),
114  trigEvToken_(consumes<trigger::TriggerEvent>(trigEvTag_)),
115  muonToken_(consumes<View<Muon> >(cfg.getUntrackedParameter<edm::InputTag>("muons"))),
116  ptMuCut_(cfg.getUntrackedParameter<double>("ptMuCut")),
117  etaMuCut_(cfg.getUntrackedParameter<double>("etaMuCut")),
118  hltPath_(cfg.getParameter<std::string>("hltPath")),
119  L3FilterName_(cfg.getParameter<std::string>("L3FilterName")),
120  maxDPtRel_(cfg.getParameter<double>("maxDPtRel")),
121  maxDeltaR_(cfg.getParameter<double>("maxDeltaR")),
122  nbins_(cfg.getParameter<double>("ptMax_")),
123  ptMax_(cfg.getParameter<double>("ptMax_")) {
125 
126  hTrigMuonPtNumS_ = fs->make<TH1D>("hTrigMuonPtNumS", "hTrigMuonPtNumS", nbins_ + 1, 0, ptMax_);
127  hTrigMuonPtDenS_ = fs->make<TH1D>("hTrigMuonPtDenS", "hTrigMuonPtDenS", nbins_ + 1, 0, ptMax_);
128  deltaR_ = fs->make<TH1D>("deltaR", "deltaR", nbins_ + 1, 0, maxDeltaR_);
129  deltaPtOverPt_ = fs->make<TH1D>("deltaPtOverPt", "deltaPtOverPt", nbins_ + 1, 0, maxDPtRel_);
130 }
edm::EDGetTokenT< View< Muon > > muonToken_
T * make(const Args &...args) const
make new ROOT object
Definition: TFileService.h:64
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
edm::EDGetTokenT< TriggerResults > trigToken_
edm::EDGetTokenT< trigger::TriggerEvent > trigEvToken_
edm::InputTag trigEvTag_
std::string L3FilterName_

Member Function Documentation

void MuTriggerAnalyzer::analyze ( const edm::Event event,
const edm::EventSetup setup 
)
overrideprivate

Definition at line 139 of file MuTriggerAnalyzer.cc.

References edm::HLTGlobalStatus::accept(), gather_cfg::cout, DEFINE_FWK_MODULE, edm::InputTag::encode(), PVValHelper::eta, reco::LeafCandidate::eta(), etaMuCut_, trigger::TriggerEvent::filterKeys(), trigger::TriggerEvent::filterTag(), edm::Event::getByToken(), trigger::TriggerEvent::getObjects(), hltPath_, mps_fire::i, reco::Muon::isGlobalMuon(), IsMuMatchedToHLTMu(), dqmdumpme::k, L3FilterName_, maxDeltaR_, maxDPtRel_, amptDefaultParameters_cff::mu, PDWG_BPHSkim_cff::muons, muonToken_, Skims_PA_cff::name, AlCaHLTBitMon_ParallelJobs::p, DiDispStaMuonMonitor_cfi::pt, reco::LeafCandidate::pt(), ptMuCut_, edm::HLTGlobalStatus::size(), trigger::TriggerEvent::sizeFilters(), AlCaHLTBitMon_QueryRunRegistry::string, trigEvTag_, trigEvToken_, edm::TriggerNames::triggerName(), edm::Event::triggerNames(), triggerResults, EgHLTOffTrigSelection_cfi::trigName, trigNames, trigNames_, and trigToken_.

139  {
140  // bool overlap = false;
141 
142  // Trigger
145  if (!ev.getByToken(trigToken_, triggerResults)) {
146  LogWarning("") << ">>> TRIGGER collection does not exist !!!";
147  return;
148  }
149  // trigNames.init(*triggerResults);
150  trigNames_ = &ev.triggerNames(*triggerResults);
151  //bool trigger_fired = false;
152  for (unsigned int i = 0; i < triggerResults->size(); i++) {
154  if (trigName == hltPath_ && triggerResults->accept(i)) {
155  //trigger_fired = true;
156  }
157  }
158  edm::Handle<trigger::TriggerEvent> handleTriggerEvent;
159  // LogTrace("") << ">>> Trigger bit: " << trigger_fired << " (" << hltPath_ << ")";
160  if (!ev.getByToken(trigEvToken_, handleTriggerEvent)) {
161  LogWarning("errorTriggerEventValid") << "trigger::TriggerEvent product with InputTag " << trigEvTag_.encode()
162  << " not in event";
163  return;
164  }
165  const trigger::TriggerObjectCollection& toc(handleTriggerEvent->getObjects());
166  size_t nMuHLT = 0;
167  std::vector<reco::Particle> HLTMuMatched;
168  for (size_t ia = 0; ia < handleTriggerEvent->sizeFilters(); ++ia) {
169  std::string fullname = handleTriggerEvent->filterTag(ia).encode();
171  size_t p = fullname.find_first_of(':');
172  if (p != std::string::npos) {
173  name = fullname.substr(0, p);
174  } else {
175  name = fullname;
176  }
177  if (!toc.empty()) {
178  const trigger::Keys& k = handleTriggerEvent->filterKeys(ia);
179  for (trigger::Keys::const_iterator ki = k.begin(); ki != k.end(); ++ki) {
180  if (name == L3FilterName_) {
181  HLTMuMatched.push_back(toc[*ki].particle());
182  nMuHLT++;
183  }
184  }
185  }
186  }
187 
188  // looping on muon....
190  if (!ev.getByToken(muonToken_, muons)) {
191  LogError("") << ">>> muon collection does not exist !!!";
192  return;
193  }
194  //saving only muons with pt> ptMuCut and eta<etaMuCut
195  std::vector<reco::Muon> highPtGlbMuons;
196 
197  for (unsigned int i = 0; i < muons->size(); i++) {
198  const reco::Muon& mu = muons->at(i);
199  double pt = mu.pt();
200  double eta = mu.eta();
201  if (pt > ptMuCut_ && fabs(eta) < etaMuCut_) {
202  if (mu.isGlobalMuon())
203  highPtGlbMuons.push_back(mu);
204  }
205  }
206  unsigned int nHighPtGlbMu = highPtGlbMuons.size();
207  std::cout << "I've got " << nHighPtGlbMu << " nHighPtGlbMu" << std::endl;
208  // unsigned int nHighPtStaMu = highPtStaMuons.size();
209  // stop the loop after 10 cicles....
210  if (nHighPtGlbMu > 10)
211  nHighPtGlbMu = 10;
212 
213  for (unsigned int i = 0; i < nHighPtGlbMu; i++) {
214  IsMuMatchedToHLTMu(highPtGlbMuons[i], HLTMuMatched, maxDeltaR_, maxDPtRel_);
215  }
216 }
bool IsMuMatchedToHLTMu(const reco::Muon &, std::vector< reco::Particle > &, double, double)
edm::EDGetTokenT< View< Muon > > muonToken_
double eta() const final
momentum pseudorapidity
trigger::size_type sizeFilters() const
Definition: TriggerEvent.h:146
bool accept() const
Has at least one path accepted the event?
const Keys & filterKeys(trigger::size_type index) const
Definition: TriggerEvent.h:118
double pt() const final
transverse momentum
edm::TriggerNames const * trigNames_
bool ev
std::string encode() const
Definition: InputTag.cc:159
edm::EDGetTokenT< TriggerResults > trigToken_
bool isGlobalMuon() const override
Definition: Muon.h:298
const TriggerObjectCollection & getObjects() const
Definition: TriggerEvent.h:101
unsigned int size() const
Get number of paths stored.
static std::string const triggerResults
Definition: EdmProvDump.cc:45
edm::EDGetTokenT< trigger::TriggerEvent > trigEvToken_
std::vector< TriggerObject > TriggerObjectCollection
collection of trigger physics objects (e.g., all isolated muons)
Definition: TriggerObject.h:75
static const char *const trigNames[]
Definition: EcalDumpRaw.cc:57
const edm::InputTag filterTag(trigger::size_type index) const
Definition: TriggerEvent.h:108
edm::InputTag trigEvTag_
std::string const & triggerName(unsigned int index) const
Definition: TriggerNames.cc:22
std::vector< size_type > Keys
std::string L3FilterName_
void MuTriggerAnalyzer::endJob ( void  )
overrideprivatevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 132 of file MuTriggerAnalyzer.cc.

References gather_cfg::cout, hTrigMuonPtDenS_, hTrigMuonPtNumS_, mps_fire::i, and nbins_.

132  {
133  for (int i = 0; i < nbins_ + 1; ++i) {
134  std::cout << "number of reco muon in bin " << i << " = " << hTrigMuonPtDenS_->GetBinContent(i) << std::endl;
135  std::cout << "number of hlt muon in bin " << i << " = " << hTrigMuonPtNumS_->GetBinContent(i) << std::endl;
136  }
137 }
bool MuTriggerAnalyzer::IsMuMatchedToHLTMu ( const reco::Muon mu,
std::vector< reco::Particle > &  HLTMu,
double  DR,
double  DPtRel 
)
private

Definition at line 77 of file MuTriggerAnalyzer.cc.

References gather_cfg::cout, PbPb_ZMuSkimMuonDPG_cff::deltaR, reco::LeafCandidate::eta(), dqmdumpme::k, nJettinessAdder_cfi::nPass, DiDispStaMuonMonitor_cfi::pt, and reco::LeafCandidate::pt().

Referenced by analyze().

80  {
81  size_t dim = HLTMu.size();
82  size_t nPass = 0;
83 
84  // filling the denumerator;
85  double muRecoPt = mu.pt();
86  hTrigMuonPtDenS_->Fill(muRecoPt);
87 
88  if (dim == 0)
89  return false;
90  for (size_t k = 0; k < dim; k++) {
91  if ((deltaR(HLTMu[k], mu) < DR) && (fabs(HLTMu[k].pt() - mu.pt()) / HLTMu[k].pt() < DPtRel)) {
92  nPass++;
93  std::cout << " matching a muon " << std::endl;
94  std::cout << "muon reco pt : " << muRecoPt << std::endl;
95  std::cout << "muon reco eta " << mu.eta() << std::endl;
96  std::cout << "muon trigger pt " << HLTMu[k].pt() << std::endl;
97  // filling the numerator, at the same bin as the denum.....
98  hTrigMuonPtNumS_->Fill(muRecoPt);
99  deltaR_->Fill(deltaR(HLTMu[k], mu));
100  deltaPtOverPt_->Fill(fabs(HLTMu[k].pt() - mu.pt()) / HLTMu[k].pt());
101 
102  std::cout << "muon trigger eta : " << HLTMu[k].eta() << std::endl;
103  std::cout << "deltaR((HLTMu[k], mu)): " << deltaR(HLTMu[k], mu) << std::endl;
104  std::cout << "deltaPtOverPt: " << fabs(HLTMu[k].pt() - mu.pt()) / HLTMu[k].pt() << std::endl;
105  }
106  }
107 
108  return (nPass > 0);
109 }
double eta() const final
momentum pseudorapidity
double pt() const final
transverse momentum

Member Data Documentation

TH1D* MuTriggerAnalyzer::deltaPtOverPt_
private

Definition at line 74 of file MuTriggerAnalyzer.cc.

Referenced by MuTriggerAnalyzer().

TH1D* MuTriggerAnalyzer::deltaR_
private

Definition at line 73 of file MuTriggerAnalyzer.cc.

Referenced by MuTriggerAnalyzer().

double MuTriggerAnalyzer::etaMuCut_
private

Definition at line 61 of file MuTriggerAnalyzer.cc.

Referenced by analyze().

edm::Handle<trigger::TriggerEvent> MuTriggerAnalyzer::handleTriggerEvent_
private

Definition at line 66 of file MuTriggerAnalyzer.cc.

std::string MuTriggerAnalyzer::hltPath_
private

Definition at line 62 of file MuTriggerAnalyzer.cc.

Referenced by analyze().

TH1D* MuTriggerAnalyzer::hTrigMuonPtDenS_
private

Definition at line 72 of file MuTriggerAnalyzer.cc.

Referenced by endJob(), and MuTriggerAnalyzer().

TH1D* MuTriggerAnalyzer::hTrigMuonPtNumS_
private

Definition at line 71 of file MuTriggerAnalyzer.cc.

Referenced by endJob(), and MuTriggerAnalyzer().

std::string MuTriggerAnalyzer::L3FilterName_
private

Definition at line 63 of file MuTriggerAnalyzer.cc.

Referenced by analyze().

double MuTriggerAnalyzer::maxDeltaR_
private

Definition at line 68 of file MuTriggerAnalyzer.cc.

Referenced by analyze(), and MuTriggerAnalyzer().

double MuTriggerAnalyzer::maxDPtRel_
private

Definition at line 68 of file MuTriggerAnalyzer.cc.

Referenced by analyze(), and MuTriggerAnalyzer().

edm::EDGetTokenT<View<Muon> > MuTriggerAnalyzer::muonToken_
private

Definition at line 60 of file MuTriggerAnalyzer.cc.

Referenced by analyze().

const int MuTriggerAnalyzer::nbins_
private

Definition at line 69 of file MuTriggerAnalyzer.cc.

Referenced by endJob(), and MuTriggerAnalyzer().

const double MuTriggerAnalyzer::ptMax_
private

Definition at line 70 of file MuTriggerAnalyzer.cc.

Referenced by MuTriggerAnalyzer().

double MuTriggerAnalyzer::ptMuCut_
private

Definition at line 61 of file MuTriggerAnalyzer.cc.

Referenced by analyze().

edm::InputTag MuTriggerAnalyzer::trigEvTag_
private

Definition at line 58 of file MuTriggerAnalyzer.cc.

Referenced by analyze().

edm::EDGetTokenT<trigger::TriggerEvent> MuTriggerAnalyzer::trigEvToken_
private

Definition at line 59 of file MuTriggerAnalyzer.cc.

Referenced by analyze().

edm::Handle<edm::TriggerResults> MuTriggerAnalyzer::triggerResults_
private

Definition at line 64 of file MuTriggerAnalyzer.cc.

edm::TriggerNames const* MuTriggerAnalyzer::trigNames_
private

Definition at line 65 of file MuTriggerAnalyzer.cc.

Referenced by analyze().

edm::EDGetTokenT<TriggerResults> MuTriggerAnalyzer::trigToken_
private

Definition at line 57 of file MuTriggerAnalyzer.cc.

Referenced by analyze().