28 beamSpotTag_( iConfig.getParameter<edm::
InputTag>(
"BeamSpotTag") ),
30 candTag_( iConfig.getParameter<edm::
InputTag >(
"CandTag") ),
32 previousCandTag_( iConfig.getParameter<edm::
InputTag >(
"PreviousCandTag") ),
33 previousCandToken_(consumes<trigger::TriggerFilterObjectWithRefs>(previousCandTag_)),
34 seedMapTag_( iConfig.getParameter<edm::
InputTag >(
"SeedMapTag") ),
35 seedMapToken_(consumes<
SeedMap>(seedMapTag_)),
36 minN_( iConfig.getParameter<int>(
"MinN") ),
37 maxEta_( iConfig.getParameter<double>(
"MaxEta") ),
38 absetaBins_( iConfig.getParameter<std::vector<double> >(
"AbsEtaBins") ),
39 minNstations_( iConfig.getParameter<std::vector<int> >(
"MinNstations") ),
40 minNhits_( iConfig.getParameter<std::vector<int> >(
"MinNhits") ),
41 cutOnChambers_( iConfig.getParameter<bool>(
"CutOnChambers") ),
42 minNchambers_( iConfig.getParameter<std::vector<int> >(
"MinNchambers") ),
43 maxDr_( iConfig.getParameter<double>(
"MaxDr") ),
44 minDr_( iConfig.getParameter<double>(
"MinDr") ),
45 maxDz_( iConfig.getParameter<double>(
"MaxDz") ),
46 min_DxySig_(iConfig.getParameter<double> (
"MinDxySig")),
47 minPt_( iConfig.getParameter<double>(
"MinPt") ),
48 nSigmaPt_( iConfig.getParameter<double>(
"NSigmaPt") )
56 throw cms::Exception(
"Configuration") <<
"Number of MinNstations, MinNhits, or MinNchambers cuts "
57 <<
"does not match number of eta bins." << endl;
63 throw cms::Exception(
"Configuration") <<
"Absolute eta bins must be in increasing order." << endl;
70 ss<<
"Constructed with parameters:"<<endl;
75 ss<<
" MinN = "<<
minN_<<endl;
76 ss<<
" MaxEta = "<<
maxEta_<<endl;
77 ss<<
" MinNstations = ";
89 ss<<
" MinNchambers = ";
95 ss<<
" MaxDr = "<<
maxDr_<<endl;
96 ss<<
" MinDr = "<<
minDr_<<endl;
97 ss<<
" MaxDz = "<<
maxDz_<<endl;
99 ss<<
" MinPt = "<<
minPt_<<endl;
102 LogDebug(
"HLTMuonL2PreFilter")<<ss.str();
118 desc.
add<
int>(
"MinN",1);
119 desc.
add<
double>(
"MaxEta",2.5);
120 desc.
add<std::vector<double> >(
"AbsEtaBins", std::vector<double>(1, 9999.));
121 desc.
add<std::vector<int> >(
"MinNstations", std::vector<int>(1, 1));
122 desc.
add<std::vector<int> >(
"MinNhits", std::vector<int>(1, 0));
123 desc.
add<
bool> (
"CutOnChambers", 0);
124 desc.
add<std::vector<int> >(
"MinNchambers", std::vector<int>(1, 0));
125 desc.
add<
double>(
"MaxDr",9999.0);
126 desc.
add<
double>(
"MinDr",-1.0);
127 desc.
add<
double>(
"MaxDz",9999.0);
128 desc.
add<
double>(
"MinDxySig",-1.0);
129 desc.
add<
double>(
"MinPt",0.0);
130 desc.
add<
double>(
"NSigmaPt",0.0);
131 descriptions.
add(
"hltMuonL2PreFilter",desc);
147 using namespace reco;
148 using namespace trigger;
149 using namespace l1extra;
171 for(RecoChargedCandidateCollection::const_iterator cand=
allMuons->begin(); cand!=
allMuons->end(); cand++){
181 bool failNstations(
false), failNhits(
false), failNchambers(
false);
182 for(
unsigned int i=0;
i<nAbsetaBins; ++
i) {
184 if(mu->hitPattern().muonStationsWithAnyHits() <
minNstations_[
i]) {
191 ( mu->hitPattern().dtStationsWithAnyHits() +
198 if(failNstations || failNhits || failNchambers)
continue;
213 double pt = mu->pt();
214 double abspar0 =
std::abs(mu->parameter(0));
217 if(abspar0 > 0) ptLx +=
nSigmaPt_*mu->error(0)/abspar0*
pt;
218 if(ptLx <
minPt_)
continue;
234 <<
'\t'<<
"q*ptLx"<<
'\t'
245 ss<<
"-----------------------------------------------------------------------------------------------------------------------"<<endl;
246 for (RecoChargedCandidateCollection::const_iterator cand =
allMuons->begin(); cand !=
allMuons->end(); cand++) {
250 <<
'\t'<<scientific<<mu->charge()*mu->pt()
251 <<
'\t'<<scientific<<mu->charge()*mu->pt()*(1. + ((mu->parameter(0) != 0) ?
nSigmaPt_*mu->error(0)/
std::abs(mu->parameter(0)) : 0.))
252 <<
'\t'<<fixed<<mu->eta()
253 <<
'\t'<<fixed<<mu->phi()
254 <<
'\t'<<mu->hitPattern().muonStationsWithAnyHits()
255 <<
'\t'<<mu->numberOfValidHits()
256 <<
'\t'<<scientific<<mu->d0()
257 <<
'\t'<<scientific<<mu->dz()
260 vector<RecoChargedCandidateRef> firedMuons;
265 ss<<
"-----------------------------------------------------------------------------------------------------------------------"<<endl;
266 ss<<
"Decision of filter is "<<accept<<
", number of muons passing = "<<filterproduct.
muonSize();
267 LogDebug(
"HLTMuonL2PreFilter")<<ss.str();
std::vector< double > absetaBins_
void getObjects(Vids &ids, VRphoton &refs) const
various physics-level getters:
bool isTriggeredByL1(reco::TrackRef &l2muon)
checks if a L2 muon was seeded by a fired L1
std::vector< int > minNstations_
minimum number of muon stations used
bool getByToken(EDGetToken token, Handle< PROD > &result) const
double maxDz_
cut on dz wrt to the beam spot
double nSigmaPt_
pt uncertainty margin (in number of sigmas)
edm::Ref< RecoChargedCandidateCollection > RecoChargedCandidateRef
reference to an object in a collection of RecoChargedCandidate objects
math::XYZPoint Point
point in the space
std::vector< int > minNchambers_
minimum number of valid chambers
edm::InputTag candTag_
input tag of L2 muons
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
HLTMuonL2PreFilter(const edm::ParameterSet &)
virtual bool hltFilter(edm::Event &, const edm::EventSetup &, trigger::TriggerFilterObjectWithRefs &filterproduct) const override
edm::InputTag previousCandTag_
input tag of the preceeding L1 filter in the path
void addObject(int id, const reco::RecoEcalCandidateRef &ref)
setters for L3 collections: (id=physics type, and Ref<C>)
double min_DxySig_
dxy significance cut
edm::EDGetTokenT< reco::BeamSpot > beamSpotToken_
edm::InputTag seedMapTag_
input tag of the map from the L2 seed to the sister L2 seeds of cleaned tracks
int minN_
minimum number of muons to fire the trigger
edm::EDGetTokenT< SeedMap > seedMapToken_
Abs< T >::type abs(const T &t)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
std::vector< int > minNhits_
minimum number of valid muon hits
std::vector< RecoChargedCandidate > RecoChargedCandidateCollection
collectin of RecoChargedCandidate objects
static void makeHLTFilterDescription(edm::ParameterSetDescription &desc)
edm::EDGetTokenT< trigger::TriggerFilterObjectWithRefs > previousCandToken_
edm::InputTag beamSpotTag_
input tag of the beam spot
void addCollectionTag(const edm::InputTag &collectionTag)
collectionTags
void add(std::string const &label, ParameterSetDescription const &psetDescription)
size_type muonSize() const
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
bool cutOnChambers_
choose whether to apply cut on number of chambers (DT+CSC)
double minDr_
cut on impact parameter wrt to the beam spot
double minPt_
pt threshold in GeV
std::string getL1Keys(reco::TrackRef &l2muon)
returns the indices of L1 seeds
edm::EDGetTokenT< reco::RecoChargedCandidateCollection > candToken_
double maxDr_
cut on impact parameter wrt to the beam spot