CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
HLTJets.cc
Go to the documentation of this file.
1 #include <iostream>
2 #include <sstream>
3 #include <istream>
4 #include <fstream>
5 #include <iomanip>
6 #include <string>
7 #include <cmath>
8 #include <functional>
9 #include <stdlib.h>
10 #include <string.h>
11 
13 
15  evtCounter=0;
16 
17  //set parameter defaults
18  _Monte=false;
19  _Debug=false;
20  _CalJetMin=0.;
21  _GenJetMin=0.;
22 }
23 
24 /* Setup the analysis to put the branch-variables into the tree. */
25 void HLTJets::setup(const edm::ParameterSet& pSet, TTree* HltTree) {
26 
27  edm::ParameterSet myJetParams = pSet.getParameter<edm::ParameterSet>("RunParameters") ;
28  std::vector<std::string> parameterNames = myJetParams.getParameterNames() ;
29 
30  for ( std::vector<std::string>::iterator iParam = parameterNames.begin();
31  iParam != parameterNames.end(); iParam++ ){
32  if ( (*iParam) == "Monte" ) _Monte = myJetParams.getParameter<bool>( *iParam );
33  else if ( (*iParam) == "Debug" ) _Debug = myJetParams.getParameter<bool>( *iParam );
34  else if ( (*iParam) == "CalJetMin" ) _CalJetMin = myJetParams.getParameter<double>( *iParam );
35  else if ( (*iParam) == "GenJetMin" ) _GenJetMin = myJetParams.getParameter<double>( *iParam );
36  }
37 
38  const int kMaxRecoPFJet = 10000;
39  jpfrecopt=new float[kMaxRecoPFJet];
40  jpfrecophi=new float[kMaxRecoPFJet];
41  jpfrecoeta=new float[kMaxRecoPFJet];
42  jpfreconeutralHadronFraction=new float[kMaxRecoPFJet];
43  jpfreconeutralEMFraction=new float[kMaxRecoPFJet];
44  jpfrecochargedHadronFraction=new float[kMaxRecoPFJet];
45  jpfrecochargedEMFraction=new float[kMaxRecoPFJet];
46  jpfreconeutralMultiplicity=new int[kMaxRecoPFJet];
47  jpfrecochargedMultiplicity=new int[kMaxRecoPFJet];
48 
49  const int kMaxJetCal = 10000;
50  jcalpt = new float[kMaxJetCal];
51  jcalphi = new float[kMaxJetCal];
52  jcaleta = new float[kMaxJetCal];
53  jcale = new float[kMaxJetCal];
54  jcalemf = new float[kMaxJetCal];
55  jcaln90 = new float[kMaxJetCal];
56 
57  jcorcalpt = new float[kMaxJetCal];
58  jcorcalphi = new float[kMaxJetCal];
59  jcorcaleta = new float[kMaxJetCal];
60  jcorcale = new float[kMaxJetCal];
61  jcorcalemf = new float[kMaxJetCal];
62  jcorcaln90 = new float[kMaxJetCal];
63 
64  const int kMaxJetgen = 10000;
65  jgenpt = new float[kMaxJetgen];
66  jgenphi = new float[kMaxJetgen];
67  jgeneta = new float[kMaxJetgen];
68  jgene = new float[kMaxJetgen];
69  const int kMaxTower = 10000;
70  towet = new float[kMaxTower];
71  toweta = new float[kMaxTower];
72  towphi = new float[kMaxTower];
73  towen = new float[kMaxTower];
74  towem = new float[kMaxTower];
75  towhd = new float[kMaxTower];
76  towoe = new float[kMaxTower];
77  const int kMaxTau = 500;
78  l2tauemiso = new float[kMaxTau];
79  l25tauPt = new float[kMaxTau];
80  l3tautckiso = new int[kMaxTau];
81  tauEta = new float[kMaxTau];
82  tauPt = new float[kMaxTau];
83  tauPhi = new float[kMaxTau];
84 
85  const int kMaxPFTau = 500;
86  ohpfTauEta = new float[kMaxPFTau];
87  ohpfTauPhi = new float[kMaxPFTau];
88  ohpfTauPt = new float[kMaxPFTau];
89  ohpfTauJetPt = new float[kMaxPFTau];
90  ohpfTauLeadTrackPt = new float[kMaxPFTau];
91  ohpfTauLeadPionPt = new float[kMaxPFTau];
92  ohpfTauTrkIso = new float[kMaxPFTau];
93  ohpfTauGammaIso = new float[kMaxPFTau];
94 
95  recopfTauEta = new float[kMaxPFTau];
96  recopfTauPhi = new float[kMaxPFTau];
97  recopfTauPt = new float[kMaxPFTau];
98  recopfTauJetPt = new float[kMaxPFTau];
99  recopfTauLeadTrackPt = new float[kMaxPFTau];
100  recopfTauLeadPionPt = new float[kMaxPFTau];
101  recopfTauTrkIso = new int[kMaxPFTau];
102  recopfTauGammaIso = new int[kMaxPFTau];
103  recopfTauDiscrByTancOnePercent = new float[kMaxPFTau];
104  recopfTauDiscrByTancHalfPercent = new float[kMaxPFTau];
105  recopfTauDiscrByTancQuarterPercent = new float[kMaxPFTau];
106  recopfTauDiscrByTancTenthPercent = new float[kMaxPFTau];
107  recopfTauDiscrByIso = new float[kMaxPFTau];
108  recopfTauDiscrAgainstMuon = new float[kMaxPFTau];
109  recopfTauDiscrAgainstElec = new float[kMaxPFTau];
110 
111  pfMHT = -100;
112  const int kMaxPFJet = 500;
113  pfJetEta = new float[kMaxPFJet];
114  pfJetPhi = new float[kMaxPFJet];
115  pfJetPt = new float[kMaxPFJet];
116 
117  // Jet- MEt-specific branches of the tree
118  HltTree->Branch("NrecoJetCal",&njetcal,"NrecoJetCal/I");
119  HltTree->Branch("NrecoJetGen",&njetgen,"NrecoJetGen/I");
120  HltTree->Branch("NrecoTowCal",&ntowcal,"NrecoTowCal/I");
121  HltTree->Branch("recoJetCalPt",jcalpt,"recoJetCalPt[NrecoJetCal]/F");
122  HltTree->Branch("recoJetCalPhi",jcalphi,"recoJetCalPhi[NrecoJetCal]/F");
123  HltTree->Branch("recoJetCalEta",jcaleta,"recoJetCalEta[NrecoJetCal]/F");
124  HltTree->Branch("recoJetCalE",jcale,"recoJetCalE[NrecoJetCal]/F");
125  HltTree->Branch("recoJetCalEMF",jcalemf,"recoJetCalEMF[NrecoJetCal]/F");
126  HltTree->Branch("recoJetCalN90",jcaln90,"recoJetCalN90[NrecoJetCal]/F");
127 
128  HltTree->Branch("recoJetGenPt",jgenpt,"recoJetGenPt[NrecoJetGen]/F");
129  HltTree->Branch("recoJetGenPhi",jgenphi,"recoJetGenPhi[NrecoJetGen]/F");
130  HltTree->Branch("recoJetGenEta",jgeneta,"recoJetGenEta[NrecoJetGen]/F");
131  HltTree->Branch("recoJetGenE",jgene,"recoJetGenE[NrecoJetGen]/F");
132  HltTree->Branch("recoTowEt",towet,"recoTowEt[NrecoTowCal]/F");
133  HltTree->Branch("recoTowEta",toweta,"recoTowEta[NrecoTowCal]/F");
134  HltTree->Branch("recoTowPhi",towphi,"recoTowPhi[NrecoTowCal]/F");
135  HltTree->Branch("recoTowE",towen,"recoTowE[NrecoTowCal]/F");
136  HltTree->Branch("recoTowEm",towem,"recoTowEm[NrecoTowCal]/F");
137  HltTree->Branch("recoTowHad",towhd,"recoTowHad[NrecoTowCal]/F");
138  HltTree->Branch("recoTowOE",towoe,"recoTowOE[NrecoTowCal]/F");
139  HltTree->Branch("recoMetCal",&mcalmet,"recoMetCal/F");
140  HltTree->Branch("recoMetCalPhi",&mcalphi,"recoMetCalPhi/F");
141  HltTree->Branch("recoMetCalSum",&mcalsum,"recoMetCalSum/F");
142  HltTree->Branch("recoMetGen",&mgenmet,"recoMetGen/F");
143  HltTree->Branch("recoMetGenPhi",&mgenphi,"recoMetGenPhi/F");
144  HltTree->Branch("recoMetGenSum",&mgensum,"recoMetGenSum/F");
145  HltTree->Branch("recoHTCal",&htcalet,"recoHTCal/F");
146  HltTree->Branch("recoHTCalPhi",&htcalphi,"recoHTCalPhi/F");
147  HltTree->Branch("recoHTCalSum",&htcalsum,"recoHTCalSum/F");
148  //for(int ieta=0;ieta<NETA;ieta++){std::cout << " ieta " << ieta << " eta min " << CaloTowerEtaBoundries[ieta] <<std::endl;}
149 
150  HltTree->Branch("NrecoJetCorCal",&ncorjetcal,"NrecoJetCorCal/I");
151  HltTree->Branch("recoJetCorCalPt",jcorcalpt,"recoJetCorCalPt[NrecoJetCorCal]/F");
152  HltTree->Branch("recoJetCorCalPhi",jcorcalphi,"recoJetCorCalPhi[NrecoJetCorCal]/F");
153  HltTree->Branch("recoJetCorCalEta",jcorcaleta,"recoJetCorCalEta[NrecoJetCorCal]/F");
154  HltTree->Branch("recoJetCorCalE",jcorcale,"recoJetCorCalE[NrecoJetCorCal]/F");
155  HltTree->Branch("recoJetCorCalEMF",jcorcalemf,"recoJetCorCalEMF[NrecoJetCorCal]/F");
156  HltTree->Branch("recoJetCorCalN90",jcorcaln90,"recoJetCorCalN90[NrecoJetCorCal]/F");
157 
158  // Taus
159  HltTree->Branch("NohTau",&nohtau,"NohTau/I");
160  HltTree->Branch("ohTauEta",tauEta,"ohTauEta[NohTau]/F");
161  HltTree->Branch("ohTauPhi",tauPhi,"ohTauPhi[NohTau]/F");
162  HltTree->Branch("ohTauPt",tauPt,"ohTauPt[NohTau]/F");
163  HltTree->Branch("ohTauEiso",l2tauemiso,"ohTauEiso[NohTau]/F");
164  HltTree->Branch("ohTauL25Tpt",l25tauPt,"ohTauL25Tpt[NohTau]/F");
165  HltTree->Branch("ohTauL3Tiso",l3tautckiso,"ohTauL3Tiso[NohTau]/I");
166 
167  //ohpfTaus
168  HltTree->Branch("NohpfTau",&nohPFTau,"NohpfTau/I");
169  HltTree->Branch("ohpfTauPt",ohpfTauPt,"ohpfTauPt[NohpfTau]/F");
170  HltTree->Branch("ohpfTauEta",ohpfTauEta,"ohpfTauEta[NohpfTau]/F");
171  HltTree->Branch("ohpfTauPhi",ohpfTauPhi,"ohpfTauPhi[NohpfTau]/F");
172  HltTree->Branch("ohpfTauLeadTrackPt",ohpfTauLeadTrackPt,"ohpfTauLeadTrackPt[NohpfTau]/F");
173  HltTree->Branch("ohpfTauLeadPionPt",ohpfTauLeadPionPt,"ohpfTauLeadPionPt[NohpfTau]/F");
174  HltTree->Branch("ohpfTauTrkIso",ohpfTauTrkIso,"ohpfTauTrkIso[NohpfTau]/F");
175  HltTree->Branch("ohpfTauGammaIso",ohpfTauGammaIso,"ohpfTauGammaIso[NohpfTau]/F");
176  HltTree->Branch("ohpfTauJetPt",ohpfTauJetPt,"ohpfTauJetPt[NohpfTau]/F");
177 
178  //Reco PFTaus
179  nRecoPFTau = 0;
180  HltTree->Branch("NRecoPFTau",&nRecoPFTau,"NRecoPFTau/I");
181  HltTree->Branch("recopfTauPt",recopfTauPt,"recopfTauPt[NRecoPFTau]/F");
182  HltTree->Branch("recopfTauEta",recopfTauEta,"recopfTauEta[NRecoPFTau]/F");
183  HltTree->Branch("recopfTauPhi",recopfTauPhi,"recopfTauPhi[NRecoPFTau]/F");
184  HltTree->Branch("recopfTauLeadTrackPt",recopfTauLeadTrackPt,"recopfTauLeadTrackPt[NRecoPFTau]/F");
185  HltTree->Branch("recopfTauLeadPionPt",recopfTauLeadPionPt,"recopfTauLeadPionPt[NRecoPFTau]/F");
186  HltTree->Branch("recopfTauTrkIso",recopfTauTrkIso,"recopfTauTrkIso[NRecoPFTau]/I");
187  HltTree->Branch("recopfTauGammaIso",recopfTauGammaIso,"recopfTauGammaIso[NRecoPFTau]/I");
188  HltTree->Branch("recopfTauJetPt",recopfTauJetPt,"recopfTauJetPt[NRecoPFTau]/F");
189  HltTree->Branch("recopfTauDiscrByTancOnePercent",recopfTauDiscrByTancOnePercent,"recopfTauDiscrByTancOnePercent[NRecoPFTau]/F");
190  HltTree->Branch("recopfTauDiscrByTancHalfPercent",recopfTauDiscrByTancHalfPercent,"recopfTauDiscrByTancHalfPercent[NRecoPFTau]/F");
191  HltTree->Branch("recopfTauDiscrByTancQuarterPercent",recopfTauDiscrByTancQuarterPercent,"recopfTauDiscrByTancQuarterPercent[NRecoPFTau]/F");
192  HltTree->Branch("recopfTauDiscrByTancTenthPercent",recopfTauDiscrByTancTenthPercent,"recopfTauDiscrByTancTenthPercent[NRecoPFTau]/F");
193  HltTree->Branch("recopfTauDiscrByIso",recopfTauDiscrByIso,"recopfTauDiscrByIso[NRecoPFTau]/F");
194  HltTree->Branch("recopfTauDiscrAgainstMuon",recopfTauDiscrAgainstMuon,"recopfTauDiscrAgainstMuon[NRecoPFTau]/F");
195  HltTree->Branch("recopfTauDiscrAgainstElec",recopfTauDiscrAgainstElec,"recopfTauDiscrAgainstElec[NRecoPFTau]/F");
196 
197  //PFJets
198  HltTree->Branch("pfMHT",&pfMHT,"pfMHT/F");
199  HltTree->Branch("NohPFJet",&nohPFJet,"NohPFJet/I");
200  HltTree->Branch("pfJetPt",pfJetPt,"pfJetPt[NohPFJet]/F");
201  HltTree->Branch("pfJetEta",pfJetEta,"pfJetEta[NohPFJet]/F");
202  HltTree->Branch("pfJetPhi",pfJetPhi,"pfJetPhi[NohPFJet]/F");
203 
204  //RECO PFJets
205  HltTree->Branch("nrpj",&nrpj,"nrpj/I");
206  HltTree->Branch("recopfJetpt", jpfrecopt, "recopfJetpt[nrpj]/F");
207  HltTree->Branch("recopfJetphi", jpfrecophi, "recopfJetphi[nrpj]/F");
208  HltTree->Branch("recopfJeteta", jpfrecoeta, "recopfJeteta[nrpj]/F");
209  HltTree->Branch("recopfJetneutralHadronFraction", jpfreconeutralHadronFraction, "recopfJetneutralHadronFraction[nrpj]/F");
210  HltTree->Branch("recopfJetneutralEMFraction", jpfreconeutralEMFraction, "recopfJetneutralEMFraction[nrpj]/F");
211  HltTree->Branch("recopfJetchargedHadronFraction", jpfrecochargedHadronFraction, "recopfJetchargedHadronFraction[nrpj]/F");
212  HltTree->Branch("recopfJetchargedEMFraction", jpfrecochargedEMFraction, "recopfJetchargedEMFraction[nrpj]/F");
213  HltTree->Branch("recopfJetneutralMultiplicity", jpfreconeutralMultiplicity, "recopfJetneutralMultiplicity[nrpj]/I");
214  HltTree->Branch("recopfJetchargedMultiplicity", jpfrecochargedMultiplicity, "recopfJetchargedMultiplicity[nrpj]/I");
215 
216 }
217 
218 /* **Analyze the event** */
220  const edm::Handle<reco::CaloJetCollection> & calocorjets,
221  const edm::Handle<reco::GenJetCollection> & genjets,
222  const edm::Handle<reco::CaloMETCollection> & recmets,
223  const edm::Handle<reco::GenMETCollection> & genmets,
225  const edm::Handle<reco::HLTTauCollection> & taujets,
228  const edm::Handle<reco::PFTauCollection> & recoPfTaus,
229  const edm::Handle<reco::PFTauDiscriminator> & theRecoPFTauDiscrByTanCOnePercent,
230  const edm::Handle<reco::PFTauDiscriminator> & theRecoPFTauDiscrByTanCHalfPercent,
231  const edm::Handle<reco::PFTauDiscriminator> & theRecoPFTauDiscrByTanCQuarterPercent,
232  const edm::Handle<reco::PFTauDiscriminator> & theRecoPFTauDiscrByTanCTenthPercent,
233  const edm::Handle<reco::PFTauDiscriminator> & theRecoPFTauDiscrByIsolation,
234  const edm::Handle<reco::PFTauDiscriminator> & theRecoPFTauDiscrAgainstElec,
235  const edm::Handle<reco::PFTauDiscriminator> & theRecoPFTauDiscrAgainstMuon,
238  double thresholdForSavingTowers,
239  double minPtCH,
240  double minPtGamma,
241  TTree * HltTree) {
242 
243  if (_Debug) std::cout << " Beginning HLTJets " << std::endl;
244 
245  //initialize branch variables
246  njetcal=0; ncorjetcal=0; njetgen=0;ntowcal=0;
247  mcalmet=0.; mcalphi=0.;
248  mgenmet=0.; mgenphi=0.;
249  htcalet=0.,htcalphi=0.,htcalsum=0.;
250 
251  if (calojets.isValid()) {
252  reco::CaloJetCollection mycalojets;
253  mycalojets=*calojets;
254  std::sort(mycalojets.begin(),mycalojets.end(),PtGreater());
255  typedef reco::CaloJetCollection::const_iterator cjiter;
256  int jcal=0;
257  for ( cjiter i=mycalojets.begin(); i!=mycalojets.end(); i++) {
258 
259  if (i->pt()>_CalJetMin){
260  jcalpt[jcal] = i->pt();
261  jcalphi[jcal] = i->phi();
262  jcaleta[jcal] = i->eta();
263  jcale[jcal] = i->energy();
264  jcalemf[jcal] = i->emEnergyFraction();
265  jcaln90[jcal] = i->n90();
266  jcal++;
267  }
268 
269  }
270  njetcal = jcal;
271  }
272  else {njetcal = 0;}
273 
274  if (calocorjets.isValid()) {
275  reco::CaloJetCollection mycalocorjets;
276  mycalocorjets=*calocorjets;
277  std::sort(mycalocorjets.begin(),mycalocorjets.end(),PtGreater());
278  typedef reco::CaloJetCollection::const_iterator ccorjiter;
279  int jcorcal=0;
280  for ( ccorjiter i=mycalocorjets.begin(); i!=mycalocorjets.end(); i++) {
281 
282  if (i->pt()>_CalJetMin){
283  jcorcalpt[jcorcal] = i->pt();
284  jcorcalphi[jcorcal] = i->phi();
285  jcorcaleta[jcorcal] = i->eta();
286  jcorcale[jcorcal] = i->energy();
287  jcorcalemf[jcorcal] = i->emEnergyFraction();
288  jcorcaln90[jcorcal] = i->n90();
289  jcorcal++;
290  }
291 
292  }
293  ncorjetcal = jcorcal;
294  }
295  else {ncorjetcal = 0;}
296 
297  if (caloTowers.isValid()) {
298  // ntowcal = caloTowers->size();
299  int jtow = 0;
300  for ( CaloTowerCollection::const_iterator tower=caloTowers->begin(); tower!=caloTowers->end(); tower++) {
301  if(tower->energy() > thresholdForSavingTowers)
302  {
303  towet[jtow] = tower->et();
304  toweta[jtow] = tower->eta();
305  towphi[jtow] = tower->phi();
306  towen[jtow] = tower->energy();
307  towem[jtow] = tower->emEnergy();
308  towhd[jtow] = tower->hadEnergy();
309  towoe[jtow] = tower->outerEnergy();
310  jtow++;
311  }
312  }
313  ntowcal = jtow;
314  }
315  else {ntowcal = 0;}
316 
317  if (recmets.isValid()) {
318  typedef reco::CaloMETCollection::const_iterator cmiter;
319  for ( cmiter i=recmets->begin(); i!=recmets->end(); i++) {
320  mcalmet = i->pt();
321  mcalphi = i->phi();
322  mcalsum = i->sumEt();
323  }
324  }
325 
326  if (ht.isValid()) {
327  typedef reco::METCollection::const_iterator iter;
328  for ( iter i=ht->begin(); i!=ht->end(); i++) {
329  htcalet = i->pt();
330  htcalphi = i->phi();
331  htcalsum = i->sumEt();
332  }
333  }
334 
335  if (_Monte){
336 
337  if (genjets.isValid()) {
338  reco::GenJetCollection mygenjets;
339  mygenjets=*genjets;
340  std::sort(mygenjets.begin(),mygenjets.end(),PtGreater());
341  typedef reco::GenJetCollection::const_iterator gjiter;
342  int jgen=0;
343  for ( gjiter i=mygenjets.begin(); i!=mygenjets.end(); i++) {
344 
345  if (i->pt()>_GenJetMin){
346  jgenpt[jgen] = i->pt();
347  jgenphi[jgen] = i->phi();
348  jgeneta[jgen] = i->eta();
349  jgene[jgen] = i->energy();
350  jgen++;
351  }
352 
353  }
354  njetgen = jgen;
355  }
356  else {njetgen = 0;}
357 
358  if (genmets.isValid()) {
359  typedef reco::GenMETCollection::const_iterator gmiter;
360  for ( gmiter i=genmets->begin(); i!=genmets->end(); i++) {
361  mgenmet = i->pt();
362  mgenphi = i->phi();
363  mgensum = i->sumEt();
364  }
365  }
366 
367  }
368 
369 
371 
372  if (taujets.isValid()) {
373  nohtau = taujets->size();
374  reco::HLTTauCollection mytaujets;
375  mytaujets=*taujets;
376  std::sort(mytaujets.begin(),mytaujets.end(),GetPtGreater());
377  typedef reco::HLTTauCollection::const_iterator tauit;
378  int itau=0;
379  for(tauit i=mytaujets.begin(); i!=mytaujets.end(); i++){
380  //Ask for Eta,Phi and Et of the tau:
381  tauEta[itau] = i->getEta();
382  tauPhi[itau] = i->getPhi();
383  tauPt[itau] = i->getPt();
384  //Ask for L2 EMIsolation cut: Nominal cut : < 5
385  l2tauemiso[itau] = i->getEMIsolationValue();
386  //Get L25 LeadTrackPt : Nominal cut : > 20 GeV
387  l25tauPt[itau] = i->getL25LeadTrackPtValue();
388  //Get TrackIsolation response (returns 0 = failed or 1= passed)
389  l3tautckiso[itau] = i->getL3TrackIsolationResponse();
390  //MET : > 65
391  itau++;
392  }
393  }
394  else {nohtau = 0;}
395 
396 
398  if(pfTaus.isValid()) {
399  //float minTrkPt = minPtCH;
400  //float minGammaPt = minPtGamma;
401  nohPFTau = pfTaus->size();
403  std::sort(taus.begin(),taus.end(),GetPFPtGreater());
404  typedef reco::PFTauCollection::const_iterator pftauit;
405  int ipftau=0;
406  float pfMHTx = 0;
407  float pfMHTy = 0;
408  for(pftauit i=taus.begin(); i!=taus.end(); i++){
409  //Ask for Eta,Phi and Et of the tau:
410  ohpfTauEta[ipftau] = i->eta();
411  ohpfTauPhi[ipftau] = i->phi();
412  ohpfTauPt[ipftau] = i->pt();
413  ohpfTauJetPt[ipftau] = i->pfTauTagInfoRef()->pfjetRef()->pt();
414 
415  pfMHTx = pfMHTx + i->pfTauTagInfoRef()->pfjetRef()->px();
416  pfMHTy = pfMHTy + i->pfTauTagInfoRef()->pfjetRef()->py();
417 
418  /*
419  if( (i->leadPFCand()).isNonnull())
420  pfTauLeadPionPt[ipftau] = i->leadPFCand()->pt();
421 */
422  if( (i->leadPFNeutralCand()).isNonnull())
423  ohpfTauLeadPionPt[ipftau] = i->leadPFNeutralCand()->pt();
424  if((i->leadPFChargedHadrCand()).isNonnull())
425  ohpfTauLeadTrackPt[ipftau] = i->leadPFChargedHadrCand()->pt();
426  float maxPtTrkIso = 0;
427  for (unsigned int iTrk = 0; iTrk < i->isolationPFChargedHadrCands().size(); iTrk++)
428  {
429  if(i->isolationPFChargedHadrCands()[iTrk]->pt() > maxPtTrkIso) maxPtTrkIso = i->isolationPFChargedHadrCands()[iTrk]->pt();
430  }
431 
432  ohpfTauTrkIso[ipftau] = maxPtTrkIso;
433  float maxPtGammaIso = 0;
434  for (unsigned int iGamma = 0; iGamma < i->isolationPFGammaCands().size(); iGamma++)
435  {
436  if(i->isolationPFGammaCands()[iGamma]->pt() > maxPtGammaIso) maxPtGammaIso = i->isolationPFGammaCands()[iGamma]->pt();
437  }
438  ohpfTauGammaIso[ipftau] = maxPtGammaIso;
439  ipftau++;
440  }
441  pfMHT = sqrt(pfMHTx*pfMHTx + pfMHTy*pfMHTy);
442 
443  }
444 
446 
447  if(recoPfTaus.isValid()) {
448  float minTrkPt = minPtCH;
449  float minGammaPt = minPtGamma;
450  nRecoPFTau = pfTaus->size();
451  reco::PFTauCollection taus = *recoPfTaus;
452  std::sort(taus.begin(),taus.end(),GetPFPtGreater());
453  typedef reco::PFTauCollection::const_iterator pftauit;
454  int ipftau=0;
455 
456  for(pftauit i=taus.begin(); i!=taus.end(); i++){
457  //Ask for Eta,Phi and Et of the tau:
458  recopfTauEta[ipftau] = i->eta();
459  recopfTauPhi[ipftau] = i->phi();
460  recopfTauPt[ipftau] = i->pt();
461  recopfTauJetPt[ipftau] = i->jetRef()->pt();
462 
463  if( (i->leadPFNeutralCand()).isNonnull())
464  recopfTauLeadPionPt[ipftau] = i->leadPFNeutralCand()->pt();
465  if((i->leadPFChargedHadrCand()).isNonnull())
466  recopfTauLeadTrackPt[ipftau] = i->leadPFChargedHadrCand()->pt();
467  int myTrks=0;
468  for (unsigned int iTrk = 0; iTrk < i->isolationPFChargedHadrCands().size(); iTrk++)
469  {
470  if(i->isolationPFChargedHadrCands()[iTrk]->pt() > minTrkPt) myTrks++;
471  }
472 
473  recopfTauTrkIso[ipftau] = myTrks;
474  int myGammas=0;
475  for (unsigned int iGamma = 0; iGamma < i->isolationPFGammaCands().size(); iGamma++)
476  {
477  if(i->isolationPFGammaCands()[iGamma]->pt() > minGammaPt) myGammas++;
478  }
479  recopfTauGammaIso[ipftau] = myGammas;
480 
481  const reco::PFTauRef thisTauRef(recoPfTaus,ipftau);
482 
483  if(theRecoPFTauDiscrByTanCOnePercent.isValid()){
484  recopfTauDiscrByTancOnePercent[ipftau] = (*theRecoPFTauDiscrByTanCOnePercent)[thisTauRef];}
485  if(theRecoPFTauDiscrByIsolation.isValid()){
486  recopfTauDiscrByIso[ipftau] = (*theRecoPFTauDiscrByIsolation)[thisTauRef];}
487  if(theRecoPFTauDiscrAgainstMuon.isValid()){
488  recopfTauDiscrAgainstMuon[ipftau] = (*theRecoPFTauDiscrAgainstMuon)[thisTauRef];}
489  if(theRecoPFTauDiscrAgainstElec.isValid()){
490  recopfTauDiscrAgainstElec[ipftau] = (*theRecoPFTauDiscrAgainstElec)[thisTauRef];}
491  if(theRecoPFTauDiscrByTanCHalfPercent.isValid()){
492  recopfTauDiscrByTancHalfPercent[ipftau] = (*theRecoPFTauDiscrByTanCHalfPercent)[thisTauRef];}
493  if(theRecoPFTauDiscrByTanCQuarterPercent.isValid()){
494  recopfTauDiscrByTancQuarterPercent[ipftau] = (*theRecoPFTauDiscrByTanCQuarterPercent)[thisTauRef];}
495  if(theRecoPFTauDiscrByTanCTenthPercent.isValid()){
496  recopfTauDiscrByTancTenthPercent[ipftau] = (*theRecoPFTauDiscrByTanCTenthPercent)[thisTauRef];}
497 
498  ipftau++;
499  }
500  }
501 
503  if(pfJets.isValid()) {
504  nohPFJet = pfJets->size();
506  std::sort(Jets.begin(),Jets.end(),GetPFPtGreater());
507  typedef reco::PFJetCollection::const_iterator pfJetit;
508  int ipfJet=0;
509  float pfMHTx = 0;
510  float pfMHTy = 0;
511  for(pfJetit i=Jets.begin(); i!=Jets.end(); i++){
512  //Ask for Eta,Phi and Et of the Jet:
513  pfJetEta[ipfJet] = i->eta();
514  pfJetPhi[ipfJet] = i->phi();
515  pfJetPt[ipfJet] = i->pt();
516 
517  pfMHTx = pfMHTx + i->px();
518  pfMHTy = pfMHTy + i->py();
519  ipfJet++;
520  }
521  pfMHT = sqrt(pfMHTx*pfMHTx + pfMHTy*pfMHTy);
522 
523  }
524 
526  nrpj = 0;
527  if(recoPFJets.isValid()){
528  nrpj = recoPFJets->size();
530  std::sort(Jets.begin(),Jets.end(),GetPFPtGreater());
531  typedef reco::PFJetCollection::const_iterator pfJetit;
532  int ipfJet=0;
533  for(pfJetit i=Jets.begin(); i!=Jets.end(); i++){
534  //Ask for Eta,Phi and Et of the Jet:
535  jpfrecoeta[ipfJet] = i->eta();
536  jpfrecophi[ipfJet] = i->phi();
537  jpfrecopt[ipfJet] = i->pt();
538  jpfreconeutralHadronFraction[ipfJet] = i->neutralHadronEnergyFraction ();
539  jpfrecochargedHadronFraction[ipfJet] = i->chargedHadronEnergyFraction ();
540  jpfreconeutralMultiplicity[ipfJet] = i->neutralMultiplicity ();
541  jpfrecochargedMultiplicity[ipfJet] = i->chargedMultiplicity ();
542  jpfreconeutralEMFraction[ipfJet] = i->neutralEmEnergyFraction ();
543  jpfrecochargedEMFraction[ipfJet] = i->chargedEmEnergyFraction ();
544 
545  ipfJet++;
546  }
547 
548  }
549 
550 }
T getParameter(std::string const &) const
float * tauPhi
Definition: HLTJets.h:109
int i
Definition: DBlmapReader.cc:9
float * jcaln90
Definition: HLTJets.h:96
float * ohpfTauJetPt
Definition: HLTJets.h:112
float _CalJetMin
Definition: HLTJets.h:131
float * recopfTauDiscrAgainstElec
Definition: HLTJets.h:122
std::vector< PFTau > PFTauCollection
collection of PFTau objects
Definition: PFTauFwd.h:9
float * pfJetPhi
Definition: HLTJets.h:117
float * jcorcalpt
Definition: HLTJets.h:97
float * towem
Definition: HLTJets.h:99
bool _Debug
Definition: HLTJets.h:130
float * ohpfTauEta
Definition: HLTJets.h:112
float * jcalemf
Definition: HLTJets.h:96
int * jpfrecochargedMultiplicity
Definition: HLTJets.h:125
float * ohpfTauLeadTrackPt
Definition: HLTJets.h:112
float htcalet
Definition: HLTJets.h:101
bool _Monte
Definition: HLTJets.h:130
float * recopfTauDiscrByTancQuarterPercent
Definition: HLTJets.h:122
std::vector< GenJet > GenJetCollection
collection of GenJet objects
int * recopfTauGammaIso
Definition: HLTJets.h:121
float * recopfTauEta
Definition: HLTJets.h:120
float * jpfrecochargedHadronFraction
Definition: HLTJets.h:124
std::vector< CaloTower >::const_iterator const_iterator
float * ohpfTauPhi
Definition: HLTJets.h:112
float mgensum
Definition: HLTJets.h:102
float mgenphi
Definition: HLTJets.h:102
float * recopfTauDiscrByIso
Definition: HLTJets.h:122
float * recopfTauLeadTrackPt
Definition: HLTJets.h:120
float * recopfTauDiscrByTancHalfPercent
Definition: HLTJets.h:122
float mgenmet
Definition: HLTJets.h:102
float htcalphi
Definition: HLTJets.h:101
float * jpfrecoeta
Definition: HLTJets.h:124
float * toweta
Definition: HLTJets.h:99
float * tauPt
Definition: HLTJets.h:109
float * recopfTauPhi
Definition: HLTJets.h:120
float * jcalphi
Definition: HLTJets.h:96
float * jcorcalphi
Definition: HLTJets.h:97
float * jcale
Definition: HLTJets.h:96
float * recopfTauJetPt
Definition: HLTJets.h:120
float * ohpfTauGammaIso
Definition: HLTJets.h:113
float * pfJetPt
Definition: HLTJets.h:117
T sqrt(T t)
Definition: SSEVec.h:28
float * towet
Definition: HLTJets.h:99
float * ohpfTauTrkIso
Definition: HLTJets.h:113
float * jpfreconeutralHadronFraction
Definition: HLTJets.h:124
float * jcorcale
Definition: HLTJets.h:97
tuple Jets
Definition: METSkim_cff.py:17
float * recopfTauLeadPionPt
Definition: HLTJets.h:120
float * recopfTauPt
Definition: HLTJets.h:120
float * towphi
Definition: HLTJets.h:99
float mcalphi
Definition: HLTJets.h:100
float * jgenphi
Definition: HLTJets.h:98
float * jcalpt
Definition: HLTJets.h:96
float * recopfTauDiscrAgainstMuon
Definition: HLTJets.h:122
std::vector< HLTTau > HLTTauCollection
collection of HLTTau objects
Definition: HLTTauFwd.h:9
std::vector< std::string > getParameterNames() const
int ncorjetcal
Definition: HLTJets.h:103
float * recopfTauDiscrByTancOnePercent
Definition: HLTJets.h:122
bool isValid() const
Definition: HandleBase.h:76
float * tauEta
Definition: HLTJets.h:109
HLTJets()
Definition: HLTJets.cc:14
float * towoe
Definition: HLTJets.h:99
float mcalsum
Definition: HLTJets.h:100
float * ohpfTauLeadPionPt
Definition: HLTJets.h:112
int njetgen
Definition: HLTJets.h:103
float * l25tauPt
Definition: HLTJets.h:106
float * jgeneta
Definition: HLTJets.h:98
float * jcorcaln90
Definition: HLTJets.h:97
float * jpfreconeutralEMFraction
Definition: HLTJets.h:124
int njetcal
Definition: HLTJets.h:103
float * jcaleta
Definition: HLTJets.h:96
float * pfJetEta
Definition: HLTJets.h:117
int ntowcal
Definition: HLTJets.h:103
int * jpfreconeutralMultiplicity
Definition: HLTJets.h:125
int * recopfTauTrkIso
Definition: HLTJets.h:121
void setup(const edm::ParameterSet &pSet, TTree *tree)
Definition: HLTJets.cc:25
int nrpj
Definition: HLTJets.h:126
std::vector< PFJet > PFJetCollection
collection of PFJet objects
void analyze(const edm::Handle< reco::CaloJetCollection > &recojets, const edm::Handle< reco::CaloJetCollection > &corjets, const edm::Handle< reco::GenJetCollection > &gjets, const edm::Handle< reco::CaloMETCollection > &rmets, const edm::Handle< reco::GenMETCollection > &gmets, const edm::Handle< reco::METCollection > &ht, const edm::Handle< reco::HLTTauCollection > &myHLTTau, const edm::Handle< reco::PFTauCollection > &myHLTPFTau, const edm::Handle< reco::PFJetCollection > &myHLTPFJets, const edm::Handle< reco::PFTauCollection > &myRecoPFTau, const edm::Handle< reco::PFTauDiscriminator > &theRecoPFTauDiscrByTanCOnePercent, const edm::Handle< reco::PFTauDiscriminator > &theRecoPFTauDiscrByTanCHalfPercent, const edm::Handle< reco::PFTauDiscriminator > &theRecoPFTauDiscrByTanCQuarterPercent, const edm::Handle< reco::PFTauDiscriminator > &theRecoPFTauDiscrByTanCTenthPercent, const edm::Handle< reco::PFTauDiscriminator > &theRecoPFTauDiscrByIsolation, const edm::Handle< reco::PFTauDiscriminator > &theRecoPFTauDiscrAgainstElec, const edm::Handle< reco::PFTauDiscriminator > &theRecoPFTauDiscrAgainstMuon, const edm::Handle< reco::PFJetCollection > &recoPFJets, const edm::Handle< CaloTowerCollection > &caloTowers, double thresholdForSavingTowers, double minPtCH, double minPtGamma, TTree *tree)
Definition: HLTJets.cc:219
float * jcorcalemf
Definition: HLTJets.h:97
float _GenJetMin
Definition: HLTJets.h:131
float * jpfrecophi
Definition: HLTJets.h:124
int * l3tautckiso
Definition: HLTJets.h:107
int nohPFJet
Definition: HLTJets.h:116
float * jpfrecochargedEMFraction
Definition: HLTJets.h:124
float * towen
Definition: HLTJets.h:99
float mcalmet
Definition: HLTJets.h:100
float * l2tauemiso
Definition: HLTJets.h:106
float * jpfrecopt
Definition: HLTJets.h:124
int nRecoPFTau
Definition: HLTJets.h:119
float * recopfTauDiscrByTancTenthPercent
Definition: HLTJets.h:122
tuple cout
Definition: gather_cfg.py:41
int nohtau
Definition: HLTJets.h:108
float * jcorcaleta
Definition: HLTJets.h:97
float pfMHT
Definition: HLTJets.h:115
int nohPFTau
Definition: HLTJets.h:111
float * jgene
Definition: HLTJets.h:98
float * towhd
Definition: HLTJets.h:99
int evtCounter
Definition: HLTJets.h:133
float * jgenpt
Definition: HLTJets.h:98
float htcalsum
Definition: HLTJets.h:101
float * ohpfTauPt
Definition: HLTJets.h:112
std::vector< CaloJet > CaloJetCollection
collection of CaloJet objects