CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
TestResolution Class Reference

#include <MuonAnalysis/MomentumScaleCalibration/plugins/TestResolution.cc>

Inheritance diagram for TestResolution:
edm::EDAnalyzer

Public Member Functions

 TestResolution (const edm::ParameterSet &)
 
 ~TestResolution ()
 
- Public Member Functions inherited from edm::EDAnalyzer
 EDAnalyzer ()
 
std::string workerType () const
 
virtual ~EDAnalyzer ()
 

Private Member Functions

virtual void analyze (const edm::Event &, const edm::EventSetup &)
 
virtual void endJob ()
 
template<typename T >
std::vector< reco::LeafCandidatefillMuonCollection (const std::vector< T > &tracks)
 

Private Attributes

int eventCounter_
 
TFile * outputFile_
 
std::auto_ptr< ResolutionFunctionresolutionFunction_
 
TProfile * sigmaPt_
 
edm::InputTag theMuonLabel_
 
int theMuonType_
 
std::string theRootFileName_
 

Additional Inherited Members

- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
typedef WorkerT< EDAnalyzerWorkerType
 
- Static Public Member Functions inherited from edm::EDAnalyzer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::EDAnalyzer
CurrentProcessingContext const * currentContext () const
 

Detailed Description

Description: <one line="" class="" summary>="">

Implementation: <Notes on="" implementation>="">

Definition at line 54 of file TestResolution.h.

Constructor & Destructor Documentation

TestResolution::TestResolution ( const edm::ParameterSet iConfig)
explicit

Definition at line 20 of file TestResolution.cc.

References gather_cfg::cout, eventCounter_, edm::ParameterSet::getUntrackedParameter(), outputFile_, resolutionFunction_, sigmaPt_, and theRootFileName_.

20  :
21  theMuonLabel_( iConfig.getParameter<edm::InputTag>( "MuonLabel" ) ),
22  theMuonType_( iConfig.getParameter<int>( "MuonType" ) ),
23  theRootFileName_( iConfig.getUntrackedParameter<std::string>("OutputFileName") )
24 {
25  //now do what ever initialization is needed
26  outputFile_ = new TFile(theRootFileName_.c_str(), "RECREATE");
27  outputFile_->cd();
28  sigmaPt_ = new TProfile("sigmaPtOverPt", "sigmaPt/Pt vs muon Pt", 1000, 0, 100);
29  eventCounter_ = 0;
30  // Create the corrector and set the parameters
31  resolutionFunction_.reset(new ResolutionFunction( iConfig.getUntrackedParameter<std::string>("ResolutionsIdentifier") ) );
32  std::cout << "resolutionFunction_ = " << &*resolutionFunction_ << std::endl;
33 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
std::string theRootFileName_
TFile * outputFile_
std::auto_ptr< ResolutionFunction > resolutionFunction_
TProfile * sigmaPt_
tuple cout
Definition: gather_cfg.py:41
edm::InputTag theMuonLabel_
TestResolution::~TestResolution ( )

Definition at line 36 of file TestResolution.cc.

References MultipleCompare::canvas, gather_cfg::cout, eventCounter_, outputFile_, and sigmaPt_.

37 {
38  outputFile_->cd();
39  TCanvas canvas("sigmaPtOverPt","sigmaPt/Pt vs muon Pt", 1000, 800);
40  canvas.cd();
41  sigmaPt_->GetXaxis()->SetTitle("Pt(GeV)");
42 // TLegend * legend = new TLegend(0.7,0.71,0.98,1.);
43 // legend->SetTextSize(0.02);
44 // legend->SetFillColor(0); // Have a white background
45 // legend->AddEntry(uncorrectedPt_, "original pt");
46 // legend->AddEntry(correctedPt_, "corrected pt");
47  sigmaPt_->Draw();
48 // legend->Draw("same");
49 
50  canvas.Write();
51  sigmaPt_->Write();
52  outputFile_->Close();
53 
54  std::cout << "Total analyzed events = " << eventCounter_ << std::endl;
55 }
TFile * outputFile_
TProfile * sigmaPt_
tuple cout
Definition: gather_cfg.py:41

Member Function Documentation

void TestResolution::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
)
privatevirtual

Implements edm::EDAnalyzer.

Definition at line 63 of file TestResolution.cc.

References gather_cfg::cout, eventCounter_, fillMuonCollection(), edm::Event::getByLabel(), patZpeak::muons, resolutionFunction_, sigmaPt_, theMuonLabel_, theMuonType_, and testEve_cfg::tracks.

63  {
64  using namespace edm;
65 
66  ++eventCounter_;
67  if ( eventCounter_%100 == 0 ) {
68  std::cout << "Event number " << eventCounter_ << std::endl;
69  }
70 
71  // Take the reco-muons, depending on the type selected in the cfg
72  // --------------------------------------------------------------
73 
74  std::vector<reco::LeafCandidate> muons;
75 
76  if (theMuonType_==1) { // GlobalMuons
78  iEvent.getByLabel (theMuonLabel_, glbMuons);
79  muons = fillMuonCollection(*glbMuons);
80  }
81  else if (theMuonType_==2) { // StandaloneMuons
83  iEvent.getByLabel (theMuonLabel_, saMuons);
84  muons = fillMuonCollection(*saMuons);
85  }
86  else if (theMuonType_==3) { // Tracker tracks
88  iEvent.getByLabel (theMuonLabel_, tracks);
89  muons = fillMuonCollection(*tracks);
90  }
91 
92  // Loop on the recMuons
93  std::vector<reco::LeafCandidate>::const_iterator recMuon = muons.begin();
94  for ( ; recMuon!=muons.end(); ++recMuon ) {
95 
96  // Fill the histogram with uncorrected pt values
97  sigmaPt_->Fill(resolutionFunction_->sigmaPt(*recMuon), recMuon->pt());
98 
99  }
100 }
std::auto_ptr< ResolutionFunction > resolutionFunction_
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:355
std::vector< reco::LeafCandidate > fillMuonCollection(const std::vector< T > &tracks)
tuple tracks
Definition: testEve_cfg.py:39
TProfile * sigmaPt_
tuple muons
Definition: patZpeak.py:38
tuple cout
Definition: gather_cfg.py:41
edm::InputTag theMuonLabel_
virtual void TestResolution::endJob ( void  )
inlineprivatevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 61 of file TestResolution.h.

61 {};
template<typename T >
std::vector<reco::LeafCandidate> TestResolution::fillMuonCollection ( const std::vector< T > &  tracks)
inlineprivate

Definition at line 63 of file TestResolution.h.

References metsig::muon, patZpeak::muons, and mathSSE::sqrt().

Referenced by analyze().

63  {
64  std::vector<reco::LeafCandidate> muons;
65  typename std::vector<T>::const_iterator track;
66  for (track = tracks.begin(); track != tracks.end(); ++track){
67  // Where 0.011163612 is the squared muon mass.
68  reco::Particle::LorentzVector mu(track->px(),track->py(),track->pz(),
69  sqrt(track->p()*track->p() + 0.011163612));
70  reco::LeafCandidate muon(track->charge(),mu);
71  // Store muon
72  // ----------
73  muons.push_back (muon);
74  }
75  return muons;
76  }
T sqrt(T t)
Definition: SSEVec.h:28
tuple tracks
Definition: testEve_cfg.py:39
tuple muons
Definition: patZpeak.py:38
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Particle.h:26

Member Data Documentation

int TestResolution::eventCounter_
private

Definition at line 90 of file TestResolution.h.

Referenced by analyze(), TestResolution(), and ~TestResolution().

TFile* TestResolution::outputFile_
private

Definition at line 86 of file TestResolution.h.

Referenced by TestResolution(), and ~TestResolution().

std::auto_ptr<ResolutionFunction> TestResolution::resolutionFunction_
private

Definition at line 92 of file TestResolution.h.

Referenced by analyze(), and TestResolution().

TProfile* TestResolution::sigmaPt_
private

Definition at line 88 of file TestResolution.h.

Referenced by analyze(), TestResolution(), and ~TestResolution().

edm::InputTag TestResolution::theMuonLabel_
private

Definition at line 82 of file TestResolution.h.

Referenced by analyze().

int TestResolution::theMuonType_
private

Definition at line 84 of file TestResolution.h.

Referenced by analyze().

std::string TestResolution::theRootFileName_
private

Definition at line 85 of file TestResolution.h.

Referenced by TestResolution().