![]() |
![]() |
00001 #ifndef HLTDoubletDZ_h 00002 #define HLTDoubletDZ_h 00003 00004 // 00005 // Class imlements |dZ|<Max for a pair of two objects 00006 // 00007 00008 #include "DataFormats/Common/interface/Ref.h" 00009 #include "DataFormats/HLTReco/interface/TriggerTypeDefs.h" 00010 #include "HLTrigger/HLTcore/interface/HLTFilter.h" 00011 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" 00012 #include<string> 00013 #include<vector> 00014 00015 // 00016 // class declaration 00017 // 00018 00019 template<typename T1, typename T2> 00020 class HLTDoubletDZ : public HLTFilter { 00021 00022 public: 00023 00024 explicit HLTDoubletDZ(const edm::ParameterSet&); 00025 ~HLTDoubletDZ(); 00026 static void fillDescriptions(edm::ConfigurationDescriptions & descriptions); 00027 virtual bool hltFilter(edm::Event&, const edm::EventSetup&, trigger::TriggerFilterObjectWithRefs & filterproduct); 00028 00029 private: 00030 // configuration 00031 edm::InputTag originTag1_; // input tag identifying original 1st product 00032 edm::InputTag originTag2_; // input tag identifying original 2nd product 00033 edm::InputTag inputTag1_; // input tag identifying filtered 1st product 00034 edm::InputTag inputTag2_; // input tag identifying filtered 2nd product 00035 int triggerType1_; 00036 int triggerType2_; 00037 double minDR_; // minimum dR between two objects to be considered a pair 00038 double maxDZ_; // number of pairs passing cuts required 00039 bool same_; // 1st and 2nd product are one and the same 00040 int min_N_; // number of pairs passing cuts required 00041 00042 std:: string label_; // module label 00043 00044 typedef std::vector<T1> T1Collection; 00045 typedef edm::Ref<T1Collection> T1Ref; 00046 std::vector<T1Ref> coll1_; 00047 typedef std::vector<T2> T2Collection; 00048 typedef edm::Ref<T2Collection> T2Ref; 00049 std::vector<T2Ref> coll2_; 00050 00051 00052 }; 00053 00054 #endif //HLTDoubletDZ_h