63 if (energyLowEdges_.size() != thrRegularEB1_.size()
or energyLowEdges_.size() != thrRegularEE1_.size()
or 64 energyLowEdges_.size() != thrRegularEB2_.size()
or energyLowEdges_.size() != thrRegularEE2_.size()
or 65 energyLowEdges_.size() != thrOverEEB1_.size()
or energyLowEdges_.size() != thrOverEEE1_.size()
or 66 energyLowEdges_.size() != thrOverEEB2_.size()
or energyLowEdges_.size() != thrOverEEE2_.size()
or 67 energyLowEdges_.size() != thrOverE2EB1_.size()
or energyLowEdges_.size() != thrOverE2EE1_.size()
or 68 energyLowEdges_.size() != thrOverE2EB2_.size()
or energyLowEdges_.size() != thrOverE2EE2_.size())
69 throw cms::Exception(
"IncompatibleVects") <<
"energyLowEdges and threshold vectors should be of the same size. \n";
71 if (energyLowEdges_.at(0) != 0.0)
72 throw cms::Exception(
"IncompleteCoverage") <<
"energyLowEdges should start from 0. \n";
74 for (
unsigned int aIt = 0; aIt < energyLowEdges_.size() - 1; aIt++) {
75 if ( !(energyLowEdges_.at( aIt ) < energyLowEdges_.at( aIt + 1 )) )
76 throw cms::Exception(
"ImproperBinning") <<
"energyLowEdges entries should be in increasing order. \n";
79 if (doRhoCorrection_) {
81 if (absEtaLowEdges_.size() != effectiveAreas_.size())
82 throw cms::Exception(
"IncompatibleVects") <<
"absEtaLowEdges and effectiveAreas should be of the same size. \n";
84 if (absEtaLowEdges_.at(0) != 0.0)
85 throw cms::Exception(
"IncompleteCoverage") <<
"absEtaLowEdges should start from 0. \n";
87 for (
unsigned int bIt = 0; bIt < absEtaLowEdges_.size() - 1; bIt++) {
88 if ( !(absEtaLowEdges_.at( bIt ) < absEtaLowEdges_.at( bIt + 1 )) )
89 throw cms::Exception(
"ImproperBinning") <<
"absEtaLowEdges entries should be in increasing order. \n";
101 desc.
add<std::vector<double> >(
"energyLowEdges", {0.0});
102 desc.
add<
bool>(
"lessThan",
true);
103 desc.
add<
bool>(
"useEt",
true);
104 desc.
add<
double>(
"etaBoundaryEB12", 1.0);
105 desc.
add<
double>(
"etaBoundaryEE12", 2.0);
106 desc.
add<std::vector<double> >(
"thrRegularEB1", {4.0});
107 desc.
add<std::vector<double> >(
"thrRegularEE1", {6.0});
108 desc.
add<std::vector<double> >(
"thrOverEEB1", {0.0020});
109 desc.
add<std::vector<double> >(
"thrOverEEE1", {0.0020});
110 desc.
add<std::vector<double> >(
"thrOverE2EB1", {0.0});
111 desc.
add<std::vector<double> >(
"thrOverE2EE1", {0.0});
112 desc.
add<std::vector<double> >(
"thrRegularEB2", {6.0});
113 desc.
add<std::vector<double> >(
"thrRegularEE2", {4.0});
114 desc.
add<std::vector<double> >(
"thrOverEEB2", {0.0020});
115 desc.
add<std::vector<double> >(
"thrOverEEE2", {0.0020});
116 desc.
add<std::vector<double> >(
"thrOverE2EB2", {0.0});
117 desc.
add<std::vector<double> >(
"thrOverE2EE2", {0.0});
118 desc.
add<
int>(
"ncandcut", 1);
119 desc.
add<
bool>(
"doRhoCorrection",
false);
120 desc.
add<
double>(
"rhoMax", 9.9999999E7);
121 desc.
add<
double>(
"rhoScale", 1.0);
122 desc.
add<std::vector<double> >(
"effectiveAreas", {0.0, 0.0});
123 desc.
add<std::vector<double> >(
"absEtaLowEdges", {0.0, 1.479});
125 descriptions.
add(
"hltEgammaGenericQuadraticEtaFilter", desc);
150 std::vector<edm::Ref<reco::RecoEcalCandidateCollection> > recoecalcands;
172 for (
unsigned int i=0;
i<recoecalcands.size();
i++) {
174 ref = recoecalcands[
i];
177 float vali = mapi->
val;
178 float EtaSC = ref->eta();
186 float energy = ref->superCluster()->energy();
187 if (
useEt_) energy = energy *
sin (2*atan(
exp(-EtaSC)));
188 if (energy < 0.) energy = 0.;
190 double cutRegularEB1_ = 9999., cutRegularEE1_ = 9999.;
191 double cutRegularEB2_ = 9999., cutRegularEE2_ = 9999.;
192 double cutOverEEB1_ = 9999., cutOverEEE1_ = 9999.;
193 double cutOverEEB2_ = 9999., cutOverEEE2_ = 9999.;
194 double cutOverE2EB1_ = 9999., cutOverE2EE1_ = 9999.;
195 double cutOverE2EB2_ = 9999., cutOverE2EE2_ = 9999.;
215 if ( vali <= cutRegularEB1_ + energy*cutOverEEB1_ + energy*energy*cutOverE2EB1_) {
217 filterproduct.
addObject(trigger_type, ref);
220 }
else if (
std::abs(EtaSC) < 1.479) {
221 if ( vali <= cutRegularEB2_ + energy*cutOverEEB2_ + energy*energy*cutOverE2EB2_) {
223 filterproduct.
addObject(trigger_type, ref);
227 if ( vali <= cutRegularEE1_ + energy*cutOverEEE1_ + energy*energy*cutOverE2EE1_) {
229 filterproduct.
addObject(trigger_type, ref);
232 }
else if (vali <= cutRegularEE2_ + energy*cutOverEEE2_ + energy*energy*cutOverE2EE2_) {
234 filterproduct.
addObject(trigger_type, ref);
239 if ( vali >= cutRegularEB1_ + energy*cutOverEEB1_ + energy*energy*cutOverE2EB1_) {
241 filterproduct.
addObject(trigger_type, ref);
244 }
else if (
std::abs(EtaSC) < 1.479) {
245 if ( vali >= cutRegularEB2_ + energy*cutOverEEB2_ + energy*energy*cutOverE2EB2_) {
247 filterproduct.
addObject(trigger_type, ref);
251 if ( vali >= cutRegularEE1_ + energy*cutOverEEE1_ + energy*energy*cutOverE2EE1_) {
253 filterproduct.
addObject(trigger_type, ref);
256 }
else if (vali >= cutRegularEE2_ + energy*cutOverEEE2_ + energy*energy*cutOverE2EE2_) {
258 filterproduct.
addObject(trigger_type, ref);
std::vector< double > thrOverEEE1_
T getParameter(std::string const &) const
void getObjects(Vids &ids, VRphoton &refs) const
various physics-level getters:
HLTEgammaGenericQuadraticEtaFilter(const edm::ParameterSet &)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Sin< T >::type sin(const T &t)
std::vector< double > thrOverE2EB2_
edm::EDGetTokenT< reco::RecoEcalCandidateIsolationMap > varToken_
std::vector< double > absEtaLowEdges_
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
void addObject(int id, const reco::RecoEcalCandidateRef &ref)
setters for L3 collections: (id=physics type, and Ref<C>)
std::vector< double > effectiveAreas_
std::vector< double > thrOverEEB2_
#define DEFINE_FWK_MODULE(type)
std::vector< double > thrOverE2EE2_
std::vector< double > thrRegularEE2_
std::vector< double > thrRegularEB2_
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)
std::vector< double > thrOverEEE2_
bool hltFilter(edm::Event &, const edm::EventSetup &, trigger::TriggerFilterObjectWithRefs &filterproduct) const override
ParameterDescriptionBase * add(U const &iLabel, T const &value)
~HLTEgammaGenericQuadraticEtaFilter() override
static void makeHLTFilterDescription(edm::ParameterSetDescription &desc)
std::vector< double > thrOverE2EB1_
std::vector< double > thrOverE2EE1_
T const * product() const
edm::EDGetTokenT< double > rhoToken_
edm::EDGetTokenT< trigger::TriggerFilterObjectWithRefs > candToken_
std::vector< double > thrRegularEB1_
void addCollectionTag(const edm::InputTag &collectionTag)
collectionTags
void add(std::string const &label, ParameterSetDescription const &psetDescription)
std::vector< double > energyLowEdges_
std::vector< double > thrRegularEE1_
std::vector< double > thrOverEEB1_
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)