CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
HSCPHLTFilter Class Reference
Inheritance diagram for HSCPHLTFilter:
edm::EDFilter edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 HSCPHLTFilter (const edm::ParameterSet &)
 
 ~HSCPHLTFilter () override
 
- Public Member Functions inherited from edm::EDFilter
 EDFilter ()
 
SerialTaskQueueglobalLuminosityBlocksQueue ()
 
SerialTaskQueueglobalRunsQueue ()
 
ModuleDescription const & moduleDescription () const
 
 ~EDFilter () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
 ~ProducerBase () noexcept(false) override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Member Functions

void beginJob () override
 
void endJob () override
 
bool filter (edm::Event &, const edm::EventSetup &) override
 
bool IncreasedTreshold (const trigger::TriggerEvent &trEv, const edm::InputTag &InputPath, double NewThreshold, double etaCut, int NObjectAboveThreshold, bool averageThreshold)
 
bool isDuplicate (unsigned int Run, unsigned int Event)
 

Private Attributes

int CaloMetTriggerMask
 
unsigned int CountEvent
 
std::map< std::string, bool > DuplicateMap
 
int L2MuMETTriggerMask
 
unsigned int MaxPrint
 
int MuonTrigger1Mask
 
int MuonTrigger2Mask
 
int PFMetTriggerMask
 
bool RemoveDuplicates
 
edm::EDGetTokenT< trigger::TriggerEventtrEvToken
 
std::string TriggerProcess
 
edm::EDGetTokenT< edm::TriggerResultstriggerResultsToken_
 

Additional Inherited Members

- Public Types inherited from edm::EDFilter
typedef EDFilter ModuleType
 
- Public Types inherited from edm::ProducerBase
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex >>
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::EDFilter
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
static bool wantsGlobalLuminosityBlocks ()
 
static bool wantsGlobalRuns ()
 
static bool wantsStreamLuminosityBlocks ()
 
static bool wantsStreamRuns ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Definition at line 24 of file HSCPHLTFilter.cc.

Constructor & Destructor Documentation

HSCPHLTFilter::HSCPHLTFilter ( const edm::ParameterSet iConfig)
explicit

Definition at line 54 of file HSCPHLTFilter.cc.

References edm::ParameterSet::getParameter(), and AlCaHLTBitMon_QueryRunRegistry::string.

55 {
56  RemoveDuplicates = iConfig.getParameter<bool> ("RemoveDuplicates");
57 
58  TriggerProcess = iConfig.getParameter<std::string> ("TriggerProcess");
59  triggerResultsToken_ = consumes<edm::TriggerResults>(edm::InputTag("TriggerResults", "", TriggerProcess));
60 
61  trEvToken = consumes< trigger::TriggerEvent >( edm::InputTag( "hltTriggerSummaryAOD" ) );
62  MuonTrigger1Mask = iConfig.getParameter<int> ("MuonTrigger1Mask");
63  PFMetTriggerMask = iConfig.getParameter<int> ("PFMetTriggerMask");
64  L2MuMETTriggerMask = iConfig.getParameter<int> ("L2MuMETTriggerMask");
65 
66  CountEvent = 0;
67  MaxPrint = 10000;
68 }
T getParameter(std::string const &) const
edm::EDGetTokenT< edm::TriggerResults > triggerResultsToken_
unsigned int MaxPrint
std::string TriggerProcess
edm::EDGetTokenT< trigger::TriggerEvent > trEvToken
unsigned int CountEvent
HSCPHLTFilter::~HSCPHLTFilter ( )
override

Definition at line 71 of file HSCPHLTFilter.cc.

71  {
72 }

Member Function Documentation

void HSCPHLTFilter::beginJob ( void  )
overrideprivatevirtual

Reimplemented from edm::EDFilter.

Definition at line 75 of file HSCPHLTFilter.cc.

75  {
76 }
void HSCPHLTFilter::endJob ( void  )
overrideprivatevirtual

Reimplemented from edm::EDFilter.

Definition at line 79 of file HSCPHLTFilter.cc.

79  {
80 }
bool HSCPHLTFilter::filter ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivate

Definition at line 95 of file HSCPHLTFilter.cc.

References edm::TriggerResultsByName::accept(), edmIntegrityCheck::d, edm::EventAuxiliary::event(), edm::Event::eventAuxiliary(), cmsRelvalreport::exit, edm::Event::getByToken(), mps_fire::i, edm::TriggerResultsByName::isValid(), edm::HandleBase::isValid(), edm::EventAuxiliary::run(), edm::TriggerResultsByName::size(), mps_setup::stdout, edm::TriggerResultsByName::triggerIndex(), edm::TriggerResultsByName::triggerName(), edm::triggerResults(), and edm::Event::triggerResultsByName().

96 {
98  iEvent.getByToken(triggerResultsToken_, triggerResults);
99 
100  edm::TriggerResultsByName tr(nullptr, nullptr);
101  if (triggerResults.isValid()) {
102  tr = iEvent.triggerResultsByName(*triggerResults);
103  }
104  if(!tr.isValid()){ printf("NoValidTrigger\n"); }
105 
106 
107  if(RemoveDuplicates) {
108  if(isDuplicate(iEvent.eventAuxiliary().run(),iEvent.eventAuxiliary().event()))return false;
109  else return true;
110  }
111 
112  //for(unsigned int i=0;i<tr.size();i++){
113  //printf("Path %3i %50s --> %1i\n",i, tr.triggerName(i).c_str(),tr.accept(i));
114  //}fflush(stdout);
115 
117  iEvent.getByToken(trEvToken, trEvHandle);
118  trigger::TriggerEvent trEv = *trEvHandle;
119 
120  CountEvent++;
121  //if(CountEvent<MaxPrint)printf("------------------------\n");
122 
123  unsigned int TrIndex_Unknown = tr.size();
124 
125 
126  bool MuonTrigger1 = false;
127  bool PFMetTrigger = false;
128  bool L2MuMETTrigger = false;
129 
130 
131  // HLT TRIGGER BASED ON 1 MUON!
132  //Only look for trigger if we are making a decision based on it
133  if(MuonTrigger1Mask!=0) {
134  if(TrIndex_Unknown != tr.triggerIndex("HLT_Mu40_eta2p1_v5")) {
135  if(tr.accept(tr.triggerIndex("HLT_Mu40_eta2p1_v5"))){MuonTrigger1 = true;}
136  }else{
137  if(TrIndex_Unknown != tr.triggerIndex("HLT_Mu40_eta2p1_v4")) {
138  if(tr.accept(tr.triggerIndex("HLT_Mu40_eta2p1_v4"))){MuonTrigger1 = true;}
139  }else{
140  if(TrIndex_Unknown != tr.triggerIndex("HLT_Mu40_eta2p1_v1")) {
141  if(tr.accept(tr.triggerIndex("HLT_Mu40_eta2p1_v1"))){MuonTrigger1 = true;}
142  }else{
143  if(TrIndex_Unknown != tr.triggerIndex("HLT_Mu30_v8")){
144  if(IncreasedTreshold(trEv, InputTag("hltSingleMu30L2QualL3Filtered30","",TriggerProcess), 40, 2.1, 1, false)){MuonTrigger1 = true;}
145  }else{
146  if(TrIndex_Unknown != tr.triggerIndex("HLT_Mu30_v7")){
147  if(IncreasedTreshold(trEv, InputTag("hltSingleMu30L2QualL3Filtered30","",TriggerProcess), 40, 2.1, 1, false)){MuonTrigger1 = true;}
148  }else{
149  if(TrIndex_Unknown != tr.triggerIndex("HLT_Mu30_v6")){
150  if(IncreasedTreshold(trEv, InputTag("hltSingleMu30L2QualL3Filtered30","",TriggerProcess), 40, 2.1, 1, false)){MuonTrigger1 = true;}
151  }else{
152  if(TrIndex_Unknown != tr.triggerIndex("HLT_Mu30_v5")){
153  if(IncreasedTreshold(trEv, InputTag("hltSingleMu30L3Filtered30","",TriggerProcess), 40, 2.1, 1, false)){MuonTrigger1 = true;}
154  }else{
155  if(TrIndex_Unknown != tr.triggerIndex("HLT_Mu30_v4")){
156  if(IncreasedTreshold(trEv, InputTag("hltSingleMu30L3Filtered30","",TriggerProcess), 40, 2.1, 1, false)){MuonTrigger1 = true;}
157  }else{
158  if(TrIndex_Unknown != tr.triggerIndex("HLT_Mu30_v3")){
159  if(IncreasedTreshold(trEv, InputTag("hltSingleMu30L3Filtered30","",TriggerProcess), 40, 2.1, 1, false)){MuonTrigger1 = true;}
160  }else{
161  if(TrIndex_Unknown != tr.triggerIndex("HLT_Mu30_v2")){
162  if(IncreasedTreshold(trEv, InputTag("hltSingleMu30L3Filtered30","",TriggerProcess), 40, 2.1, 1, false)){MuonTrigger1 = true;}
163  }else{
164  if(TrIndex_Unknown != tr.triggerIndex("HLT_Mu30_v1")){
165  if(IncreasedTreshold(trEv, InputTag("hltSingleMu30L3Filtered30","",TriggerProcess), 40, 2.1, 1, false)){MuonTrigger1 = true;}
166  }else{
167  printf("HSCPHLTFilter --> HLT_Mu30_v1 not found\n");
168  for(unsigned int i=0;i<tr.size();i++){
169  printf("Path %3i %50s --> %1i\n",i, tr.triggerName(i).c_str(),tr.accept(i));
170  }fflush(stdout);
171  exit(0);
172  }
173  }
174  }
175  }
176  }
177  }
178  }
179  }
180  }
181  }
182  }
183  }
184 
185  // HLT TRIGGER BASED ON PF MET!
186  //Only look for trigger if we are making a decision based on it
187  if(PFMetTriggerMask!=0) {
188  if(TrIndex_Unknown != tr.triggerIndex("HLT_PFMHT150_v17")){
189  if(tr.accept(tr.triggerIndex("HLT_PFMHT150_v17"))){PFMetTrigger = true;}
190  }else{
191  if(TrIndex_Unknown != tr.triggerIndex("HLT_PFMHT150_v16")){
192  if(tr.accept(tr.triggerIndex("HLT_PFMHT150_v16"))){PFMetTrigger = true;}
193  }else{
194  if(TrIndex_Unknown != tr.triggerIndex("HLT_PFMHT150_v12")){
195  if(tr.accept(tr.triggerIndex("HLT_PFMHT150_v12"))){PFMetTrigger = true;}
196  }else{
197  if(TrIndex_Unknown != tr.triggerIndex("HLT_PFMHT150_v11")){
198  if(tr.accept(tr.triggerIndex("HLT_PFMHT150_v11"))){PFMetTrigger = true;}
199  }else{
200  if(TrIndex_Unknown != tr.triggerIndex("HLT_PFMHT150_v10")){
201  if(tr.accept(tr.triggerIndex("HLT_PFMHT150_v10"))){PFMetTrigger = true;}
202  }else{
203  if(TrIndex_Unknown != tr.triggerIndex("HLT_PFMHT150_v9")){
204  if(tr.accept(tr.triggerIndex("HLT_PFMHT150_v9"))){PFMetTrigger = true;}
205  }else{
206  if(TrIndex_Unknown != tr.triggerIndex("HLT_PFMHT150_v8")){
207  if(tr.accept(tr.triggerIndex("HLT_PFMHT150_v8"))){PFMetTrigger = true;}
208  }else{
209  if(TrIndex_Unknown != tr.triggerIndex("HLT_PFMHT150_v7")){
210  if(tr.accept(tr.triggerIndex("HLT_PFMHT150_v7"))){PFMetTrigger = true;}
211  }else{
212  if(TrIndex_Unknown != tr.triggerIndex("HLT_PFMHT150_v6")){
213  if(tr.accept(tr.triggerIndex("HLT_PFMHT150_v6"))){PFMetTrigger = true;}
214  }else{
215  if(TrIndex_Unknown != tr.triggerIndex("HLT_PFMHT150_v5")){
216  if(tr.accept(tr.triggerIndex("HLT_PFMHT150_v5"))){PFMetTrigger = true;}
217  }else{
218  if(TrIndex_Unknown != tr.triggerIndex("HLT_PFMHT150_v4")){
219  if(tr.accept(tr.triggerIndex("HLT_PFMHT150_v4"))){PFMetTrigger = true;}
220  }else{
221  if(TrIndex_Unknown != tr.triggerIndex("HLT_PFMHT150_v3")){
222  if(tr.accept(tr.triggerIndex("HLT_PFMHT150_v3"))){PFMetTrigger = true;}
223  }else{
224  if(TrIndex_Unknown != tr.triggerIndex("HLT_PFMHT150_v2")){
225  if(tr.accept(tr.triggerIndex("HLT_PFMHT150_v2"))){PFMetTrigger = true;}
226  }else{
227  if(TrIndex_Unknown != tr.triggerIndex("HLT_PFMHT150_v1")){
228  if(tr.accept(tr.triggerIndex("HLT_PFMHT150_v1"))){PFMetTrigger = true;}
229  }else{
230  printf("HSCPHLTFilter --> HLT_PFMHT150_v2 or v1 not found\n");
231  for(unsigned int i=0;i<tr.size();i++){
232  printf("Path %3i %50s --> %1i\n",i, tr.triggerName(i).c_str(),tr.accept(i));
233  }fflush(stdout);
234  exit(0);
235  }
236  }
237  }
238  }
239  }
240  }
241  }
242  }
243  }
244  }
245  }
246  }
247  }
248  }
249  }
250 
251  // HLT TRIGGER BASED ON L2Mu + MET!
252  //Only look for trigger if we are making a decision based on it
253  if(L2MuMETTriggerMask!=0) {
254  //Early 2011 running had a L2Mu60_1Hit_MET40 which was prescaled away, need to raise threshold
255 
256  if(TrIndex_Unknown != tr.triggerIndex("HLT_L2Mu60_1Hit_MET60_v6")){
257  if(tr.accept(tr.triggerIndex("HLT_L2Mu60_1Hit_MET60_v6"))){L2MuMETTrigger = true;}
258  }else{
259  if(TrIndex_Unknown != tr.triggerIndex("HLT_L2Mu60_1Hit_MET60_v5")){
260  if(tr.accept(tr.triggerIndex("HLT_L2Mu60_1Hit_MET60_v5"))){L2MuMETTrigger = true;}
261  }else{
262  if(TrIndex_Unknown != tr.triggerIndex("HLT_L2Mu60_1Hit_MET60_v4")){
263  if(tr.accept(tr.triggerIndex("HLT_L2Mu60_1Hit_MET60_v4"))){L2MuMETTrigger = true;}
264  }else{
265  if(TrIndex_Unknown != tr.triggerIndex("HLT_L2Mu60_1Hit_MET60_v3")){
266  if(tr.accept(tr.triggerIndex("HLT_L2Mu60_1Hit_MET60_v3"))){L2MuMETTrigger = true;}
267  }else{
268  if(TrIndex_Unknown != tr.triggerIndex("HLT_L2Mu60_1Hit_MET60_v2")) {
269  if(tr.accept(tr.triggerIndex("HLT_L2Mu60_1Hit_MET60_v2"))){L2MuMETTrigger = true;}
270  }else{
271  if(TrIndex_Unknown != tr.triggerIndex("HLT_L2Mu60_1Hit_MET60_v1")){
272  if(tr.accept(tr.triggerIndex("HLT_L2Mu60_1Hit_MET60_v1"))){L2MuMETTrigger = true;}
273  }
274  }
275  }
276  }
277  }
278  }
279 
280  if(L2MuMETTriggerMask==2) {
281  //Special case for background MC in 2011 as it does not have trigger included in menu. Background MC only used as cross check
282  //so make approximation of trigger to collect similar events for checks
283  if(IncreasedTreshold(trEv, InputTag("hltL2Mu20L2Filtered20","",TriggerProcess), 60, 2.1, 1, false) &&
284  IncreasedTreshold(trEv, InputTag("hltMET80","",TriggerProcess), 80, 2.1, 1, false)) {L2MuMETTrigger = true;}
285  }
286  }
287 
288  //printf("Bits = %1i %1i %1i X Mask = %+2i %+2i %+2i -->",MuonTrigger,CaloMetTrigger,CaloMetTrigger,MuonTriggerMask,CaloMetTriggerMask,CaloMetTriggerMask);
289 
290  if(MuonTrigger1Mask==0)MuonTrigger1=false;
291  if(PFMetTriggerMask ==0)PFMetTrigger =false;
292  if(L2MuMETTriggerMask==0) L2MuMETTrigger=false;
293 
294  //Allow option of requiring that one of the triggers did NOT fire to remove duplicated events
295  if(MuonTrigger1Mask<0 && MuonTrigger1) return false;
296  if(PFMetTriggerMask<0 && PFMetTrigger) return false;
297  if(L2MuMETTriggerMask<0 && L2MuMETTrigger) return false;
298 
299  bool d = (MuonTrigger1 | PFMetTrigger | L2MuMETTrigger);
300  /* printf("%i\n",d);*/return d;
301 
302 }
EventAuxiliary const & eventAuxiliary() const override
Definition: Event.h:92
edm::EDGetTokenT< edm::TriggerResults > triggerResultsToken_
The single EDProduct to be saved for each event (AOD case)
Definition: TriggerEvent.h:25
TriggerResultsByName triggerResultsByName(edm::TriggerResults const &triggerResults) const override
Definition: Event.cc:265
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:517
RunNumber_t run() const
bool isDuplicate(unsigned int Run, unsigned int Event)
static std::string const triggerResults
Definition: EdmProvDump.cc:45
bool isValid() const
Definition: HandleBase.h:74
std::string TriggerProcess
edm::EDGetTokenT< trigger::TriggerEvent > trEvToken
bool IncreasedTreshold(const trigger::TriggerEvent &trEv, const edm::InputTag &InputPath, double NewThreshold, double etaCut, int NObjectAboveThreshold, bool averageThreshold)
unsigned int CountEvent
EventNumber_t event() const
bool HSCPHLTFilter::IncreasedTreshold ( const trigger::TriggerEvent trEv,
const edm::InputTag InputPath,
double  NewThreshold,
double  etaCut,
int  NObjectAboveThreshold,
bool  averageThreshold 
)
private

Definition at line 304 of file HSCPHLTFilter.cc.

References Average, DEFINE_FWK_MODULE, PVValHelper::eta, fftjetproducer_cfi::etaCut, trigger::TriggerEvent::filterIds(), trigger::TriggerEvent::filterIndex(), trigger::TriggerEvent::filterKeys(), trigger::TriggerEvent::getObjects(), mps_fire::i, SiStripPI::max, gen::n, EnergyCorrector::pt, trigger::TriggerEvent::sizeFilters(), and jetUpdater_cfi::sort.

305 {
306  unsigned int filterIndex = trEv.filterIndex(InputPath);
307  //if(filterIndex<trEv.sizeFilters())printf("SELECTED INDEX =%i --> %s XXX %s\n",filterIndex,trEv.filterTag(filterIndex).label().c_str(), trEv.filterTag(filterIndex).process().c_str());
308 
309  if (filterIndex<trEv.sizeFilters()){
310  const trigger::Vids& VIDS(trEv.filterIds(filterIndex));
311  const trigger::Keys& KEYS(trEv.filterKeys(filterIndex));
312  const int nI(VIDS.size());
313  const int nK(KEYS.size());
314  assert(nI==nK);
315  const int n(std::max(nI,nK));
316  const trigger::TriggerObjectCollection& TOC(trEv.getObjects());
317 
318 
319  if(!averageThreshold){
320  int NObjectAboveThresholdObserved = 0;
321  for (int i=0; i!=n; ++i) {
322  if(TOC[KEYS[i]].pt()> NewThreshold && fabs(TOC[KEYS[i]].eta())<etaCut) NObjectAboveThresholdObserved++;
323  //cout << " " << i << " " << VIDS[i] << "/" << KEYS[i] << ": "<< TOC[KEYS[i]].id() << " " << TOC[KEYS[i]].pt() << " " << TOC[KEYS[i]].eta() << " " << TOC[KEYS[i]].phi() << " " << TOC[KEYS[i]].mass()<< endl;
324  }
325  if(NObjectAboveThresholdObserved>=NObjectAboveThreshold)return true;
326 
327  }else{
328  std::vector<double> ObjPt;
329 
330  for (int i=0; i!=n; ++i) {
331  ObjPt.push_back(TOC[KEYS[i]].pt());
332  //cout << " " << i << " " << VIDS[i] << "/" << KEYS[i] << ": "<< TOC[KEYS[i]].id() << " " << TOC[KEYS[i]].pt() << " " << TOC[KEYS[i]].eta() << " " << TOC[KEYS[i]].phi() << " " << TOC[KEYS[i]].mass()<< endl;
333  }
334  if((int)(ObjPt.size())<NObjectAboveThreshold)return false;
335  std::sort(ObjPt.begin(), ObjPt.end());
336 
337  double Average = 0;
338  for(int i=0; i<NObjectAboveThreshold;i++){
339  Average+= ObjPt[ObjPt.size()-1-i];
340  }Average/=NObjectAboveThreshold;
341  //cout << "AVERAGE = " << Average << endl;
342 
343  if(Average>NewThreshold)return true;
344  }
345  }
346  return false;
347 }
trigger::size_type sizeFilters() const
Definition: TriggerEvent.h:135
const Keys & filterKeys(trigger::size_type index) const
Definition: TriggerEvent.h:111
trigger::size_type filterIndex(const edm::InputTag &filterTag) const
find index of filter in data-member vector from filter tag
Definition: TriggerEvent.h:123
const Vids & filterIds(trigger::size_type index) const
Definition: TriggerEvent.h:110
const TriggerObjectCollection & getObjects() const
Definition: TriggerEvent.h:98
std::vector< TriggerObject > TriggerObjectCollection
collection of trigger physics objects (e.g., all isolated muons)
Definition: TriggerObject.h:81
std::vector< size_type > Keys
std::vector< int > Vids
bool HSCPHLTFilter::isDuplicate ( unsigned int  Run,
unsigned int  Event 
)
private

Definition at line 83 of file HSCPHLTFilter.cc.

References AlCaHLTBitMon_QueryRunRegistry::string, and tmp.

83  {
84  char tmp[255];sprintf(tmp,"%i_%i",Run,Event);
85  std::map<std::string, bool >::iterator it = DuplicateMap.find(std::string(tmp));
86  if(it==DuplicateMap.end()){
87  DuplicateMap[std::string(tmp)] = true;
88  return false;
89  }
90  return true;
91 }
std::map< std::string, bool > DuplicateMap
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
Definition: Run.h:45

Member Data Documentation

int HSCPHLTFilter::CaloMetTriggerMask
private

Definition at line 48 of file HSCPHLTFilter.cc.

unsigned int HSCPHLTFilter::CountEvent
private

Definition at line 42 of file HSCPHLTFilter.cc.

std::map<std::string, bool > HSCPHLTFilter::DuplicateMap
private

Definition at line 40 of file HSCPHLTFilter.cc.

int HSCPHLTFilter::L2MuMETTriggerMask
private

Definition at line 49 of file HSCPHLTFilter.cc.

unsigned int HSCPHLTFilter::MaxPrint
private

Definition at line 43 of file HSCPHLTFilter.cc.

int HSCPHLTFilter::MuonTrigger1Mask
private

Definition at line 45 of file HSCPHLTFilter.cc.

int HSCPHLTFilter::MuonTrigger2Mask
private

Definition at line 46 of file HSCPHLTFilter.cc.

int HSCPHLTFilter::PFMetTriggerMask
private

Definition at line 47 of file HSCPHLTFilter.cc.

bool HSCPHLTFilter::RemoveDuplicates
private

Definition at line 44 of file HSCPHLTFilter.cc.

edm::EDGetTokenT< trigger::TriggerEvent > HSCPHLTFilter::trEvToken
private

Definition at line 39 of file HSCPHLTFilter.cc.

std::string HSCPHLTFilter::TriggerProcess
private

Definition at line 37 of file HSCPHLTFilter.cc.

edm::EDGetTokenT<edm::TriggerResults> HSCPHLTFilter::triggerResultsToken_
private

Definition at line 38 of file HSCPHLTFilter.cc.