CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes
GlbMuQualityCutsAnalysis Class Reference
Inheritance diagram for GlbMuQualityCutsAnalysis:
edm::EDAnalyzer edm::EDConsumerBase

Public Member Functions

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 ()
 
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
 
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
 
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)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

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::CandidateViewsrcToken_
 
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 &)
 
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 ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
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  
)
override

Definition at line 63 of file GlbMuQualityCutsAnalysis.cc.

References edm::View< T >::begin(), alignmentValidation::c1, reco::Candidate::charge(), chi2Cut_, gather_cfg::cout, pat::Muon::dB(), DEFINE_FWK_MODULE, edm::View< T >::end(), reco::LeafCandidate::eta(), Exception, edm::RefToBase< T >::get(), edm::Event::getByToken(), h_GlbMuChi2_, h_GlbMuDxy_, h_GlbMuNofHitsGlbMu_, h_TrkMuNofHitsGlbMu_, mps_fire::i, pat::Muon::innerTrack(), edm::errors::InvalidReference, reco::Candidate::isGlobalMuon(), reco::Muon::isGlobalMuon(), reco::Candidate::isStandAloneMuon(), reco::Candidate::isTrackerMuon(), reco::Muon::isTrackerMuon(), reco::Candidate::masterClone(), nHitCut_, pat::Muon::normChi2(), pat::Muon::numberOfValidHits(), pat::Muon::outerTrack(), reco::Candidate::pt(), reco::LeafCandidate::pt(), edm::View< T >::size(), TrackRefitter_38T_cff::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 == nullptr|| dau2 == nullptr)
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 != nullptr) {
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 == nullptr)
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 != nullptr) {
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 == nullptr)
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:234
edm::EDGetTokenT< reco::CandidateView > srcToken_
double eta() const final
momentum pseudorapidity
virtual bool isStandAloneMuon() const =0
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:517
double dB(IPTYPE type) const
size_type size() const
double pt() const final
transverse momentum
bool isTrackerMuon() const override
Definition: Muon.h:292
virtual bool isTrackerMuon() const =0
Analysis-level Generic Particle class (e.g. for hadron or muon not fully reconstructed) ...
reco::TrackRef innerTrack() const override
reference to Track reconstructed in the tracker only (reimplemented from reco::Muon) ...
Definition: Muon.h:72
const_iterator begin() const
reco::TrackRef outerTrack() const override
reference to Track reconstructed in the muon detector only (reimplemented from reco::Muon) ...
Definition: Muon.h:76
bool isGlobalMuon() const override
Definition: Muon.h:291
virtual const CandidateBaseRef & masterClone() const =0
virtual bool isGlobalMuon() const =0
virtual double pt() const =0
transverse momentum
virtual int charge() const =0
electric charge
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:86
const_iterator end() const
unsigned int numberOfValidHits() const
numberOfValidHits returns the number of valid hits on the global track.
double normChi2() const
Norm chi2 gives the normalized chi2 of the global track.
Analysis-level muon class.
Definition: Muon.h:51

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.