Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2021-02-14 12:49:42

0001 #ifndef HLTEgammaGenericQuadraticEtaFilter_h
0002 #define HLTEgammaGenericQuadraticEtaFilter_h
0003 
0004 /** \class HLTEgammaGenericQuadraticEtaFilter
0005  *
0006  *  \author Roberto Covarelli (CERN)
0007  *  modified by Chris Tully (Princeton)
0008  */
0009 
0010 #include "HLTrigger/HLTcore/interface/HLTFilter.h"
0011 
0012 #include "DataFormats/HLTReco/interface/TriggerFilterObjectWithRefs.h"
0013 #include "DataFormats/RecoCandidate/interface/RecoEcalCandidateIsolation.h"
0014 
0015 namespace edm {
0016   class ConfigurationDescriptions;
0017 }
0018 
0019 //
0020 // class declaration
0021 //
0022 
0023 class HLTEgammaGenericQuadraticEtaFilter : public HLTFilter {
0024 public:
0025   explicit HLTEgammaGenericQuadraticEtaFilter(const edm::ParameterSet&);
0026   ~HLTEgammaGenericQuadraticEtaFilter() override;
0027   bool hltFilter(edm::Event&,
0028                  const edm::EventSetup&,
0029                  trigger::TriggerFilterObjectWithRefs& filterproduct) const override;
0030   static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0031 
0032 private:
0033   edm::InputTag candTag_;  // input tag identifying product that contains filtered candidates
0034   edm::InputTag varTag_;   // input tag identifying product that contains the variable map
0035   edm::EDGetTokenT<trigger::TriggerFilterObjectWithRefs> candToken_;
0036   edm::EDGetTokenT<reco::RecoEcalCandidateIsolationMap> varToken_;
0037   bool lessThan_;  // the cut is "<" or ">" ?
0038   bool useEt_;     // use E or Et in relative isolation cuts
0039   /*  Barrel quadratic threshold function:
0040       vali (<= or >=) thrRegularEB_ + (E or Et)*thrOverEEB_ + (E or Et)*(E or Et)*thrOverE2EB_
0041     Endcap quadratic threshold function:
0042       vali (<= or >=) thrRegularEE_ + (E or Et)*thrOverEEE_ + (E or Et)*(E or Et)*thrOverE2EE_
0043       */
0044 
0045   std::vector<double> energyLowEdges_;  // lower bin edges for energy-dependent cuts
0046   double etaBoundaryEB12_;              //eta Boundary between Regions 1 and 2 - ECAL barrel
0047   double etaBoundaryEE12_;              //eta Boundary between Regions 1 and 2 - ECAL endcap
0048   std::vector<double> thrRegularEB1_;   // threshold value for zeroth order term - ECAL barrel region 1
0049   std::vector<double> thrRegularEE1_;   // threshold value for zeroth order term - ECAL endcap region 1
0050   std::vector<double> thrOverEEB1_;     // coefficient for first order term - ECAL barrel region 1
0051   std::vector<double> thrOverEEE1_;     // coefficient for first order term - ECAL endcap region 1
0052   std::vector<double> thrOverE2EB1_;    // coefficient for second order term - ECAL barrel region 1
0053   std::vector<double> thrOverE2EE1_;    // coefficient for second order term - ECAL endcap region 1
0054   std::vector<double> thrRegularEB2_;   // threshold value for zeroth order term - ECAL barrel region 2
0055   std::vector<double> thrRegularEE2_;   // threshold value for zeroth order term - ECAL endcap region 2
0056   std::vector<double> thrOverEEB2_;     // coefficient for first order term - ECAL barrel region 2
0057   std::vector<double> thrOverEEE2_;     // coefficient for first order term - ECAL endcap region 2
0058   std::vector<double> thrOverE2EB2_;    // coefficient for second order term - ECAL barrel region 2
0059   std::vector<double> thrOverE2EE2_;    // coefficient for second order term - ECAL endcap region 2
0060   int ncandcut_;                        // number of candidates required
0061 
0062   bool store_;
0063   edm::InputTag l1EGTag_;
0064 
0065   edm::InputTag rhoTag_;  // input tag identifying rho producer
0066   edm::EDGetTokenT<double> rhoToken_;
0067   bool doRhoCorrection_;
0068   double rhoMax_;
0069   double rhoScale_;
0070   std::vector<double> effectiveAreas_;
0071   std::vector<double> absEtaLowEdges_;
0072 };
0073 
0074 #endif  //HLTEgammaGenericQuadraticEtaFilter_h