CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
HLTEgammaCaloIsolFilterPairs.cc
Go to the documentation of this file.
1 
9 
11 
15 
16 //
17 // constructors and destructor
18 //
20 {
21  candTag_ = iConfig.getParameter< edm::InputTag > ("candTag");
22  isoTag_ = iConfig.getParameter< edm::InputTag > ("isoTag");
23  nonIsoTag_ = iConfig.getParameter< edm::InputTag > ("nonIsoTag");
24 
25  isolcut_EB1 = iConfig.getParameter<double> ("isolcutEB1");
26  FracCut_EB1 = iConfig.getParameter<double> ("IsoOverEtCutEB1");
27  IsoloEt2_EB1 = iConfig.getParameter<double> ("IsoOverEt2CutEB1");
28  isolcut_EE1 = iConfig.getParameter<double> ("isolcutEE1");
29  FracCut_EE1 = iConfig.getParameter<double> ("IsoOverEtCutEE1");
30  IsoloEt2_EE1 = iConfig.getParameter<double> ("IsoOverEt2CutEE1");
31 
32  isolcut_EB2 = iConfig.getParameter<double> ("isolcutEB2");
33  FracCut_EB2 = iConfig.getParameter<double> ("IsoOverEtCutEB2");
34  IsoloEt2_EB2 = iConfig.getParameter<double> ("IsoOverEt2CutEB2");
35  isolcut_EE2 = iConfig.getParameter<double> ("isolcutEE2");
36  FracCut_EE2 = iConfig.getParameter<double> ("IsoOverEtCutEE2");
37  IsoloEt2_EE2 = iConfig.getParameter<double> ("IsoOverEt2CutEE2");
38 
39  AlsoNonIso_1 = iConfig.getParameter<bool> ("AlsoNonIso1");
40  AlsoNonIso_2 = iConfig.getParameter<bool> ("AlsoNonIso2");
41 
42  candToken_ = consumes<trigger::TriggerFilterObjectWithRefs>(candTag_);
43  isoToken_ = consumes<reco::RecoEcalCandidateIsolationMap>(isoTag_);
44  if(AlsoNonIso_1 || AlsoNonIso_2) nonIsoToken_ = consumes<reco::RecoEcalCandidateIsolationMap>(nonIsoTag_);
45 }
46 
48 
49 void
53  desc.add<edm::InputTag>("candTag",edm::InputTag(""));
54  desc.add<edm::InputTag>("isoTag",edm::InputTag(""));
55  desc.add<edm::InputTag>("nonIsoTag",edm::InputTag(""));
56  desc.add<double>("isolcutEB1",0.0);
57  desc.add<double>("IsoOverEtCutEB1",0.0);
58  desc.add<double>("IsoOverEt2CutEB1",0.0);
59  desc.add<double>("isolcutEE1",0.0);
60  desc.add<double>("IsoOverEtCutEE1",0.0);
61  desc.add<double>("IsoOverEt2CutEE1",0.0);
62  desc.add<double>("isolcutEB2",0.0);
63  desc.add<double>("IsoOverEtCutEB2",0.0);
64  desc.add<double>("IsoOverEt2CutEB2",0.0);
65  desc.add<double>("isolcutEE2",0.0);
66  desc.add<double>("IsoOverEtCutEE2",0.0);
67  desc.add<double>("IsoOverEt2CutEE2",0.0);
68  desc.add<bool>("AlsoNonIso1",false);
69  desc.add<bool>("AlsoNonIso2",false);
70  descriptions.add("hltEgammaCaloIsolFilterPairs",desc);
71 }
72 
73 // ------------ method called to produce the data ------------
74 bool
76 {
77  using namespace trigger;
78 
80  iEvent.getByToken (candToken_,PrevFilterOutput);
81 
82  std::vector<edm::Ref<reco::RecoEcalCandidateCollection> > recoecalcands;
83  PrevFilterOutput->getObjects(TriggerCluster, recoecalcands);
84  if(recoecalcands.empty()) PrevFilterOutput->getObjects(TriggerPhoton, recoecalcands);
85 
86  //get hold of ecal isolation association map
88  iEvent.getByToken (isoToken_,depMap);
89 
90  //get hold of ecal isolation association map
92  if(AlsoNonIso_1 || AlsoNonIso_2) iEvent.getByToken (nonIsoToken_,depNonIsoMap);
93 
94 
95  int n = 0;
96  // the list should be interpreted as pairs:
97  // <recoecalcands[0],recoecalcands[1]>
98  // <recoecalcands[2],recoecalcands[3]>
99  // <recoecalcands[4],recoecalcands[5]>
100  // .......
101 
102  // Should I check that the size of recoecalcands is even ?
103  for (unsigned int i=0; i<recoecalcands.size(); i=i+2) {
104 
107  // std::cout<<"CaloIsol 1) Et Eta phi: "<<r1->et()<<" "<<r1->eta()<<" "<<r1->phi()<<" 2) Et eta phi: "<<r2->et()<<" "<<r2->eta()<<" "<<r2->phi()<<std::endl;
108 
109  if( PassCaloIsolation(r1,*depMap,*depNonIsoMap,1,AlsoNonIso_1) && PassCaloIsolation(r2,*depMap,*depNonIsoMap,2,AlsoNonIso_2) )
110  {
111  n++;
112  filterproduct.addObject(TriggerCluster, r1);
113  filterproduct.addObject(TriggerCluster, r2);
114  }
115  }
116 
117  // filter decision
118  bool accept(n>=1);
119 
120  return accept;
121 }
122 
124 
125 
127 
128  if(mapi==IsoMap.end()) {
129  if(ChekAlsoNonIso) mapi = NonIsoMap.find( ref );
130  }
131 
132  float vali = mapi->val;
133  float IsoOE= vali/ref->et();
134  float IsoOE2= IsoOE/ref->et();
135  double isolcut=0,FracCut=0,IsoloEt2=0;
136  if( fabs(ref->eta()) < 1.479){
137  if(which==1){
138  isolcut = isolcut_EB1;
139  FracCut = FracCut_EB1;
140  IsoloEt2 = IsoloEt2_EB1;
141  }
142  else if(which==2){
143  isolcut = isolcut_EB2;
144  FracCut = FracCut_EB2;
145  IsoloEt2 = IsoloEt2_EB2;
146  }
147  else {return false;}
148  }
149  else {
150  if(which==1){
151  isolcut = isolcut_EE1;
152  FracCut = FracCut_EE1;
153  IsoloEt2 = IsoloEt2_EE1;
154  }
155  else if(which==2){
156  isolcut = isolcut_EE2;
157  FracCut = FracCut_EE2;
158  IsoloEt2 = IsoloEt2_EE2;
159  }
160  else {return false;}
161  }
162 
163  if ( vali < isolcut || IsoOE < FracCut || IsoOE2 < IsoloEt2 ) { return true;}
164  return false;
165 }
T getParameter(std::string const &) const
int i
Definition: DBlmapReader.cc:9
def which
Definition: eostools.py:335
const_iterator end() const
last iterator over the map (read only)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:464
const_iterator find(const key_type &k) const
find element with specified reference key
HLTEgammaCaloIsolFilterPairs(const edm::ParameterSet &)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
Definition: TopDQMHelpers.h:24
void addObject(int id, const reco::RecoEcalCandidateRef &ref)
setters for L3 collections: (id=physics type, and Ref&lt;C&gt;)
int iEvent
Definition: GenABIO.cc:230
edm::EDGetTokenT< trigger::TriggerFilterObjectWithRefs > candToken_
bool PassCaloIsolation(edm::Ref< reco::RecoEcalCandidateCollection > ref, const reco::RecoEcalCandidateIsolationMap &IsoMap, const reco::RecoEcalCandidateIsolationMap &NonIsoMap, int which, bool ChekAlsoNonIso) const
ParameterDescriptionBase * add(U const &iLabel, T const &value)
virtual bool hltFilter(edm::Event &, const edm::EventSetup &, trigger::TriggerFilterObjectWithRefs &filterproduct) const override
static void makeHLTFilterDescription(edm::ParameterSetDescription &desc)
Definition: HLTFilter.cc:29
edm::EDGetTokenT< reco::RecoEcalCandidateIsolationMap > isoToken_
void add(std::string const &label, ParameterSetDescription const &psetDescription)
edm::EDGetTokenT< reco::RecoEcalCandidateIsolationMap > nonIsoToken_