Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-07-02 00:53:49

0001 #ifndef HLTrigger_Egamma_HLTEgammaCombMassFilter_h
0002 #define HLTrigger_Egamma_HLTEgammaCombMassFilter_h
0003 
0004 //Class: HLTEgammaCombMassFilter
0005 //purpose: the last filter of multi-e/g triggers which have asymetric cuts on the e/g objects
0006 //         this checks that the required number of pair candidate pass a minimum mass cut
0007 
0008 #include "HLTrigger/HLTcore/interface/HLTFilter.h"
0009 
0010 #include "DataFormats/HLTReco/interface/TriggerFilterObjectWithRefs.h"
0011 
0012 #include "DataFormats/Math/interface/LorentzVector.h"
0013 
0014 namespace edm {
0015   class ConfigurationDescriptions;
0016 }
0017 
0018 class HLTEgammaCombMassFilter : public HLTFilter {
0019 public:
0020   explicit HLTEgammaCombMassFilter(const edm::ParameterSet&);
0021   ~HLTEgammaCombMassFilter() override;
0022   bool hltFilter(edm::Event&,
0023                  const edm::EventSetup&,
0024                  trigger::TriggerFilterObjectWithRefs& filterproduct) const override;
0025   static void getP4OfLegCands(const edm::Event& iEvent,
0026                               const edm::EDGetTokenT<trigger::TriggerFilterObjectWithRefs>& filterToken,
0027                               std::vector<math::XYZTLorentzVector>& p4s);
0028   static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0029   static void addObjectToFilterProduct(const edm::Event& iEvent,
0030                                        trigger::TriggerFilterObjectWithRefs& filterproduct,
0031                                        const edm::EDGetTokenT<trigger::TriggerFilterObjectWithRefs>& token,
0032                                        size_t index);
0033 
0034 private:
0035   edm::InputTag firstLegLastFilterTag_;
0036   edm::InputTag secondLegLastFilterTag_;
0037   edm::EDGetTokenT<trigger::TriggerFilterObjectWithRefs> firstLegLastFilterToken_;
0038   edm::EDGetTokenT<trigger::TriggerFilterObjectWithRefs> secondLegLastFilterToken_;
0039   double minMass_;
0040   edm::InputTag l1EGTag_;
0041   struct LorentzVectorComparator {
0042     bool operator()(const math::XYZTLorentzVector& lhs, const math::XYZTLorentzVector& rhs) const {
0043       return lhs.pt() < rhs.pt();
0044     }
0045   };
0046 };
0047 
0048 #endif