CMS 3D CMS Logo

HLTHcalTowerFilter.cc
Go to the documentation of this file.
1 
12 
16 
17 //
18 // class declaration
19 //
21 {
22 public:
23  explicit HLTHcalTowerFilter(const edm::ParameterSet &);
24  ~HLTHcalTowerFilter() override;
25  static void fillDescriptions(edm::ConfigurationDescriptions & descriptions);
26 
27 private:
28  bool hltFilter(edm::Event &, const edm::EventSetup &, trigger::TriggerFilterObjectWithRefs & filterproduct) const override;
29 
31  edm::InputTag inputTag_; // input tag identifying product
32  double min_E_HB_; // energy threshold for HB in GeV
33  double min_E_HE_; // energy threshold for HE in GeV
34  double min_E_HF_; // energy threshold for HF in GeV
35  int max_N_HB_; // maximum number for HB
36  int max_N_HE_; // maximum number for HB
37  int max_N_HF_; // maximum number for HB
38  int min_N_HF_; // minimum number for HB
39  int min_N_HFM_; // minimum number for HB-
40  int min_N_HFP_; // minimum number for HB+
41 };
42 
43 #include <memory>
44 
50 
51 //
52 // constructors and destructor
53 //
55  inputTag_ (config.getParameter<edm::InputTag>("inputTag")),
56  min_E_HB_ (config.getParameter<double> ("MinE_HB")),
57  min_E_HE_ (config.getParameter<double> ("MinE_HE")),
58  min_E_HF_ (config.getParameter<double> ("MinE_HF")),
59  max_N_HB_ (config.getParameter<int> ("MaxN_HB")),
60  max_N_HE_ (config.getParameter<int> ("MaxN_HE")),
61  max_N_HF_ (config.getParameter<int> ("MaxN_HF")),
62  min_N_HF_ (-1),
63  min_N_HFM_ (-1),
64  min_N_HFP_ (-1)
65 {
66 
67  if (config.existsAs<int>("MinN_HF")){
68  min_N_HF_=config.getParameter<int>("MinN_HF");
69  }
70  if (config.existsAs<int>("MinN_HFM")){
71  min_N_HFM_=config.getParameter<int>("MinN_HFM");
72  }
73  if (config.existsAs<int>("MinN_HFP")){
74  min_N_HFP_=config.getParameter<int>("MinN_HFP");
75  }
76 
77  inputToken_ = consumes<CaloTowerCollection>(inputTag_);
78 }
79 
81 
82 void
86  desc.add<edm::InputTag>("inputTag",edm::InputTag("hltTowerMakerForHcal"));
87  desc.add<double>("MinE_HB",1.5);
88  desc.add<double>("MinE_HE",2.5);
89  desc.add<double>("MinE_HF",9.0);
90  desc.add<int>("MaxN_HB",2);
91  desc.add<int>("MaxN_HE",2);
92  desc.add<int>("MaxN_HF",8);
93  desc.add<int>("MinN_HF",-1);
94  desc.add<int>("MinN_HFM",-1);
95  desc.add<int>("MinN_HFP",-1);
96  descriptions.add("hltHcalTowerFilter",desc);
97 }
98 
99 //
100 // member functions
101 //
102 
103 // ------------ method called to produce the data ------------
104 bool
106 {
107  using namespace std;
108  using namespace edm;
109  using namespace reco;
110  using namespace trigger;
111 
112  // The filter object
113  if (saveTags()) filterproduct.addCollectionTag(inputTag_);
114 
115  // get hold of collection of objects
117  event.getByToken(inputToken_, towers);
118 
119  // look at all objects, check cuts and add to filter object
120  int n_HB = 0;
121  int n_HE = 0;
122  int n_HF = 0;
123  int n_HFM = 0;
124  int n_HFP = 0;
125  double abseta = 0.0;
126  double eta = 0.0;
127  for(auto const & i : *towers)
128  {
129  eta = i.eta();
130  abseta = std::abs(eta);
131  if(abseta<1.305)
132  {
133  if(i.hadEnergy() >= min_E_HB_)
134  {
135  n_HB++;
136  //edm::Ref<CaloTowerCollection> ref(towers, std::distance(towers->begin(), i));
137  //filterproduct.addObject(TriggerJet, ref);
138  }
139  }
140  else if(abseta>=1.305 && abseta<3)
141  {
142  if(i.hadEnergy() >= min_E_HE_)
143  {
144  n_HE++;
145  //edm::Ref<CaloTowerCollection> ref(towers, std::distance(towers->begin(), i));
146  //filterproduct.addObject(TriggerJet, ref);
147  }
148  }
149  else
150  {
151  if(i.hadEnergy() >= min_E_HF_)
152  {
153  n_HF++;
154  //edm::Ref<CaloTowerCollection> ref(towers, std::distance(towers->begin(), i));
155  //filterproduct.addObject(TriggerJet, ref);
156  if(eta >= 3) { n_HFP++; } else { n_HFM++; }
157  }
158  }
159  }
160 
161  // filter decision
162  bool accept(n_HB<max_N_HB_ && n_HE<max_N_HE_ && n_HF<max_N_HF_ && n_HFP>=min_N_HFP_ && n_HFM>=min_N_HFM_ && n_HF>=min_N_HF_);
163 
164  return accept;
165 }
166 
167 // define as a framework module
170 
T getParameter(std::string const &) const
bool existsAs(std::string const &parameterName, bool trackiness=true) const
checks if a parameter exists as a given type
Definition: ParameterSet.h:161
def setup(process, global_tag, zero_tesla=False)
Definition: GeneralSetup.py:2
Definition: config.py:1
HLTHcalTowerFilter(const edm::ParameterSet &)
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
Definition: TopDQMHelpers.h:30
~HLTHcalTowerFilter() override
edm::EDGetTokenT< CaloTowerCollection > inputToken_
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
ParameterDescriptionBase * add(U const &iLabel, T const &value)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
bool hltFilter(edm::Event &, const edm::EventSetup &, trigger::TriggerFilterObjectWithRefs &filterproduct) const override
static void makeHLTFilterDescription(edm::ParameterSetDescription &desc)
Definition: HLTFilter.cc:29
void addCollectionTag(const edm::InputTag &collectionTag)
collectionTags
void add(std::string const &label, ParameterSetDescription const &psetDescription)
fixed size matrix
bool saveTags() const
Definition: HLTFilter.h:45
HLT enums.
Definition: event.py:1