CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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 // $Id: ResolutionAnalyzer.h,v 1.16 2012/12/20 16:09:29 emiglior Exp $
20 //
21 //
22 
23 // system include files
24 #include <memory>
25 #include <string>
26 #include <vector>
27 
28 // user include files
34 
41 
42 #include "HepPDT/defs.h"
43 #include "HepPDT/TableBuilder.hh"
44 #include "HepPDT/ParticleDataTable.hh"
45 
47 #include "HepMC/GenParticle.h"
48 #include "HepMC/GenEvent.h"
49 // #include "SimDataFormats/HepMCProduct/interface/HepMCProduct.h"
51 
55 
56 #include <CLHEP/Vector/LorentzVector.h>
57 
59 
60 #include "Histograms.h"
61 #include "MuScleFitUtils.h"
62 //
63 // class decleration
64 //
65 
67 public:
68  explicit ResolutionAnalyzer(const edm::ParameterSet&);
70 
71 private:
72  virtual void analyze(const edm::Event&, const edm::EventSetup&);
73  virtual void endJob() {};
74 
75  template<typename T>
76  std::vector<reco::LeafCandidate> fillMuonCollection (const std::vector<T>& tracks) {
77  std::vector<reco::LeafCandidate> muons;
78  typename std::vector<T>::const_iterator track;
79  for (track = tracks.begin(); track != tracks.end(); ++track){
80  reco::Particle::LorentzVector mu(track->px(),track->py(),track->pz(),
81  sqrt(track->p()*track->p() + MuScleFitUtils::mMu2));
83  if (debug_>0) 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 fillHistoMap()
Used to fill the map with the histograms needed.
T sqrt(T t)
Definition: SSEVec.h:48
virtual void endJob()
void writeHistoMap()
Writes the histograms in the map.
std::string theCovariancesRootFileName_
const int mu
Definition: Constants.h:23
bool checkDeltaR(const reco::Particle::LorentzVector &genMu, const reco::Particle::LorentzVector &recMu)
Returns true if the two particles have DeltaR &lt; cut.
tuple tracks
Definition: testEve_cfg.py:39
virtual void analyze(const edm::Event &, const edm::EventSetup &)
static int goodmuon
static const double mMu2
tuple muons
Definition: patZpeak.py:38
tuple cout
Definition: gather_cfg.py:121
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Particle.h:25
ResolutionAnalyzer(const edm::ParameterSet &)
edm::InputTag theMuonLabel_