Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:18:20

0001 #ifndef HLTEgammaGenericQuadraticFilter_h
0002 #define HLTEgammaGenericQuadraticFilter_h
0003 
0004 /** \class HLTEgammaGenericQuadraticFilter
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 HLTEgammaGenericQuadraticFilter : public HLTFilter {
0024 public:
0025   explicit HLTEgammaGenericQuadraticFilter(const edm::ParameterSet&);
0026   ~HLTEgammaGenericQuadraticFilter() 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 
0038   bool lessThan_;  // the cut is "<" or ">" ?
0039   bool useEt_;     // use E or Et in relative isolation cuts
0040   bool useAbs_;    // use the standard abs of the variable (before any rho corr)
0041   /*  Barrel quadratic threshold function:
0042       vali (<= or >=) thrRegularEB_ + (E or Et)*thrOverEEB_ + (E or Et)*(E or Et)*thrOverE2EB_
0043     Endcap quadratic threshold function:
0044       vali (<= or >=) thrRegularEE_ + (E or Et)*thrOverEEE_ + (E or Et)*(E or Et)*thrOverE2EE_
0045       */
0046   std::vector<double> energyLowEdges_;  // lower bin edges for energy-dependent cuts
0047   std::vector<double> thrRegularEB_;    // threshold value for zeroth order term - ECAL barrel
0048   std::vector<double> thrRegularEE_;    // threshold value for zeroth order term - ECAL endcap
0049   std::vector<double> thrOverEEB_;      // coefficient for first order term - ECAL barrel
0050   std::vector<double> thrOverEEE_;      // coefficient for first order term - ECAL endcap
0051   std::vector<double> thrOverE2EB_;     // coefficient for second order term - ECAL barrel
0052   std::vector<double> thrOverE2EE_;     // coefficient for second order term - ECAL endcap
0053   int ncandcut_;                        // number of candidates required
0054 
0055   edm::InputTag l1EGTag_;
0056 
0057   edm::InputTag rhoTag_;  // input tag identifying rho producer
0058   edm::EDGetTokenT<double> rhoToken_;
0059   bool doRhoCorrection_;
0060   double rhoMax_;
0061   double rhoScale_;
0062   std::vector<double> effectiveAreas_;
0063   std::vector<double> absEtaLowEdges_;
0064 };
0065 
0066 #endif  //HLTEgammaGenericQuadraticFilter_h