55 return std::make_unique<AlCaHEMuons::Counters>();
59 void endStream()
override;
72 double trackIsoCut_, caloIsoCut_, pfIsoCut_, muonptCut_, muonetaCut_;
112 edm::LogInfo(
"HEMuon") <<
"Parameters read from config file \n" 113 <<
"Process " << processName_ <<
" Prescale " << preScale_ <<
" Isolation Cuts " 114 << trackIsoCut_ <<
":" << caloIsoCut_ <<
"\n";
138 if (triggerResults.
isValid()) {
140 std::vector<std::string>
modules;
142 const std::vector<std::string>& triggerNames_ = triggerNames.
triggerNames();
143 for (
unsigned int iHLT = 0; iHLT < triggerResults->
size(); iHLT++) {
151 edm::LogInfo(
"HEMuon") <<
"AlCaHEMuonFilter::Trigger " << triggerNames_[iHLT] <<
" Flag " << hlt <<
":" << ok
172 edm::LogInfo(
"HEMuon") <<
"AlCaHEMuonFilter::Muon Handle " << _Muon.
isValid() << std::endl;
175 for (reco::MuonCollection::const_iterator RecMuon = _Muon->begin(); RecMuon != _Muon->end(); ++RecMuon) {
177 edm::LogInfo(
"HEMuon") <<
"AlCaHEMuonFilter::Muon:Track " << RecMuon->track().isNonnull() <<
" innerTrack " 178 << RecMuon->innerTrack().isNonnull() <<
" outerTrack " 179 << RecMuon->outerTrack().isNonnull() <<
" globalTrack " 180 << RecMuon->globalTrack().isNonnull() << std::endl;
182 if ((RecMuon->track().isNonnull()) && (RecMuon->innerTrack().isNonnull()) &&
183 (RecMuon->outerTrack().isNonnull()) && (RecMuon->globalTrack().isNonnull())) {
189 const reco::Track* pTrack = (RecMuon->innerTrack()).
get();
192 edm::LogInfo(
"HEMuon") <<
"AlCaHEMuonFilter::Propagate: ECAL " << trackID.
okECAL <<
" to HCAL " 193 << trackID.
okHCAL << std::endl;
195 double trackIso = RecMuon->isolationR03().sumPt;
196 double caloIso = RecMuon->isolationR03().emEt + RecMuon->isolationR03().hadEt;
198 ((RecMuon->pfIsolationR04().sumChargedHadronPt +
200 RecMuon->pfIsolationR04().sumNeutralHadronEt + RecMuon->pfIsolationR04().sumPhotonEt -
201 (0.5 * RecMuon->pfIsolationR04().sumPUPt))) /
228 globalCache()->nAll_ +=
nAll_;
229 globalCache()->nGood_ +=
nGood_;
230 globalCache()->nFinal_ +=
nFinal_;
235 << count->
nAll_ <<
" total # of events\n";
242 edm::LogInfo(
"HEMuon") <<
"Run[" <<
nRun_ <<
"] " << iRun.
run() <<
" hltconfig.init " << flag << std::endl;
256 std::vector<std::string> triggers = {
"HLT_IsoMu",
"HLT_Mu"};
260 desc.
add<
double>(
"minimumMuonP", 10.0);
261 desc.
add<std::vector<std::string> >(
"triggers", triggers);
262 desc.
add<
double>(
"muonPtCut", 20.0);
263 desc.
add<
double>(
"muonEtaCut", 1.305);
264 desc.
add<
bool>(
"pfCut",
true);
265 desc.
add<
double>(
"pfIsolationCut", 0.15);
266 desc.
add<
double>(
"trackIsolationCut", 3.0);
267 desc.
add<
double>(
"caloIsolationCut", 5.0);
268 desc.
add<
int>(
"preScale", 1);
269 descriptions.
add(
"alcaHEMuonFilter", desc);
T getParameter(std::string const &) const
EventNumber_t event() const
edm::EDGetTokenT< edm::TriggerResults > tok_trigRes_
std::vector< spr::propagatedTrackID > propagateCALO(edm::Handle< reco::TrackCollection > &trkCollection, const CaloGeometry *geo, const MagneticField *bField, const std::string &theTrackQuality, bool debug=false)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
~AlCaHEMuonFilter() override
bool getByToken(EDGetToken token, Handle< PROD > &result) const
std::atomic< unsigned int > nGood_
bool accept() const
Has at least one path accepted the event?
int bunchCrossing() const
AlCaHEMuonFilter(edm::ParameterSet const &, const AlCaHEMuons::Counters *count)
edm::LuminosityBlockNumber_t luminosityBlock() const
void beginRun(edm::Run const &, edm::EventSetup const &) override
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
edm::EDGetTokenT< trigger::TriggerEvent > tok_trigEvt
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
void endStream() override
Strings const & triggerNames() const
std::atomic< unsigned int > nFinal_
std::atomic< unsigned int > nAll_
#define DEFINE_FWK_MODULE(type)
unsigned int size() const
Get number of paths stored.
edm::InputTag triggerResults_
static std::string const triggerResults
HLTConfigProvider hltConfig_
ParameterDescriptionBase * add(U const &iLabel, T const &value)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
bool filter(edm::Event &, edm::EventSetup const &) override
bool init(const edm::Run &iRun, const edm::EventSetup &iSetup, const std::string &processName, bool &changed)
d'tor
void add(std::string const &label, ParameterSetDescription const &psetDescription)
void endRun(edm::Run const &, edm::EventSetup const &) override
static std::unique_ptr< AlCaHEMuons::Counters > initializeGlobalCache(edm::ParameterSet const &)
static void globalEndJob(const AlCaHEMuons::Counters *counters)
std::vector< std::string > trigNames_
edm::EDGetTokenT< reco::MuonCollection > tok_Muon_
T const * product() const
edm::TriggerNames const & triggerNames(edm::TriggerResults const &triggerResults) const override