CMS 3D CMS Logo

ResolutionAnalyzer.h
Go to the documentation of this file.
1 #ifndef RESOLUTIONANALYZER_HH
2 #define RESOLUTIONANALYZER_HH
3 
4 // -*- C++ -*-
5 //
6 // Package: ResolutionAnalyzer
7 // Class: ResolutionAnalyzer
8 //
16 //
17 // Original Author: Marco De Mattia
18 // Created: Thu Sep 11 12:16:00 CEST 2008
19 //
20 //
21 
22 // system include files
23 #include <memory>
24 #include <string>
25 #include <vector>
26 
27 // user include files
33 
40 
41 #include "HepPDT/defs.h"
42 #include "HepPDT/TableBuilder.hh"
43 #include "HepPDT/ParticleDataTable.hh"
44 
46 #include "HepMC/GenParticle.h"
47 #include "HepMC/GenEvent.h"
48 // #include "SimDataFormats/HepMCProduct/interface/HepMCProduct.h"
50 
54 
55 #include <CLHEP/Vector/LorentzVector.h>
56 
58 
59 #include "Histograms.h"
60 #include "MuScleFitUtils.h"
61 //
62 // class decleration
63 //
64 
66 public:
67  explicit ResolutionAnalyzer(const edm::ParameterSet&);
68  ~ResolutionAnalyzer() override;
69 
70 private:
71  void analyze(const edm::Event&, const edm::EventSetup&) override;
72  void endJob() override{};
73 
74  template <typename T>
75  std::vector<reco::LeafCandidate> fillMuonCollection(const std::vector<T>& tracks) {
76  std::vector<reco::LeafCandidate> muons;
77  typename std::vector<T>::const_iterator track;
78  for (track = tracks.begin(); track != tracks.end(); ++track) {
80  track->px(), track->py(), track->pz(), sqrt(track->p() * track->p() + MuScleFitUtils::mMu2));
82  if (debug_ > 0)
83  std::cout << std::setprecision(9) << "Muon #" << MuScleFitUtils::goodmuon
84  << ": initial value Pt = " << mu.Pt() << std::endl;
85  reco::LeafCandidate muon(track->charge(), mu);
86  // Store muon
87  // ----------
88  muons.push_back(muon);
89  }
90  return muons;
91  }
92 
94  void fillHistoMap();
96  void writeHistoMap();
99 
100  // ----------member data ---------------------------
101 
102  // Collections labels
103  // ------------------
105 
109  bool debug_;
110  std::map<std::string, Histograms*> mapHisto_;
111  TFile* outputFile_;
112 
116 
117  TString treeFileName_;
118  int32_t maxEvents_;
119 
120  double ptMax_;
121 
127 };
128 
129 #endif // RESOLUTIONANALYZER_HH
std::map< std::string, Histograms * > mapHisto_
std::string theRootFileName_
std::vector< reco::LeafCandidate > fillMuonCollection(const std::vector< T > &tracks)
HCovarianceVSxy * massResolutionVsPtEta_
void analyze(const edm::Event &, const edm::EventSetup &) override
void fillHistoMap()
Used to fill the map with the histograms needed.
T sqrt(T t)
Definition: SSEVec.h:19
void writeHistoMap()
Writes the histograms in the map.
~ResolutionAnalyzer() override
std::string theCovariancesRootFileName_
bool checkDeltaR(const reco::Particle::LorentzVector &genMu, const reco::Particle::LorentzVector &recMu)
Returns true if the two particles have DeltaR < cut.
void endJob() override
static int goodmuon
static const double mMu2
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Particle.h:21
ResolutionAnalyzer(const edm::ParameterSet &)
edm::InputTag theMuonLabel_