28 candTag_ = iConfig.template getParameter< edm::InputTag > (
"candTag");
29 varTag_ = iConfig.template getParameter< edm::InputTag > (
"varTag");
30 l1EGTag_ = iConfig.template getParameter< edm::InputTag > (
"l1EGCand");
31 rhoTag_ = iConfig.template getParameter< edm::InputTag > (
"rhoTag");
33 energyLowEdges_ = iConfig.template getParameter<std::vector<double> > (
"energyLowEdges");
34 lessThan_ = iConfig.template getParameter<bool> (
"lessThan");
35 useEt_ = iConfig.template getParameter<bool> (
"useEt");
36 thrRegularEB_ = iConfig.template getParameter<std::vector<double> > (
"thrRegularEB");
37 thrRegularEE_ = iConfig.template getParameter<std::vector<double> > (
"thrRegularEE");
38 thrOverEEB_ = iConfig.template getParameter<std::vector<double> > (
"thrOverEEB");
39 thrOverEEE_ = iConfig.template getParameter<std::vector<double> > (
"thrOverEEE");
40 thrOverE2EB_ = iConfig.template getParameter<std::vector<double> > (
"thrOverE2EB");
41 thrOverE2EE_ = iConfig.template getParameter<std::vector<double> > (
"thrOverE2EE");
42 ncandcut_ = iConfig.template getParameter<int> (
"ncandcut");
45 rhoMax_ = iConfig.template getParameter<double> (
"rhoMax");
46 rhoScale_ = iConfig.template getParameter<double> (
"rhoScale");
47 effectiveAreas_ = iConfig.template getParameter<std::vector<double> > (
"effectiveAreas");
48 absEtaLowEdges_ = iConfig.template getParameter<std::vector<double> > (
"absEtaLowEdges");
53 if (energyLowEdges_.size() != thrRegularEB_.size()
or energyLowEdges_.size() != thrRegularEE_.size()
or 54 energyLowEdges_.size() != thrOverEEB_.size()
or energyLowEdges_.size() != thrOverEEE_.size()
or 55 energyLowEdges_.size() != thrOverE2EB_.size()
or energyLowEdges_.size() != thrOverE2EE_.size())
56 throw cms::Exception(
"IncompatibleVects") <<
"energyLowEdges and threshold vectors should be of the same size. \n";
58 if (energyLowEdges_.at(0) != 0.0)
59 throw cms::Exception(
"IncompleteCoverage") <<
"energyLowEdges should start from 0. \n";
61 for (
unsigned int aIt = 0; aIt < energyLowEdges_.size() - 1; aIt++) {
62 if ( !(energyLowEdges_.at( aIt ) < energyLowEdges_.at( aIt + 1 )) )
63 throw cms::Exception(
"ImproperBinning") <<
"energyLowEdges entries should be in increasing order. \n";
66 if (doRhoCorrection_) {
68 if (absEtaLowEdges_.size() != effectiveAreas_.size())
69 throw cms::Exception(
"IncompatibleVects") <<
"absEtaLowEdges and effectiveAreas should be of the same size. \n";
71 if (absEtaLowEdges_.at(0) != 0.0)
72 throw cms::Exception(
"IncompleteCoverage") <<
"absEtaLowEdges should start from 0. \n";
74 for (
unsigned int bIt = 0; bIt < absEtaLowEdges_.size() - 1; bIt++) {
75 if ( !(absEtaLowEdges_.at( bIt ) < absEtaLowEdges_.at( bIt + 1 )) )
76 throw cms::Exception(
"ImproperBinning") <<
"absEtaLowEdges entries should be in increasing order. \n";
89 desc.
add<std::vector<double> >(
"energyLowEdges", {0.0});
90 desc.
add<
bool>(
"lessThan",
true);
91 desc.
add<
bool>(
"useEt",
false);
92 desc.
add<std::vector<double> >(
"thrRegularEB", {0.0});
93 desc.
add<std::vector<double> >(
"thrRegularEE", {0.0});
94 desc.
add<std::vector<double> >(
"thrOverEEB", {-1.0});
95 desc.
add<std::vector<double> >(
"thrOverEEE", {-1.0});
96 desc.
add<std::vector<double> >(
"thrOverE2EB", {-1.0});
97 desc.
add<std::vector<double> >(
"thrOverE2EE", {-1.0});
98 desc.
add<
int>(
"ncandcut", 1);
99 desc.
add<
bool>(
"doRhoCorrection",
false);
100 desc.
add<
double>(
"rhoMax", 9.9999999E7);
101 desc.
add<
double>(
"rhoScale", 1.0);
102 desc.
add<std::vector<double> >(
"effectiveAreas", {0.0, 0.0});
103 desc.
add<std::vector<double> >(
"absEtaLowEdges", {0.0, 1.479});
108 template<
typename T1>
111 template<
typename T1>
118 return candRef->superCluster()->energy();
121 template<
typename T1>
123 return candRef->pt();
128 return candRef->superCluster()->energy() *
sin (2*atan(
exp(-candRef->eta())));
133 template<
typename T1>
149 std::vector<T1Ref> recoCands;
152 if(recoCands.empty()) {
174 for (
unsigned int i=0;
i<recoCands.size();
i++) {
180 float vali = mapi->
val;
181 float EtaSC = ref->eta();
195 double cutRegularEB_ = 9999., cutRegularEE_ = 9999.;
196 double cutOverEEB_ = 9999., cutOverEEE_ = 9999.;
197 double cutOverE2EB_ = 9999., cutOverE2EE_ = 9999.;
210 if ( (
std::abs(EtaSC) < 1.479 && vali <= cutRegularEB_) || (
std::abs(EtaSC) >= 1.479 && vali <= cutRegularEE_) ) {
212 filterproduct.
addObject(trigger_type, ref);
215 if (energy > 0. && (cutOverEEB_ > 0. || cutOverEEE_ > 0. || cutOverE2EB_ > 0. || cutOverE2EE_ > 0.) ) {
216 if ((
std::abs(EtaSC) < 1.479 && vali/energy <= cutOverEEB_) || (
std::abs(EtaSC) >= 1.479 && vali/energy <= cutOverEEE_) ) {
218 filterproduct.
addObject(trigger_type, ref);
221 if ((
std::abs(EtaSC) < 1.479 && vali/(energy*energy) <= cutOverE2EB_) || (
std::abs(EtaSC) >= 1.479 && vali/(energy*energy) <= cutOverE2EE_) ) {
223 filterproduct.
addObject(trigger_type, ref);
227 if ( (
std::abs(EtaSC) < 1.479 && vali >= cutRegularEB_) || (
std::abs(EtaSC) >= 1.479 && vali >= cutRegularEE_) ) {
229 filterproduct.
addObject(trigger_type, ref);
232 if (energy > 0. && (cutOverEEB_ > 0. || cutOverEEE_ > 0. || cutOverE2EB_ > 0. || cutOverE2EE_ > 0.) ) {
233 if ((
std::abs(EtaSC) < 1.479 && vali/energy >= cutOverEEB_) || (
std::abs(EtaSC) >= 1.479 && vali/energy >= cutOverEEE_) ) {
235 filterproduct.
addObject(trigger_type, ref);
238 if ((
std::abs(EtaSC) < 1.479 && vali/(energy*energy) >= cutOverE2EB_) || (
std::abs(EtaSC) >= 1.479 && vali/(energy*energy) >= cutOverE2EE_) ) {
240 filterproduct.
addObject(trigger_type, ref);
edm::EDGetTokenT< double > rhoToken_
HLTGenericFilter< reco::RecoChargedCandidate > HLTMuonGenericFilter
void getObjects(Vids &ids, VRphoton &refs) const
various physics-level getters:
std::vector< double > energyLowEdges_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Sin< T >::type sin(const T &t)
std::vector< double > thrOverE2EE_
std::string defaultModuleLabel()
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
edm::EDGetTokenT< trigger::TriggerFilterObjectWithRefs > candToken_
float getEnergy(T1Ref) const
void addObject(int id, const reco::RecoEcalCandidateRef &ref)
setters for L3 collections: (id=physics type, and Ref<C>)
std::vector< double > thrRegularEB_
#define DEFINE_FWK_MODULE(type)
HLTGenericFilter(const edm::ParameterSet &)
edm::EDGetTokenT< T1IsolationMap > varToken_
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Abs< T >::type abs(const T &t)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
static void makeHLTFilterDescription(edm::ParameterSetDescription &desc)
std::vector< double > thrRegularEE_
T const * product() const
std::vector< double > thrOverEEB_
void addCollectionTag(const edm::InputTag &collectionTag)
collectionTags
void add(std::string const &label, ParameterSetDescription const &psetDescription)
std::vector< double > thrOverE2EB_
bool hltFilter(edm::Event &, const edm::EventSetup &, trigger::TriggerFilterObjectWithRefs &filterproduct) const override
~HLTGenericFilter() override
std::vector< double > thrOverEEE_
std::vector< double > absEtaLowEdges_
std::vector< double > effectiveAreas_
HLTGenericFilter< reco::RecoEcalCandidate > HLTEgammaGenericFilter