CMS 3D CMS Logo

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 edm::EDConsumerBase

Public Member Functions

 TestResolution (const edm::ParameterSet &)
 
 ~TestResolution () override
 
- Public Member Functions inherited from edm::EDAnalyzer
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzer ()
 
SerialTaskQueueglobalLuminosityBlocksQueue ()
 
SerialTaskQueueglobalRunsQueue ()
 
ModuleDescription const & moduleDescription () const
 
std::string workerType () const
 
 ~EDAnalyzer () override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Member Functions

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

Private Attributes

int eventCounter_
 
edm::EDGetTokenT< reco::MuonCollectionglbMuonsToken_
 
TFile * outputFile_
 
std::unique_ptr< ResolutionFunctionresolutionFunction_
 
edm::EDGetTokenT< reco::TrackCollectionsaMuonsToken_
 
TProfile * sigmaPt_
 
edm::InputTag theMuonLabel_
 
int theMuonType_
 
std::string theRootFileName_
 
edm::EDGetTokenT< reco::TrackCollectiontracksToken_
 

Additional Inherited Members

- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::EDAnalyzer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
static bool wantsGlobalLuminosityBlocks ()
 
static bool wantsGlobalRuns ()
 
static bool wantsStreamLuminosityBlocks ()
 
static bool wantsStreamRuns ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

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

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

Definition at line 53 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_, AlCaHLTBitMon_QueryRunRegistry::string, and theRootFileName_.

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

Definition at line 39 of file TestResolution.cc.

References svgfig::canvas(), gather_cfg::cout, eventCounter_, outputFile_, and sigmaPt_.

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

Member Function Documentation

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

Definition at line 66 of file TestResolution.cc.

References gather_cfg::cout, DEFINE_FWK_MODULE, eventCounter_, fillMuonCollection(), edm::Event::getByToken(), glbMuonsToken_, extraflags_cff::muons, resolutionFunction_, saMuonsToken_, sigmaPt_, theMuonType_, l1t::tracks, and tracksToken_.

66  {
67  using namespace edm;
68 
69  ++eventCounter_;
70  if ( eventCounter_%100 == 0 ) {
71  std::cout << "Event number " << eventCounter_ << std::endl;
72  }
73 
74  // Take the reco-muons, depending on the type selected in the cfg
75  // --------------------------------------------------------------
76 
77  std::vector<reco::LeafCandidate> muons;
78 
79  if (theMuonType_==1) { // GlobalMuons
81  iEvent.getByToken (glbMuonsToken_, glbMuons);
82  muons = fillMuonCollection(*glbMuons);
83  }
84  else if (theMuonType_==2) { // StandaloneMuons
86  iEvent.getByToken (saMuonsToken_, saMuons);
87  muons = fillMuonCollection(*saMuons);
88  }
89  else if (theMuonType_==3) { // Tracker tracks
91  iEvent.getByToken (tracksToken_, tracks);
92  muons = fillMuonCollection(*tracks);
93  }
94 
95  // Loop on the recMuons
96  std::vector<reco::LeafCandidate>::const_iterator recMuon = muons.begin();
97  for ( ; recMuon!=muons.end(); ++recMuon ) {
98 
99  // Fill the histogram with uncorrected pt values
100  sigmaPt_->Fill(resolutionFunction_->sigmaPt(*recMuon, 0), recMuon->pt());
101 
102  }
103 }
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:579
edm::EDGetTokenT< reco::TrackCollection > saMuonsToken_
edm::EDGetTokenT< reco::TrackCollection > tracksToken_
std::vector< reco::LeafCandidate > fillMuonCollection(const std::vector< T > &tracks)
TProfile * sigmaPt_
HLT enums.
edm::EDGetTokenT< reco::MuonCollection > glbMuonsToken_
std::unique_ptr< ResolutionFunction > resolutionFunction_
void TestResolution::endJob ( void  )
inlineoverrideprivatevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 60 of file TestResolution.h.

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

Definition at line 62 of file TestResolution.h.

References RPCpg::mu, metsig::muon, extraflags_cff::muons, mathSSE::sqrt(), and HiIsolationCommonParameters_cff::track.

Referenced by analyze().

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

Member Data Documentation

int TestResolution::eventCounter_
private

Definition at line 92 of file TestResolution.h.

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

edm::EDGetTokenT<reco::MuonCollection> TestResolution::glbMuonsToken_
private

Definition at line 82 of file TestResolution.h.

Referenced by analyze().

TFile* TestResolution::outputFile_
private

Definition at line 88 of file TestResolution.h.

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

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

Definition at line 94 of file TestResolution.h.

Referenced by analyze(), and TestResolution().

edm::EDGetTokenT<reco::TrackCollection> TestResolution::saMuonsToken_
private

Definition at line 83 of file TestResolution.h.

Referenced by analyze().

TProfile* TestResolution::sigmaPt_
private

Definition at line 90 of file TestResolution.h.

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

edm::InputTag TestResolution::theMuonLabel_
private

Definition at line 81 of file TestResolution.h.

int TestResolution::theMuonType_
private

Definition at line 86 of file TestResolution.h.

Referenced by analyze().

std::string TestResolution::theRootFileName_
private

Definition at line 87 of file TestResolution.h.

Referenced by TestResolution().

edm::EDGetTokenT<reco::TrackCollection> TestResolution::tracksToken_
private

Definition at line 84 of file TestResolution.h.

Referenced by analyze().