CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules 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 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 &&)=default
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
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
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
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
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (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 ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (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::TestResolution ( const edm::ParameterSet iConfig)
explicit

Definition at line 20 of file TestResolution.cc.

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  //now do what ever initialization is needed
28  outputFile_ = new TFile(theRootFileName_.c_str(), "RECREATE");
29  outputFile_->cd();
30  sigmaPt_ = new TProfile("sigmaPtOverPt", "sigmaPt/Pt vs muon Pt", 1000, 0, 100);
31  eventCounter_ = 0;
32  // Create the corrector and set the parameters
33  resolutionFunction_.reset(
34  new ResolutionFunction(iConfig.getUntrackedParameter<std::string>("ResolutionsIdentifier")));
35  std::cout << "resolutionFunction_ = " << &*resolutionFunction_ << std::endl;
36 }

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

◆ ~TestResolution()

TestResolution::~TestResolution ( )
override

Definition at line 38 of file TestResolution.cc.

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

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

Member Function Documentation

◆ analyze()

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

Implements edm::EDAnalyzer.

Definition at line 63 of file TestResolution.cc.

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.getByToken(glbMuonsToken_, glbMuons);
79  muons = fillMuonCollection(*glbMuons);
80  } else if (theMuonType_ == 2) { // StandaloneMuons
82  iEvent.getByToken(saMuonsToken_, saMuons);
83  muons = fillMuonCollection(*saMuons);
84  } else if (theMuonType_ == 3) { // Tracker tracks
86  iEvent.getByToken(tracksToken_, tracks);
88  }
89 
90  // Loop on the recMuons
91  std::vector<reco::LeafCandidate>::const_iterator recMuon = muons.begin();
92  for (; recMuon != muons.end(); ++recMuon) {
93  // Fill the histogram with uncorrected pt values
94  sigmaPt_->Fill(resolutionFunction_->sigmaPt(*recMuon, 0), recMuon->pt());
95  }
96 }

References gather_cfg::cout, eventCounter_, fillMuonCollection(), glbMuonsToken_, iEvent, PDWG_BPHSkim_cff::muons, resolutionFunction_, saMuonsToken_, sigmaPt_, theMuonType_, PDWG_EXOHSCP_cff::tracks, and tracksToken_.

◆ endJob()

void TestResolution::endJob ( void  )
inlineoverrideprivatevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 60 of file TestResolution.h.

60 {};

◆ fillMuonCollection()

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

Definition at line 62 of file TestResolution.h.

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.
68  track->px(), track->py(), track->pz(), 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  }

References amptDefaultParameters_cff::mu, HLT_2018_cff::muon, PDWG_BPHSkim_cff::muons, mathSSE::sqrt(), HLT_2018_cff::track, and PDWG_EXOHSCP_cff::tracks.

Referenced by analyze().

Member Data Documentation

◆ eventCounter_

int TestResolution::eventCounter_
private

Definition at line 92 of file TestResolution.h.

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

◆ glbMuonsToken_

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

Definition at line 82 of file TestResolution.h.

Referenced by analyze().

◆ outputFile_

TFile* TestResolution::outputFile_
private

Definition at line 88 of file TestResolution.h.

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

◆ resolutionFunction_

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

Definition at line 94 of file TestResolution.h.

Referenced by analyze(), and TestResolution().

◆ saMuonsToken_

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

Definition at line 83 of file TestResolution.h.

Referenced by analyze().

◆ sigmaPt_

TProfile* TestResolution::sigmaPt_
private

Definition at line 90 of file TestResolution.h.

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

◆ theMuonLabel_

edm::InputTag TestResolution::theMuonLabel_
private

Definition at line 81 of file TestResolution.h.

◆ theMuonType_

int TestResolution::theMuonType_
private

Definition at line 86 of file TestResolution.h.

Referenced by analyze().

◆ theRootFileName_

std::string TestResolution::theRootFileName_
private

Definition at line 87 of file TestResolution.h.

Referenced by TestResolution().

◆ tracksToken_

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

Definition at line 84 of file TestResolution.h.

Referenced by analyze().

svgfig.canvas
def canvas(*sub, **attr)
Definition: svgfig.py:482
PDWG_BPHSkim_cff.muons
muons
Definition: PDWG_BPHSkim_cff.py:47
PDWG_EXOHSCP_cff.tracks
tracks
Definition: PDWG_EXOHSCP_cff.py:28
muon
Definition: MuonCocktails.h:17
amptDefaultParameters_cff.mu
mu
Definition: amptDefaultParameters_cff.py:16
edm
HLT enums.
Definition: AlignableModifier.h:19
gather_cfg.cout
cout
Definition: gather_cfg.py:144
TestResolution::resolutionFunction_
std::unique_ptr< ResolutionFunction > resolutionFunction_
Definition: TestResolution.h:94
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
HLT_2018_cff.muon
muon
Definition: HLT_2018_cff.py:10349
edm::Handle< reco::MuonCollection >
reco::Particle::LorentzVector
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Particle.h:21
TestResolution::fillMuonCollection
std::vector< reco::LeafCandidate > fillMuonCollection(const std::vector< T > &tracks)
Definition: TestResolution.h:62
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
TestResolution::sigmaPt_
TProfile * sigmaPt_
Definition: TestResolution.h:90
TestResolution::eventCounter_
int eventCounter_
Definition: TestResolution.h:92
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
TestResolution::glbMuonsToken_
edm::EDGetTokenT< reco::MuonCollection > glbMuonsToken_
Definition: TestResolution.h:82
ResolutionFunction
Definition: ResolutionFunction.h:15
iEvent
int iEvent
Definition: GenABIO.cc:224
TestResolution::theMuonLabel_
edm::InputTag theMuonLabel_
Definition: TestResolution.h:81
TestResolution::saMuonsToken_
edm::EDGetTokenT< reco::TrackCollection > saMuonsToken_
Definition: TestResolution.h:83
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
TestResolution::theRootFileName_
std::string theRootFileName_
Definition: TestResolution.h:87
HLT_2018_cff.track
track
Definition: HLT_2018_cff.py:10352
reco::LeafCandidate
Definition: LeafCandidate.h:16
TestResolution::outputFile_
TFile * outputFile_
Definition: TestResolution.h:88
edm::InputTag
Definition: InputTag.h:15
TestResolution::tracksToken_
edm::EDGetTokenT< reco::TrackCollection > tracksToken_
Definition: TestResolution.h:84
TestResolution::theMuonType_
int theMuonType_
Definition: TestResolution.h:86