00001
00002
00003
00004
00005
00013
00014
00015
00016
00017
00018
00019
00020
00021 # include "HLTriggerOffline/Top/interface/TopValidation.h"
00022
00023
00024
00025
00026 TopValidation::TopValidation(const edm::ParameterSet& iConfig)
00027
00028 {
00029
00030
00031
00032 inputTag_ = iConfig.getParameter<edm::InputTag>("TriggerResultsCollection");
00033
00034 triggerTag_= iConfig.getUntrackedParameter<string>("DQMFolder","HLT/Top");
00035
00036 outputFileName = iConfig.getParameter<std::string>("OutputFileName");
00037 outputMEsInRootFile = iConfig.getParameter<bool>("OutputMEsInRootFile");
00038
00039
00040
00041 }
00042
00043
00044 TopValidation::~TopValidation()
00045 {
00046
00047
00048
00049
00050 }
00051
00052
00053
00054
00055
00056
00057
00058
00059 void
00060 TopValidation::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup)
00061 {
00062 using namespace edm;
00063
00064
00065
00066 Handle<MuonCollection> muonsH;
00067 iEvent.getByLabel("muons", muonsH);
00068
00069
00070 Handle<TrackCollection> tracks;
00071 iEvent.getByLabel("ctfWithMaterialTracks", tracks);
00072
00073
00074
00075
00076 Handle<CaloJetCollection> jetsHandle;
00077 iEvent.getByLabel("iterativeCone5CaloJets", jetsHandle);
00078
00079
00080 Handle<GsfElectronCollection> electronsH;
00081 iEvent.getByLabel("pixelMatchGsfElectrons",electronsH);
00082
00083
00084 Handle<TriggerResults> trh;
00085 try {iEvent.getByLabel(inputTag_,trh);} catch(...) {;}
00086
00087 triggerNames_.init(*trh);
00088
00089 HLT1MuonNonIso = false;
00090 HLT1MuonIso = false;
00091 HLT1ElectronRelaxed = false;
00092 HLT1Electron = false;
00093 HLT2MuonNonIso = false;
00094 HLT2ElectronRelaxed = false;
00095 HLTXElectronMuonRelaxed = false;
00096 HLTXElectronMuon = false;
00097 HLT1jet = false;
00098
00099
00100
00101 HLT4jet30 = false;
00102 HLT1Electron15_NI = false;
00103 HLT1Electron15_LI = false;
00104
00105
00106
00107
00108
00109 const unsigned int n_TriggerResults( trh.product()->size());
00110 for ( unsigned int itrig= 0 ; itrig < n_TriggerResults; ++itrig ){
00111
00112
00113
00114 if ( triggerNames_.triggerName( itrig ) == "HLT_Mu15" ){
00115 if ( trh.product()->accept( itrig ) ) HLT1MuonNonIso=true;
00116 }
00117 if (triggerNames_.triggerName(itrig) == "HLT_IsoMu11"){
00118 if ( trh.product()->accept( itrig ) ) HLT1MuonIso=true;
00119 }
00120 if (triggerNames_.triggerName(itrig) == "HLT_IsoEle18_L1R"){
00121 if ( trh.product()->accept( itrig ) ) HLT1ElectronRelaxed=true;
00122 }
00123 if (triggerNames_.triggerName(itrig) == "HLT_IsoEle15_L1I"){
00124 if ( trh.product()->accept( itrig ) ) HLT1Electron=true;
00125 }
00126 if (triggerNames_.triggerName(itrig) == "HLT_DoubleMu3"){
00127 if ( trh.product()->accept( itrig ) ) HLT2MuonNonIso=true;
00128 }
00129 if (triggerNames_.triggerName(itrig) == "HLT_DoubleIsoEle12_L1R"){
00130 if ( trh.product()->accept( itrig ) ) HLT2ElectronRelaxed=true;
00131 }
00132 if (triggerNames_.triggerName(itrig) == "HLT_IsoEle10_Mu10_L1R"){
00133 if ( trh.product()->accept( itrig ) ) HLTXElectronMuonRelaxed=true;
00134 }
00135 if (triggerNames_.triggerName(itrig) == "HLT_IsoEle8_IsoMu7"){
00136 if ( trh.product()->accept( itrig ) ) HLTXElectronMuon=true;
00137 }
00138 if (triggerNames_.triggerName(itrig) == "HLT1jet"){
00139 if ( trh.product()->accept( itrig ) ) HLT1jet=true;
00140 }
00141
00142
00143 if (triggerNames_.triggerName(itrig) == "HLT_QuadJet30"){
00144 if ( trh.product()->accept( itrig ) ) HLT4jet30=true;
00145 }
00146 if (triggerNames_.triggerName(itrig) == "HLT_Ele15_SW_L1R"){
00147 if ( trh.product()->accept( itrig ) ) HLT1Electron15_NI=true;
00148 }
00149
00150 if (triggerNames_.triggerName(itrig) == "HLT_LooseIsoEle15_LW_L1R"){
00151 if ( trh.product()->accept( itrig ) ) HLT1Electron15_LI=true;
00152 }
00153
00154
00155
00156
00157 }
00158
00159
00160
00161
00162
00163 bool topevent = false;
00164
00165 int ntop = 0;
00166 int ngenel=0;
00167 int ngenmu=0;
00168 int ngentau=0;
00169 int ngenlep=0;
00170 int nmuaccept=0;
00171 int nelaccept=0;
00172
00173
00174 Handle <GenParticleCollection> genParticles;
00175 iEvent.getByLabel("genParticles", genParticles);
00176
00177 for (size_t i=0; i < genParticles->size(); ++i){
00178 const Candidate & p = (*genParticles)[i];
00179 int id = p.pdgId();
00180 int st = p.status();
00181
00182
00183 if (abs(id) == 6 && st == 3) ntop++;
00184
00185 if (st==3 && abs(id)==11) {
00186 ngenel++;
00187 if ( p.pt()>10 && fabs(p.eta())<2.4) nelaccept++;
00188 }
00189
00190 if (st==3 && abs(id)==13) {
00191 ngenmu++;
00192 if ( p.pt()>10 && fabs(p.eta())<2.4) nmuaccept++;
00193 }
00194
00195 if (st==3 && abs(id)==15) ngentau++;
00196 if (st==3 && ( abs(id)==11 || abs(id)==13 || abs(id)==15)) ngenlep++;
00197
00198 }
00199 if (ntop == 2) topevent = true;
00200
00201 nEvents++;
00202
00203
00204 if (topevent){
00205
00206 nAccepted++;
00207
00208
00209
00210
00211
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228
00229 std::map<double,reco::Muon> muonMap;
00230
00231 for (size_t i = 0; i< muonsH->size(); ++i){
00232 if ( (*muonsH)[i].isGlobalMuon()){
00233 muonMap[(*muonsH)[i].pt()] = (*muonsH)[i];
00234 }
00235 }
00236
00237
00238 bool TwoMuonsAccepted = false;
00239 int numberMuonsPt20 = 0;
00240 std::vector<reco::Muon> muonPt;
00241 reco::Muon muon1,muon2;
00242
00243 for( std::map<double,reco::Muon>::reverse_iterator rit=muonMap.rbegin(); rit!=muonMap.rend(); ++rit){
00244 muonPt.push_back( (*rit).second );
00245 }
00246
00247
00248 for(size_t i=0;i<muonPt.size();++i){
00249 if(muonPt[i].pt()>15 && fabs(muonPt[i].eta())<2.0){
00250 numberMuonsPt20++;
00251 if(numberMuonsPt20==1) muon1 = muonPt[i];
00252 if(numberMuonsPt20==2) muon2 = muonPt[i];
00253 }
00254 }
00255
00256
00257 if( numberMuonsPt20>1 && (muon1.pt() >20 || muon2.pt()>20) && muon1.charge()*muon2.charge()<0 ) TwoMuonsAccepted = true;
00258
00259
00260
00261
00262 std::map<double,reco::GsfElectron> electronMap;
00263
00264 for (size_t i = 0; i<electronsH->size();++i){
00265 electronMap[(*electronsH)[i].pt()] = (*electronsH)[i];
00266 }
00267
00268
00269 bool TwoElectronsAccepted = false;
00270 int numberElectronsPt20 = 0;
00271 std::vector<reco::GsfElectron> electronPt;
00272 reco::GsfElectron electron1, electron2;
00273
00274 for( std::map<double,reco::GsfElectron>::reverse_iterator rit=electronMap.rbegin(); rit!=electronMap.rend(); ++rit){
00275 electronPt.push_back( (*rit).second );
00276 }
00277
00278
00279 for(size_t i=0;i!=electronPt.size();++i){
00280 if(electronPt[i].pt()>15 && fabs(electronPt[i].eta() )<2.0){
00281 numberElectronsPt20++;
00282 if (numberElectronsPt20==1) electron1=electronPt[i];
00283 if (numberElectronsPt20==2) electron2=electronPt[i];
00284 }
00285 }
00286
00287 if( numberElectronsPt20>1 && (electron1.pt() >20 || electron2.pt()>20) &&
00288 electron1.charge()*electron2.charge()<0 ) TwoElectronsAccepted = true;
00289
00290
00291
00292
00293
00294
00295
00296
00297
00298
00299
00300
00301
00302
00303
00304
00305
00306
00307
00308 const CaloJetCollection *jets = jetsHandle.product();
00309 CaloJetCollection::const_iterator jet;
00310
00311 int n_jets_20=0;
00312
00313 for (jet = jets->begin(); jet != jets->end(); jet++){
00314
00315
00316 if (fabs(jet->eta()) <2.4 && jet->et() > 13) n_jets_20++;
00317
00318 }
00319
00320
00321
00322
00323 bool offline_mu = false;
00324 bool offline_dimu = false;
00325 bool offline_el = false;
00326 bool offline_diel = false;
00327 bool offline_emu = false;
00328
00329
00330 if ( numberMuonsPt20>0 && muon1.pt()>20 && n_jets_20>1) offline_mu=true;
00331 if ( TwoMuonsAccepted && n_jets_20>1) offline_dimu=true;
00332 if ( numberElectronsPt20>0 && electron1.pt()>20 && n_jets_20>1) offline_el=true;
00333 if ( TwoElectronsAccepted && n_jets_20>1) offline_diel=true;
00334 if ( numberMuonsPt20>0 && numberElectronsPt20>0 && (muon1.pt()>20 || electron1.pt()>20) && (muon1.charge()!= electron1.charge()) && n_jets_20>1) offline_emu=true;
00335
00336
00337
00338
00339
00341 if ( ngenlep==1 && ngenmu==1 && nmuaccept==1){
00342
00343
00344
00345 efficiencies(acceptmu,hlt1muon_semimu,hlt1muoniso_semimu,hlt1elecrelax_semimu,hlt1elec_semimu,hlt2muon_semimu,hlt2elec_semimu,
00346 hltelecmurelax_semimu,hltelecmu_semimu,hlt1jet_semimu,hlt4jet30_semimu,hlt1elec15_li_semimu,hlt1elec15_ni_semimu);
00347
00348
00349 if (offline_mu){
00350
00351
00352 efficiencies(Noffmu,hlt1muon_off_semimu,hlt1muoniso_off_semimu,hlt1elecrelax_off_semimu,hlt1elec_off_semimu,hlt2muon_off_semimu,hlt2elec_off_semimu,hltelecmurelax_off_semimu,hltelecmu_off_semimu,
00353 hlt1jet_off_semimu,hlt4jet30_off_semimu,hlt1elec15_li_off_semimu, hlt1elec15_ni_off_semimu);
00354
00355 eta_off_mu->Fill(muon1.eta());
00356 pt_off_mu-> Fill(muon1.pt());
00357
00358 if(HLT1MuonNonIso){
00359 eta_trig_off_mu->Fill(muon1.eta());
00360 pt_trig_off_mu->Fill(muon1.pt());
00361 }
00362 }
00363 }
00364
00365
00366 if ( ngenlep==1 && ngenel==1 && nelaccept==1){
00367
00368
00369 efficiencies(acceptel,hlt1muon_semiel,hlt1muoniso_semiel,hlt1elecrelax_semiel,
00370 hlt1elec_semiel,hlt2muon_semiel,hlt2elec_semiel,
00371 hltelecmurelax_semiel,hltelecmu_semiel,
00372 hlt1jet_semiel,hlt4jet30_semiel,hlt1elec15_li_semiel, hlt1elec15_ni_semiel);
00373
00374
00375 if (offline_el){
00376
00377
00378 efficiencies(Noffel,hlt1muon_off_semiel,hlt1muoniso_off_semiel,hlt1elecrelax_off_semiel,hlt1elec_off_semiel,hlt2muon_off_semiel,hlt2elec_off_semiel,
00379 hltelecmurelax_off_semiel,hltelecmu_off_semiel,
00380 hlt1jet_off_semiel,hlt4jet30_off_semiel,hlt1elec15_li_off_semiel, hlt1elec15_ni_off_semiel);
00381
00382 eta_off_el->Fill(electron1.eta());
00383 pt_off_el->Fill(electron1.pt());
00384
00385 if(HLT1ElectronRelaxed){
00386 eta_trig_off_el->Fill(electron1.eta());
00387 pt_trig_off_el->Fill(electron1.pt());
00388 }
00389
00390
00391 if (HLT1Electron15_NI){
00392 eta_trig_off_el_ni->Fill(electron1.eta());
00393 pt_trig_off_el_ni->Fill(electron1.pt());
00394 }
00395
00396 if (HLT1Electron15_LI){
00397 eta_trig_off_el_li->Fill(electron1.eta());
00398 pt_trig_off_el_li->Fill(electron1.pt());
00399 }
00400
00401 }
00402 }
00403
00404
00405 if ( ngenlep==2 && ngenmu==2 && nmuaccept==2){
00406
00407
00408 efficiencies(acceptdimu,hlt1muon_dimu,hlt1muoniso_dimu,hlt1elecrelax_dimu,
00409 hlt1elec_dimu,hlt2muon_dimu,hlt2elec_dimu,hltelecmurelax_dimu,hltelecmu_dimu,
00410 hlt1jet_dimu,hlt4jet30_dimu,hlt1elec15_li_dimu,hlt1elec15_ni_dimu);
00411
00412
00413 if (offline_dimu){
00414
00415
00416 efficiencies(Noffdimu,hlt1muon_off_dimu,hlt1muoniso_off_dimu,hlt1elecrelax_off_dimu,hlt1elec_off_dimu,hlt2muon_off_dimu,hlt2elec_off_dimu,
00417 hltelecmurelax_off_dimu,hltelecmu_off_dimu,
00418 hlt1jet_off_dimu,hlt4jet30_off_dimu,hlt1elec15_li_off_dimu, hlt1elec15_ni_off_dimu);
00419
00420 eta_off_dimu0->Fill(muon1.eta());
00421 eta_off_dimu1->Fill(muon2.eta());
00422 pt_off_dimu0->Fill(muon1.pt());
00423 pt_off_dimu1->Fill(muon2.pt());
00424
00425 if(HLT2MuonNonIso){
00426 eta_trig_off_dimu0->Fill(muon1.eta());
00427 eta_trig_off_dimu1->Fill(muon2.eta());
00428 pt_trig_off_dimu0->Fill(muon1.pt());
00429 pt_trig_off_dimu1->Fill(muon2.pt());
00430 }
00431 }
00432 }
00433
00434
00435 if ( ngenlep==2 && ngenel==2 && nelaccept==2){
00436
00437
00438 efficiencies(acceptdiel,hlt1muon_diel,hlt1muoniso_diel,hlt1elecrelax_diel,
00439 hlt1elec_diel,hlt2muon_diel,hlt2elec_diel, hltelecmurelax_diel,hltelecmu_diel, hlt1jet_diel,
00440 hlt4jet30_diel, hlt1elec15_li_diel, hlt1elec15_ni_diel);
00441
00442
00443 if (offline_diel){
00444
00445
00446 efficiencies(Noffdiel,hlt1muon_off_diel,hlt1muoniso_off_diel,hlt1elecrelax_off_diel,hlt1elec_off_diel,hlt2muon_off_diel,hlt2elec_off_diel,
00447 hltelecmurelax_off_diel,hltelecmu_off_diel, hlt1jet_off_diel,hlt4jet30_off_diel,
00448 hlt1elec15_li_off_diel, hlt1elec15_ni_off_diel);
00449
00450 eta_off_diel0->Fill(electron1.eta());
00451 eta_off_diel1->Fill(electron2.eta());
00452 pt_off_diel0->Fill(electron1.pt());
00453 pt_off_diel1->Fill(electron2.pt());
00454
00455 if(HLT2ElectronRelaxed){
00456 eta_trig_off_diel0->Fill(electron1.eta());
00457 eta_trig_off_diel1->Fill(electron2.eta());
00458 pt_trig_off_diel0->Fill(electron1.pt());
00459 pt_trig_off_diel1->Fill(electron2.pt());
00460 }
00461 }
00462 }
00463
00464
00465 if ( ngenlep==2 && ngenel==1 && ngenmu==1 && nmuaccept==1 && nelaccept==1){
00466
00467
00468 efficiencies(acceptemu,hlt1muon_emu,hlt1muoniso_emu,hlt1elecrelax_emu,
00469 hlt1elec_emu,hlt2muon_emu,hlt2elec_emu, hltelecmurelax_emu,hltelecmu_emu, hlt1jet_emu,
00470 hlt4jet30_emu, hlt1elec15_li_emu, hlt1elec15_ni_emu);
00471
00472
00473
00474
00475
00476
00477 if (offline_emu){
00478
00479
00480
00481
00482
00483 efficiencies(Noffemu,hlt1muon_off_emu,hlt1muoniso_off_emu,hlt1elecrelax_off_emu,hlt1elec_off_emu,hlt2muon_off_emu,hlt2elec_off_emu,
00484 hltelecmurelax_off_emu,hltelecmu_off_emu, hlt1jet_off_emu, hlt4jet30_off_emu, hlt1elec15_li_off_emu,
00485 hlt1elec15_ni_off_emu);
00486
00487 eta_off_emu_muon->Fill(muon1.eta());
00488 pt_off_emu_muon->Fill(muon1.pt());
00489 eta_off_emu_electron->Fill(electron1.eta());
00490 pt_off_emu_electron->Fill(electron1.pt());
00491
00492 if(HLTXElectronMuonRelaxed){
00493 eta_trig_off_emu_muon->Fill(muon1.eta());
00494 pt_trig_off_emu_muon->Fill(muon1.pt());
00495 eta_trig_off_emu_electron->Fill(electron1.eta());
00496 pt_trig_off_emu_electron->Fill(electron1.pt());
00497 }
00498 }
00499 }
00500
00501
00502
00503
00504
00505
00506
00507 }
00508
00509 }
00511 void TopValidation::efficiencies (TH1F *select, TH1F *path1,TH1F *path2, TH1F *path3, TH1F *path4,
00512 TH1F* path5, TH1F *path6, TH1F *path7, TH1F *path8,
00513 TH1F* path9, TH1F* path10, TH1F* path11, TH1F* path12)
00514 {
00515
00516
00517
00518
00519
00520
00521
00522
00523
00524
00525
00526
00527
00528
00529
00530
00531
00532
00533
00534
00535
00536 return;
00537
00538 }
00539
00540
00541
00542
00544
00545
00546 void
00547 TopValidation::beginJob(const edm::EventSetup&)
00548 {
00549
00550 dbe = edm::Service<DQMStore>().operator->();
00551
00552
00553 dbe->setCurrentFolder(triggerTag_);
00554
00555
00556
00557
00559
00560
00561 eta_trig_off_mu = dbe->book1D ("eta_trig_off_mu","eta_trig_off_mu",51,-2.1,2.1);
00562 eta_off_mu = dbe->book1D ("eta_off_mu","eta_off_mu",51,-2.1,2.1);
00563 pt_trig_off_mu = dbe->book1D ("pt_trig_off_mu","pt_trig_off_mu",120,0.0,150.0);
00564 pt_off_mu = dbe->book1D ("pt_off_mu","pt_off_mu",120,0.0,150.0);
00565
00566
00567
00568 eta_trig_off_el = dbe->book1D ("eta_trig_off_el","eta_trig_off_el",51,-2.1,2.1);
00569 eta_off_el = dbe->book1D ("eta_off_el","eta_off_el",51,-2.1,2.1);
00570 pt_trig_off_el = dbe->book1D ("pt_trig_off_el","pt_trig_off_el",120,0.0,150.0);
00571 pt_off_el = dbe->book1D ("pt_off_el","pt_off_el",120,0.0,150.0);
00572
00573 pt_trig_off_el_ni = dbe->book1D ("pt_trig_off_el_ni","pt_trig_off_el_ni",120,0.0,150.0);
00574 pt_trig_off_el_li = dbe->book1D ("pt_trig_off_el_li","pt_trig_off_el_li",120,0.0,150.0);
00575 eta_trig_off_el_ni = dbe->book1D ("eta_trig_off_el_ni","eta_trig_off_el_ni",51,-2.1,2.1);
00576 eta_trig_off_el_li = dbe->book1D ("eta_trig_off_el_li","eta_trig_off_el_li",51,-2.1,2.1);
00577
00578
00579
00580 eta_trig_off_dimu0 = dbe->book1D ("eta_trig_off_dimu0","eta_trig_off_dimu0",51,-2.1,2.1);
00581 eta_off_dimu0 = dbe->book1D ("eta_off_dimu0","eta_off_dimu0",51,-2.1,2.1);
00582 pt_trig_off_dimu0 = dbe->book1D ("pt_trig_off_dimu0","pt_trig_off_dimu0",120,0.0,150.0);
00583 pt_off_dimu0 = dbe->book1D ("pt_off_dimu0","pt_off_dimu0",120,0.0,150.0);
00584
00585 eta_trig_off_dimu1 = dbe->book1D ("eta_trig_off_dimu1","eta_trig_off_dimu1",51,-2.1,2.1);
00586 eta_off_dimu1 = dbe->book1D ("eta_off_dimu1","eta_off_dimu1",51,-2.1,2.1);
00587 pt_trig_off_dimu1 = dbe->book1D ("pt_trig_off_dimu1","pt_trig_off_dimu1",120,0.0,150.0);
00588 pt_off_dimu1 = dbe->book1D ("pt_off_dimu1","pt_off_dimu1",120,0.0,150.0);
00589
00590
00591
00592
00593 eta_trig_off_diel0 = dbe->book1D ("eta_trig_off_diel0","eta_trig_off_diel0",51,-2.1,2.1);
00594 eta_off_diel0 = dbe->book1D ("eta_off_diel0","eta_off_diel0",51,-2.1,2.1);
00595 pt_trig_off_diel0 = dbe->book1D ("pt_trig_off_diel0","pt_trig_off_diel0",120,0.0,150.0);
00596 pt_off_diel0 = dbe->book1D ("pt_off_diel0","pt_off_diel0",120,0.0,150.0);
00597
00598 eta_trig_off_diel1 = dbe->book1D ("eta_trig_off_diel1","eta_trig_off_diel1",51,-2.1,2.1);
00599 eta_off_diel1 = dbe->book1D ("eta_off_diel1","eta_off_diel1",51,-2.1,2.1);
00600 pt_trig_off_diel1 = dbe->book1D ("pt_trig_off_diel1","pt_trig_off_diel1",120,0.0,150.0);
00601 pt_off_diel1 = dbe->book1D ("pt_off_diel1","pt_off_diel1",120,0.0,150.0);
00602
00603
00604
00605
00606 eta_trig_off_emu_muon = dbe->book1D ("eta_trig_off_emu_muon","eta_trig_off_emu_muon",51,-2.1,2.1);
00607 eta_off_emu_muon = dbe->book1D ("eta_off_emu_muon","eta_off_emu_muon",51,-2.1,2.1);
00608 pt_trig_off_emu_muon = dbe->book1D ("pt_trig_off_emu_muon","pt_trig_off_emu_muon",120,0.0,150.0);
00609 pt_off_emu_muon = dbe->book1D ("pt_off_emu_muon","pt_off_emu_muon",120,0.0,150.0);
00610
00611 eta_trig_off_emu_electron = dbe->book1D ("eta_trig_off_emu_electron","eta_trig_off_emu_electron",51,-2.1,2.1);
00612 eta_off_emu_electron = dbe->book1D ("eta_off_emu_electron","eta_off_emu_electron",51,-2.1,2.1);
00613 pt_trig_off_emu_electron = dbe->book1D ("pt_trig_off_emu_electron","pt_trig_off_emu_electron",120,0.0,150.0);
00614 pt_off_emu_electron = dbe->book1D ("pt_off_emu_electron","pt_off_emu_electron",120,0.0,150.0);
00615
00616
00617
00618
00619
00620
00621
00622
00623
00624
00625
00626
00627
00628
00629
00630
00631
00632
00633
00634
00635
00636
00637
00638
00639
00640
00641
00642
00643
00644
00645
00646
00648
00649
00650
00651
00652
00653
00654
00655
00656
00658
00660
00661
00662
00663
00664
00665
00666
00667
00668
00669
00670
00671
00672
00673
00674
00675
00676
00677
00678
00679
00680
00681
00682
00683
00684
00685
00686
00687
00688
00689
00690
00691
00692
00693
00694
00695
00696
00697
00699
00700
00701
00702
00703
00704
00705
00706
00707
00708
00709
00710
00711
00712
00713
00714
00715
00716
00717
00718
00719
00720
00721
00722
00723
00724
00725
00726
00727
00728
00729
00730
00731
00732
00733
00734
00735
00736
00737
00738
00740
00741
00742
00743
00744
00745
00746
00747
00748
00749
00750
00751
00752
00753
00754
00755
00756
00757
00758
00759
00760
00761
00762
00763
00764
00765
00766
00767
00768
00769
00770
00771
00772
00773
00774
00775
00776
00777
00778
00780
00781
00782
00783
00784
00785
00786
00787
00788
00789
00790
00791
00792
00793
00794
00795
00796
00797
00798
00799
00800
00801
00802
00803
00804
00805
00806
00807
00808
00809
00810
00811
00812
00813
00814
00815
00816
00817
00818
00820
00821
00822
00823
00824
00825
00826
00827
00828
00829
00830
00831
00832
00833
00834
00835
00836
00837
00838
00839
00840
00841
00842
00843
00844
00845
00846
00847
00848
00849
00850
00851
00852
00853
00854
00855
00856
00857
00858
00859
00860
00861
00862
00863
00864 nEvents = 0;
00865 nAccepted = 0;
00866
00867 semilepEvent=0;
00868 dilepEvent=0;
00869 hadronicEvent=0;
00870
00871 dimuEvent=0;
00872 dielEvent=0;
00873 ditauEvent=0;
00874 muEvent=0;
00875 tauEvent=0;
00876 elecEvent=0;
00877 emuEvent=0;
00878 taumuEvent=0;
00879 tauelEvent=0;
00880
00881
00882
00883
00884
00885
00886 return ;
00887
00888
00889 }
00890
00891
00892 void
00893 TopValidation::endJob() {
00894
00895
00896
00897
00898 if(outputMEsInRootFile){
00899 dbe->showDirStructure();
00900 dbe->save(outputFileName);
00901 }
00902
00903
00904
00905
00906
00907
00908
00909
00910
00911
00912
00913
00914
00915
00916
00917
00918
00919
00920
00921
00922
00923
00924
00925 return ;
00926 }
00927
00928
00929 DEFINE_FWK_MODULE(TopValidation);