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

Public Member Functions

virtual void analyze (const edm::Event &event, const edm::EventSetup &setup)
 
virtual void endJob ()
 
 MCEfficiencyAnalyzer (const edm::ParameterSet &pset)
 
- Public Member Functions inherited from edm::EDAnalyzer
 EDAnalyzer ()
 
std::string workerType () const
 
virtual ~EDAnalyzer ()
 

Private Attributes

double deltaRStacut_
 
double etacut_
 
InputTag genParticles_
 
InputTag Muons_
 
InputTag MuonsMap_
 
int nMuMC
 
int nMureco
 
int nNotMuMatching
 
int nSta
 
int nTrk
 
double ptcut_
 
InputTag StandAlone_
 
InputTag StandAloneMap_
 
InputTag Tracks_
 
InputTag TracksMap_
 
vector< double > v_
 
InputTag zMuMu_
 

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)
 
static void prevalidate (ConfigurationDescriptions &)
 
- Protected Member Functions inherited from edm::EDAnalyzer
CurrentProcessingContext const * currentContext () const
 

Detailed Description

Definition at line 29 of file MC_Efficiency_Analyzer.cc.

Constructor & Destructor Documentation

MCEfficiencyAnalyzer::MCEfficiencyAnalyzer ( const edm::ParameterSet pset)
inline

Definition at line 32 of file MC_Efficiency_Analyzer.cc.

32  :
33  zMuMu_( pset.getParameter<InputTag>( "zMuMu" ) ),
34  Muons_( pset.getParameter<InputTag>( "Muons" ) ),
35  MuonsMap_( pset.getParameter<InputTag>( "MuonsMap" ) ),
36  Tracks_( pset.getParameter<InputTag>( "Tracks" ) ),
37  TracksMap_( pset.getParameter<InputTag>( "TracksMap" ) ),
38  genParticles_( pset.getParameter<InputTag>( "genParticles" ) ),
39  StandAlone_( pset.getParameter<InputTag>( "StandAlone" ) ),
40  StandAloneMap_( pset.getParameter<InputTag>( "StandAloneMap" ) ),
41  etacut_( pset.getParameter<double>( "etacut" ) ),
42  ptcut_( pset.getParameter<double>( "ptcut" ) ),
43  deltaRStacut_( pset.getParameter<double>( "deltaRStacut" ) )
44 
45  {
46  nMuMC =0; nMureco =0; nTrk=0; nSta=0; nNotMuMatching =0 ;
47  }
T getParameter(std::string const &) const

Member Function Documentation

virtual void MCEfficiencyAnalyzer::analyze ( const edm::Event event,
const edm::EventSetup setup 
)
inlinevirtual

Implements edm::EDAnalyzer.

Definition at line 49 of file MC_Efficiency_Analyzer.cc.

References abs, gather_cfg::cout, reco::Candidate::daughter(), deltaR(), alignCSCRings::e, reco::Candidate::eta(), genParticleCandidates2GenParticles_cfi::genParticles, i, gen::k, combine::key, prof2calltree::l, n, reco::Candidate::numberOfDaughters(), reco::Candidate::pdgId(), reco::Candidate::pt(), reco::Candidate::status(), ntuplemaker::status, and ZMuMuAnalysisNtupler_cff::zMuMu.

50  {
51 
53  event.getByLabel(zMuMu_, zMuMu);
54 
55 
57  event.getByLabel(Muons_, Muons);
58 
60  event.getByLabel(Tracks_, Tracks);
61 
62  Handle<CandidateCollection> StandAlone;
63  event.getByLabel(StandAlone_, StandAlone);
64 
65  Handle<CandMatchMap> MuonsMap;
66  event.getByLabel(MuonsMap_, MuonsMap);
67 
68  Handle<CandMatchMap> TracksMap;
69  event.getByLabel(TracksMap_, TracksMap);
70 
71  Handle<CandMatchMap> StandAloneMap;
72  event.getByLabel(StandAloneMap_, StandAloneMap);
73 
75  event.getByLabel(genParticles_, genParticles);
76 
77  //Getting muons from Z MC
78  for( unsigned int k = 0; k < genParticles->size(); k++ )
79  {
80  const Candidate & ZCand = (*genParticles)[ k ];
81  int status = ZCand.status();
82 
83  if (ZCand.pdgId()==23&& status==3 )
84  {
85  // positive muons
86  const Candidate * muCand1 = ZCand.daughter(0);
87  if (muCand1->status()==3)
88  {
89  for (unsigned int d =0 ; d< muCand1->numberOfDaughters(); d++)
90  {
91  const Candidate * muCandidate = muCand1->daughter(d);
92  if (muCandidate->pdgId() == muCand1->pdgId() )
93  {
94  muCand1 = muCand1->daughter(d);
95  }
96  }
97  }
98  // negative muons
99  const Candidate * muCand2 = ZCand.daughter(1);
100  if (muCand2->status()==3)
101  {
102  for (unsigned int e =0 ; e< muCand2->numberOfDaughters(); e++)
103  {
104  const Candidate * muCandidate = muCand2->daughter(e);
105  if (muCandidate->pdgId() == muCand2->pdgId() )
106  {
107  muCand2 = muCand2->daughter(e);
108  }
109  }
110  }
111 
112  double deltaR_Mu_Sta =0;
113  int nMurecoTemp = nMureco;
114  // getting mu matched
116  for(i = MuonsMap->begin(); i != MuonsMap->end(); i++ )
117  {
118  const Candidate/* & reco = * i -> key,*/ & mc = * i -> val;
119  if ((muCand1 == &mc) && (mc.pt()>ptcut_) && (abs(mc.eta()<etacut_)))
120  {
121  nMuMC++;
122  nMureco++;
123  break;
124  }
125  }
126  if (nMureco == nMurecoTemp ) // I.E. MU RECO NOT FOUND!!!!
127  {
128  int nTrkTemp = nTrk;
129  int nStaTemp = nSta;
130 
131  // getting tracks matched and doing the same, CONTROLLING IF MU IS RECONSTRUCTED AS A TRACK AND NOT AS A MU
133  for(l = TracksMap->begin(); l != TracksMap->end(); l++ )
134  {
135  const Candidate /* & Trkreco = * l -> key, */ & Trkmc = * l -> val;
136  if (( muCand1 == & Trkmc) && (Trkmc.pt()>ptcut_) && (abs(Trkmc.eta()<etacut_)))
137  {
138  nMuMC++;
139  nTrk++;
140  break;
141  }
142  }
143  // the same for standalone
145  for(n = StandAloneMap->begin(); n != StandAloneMap->end(); n++ )
146  {
147  const Candidate & Stareco = * n -> key, & Stamc = * n -> val;
148  if ((muCand1 == &Stamc ) && (Stamc.pt()>ptcut_) && (abs(Stamc.eta()<etacut_)))
149  {
150  nMuMC++;
151  nSta++;
152  deltaR_Mu_Sta = deltaR(Stareco, *muCand1);
153 
154  // cout<<"Ho trovato un sta reco "<<endl;
155  break;
156  }
157  }
158  // controlling if sta and trk are reconstrucetd both, and if so the get the deltaR beetween muon MC and reco sta, to controll correlation to this happening
159  if ((nSta == nStaTemp + 1) && (nTrk == nTrkTemp + 1 ) )
160  {
161  nNotMuMatching ++;
162  if ((deltaR_Mu_Sta< deltaRStacut_))
163  {
164  v_.push_back(deltaR_Mu_Sta) ;
165  cout << "Not matching from trk and sta matched to MC mu, to reconstruct a recoMU" << endl;
166  }
167  }
168  }
169  }
170  }
171  }
int i
Definition: DBlmapReader.cc:9
virtual const Candidate * daughter(size_type i) const =0
return daughter at a given position, i = 0, ... numberOfDaughters() - 1 (read only mode) ...
virtual double pt() const =0
transverse momentum
virtual int status() const =0
status word
#define abs(x)
Definition: mlp_lapack.h:159
virtual size_type numberOfDaughters() const =0
number of daughters
int k[5][pyjets_maxn]
double deltaR(double eta1, double eta2, double phi1, double phi2)
Definition: TreeUtility.cc:17
virtual int pdgId() const =0
PDG identifier.
list key
Definition: combine.py:13
tuple cout
Definition: gather_cfg.py:121
tuple status
Definition: ntuplemaker.py:245
tuple zMuMu
zMuMu vector of PSet is common to all categories except zMuTrk category
virtual double eta() const =0
momentum pseudorapidity
virtual void MCEfficiencyAnalyzer::endJob ( void  )
inlinevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 174 of file MC_Efficiency_Analyzer.cc.

References gather_cfg::cout, i, and p2.

175  {
176 
177 
178  cout <<"--- nMuMC == "<<nMuMC<<endl;
179  cout <<"--- nMureco == "<<nMureco<<endl;
180  cout <<"--- nSta == "<<nSta<<endl;
181  cout <<"--- nTrk == "<<nTrk<<endl;
182  cout <<"--- nNotMuMatching from a trk and sta matched to a Mu MC == "<<nNotMuMatching<<endl;
183  if (nMuMC!=0 )
184  {
185  cout<<" effMu == "<<(double) nMureco/nMuMC<<endl;
186  cout<<" effTrk == "<< (double)(nTrk + nMureco) /nMuMC<<endl;
187  cout<<" effSta == "<< (double)(nSta + nMureco) / nMuMC<<endl;
188  }
189 
190 vector< int >::const_iterator p2;
191  for (unsigned int i =0 ; i < v_.size(); ++i )
192  {
193  cout<<" delta R Mu Sta == "<< v_[i]<<endl;
194  }
195  }
int i
Definition: DBlmapReader.cc:9
double p2[4]
Definition: TauolaWrapper.h:90
tuple cout
Definition: gather_cfg.py:121

Member Data Documentation

double MCEfficiencyAnalyzer::deltaRStacut_
private

Definition at line 204 of file MC_Efficiency_Analyzer.cc.

double MCEfficiencyAnalyzer::etacut_
private

Definition at line 204 of file MC_Efficiency_Analyzer.cc.

InputTag MCEfficiencyAnalyzer::genParticles_
private

Definition at line 203 of file MC_Efficiency_Analyzer.cc.

InputTag MCEfficiencyAnalyzer::Muons_
private

Definition at line 203 of file MC_Efficiency_Analyzer.cc.

InputTag MCEfficiencyAnalyzer::MuonsMap_
private

Definition at line 203 of file MC_Efficiency_Analyzer.cc.

int MCEfficiencyAnalyzer::nMuMC
private

Definition at line 205 of file MC_Efficiency_Analyzer.cc.

int MCEfficiencyAnalyzer::nMureco
private

Definition at line 205 of file MC_Efficiency_Analyzer.cc.

int MCEfficiencyAnalyzer::nNotMuMatching
private

Definition at line 205 of file MC_Efficiency_Analyzer.cc.

int MCEfficiencyAnalyzer::nSta
private

Definition at line 205 of file MC_Efficiency_Analyzer.cc.

int MCEfficiencyAnalyzer::nTrk
private

Definition at line 205 of file MC_Efficiency_Analyzer.cc.

double MCEfficiencyAnalyzer::ptcut_
private

Definition at line 204 of file MC_Efficiency_Analyzer.cc.

InputTag MCEfficiencyAnalyzer::StandAlone_
private

Definition at line 203 of file MC_Efficiency_Analyzer.cc.

InputTag MCEfficiencyAnalyzer::StandAloneMap_
private

Definition at line 203 of file MC_Efficiency_Analyzer.cc.

InputTag MCEfficiencyAnalyzer::Tracks_
private

Definition at line 203 of file MC_Efficiency_Analyzer.cc.

InputTag MCEfficiencyAnalyzer::TracksMap_
private

Definition at line 203 of file MC_Efficiency_Analyzer.cc.

vector<double> MCEfficiencyAnalyzer::v_
private

Definition at line 206 of file MC_Efficiency_Analyzer.cc.

InputTag MCEfficiencyAnalyzer::zMuMu_
private

Definition at line 203 of file MC_Efficiency_Analyzer.cc.