CMS 3D CMS Logo

HcalRaddamMuon.cc
Go to the documentation of this file.
1 #include <memory>
2 #include <iostream>
3 #include <vector>
4 
5 #include <TTree.h>
6 
7 // user include files
33 
37 
41 
53 
54 class HcalRaddamMuon : public edm::one::EDAnalyzer<edm::one::WatchRuns, edm::one::SharedResources> {
55 public:
56  explicit HcalRaddamMuon(const edm::ParameterSet&);
57  ~HcalRaddamMuon() override;
58 
59  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
60 
61 private:
62  void beginJob() override;
63  void analyze(const edm::Event&, const edm::EventSetup&) override;
64  void endJob() override;
65  void beginRun(edm::Run const&, edm::EventSetup const&) override;
66  void endRun(edm::Run const&, edm::EventSetup const&) override;
67  void clearVectors();
68  int matchId(const HcalDetId&, const HcalDetId&);
69  double activeLength(const DetId&);
70 
71  // ----------member data ---------------------------
74 
78  std::vector<double> EtaGlob;
86  std::vector<bool> innerTrack, OuterTrack, GlobalTrack;
87  std::vector<double> IsolationR04, IsolationR03;
94 
95  //
101 
102  //
103  std::vector<double> MuonHcalActiveLength;
104  std::vector<HcalDDDRecConstants::HcalActiveLength> actHB, actHE;
110  const int verbosity_, useRaw_;
111  const bool isAOD_;
115 
116  std::vector<bool> isHB, isHE;
117  TTree* TREE;
118  std::vector<bool> all_ifTriggerpassed;
120  std::vector<int> hltresults;
121  std::vector<float> energy_hb, time_hb;
122  std::vector<std::string> hltpaths, TrigName_;
123  std::vector<int> v_RH_h3x3_ieta;
124  std::vector<int> v_RH_h3x3_iphi;
125  std::vector<double> v_RH_h3x3_ene, PxGlob, PyGlob, PzGlob, Pthetha;
128  double h3x3, h3x3Calo;
134 
143 
151 };
152 
154  : hlTriggerResults_(iConfig.getUntrackedParameter<edm::InputTag>("hlTriggerResults_")),
155  muonsrc_(iConfig.getUntrackedParameter<edm::InputTag>("muonSource")),
156  verbosity_(iConfig.getUntrackedParameter<int>("verbosity", 0)),
157  useRaw_(iConfig.getUntrackedParameter<int>("UseRaw", 0)),
158  isAOD_(iConfig.getUntrackedParameter<bool>("IsAOD", false)) {
159  usesResource(TFileService::kSharedResource);
160 
161  //now do what ever initialization is needed
162  maxDepth_ = iConfig.getUntrackedParameter<int>("MaxDepth", 4);
163  if (maxDepth_ > 7)
164  maxDepth_ = 7;
165  else if (maxDepth_ < 1)
166  maxDepth_ = 4;
167 
168  tok_hcal_ = consumes<edm::PCaloHitContainer>(edm::InputTag("g4SimHits", "HcalHits"));
169  tok_trigRes_ = consumes<edm::TriggerResults>(hlTriggerResults_);
170  tok_recVtx_ = consumes<reco::VertexCollection>(edm::InputTag("offlinePrimaryVertices"));
171  tok_bs_ = consumes<reco::BeamSpot>(edm::InputTag("offlineBeamSpot"));
172  if (isAOD_) {
173  tok_EB_ = consumes<EcalRecHitCollection>(edm::InputTag("reducedEcalRecHitsEB"));
174  tok_EE_ = consumes<EcalRecHitCollection>(edm::InputTag("reducedEcalRecHitsEE"));
175  tok_hbhe_ = consumes<HBHERecHitCollection>(edm::InputTag("reducedHcalRecHits", "hbhereco"));
176  } else {
177  tok_EB_ = consumes<EcalRecHitCollection>(edm::InputTag("ecalRecHit", "EcalRecHitsEB"));
178  tok_EE_ = consumes<EcalRecHitCollection>(edm::InputTag("ecalRecHit", "EcalRecHitsEE"));
179  tok_hbhe_ = consumes<HBHERecHitCollection>(edm::InputTag("hbhereco"));
180  }
181  tok_muon_ = consumes<reco::MuonCollection>(muonsrc_);
182 
183  tok_ddrec_ = esConsumes<HcalDDDRecConstants, HcalRecNumberingRecord, edm::Transition::BeginRun>();
184  tok_geom_ = esConsumes<CaloGeometry, CaloGeometryRecord>();
185  tok_caloTopology_ = esConsumes<CaloTopology, CaloTopologyRecord>();
186  tok_topo_ = esConsumes<HcalTopology, HcalRecNumberingRecord>();
187  tok_magField_ = esConsumes<MagneticField, IdealMagneticFieldRecord>();
188  tok_ecalChStatus_ = esConsumes<EcalChannelStatus, EcalChannelStatusRcd>();
189  tok_sevlv_ = esConsumes<EcalSeverityLevelAlgo, EcalSeverityLevelAlgoRcd>();
190 }
191 
193  // do anything here that needs to be done at desctruction time
194  // (e.g. close files, deallocate resources etc.)
195 }
196 
197 //
198 // member functions
199 //
200 
201 // ------------ method called for each event ------------
203  clearVectors();
204  RunNumber = iEvent.id().run();
205  EventNumber = iEvent.id().event();
206  LumiNumber = iEvent.id().luminosityBlock();
207  BXNumber = iEvent.bunchCrossing();
208 
210  iEvent.getByToken(tok_hcal_, calosimhits);
211 
213  iEvent.getByToken(tok_trigRes_, _Triggers);
214 
215  if ((verbosity_ % 10) > 1)
216  edm::LogVerbatim("HBHEMuon") << "size of all triggers " << all_triggers.size();
217  int Ntriggers = all_triggers.size();
218 
219  if ((verbosity_ % 10) > 1)
220  edm::LogVerbatim("HBHEMuon") << "size of HLT MENU: " << _Triggers->size();
221 
222  if (_Triggers.isValid()) {
223  const edm::TriggerNames& triggerNames_ = iEvent.triggerNames(*_Triggers);
224 
225  std::vector<int> index;
226  for (int i = 0; i < Ntriggers; i++) {
227  index.push_back(triggerNames_.triggerIndex(all_triggers[i]));
228  int triggerSize = int(_Triggers->size());
229  if ((verbosity_ % 10) > 2)
230  edm::LogVerbatim("HBHEMuon") << "outside loop " << index[i] << "\ntriggerSize " << triggerSize;
231  if (index[i] < triggerSize) {
232  hltresults.push_back(_Triggers->accept(index[i]));
233  if ((verbosity_ % 10) > 2)
234  edm::LogVerbatim("HBHEMuon") << "trigger_info " << triggerSize << " triggerSize " << index[i]
235  << " trigger_index " << hltresults.at(i) << " hltresult ";
236  } else {
237  edm::LogVerbatim("HBHEMuon") << "Requested HLT path \""
238  << "\" does not exist";
239  }
240  }
241  }
242 
243  // get handles to calogeometry and calotopology
244  const CaloGeometry* geo = &iSetup.getData(tok_geom_);
245  const MagneticField* bField = &iSetup.getData(tok_magField_);
246  const EcalChannelStatus* theEcalChStatus = &iSetup.getData(tok_ecalChStatus_);
247  const EcalSeverityLevelAlgo* sevlv = &iSetup.getData(tok_sevlv_);
248  const CaloTopology* caloTopology = &iSetup.getData(tok_caloTopology_);
249  const HcalTopology* theHBHETopology = &iSetup.getData(tok_topo_);
250 
252  iEvent.getByToken(tok_bs_, bmspot);
253 
255  iEvent.getByToken(tok_recVtx_, vtx);
256 
257  edm::Handle<EcalRecHitCollection> barrelRecHitsHandle;
258  edm::Handle<EcalRecHitCollection> endcapRecHitsHandle;
259  iEvent.getByToken(tok_EB_, barrelRecHitsHandle);
260  iEvent.getByToken(tok_EE_, endcapRecHitsHandle);
261 
263  iEvent.getByToken(tok_hbhe_, hbhe);
264 
266  iEvent.getByToken(tok_muon_, _Muon);
267  const reco::Vertex& vertex = (*(vtx)->begin());
268 
269  math::XYZPoint bspot;
270  bspot = (bmspot.isValid()) ? bmspot->position() : math::XYZPoint(0, 0, 0);
271 
272  if (_Muon.isValid()) {
273  for (reco::MuonCollection::const_iterator RecMuon = _Muon->begin(); RecMuon != _Muon->end(); ++RecMuon) {
274  muon_is_good.push_back(RecMuon->isPFMuon());
275  muon_global.push_back(RecMuon->isGlobalMuon());
276  muon_tracker.push_back(RecMuon->isTrackerMuon());
277  PtGlob.push_back((RecMuon)->pt());
278  EtaGlob.push_back(RecMuon->eta());
279  PhiGlob.push_back(RecMuon->phi());
280  Energy.push_back(RecMuon->energy());
281  Pmuon.push_back(RecMuon->p());
282  // if (RecMuon->isPFMuon()) goodEvent = true;
283  // acessing tracker hits info
284  if (RecMuon->track().isNonnull()) {
285  TrackerLayer.push_back(RecMuon->track()->hitPattern().trackerLayersWithMeasurement());
286  } else {
287  TrackerLayer.push_back(-1);
288  }
289  if (RecMuon->innerTrack().isNonnull()) {
290  innerTrack.push_back(true);
291  NumPixelLayers.push_back(RecMuon->innerTrack()->hitPattern().pixelLayersWithMeasurement());
292  chiTracker.push_back(RecMuon->innerTrack()->normalizedChi2());
293  DxyTracker.push_back(fabs(RecMuon->innerTrack()->dxy((vertex).position())));
294  DzTracker.push_back(fabs(RecMuon->innerTrack()->dz((vertex).position())));
295  innerTrackpt.push_back(RecMuon->innerTrack()->pt());
296  innerTracketa.push_back(RecMuon->innerTrack()->eta());
297  innerTrackphi.push_back(RecMuon->innerTrack()->phi());
298  Tight_PixelHits.push_back(RecMuon->innerTrack()->hitPattern().numberOfValidPixelHits());
299  } else {
300  innerTrack.push_back(false);
301  NumPixelLayers.push_back(0);
302  chiTracker.push_back(0);
303  DxyTracker.push_back(0);
304  DzTracker.push_back(0);
305  innerTrackpt.push_back(0);
306  innerTracketa.push_back(0);
307  innerTrackphi.push_back(0);
308  Tight_PixelHits.push_back(0);
309  }
310  // outer track info
311 
312  if (RecMuon->outerTrack().isNonnull()) {
313  OuterTrack.push_back(true);
314  OuterTrackPt.push_back(RecMuon->outerTrack()->pt());
315  OuterTrackEta.push_back(RecMuon->outerTrack()->eta());
316  OuterTrackPhi.push_back(RecMuon->outerTrack()->phi());
317  OuterTrackChi.push_back(RecMuon->outerTrack()->normalizedChi2());
318  OuterTrackHits.push_back(RecMuon->outerTrack()->numberOfValidHits());
319  OuterTrackRHits.push_back(RecMuon->outerTrack()->recHitsSize());
320  } else {
321  OuterTrack.push_back(false);
322  OuterTrackPt.push_back(0);
323  OuterTrackEta.push_back(0);
324  OuterTrackPhi.push_back(0);
325  OuterTrackChi.push_back(0);
326  OuterTrackHits.push_back(0);
327  OuterTrackRHits.push_back(0);
328  }
329  // Tight Muon cuts
330  if (RecMuon->globalTrack().isNonnull()) {
331  GlobalTrack.push_back(true);
332  chiGlobal.push_back(RecMuon->globalTrack()->normalizedChi2());
333  GlobalMuonHits.push_back(RecMuon->globalTrack()->hitPattern().numberOfValidMuonHits());
334  MatchedStat.push_back(RecMuon->numberOfMatchedStations());
335  GlobalTrckPt.push_back(RecMuon->globalTrack()->pt());
336  GlobalTrckEta.push_back(RecMuon->globalTrack()->eta());
337  GlobalTrckPhi.push_back(RecMuon->globalTrack()->phi());
338  Tight_TransImpara.push_back(fabs(RecMuon->muonBestTrack()->dxy(vertex.position())));
339  Tight_LongPara.push_back(fabs(RecMuon->muonBestTrack()->dz(vertex.position())));
340  } else {
341  GlobalTrack.push_back(false);
342  chiGlobal.push_back(0);
343  GlobalMuonHits.push_back(0);
344  MatchedStat.push_back(0);
345  GlobalTrckPt.push_back(0);
346  GlobalTrckEta.push_back(0);
347  GlobalTrckPhi.push_back(0);
348  Tight_TransImpara.push_back(0);
349  Tight_LongPara.push_back(0);
350  }
351 
352  IsolationR04.push_back(
353  ((RecMuon->pfIsolationR04().sumChargedHadronPt +
354  std::max(0.,
355  RecMuon->pfIsolationR04().sumNeutralHadronEt + RecMuon->pfIsolationR04().sumPhotonEt -
356  (0.5 * RecMuon->pfIsolationR04().sumPUPt))) /
357  RecMuon->pt()));
358 
359  IsolationR03.push_back(
360  ((RecMuon->pfIsolationR03().sumChargedHadronPt +
361  std::max(0.,
362  RecMuon->pfIsolationR03().sumNeutralHadronEt + RecMuon->pfIsolationR03().sumPhotonEt -
363  (0.5 * RecMuon->pfIsolationR03().sumPUPt))) /
364  RecMuon->pt()));
365 
366  MuonEcalEnergy.push_back(RecMuon->calEnergy().emS9);
367  MuonHcalEnergy.push_back(RecMuon->calEnergy().hadS9);
368  MuonHOEnergy.push_back(RecMuon->calEnergy().hoS9);
369 
370  double eEcal(0), eHcal(0), activeL(0), eHcalDepth[7], eHcalDepthHot[7], eHcalDepthCalo[7], eHcalDepthHotCalo[7];
371  unsigned int isHot = 0;
372  unsigned int isHotCalo = 0;
373 
374  for (int i = 0; i < 7; ++i)
375  eHcalDepth[i] = eHcalDepthHot[i] = eHcalDepthCalo[i] = eHcalDepthHotCalo[i] = -10000;
376 
377  if (RecMuon->innerTrack().isNonnull()) {
378  const reco::Track* pTrack = (RecMuon->innerTrack()).get();
379  spr::propagatedTrackID trackID = spr::propagateCALO(pTrack, geo, bField, (((verbosity_ / 100) % 10 > 0)));
380 
381  MuonEcalDetId.push_back((trackID.detIdECAL)());
382  MuonHcalDetId.push_back((trackID.detIdHCAL)());
383  MuonEHcalDetId.push_back((trackID.detIdEHCAL)());
384 
385  if (trackID.okECAL) {
386  const DetId isoCell(trackID.detIdECAL);
387  std::pair<double, bool> e3x3 = spr::eECALmatrix(isoCell,
388  barrelRecHitsHandle,
389  endcapRecHitsHandle,
390  *theEcalChStatus,
391  geo,
392  caloTopology,
393  sevlv,
394  1,
395  1,
396  -100.0,
397  -100.0,
398  -500.0,
399  500.0,
400  false);
401 
402  eEcal = e3x3.first;
403  if (((verbosity_ / 10) % 10) > 1)
404  edm::LogVerbatim("HBHEMuon") << "eEcal" << eEcal;
405  }
406 
407  if (trackID.okHCAL) {
408  const DetId closestCell(trackID.detIdHCAL);
409  eHcal = spr::eHCALmatrix(theHBHETopology,
410  closestCell,
411  hbhe,
412  0,
413  0,
414  false,
415  true,
416  -100.0,
417  -100.0,
418  -100.0,
419  -100.0,
420  -500.,
421  500.,
422  useRaw_);
423 
424  int iphi = ((HcalDetId)(closestCell)).iphi();
425  int zside = ((HcalDetId)(closestCell)).iphi();
426  int depthHE = theHBHETopology->dddConstants()->getMinDepth(1, 16, iphi, zside);
427  if (((verbosity_ / 10) % 10) > 1)
428  edm::LogVerbatim("HBHEMuon") << "eHcal " << eHcal;
429  std::vector<std::pair<double, int> > ehdepth;
430  spr::energyHCALCell((HcalDetId)closestCell,
431  hbhe,
432  ehdepth,
433  maxDepth_,
434  -100.0,
435  -100.0,
436  -100.0,
437  -100.0,
438  -500.0,
439  500.0,
440  useRaw_,
441  depthHE,
442  (((verbosity_ / 1000) % 10) > 0));
443  for (unsigned int i = 0; i < ehdepth.size(); ++i) {
444  eHcalDepth[ehdepth[i].second - 1] = ehdepth[i].first;
445  if (((verbosity_ / 10) % 10) > 1)
446  edm::LogVerbatim("HBHEMuon")
447  << "eHcalDepth " << i << ":" << (ehdepth[i].second - 1) << ":" << eHcalDepth[ehdepth[i].second - 1];
448  }
449 
450  eHcal = spr::eHCALmatrix(theHBHETopology,
451  closestCell,
452  calosimhits,
453  0,
454  0,
455  false,
456  true,
457  -100.0,
458  -100.0,
459  -100.0,
460  -100.0,
461  -500.,
462  500.,
463  useRaw_);
464 
465  if (((verbosity_ / 10) % 10) > 1)
466  edm::LogVerbatim("HBHEMuon") << "eHcal " << eHcal;
467  const DetId closestCellCalo(trackID.detIdHCAL);
468  iphi = ((HcalDetId)(closestCellCalo)).iphi();
469  zside = ((HcalDetId)(closestCellCalo)).iphi();
470  depthHE = theHBHETopology->dddConstants()->getMinDepth(1, 16, iphi, zside);
471  std::vector<std::pair<double, int> > ehdepthCalo;
472  spr::energyHCALCell((HcalDetId)closestCellCalo,
473  calosimhits,
474  ehdepthCalo,
475  maxDepth_,
476  -100.0,
477  -100.0,
478  -100.0,
479  -100.0,
480  -500.0,
481  500.0,
482  useRaw_,
483  depthHE,
484  (((verbosity_ / 1000) % 10) > 0));
485  for (unsigned int i = 0; i < ehdepthCalo.size(); ++i) {
486  eHcalDepthCalo[ehdepthCalo[i].second - 1] = ehdepthCalo[i].first;
487  if (((verbosity_ / 10) % 10) > 1)
488  edm::LogVerbatim("HBHEMuon") << "eHcalDepthCalo " << i << ":" << (ehdepth[i].second - 1) << ":"
489  << eHcalDepth[ehdepth[i].second - 1];
490  }
491 
492  HcalDetId hcid0(closestCell.rawId());
493  activeL = activeLength(trackID.detIdHCAL);
494 
495  if (((verbosity_ / 10) % 10) > 0)
496  edm::LogVerbatim("HBHEMuon") << "activeL " << activeL;
497  HcalDetId hotCell, hotCellCalo;
498  h3x3 = spr::eHCALmatrix(geo, theHBHETopology, closestCell, hbhe, 1, 1, hotCell, false, useRaw_, false);
500  geo, theHBHETopology, closestCellCalo, calosimhits, 1, 1, hotCellCalo, false, useRaw_, false);
501 
502  isHot = matchId(closestCell, hotCell);
503  isHotCalo = matchId(closestCellCalo, hotCellCalo);
504 
505  if (((verbosity_ / 10) % 10) > 1)
506  edm::LogVerbatim("HBHEMuon") << "hcal 3X3 < " << h3x3 << ">"
507  << " ClosestCell <" << (HcalDetId)(closestCell) << "> hotCell id < " << hotCell
508  << "> isHot" << isHot;
509  if (hotCell != HcalDetId()) {
510  iphi = ((HcalDetId)(hotCell)).iphi();
511  zside = ((HcalDetId)(hotCell)).iphi();
512  depthHE = theHBHETopology->dddConstants()->getMinDepth(1, 16, iphi, zside);
513  std::vector<std::pair<double, int> > ehdepth;
514  spr::energyHCALCell(hotCell,
515  hbhe,
516  ehdepth,
517  maxDepth_,
518  -100.0,
519  -100.0,
520  -100.0,
521  -100.0,
522  -500.0,
523  500.0,
524  depthHE,
525  false); //(((verbosity_/1000)%10)>0));
526  for (unsigned int i = 0; i < ehdepth.size(); ++i) {
527  eHcalDepthHot[ehdepth[i].second - 1] = ehdepth[i].first;
528  if (((verbosity_ / 10) % 10) > 1)
529  edm::LogVerbatim("HBHEMuon") << "eHcalDepthHot " << i << ":" << (ehdepth[i].second - 1) << ":"
530  << eHcalDepthHot[ehdepth[i].second - 1];
531  }
532  }
533 
534  if (hotCellCalo != HcalDetId()) {
535  iphi = ((HcalDetId)(hotCellCalo)).iphi();
536  zside = ((HcalDetId)(hotCellCalo)).iphi();
537  depthHE = theHBHETopology->dddConstants()->getMinDepth(1, 16, iphi, zside);
538  std::vector<std::pair<double, int> > ehdepthCalo;
539 
540  spr::energyHCALCell(hotCellCalo,
541  calosimhits,
542  ehdepthCalo,
543  maxDepth_,
544  -100.0,
545  -100.0,
546  -100.0,
547  -100.0,
548  -500.0,
549  500.0,
550  useRaw_,
551  depthHE,
552  false);
553  for (unsigned int i = 0; i < ehdepthCalo.size(); ++i) {
554  eHcalDepthHotCalo[ehdepthCalo[i].second - 1] = ehdepthCalo[i].first;
555  if (((verbosity_ / 10) % 10) > 1)
556  edm::LogVerbatim("HBHEMuon") << "eHcalDepthHotCalo " << i << ":" << (ehdepth[i].second - 1) << ":"
557  << eHcalDepthHot[ehdepth[i].second - 1];
558  }
559  }
560  }
561  } else {
562  MuonEcalDetId.push_back(0);
563  MuonHcalDetId.push_back(0);
564  MuonEHcalDetId.push_back(0);
565  }
566 
567  MuonEcal3x3Energy.push_back(eEcal);
568  MuonHcal1x1Energy.push_back(eHcal);
569  MuonHcalDepth1Energy.push_back(eHcalDepth[0]);
570  MuonHcalDepth2Energy.push_back(eHcalDepth[1]);
571  MuonHcalDepth3Energy.push_back(eHcalDepth[2]);
572  MuonHcalDepth4Energy.push_back(eHcalDepth[3]);
573  MuonHcalDepth5Energy.push_back(eHcalDepth[4]);
574  MuonHcalDepth6Energy.push_back(eHcalDepth[5]);
575  MuonHcalDepth7Energy.push_back(eHcalDepth[6]);
576  MuonHcalDepth1HotEnergy.push_back(eHcalDepthHot[0]);
577  MuonHcalDepth2HotEnergy.push_back(eHcalDepthHot[1]);
578  MuonHcalDepth3HotEnergy.push_back(eHcalDepthHot[2]);
579  MuonHcalDepth4HotEnergy.push_back(eHcalDepthHot[3]);
580  MuonHcalDepth5HotEnergy.push_back(eHcalDepthHot[4]);
581  MuonHcalDepth6HotEnergy.push_back(eHcalDepthHot[5]);
582  MuonHcalDepth7HotEnergy.push_back(eHcalDepthHot[6]);
583  MuonHcalHot.push_back(isHot);
584 
585  //
586  MuonHcalDepth1EnergyCalo.push_back(eHcalDepthCalo[0]);
587  MuonHcalDepth2EnergyCalo.push_back(eHcalDepthCalo[1]);
588  MuonHcalDepth3EnergyCalo.push_back(eHcalDepthCalo[2]);
589  MuonHcalDepth4EnergyCalo.push_back(eHcalDepthCalo[3]);
590  MuonHcalDepth5EnergyCalo.push_back(eHcalDepthCalo[4]);
591  MuonHcalDepth6EnergyCalo.push_back(eHcalDepthCalo[5]);
592  MuonHcalDepth7EnergyCalo.push_back(eHcalDepthCalo[6]);
593  MuonHcalDepth1HotEnergyCalo.push_back(eHcalDepthHotCalo[0]);
594  MuonHcalDepth2HotEnergyCalo.push_back(eHcalDepthHotCalo[1]);
595  MuonHcalDepth3HotEnergyCalo.push_back(eHcalDepthHotCalo[2]);
596  MuonHcalDepth4HotEnergyCalo.push_back(eHcalDepthHotCalo[3]);
597  MuonHcalDepth5HotEnergyCalo.push_back(eHcalDepthHotCalo[4]);
598  MuonHcalDepth6HotEnergyCalo.push_back(eHcalDepthHotCalo[5]);
599  MuonHcalDepth7HotEnergyCalo.push_back(eHcalDepthHotCalo[6]);
600  MuonHcalHotCalo.push_back(isHotCalo);
601 
602  //
603  MuonHcalActiveLength.push_back(activeL);
604  }
605  }
606  TREE->Fill();
607 }
608 
609 // ------------ method called once each job just before starting event loop ------------
611  TREE = fs->make<TTree>("TREE", "TREE");
612  TREE->Branch("Event_No", &EventNumber);
613  TREE->Branch("Run_No", &RunNumber);
614  TREE->Branch("LumiNumber", &LumiNumber);
615  TREE->Branch("BXNumber", &BXNumber);
616  TREE->Branch("pt_of_muon", &PtGlob);
617  TREE->Branch("eta_of_muon", &EtaGlob);
618  TREE->Branch("phi_of_muon", &PhiGlob);
619  TREE->Branch("energy_of_muon", &Energy);
620  TREE->Branch("p_of_muon", &Pmuon);
621  TREE->Branch("PF_Muon", &muon_is_good);
622  TREE->Branch("Global_Muon", &muon_global);
623  TREE->Branch("Tracker_muon", &muon_tracker);
624 
625  TREE->Branch("hcal_3into3", &MuonHcalEnergy);
626  TREE->Branch("hcal_1x1", &MuonHcal1x1Energy);
627  TREE->Branch("hcal_detID", &MuonHcalDetId);
628  TREE->Branch("hcal_edepth1", &MuonHcalDepth1Energy);
629  TREE->Branch("hcal_edepth2", &MuonHcalDepth2Energy);
630  TREE->Branch("hcal_edepth3", &MuonHcalDepth3Energy);
631  TREE->Branch("hcal_edepth4", &MuonHcalDepth4Energy);
632  TREE->Branch("hcal_edepthHot1", &MuonHcalDepth1HotEnergy);
633  TREE->Branch("hcal_edepthHot2", &MuonHcalDepth2HotEnergy);
634  TREE->Branch("hcal_edepthHot3", &MuonHcalDepth3HotEnergy);
635  TREE->Branch("hcal_edepthHot4", &MuonHcalDepth4HotEnergy);
636 
637  TREE->Branch("hcal_edepth1PSim", &MuonHcalDepth1EnergyCalo);
638  TREE->Branch("hcal_edepth2PSim", &MuonHcalDepth2EnergyCalo);
639  TREE->Branch("hcal_edepth3PSim", &MuonHcalDepth3EnergyCalo);
640  TREE->Branch("hcal_edepth4PSim", &MuonHcalDepth4EnergyCalo);
641  TREE->Branch("hcal_edepthHot1PSim", &MuonHcalDepth1HotEnergyCalo);
642  TREE->Branch("hcal_edepthHot2PSim", &MuonHcalDepth2HotEnergyCalo);
643  TREE->Branch("hcal_edepthHot3PSim", &MuonHcalDepth3HotEnergyCalo);
644  TREE->Branch("hcal_edepthHot4PSim", &MuonHcalDepth4HotEnergyCalo);
645 
646  if (maxDepth_ > 4) {
647  TREE->Branch("hcal_edepth5PSim", &MuonHcalDepth5EnergyCalo);
648  TREE->Branch("hcal_edepthHot5PSim", &MuonHcalDepth5HotEnergyCalo);
649  if (maxDepth_ > 5) {
650  TREE->Branch("hcal_edepth6PSim", &MuonHcalDepth6EnergyCalo);
651  TREE->Branch("hcal_edepthHot6PSim", &MuonHcalDepth6HotEnergyCalo);
652  if (maxDepth_ > 6) {
653  TREE->Branch("hcal_edepth7PSim", &MuonHcalDepth7EnergyCalo);
654  TREE->Branch("hcal_edepthHot7PSim", &MuonHcalDepth7HotEnergyCalo);
655  }
656  }
657  }
658 
659  TREE->Branch("TrackerLayer", &TrackerLayer);
660  TREE->Branch("innerTrack", &innerTrack);
661  TREE->Branch("innerTrackpt", &innerTrackpt);
662  TREE->Branch("innerTracketa", &innerTracketa);
663  TREE->Branch("innerTrackphi", &innerTrackphi);
664  TREE->Branch("MatchedStat", &MatchedStat);
665  TREE->Branch("GlobalTrckPt", &GlobalTrckPt);
666  TREE->Branch("GlobalTrckEta", &GlobalTrckEta);
667  TREE->Branch("GlobalTrckPhi", &GlobalTrckPhi);
668  TREE->Branch("NumPixelLayers", &NumPixelLayers);
669  TREE->Branch("chiTracker", &chiTracker);
670  TREE->Branch("DxyTracker", &DxyTracker);
671  TREE->Branch("DzTracker", &DzTracker);
672  TREE->Branch("OuterTrack", &OuterTrack);
673  TREE->Branch("OuterTrackPt", &OuterTrackPt);
674  TREE->Branch("OuterTrackEta", &OuterTrackEta);
675  TREE->Branch("OuterTrackPhi", &OuterTrackPhi);
676  TREE->Branch("OuterTrackHits", &OuterTrackHits);
677  TREE->Branch("OuterTrackRHits", &OuterTrackRHits);
678  TREE->Branch("OuterTrackChi", &OuterTrackChi);
679  TREE->Branch("GlobalTrack", &GlobalTrack);
680  TREE->Branch("GlobTrack_Chi", &chiGlobal);
681  TREE->Branch("Global_Muon_Hits", &GlobalMuonHits);
682  TREE->Branch("MatchedStations", &MatchedStat);
683  TREE->Branch("Global_Track_Pt", &GlobalTrckPt);
684  TREE->Branch("Global_Track_Eta", &GlobalTrckEta);
685  TREE->Branch("Global_Track_Phi", &GlobalTrckPhi);
687  TREE->Branch("Tight_LongitudinalImpactparameter", &Tight_LongPara);
688  TREE->Branch("Tight_TransImpactparameter", &Tight_TransImpara);
689  TREE->Branch("InnerTrackPixelHits", &Tight_PixelHits);
690  TREE->Branch("IsolationR04", &IsolationR04);
691  TREE->Branch("IsolationR03", &IsolationR03);
692 
693  TREE->Branch("hcal_cellHot", &MuonHcalHot);
694  TREE->Branch("hcal_cellHotPSim", &MuonHcalHotCalo);
695 
696  TREE->Branch("ecal_3into3", &MuonEcalEnergy);
697  TREE->Branch("ecal_3x3", &MuonEcal3x3Energy);
698  TREE->Branch("ecal_detID", &MuonEcalDetId);
699  TREE->Branch("ehcal_detID", &MuonEHcalDetId);
700  TREE->Branch("tracker_3into3", &MuonHOEnergy);
701  TREE->Branch("activeLength", &MuonHcalActiveLength);
702 
704  TREE->Branch("hltresults", &hltresults);
705  TREE->Branch("all_triggers", &all_triggers);
706  TREE->Branch("rechit_energy", &energy_hb);
707  TREE->Branch("rechit_time", &time_hb);
708 }
709 
710 // ------------ method called once each job just after ending the event loop ------------
712 
713 // ------------ method called when starting to processes a run ------------
714 void HcalRaddamMuon::beginRun(edm::Run const& iRun, edm::EventSetup const& iSetup) {
715  const HcalDDDRecConstants* hdc = &iSetup.getData(tok_ddrec_);
716  actHB.clear();
717  actHE.clear();
718  actHB = hdc->getThickActive(0);
719  actHE = hdc->getThickActive(1);
720 
721  bool changed = true;
722  all_triggers.clear();
723  if (hltConfig_.init(iRun, iSetup, "HLT", changed)) {
724  // if init returns TRUE, initialisation has succeeded!
725  edm::LogVerbatim("HBHEMuon") << "HLT config with process name 'HLT' successfully extracted";
726  std::string string_search[5] = {"HLT_IsoMu_", "HLT_L1SingleMu_", "HLT_L2Mu", "HLT_Mu", "HLT_RelIso1p0Mu"};
727  unsigned int ntriggers = hltConfig_.size();
728  for (unsigned int t = 0; t < ntriggers; ++t) {
730  for (unsigned int ik = 0; ik < 5; ++ik) {
731  if (hltname.find(string_search[ik]) != std::string::npos) {
732  all_triggers.push_back(hltname);
733  break;
734  }
735  }
736  } //loop over ntriggers
737  edm::LogVerbatim("HBHEMuon") << "All triggers size in begin run" << all_triggers.size();
738  } else {
739  edm::LogError("HBHEMuon") << "Error! HLT config extraction with process name 'HLT' failed";
740  }
741 
742 } //firstmethod
743 
744 // ------------ method called when ending the processing of a run ------------
746 
749  desc.addUntracked<edm::InputTag>("hlTriggerResults", edm::InputTag("TriggerResults", "", "HLT"));
750  desc.addUntracked<edm::InputTag>("muonSource", edm::InputTag("muons"));
751  desc.addUntracked<int>("verbosity", 0);
752  desc.addUntracked<int>("useRaw", 0);
753  desc.add<bool>("isAOD", false);
754  desc.addUntracked<int>("maxDepth", 4);
755  descriptions.add("hcalRaddamMuon", desc);
756 }
757 
760  EventNumber = -99999;
761  RunNumber = -99999;
762  LumiNumber = -99999;
763  BXNumber = -99999;
764  energy_hb.clear();
765  time_hb.clear();
766  muon_is_good.clear();
767  muon_global.clear();
768  muon_tracker.clear();
769  PtGlob.clear();
770  EtaGlob.clear();
771  PhiGlob.clear();
772  Energy.clear();
773  Pmuon.clear();
774  TrackerLayer.clear();
775  innerTrack.clear();
776  NumPixelLayers.clear();
777  chiTracker.clear();
778  DxyTracker.clear();
779  DzTracker.clear();
780  innerTrackpt.clear();
781  innerTracketa.clear();
782  innerTrackphi.clear();
783  Tight_PixelHits.clear();
784  OuterTrack.clear();
785  OuterTrackPt.clear();
786  OuterTrackEta.clear();
787  OuterTrackPhi.clear();
788  OuterTrackHits.clear();
789  OuterTrackRHits.clear();
790  OuterTrackChi.clear();
791  GlobalTrack.clear();
792  chiGlobal.clear();
793  GlobalMuonHits.clear();
794  MatchedStat.clear();
795  GlobalTrckPt.clear();
796  GlobalTrckEta.clear();
797  GlobalTrckPhi.clear();
798  Tight_TransImpara.clear();
799  Tight_LongPara.clear();
800 
801  IsolationR04.clear();
802  IsolationR03.clear();
803  MuonEcalEnergy.clear();
804  MuonHcalEnergy.clear();
805  MuonHOEnergy.clear();
806  MuonEcalDetId.clear();
807  MuonHcalDetId.clear();
808  MuonEHcalDetId.clear();
809  MuonEcal3x3Energy.clear();
810  MuonHcal1x1Energy.clear();
811  MuonHcalDepth1Energy.clear();
812  MuonHcalDepth2Energy.clear();
813  MuonHcalDepth3Energy.clear();
814  MuonHcalDepth4Energy.clear();
815  MuonHcalDepth5Energy.clear();
816  MuonHcalDepth6Energy.clear();
817  MuonHcalDepth7Energy.clear();
818 
819  MuonHcalDepth1HotEnergy.clear();
820  MuonHcalDepth2HotEnergy.clear();
821  MuonHcalDepth3HotEnergy.clear();
822  MuonHcalDepth4HotEnergy.clear();
823  MuonHcalDepth5HotEnergy.clear();
824  MuonHcalDepth6HotEnergy.clear();
825  MuonHcalDepth7HotEnergy.clear();
826  MuonHcalHot.clear();
827  MuonHcalActiveLength.clear();
828  hltresults.clear();
829 }
830 
832  HcalDetId kd1(id1.subdet(), id1.ieta(), id1.iphi(), 1);
833  HcalDetId kd2(id2.subdet(), id2.ieta(), id2.iphi(), 1);
834  int match = ((kd1 == kd2) ? 1 : 0);
835  return match;
836 }
837 
839  HcalDetId id(id_);
840  int ieta = id.ietaAbs();
841  int depth = id.depth();
842  double lx(0);
843  if (id.subdet() == HcalBarrel) {
844  if (((verbosity_ / 10) % 10) > 2)
845  edm::LogVerbatim("HBHEMuon") << "actHB.size() " << actHB.size();
846  for (unsigned int i = 0; i < actHB.size(); ++i) {
847  if (ieta == actHB[i].ieta && depth == actHB[i].depth) {
848  lx = actHB[i].thick;
849  break;
850  }
851  }
852  } else {
853  if (((verbosity_ / 10) % 10) > 2)
854  edm::LogVerbatim("HBHEMuon") << "actHE.size() " << actHE.size();
855  for (unsigned int i = 0; i < actHE.size(); ++i) {
856  if (ieta == actHE[i].ieta && depth == actHE[i].depth) {
857  lx = actHE[i].thick;
858  break;
859  }
860  }
861  }
862  if (((verbosity_ / 10) % 10) > 2)
863  edm::LogVerbatim("HBHEMuon") << "active thick " << lx;
864  return lx;
865 }
866 
867 //define this as a plug-in
int getMinDepth(const int &itype, const int &ieta, const int &iphi, const int &zside) const
static const std::string kSharedResource
Definition: TFileService.h:76
bool accept() const
Has at least one path accepted the event?
Log< level::Info, true > LogVerbatim
const std::string & triggerName(unsigned int triggerIndex) const
double _RecoMuon1TrackIsoSumPtMaxCutValue_03
std::vector< double > MuonHcalDepth1HotEnergy
edm::EDGetTokenT< edm::PCaloHitContainer > tok_hcal_
std::vector< double > track_cosmic_positionOY
std::vector< double > NQOverP
std::vector< float > energy_hb
std::vector< spr::propagatedTrackID > propagateCALO(edm::Handle< reco::TrackCollection > &trkCollection, const CaloGeometry *geo, const MagneticField *bField, const std::string &theTrackQuality, bool debug=false)
~HcalRaddamMuon() override
std::vector< double > dzWithBS
std::vector< double > GlobalMuonHits
std::vector< bool > muon_tracker
std::vector< double > MuonHcalDepth3HotEnergyCalo
std::vector< bool > muon_global
std::vector< double > PNormalizedChi2
std::vector< double > MuonEcal3x3Energy
edm::ESGetToken< EcalSeverityLevelAlgo, EcalSeverityLevelAlgoRcd > tok_sevlv_
std::vector< int > v_RH_h3x3_iphi
std::vector< double > PdzTrack
std::vector< double > OuterTrackChi
std::vector< double > PCharge
std::vector< double > MuonHcalDepth4EnergyCalo
std::vector< double > NPvy
std::vector< double > Pmuon
const Point & position() const
position
Definition: BeamSpot.h:59
edm::EDGetTokenT< EcalRecHitCollection > tok_EB_
std::vector< bool > OuterTrack
std::vector< double > MuonHcalActiveLength
std::vector< double > GlobalTrckPhi
std::vector< double > DzTracker
std::vector< bool > muon_is_good
std::vector< std::string > hltpaths
std::vector< double > track_cosmic_rad
std::vector< double > NormChi2
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
std::vector< double > PxGlob
std::vector< int > v_RH_h3x3_ieta
std::vector< double > MuonHcalDepth6HotEnergy
std::vector< unsigned int > MuonHcalDetId
std::vector< double > MuonHcalDepth6EnergyCalo
double activeLength(const DetId &)
std::vector< unsigned int > MuonEcalDetId
std::vector< double > PChi2
std::vector< double > MuonHcalDepth5HotEnergyCalo
std::vector< double > MuonHcal1x1Energy
std::vector< double > MuonHcalDepth4HotEnergyCalo
edm::EDGetTokenT< reco::VertexCollection > tok_recVtx_
std::vector< unsigned int > MuonEHcalDetId
std::vector< double > track_cosmic_momentumIZ
std::vector< double > NPvz
std::vector< double > OuterTrackEta
std::vector< double > MuonHcalDepth1HotEnergyCalo
std::vector< double > MuonHcalDepth1EnergyCalo
std::vector< HcalDDDRecConstants::HcalActiveLength > actHB
std::vector< double > MuonHcalDepth7Energy
std::vector< float > time_hb
std::vector< double > OuterTrackPt
std::vector< std::string > TrigName_
std::vector< unsigned int > MuonHcalHot
std::vector< std::string > all_triggers5
std::vector< std::string > all_triggers1
std::vector< double > PzGlob
std::vector< double > Tight_LongPara
edm::ESGetToken< CaloTopology, CaloTopologyRecord > tok_caloTopology_
int zside(DetId const &)
edm::ESGetToken< CaloGeometry, CaloGeometryRecord > tok_geom_
std::vector< double > NPvx
std::string hltlabel_
Log< level::Error, false > LogError
std::vector< double > innerTrackphi
std::vector< double > TrackerLayer
const edm::InputTag hlTriggerResults_
std::vector< double > NRefPointZ
std::vector< double > MuonHcalDepth1Energy
std::vector< unsigned int > MuonHcalHotCalo
std::vector< double > MuonHcalDepth4Energy
std::vector< double > MuonHcalDepth3HotEnergy
void endJob() override
std::vector< double > EtaGlob
std::vector< double > track_cosmic_momentumOZ
std::vector< double > NQOverPError
unsigned int triggerIndex(std::string_view name) const
Definition: TriggerNames.cc:52
T getUntrackedParameter(std::string const &, T const &) const
std::vector< double > track_cosmic_momentumIX
std::vector< double > PNDoF
std::vector< double > PD0
std::vector< double > track_cosmic_ymomentum
U second(std::pair< T, U > const &p)
edm::ESGetToken< HcalDDDRecConstants, HcalRecNumberingRecord > tok_ddrec_
std::vector< double > innerTracketa
std::vector< std::string > all_triggers2
unsigned int size() const
Get number of paths stored.
std::vector< double > PdxyTrack
std::vector< double > OuterTrackRHits
std::vector< double > MuonHcalDepth5HotEnergy
int iEvent
Definition: GenABIO.cc:224
std::vector< double > MuonEcalEnergy
std::vector< double > trackerlayer_hits
std::vector< double > Tight_GlobalMuonTrkFit
std::vector< double > track_cosmic_xmomentum
std::vector< bool > all_ifTriggerpassed
std::vector< double > track_cosmic_positionIY
edm::EDGetTokenT< edm::TriggerResults > tok_trigRes_
std::vector< double > PLostHits
std::vector< double > MuonHcalDepth2EnergyCalo
double _RecoMuon1TrackIsoSumPtMaxCutValue_04
std::vector< double > track_cosmic_momentumIY
unsigned int size() const
number of trigger paths in trigger table
std::vector< double > Energy
std::vector< double > MuonHcalDepth2Energy
unsigned int LumiNumber
std::vector< double > MuonHOEnergy
std::vector< double > track_cosmic_positionIZ
const edm::InputTag muonsrc_
HLTConfigProvider hltConfig_
edm::ESGetToken< EcalChannelStatus, EcalChannelStatusRcd > tok_ecalChStatus_
std::vector< double > MuonHcalDepth5EnergyCalo
std::vector< double > High_TrackLayers
std::vector< double > track_cosmic_positionOZ
std::vector< double > Tight_TransImpara
std::vector< double > track_cosmic_detid
std::vector< double > Tight_MuonHits
bool getData(T &iHolder) const
Definition: EventSetup.h:122
unsigned int RunNumber
std::vector< double > track_cosmic_momentumOX
std::vector< double > track_cosmic_yposition
std::vector< double > track_cosmic_positionIX
std::vector< double > track_cosmic_momentumOY
edm::EDGetTokenT< HBHERecHitCollection > tok_hbhe_
std::vector< double > DxyTracker
void beginRun(edm::Run const &, edm::EventSetup const &) override
std::vector< bool > innerTrack
std::vector< std::string > all_triggers
std::vector< double > MuonHcalDepth7EnergyCalo
Definition: DetId.h:17
std::vector< HcalDDDRecConstants::HcalActiveLength > actHE
std::vector< double > innerTrackpt
std::vector< double > track_cosmic_detIDinner
const int verbosity_
std::vector< bool > Trk_match_MuStat
std::vector< double > MuonHcalDepth3EnergyCalo
std::vector< double > MuonHcalDepth2HotEnergyCalo
std::vector< bool > isHE
std::vector< double > MuonHcalDepth7HotEnergyCalo
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
void analyze(const edm::Event &, const edm::EventSetup &) override
std::vector< double > MuonHcalDepth7HotEnergy
bool init(const edm::Run &iRun, const edm::EventSetup &iSetup, const std::string &processName, bool &changed)
d&#39;tor
HcalRaddamMuon(const edm::ParameterSet &)
std::vector< double > v_RH_h3x3_ene
std::vector< double > track_cosmic_detIDouter
std::vector< double > Tight_TrkerLayers
std::vector< double > chiTracker
std::vector< bool > GlobalTrack
std::vector< double > dxyWithBS
std::vector< double > MuonHcalDepth6HotEnergyCalo
void add(std::string const &label, ParameterSetDescription const &psetDescription)
std::vector< double > MuonHcalDepth2HotEnergy
std::vector< double > No_pixelLayers
std::vector< double > Tight_MatchedStations
unsigned int EventNumber
std::vector< double > GlobalTrckPt
std::vector< double > MuonHcalDepth5Energy
std::vector< double > Pthetha
bool isValid() const
Definition: HandleBase.h:70
std::vector< double > OuterTrackPhi
edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > tok_magField_
unsigned int BXNumber
std::vector< double > Tight_PixelHits
std::vector< std::string > all_triggers3
std::vector< double > NRefPointX
edm::EDGetTokenT< reco::MuonCollection > tok_muon_
HLT enums.
std::vector< double > PValidHits
static int position[264][3]
Definition: ReadPGInfo.cc:289
std::vector< double > track_cosmic_zmomentum
std::vector< double > track_cosmic_xposition
std::vector< double > MuonHcalDepth4HotEnergy
std::vector< HcalActiveLength > getThickActive(const int &type) const
const HcalDDDRecConstants * dddConstants() const
Definition: HcalTopology.h:164
std::vector< bool > isHB
std::vector< double > PhiGlob
T * make(const Args &...args) const
make new ROOT object
Definition: TFileService.h:64
std::vector< std::string > all_triggers4
void beginJob() override
std::vector< double > NTrkMomentum
std::vector< double > NumPixelLayers
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
Definition: Utils.h:10
std::vector< double > OuterTrackHits
const bool isAOD_
int matchId(const HcalDetId &, const HcalDetId &)
edm::EDGetTokenT< EcalRecHitCollection > tok_EE_
std::vector< double > chiGlobal
std::vector< double > PyGlob
std::vector< double > IsolationR03
std::vector< double > MuonHcalEnergy
edm::ESGetToken< HcalTopology, HcalRecNumberingRecord > tok_topo_
std::vector< double > MuonHcalDepth3Energy
edm::EDGetTokenT< reco::BeamSpot > tok_bs_
void energyHCALCell(HcalDetId detId, edm::Handle< T > &hits, std::vector< std::pair< double, int > > &energyCell, int maxDepth=1, double hbThr=-100, double heThr=-100, double hfThr=-100, double hoThr=-100, double tMin=-500, double tMax=500, int useRaw=0, int depthHE=3, bool debug=false)
std::vector< double > PD0Error
std::vector< int > hltresults
std::vector< double > MuonHcalDepth6Energy
std::vector< double > PtGlob
std::vector< double > track_cosmic_zposition
std::vector< double > NRefPointY
Definition: Run.h:45
void endRun(edm::Run const &, edm::EventSetup const &) override
edm::Service< TFileService > fs
std::vector< double > IsolationR04
std::vector< double > GlobalTrckEta
std::vector< double > track_cosmic_positionOX
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)
std::vector< double > ImpactParameter
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)
std::vector< double > MatchedStat
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)