CMS 3D CMS Logo

StudyCaloResponse.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: IsolatedParticles
4 // Class: StudyCaloResponse
5 //
13 //
14 // Original Author: Sunanda Banerjee
15 // Created: Thu Mar 4 18:52:02 CST 2011
16 //
17 //
18 
19 // system include files
20 #include <memory>
21 #include <string>
22 
23 // Root objects
24 #include "TH1.h"
25 #include "TH2.h"
26 #include "TTree.h"
27 
28 // user include files
35 
38 
60 
69 
77 
84 
85 class StudyCaloResponse : public edm::one::EDAnalyzer<edm::one::WatchRuns, edm::one::SharedResources> {
86 public:
87  explicit StudyCaloResponse(const edm::ParameterSet&);
88  ~StudyCaloResponse() override {}
89 
90  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
91 
92 private:
93  void analyze(edm::Event const&, edm::EventSetup const&) override;
94  void beginJob() override;
95  void beginRun(edm::Run const&, edm::EventSetup const&) override;
96  void endRun(edm::Run const&, edm::EventSetup const&) override;
99 
100  void clear();
101  void fillTrack(int, double, double, double, double);
102  void fillIsolation(int, double, double, double);
103  void fillEnergy(int, int, double, double, double, double, double);
106 
107  // ----------member data ---------------------------
108  static const int nPBin_ = 15, nEtaBin_ = 4, nPVBin_ = 4;
109  static const int nGen_ = (nPVBin_ + 12);
112  const int verbosity_;
113  const std::vector<std::string> trigNames_, newNames_;
116  const double minTrackP_, maxTrackEta_;
117  const double tMinE_, tMaxE_, tMinH_, tMaxH_;
119  const double cutMuon_, cutEcal_, cutRatio_;
120  const std::vector<double> puWeights_;
123  std::vector<std::string> HLTNames_;
125 
137 
140  TH2I* h_nHLTvsRN;
141  std::vector<TH1I*> h_HLTAccepts;
142  TH1D *h_p[nGen_ + 2], *h_pt[nGen_ + 2], *h_counter[8];
143  TH1D *h_eta[nGen_ + 2], *h_phi[nGen_ + 2], *h_h_pNew[8];
144  TH1I* h_ntrk[2];
145  TH1D *h_maxNearP[2], *h_ene1[2], *h_ene2[2], *h_ediff[2];
146  TH1D* h_energy[nPVBin_ + 8][nPBin_][nEtaBin_][6];
147  TTree* tree_;
149  double pBin_[nPBin_ + 1];
152  std::vector<std::string> tr_TrigName;
153  std::vector<double> tr_TrkPt, tr_TrkP, tr_TrkEta, tr_TrkPhi;
154  std::vector<double> tr_MaxNearP31X31, tr_MaxNearHcalP7x7;
155  std::vector<double> tr_H3x3, tr_H5x5, tr_H7x7;
156  std::vector<double> tr_FE7x7P, tr_FE11x11P, tr_FE15x15P;
157  std::vector<bool> tr_SE7x7P, tr_SE11x11P, tr_SE15x15P;
158  std::vector<int> tr_iEta, tr_TrkID;
159 };
160 
162  : verbosity_(iConfig.getUntrackedParameter<int>("verbosity", 0)),
163  trigNames_(iConfig.getUntrackedParameter<std::vector<std::string> >("triggers")),
164  newNames_(iConfig.getUntrackedParameter<std::vector<std::string> >("newNames")),
165  labelMuon_(iConfig.getUntrackedParameter<edm::InputTag>("labelMuon")),
166  labelGenTrack_(iConfig.getUntrackedParameter<edm::InputTag>("labelTrack")),
167  theTrackQuality_(iConfig.getUntrackedParameter<std::string>("trackQuality", "highPurity")),
168  minTrackP_(iConfig.getUntrackedParameter<double>("minTrackP", 1.0)),
169  maxTrackEta_(iConfig.getUntrackedParameter<double>("maxTrackEta", 2.5)),
170  tMinE_(iConfig.getUntrackedParameter<double>("timeMinCutECAL", -500.)),
171  tMaxE_(iConfig.getUntrackedParameter<double>("timeMaxCutECAL", 500.)),
172  tMinH_(iConfig.getUntrackedParameter<double>("timeMinCutHCAL", -500.)),
173  tMaxH_(iConfig.getUntrackedParameter<double>("timeMaxCutHCAL", 500.)),
174  isItAOD_(iConfig.getUntrackedParameter<bool>("isItAOD", false)),
175  vetoTrigger_(iConfig.getUntrackedParameter<bool>("vetoTrigger", false)),
176  doTree_(iConfig.getUntrackedParameter<bool>("doTree", false)),
177  vetoMuon_(iConfig.getUntrackedParameter<bool>("vetoMuon", false)),
178  vetoEcal_(iConfig.getUntrackedParameter<bool>("vetoEcal", false)),
179  cutMuon_(iConfig.getUntrackedParameter<double>("cutMuon", 0.001)),
180  cutEcal_(iConfig.getUntrackedParameter<double>("cutEcal", 2.0)),
181  cutRatio_(iConfig.getUntrackedParameter<double>("cutRatio", 0.90)),
182  puWeights_(iConfig.getUntrackedParameter<std::vector<double> >("puWeights")),
183  triggerEvent_(edm::InputTag("hltTriggerSummaryAOD", "", "HLT")),
184  theTriggerResultsLabel_(edm::InputTag("TriggerResults", "", "HLT")),
185  nRun_(0) {
186  usesResource(TFileService::kSharedResource);
187 
189  selectionParameters_.minPt = iConfig.getUntrackedParameter<double>("minTrackPt", 10.0);
191  selectionParameters_.maxDxyPV = iConfig.getUntrackedParameter<double>("maxDxyPV", 0.2);
192  selectionParameters_.maxDzPV = iConfig.getUntrackedParameter<double>("maxDzPV", 5.0);
193  selectionParameters_.maxChi2 = iConfig.getUntrackedParameter<double>("maxChi2", 5.0);
194  selectionParameters_.maxDpOverP = iConfig.getUntrackedParameter<double>("maxDpOverP", 0.1);
195  selectionParameters_.minOuterHit = iConfig.getUntrackedParameter<int>("minOuterHit", 4);
196  selectionParameters_.minLayerCrossed = iConfig.getUntrackedParameter<int>("minLayerCrossed", 8);
197  selectionParameters_.maxInMiss = iConfig.getUntrackedParameter<int>("maxInMiss", 0);
198  selectionParameters_.maxOutMiss = iConfig.getUntrackedParameter<int>("maxOutMiss", 0);
199 
200  // define tokens for access
201  tok_lumi = consumes<LumiDetails, edm::InLumi>(edm::InputTag("lumiProducer"));
202  tok_trigEvt = consumes<trigger::TriggerEvent>(triggerEvent_);
203  tok_trigRes = consumes<edm::TriggerResults>(theTriggerResultsLabel_);
204  tok_Muon_ = consumes<reco::MuonCollection>(labelMuon_);
205  tok_genTrack_ = consumes<reco::TrackCollection>(labelGenTrack_);
206  tok_recVtx_ = consumes<reco::VertexCollection>(edm::InputTag("offlinePrimaryVertices"));
207  tok_parts_ = consumes<reco::GenParticleCollection>(iConfig.getParameter<edm::InputTag>("particleSource"));
208 
209  if (isItAOD_) {
210  tok_EB_ = consumes<EcalRecHitCollection>(edm::InputTag("reducedEcalRecHitsEB"));
211  tok_EE_ = consumes<EcalRecHitCollection>(edm::InputTag("reducedEcalRecHitsEE"));
212  tok_hbhe_ = consumes<HBHERecHitCollection>(edm::InputTag("reducedHcalRecHits", "hbhereco"));
213  } else {
214  tok_EB_ = consumes<EcalRecHitCollection>(edm::InputTag("ecalRecHit", "EcalRecHitsEB"));
215  tok_EE_ = consumes<EcalRecHitCollection>(edm::InputTag("ecalRecHit", "EcalRecHitsEE"));
216  tok_hbhe_ = consumes<HBHERecHitCollection>(edm::InputTag("hbhereco"));
217  }
218  tok_ew_ = consumes<GenEventInfoProduct>(edm::InputTag("generator"));
219 
220  edm::LogVerbatim("IsoTrack") << "Verbosity " << verbosity_ << " with " << trigNames_.size() << " triggers:";
221  for (unsigned int k = 0; k < trigNames_.size(); ++k)
222  edm::LogVerbatim("IsoTrack") << " [" << k << "] " << trigNames_[k];
223  edm::LogVerbatim("IsoTrack") << "TrackQuality " << theTrackQuality_ << " Minpt " << selectionParameters_.minPt
224  << " maxDxy " << selectionParameters_.maxDxyPV << " maxDz "
226  << " maxDp/p " << selectionParameters_.maxDpOverP << " minOuterHit "
227  << selectionParameters_.minOuterHit << " minLayerCrossed "
228  << selectionParameters_.minLayerCrossed << " maxInMiss "
230  << " minTrackP " << minTrackP_ << " maxTrackEta " << maxTrackEta_ << " tMinE_ " << tMinE_
231  << " tMaxE " << tMaxE_ << " tMinH_ " << tMinH_ << " tMaxH_ " << tMaxH_ << " isItAOD "
232  << isItAOD_ << " doTree " << doTree_ << " vetoTrigger " << vetoTrigger_ << " vetoMuon "
233  << vetoMuon_ << ":" << cutMuon_ << " vetoEcal " << vetoEcal_ << ":" << cutEcal_ << ":"
234  << cutRatio_;
235 
236  double pBins[nPBin_ + 1] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 9.0, 11.0, 15.0, 20.0, 25.0, 30.0, 40.0, 60.0, 100.0};
237  int etaBins[nEtaBin_ + 1] = {1, 7, 13, 17, 23};
238  int pvBins[nPVBin_ + 1] = {1, 2, 3, 5, 100};
239  for (int i = 0; i <= nPBin_; ++i)
240  pBin_[i] = pBins[i];
241  for (int i = 0; i <= nEtaBin_; ++i)
242  etaBin_[i] = etaBins[i];
243  for (int i = 0; i <= nPVBin_; ++i)
244  pvBin_[i] = pvBins[i];
245 
246  firstEvent_ = true;
247  changed_ = false;
248 }
249 
251  std::vector<std::string> trig;
252  std::vector<double> weights;
253  std::vector<std::string> newNames = {"HLT", "PixelTracks_Multiplicity", "HLT_Physics_", "HLT_JetE", "HLT_ZeroBias"};
255  desc.add<edm::InputTag>("particleSource", edm::InputTag("genParticles"));
256  desc.addUntracked<int>("verbosity", 0);
257  desc.addUntracked<std::vector<std::string> >("triggers", trig);
258  desc.addUntracked<std::vector<std::string> >("newNames", newNames);
259  desc.addUntracked<edm::InputTag>("labelMuon", edm::InputTag("muons", "", "RECO"));
260  desc.addUntracked<edm::InputTag>("labelTrack", edm::InputTag("generalTracks", "", "RECO"));
261  desc.addUntracked<std::string>("trackQuality", "highPurity");
262  desc.addUntracked<double>("minTrackPt", 1.0);
263  desc.addUntracked<double>("maxDxyPV", 0.02);
264  desc.addUntracked<double>("maxDzPV", 0.02);
265  desc.addUntracked<double>("maxChi2", 5.0);
266  desc.addUntracked<double>("maxDpOverP", 0.1);
267  desc.addUntracked<int>("minOuterHit", 4);
268  desc.addUntracked<int>("minLayerCrossed", 8);
269  desc.addUntracked<int>("maxInMiss", 0);
270  desc.addUntracked<int>("maxOutMiss", 0);
271  desc.addUntracked<double>("minTrackP", 1.0);
272  desc.addUntracked<double>("maxTrackEta", 2.6);
273  desc.addUntracked<double>("timeMinCutECAL", -500.0);
274  desc.addUntracked<double>("timeMaxCutECAL", 500.0);
275  desc.addUntracked<double>("timeMinCutHCAL", -500.0);
276  desc.addUntracked<double>("timeMaxCutHCAL", 500.0);
277  desc.addUntracked<bool>("isItAOD", false);
278  desc.addUntracked<bool>("vetoTrigger", false);
279  desc.addUntracked<bool>("doTree", false);
280  desc.addUntracked<bool>("vetoMuon", false);
281  desc.addUntracked<double>("cutMuon", 0.001);
282  desc.addUntracked<bool>("vetoEcal", false);
283  desc.addUntracked<double>("cutEcal", 2.0);
284  desc.addUntracked<double>("cutRatio", 0.9);
285  desc.addUntracked<std::vector<double> >("puWeights", weights);
286  descriptions.add("studyCaloResponse", desc);
287 }
288 
290  clear();
291  int counter0[1000] = {0};
292  int counter1[1000] = {0};
293  int counter2[1000] = {0};
294  int counter3[1000] = {0};
295  int counter4[1000] = {0};
296  int counter5[1000] = {0};
297  int counter6[1000] = {0};
298  int counter7[1000] = {0};
299  if (verbosity_ > 0)
300  edm::LogVerbatim("IsoTrack") << "Event starts====================================";
301  int RunNo = iEvent.id().run();
302  int EvtNo = iEvent.id().event();
303  int Lumi = iEvent.luminosityBlock();
304  int Bunch = iEvent.bunchCrossing();
305 
306  std::vector<int> newAccept(newNames_.size() + 1, 0);
307  if (verbosity_ > 0)
308  edm::LogVerbatim("IsoTrack") << "RunNo " << RunNo << " EvtNo " << EvtNo << " Lumi " << Lumi << " Bunch " << Bunch;
309 
311  edm::Handle<trigger::TriggerEvent> triggerEventHandle;
312  iEvent.getByToken(tok_trigEvt, triggerEventHandle);
313 
314  bool ok(false);
315  if (!triggerEventHandle.isValid()) {
316  edm::LogWarning("IsoTrack") << "Error! Can't get the product " << triggerEvent_.label();
317  } else {
318  triggerEvent = *(triggerEventHandle.product());
319 
322  iEvent.getByToken(tok_trigRes, triggerResults);
323 
324  if (triggerResults.isValid()) {
325  h_nHLT->Fill(triggerResults->size());
326  h_nHLTvsRN->Fill(RunNo, triggerResults->size());
327 
328  const edm::TriggerNames& triggerNames = iEvent.triggerNames(*triggerResults);
329  const std::vector<std::string>& triggerNames_ = triggerNames.triggerNames();
330  for (unsigned int iHLT = 0; iHLT < triggerResults->size(); iHLT++) {
331  int ipos = -1;
332  std::string newtriggerName = truncate_str(triggerNames_[iHLT]);
333  for (unsigned int i = 0; i < HLTNames_.size(); ++i) {
334  if (newtriggerName == HLTNames_[i]) {
335  ipos = i + 1;
336  break;
337  }
338  }
339  if (ipos < 0) {
340  HLTNames_.push_back(newtriggerName);
341  ipos = (int)(HLTNames_.size());
342  if (ipos <= h_HLTAccept->GetNbinsX())
343  h_HLTAccept->GetXaxis()->SetBinLabel(ipos, newtriggerName.c_str());
344  }
345  if ((int)(iHLT + 1) > h_HLTAccepts[nRun_]->GetNbinsX()) {
346  edm::LogVerbatim("IsoTrack") << "Wrong trigger " << RunNo << " Event " << EvtNo << " Hlt " << iHLT;
347  } else {
348  if (firstEvent_)
349  h_HLTAccepts[nRun_]->GetXaxis()->SetBinLabel(iHLT + 1, newtriggerName.c_str());
350  }
351  int hlt = triggerResults->accept(iHLT);
352  if (hlt) {
353  h_HLTAccepts[nRun_]->Fill(iHLT + 1);
354  h_HLTAccept->Fill(ipos);
355  }
356  if (trigNames_.empty()) {
357  ok = true;
358  } else {
359  for (unsigned int i = 0; i < trigNames_.size(); ++i) {
360  if (newtriggerName.find(trigNames_[i]) != std::string::npos) {
361  if (verbosity_ % 10 > 0)
362  edm::LogVerbatim("IsoTrack") << newtriggerName;
363  if (hlt > 0) {
364  ok = true;
365  tr_TrigName.push_back(newtriggerName);
366  }
367  }
368  }
369  if (vetoTrigger_)
370  ok = !ok;
371  for (unsigned int i = 0; i < newNames_.size(); ++i) {
372  if (newtriggerName.find(newNames_[i]) != std::string::npos) {
373  if (verbosity_ % 10 > 0)
374  edm::LogVerbatim("IsoTrack") << "[" << i << "] " << newNames_[i] << " : " << newtriggerName;
375  if (hlt > 0)
376  newAccept[i] = 1;
377  }
378  }
379  }
380  }
381  int iflg(0), indx(1);
382  for (unsigned int i = 0; i < newNames_.size(); ++i) {
383  iflg += (indx * newAccept[i]);
384  indx *= 2;
385  }
386  h_HLTCorr->Fill(iflg);
387  }
388  }
389 
390  //Look at the tracks
391  if (ok) {
392  h_goodRun->Fill(RunNo);
393  tr_goodRun = RunNo;
394  // get handles to calogeometry and calotopology
396  iSetup.get<CaloGeometryRecord>().get(pG);
397  const CaloGeometry* geo = pG.product();
398 
399  edm::ESHandle<CaloTopology> theCaloTopology;
400  iSetup.get<CaloTopologyRecord>().get(theCaloTopology);
401  const CaloTopology* caloTopology = theCaloTopology.product();
402 
404  iSetup.get<HcalRecNumberingRecord>().get(htopo);
405  const HcalTopology* theHBHETopology = htopo.product();
406 
408  iSetup.get<IdealMagneticFieldRecord>().get(bFieldH);
409  const MagneticField* bField = bFieldH.product();
410 
412  iSetup.get<EcalChannelStatusRcd>().get(ecalChStatus);
413  const EcalChannelStatus* theEcalChStatus = ecalChStatus.product();
414 
416  iEvent.getByToken(tok_recVtx_, recVtxs);
417  int ntrk(0), ngoodPV(0), nPV(-1);
418  int nvtxs = (int)(recVtxs->size());
419  for (int ind = 0; ind < nvtxs; ind++) {
420  if (!((*recVtxs)[ind].isFake()) && (*recVtxs)[ind].ndof() > 4)
421  ngoodPV++;
422  }
423  for (int i = 0; i < nPVBin_; ++i) {
424  if (ngoodPV >= pvBin_[i] && ngoodPV < pvBin_[i + 1]) {
425  nPV = i;
426  break;
427  }
428  }
429 
430  tr_eventWeight = 1.0;
432  iEvent.getByToken(tok_ew_, genEventInfo);
433  if (genEventInfo.isValid())
434  tr_eventWeight = genEventInfo->weight();
435 
436  if ((verbosity_ / 10) % 10 > 0)
437  edm::LogVerbatim("IsoTrack") << "Number of vertices: " << nvtxs << " Good " << ngoodPV << " Bin " << nPV
438  << " Event weight " << tr_eventWeight;
439  h_numberPV->Fill(nvtxs, tr_eventWeight);
440  h_goodPV->Fill(ngoodPV, tr_eventWeight);
441  tr_goodPV = ngoodPV;
442 
443  if (!puWeights_.empty()) {
444  int npbin = h_goodPV->FindBin(ngoodPV);
445  if (npbin > 0 && npbin <= (int)(puWeights_.size()))
446  tr_eventWeight *= puWeights_[npbin - 1];
447  else
448  tr_eventWeight = 0;
449  }
450 
452  iEvent.getByToken(tok_genTrack_, trkCollection);
453 
454  edm::Handle<reco::MuonCollection> muonEventHandle;
455  iEvent.getByToken(tok_Muon_, muonEventHandle);
456 
457  //=== genParticle information
459  iEvent.getByToken(tok_parts_, genParticles);
460  if (genParticles.isValid()) {
461  for (const auto& p : (reco::GenParticleCollection)(*genParticles)) {
462  double pt1 = p.momentum().Rho();
463  double p1 = p.momentum().R();
464  double eta1 = p.momentum().Eta();
465  double phi1 = p.momentum().Phi();
466  fillTrack(nGen_, pt1, p1, eta1, phi1);
467  bool match(false);
468  double phi2(phi1);
469  if (phi2 < 0)
470  phi2 += 2.0 * M_PI;
471  for (const auto& trk : (reco::TrackCollection)(*trkCollection)) {
472  bool quality = trk.quality(selectionParameters_.minQuality);
473  if (quality) {
474  double dEta = trk.eta() - eta1;
475  double phi0 = trk.phi();
476  if (phi0 < 0)
477  phi0 += 2.0 * M_PI;
478  double dPhi = phi0 - phi2;
479  if (dPhi > M_PI)
480  dPhi -= 2. * M_PI;
481  else if (dPhi < -M_PI)
482  dPhi += 2. * M_PI;
483  double dR = sqrt(dEta * dEta + dPhi * dPhi);
484  if (dR < 0.01) {
485  match = true;
486  break;
487  }
488  }
489  }
490  if (match)
491  fillTrack(nGen_ + 1, pt1, p1, eta1, phi1);
492  }
493  }
494 
495  reco::TrackCollection::const_iterator trkItr;
496  for (trkItr = trkCollection->begin(); trkItr != trkCollection->end(); ++trkItr, ++ntrk) {
497  const reco::Track* pTrack = &(*trkItr);
498  double pt1 = pTrack->pt();
499  double p1 = pTrack->p();
500  double eta1 = pTrack->momentum().eta();
501  double phi1 = pTrack->momentum().phi();
503  fillTrack(0, pt1, p1, eta1, phi1);
504  if (quality)
505  fillTrack(1, pt1, p1, eta1, phi1);
506  if (p1 < 1000) {
507  h_h_pNew[0]->Fill(p1);
508  ++counter0[(int)(p1)];
509  }
510  }
511  h_ntrk[0]->Fill(ntrk, tr_eventWeight);
512 
513  std::vector<spr::propagatedTrackID> trkCaloDets;
514  spr::propagateCALO(trkCollection, geo, bField, theTrackQuality_, trkCaloDets, ((verbosity_ / 100) % 10 > 0));
515  std::vector<spr::propagatedTrackID>::const_iterator trkDetItr;
516  for (trkDetItr = trkCaloDets.begin(), ntrk = 0; trkDetItr != trkCaloDets.end(); trkDetItr++, ntrk++) {
517  const reco::Track* pTrack = &(*(trkDetItr->trkItr));
518  double pt1 = pTrack->pt();
519  double p1 = pTrack->p();
520  double eta1 = pTrack->momentum().eta();
521  double phi1 = pTrack->momentum().phi();
522  if ((verbosity_ / 10) % 10 > 0)
523  edm::LogVerbatim("IsoTrack") << "track: p " << p1 << " pt " << pt1 << " eta " << eta1 << " phi " << phi1
524  << " okEcal " << trkDetItr->okECAL;
525  fillTrack(2, pt1, p1, eta1, phi1);
526 
527  bool vetoMuon(false);
528  double chiGlobal(0), dr(0);
529  bool goodGlob(false);
530  if (vetoMuon_) {
531  if (muonEventHandle.isValid()) {
532  for (reco::MuonCollection::const_iterator recMuon = muonEventHandle->begin();
533  recMuon != muonEventHandle->end();
534  ++recMuon) {
535  if (((recMuon->isPFMuon()) && (recMuon->isGlobalMuon() || recMuon->isTrackerMuon())) &&
536  (recMuon->innerTrack()->validFraction() > 0.49)) {
537  chiGlobal = ((recMuon->globalTrack().isNonnull()) ? recMuon->globalTrack()->normalizedChi2() : 999);
538  goodGlob = (recMuon->isGlobalMuon() && chiGlobal < 3 &&
539  recMuon->combinedQuality().chi2LocalPosition < 12 && recMuon->combinedQuality().trkKink < 20);
540  if (muon::segmentCompatibility(*recMuon) > (goodGlob ? 0.303 : 0.451)) {
541  dr = reco::deltaR(pTrack->momentum().eta(),
542  pTrack->momentum().phi(),
543  recMuon->momentum().eta(),
544  recMuon->momentum().phi());
545  if (dr < cutMuon_) {
546  vetoMuon = true;
547  break;
548  }
549  }
550  }
551  }
552  }
553  }
554  if ((verbosity_ / 10) % 10 > 0)
555  edm::LogVerbatim("IsoTrack") << "vetoMuon: " << vetoMuon_ << ":" << vetoMuon << " chi:good:dr " << chiGlobal
556  << ":" << goodGlob << ":" << dr;
557  if (pt1 > minTrackP_ && std::abs(eta1) < maxTrackEta_ && trkDetItr->okECAL && (!vetoMuon)) {
558  fillTrack(3, pt1, p1, eta1, phi1);
559  double maxNearP31x31 =
560  spr::chargeIsolationEcal(ntrk, trkCaloDets, geo, caloTopology, 15, 15, ((verbosity_ / 1000) % 10 > 0));
561 
563  iSetup.get<EcalSeverityLevelAlgoRcd>().get(sevlv);
564 
565  edm::Handle<EcalRecHitCollection> barrelRecHitsHandle;
566  edm::Handle<EcalRecHitCollection> endcapRecHitsHandle;
567  iEvent.getByToken(tok_EB_, barrelRecHitsHandle);
568  iEvent.getByToken(tok_EE_, endcapRecHitsHandle);
569  // get ECal Tranverse Profile
570  std::pair<double, bool> e7x7P, e11x11P, e15x15P;
571  const DetId isoCell = trkDetItr->detIdECAL;
572  e7x7P = spr::eECALmatrix(isoCell,
573  barrelRecHitsHandle,
574  endcapRecHitsHandle,
575  *theEcalChStatus,
576  geo,
577  caloTopology,
578  sevlv.product(),
579  3,
580  3,
581  0.030,
582  0.150,
583  tMinE_,
584  tMaxE_,
585  ((verbosity_ / 10000) % 10 > 0));
586  e11x11P = spr::eECALmatrix(isoCell,
587  barrelRecHitsHandle,
588  endcapRecHitsHandle,
589  *theEcalChStatus,
590  geo,
591  caloTopology,
592  sevlv.product(),
593  5,
594  5,
595  0.030,
596  0.150,
597  tMinE_,
598  tMaxE_,
599  ((verbosity_ / 10000) % 10 > 0));
600  e15x15P = spr::eECALmatrix(isoCell,
601  barrelRecHitsHandle,
602  endcapRecHitsHandle,
603  *theEcalChStatus,
604  geo,
605  caloTopology,
606  sevlv.product(),
607  7,
608  7,
609  0.030,
610  0.150,
611  tMinE_,
612  tMaxE_,
613  ((verbosity_ / 10000) % 10 > 0));
614 
615  double maxNearHcalP7x7 =
616  spr::chargeIsolationHcal(ntrk, trkCaloDets, theHBHETopology, 3, 3, ((verbosity_ / 1000) % 10 > 0));
617  int ieta(0);
618  double h3x3(0), h5x5(0), h7x7(0);
619  fillIsolation(0, maxNearP31x31, e11x11P.first, e15x15P.first);
620  if ((verbosity_ / 10) % 10 > 0)
621  edm::LogVerbatim("IsoTrack") << "Accepted Tracks reaching Ecal maxNearP31x31 " << maxNearP31x31 << " e11x11P "
622  << e11x11P.first << " e15x15P " << e15x15P.first << " okHCAL "
623  << trkDetItr->okHCAL;
624 
625  int trackID = trackPID(pTrack, genParticles);
626  if (trkDetItr->okHCAL) {
628  iEvent.getByToken(tok_hbhe_, hbhe);
629  const DetId ClosestCell(trkDetItr->detIdHCAL);
630  ieta = ((HcalDetId)(ClosestCell)).ietaAbs();
631  h3x3 = spr::eHCALmatrix(theHBHETopology,
632  ClosestCell,
633  hbhe,
634  1,
635  1,
636  false,
637  true,
638  0.7,
639  0.8,
640  -100.0,
641  -100.0,
642  tMinH_,
643  tMaxH_,
644  ((verbosity_ / 10000) % 10 > 0));
645  h5x5 = spr::eHCALmatrix(theHBHETopology,
646  ClosestCell,
647  hbhe,
648  2,
649  2,
650  false,
651  true,
652  0.7,
653  0.8,
654  -100.0,
655  -100.0,
656  tMinH_,
657  tMaxH_,
658  ((verbosity_ / 10000) % 10 > 0));
659  h7x7 = spr::eHCALmatrix(theHBHETopology,
660  ClosestCell,
661  hbhe,
662  3,
663  3,
664  false,
665  true,
666  0.7,
667  0.8,
668  -100.0,
669  -100.0,
670  tMinH_,
671  tMaxH_,
672  ((verbosity_ / 10000) % 10 > 0));
673  fillIsolation(1, maxNearHcalP7x7, h5x5, h7x7);
674  double eByh = ((e11x11P.second) ? (e11x11P.first / std::max(h3x3, 0.001)) : 0.0);
675  bool notAnElec = ((vetoEcal_ && e11x11P.second) ? ((e11x11P.first < cutEcal_) || (eByh < cutRatio_)) : true);
676  if ((verbosity_ / 10) % 10 > 0)
677  edm::LogVerbatim("IsoTrack") << "Tracks Reaching Hcal maxNearHcalP7x7/h5x5/h7x7 " << maxNearHcalP7x7 << "/"
678  << h5x5 << "/" << h7x7 << " eByh " << eByh << " notAnElec " << notAnElec;
679  tr_TrkPt.push_back(pt1);
680  tr_TrkP.push_back(p1);
681  tr_TrkEta.push_back(eta1);
682  tr_TrkPhi.push_back(phi1);
683  tr_TrkID.push_back(trackID);
684  tr_MaxNearP31X31.push_back(maxNearP31x31);
685  tr_MaxNearHcalP7x7.push_back(maxNearHcalP7x7);
686  tr_FE7x7P.push_back(e7x7P.first);
687  tr_FE11x11P.push_back(e11x11P.first);
688  tr_FE15x15P.push_back(e15x15P.first);
689  tr_SE7x7P.push_back(e7x7P.second);
690  tr_SE11x11P.push_back(e11x11P.second);
691  tr_SE15x15P.push_back(e15x15P.second);
692  tr_iEta.push_back(ieta);
693  tr_H3x3.push_back(h3x3);
694  tr_H5x5.push_back(h5x5);
695  tr_H7x7.push_back(h7x7);
696 
697  if (maxNearP31x31 < 0 && notAnElec) {
698  fillTrack(4, pt1, p1, eta1, phi1);
699  fillEnergy(0, ieta, p1, e7x7P.first, h3x3, e11x11P.first, h5x5);
700  if (maxNearHcalP7x7 < 0) {
701  fillTrack(5, pt1, p1, eta1, phi1);
702  fillEnergy(1, ieta, p1, e7x7P.first, h3x3, e11x11P.first, h5x5);
703  if ((e11x11P.second) && (e15x15P.second) && (e15x15P.first - e11x11P.first) < 2.0) {
704  fillTrack(6, pt1, p1, eta1, phi1);
705  fillEnergy(2, ieta, p1, e7x7P.first, h3x3, e11x11P.first, h5x5);
706  if (h7x7 - h5x5 < 2.0) {
707  fillTrack(7, pt1, p1, eta1, phi1);
708  fillEnergy(3, ieta, p1, e7x7P.first, h3x3, e11x11P.first, h5x5);
709  if (nPV >= 0) {
710  fillTrack(nPV + 8, pt1, p1, eta1, phi1);
711  fillEnergy(nPV + 4, ieta, p1, e7x7P.first, h3x3, e11x11P.first, h5x5);
712  }
713  if (trackID > 0) {
714  fillTrack(nPVBin_ + trackID + 7, pt1, p1, eta1, phi1);
715  fillEnergy(nPVBin_ + trackID + 3, ieta, p1, e7x7P.first, h3x3, e11x11P.first, h5x5);
716  }
717  if (p1 < 1000) {
718  h_h_pNew[7]->Fill(p1);
719  ++counter7[(int)(p1)];
720  }
721  }
722  if (p1 < 1000) {
723  h_h_pNew[6]->Fill(p1);
724  ++counter6[(int)(p1)];
725  }
726  }
727  if (p1 < 1000) {
728  h_h_pNew[5]->Fill(p1);
729  ++counter5[(int)(p1)];
730  }
731  }
732  if (p1 < 1000) {
733  h_h_pNew[4]->Fill(p1);
734  ++counter4[(int)(p1)];
735  }
736  }
737  if (p1 < 1000) {
738  h_h_pNew[3]->Fill(p1);
739  ++counter3[(int)(p1)];
740  }
741  }
742  if (p1 < 1000) {
743  h_h_pNew[2]->Fill(p1);
744  ++counter2[(int)(p1)];
745  }
746  }
747  if (p1 < 1000) {
748  h_h_pNew[1]->Fill(p1);
749  ++counter1[(int)(p1)];
750  }
751  }
752  h_ntrk[1]->Fill(ntrk, tr_eventWeight);
753  if ((!tr_TrkPt.empty()) && doTree_)
754  tree_->Fill();
755  for (int i = 0; i < 1000; ++i) {
756  if (counter0[i])
757  h_counter[0]->Fill(i, counter0[i]);
758  if (counter1[i])
759  h_counter[1]->Fill(i, counter1[i]);
760  if (counter2[i])
761  h_counter[2]->Fill(i, counter2[i]);
762  if (counter3[i])
763  h_counter[3]->Fill(i, counter3[i]);
764  if (counter4[i])
765  h_counter[4]->Fill(i, counter4[i]);
766  if (counter5[i])
767  h_counter[5]->Fill(i, counter5[i]);
768  if (counter6[i])
769  h_counter[6]->Fill(i, counter6[i]);
770  if (counter7[i])
771  h_counter[7]->Fill(i, counter7[i]);
772  }
773  }
774  firstEvent_ = false;
775 }
776 
778  // Book histograms
779  h_nHLT = fs_->make<TH1I>("h_nHLT", "size of trigger Names", 1000, 0, 1000);
780  h_HLTAccept = fs_->make<TH1I>("h_HLTAccept", "HLT Accepts for all runs", 500, 0, 500);
781  for (int i = 1; i <= 500; ++i)
782  h_HLTAccept->GetXaxis()->SetBinLabel(i, " ");
783  h_nHLTvsRN = fs_->make<TH2I>("h_nHLTvsRN", "size of trigger Names vs RunNo", 2168, 190949, 193116, 100, 400, 500);
784  h_HLTCorr = fs_->make<TH1I>("h_HLTCorr", "Correlation among different paths", 100, 0, 100);
785  h_numberPV = fs_->make<TH1I>("h_numberPV", "Number of Primary Vertex", 100, 0, 100);
786  h_goodPV = fs_->make<TH1I>("h_goodPV", "Number of good Primary Vertex", 100, 0, 100);
787  h_goodRun = fs_->make<TH1I>("h_goodRun", "Number of accepted events for Run", 4000, 190000, 1940000);
788  char hname[60], htit[200];
789  std::string CollectionNames[2] = {"Reco", "Propagated"};
790  for (unsigned int i = 0; i < 2; i++) {
791  sprintf(hname, "h_nTrk_%s", CollectionNames[i].c_str());
792  sprintf(htit, "Number of %s tracks", CollectionNames[i].c_str());
793  h_ntrk[i] = fs_->make<TH1I>(hname, htit, 500, 0, 500);
794  }
795  std::string TrkNames[8] = {
796  "All", "Quality", "NoIso", "okEcal", "EcalCharIso", "HcalCharIso", "EcalNeutIso", "HcalNeutIso"};
797  std::string particle[4] = {"Electron", "Pion", "Kaon", "Proton"};
798  for (unsigned int i = 0; i <= nGen_ + 1; i++) {
799  if (i < 8) {
800  sprintf(hname, "h_pt_%s", TrkNames[i].c_str());
801  sprintf(htit, "p_{T} of %s tracks", TrkNames[i].c_str());
802  } else if (i < 8 + nPVBin_) {
803  sprintf(hname, "h_pt_%s_%d", TrkNames[7].c_str(), i - 8);
804  sprintf(htit, "p_{T} of %s tracks (PV=%d:%d)", TrkNames[7].c_str(), pvBin_[i - 8], pvBin_[i - 7] - 1);
805  } else if (i >= nGen_) {
806  sprintf(hname, "h_pt_%s_%d", TrkNames[0].c_str(), i - nGen_);
807  sprintf(htit, "p_{T} of %s Generator tracks", TrkNames[0].c_str());
808  } else {
809  sprintf(hname, "h_pt_%s_%s", TrkNames[7].c_str(), particle[i - 8 - nPVBin_].c_str());
810  sprintf(htit, "p_{T} of %s tracks (%s)", TrkNames[7].c_str(), particle[i - 8 - nPVBin_].c_str());
811  }
812  h_pt[i] = fs_->make<TH1D>(hname, htit, 400, 0, 200.0);
813  h_pt[i]->Sumw2();
814 
815  if (i < 8) {
816  sprintf(hname, "h_p_%s", TrkNames[i].c_str());
817  sprintf(htit, "Momentum of %s tracks", TrkNames[i].c_str());
818  } else if (i < 8 + nPVBin_) {
819  sprintf(hname, "h_p_%s_%d", TrkNames[7].c_str(), i - 8);
820  sprintf(htit, "Momentum of %s tracks (PV=%d:%d)", TrkNames[7].c_str(), pvBin_[i - 8], pvBin_[i - 7] - 1);
821  } else if (i >= nGen_) {
822  sprintf(hname, "h_p_%s_%d", TrkNames[0].c_str(), i - nGen_);
823  sprintf(htit, "Momentum of %s Generator tracks", TrkNames[0].c_str());
824  } else {
825  sprintf(hname, "h_p_%s_%s", TrkNames[7].c_str(), particle[i - 8 - nPVBin_].c_str());
826  sprintf(htit, "Momentum of %s tracks (%s)", TrkNames[7].c_str(), particle[i - 8 - nPVBin_].c_str());
827  }
828  h_p[i] = fs_->make<TH1D>(hname, htit, 400, 0, 200.0);
829  h_p[i]->Sumw2();
830 
831  if (i < 8) {
832  sprintf(hname, "h_eta_%s", TrkNames[i].c_str());
833  sprintf(htit, "Eta of %s tracks", TrkNames[i].c_str());
834  } else if (i < 8 + nPVBin_) {
835  sprintf(hname, "h_eta_%s_%d", TrkNames[7].c_str(), i - 8);
836  sprintf(htit, "Eta of %s tracks (PV=%d:%d)", TrkNames[7].c_str(), pvBin_[i - 8], pvBin_[i - 7] - 1);
837  } else if (i >= nGen_) {
838  sprintf(hname, "h_eta_%s_%d", TrkNames[0].c_str(), i - nGen_);
839  sprintf(htit, "Eta of %s Generator tracks", TrkNames[0].c_str());
840  } else {
841  sprintf(hname, "h_eta_%s_%s", TrkNames[7].c_str(), particle[i - 8 - nPVBin_].c_str());
842  sprintf(htit, "Eta of %s tracks (%s)", TrkNames[7].c_str(), particle[i - 8 - nPVBin_].c_str());
843  }
844  h_eta[i] = fs_->make<TH1D>(hname, htit, 60, -3.0, 3.0);
845  h_eta[i]->Sumw2();
846 
847  if (i < 8) {
848  sprintf(hname, "h_phi_%s", TrkNames[i].c_str());
849  sprintf(htit, "Phi of %s tracks", TrkNames[i].c_str());
850  } else if (i < 8 + nPVBin_) {
851  sprintf(hname, "h_phi_%s_%d", TrkNames[7].c_str(), i - 8);
852  sprintf(htit, "Phi of %s tracks (PV=%d:%d)", TrkNames[7].c_str(), pvBin_[i - 8], pvBin_[i - 7] - 1);
853  } else if (i >= nGen_) {
854  sprintf(hname, "h_phi_%s_%d", TrkNames[0].c_str(), i - nGen_);
855  sprintf(htit, "Phi of %s Generator tracks", TrkNames[0].c_str());
856  } else {
857  sprintf(hname, "h_phi_%s_%s", TrkNames[7].c_str(), particle[i - 8 - nPVBin_].c_str());
858  sprintf(htit, "Phi of %s tracks (%s)", TrkNames[7].c_str(), particle[i - 8 - nPVBin_].c_str());
859  }
860  h_phi[i] = fs_->make<TH1D>(hname, htit, 100, -3.15, 3.15);
861  h_phi[i]->Sumw2();
862  }
863  std::string IsolationNames[2] = {"Ecal", "Hcal"};
864  for (unsigned int i = 0; i < 2; i++) {
865  sprintf(hname, "h_maxNearP_%s", IsolationNames[i].c_str());
866  sprintf(htit, "Energy in ChargeIso region for %s", IsolationNames[i].c_str());
867  h_maxNearP[i] = fs_->make<TH1D>(hname, htit, 120, -1.5, 10.5);
868  h_maxNearP[i]->Sumw2();
869 
870  sprintf(hname, "h_ene1_%s", IsolationNames[i].c_str());
871  sprintf(htit, "Energy in smaller cone for %s", IsolationNames[i].c_str());
872  h_ene1[i] = fs_->make<TH1D>(hname, htit, 400, 0.0, 200.0);
873  h_ene1[i]->Sumw2();
874 
875  sprintf(hname, "h_ene2_%s", IsolationNames[i].c_str());
876  sprintf(htit, "Energy in bigger cone for %s", IsolationNames[i].c_str());
877  h_ene2[i] = fs_->make<TH1D>(hname, htit, 400, 0.0, 200.0);
878  h_ene2[i]->Sumw2();
879 
880  sprintf(hname, "h_ediff_%s", IsolationNames[i].c_str());
881  sprintf(htit, "Energy in NeutralIso region for %s", IsolationNames[i].c_str());
882  h_ediff[i] = fs_->make<TH1D>(hname, htit, 100, -0.5, 19.5);
883  h_ediff[i]->Sumw2();
884  }
885  std::string energyNames[6] = {
886  "E_{7x7}", "H_{3x3}", "(E_{7x7}+H_{3x3})", "E_{11x11}", "H_{5x5}", "{E_{11x11}+H_{5x5})"};
887  for (int i = 0; i < 4 + nPVBin_ + 4; ++i) {
888  for (int ip = 0; ip < nPBin_; ++ip) {
889  for (int ie = 0; ie < nEtaBin_; ++ie) {
890  for (int j = 0; j < 6; ++j) {
891  sprintf(hname, "h_energy_%d_%d_%d_%d", i, ip, ie, j);
892  if (i < 4) {
893  sprintf(htit,
894  "%s/p (p=%4.1f:%4.1f; i#eta=%d:%d) for tracks with %s",
895  energyNames[j].c_str(),
896  pBin_[ip],
897  pBin_[ip + 1],
898  etaBin_[ie],
899  (etaBin_[ie + 1] - 1),
900  TrkNames[i + 4].c_str());
901  } else if (i < 4 + nPVBin_) {
902  sprintf(htit,
903  "%s/p (p=%4.1f:%4.1f, i#eta=%d:%d, PV=%d:%d) for tracks with %s",
904  energyNames[j].c_str(),
905  pBin_[ip],
906  pBin_[ip + 1],
907  etaBin_[ie],
908  (etaBin_[ie + 1] - 1),
909  pvBin_[i - 4],
910  pvBin_[i - 3],
911  TrkNames[7].c_str());
912  } else {
913  sprintf(htit,
914  "%s/p (p=%4.1f:%4.1f, i#eta=%d:%d %s) for tracks with %s",
915  energyNames[j].c_str(),
916  pBin_[ip],
917  pBin_[ip + 1],
918  etaBin_[ie],
919  (etaBin_[ie + 1] - 1),
920  particle[i - 4 - nPVBin_].c_str(),
921  TrkNames[7].c_str());
922  }
923  h_energy[i][ip][ie][j] = fs_->make<TH1D>(hname, htit, 5000, -0.1, 49.9);
924  h_energy[i][ip][ie][j]->Sumw2();
925  }
926  }
927  }
928  }
929 
930  for (int i = 0; i < 8; ++i) {
931  sprintf(hname, "counter%d", i);
932  sprintf(htit, "Counter with cut %d", i);
933  h_counter[i] = fs_->make<TH1D>(hname, htit, 1000, 0, 1000);
934  sprintf(hname, "h_pTNew%d", i);
935  sprintf(htit, "Track momentum with cut %d", i);
936  h_h_pNew[i] = fs_->make<TH1D>(hname, htit, 1000, 0, 1000);
937  }
938 
939  // Now the tree
940  if (doTree_) {
941  tree_ = fs_->make<TTree>("testTree", "new HLT Tree");
942  tree_->Branch("tr_goodRun", &tr_goodRun, "tr_goodRun/I");
943  tree_->Branch("tr_goodPV", &tr_goodPV, "tr_goodPV/I");
944  tree_->Branch("tr_eventWeight", &tr_eventWeight, "tr_eventWeight/D");
945  tree_->Branch("tr_tr_TrigName", &tr_TrigName);
946  tree_->Branch("tr_TrkPt", &tr_TrkPt);
947  tree_->Branch("tr_TrkP", &tr_TrkP);
948  tree_->Branch("tr_TrkEta", &tr_TrkEta);
949  tree_->Branch("tr_TrkPhi", &tr_TrkPhi);
950  tree_->Branch("tr_TrkID", &tr_TrkID);
951  tree_->Branch("tr_MaxNearP31X31", &tr_MaxNearP31X31);
952  tree_->Branch("tr_MaxNearHcalP7x7", &tr_MaxNearHcalP7x7);
953  tree_->Branch("tr_FE7x7P", &tr_FE7x7P);
954  tree_->Branch("tr_FE11x11P", &tr_FE11x11P);
955  tree_->Branch("tr_FE15x15P", &tr_FE15x15P);
956  tree_->Branch("tr_SE7x7P", &tr_SE7x7P);
957  tree_->Branch("tr_SE11x11P", &tr_SE11x11P);
958  tree_->Branch("tr_SE15x15P", &tr_SE15x15P);
959  tree_->Branch("tr_H3x3", &tr_H3x3);
960  tree_->Branch("tr_H5x5", &tr_H5x5);
961  tree_->Branch("tr_H7x7", &tr_H7x7);
962  tree_->Branch("tr_iEta", &tr_iEta);
963  }
964 }
965 
966 // ------------ method called when starting to processes a run ------------
967 void StudyCaloResponse::beginRun(edm::Run const& iRun, edm::EventSetup const& iSetup) {
968  char hname[100], htit[400];
969  edm::LogVerbatim("IsoTrack") << "Run[" << nRun_ << "] " << iRun.run() << " hltconfig.init "
970  << hltConfig_.init(iRun, iSetup, "HLT", changed_);
971  sprintf(hname, "h_HLTAccepts_%i", iRun.run());
972  sprintf(htit, "HLT Accepts for Run No %i", iRun.run());
973  TH1I* hnew = fs_->make<TH1I>(hname, htit, 500, 0, 500);
974  for (int i = 1; i <= 500; ++i)
975  hnew->GetXaxis()->SetBinLabel(i, " ");
976  h_HLTAccepts.push_back(hnew);
977  edm::LogVerbatim("IsoTrack") << "beginRun " << iRun.run();
978  firstEvent_ = true;
979  changed_ = false;
980 }
981 
982 // ------------ method called when ending the processing of a run ------------
984  ++nRun_;
985  edm::LogVerbatim("IsoTrack") << "endRun[" << nRun_ << "] " << iRun.run();
986 }
987 
989  tr_TrigName.clear();
990  tr_TrkPt.clear();
991  tr_TrkP.clear();
992  tr_TrkEta.clear();
993  tr_TrkPhi.clear();
994  tr_TrkID.clear();
995  tr_MaxNearP31X31.clear();
996  tr_MaxNearHcalP7x7.clear();
997  tr_FE7x7P.clear();
998  tr_FE11x11P.clear();
999  tr_FE15x15P.clear();
1000  tr_SE7x7P.clear();
1001  tr_SE11x11P.clear();
1002  tr_SE15x15P.clear();
1003  tr_H3x3.clear();
1004  tr_H5x5.clear();
1005  tr_H7x7.clear();
1006  tr_iEta.clear();
1007 }
1008 
1009 void StudyCaloResponse::fillTrack(int i, double pt, double p, double eta, double phi) {
1010  h_pt[i]->Fill(pt, tr_eventWeight);
1011  h_p[i]->Fill(p, tr_eventWeight);
1012  h_eta[i]->Fill(eta, tr_eventWeight);
1013  h_phi[i]->Fill(phi, tr_eventWeight);
1014 }
1015 
1016 void StudyCaloResponse::fillIsolation(int i, double emaxnearP, double eneutIso1, double eneutIso2) {
1017  h_maxNearP[i]->Fill(emaxnearP, tr_eventWeight);
1018  h_ene1[i]->Fill(eneutIso1, tr_eventWeight);
1019  h_ene2[i]->Fill(eneutIso2, tr_eventWeight);
1020  h_ediff[i]->Fill(eneutIso2 - eneutIso1, tr_eventWeight);
1021 }
1022 
1024  int flag, int ieta, double p, double enEcal1, double enHcal1, double enEcal2, double enHcal2) {
1025  int ip(-1), ie(-1);
1026  for (int i = 0; i < nPBin_; ++i) {
1027  if (p >= pBin_[i] && p < pBin_[i + 1]) {
1028  ip = i;
1029  break;
1030  }
1031  }
1032  for (int i = 0; i < nEtaBin_; ++i) {
1033  if (ieta >= etaBin_[i] && ieta < etaBin_[i + 1]) {
1034  ie = i;
1035  break;
1036  }
1037  }
1038  if (ip >= 0 && ie >= 0 && enEcal1 > 0.02 && enHcal1 > 0.1) {
1039  h_energy[flag][ip][ie][0]->Fill(enEcal1 / p, tr_eventWeight);
1040  h_energy[flag][ip][ie][1]->Fill(enHcal1 / p, tr_eventWeight);
1041  h_energy[flag][ip][ie][2]->Fill((enEcal1 + enHcal1) / p, tr_eventWeight);
1042  h_energy[flag][ip][ie][3]->Fill(enEcal2 / p, tr_eventWeight);
1043  h_energy[flag][ip][ie][4]->Fill(enHcal2 / p, tr_eventWeight);
1044  h_energy[flag][ip][ie][5]->Fill((enEcal2 + enHcal2) / p, tr_eventWeight);
1045  }
1046 }
1047 
1049  std::string truncated_str(str);
1050  int length = str.length();
1051  for (int i = 0; i < length - 2; i++) {
1052  if (str[i] == '_' && str[i + 1] == 'v' && isdigit(str.at(i + 2))) {
1053  int z = i + 1;
1054  truncated_str = str.substr(0, z);
1055  }
1056  }
1057  return (truncated_str);
1058 }
1059 
1062  int id(0);
1063  if (genParticles.isValid()) {
1064  unsigned int indx;
1065  reco::GenParticleCollection::const_iterator p;
1066  double mindR(999.9);
1067  for (p = genParticles->begin(), indx = 0; p != genParticles->end(); ++p, ++indx) {
1068  int pdgId = std::abs(p->pdgId());
1069  int idx = (pdgId == 11) ? 1 : ((pdgId == 211) ? 2 : ((pdgId == 321) ? 3 : ((pdgId == 2212) ? 4 : 0)));
1070  if (idx > 0) {
1071  double dEta = pTrack->eta() - p->momentum().Eta();
1072  double phi1 = pTrack->phi();
1073  double phi2 = p->momentum().Phi();
1074  if (phi1 < 0)
1075  phi1 += 2.0 * M_PI;
1076  if (phi2 < 0)
1077  phi2 += 2.0 * M_PI;
1078  double dPhi = phi1 - phi2;
1079  if (dPhi > M_PI)
1080  dPhi -= 2. * M_PI;
1081  else if (dPhi < -M_PI)
1082  dPhi += 2. * M_PI;
1083  double dR = sqrt(dEta * dEta + dPhi * dPhi);
1084  if (dR < mindR) {
1085  mindR = dR;
1086  id = idx;
1087  }
1088  }
1089  }
1090  }
1091  return id;
1092 }
1093 
StudyCaloResponse::h_p
TH1D * h_p[nGen_+2]
Definition: StudyCaloResponse.cc:142
spr::trackSelectionParameters::maxDxyPV
double maxDxyPV
Definition: TrackSelection.h:22
StudyCaloResponse::verbosity_
const int verbosity_
Definition: StudyCaloResponse.cc:112
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
StudyCaloResponse::triggerEvent_
const edm::InputTag triggerEvent_
Definition: StudyCaloResponse.cc:121
StudyCaloResponse::nGen_
static const int nGen_
Definition: StudyCaloResponse.cc:109
electrons_cff.bool
bool
Definition: electrons_cff.py:393
EDAnalyzer.h
mps_fire.i
i
Definition: mps_fire.py:428
StudyCaloResponse::tr_TrigName
std::vector< std::string > tr_TrigName
Definition: StudyCaloResponse.cc:152
StudyCaloResponse::h_ntrk
TH1I * h_ntrk[2]
Definition: StudyCaloResponse.cc:144
StudyCaloResponse::h_ene1
TH1D * h_ene1[2]
Definition: StudyCaloResponse.cc:145
Muon.h
StandaloneTrackMonitor_cfi.trackQuality
trackQuality
Definition: StandaloneTrackMonitor_cfi.py:11
StudyCaloResponse::tree_
TTree * tree_
Definition: StudyCaloResponse.cc:147
MessageLogger.h
genParticles2HepMC_cfi.genParticles
genParticles
Definition: genParticles2HepMC_cfi.py:4
StudyCaloResponse::tok_genTrack_
edm::EDGetTokenT< reco::TrackCollection > tok_genTrack_
Definition: StudyCaloResponse.cc:131
funct::false
false
Definition: Factorize.h:29
edm::Handle::product
T const * product() const
Definition: Handle.h:70
TriggerResults.h
StudyCaloResponse::trackPID
int trackPID(const reco::Track *, const edm::Handle< reco::GenParticleCollection > &)
Definition: StudyCaloResponse.cc:1060
spr::trackSelectionParameters::maxDzPV
double maxDzPV
Definition: TrackSelection.h:22
StudyCaloResponse::h_ediff
TH1D * h_ediff[2]
Definition: StudyCaloResponse.cc:145
spr::trackSelectionParameters::maxChi2
double maxChi2
Definition: TrackSelection.h:22
StudyCaloResponse::nPVBin_
static const int nPVBin_
Definition: StudyCaloResponse.cc:108
edm::LuminosityBlock
Definition: LuminosityBlock.h:50
DiDispStaMuonMonitor_cfi.pt
pt
Definition: DiDispStaMuonMonitor_cfi.py:39
muon::segmentCompatibility
float segmentCompatibility(const reco::Muon &muon, reco::Muon::ArbitrationType arbitrationType=reco::Muon::SegmentAndTrackArbitration)
Definition: MuonSelectors.cc:61
reco::TrackBase::p
double p() const
momentum vector magnitude
Definition: TrackBase.h:631
EcalSeverityLevelAlgoRcd.h
edm::Run
Definition: Run.h:45
StudyCaloResponse::fillIsolation
void fillIsolation(int, double, double, double)
Definition: StudyCaloResponse.cc:1016
TriggerEvent.h
StudyCaloResponse::h_counter
TH1D * h_counter[8]
Definition: StudyCaloResponse.cc:142
edm::EDGetTokenT< LumiDetails >
CaloGeometryRecord
Definition: CaloGeometryRecord.h:30
StudyCaloResponse::h_phi
TH1D * h_phi[nGen_+2]
Definition: StudyCaloResponse.cc:143
edm
HLT enums.
Definition: AlignableModifier.h:19
StudyCaloResponse::tr_SE15x15P
std::vector< bool > tr_SE15x15P
Definition: StudyCaloResponse.cc:157
StudyCaloResponse::tr_goodRun
int tr_goodRun
Definition: StudyCaloResponse.cc:150
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
StudyCaloResponse::nRun_
int nRun_
Definition: StudyCaloResponse.cc:148
StudyCaloResponse::tr_TrkEta
std::vector< double > tr_TrkEta
Definition: StudyCaloResponse.cc:153
HcalTopology
Definition: HcalTopology.h:26
EBDetId.h
EEDetId.h
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89287
reco::GenParticleCollection
std::vector< GenParticle > GenParticleCollection
collection of GenParticles
Definition: GenParticleFwd.h:13
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
triggerResults
static const std::string triggerResults
Definition: EdmProvDump.cc:45
StudyCaloResponse::tok_trigRes
edm::EDGetTokenT< edm::TriggerResults > tok_trigRes
Definition: StudyCaloResponse.cc:128
HLT_FULL_cff.etaBins
etaBins
Definition: HLT_FULL_cff.py:15263
StudyCaloResponse::tok_Muon_
edm::EDGetTokenT< reco::MuonCollection > tok_Muon_
Definition: StudyCaloResponse.cc:130
reco::TrackBase::TrackQuality
TrackQuality
track quality
Definition: TrackBase.h:150
StudyCaloResponse::tr_H5x5
std::vector< double > tr_H5x5
Definition: StudyCaloResponse.cc:155
StudyCaloResponse::selectionParameters_
spr::trackSelectionParameters selectionParameters_
Definition: StudyCaloResponse.cc:122
StudyCaloResponse::tr_FE7x7P
std::vector< double > tr_FE7x7P
Definition: StudyCaloResponse.cc:156
StudyCaloResponse::fs_
edm::Service< TFileService > fs_
Definition: StudyCaloResponse.cc:111
StudyCaloResponse::tok_EE_
edm::EDGetTokenT< EcalRecHitCollection > tok_EE_
Definition: StudyCaloResponse.cc:134
StudyCaloResponse::h_nHLTvsRN
TH2I * h_nHLTvsRN
Definition: StudyCaloResponse.cc:140
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
CaloTopologyRecord
Definition: CaloTopologyRecord.h:10
StudyCaloResponse::puWeights_
const std::vector< double > puWeights_
Definition: StudyCaloResponse.cc:120
edm::one::EDAnalyzer
Definition: EDAnalyzer.h:30
StudyCaloResponse::h_HLTAccept
TH1I * h_HLTAccept
Definition: StudyCaloResponse.cc:138
HLT_FULL_cff.dPhi
dPhi
Definition: HLT_FULL_cff.py:13702
StudyCaloResponse::tMaxE_
const double tMaxE_
Definition: StudyCaloResponse.cc:117
EcalCondObjectContainer
Definition: EcalCondObjectContainer.h:13
convertSQLiteXML.ok
bool ok
Definition: convertSQLiteXML.py:98
edm::Handle< reco::GenParticleCollection >
edm::RunBase::run
RunNumber_t run() const
Definition: RunBase.h:40
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
CaloTopology
Definition: CaloTopology.h:19
StudyCaloResponse::clear
void clear()
Definition: StudyCaloResponse.cc:988
EcalRecHitCollections.h
heavyIonCSV_trainingSettings.idx
idx
Definition: heavyIonCSV_trainingSettings.py:5
StudyCaloResponse::theTrackQuality_
const std::string theTrackQuality_
Definition: StudyCaloResponse.cc:115
GenParticle.h
StudyCaloResponse::h_numberPV
TH1I * h_numberPV
Definition: StudyCaloResponse.cc:138
StudyCaloResponse::truncate_str
std::string truncate_str(const std::string &)
Definition: StudyCaloResponse.cc:1048
reco::TrackBase::pt
double pt() const
track transverse momentum
Definition: TrackBase.h:637
IdealMagneticFieldRecord
Definition: IdealMagneticFieldRecord.h:11
edm::InputTag::label
std::string const & label() const
Definition: InputTag.h:36
DetId
Definition: DetId.h:17
StudyCaloResponse::labelGenTrack_
const edm::InputTag labelGenTrack_
Definition: StudyCaloResponse.cc:114
MakerMacros.h
CaloGeometry
Definition: CaloGeometry.h:21
FindCaloHit.h
StudyCaloResponse::tr_MaxNearP31X31
std::vector< double > tr_MaxNearP31X31
Definition: StudyCaloResponse.cc:154
StudyCaloResponse::etaBin_
int etaBin_[nEtaBin_+1]
Definition: StudyCaloResponse.cc:148
Track.h
edm::EventSetup::get
T get() const
Definition: EventSetup.h:80
TrackFwd.h
StudyCaloResponse::tr_TrkPhi
std::vector< double > tr_TrkPhi
Definition: StudyCaloResponse.cc:153
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
spr::eECALmatrix
double eECALmatrix(const DetId &detId, edm::Handle< T > &hitsEB, edm::Handle< T > &hitsEE, const CaloGeometry *geo, const CaloTopology *caloTopology, int ieta, int iphi, double ebThr=-100, double eeThr=-100, double tMin=-500, double tMax=500, bool debug=false)
edm::ConfigurationDescriptions::add
void add(std::string const &label, ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:57
spr::chargeIsolationHcal
double chargeIsolationHcal(unsigned int trkIndex, std::vector< spr::propagatedTrackID > &vdetIds, const HcalTopology *topology, int ieta, int iphi, bool debug=false)
Definition: ChargeIsolation.cc:114
L1TEGammaOffline_cfi.triggerNames
triggerNames
Definition: L1TEGammaOffline_cfi.py:40
MuonSelectors.h
Service.h
PVValHelper::eta
Definition: PVValidationHelpers.h:69
HLT_FULL_cff.weights
weights
Definition: HLT_FULL_cff.py:99178
StudyCaloResponse::isItAOD_
const bool isItAOD_
Definition: StudyCaloResponse.cc:118
ChargeIsolation.h
StudyCaloResponse::analyze
void analyze(edm::Event const &, edm::EventSetup const &) override
Definition: StudyCaloResponse.cc:289
MuonFwd.h
StudyCaloResponse::fillTrack
void fillTrack(int, double, double, double, double)
Definition: StudyCaloResponse.cc:1009
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
eHCALMatrix.h
StudyCaloResponse::vetoMuon_
const bool vetoMuon_
Definition: StudyCaloResponse.cc:118
StudyCaloResponse::tok_EB_
edm::EDGetTokenT< EcalRecHitCollection > tok_EB_
Definition: StudyCaloResponse.cc:133
GenParticleFwd.h
DDAxes::z
reco::Track
Definition: Track.h:27
IdealMagneticFieldRecord.h
str
#define str(s)
Definition: TestProcessor.cc:51
edm::ESHandle< CaloGeometry >
StudyCaloResponse::h_ene2
TH1D * h_ene2[2]
Definition: StudyCaloResponse.cc:145
EcalSeverityLevelAlgoRcd
Definition: EcalSeverityLevelAlgoRcd.h:12
mix_E10TeV_L13E31_BX432_cfi.Lumi
Lumi
Definition: mix_E10TeV_L13E31_BX432_cfi.py:24
StudyCaloResponse::minTrackP_
const double minTrackP_
Definition: StudyCaloResponse.cc:116
StudyCaloResponse::tMinH_
const double tMinH_
Definition: StudyCaloResponse.cc:117
StudyCaloResponse::tr_TrkP
std::vector< double > tr_TrkP
Definition: StudyCaloResponse.cc:153
spr::trackSelectionParameters::minPt
double minPt
Definition: TrackSelection.h:20
HLT_FULL_cff.pt1
pt1
Definition: HLT_FULL_cff.py:9870
StudyCaloResponse::tok_trigEvt
edm::EDGetTokenT< trigger::TriggerEvent > tok_trigEvt
Definition: StudyCaloResponse.cc:127
spr::trackSelectionParameters
Definition: TrackSelection.h:12
spr::trackSelectionParameters::minOuterHit
int minOuterHit
Definition: TrackSelection.h:23
dqmdumpme.k
k
Definition: dqmdumpme.py:60
eECALMatrix.h
EcalSeverityLevelAlgo.h
reco::TrackBase::phi
double phi() const
azimuthal angle of momentum vector
Definition: TrackBase.h:649
StudyCaloResponse::h_goodPV
TH1I * h_goodPV
Definition: StudyCaloResponse.cc:139
HcalRecNumberingRecord
Definition: HcalRecNumberingRecord.h:23
spr::trackSelectionParameters::maxDpOverP
double maxDpOverP
Definition: TrackSelection.h:22
edm::ConfigurationDescriptions
Definition: ConfigurationDescriptions.h:28
StudyCaloResponse::HLTNames_
std::vector< std::string > HLTNames_
Definition: StudyCaloResponse.cc:123
spr::trackSelectionParameters::minLayerCrossed
int minLayerCrossed
Definition: TrackSelection.h:23
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
Vertex.h
StudyCaloResponse::tok_lumi
edm::EDGetTokenT< LumiDetails > tok_lumi
Definition: StudyCaloResponse.cc:126
TFileService.h
HLT_FULL_cff.eta1
eta1
Definition: HLT_FULL_cff.py:9541
StudyCaloResponse::vetoTrigger_
const bool vetoTrigger_
Definition: StudyCaloResponse.cc:118
StudyCaloResponse::tr_TrkID
std::vector< int > tr_TrkID
Definition: StudyCaloResponse.cc:158
LEDCalibrationChannels.ieta
ieta
Definition: LEDCalibrationChannels.py:63
CaloSubdetectorGeometry.h
StudyCaloResponse::tr_H7x7
std::vector< double > tr_H7x7
Definition: StudyCaloResponse.cc:155
edm::ParameterSet
Definition: ParameterSet.h:47
StudyCaloResponse::tMaxH_
const double tMaxH_
Definition: StudyCaloResponse.cc:117
StudyCaloResponse::vetoEcal_
const bool vetoEcal_
Definition: StudyCaloResponse.cc:118
GenEventInfoProduct.h
Event.h
LumiDetails.h
PVValHelper::phi
Definition: PVValidationHelpers.h:68
SiStripPI::max
Definition: SiStripPayloadInspectorHelper.h:169
StudyCaloResponse::h_h_pNew
TH1D * h_h_pNew[8]
Definition: StudyCaloResponse.cc:143
EcalChannelStatusRcd
Definition: EcalChannelStatusRcd.h:5
TrackSelection.h
StudyCaloResponse::maxTrackEta_
const double maxTrackEta_
Definition: StudyCaloResponse.cc:116
HcalDetId.h
StudyCaloResponse::fillDescriptions
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
Definition: StudyCaloResponse.cc:250
spr::trackSelectionParameters::maxOutMiss
int maxOutMiss
Definition: TrackSelection.h:24
match
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
Definition: Utils.h:10
reco::TrackBase::eta
double eta() const
pseudorapidity of momentum vector
Definition: TrackBase.h:652
CaloTopologyRecord.h
StudyCaloResponse::nEtaBin_
static const int nEtaBin_
Definition: StudyCaloResponse.cc:108
HcalDetId
Definition: HcalDetId.h:12
edm::Service< TFileService >
createfilelist.int
int
Definition: createfilelist.py:10
TriggerNames.h
StudyCaloResponse::tr_MaxNearHcalP7x7
std::vector< double > tr_MaxNearHcalP7x7
Definition: StudyCaloResponse.cc:154
iEvent
int iEvent
Definition: GenABIO.cc:224
StudyCaloResponse::h_energy
TH1D * h_energy[nPVBin_+8][nPBin_][nEtaBin_][6]
Definition: StudyCaloResponse.cc:146
M_PI
#define M_PI
Definition: BXVectorInputProducer.cc:49
StudyCaloResponse::tok_recVtx_
edm::EDGetTokenT< reco::VertexCollection > tok_recVtx_
Definition: StudyCaloResponse.cc:132
trackerHitRTTI::vector
Definition: trackerHitRTTI.h:21
StudyCaloResponse::tr_SE7x7P
std::vector< bool > tr_SE7x7P
Definition: StudyCaloResponse.cc:157
p1
double p1[4]
Definition: TauolaWrapper.h:89
StudyCaloResponse::tMinE_
const double tMinE_
Definition: StudyCaloResponse.cc:117
EgammaValidation_cff.pdgId
pdgId
Definition: EgammaValidation_cff.py:118
MagneticField.h
StudyCaloResponse::StudyCaloResponse
StudyCaloResponse(const edm::ParameterSet &)
Definition: StudyCaloResponse.cc:161
edm::EventSetup
Definition: EventSetup.h:57
StudyCaloResponse::beginLuminosityBlock
virtual void beginLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &)
Definition: StudyCaloResponse.cc:97
trigger::TriggerEvent
The single EDProduct to be saved for each event (AOD case)
Definition: TriggerEvent.h:25
HLTConfigProvider.h
get
#define get
HitPattern.h
PDWG_DiPhoton_SD_cff.triggerEvent
triggerEvent
Definition: PDWG_DiPhoton_SD_cff.py:39
spr::trackSelectionParameters::minQuality
reco::TrackBase::TrackQuality minQuality
Definition: TrackSelection.h:21
StudyCaloResponse::tr_TrkPt
std::vector< double > tr_TrkPt
Definition: StudyCaloResponse.cc:153
ClusterTask_cfi.trig
trig
Definition: ClusterTask_cfi.py:398
StudyCaloResponse::h_maxNearP
TH1D * h_maxNearP[2]
Definition: StudyCaloResponse.cc:145
StudyCaloResponse::tr_H3x3
std::vector< double > tr_H3x3
Definition: StudyCaloResponse.cc:155
StudyCaloResponse::cutEcal_
const double cutEcal_
Definition: StudyCaloResponse.cc:119
StudyCaloResponse::h_HLTCorr
TH1I * h_HLTCorr
Definition: StudyCaloResponse.cc:138
StudyCaloResponse::changed_
bool changed_
Definition: StudyCaloResponse.cc:124
TriggerObject.h
StudyCaloResponse::firstEvent_
bool firstEvent_
Definition: StudyCaloResponse.cc:124
StudyCaloResponse::tr_iEta
std::vector< int > tr_iEta
Definition: StudyCaloResponse.cc:158
CaloTopology.h
photonIsolationHIProducer_cfi.hbhe
hbhe
Definition: photonIsolationHIProducer_cfi.py:8
StudyCaloResponse
Definition: StudyCaloResponse.cc:85
spr::propagateCALO
std::vector< spr::propagatedTrackID > propagateCALO(edm::Handle< reco::TrackCollection > &trkCollection, const CaloGeometry *geo, const MagneticField *bField, const std::string &theTrackQuality, bool debug=false)
Definition: CaloPropagateTrack.cc:141
reco::TrackBase::qualityByName
static TrackQuality qualityByName(const std::string &name)
Definition: TrackBase.cc:126
VertexFwd.h
DDAxes::phi
StudyCaloResponse::pvBin_
int pvBin_[nPVBin_+1]
Definition: StudyCaloResponse.cc:148
CaloSubdetectorTopology.h
StudyCaloResponse::labelMuon_
const edm::InputTag labelMuon_
Definition: StudyCaloResponse.cc:114
HcalTopology.h
EcalTrigTowerConstituentsMap.h
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
HLTConfigProvider
Definition: HLTConfigProvider.h:29
std
Definition: JetResolutionObject.h:76
StudyCaloResponse::tr_FE15x15P
std::vector< double > tr_FE15x15P
Definition: StudyCaloResponse.cc:156
genParticles2HepMC_cfi.genEventInfo
genEventInfo
Definition: genParticles2HepMC_cfi.py:6
HLTConfigProvider::init
bool init(const edm::Run &iRun, const edm::EventSetup &iSetup, const std::string &processName, bool &changed)
d'tor
Definition: HLTConfigProvider.cc:36
qcdUeDQM_cfi.quality
quality
Definition: qcdUeDQM_cfi.py:31
Calorimetry_cff.bField
bField
Definition: Calorimetry_cff.py:292
StudyCaloResponse::endRun
void endRun(edm::Run const &, edm::EventSetup const &) override
Definition: StudyCaloResponse.cc:983
DetId.h
Frameworkfwd.h
HLT_FULL_cff.dEta
dEta
Definition: HLT_FULL_cff.py:13701
edm::LogVerbatim
Log< level::Info, true > LogVerbatim
Definition: MessageLogger.h:128
CaloPropagateTrack.h
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:31
spr::trackSelectionParameters::maxInMiss
int maxInMiss
Definition: TrackSelection.h:24
StudyCaloResponse::fillEnergy
void fillEnergy(int, int, double, double, double, double, double)
Definition: StudyCaloResponse.cc:1023
StudyCaloResponse::h_HLTAccepts
std::vector< TH1I * > h_HLTAccepts
Definition: StudyCaloResponse.cc:141
flavorHistoryFilter_cfi.dr
dr
Definition: flavorHistoryFilter_cfi.py:37
StudyCaloResponse::trigNames_
const std::vector< std::string > trigNames_
Definition: StudyCaloResponse.cc:113
CaloGeometry.h
TFileService::kSharedResource
static const std::string kSharedResource
Definition: TFileService.h:76
edm::TriggerNames
Definition: TriggerNames.h:55
StudyCaloResponse::tok_hbhe_
edm::EDGetTokenT< HBHERecHitCollection > tok_hbhe_
Definition: StudyCaloResponse.cc:135
StudyCaloResponse::h_pt
TH1D * h_pt[nGen_+2]
Definition: StudyCaloResponse.cc:142
StudyCaloResponse::tr_FE11x11P
std::vector< double > tr_FE11x11P
Definition: StudyCaloResponse.cc:156
StudyCaloResponse::h_goodRun
TH1I * h_goodRun
Definition: StudyCaloResponse.cc:139
StudyCaloResponse::doTree_
const bool doTree_
Definition: StudyCaloResponse.cc:118
StudyCaloResponse::cutMuon_
const double cutMuon_
Definition: StudyCaloResponse.cc:119
reco::deltaR
constexpr auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
Definition: deltaR.h:30
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
StudyCaloResponse::cutRatio_
const double cutRatio_
Definition: StudyCaloResponse.cc:119
HcalRecHitCollections.h
StudyCaloResponse::h_nHLT
TH1I * h_nHLT
Definition: StudyCaloResponse.cc:138
StudyCaloResponse::endLuminosityBlock
virtual void endLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &)
Definition: StudyCaloResponse.cc:98
spr::eHCALmatrix
double eHCALmatrix(const HcalTopology *topology, const DetId &det, edm::Handle< T > &hits, int ieta, int iphi, bool includeHO=false, bool algoNew=true, double hbThr=-100, double heThr=-100, double hfThr=-100, double hoThr=-100, double tMin=-500, double tMax=500, int useRaw=0, bool debug=false)
StudyCaloResponse::nPBin_
static const int nPBin_
Definition: StudyCaloResponse.cc:108
StudyCaloResponse::tr_eventWeight
double tr_eventWeight
Definition: StudyCaloResponse.cc:151
StudyCaloResponse::hltConfig_
HLTConfigProvider hltConfig_
Definition: StudyCaloResponse.cc:110
StudyCaloResponse::h_eta
TH1D * h_eta[nGen_+2]
Definition: StudyCaloResponse.cc:143
StudyCaloResponse::theTriggerResultsLabel_
const edm::InputTag theTriggerResultsLabel_
Definition: StudyCaloResponse.cc:121
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
spr::chargeIsolationEcal
double chargeIsolationEcal(unsigned int trkIndex, std::vector< spr::propagatedTrackID > &vdetIds, const CaloGeometry *geo, const CaloTopology *caloTopology, int ieta, int iphi, bool debug=false)
Definition: ChargeIsolation.cc:15
StudyCaloResponse::tok_ew_
edm::EDGetTokenT< GenEventInfoProduct > tok_ew_
Definition: StudyCaloResponse.cc:136
HGC3DClusterGenMatchSelector_cfi.dR
dR
Definition: HGC3DClusterGenMatchSelector_cfi.py:7
ParameterSet.h
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
StudyCaloResponse::tr_goodPV
int tr_goodPV
Definition: StudyCaloResponse.cc:150
reco::TrackBase::momentum
const Vector & momentum() const
track momentum vector
Definition: TrackBase.h:664
StudyCaloResponse::tok_parts_
edm::EDGetTokenT< reco::GenParticleCollection > tok_parts_
Definition: StudyCaloResponse.cc:129
edm::HandleBase::isValid
bool isValid() const
Definition: HandleBase.h:70
StudyCaloResponse::beginJob
void beginJob() override
Definition: StudyCaloResponse.cc:777
edm::Event
Definition: Event.h:73
MagneticField
Definition: MagneticField.h:19
edm::Log
Definition: MessageLogger.h:70
StudyCaloResponse::~StudyCaloResponse
~StudyCaloResponse() override
Definition: StudyCaloResponse.cc:88
StudyCaloResponse::pBin_
double pBin_[nPBin_+1]
Definition: StudyCaloResponse.cc:149
StudyCaloResponse::beginRun
void beginRun(edm::Run const &, edm::EventSetup const &) override
Definition: StudyCaloResponse.cc:967
reco::TrackBase::quality
bool quality(const TrackQuality) const
Track quality.
Definition: TrackBase.h:552
edm::InputTag
Definition: InputTag.h:15
L1GlobalTriggerReadoutRecord.h
reco::TrackCollection
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:14
StudyCaloResponse::newNames_
const std::vector< std::string > newNames_
Definition: StudyCaloResponse.cc:113
EcalChannelStatusRcd.h
StudyCaloResponse::tr_SE11x11P
std::vector< bool > tr_SE11x11P
Definition: StudyCaloResponse.cc:157
TFileService::make
T * make(const Args &... args) const
make new ROOT object
Definition: TFileService.h:64
RemoveAddSevLevel.flag
flag
Definition: RemoveAddSevLevel.py:116
ValidationMatrix.hlt
hlt
Definition: ValidationMatrix.py:459