7 #include "TLorentzVector.h"
23 hltPaths_ = ps.
getParameter<vector<string> >(
"hltPaths");
24 hltPaths_sig_ = ps.
getParameter<vector<string> >(
"hltPaths_sig");
25 hltPaths_trig_ = ps.
getParameter<vector<string> >(
"hltPaths_trig");
43 MassWindow_up_ = ps.
getParameter<
double>(
"MassWindow_up");
44 MassWindow_down_ = ps.
getParameter<
double>(
"MassWindow_down");
46 for(
int i=0;
i<100; ++
i) {
58 const char *
fileName = outputFile_.c_str();
89 MuIso_CombRelIso03_ = 0;
92 ElecIso_CombRelIso_ = 0;
123 Events_ =
dbe_->
book1D(
"00_Events",
"Isolated dilepton events", 5, 0., 5.);
125 Events_->setBinLabel( 3,
"#mu e", 1);
126 Events_->setBinLabel( 4,
"e e", 1);
128 Trigs_ =
dbe_->
book1D(
"01_Trigs",
"Fired muon/electron triggers", 15, 0., 15.);
129 TriggerEff_ =
dbe_->
book1D(
"02_TriggerEff",
"HL Trigger Efficiencies", 10, 0., 10.);
130 TriggerEff_->
setTitle(
"HL Trigger Efficiencies #epsilon_{signal} = #frac{[signal] && [control]}{[control]}");
131 Ntracks_ =
dbe_->
book1D(
"Ntracks",
"Number of tracks", 50, 0., 50.);
133 Nmuons_ =
dbe_->
book1D(
"03_Nmuons",
"Number of muons", 20, 0., 10.);
134 Nmuons_iso_ =
dbe_->
book1D(
"04_Nmuons_iso",
"Number of isolated muons", 20, 0., 10.);
135 Nmuons_charge_ =
dbe_->
book1D(
"Nmuons_charge",
"Number of muons * moun charge", 19, -10., 10.);
136 VxVy_muons_ =
dbe_->
book2D(
"VxVy_muons",
"Vertex x-y-positon (global)", 40, -1., 1., 40 , -1., 1.);
137 Vz_muons_ =
dbe_->
book1D(
"Vz_muons",
"Vertex z-positon (global)", 40, -20., 20.);
138 pT_muons_ =
dbe_->
book1D(
"pT_muons",
"P_T of muons", 40, 0., 200.);
139 eta_muons_ =
dbe_->
book1D(
"eta_muons",
"Eta of muons", 50, -5., 5.);
140 phi_muons_ =
dbe_->
book1D(
"phi_muons",
"Phi of muons", 40, -4., 4.);
142 Nelecs_ =
dbe_->
book1D(
"05_Nelecs",
"Number of electrons", 20, 0., 10.);
143 Nelecs_iso_ =
dbe_->
book1D(
"06_Nelecs_iso",
"Number of isolated electrons", 20, 0., 10.);
144 Nelecs_charge_ =
dbe_->
book1D(
"Nelecs_charge",
"Number of elecs * elec charge", 19, -10., 10.);
145 HoverE_elecs_ =
dbe_->
book1D(
"HoverE_elecs",
"Hadronic over Ecal energy", 50, 0., 1.);
146 pT_elecs_ =
dbe_->
book1D(
"pT_elecs",
"P_T of electrons", 40, 0., 200.);
147 eta_elecs_ =
dbe_->
book1D(
"eta_elecs",
"Eta of electrons", 50, -5., 5.);
148 phi_elecs_ =
dbe_->
book1D(
"phi_elecs",
"Phi of electrons", 40, -4., 4.);
150 MuIso_emEt03_ =
dbe_->
book1D(
"MuIso_emEt03",
"Muon emEt03", 20, 0., 20.);
151 MuIso_hadEt03_ =
dbe_->
book1D(
"MuIso_hadEt03",
"Muon hadEt03", 20, 0., 20.);
152 MuIso_hoEt03_ =
dbe_->
book1D(
"MuIso_hoEt03",
"Muon hoEt03", 20, 0., 20.);
153 MuIso_nJets03_ =
dbe_->
book1D(
"MuIso_nJets03",
"Muon nJets03", 10, 0., 10.);
154 MuIso_nTracks03_ =
dbe_->
book1D(
"MuIso_nTracks03",
"Muon nTracks03", 20, 0., 20.);
155 MuIso_sumPt03_ =
dbe_->
book1D(
"MuIso_sumPt03",
"Muon sumPt03", 20, 0., 40.);
156 MuIso_CombRelIso03_ =
dbe_->
book1D(
"07_MuIso_CombRelIso03",
"Muon CombRelIso03", 20, 0., 1.);
158 ElecIso_cal_ =
dbe_->
book1D(
"ElecIso_cal",
"Electron Iso_cal", 21, -1., 20.);
159 ElecIso_trk_ =
dbe_->
book1D(
"ElecIso_trk",
"Electron Iso_trk", 21, -2., 40.);
160 ElecIso_CombRelIso_ =
dbe_->
book1D(
"08_ElecIso_CombRelIso",
"Electron CombRelIso", 20, 0., 1.);
162 const int nbins = 200;
171 double log = logmin + (logmax-logmin)*
i/nbins;
176 dimassRC_ =
dbe_->
book1D(
"09_dimassRC",
"Dilepton mass RC", 50, 0., 200.);
177 dimassWC_ =
dbe_->
book1D(
"11_dimassWC",
"Dilepton mass WC", 50, 0., 200.);
178 dimassRC_LOGX_ =
dbe_->
book1D(
"10_dimassRC_LOGX",
"Dilepton mass RC LOG", nbins, &bins[0]);
179 dimassWC_LOGX_ =
dbe_->
book1D(
"12_dimassWC_LOGX",
"Dilepton mass WC LOG", nbins, &bins[0]);
180 dimassRC_LOG10_ =
dbe_->
book1D(
"dimassRC_LOG10",
"Dilepton mass RC LOG", 50, 0., 2.5);
181 dimassWC_LOG10_ =
dbe_->
book1D(
"dimassWC_LOG10",
"Dilepton mass WC LOG", 50, 0., 2.5);
183 D_eta_muons_ =
dbe_->
book1D(
"13_D_eta_muons",
"#Delta eta_muons", 20, -5., 5.);
184 D_phi_muons_ =
dbe_->
book1D(
"14_D_phi_muons",
"#Delta phi_muons", 20, -5., 5.);
185 D_eta_elecs_ =
dbe_->
book1D(
"D_eta_elecs",
"#Delta eta_elecs", 20, -5., 5.);
186 D_phi_elecs_ =
dbe_->
book1D(
"D_phi_elecs",
"#Delta phi_elecs", 20, -5., 5.);
187 D_eta_lepts_ =
dbe_->
book1D(
"D_eta_lepts",
"#Delta eta_lepts", 20, -5., 5.);
188 D_phi_lepts_ =
dbe_->
book1D(
"D_phi_lepts",
"#Delta phi_lepts", 20, -5., 5.);
204 const int N_TriggerPaths = hltPaths_.size();
205 const int N_SignalPaths = hltPaths_sig_.size();
206 const int N_ControlPaths = hltPaths_trig_.size();
208 bool Fired_Signal_Trigger[100] = {
false};
209 bool Fired_Control_Trigger[100] = {
false};
211 int N_run = (evt.
id()).
run();
212 int N_event = (evt.
id()).
event();
220 double DilepMass = 0.;
222 double vertex_X = 100.;
223 double vertex_Y = 100.;
224 double vertex_Z = 100.;
245 int numberTracks = primaryVertex.
tracksSize();
249 Ntracks_->Fill(numberTracks);
251 if( !fake && numberTracks > 3 ) {
253 vertex_X = primaryVertex.
x();
254 vertex_Y = primaryVertex.
y();
255 vertex_Z = primaryVertex.
z();
278 int N_Triggers = trigResults->size();
282 for(
int i_Trig = 0; i_Trig < N_Triggers; ++i_Trig ) {
284 if (trigResults.
product()->accept(i_Trig)) {
288 for(
int i = 0;
i < N_TriggerPaths;
i++ ) {
293 Trigs_->setBinLabel(
i+1, hltPaths_[
i], 1);
301 for(
int j = 0;
j < N_SignalPaths; ++
j ) {
303 if( trigName.
triggerName(i_Trig) == hltPaths_sig_[
j] ) Fired_Signal_Trigger[
j] =
true;
307 for(
int k = 0;
k < N_ControlPaths; ++
k ) {
309 if( trigName.
triggerName(i_Trig) == hltPaths_trig_[
k] ) Fired_Control_Trigger[
k] =
true;
326 reco::MuonCollection::const_iterator
muon;
338 Nmuons_->Fill( muons->size() );
340 N_leptons = N_leptons + muons->size();
342 for(muon = muons->begin(); muon!= muons->end(); ++
muon) {
344 float N_muons = muons->size();
345 float Q_muon = muon->charge();
347 Nmuons_charge_->Fill(N_muons*Q_muon);
349 double track_X = 100.;
350 double track_Y = 100.;
351 double track_Z = 100.;
353 if( muon->isGlobalMuon() ) {
357 track_X = track->vx();
358 track_Y = track->vy();
359 track_Z = track->vz();
361 VxVy_muons_->Fill(track_X, track_Y);
362 Vz_muons_->Fill(track_Z);
368 if( track_X > vertex_X_cut_ )
continue;
369 if( track_Y > vertex_Y_cut_ )
continue;
370 if( track_Z > vertex_Z_cut_ )
continue;
371 if( muon->pt() < muon_pT_cut_ )
continue;
372 if(
abs(muon->eta()) > muon_eta_cut_ )
continue;
376 double muonCombRelIso = 1.;
378 if ( muon->pt() != 0. )
379 muonCombRelIso = ( muIso03.
emEt + muIso03.
hadEt + muIso03.
hoEt + muIso03.
sumPt ) / muon->pt();
381 MuIso_CombRelIso03_->Fill( muonCombRelIso );
383 MuIso_emEt03_->Fill( muIso03.
emEt );
384 MuIso_hadEt03_->Fill( muIso03.
hadEt );
385 MuIso_hoEt03_->Fill( muIso03.
hoEt );
386 MuIso_nJets03_->Fill( muIso03.
nJets );
387 MuIso_nTracks03_->Fill( muIso03.
nTracks );
388 MuIso_sumPt03_->Fill( muIso03.
sumPt );
390 if( muonCombRelIso < muon_iso_cut_ ) ++N_iso_mu;
394 Nmuons_iso_->Fill(N_iso_mu);
405 reco::GsfElectronCollection::const_iterator elec;
417 Nelecs_->Fill( elecs->size() );
419 N_leptons = N_leptons + elecs->size();
421 for(elec = elecs->begin(); elec!= elecs->end(); ++elec) {
423 float N_elecs = elecs->size();
424 float Q_elec = elec->charge();
425 float HoverE = elec->hcalOverEcal();
427 HoverE_elecs_->Fill( HoverE );
429 Nelecs_charge_->Fill(N_elecs*Q_elec);
431 double track_X = 100.;
432 double track_Y = 100.;
433 double track_Z = 100.;
437 track_X = track->vx();
438 track_Y = track->vy();
439 track_Z = track->vz();
443 if( track_X > vertex_X_cut_ )
continue;
444 if( track_Y > vertex_Y_cut_ )
continue;
445 if( track_Z > vertex_Z_cut_ )
continue;
446 if( elec->pt() < elec_pT_cut_ )
continue;
447 if(
abs(elec->eta()) > elec_eta_cut_ )
continue;
448 if( HoverE > elec_emf_cut_ )
continue;
452 double elecCombRelIso = 1.;
454 if ( elec->et() != 0. )
457 ElecIso_CombRelIso_->Fill( elecCombRelIso );
460 ElecIso_trk_->Fill( elecIso.
tkSumPt );
462 if( elecCombRelIso < elec_iso_cut_ ) ++N_iso_el;
466 Nelecs_iso_->Fill(N_iso_el);
481 if( vertex_X < vertex_X_cut_ && vertex_Y < vertex_Y_cut_ && vertex_Z < vertex_Z_cut_ ) {
487 reco::MuonCollection::const_reference mu1 = muons->at(0);
488 reco::MuonCollection::const_reference mu2 = muons->at(1);
490 DilepMass =
sqrt( (mu1.energy()+mu2.energy())*(mu1.energy()+mu2.energy())
491 - (mu1.px()+mu2.px())*(mu1.px()+mu2.px())
492 - (mu1.py()+mu2.py())*(mu1.py()+mu2.py())
493 - (mu1.pz()+mu2.pz())*(mu1.pz()+mu2.pz())
498 if( mu1.charge()*mu2.charge() < 0. ) {
500 dimassRC_LOG10_->Fill( log10(DilepMass) );
501 dimassRC_->Fill( DilepMass );
502 dimassRC_LOGX_->Fill( DilepMass );
504 if( DilepMass > MassWindow_down_ && DilepMass < MassWindow_up_ ) {
506 for(muon = muons->begin(); muon!= muons->end(); ++
muon) {
508 pT_muons_->Fill( muon->pt() );
509 eta_muons_->Fill( muon->eta() );
510 phi_muons_->Fill( muon->phi() );
514 D_eta_muons_->Fill(mu1.eta()-mu2.eta());
515 D_phi_muons_->Fill(mu1.phi()-mu2.phi());
519 if( mu1.isGlobalMuon() && mu2.isGlobalMuon() ) {
521 outfile <<
"--------------------" <<
"\n";
522 outfile <<
" Run : " << N_run <<
"\n";
523 outfile <<
" Event : " << N_event <<
"\n";
524 outfile <<
"LumiBlock : " << N_lumi <<
"\n";
525 outfile <<
" Type : mu mu" <<
"\n";
526 outfile <<
"--------------------" <<
"\n";
527 outfile <<
"DilepMass : " << DilepMass <<
"\n";
528 outfile <<
"Mu1 Pt : " << mu1.pt() <<
"\n";
529 outfile <<
"Mu1 Eta : " << mu1.eta() <<
"\n";
530 outfile <<
"Mu1 Phi : " << mu1.phi() <<
"\n";
531 outfile <<
"Mu2 Pt : " << mu2.pt() <<
"\n";
532 outfile <<
"Mu2 Eta : " << mu2.eta() <<
"\n";
533 outfile <<
"Mu2 Phi : " << mu2.phi() <<
"\n";
534 outfile <<
"--------------------" <<
"\n";
542 for(
int k = 0;
k < N_SignalPaths; ++
k ) {
544 if( Fired_Signal_Trigger[
k] && Fired_Control_Trigger[
k] ) ++N_sig[
k];
546 if( Fired_Control_Trigger[k] ) ++N_trig[
k];
548 if( N_trig[k] != 0 ) Eff[
k] = N_sig[
k]/
static_cast<float>(N_trig[
k]);
550 TriggerEff_->setBinContent( k+1, Eff[k] );
551 TriggerEff_->setBinLabel( k+1,
"#frac{["+hltPaths_sig_[k]+
"]}{vs. ["+hltPaths_trig_[k]+
"]}", 1);
561 if( mu1.charge()*mu2.charge() > 0. ) {
563 dimassWC_LOG10_->Fill( log10(DilepMass) );
564 dimassWC_->Fill( DilepMass );
565 dimassWC_LOGX_->Fill( DilepMass );
569 if( mu1.isGlobalMuon() && mu2.isGlobalMuon() ) {
571 outfile <<
"---------------------" <<
"\n";
572 outfile <<
" Run : " << N_run <<
"\n";
573 outfile <<
" Event : " << N_event <<
"\n";
574 outfile <<
"LumiBlock : " << N_lumi <<
"\n";
575 outfile <<
" Type : WC mu mu" <<
"\n";
576 outfile <<
"---------------------" <<
"\n";
577 outfile <<
"DilepMass : " << DilepMass <<
"\n";
578 outfile <<
"Mu1 Pt : " << mu1.pt() <<
"\n";
579 outfile <<
"Mu1 Eta : " << mu1.eta() <<
"\n";
580 outfile <<
"Mu1 Phi : " << mu1.phi() <<
"\n";
581 outfile <<
"Mu2 Pt : " << mu2.pt() <<
"\n";
582 outfile <<
"Mu2 Eta : " << mu2.eta() <<
"\n";
583 outfile <<
"Mu2 Phi : " << mu2.phi() <<
"\n";
584 outfile <<
"---------------------" <<
"\n";
601 if( N_iso_el > 0 && N_iso_mu > 0 ) {
605 if( vertex_X < vertex_X_cut_ && vertex_Y < vertex_Y_cut_ && vertex_Z < vertex_Z_cut_ ) {
611 reco::MuonCollection::const_reference mu1 = muons->at(0);
612 reco::GsfElectronCollection::const_reference el1 = elecs->at(0);
614 DilepMass =
sqrt( (mu1.energy()+el1.energy())*(mu1.energy()+el1.energy())
615 - (mu1.px()+el1.px())*(mu1.px()+el1.px())
616 - (mu1.py()+el1.py())*(mu1.py()+el1.py())
617 - (mu1.pz()+el1.pz())*(mu1.pz()+el1.pz())
622 if( mu1.charge()*el1.charge() < 0. ) {
624 dimassRC_LOG10_->Fill( log10(DilepMass) );
625 dimassRC_->Fill( DilepMass );
626 dimassRC_LOGX_->Fill( DilepMass );
628 if( DilepMass > MassWindow_down_ && DilepMass < MassWindow_up_ ) {
630 for(muon = muons->begin(); muon!= muons->end(); ++
muon) {
632 pT_muons_->Fill( muon->pt() );
633 eta_muons_->Fill( muon->eta() );
634 phi_muons_->Fill( muon->phi() );
638 for(elec = elecs->begin(); elec!= elecs->end(); ++elec) {
640 pT_elecs_->Fill( elec->pt() );
641 eta_elecs_->Fill( elec->eta() );
642 phi_elecs_->Fill( elec->phi() );
646 D_eta_lepts_->Fill(mu1.eta()-el1.eta());
647 D_phi_lepts_->Fill(mu1.phi()-el1.phi());
651 if( mu1.isGlobalMuon() && el1.isElectron() ) {
653 outfile <<
"--------------------" <<
"\n";
654 outfile <<
" Run : " << N_run <<
"\n";
655 outfile <<
" Event : " << N_event <<
"\n";
656 outfile <<
"LumiBlock : " << N_lumi <<
"\n";
657 outfile <<
" Type : mu el" <<
"\n";
658 outfile <<
"--------------------" <<
"\n";
659 outfile <<
"DilepMass : " << DilepMass <<
"\n";
660 outfile <<
"Mu1 Pt : " << mu1.pt() <<
"\n";
661 outfile <<
"Mu1 Eta : " << mu1.eta() <<
"\n";
662 outfile <<
"Mu1 Phi : " << mu1.phi() <<
"\n";
663 outfile <<
"El1 Pt : " << el1.pt() <<
"\n";
664 outfile <<
"El1 Eta : " << el1.eta() <<
"\n";
665 outfile <<
"El1 Phi : " << el1.phi() <<
"\n";
666 outfile <<
"--------------------" <<
"\n";
674 for(
int k = 0;
k < N_SignalPaths; ++
k ) {
676 if( Fired_Signal_Trigger[
k] && Fired_Control_Trigger[
k] ) ++N_sig[
k];
678 if( Fired_Control_Trigger[k] ) ++N_trig[
k];
680 if( N_trig[k] != 0 ) Eff[
k] = N_sig[
k]/
static_cast<float>(N_trig[
k]);
682 TriggerEff_->setBinContent( k+1, Eff[k] );
683 TriggerEff_->setBinLabel( k+1,
"#frac{["+hltPaths_sig_[k]+
"]}{vs. ["+hltPaths_trig_[k]+
"]}", 1);
693 if( mu1.charge()*el1.charge() > 0. ) {
695 dimassWC_LOG10_->Fill( log10(DilepMass) );
696 dimassWC_->Fill( DilepMass );
697 dimassWC_LOGX_->Fill( DilepMass );
714 if( vertex_X < vertex_X_cut_ && vertex_Y < vertex_Y_cut_ && vertex_Z < vertex_Z_cut_ ) {
720 reco::GsfElectronCollection::const_reference el1 = elecs->at(0);
721 reco::GsfElectronCollection::const_reference el2 = elecs->at(1);
723 DilepMass =
sqrt( (el1.energy()+el2.energy())*(el1.energy()+el2.energy())
724 - (el1.px()+el2.px())*(el1.px()+el2.px())
725 - (el1.py()+el2.py())*(el1.py()+el2.py())
726 - (el1.pz()+el2.pz())*(el1.pz()+el2.pz())
731 if( el1.charge()*el2.charge() < 0. ) {
733 dimassRC_LOG10_->Fill( log10(DilepMass) );
734 dimassRC_->Fill( DilepMass );
735 dimassRC_LOGX_->Fill( DilepMass );
737 if( DilepMass > MassWindow_down_ && DilepMass < MassWindow_up_ ) {
739 for(elec = elecs->begin(); elec!= elecs->end(); ++elec) {
741 pT_elecs_->Fill( elec->pt() );
742 eta_elecs_->Fill( elec->eta() );
743 phi_elecs_->Fill( elec->phi() );
747 D_eta_elecs_->Fill(el1.eta()-el2.eta());
748 D_phi_elecs_->Fill(el1.phi()-el2.phi());
752 if( el1.isElectron() && el2.isElectron() ) {
754 outfile <<
"--------------------" <<
"\n";
755 outfile <<
" Run : " << N_run <<
"\n";
756 outfile <<
" Event : " << N_event <<
"\n";
757 outfile <<
"LumiBlock : " << N_lumi <<
"\n";
758 outfile <<
" Type : el el" <<
"\n";
759 outfile <<
"--------------------" <<
"\n";
760 outfile <<
"DilepMass : " << DilepMass <<
"\n";
761 outfile <<
"El1 Pt : " << el1.pt() <<
"\n";
762 outfile <<
"El1 Eta : " << el1.eta() <<
"\n";
763 outfile <<
"El1 Phi : " << el1.phi() <<
"\n";
764 outfile <<
"El2 Pt : " << el2.pt() <<
"\n";
765 outfile <<
"El2 Eta : " << el2.eta() <<
"\n";
766 outfile <<
"El2 Phi : " << el2.phi() <<
"\n";
767 outfile <<
"--------------------" <<
"\n";
775 for(
int k = 0;
k < N_SignalPaths; ++
k ) {
777 if( Fired_Signal_Trigger[
k] && Fired_Control_Trigger[
k] ) ++N_sig[
k];
779 if( Fired_Control_Trigger[k] ) ++N_trig[
k];
781 if( N_trig[k] != 0 ) Eff[
k] = N_sig[
k]/
static_cast<float>(N_trig[
k]);
783 TriggerEff_->setBinContent( k+1, Eff[k] );
784 TriggerEff_->setBinLabel( k+1,
"#frac{["+hltPaths_sig_[k]+
"]}{vs. ["+hltPaths_trig_[k]+
"]}", 1);
794 if( el1.charge()*el2.charge() > 0. ) {
796 dimassWC_LOG10_->Fill( log10(DilepMass) );
797 dimassWC_->Fill( DilepMass );
798 dimassWC_LOGX_->Fill( DilepMass );
815 if(fileOutput_)
outfile.close();
T getParameter(std::string const &) const
static AlgebraicMatrix initialize()
T getUntrackedParameter(std::string const &, T const &) const
void endRun(const edm::Run &, const edm::EventSetup &)
virtual edm::TriggerNames const & triggerNames(edm::TriggerResults const &triggerResults) const
float sumPt
sum-pt of tracks
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
bool getByToken(EDGetToken token, Handle< PROD > &result) const
double y() const
y coordinate
void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
edm::LuminosityBlockNumber_t luminosityBlock() const
float hcalDepth1TowerSumEt
TopDiLeptonDQM(const edm::ParameterSet &)
int nJets
number of jets in the cone
Abs< T >::type abs(const T &t)
double z() const
y coordinate
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
void setTitle(const std::string &title)
set (ie. change) histogram/profile title
virtual void analyze(const edm::Event &, const edm::EventSetup &)
int nTracks
number of tracks in the cone (excluding veto region)
double x() const
x coordinate
std::string const & triggerName(unsigned int index) const
T const * product() const
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
Power< A, B >::type pow(const A &a, const B &b)
void setCurrentFolder(const std::string &fullpath)
size_t tracksSize() const
number of tracks
void beginRun(const edm::Run &, const edm::EventSetup &)