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 Attributes
GlbMuQualityCutsAnalysis Class Reference
Inheritance diagram for GlbMuQualityCutsAnalysis:
edm::EDAnalyzer edm::EDConsumerBase

Public Member Functions

virtual void analyze (const edm::Event &, const edm::EventSetup &) override
 
 GlbMuQualityCutsAnalysis (const edm::ParameterSet &cfg)
 
- Public Member Functions inherited from edm::EDAnalyzer
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzer ()
 
ModuleDescription const & moduleDescription () const
 
std::string workerType () const
 
virtual ~EDAnalyzer ()
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
 EDConsumerBase ()
 
ProductHolderIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
std::vector
< ProductHolderIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesDependentUpon (std::string const &iProcessName, std::string const &iModuleLabel, bool iPrint, std::vector< char const * > &oModuleLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Private Attributes

double chi2Cut_
 
double etaMax_
 
double etaMin_
 
TH1D * h_GlbMuChi2_
 
TH1D * h_GlbMuDxy_
 
TH1D * h_GlbMuNofHitsGlbMu_
 
TH1D * h_TrkMuNofHitsGlbMu_
 
double massMax_
 
double massMin_
 
std::vector< unsigned int > matched_
 
int nHitCut_
 
double ptMin_
 
edm::InputTag src_
 
edm::EDGetTokenT
< reco::CandidateView
srcToken_
 
double trkIso_
 
std::vector< unsigned int > unMatched_
 

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 &)
 
- 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

Definition at line 8 of file GlbMuQualityCutsAnalysis.cc.

Constructor & Destructor Documentation

GlbMuQualityCutsAnalysis::GlbMuQualityCutsAnalysis ( const edm::ParameterSet cfg)

Definition at line 38 of file GlbMuQualityCutsAnalysis.cc.

References h_GlbMuChi2_, h_GlbMuDxy_, h_GlbMuNofHitsGlbMu_, h_TrkMuNofHitsGlbMu_, TFileDirectory::make(), and TFileService::mkdir().

38  :
39  src_(cfg.getParameter<InputTag>("src")),
40  srcToken_(consumes<CandidateView>(src_)),
41  ptMin_(cfg.getUntrackedParameter<double>("ptMin")),
42  massMin_(cfg.getUntrackedParameter<double>("massMin")),
43  massMax_(cfg.getUntrackedParameter<double>("massMax")),
44  etaMin_(cfg.getUntrackedParameter<double>("etaMin")),
45  etaMax_(cfg.getUntrackedParameter<double>("etaMax")),
46  trkIso_(cfg.getUntrackedParameter<double>("trkIso")),
47  chi2Cut_(cfg.getUntrackedParameter<double>("chi2Cut")),
48  nHitCut_(cfg.getUntrackedParameter<int>("nHitCut"))
49 {
51  TFileDirectory trackEffDir = fs->mkdir("QualityOfGlbMu");
52  h_GlbMuNofHitsGlbMu_= trackEffDir.make<TH1D>("# of Hits of GlobalMuon", "# of Hits of GlobalMuon", 100, 0, 100);
53  h_TrkMuNofHitsGlbMu_= trackEffDir.make<TH1D>("# of Hits of TrackerMuon", "# of Hits of TrackerMuon", 100, 0, 100);
54  h_GlbMuChi2_= trackEffDir.make<TH1D>("chi2 of GlobalMuon", "chi2 of GlobalMuon", 100,0,10);
55  h_GlbMuDxy_= trackEffDir.make<TH1D>("Dxy of GlobalMuon", "Dxy of GlobalMuon", 1000,-5.,5.);
56 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
edm::EDGetTokenT< reco::CandidateView > srcToken_
T * make(const Args &...args) const
make new ROOT object
TFileDirectory mkdir(const std::string &dir, const std::string &descr="")
create a new subdirectory
Definition: TFileService.h:69

Member Function Documentation

void GlbMuQualityCutsAnalysis::analyze ( const edm::Event evt,
const edm::EventSetup  
)
overridevirtual

Implements edm::EDAnalyzer.

Definition at line 63 of file GlbMuQualityCutsAnalysis.cc.

References alignmentValidation::c1, reco::Candidate::charge(), chi2Cut_, gather_cfg::cout, pat::Muon::dB(), reco::LeafCandidate::eta(), Exception, edm::RefToBase< T >::get(), edm::Event::getByToken(), h_GlbMuChi2_, h_GlbMuDxy_, h_GlbMuNofHitsGlbMu_, h_TrkMuNofHitsGlbMu_, i, pat::Muon::innerTrack(), edm::errors::InvalidReference, reco::Muon::isGlobalMuon(), reco::Candidate::isGlobalMuon(), reco::Candidate::isStandAloneMuon(), reco::Muon::isTrackerMuon(), reco::Candidate::isTrackerMuon(), j, reco::Candidate::masterClone(), nHitCut_, pat::Muon::normChi2(), pat::Muon::numberOfValidHits(), pat::Muon::outerTrack(), reco::Candidate::pt(), reco::LeafCandidate::pt(), alcazmumu_cfi::src, src_, and srcToken_.

63  {
65  evt.getByToken(srcToken_, src);
66  int j=0;
67  cout << ">> entries in " << src_ << ": " << src->size() << endl;
68  for(CandidateView::const_iterator i = src->begin(); i != src->end(); ++i) {
69  j++;
70  const Candidate * dau1 = i->daughter(0);
71  const Candidate * dau2 = i->daughter(1);
72  if(dau1 == 0|| dau2 == 0)
74  "one of the two daughter does not exist\n";
75  const Candidate * c1 = dau1->masterClone().get();
76  GenParticleRef mc1;
77  const pat::Muon * mu1 = dynamic_cast<const pat::Muon*>(c1);
78  std::cout << " dimuon mass " << i->mass() << std::endl;
79  std::cout << "dau1.pt() " << dau1->pt() << std::endl;
80  std::cout << "dau2.pt() " << dau2->pt() << std::endl;
81  std::cout << "dau1.isGlobalMuon() " << dau1->isGlobalMuon() << std::endl;
82  std::cout << "dau2.isGlobalMuon() " << dau2->isGlobalMuon()<< std::endl;
83  std::cout << "dau1.isTrackerMuon() " << dau1->isTrackerMuon() << std::endl;
84  std::cout << "dau2.isTrackerlMuon() " << dau2->isTrackerMuon()<< std::endl;
85  std::cout << "dau1.isStandAloneMuon() " << dau1->isStandAloneMuon() << std::endl;
86  std::cout << "dau2.isStandAloneMuon() " << dau2->isStandAloneMuon()<< std::endl;
87  std::cout << "dau1.charge() " << dau1->charge() << std::endl;
88  std::cout << "dau2.charge() " << dau2->charge()<< std::endl;
89  if(mu1 != 0) {
90 
91  // if (mc1.isNonnull()) cout << "GlbMuQualityCutsAnalysis> genParticleRef1 " << mc1->pdgId() << endl;
92  // double trackIso1=mu1->trackIso();
93  // std::cout << " mu1 iso" << trackIso1 << std::endl;
94  } else {
95  const pat::GenericParticle * gp1 = dynamic_cast<const pat::GenericParticle*>(c1);
96  if(gp1 == 0)
98  "first of two daughter is neither a pat::Muon not pat::GenericParticle\n";
99 
100  }
101  const Candidate * c2 = dau2->masterClone().get();
102 
103  const pat::Muon * mu2 = dynamic_cast<const pat::Muon*>(c2);
104  if(mu2 != 0) {
105 
106  // double trackIso2=mu2->trackIso();
107  //std::cout << " mu2 iso" << trackIso2 << std::endl;
108  } else {
109  const pat::GenericParticle * gp2 = dynamic_cast<const pat::GenericParticle*>(c2);
110  if(gp2 == 0)
112  "first of two daughter is neither a pat::Muon not pat::GenericParticle\n";
113 
114  }
115 
116  int nOfHit_1=0, nOfHit_tk_1=0, nOfHit_2=0, nOfHit_tk_2=0;
117  if (mu1->isGlobalMuon() ) nOfHit_1= mu1->numberOfValidHits();
118  std::cout << "n of hit of GlbMu1: " << nOfHit_1 << std::endl;
119  if (mu1->isTrackerMuon() ) nOfHit_tk_1= mu1->innerTrack()->numberOfValidHits();
120  std::cout << "n of hit of TrkMu1: " << nOfHit_tk_1 << std::endl;
121  if (mu2->isGlobalMuon() ) nOfHit_2= mu2->numberOfValidHits();
122  std::cout << "n of hit of GlbMu2: " << nOfHit_2 << std::endl;
123  if (mu2->isTrackerMuon() ) nOfHit_tk_2= mu2->innerTrack()->numberOfValidHits();
124  std::cout << "n of hit of TrkMu2: " << nOfHit_tk_2 << std::endl;
125  h_GlbMuNofHitsGlbMu_->Fill(nOfHit_1);
126  h_GlbMuNofHitsGlbMu_->Fill(nOfHit_2);
127  h_TrkMuNofHitsGlbMu_->Fill(nOfHit_tk_1);
128  h_TrkMuNofHitsGlbMu_->Fill(nOfHit_tk_2);
129  double nChi2_1=0, nChi2_2=0;
130  if (mu1->isGlobalMuon() ) nChi2_1= mu1->normChi2();
131  std::cout << "chi2 of GlbMu1: " << nChi2_1 << std::endl;
132  if (mu2->isGlobalMuon() ) nChi2_2= mu2->normChi2();
133  std::cout << "chi2 of GlbMu2: " << nChi2_2 << std::endl;
134  h_GlbMuChi2_->Fill(nChi2_1);
135  h_GlbMuChi2_->Fill(nChi2_2);
136  double dxy_1= mu1->dB();
137  double dxy_2= mu2->dB();
138 
139  h_GlbMuDxy_->Fill(dxy_1);
140  h_GlbMuDxy_->Fill(dxy_2);
141  if (mu1->isGlobalMuon() && ( nOfHit_tk_1<nHitCut_)) {
142  std::cout<<"found a GlbMuon with nOfHit " << nOfHit_tk_1 << ", it has eta: " << mu1->eta()<< std::endl;
143  }
144  if ( mu2->isGlobalMuon() && ( nOfHit_tk_2<nHitCut_)) {
145  std::cout<<"found a GlbMuon with nOfHit " << nOfHit_tk_2 << ", it has eta: " << mu2->eta()<< std::endl;
146  }
147  if (mu1->isGlobalMuon() && ( nChi2_1 >chi2Cut_)) {
148  std::cout<<"found a GlbMuon with chi2 " << nChi2_1 << ", it has chi2 of track: " << mu1->innerTrack()->normalizedChi2()<< ", and chi2 of Sta: "<< mu1->outerTrack()->normalizedChi2() << ", eta: "<< mu1->eta()<< ",pt: "<< mu1->pt()<< std::endl;
149  }
150  if (mu2->isGlobalMuon() && ( nChi2_2 >chi2Cut_)) {
151  std::cout<<"found a GlbMuon with chi2 " << nChi2_2 << ", it has chi2 of track: " << mu2->innerTrack()->normalizedChi2()<< ", and chi2 of Sta: "<< mu2->outerTrack()->normalizedChi2() << ", eta: "<<mu2->eta()<< ",pt: "<< mu2->pt()<< std::endl;
152  }
153 
154  }
155 }
value_type const * get() const
Definition: RefToBase.h:219
int i
Definition: DBlmapReader.cc:9
reco::TrackRef innerTrack() const
reference to Track reconstructed in the tracker only (reimplemented from reco::Muon) ...
Definition: Muon.h:72
edm::EDGetTokenT< reco::CandidateView > srcToken_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:462
virtual double pt() const =0
transverse momentum
bool isTrackerMuon() const
Definition: Muon.h:223
bool isGlobalMuon() const
Definition: Muon.h:222
double dB(IPTYPE type) const
reco::TrackRef outerTrack() const
reference to Track reconstructed in the muon detector only (reimplemented from reco::Muon) ...
Definition: Muon.h:76
Analysis-level Generic Particle class (e.g. for hadron or muon not fully reconstructed) ...
virtual bool isStandAloneMuon() const =0
int j
Definition: DBlmapReader.cc:9
virtual int charge() const =0
electric charge
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:81
tuple cout
Definition: gather_cfg.py:145
virtual double eta() const final
momentum pseudorapidity
unsigned int numberOfValidHits() const
numberOfValidHits returns the number of valid hits on the global track.
virtual bool isTrackerMuon() const =0
double normChi2() const
Norm chi2 gives the normalized chi2 of the global track.
Analysis-level muon class.
Definition: Muon.h:49
virtual double pt() const final
transverse momentum
virtual bool isGlobalMuon() const =0
virtual const CandidateBaseRef & masterClone() const =0

Member Data Documentation

double GlbMuQualityCutsAnalysis::chi2Cut_
private

Definition at line 17 of file GlbMuQualityCutsAnalysis.cc.

Referenced by analyze().

double GlbMuQualityCutsAnalysis::etaMax_
private

Definition at line 17 of file GlbMuQualityCutsAnalysis.cc.

double GlbMuQualityCutsAnalysis::etaMin_
private

Definition at line 17 of file GlbMuQualityCutsAnalysis.cc.

TH1D * GlbMuQualityCutsAnalysis::h_GlbMuChi2_
private

Definition at line 19 of file GlbMuQualityCutsAnalysis.cc.

Referenced by analyze(), and GlbMuQualityCutsAnalysis().

TH1D * GlbMuQualityCutsAnalysis::h_GlbMuDxy_
private

Definition at line 19 of file GlbMuQualityCutsAnalysis.cc.

Referenced by analyze(), and GlbMuQualityCutsAnalysis().

TH1D* GlbMuQualityCutsAnalysis::h_GlbMuNofHitsGlbMu_
private

Definition at line 19 of file GlbMuQualityCutsAnalysis.cc.

Referenced by analyze(), and GlbMuQualityCutsAnalysis().

TH1D * GlbMuQualityCutsAnalysis::h_TrkMuNofHitsGlbMu_
private

Definition at line 19 of file GlbMuQualityCutsAnalysis.cc.

Referenced by analyze(), and GlbMuQualityCutsAnalysis().

double GlbMuQualityCutsAnalysis::massMax_
private

Definition at line 17 of file GlbMuQualityCutsAnalysis.cc.

double GlbMuQualityCutsAnalysis::massMin_
private

Definition at line 17 of file GlbMuQualityCutsAnalysis.cc.

std::vector<unsigned int> GlbMuQualityCutsAnalysis::matched_
private

Definition at line 16 of file GlbMuQualityCutsAnalysis.cc.

int GlbMuQualityCutsAnalysis::nHitCut_
private

Definition at line 18 of file GlbMuQualityCutsAnalysis.cc.

Referenced by analyze().

double GlbMuQualityCutsAnalysis::ptMin_
private

Definition at line 17 of file GlbMuQualityCutsAnalysis.cc.

edm::InputTag GlbMuQualityCutsAnalysis::src_
private

Definition at line 14 of file GlbMuQualityCutsAnalysis.cc.

Referenced by analyze().

edm::EDGetTokenT<reco::CandidateView> GlbMuQualityCutsAnalysis::srcToken_
private

Definition at line 15 of file GlbMuQualityCutsAnalysis.cc.

Referenced by analyze().

double GlbMuQualityCutsAnalysis::trkIso_
private

Definition at line 17 of file GlbMuQualityCutsAnalysis.cc.

std::vector<unsigned int> GlbMuQualityCutsAnalysis::unMatched_
private

Definition at line 16 of file GlbMuQualityCutsAnalysis.cc.