rivet is hosted by Hepforge, IPPP Durham
ATLAS_2011_S9041966.cc
Go to the documentation of this file.
00001 // -*- C++ -*-
00002 #include "Rivet/Analysis.hh"
00003 #include "Rivet/Tools/BinnedHistogram.hh"
00004 #include "Rivet/Projections/FinalState.hh"
00005 #include "Rivet/Projections/ChargedFinalState.hh"
00006 #include "Rivet/Projections/VisibleFinalState.hh"
00007 #include "Rivet/Projections/IdentifiedFinalState.hh"
00008 #include "Rivet/Projections/VetoedFinalState.hh"
00009 #include "Rivet/Projections/FastJets.hh"
00010 
00011 namespace Rivet {
00012 
00013 
00014   /// 1-lepton and 2-lepton search for first or second generation leptoquarks
00015   /// @todo Clean up the debug stuff
00016   class ATLAS_2011_S9041966 : public Analysis {
00017   public:
00018 
00019     /// @name Constructors etc.
00020     //@{
00021 
00022     /// Constructor
00023     ATLAS_2011_S9041966()
00024       : Analysis("ATLAS_2011_S9041966"),
00025         // DEBUG
00026         count(0), vetoe(0), Njetscut(0), //dilept(0),
00027         candmumujj(0), candeejj(0), //onelept(0),
00028         eTmisscut(0), candmvjj(0), candevjj(0),
00029         mumujj(0), eejj(0),
00030         mTonelept(0), MLQonelept(0), MtLQonelept(0), Stvonelept(0),
00031         mTev(0), MLQev(0), MtLQev(0), Stvev(0),
00032         muvjj(0), evjj(0), emuvjj(0),
00033         cande(0), candmu(0),
00034         tmpe(0), tmpmu(0),
00035         mumuZCR(0), eeZCR(0),
00036         munuW2CR(0), munuttCR(0),
00037         enuW2CR(0), enuttCR(0)
00038     {    }
00039 
00040     //@}
00041 
00042 
00043   public:
00044 
00045     /// @name Analysis methods
00046     //@{
00047 
00048     /// Book histograms and initialize projections before the run
00049     void init() {
00050 
00051       // projection to find the electrons
00052       IdentifiedFinalState elecs(Cuts::abseta < 2.47 && Cuts::pT > 20*GeV);
00053       elecs.acceptIdPair(PID::ELECTRON);
00054       addProjection(elecs, "elecs");
00055 
00056       // veto region electrons
00057       Cut vetocut = Cuts::absetaIn(1.35, 1.52);
00058       IdentifiedFinalState veto_elecs(vetocut && Cuts::pT > 10*GeV);
00059       veto_elecs.acceptIdPair(PID::ELECTRON);
00060       addProjection(veto_elecs, "veto_elecs");
00061 
00062       ///DEBUG
00063       // projection to find all leptons
00064       IdentifiedFinalState all_mu_e;
00065       all_mu_e.acceptIdPair(PID::MUON);
00066       all_mu_e.acceptIdPair(PID::ELECTRON);
00067       addProjection(all_mu_e, "all_mu_e"); //debug
00068 
00069       // projection to find the muons
00070       IdentifiedFinalState muons(Cuts::abseta < 2.4 && Cuts::pT > 20*GeV);
00071       muons.acceptIdPair(PID::MUON);
00072       addProjection(muons, "muons");
00073 
00074       // Jet finder
00075       VetoedFinalState vfs;
00076       vfs.addVetoPairDetail(PID::MUON, 20*GeV, 7000*GeV);
00077       vfs.addVetoPairDetail(PID::ELECTRON, 20*GeV, 7000*GeV);
00078       addProjection(FastJets(vfs, FastJets::ANTIKT, 0.4), "AntiKtJets04");
00079 
00080       // all tracks (to do deltaR with leptons)
00081       addProjection(ChargedFinalState(Cuts::abseta < 3 && Cuts::pT > 0.5*GeV), "cfs");
00082 
00083       // for pTmiss
00084       addProjection(VisibleFinalState(Cuts::abseta < 4.9), "vfs");
00085 
00086       /// Book histograms
00087       _count_mumujj = bookHisto1D("count_2muons_dijet", 1, 0., 1.);
00088       _count_eejj   = bookHisto1D("count_2elecs_dijet", 1, 0., 1.);
00089       _count_muvjj  = bookHisto1D("count_muon_neutrino_dijet", 1, 0., 1.);
00090       _count_evjj   = bookHisto1D("count_elec_neutrino_dijet", 1, 0., 1.);
00091 
00092       _hist_St_mumu = bookHisto1D("hist_mumujj_St", 10, 450., 1650.);
00093       _hist_St_ee   = bookHisto1D("hist_eejj_St", 10, 450., 1650.);
00094       _hist_MLQ_muv = bookHisto1D("hist_munujj_MLQ", 9, 150., 600.);
00095       _hist_MLQ_ev  = bookHisto1D("hist_enujj_MLQ", 9, 150., 600.);
00096 
00097       _hist_St_mumu_ZCR   = bookHisto1D("CR_Zjets_St_mumu", 40, 0., 800.);
00098       _hist_St_ee_ZCR     = bookHisto1D("CR_Zjets_Stee", 40, 0., 800.);
00099       _hist_MLQ_munu_W2CR = bookHisto1D("CR_W2jets_MLQ_munu", 20, 0., 400.);
00100       _hist_MLQ_enu_W2CR  = bookHisto1D("CR_W2jets_MLQ_enu", 20, 0., 400.);
00101       _hist_MLQ_munu_ttCR = bookHisto1D("CR_tt_MLQ_munu", 35, 0., 700.);
00102       _hist_MLQ_enu_ttCR  = bookHisto1D("CR_tt_MLQ_enu", 35, 0., 700.);
00103 
00104     }
00105 
00106 
00107 
00108     /// Perform the per-event analysis
00109     void analyze(const Event& event) {
00110 
00111       const double weight = event.weight();
00112 
00113       ///DEBUG
00114       count +=1; //cerr<< "Event " << count << '\n';
00115       // debug
00116 
00117       Particles veto_e = applyProjection<IdentifiedFinalState>(event, "veto_elecs").particles();
00118       if ( ! veto_e.empty() ) {
00119         MSG_DEBUG("electrons in veto region");
00120         vetoEvent;
00121       }
00122       ++vetoe;
00123 
00124       Jets cand_jets = applyProjection<FastJets>(event, "AntiKtJets04").jetsByPt(Cuts::pT > 20*GeV && Cuts::abseta < 2.8);
00125 
00126       Particles candtemp_e = applyProjection<IdentifiedFinalState>(event, "elecs").particlesByPt();
00127       Particles candtemp_mu = applyProjection<IdentifiedFinalState>(event,"muons").particlesByPt();
00128       Particles cand_mu;
00129       Particles cand_e;
00130       Particles vfs_particles = applyProjection<VisibleFinalState>(event, "vfs").particles();
00131 
00132 
00133       // pTcone around muon track
00134       foreach ( const Particle & mu, candtemp_mu ) {
00135         ++tmpmu;
00136         double pTinCone = -mu.pT();
00137         foreach ( const Particle & track, vfs_particles ) {
00138           if ( deltaR(mu.momentum(),track.momentum()) < 0.2 )
00139             pTinCone += track.pT();
00140         }
00141         if ( pTinCone/mu.pT() < 0.25 )
00142           ++candmu;
00143         cand_mu.push_back(mu);
00144       }
00145 
00146       // pTcone around electron
00147       foreach ( const Particle e, candtemp_e ) {
00148         ++tmpe;
00149         double pTinCone = -e.pT();
00150         foreach ( const Particle & track, vfs_particles ) {
00151           if ( deltaR(e.momentum(),track.momentum()) < 0.2 )
00152             pTinCone += track.pT();
00153         }
00154         if ( pTinCone/e.pT() < 0.2 )
00155           ++cande;
00156         cand_e.push_back(e);
00157       }
00158 
00159       if ( cand_e.empty() && cand_mu.empty() ) {
00160         //cerr<<" ->Event vetoed. No candidate lept"<<'\n';
00161         vetoEvent;
00162       }
00163 
00164 
00165       //DEBUG
00166       // else{
00167       // foreach (const Particle & mu,  cand_mu) {
00168       //   cerr << "cand mu: " << "Id " << mu.pid() << "      eta " << mu.eta() << "      pT " << mu.pT() << '\n';
00169       // }
00170       // foreach (const Particle & lepton,  cand_e) {
00171       //   cerr << "cand e: " << "Id " << lepton.pid() << "      eta " << lepton.eta() << "      pT " << lepton.pT() << '\n';
00172       // }} // debug
00173 
00174 
00175 
00176       // pTmiss
00177       FourMomentum pTmiss;
00178       foreach ( const Particle & p, vfs_particles ) {
00179         pTmiss -= p.momentum();
00180       }
00181       double eTmiss = pTmiss.pT();
00182 
00183 
00184       // discard jets that overlap with leptons
00185       Jets recon_jets;
00186       foreach ( const Jet& jet, cand_jets ) {
00187         bool away_from_lept = true;
00188         foreach ( const Particle e, cand_e ) {
00189           if ( deltaR(e.momentum(),jet.momentum()) <= 0.5 ) {
00190             away_from_lept = false;
00191             break;
00192           }
00193         }
00194         foreach ( const Particle & mu, cand_mu ) {
00195           if ( deltaR(mu.momentum(),jet.momentum()) <= 0.5 ) {
00196             away_from_lept = false;
00197             break;
00198           }
00199         }
00200         if ( away_from_lept )
00201           recon_jets.push_back( jet );
00202       }
00203 
00204 
00205 
00206       //DEBUG
00207       // cerr << " Num of recon jets: " << recon_jets.size() << '\n';
00208       // cerr << " Num of cand e: " << cand_e.size() << '\n';
00209       // cerr << " Num of cand mu: " << cand_mu.size() << '\n';
00210       //debug
00211 
00212 
00213 
00214       // ================ OBSERVABLES ================
00215 
00216 
00217       // At least 2 hard jets
00218       if ( recon_jets.size() < 2 ) {
00219         //cerr << " ->Event vetoed. Not enough hard jets." << '\n';
00220         vetoEvent;
00221       }
00222       ++Njetscut;
00223 
00224 
00225       // Initialize variables for observables
00226       double M_ll=0., M_LQ=0., St_ll=0., Mt_LQ=0., St_v=0., mT=0.;
00227       FourMomentum p_l, p_l1, p_l2, p_j[2];
00228       p_j[0] = recon_jets[0].momentum();
00229       p_j[1] = recon_jets[1].momentum();
00230 
00231       Particles dilept_pair;
00232       bool single_lept = false;
00233 
00234       if ( cand_mu.size() == 2 && cand_e.empty() ) {
00235         ++candmumujj;
00236         foreach ( const Particle& mu, cand_mu )
00237           dilept_pair.push_back(mu);
00238       }
00239       else if ( cand_e.size() == 2 && cand_mu.empty() ) {
00240         ++candeejj;
00241         foreach ( const Particle& e, cand_e )
00242           dilept_pair.push_back(e);
00243       }
00244       else if ( cand_mu.size() == 1 && cand_e.empty() ) {
00245         ++candmvjj;
00246         p_l = cand_mu[0].momentum();
00247         single_lept = true;
00248       }
00249       else if ( cand_e.size() == 1 && cand_mu.empty() ) {
00250         ++candevjj;
00251         p_l = cand_e[0].momentum();
00252         single_lept = true;
00253       }
00254 
00255       // Dilepton channel observables
00256       if ( ! dilept_pair.empty() ) {
00257 
00258         double E_l1, E_l2, E_j1, E_j2;
00259         double tmpM_LQ1[2], tmpM_LQ2[2], M_LQDiff1, M_LQDiff2;
00260 
00261         p_l1 = dilept_pair[0].momentum();
00262         p_l2 = dilept_pair[1].momentum();
00263         E_l1 = p_l1.E();
00264         E_l2 = p_l2.E();
00265 
00266         E_j1 = p_j[0].E();
00267         E_j2 = p_j[1].E();
00268 
00269         // Calculate possible leptoquark mass M_LQ and reconstruct average M_LQ
00270 
00271         tmpM_LQ1[0] = E_l1 + E_j1;
00272         tmpM_LQ1[1] = E_l2 + E_j2;
00273         M_LQDiff1 = abs( tmpM_LQ1[0] - tmpM_LQ1[1] );
00274 
00275         tmpM_LQ2[0] = E_l1 + E_j2;
00276         tmpM_LQ2[1] = E_l2 + E_j1;
00277         M_LQDiff2 = abs( tmpM_LQ2[0] - tmpM_LQ2[1] );
00278 
00279         if ( M_LQDiff1 > M_LQDiff2 )
00280           M_LQ = ( tmpM_LQ2[0] + tmpM_LQ2[1] ) / 2;
00281         else
00282           M_LQ = ( tmpM_LQ1[0] + tmpM_LQ1[1] ) / 2;
00283 
00284         // Calculate event transverse energy St
00285         St_ll = p_l1.pT() + p_l2.pT() + p_j[0].pT() + p_j[1].pT();
00286 
00287         // Dilept pair invariant mass M_ll
00288         M_ll = E_l1 + E_l2;
00289 
00290       }
00291 
00292       // 1-lepton channel observables
00293       else if ( single_lept ) {
00294 
00295         double tmpM_LQ[2], tmpMt_LQ[2], dPhi_j[2], M_LQDiff1, M_LQDiff2;
00296 
00297         // List of possible M_LQ, Mt_LQ pairings
00298 
00299         for ( int i = 0; i < 2; ++i ) {
00300           tmpM_LQ[i] = p_l.E() + p_j[i].E();
00301           dPhi_j[1-i] = deltaPhi( p_j[1-i].phi(), pTmiss.phi() );
00302           tmpMt_LQ[i] = sqrt( 2 * p_j[1-i].pT() * eTmiss * (1 - cos( dPhi_j[1-i] )) );
00303         }
00304 
00305         // Choose pairing that gives smallest absolute difference
00306 
00307         M_LQDiff1 = abs( tmpM_LQ[0] - tmpMt_LQ[0] );
00308         M_LQDiff2 = abs( tmpM_LQ[1] - tmpMt_LQ[1] );
00309 
00310         if ( M_LQDiff1 > M_LQDiff2 ) {
00311           M_LQ = tmpM_LQ[1];
00312           Mt_LQ = tmpMt_LQ[1];
00313         }
00314         else {
00315           M_LQ = tmpM_LQ[0];
00316           Mt_LQ = tmpMt_LQ[0];
00317         }
00318 
00319         // Event transverse energy
00320         St_v = p_l.pT() + eTmiss + p_j[0].pT() + p_j[1].pT();
00321 
00322         // Transverse mass mT
00323         double dPhi_l = deltaPhi( p_l.phi(), pTmiss.phi());
00324         mT = sqrt( 2 * p_l.pT() * eTmiss * (1 - cos(dPhi_l)) );
00325 
00326       }
00327 
00328 
00329       // ============== CONTROL REGIONS ===============
00330 
00331       // mumujj, Z control region
00332       if ( cand_mu.size() == 2 ) {
00333         if ( M_ll >= 81*GeV && M_ll <= 101*GeV ) {
00334           ++mumuZCR;
00335           _hist_St_mumu_ZCR->fill(St_ll, weight);
00336         }
00337       }
00338       // eejj, Z control region
00339       else if ( cand_e.size() == 2 ) {
00340         if ( M_ll >= 81*GeV && M_ll <= 101*GeV ) {
00341           ++eeZCR;
00342           _hist_St_ee_ZCR->fill(St_ll, weight);
00343 
00344         }
00345       }
00346 
00347       if ( cand_mu.size() == 1 ) {
00348         // munujj, W+2jets control region
00349         if ( recon_jets.size() == 2 &&
00350              mT >= 40*GeV && mT <= 150*GeV ) {
00351           ++munuW2CR;
00352           _hist_MLQ_munu_W2CR->fill(M_LQ, weight);
00353         }
00354         // munujj, tt control region
00355         if ( recon_jets.size() >= 4 &&
00356              recon_jets[0].pT() > 50*GeV && recon_jets[1].pT() > 40*GeV && recon_jets[2].pT() > 30*GeV ) {
00357           ++munuttCR;
00358           _hist_MLQ_munu_ttCR->fill(M_LQ, weight);
00359         }
00360       }
00361       if ( cand_e.size() == 1 ) {
00362         // enujj, W+2jets control region
00363         if ( recon_jets.size() == 2 &&
00364              mT >= 40*GeV && mT <= 150*GeV ) {
00365           ++enuW2CR;
00366           _hist_MLQ_enu_W2CR->fill(M_LQ, weight);
00367         }
00368         // enujj, tt control region
00369         if ( recon_jets.size() >= 4 &&
00370              recon_jets[0].pT() > 50*GeV && recon_jets[1].pT() > 40*GeV && recon_jets[2].pT() > 30*GeV ) {
00371           ++enuttCR;
00372           _hist_MLQ_enu_ttCR->fill(M_LQ, weight);
00373         }
00374       }
00375 
00376 
00377 
00378 
00379       // ========= PRESELECTION =======================
00380 
00381 
00382 
00383       // Single lepton channel cuts
00384       if ( single_lept ) {
00385 
00386         if ( eTmiss <= 25*GeV ) {
00387           //cerr << " ->Event vetoed. eTmiss=" << eTmiss << '\n';
00388           vetoEvent;
00389         }
00390         ++eTmisscut;
00391 
00392         if ( mT <= 40*GeV )
00393           vetoEvent;
00394 
00395         //++mTcut;
00396 
00397         // enujj channel
00398         if ( cand_e.size() == 1 && cand_mu.empty() ) {
00399 
00400           // Triangle cut
00401           double dPhi_jet1 = deltaPhi( recon_jets[0].phi(), pTmiss.phi() );
00402           double dPhi_jet2 = deltaPhi( recon_jets[1].phi(), pTmiss.phi() );
00403 
00404           if ( dPhi_jet1 <= 1.5 * (1 - eTmiss/45) ||
00405                dPhi_jet2 <= 1.5 * (1 - eTmiss/45) ) {
00406             ++emuvjj;
00407             vetoEvent;
00408           }
00409         }
00410       }
00411 
00412       // ==================== FILL ====================
00413 
00414 
00415       // mumujj channel
00416       if ( cand_mu.size() == 2 ) {
00417         if ( M_ll <= 120*GeV ||
00418              M_LQ <= 150*GeV ||
00419              p_l1.pT() <= 30*GeV || p_l2.pT() <= 30*GeV ||
00420              p_j[0].pT() <= 30*GeV || p_j[1].pT() <= 30*GeV ||
00421              St_ll <= 450*GeV ) {
00422           //cerr<<" ->Dilept event vetoed. Table 4 cuts." << '\n';
00423           vetoEvent;
00424         }
00425         else {
00426 
00427 
00428           ++mumujj;
00429           // cerr<< " ->MUMUJJ event selected." << '\n';
00430           _hist_St_mumu->fill(St_ll, weight);
00431           _count_mumujj->fill(0.5, weight);
00432 
00433         }
00434       }
00435       // eejj channel
00436       else if ( cand_e.size() == 2 ) {
00437         if ( M_ll <= 120*GeV ||
00438              M_LQ <= 150*GeV ||
00439              p_l1.pT() <= 30*GeV || p_l2.pT() <= 30*GeV ||
00440              p_j[0].pT() <= 30*GeV || p_j[1].pT() <= 30*GeV ||
00441              St_ll <= 450*GeV ) {
00442           //cerr<<" ->Dilept event vetoed. Table 4 cuts." << '\n';
00443           vetoEvent;
00444         }
00445         else {
00446 
00447           ++eejj;
00448           //cerr<< " ->EEJJ event selected." << '\n';
00449           _hist_St_ee->fill(St_ll, weight);
00450           _count_eejj->fill(0.5, weight);
00451 
00452         }
00453       }
00454 
00455 
00456       // muvjj channel
00457       else if ( cand_mu.size() == 1 ) {
00458 
00459 
00460 
00461         if (M_LQ<=150*GeV) {
00462           //cerr<<" ->muvjj event vetoed. Not enough M_LQ: " << M_LQ<< '\n';
00463           vetoEvent;
00464         }
00465         ++MLQonelept;
00466         if (Mt_LQ<=150*GeV) {
00467           //cerr<<" ->muvjj event vetoed. Not enough Mt_LQ: " << Mt_LQ<< '\n';
00468           vetoEvent;
00469         }
00470         ++MtLQonelept;
00471         if (St_v<=400*GeV) {
00472           //cerr<<" ->muvjj event vetoed. Not enough St_v: " << St_v<< '\n';
00473           vetoEvent;
00474         }
00475         ++Stvonelept;
00476         if (mT<=160*GeV) {
00477           //cerr<<" ->muvjj event vetoed. Not enough mT: " << mT<<'\n';
00478           vetoEvent;
00479         }
00480         ++mTonelept;
00481         //else {
00482         ++muvjj;
00483         //cerr<< " ->MUVJJ event selected." << '\n';
00484         _hist_MLQ_muv->fill(M_LQ, weight);
00485         _count_muvjj->fill(0.5, weight);
00486 
00487         //}
00488       }
00489 
00490       // evjj channel
00491       else if ( cand_e.size() == 1 ) {
00492 
00493         if (M_LQ<=180*GeV) {
00494           //cerr<<" ->evjj event vetoed. Not enough M_LQ: " << M_LQ<< '\n';
00495           vetoEvent;
00496         }
00497         ++MLQev;
00498         if (Mt_LQ<=180*GeV) {
00499           //cerr<<" ->evjj event vetoed. Not enough Mt_LQ: " << Mt_LQ<< '\n';
00500           vetoEvent;
00501         }
00502         ++MtLQev;
00503         if (St_v<=410*GeV) {
00504           //cerr<<" ->evjj event vetoed. Not enough St_v: " << St_v<< '\n';
00505           vetoEvent;
00506         }
00507         ++Stvev;
00508         if (mT<=200*GeV) {
00509           //cerr<<" ->evjj event vetoed. Not enough mT: " << mT<<'\n';
00510           vetoEvent;
00511         }
00512         ++mTev;
00513         //else {
00514         ++evjj;
00515         //cerr<< " ->EVJJ event selected." << '\n';
00516         _hist_MLQ_ev->fill(M_LQ, weight);
00517         _count_evjj->fill(0.5, weight);
00518 
00519 
00520 
00521         //      if ( mT <= 200*GeV ||
00522         //              M_LQ <= 180*GeV ||
00523         //              Mt_LQ <= 180*GeV ||
00524         //              St_v <= 410*GeV ) {
00525         // cerr<<" ->evjj event vetoed. Doesn't pass table 4 cuts." << '\n';
00526         //        vetoEvent;
00527         //      }
00528         //      else {
00529         // ++evjj;
00530         // cerr<< " ->EVJJ event selected." << '\n';
00531         // _hist_MLQ_ev->fill(M_LQ, weight);
00532         //          _count_evjj->fill(0.5, weight);
00533 
00534         //      }
00535 
00536 
00537       }
00538 
00539 
00540     }
00541 
00542     //@}
00543 
00544 
00545     void finalize() {
00546       // cerr << '\n' << "Of " << count << " events, saw "
00547       // << vetoe << " (after veto region cut), "
00548       // << Njetscut << " (after 2jet req). "
00549       // << '\n'
00550       // << "For " << dilept << " dilept events: "
00551       // << candmumujj << " cand mumujj events, "
00552       // << candeejj << " cand eejj events."
00553       // << '\n'
00554       // << "For " << onelept << " onelept events: "
00555       // << candmvjj << " preselected mvjj events, "
00556       // << candevjj << " preselected evjj events; "
00557       // << eTmisscut << " (eTmiss req); "
00558       // << emuvjj << " leftover; "
00559       // << MLQonelept << " (muvjj M_LQ cut), "
00560       // << MtLQonelept << " (muvjj Mt_LQ cut), "
00561       // << Stvonelept << " (muvjj St_v cut), "
00562       // << mTonelept << " (muvjj mT cut); "
00563       // << MLQev << " (evjj M_LQ cut), "
00564       // << MtLQev << " (evjj Mt_LQ cut), "
00565       // << Stvev << " (evjj St_v cut), "
00566       // << mTev << " (evjj mT cut). "
00567       // << '\n'<<'\n'
00568       // ;
00569 
00570       // cerr << "CR - " << "mumu Z: " << mumuZCR << "  ee Z: " << eeZCR << "  munu W+2jets: " << munuW2CR << "  munu tt: " << munuttCR << "  enu W+2jets: " << enuW2CR << "  enu tt: " << enuttCR << '\n';
00571 
00572       // cerr << "mumujj: " << mumujj << "      eejj: " << eejj << "      muvjj: " << muvjj << "      evjj: " << evjj << '\n';
00573 
00574 
00575       scale( _hist_St_ee, 120. * 35. * crossSection()/sumOfWeights() );
00576       scale( _hist_St_mumu, 120. * 35. * crossSection()/sumOfWeights() );
00577       scale( _hist_MLQ_muv, 50. * 35. * crossSection()/sumOfWeights() );
00578       scale( _hist_MLQ_ev, 50. * 35. * crossSection()/sumOfWeights() );
00579 
00580 
00581 
00582       scale( _hist_St_mumu_ZCR, 20. * 35. * crossSection()/sumOfWeights() );
00583       scale( _hist_St_ee_ZCR, 20. * 35. * crossSection()/sumOfWeights() );
00584       scale( _hist_MLQ_munu_W2CR, 20. * 35. * crossSection()/sumOfWeights() );
00585       scale( _hist_MLQ_enu_W2CR, 20. * 35. * crossSection()/sumOfWeights() );
00586       scale( _hist_MLQ_munu_ttCR, 20. * 35. * crossSection()/sumOfWeights() );
00587       scale( _hist_MLQ_enu_ttCR, 20. * 35. * crossSection()/sumOfWeights() );
00588 
00589       /*
00590         scale( _hist_eTmiss_mu, binwidth*luminosity* crossSection()/sumOfWeights() );
00591       */
00592 
00593     }
00594 
00595   private:
00596 
00597     /// @name Histograms
00598     //@{
00599     Histo1DPtr _count_mumujj;
00600     Histo1DPtr _count_eejj;
00601     Histo1DPtr _count_muvjj;
00602     Histo1DPtr _count_evjj;
00603 
00604     Histo1DPtr _hist_St_mumu;
00605     Histo1DPtr _hist_St_ee;
00606     Histo1DPtr _hist_MLQ_muv;
00607     Histo1DPtr _hist_MLQ_ev;
00608 
00609     Histo1DPtr _hist_St_mumu_ZCR;
00610     Histo1DPtr _hist_St_ee_ZCR;
00611     Histo1DPtr _hist_MLQ_munu_W2CR;
00612     Histo1DPtr _hist_MLQ_enu_W2CR;
00613     Histo1DPtr _hist_MLQ_munu_ttCR;
00614     Histo1DPtr _hist_MLQ_enu_ttCR;
00615 
00616 
00617 
00618 
00619     //@}
00620 
00621 
00622     // DEBUG VARIABLES
00623     int count;
00624     int vetoe;
00625     int Njetscut;
00626     //int dilept;
00627     int candmumujj;
00628     int candeejj;
00629     //int onelept;
00630     int eTmisscut;
00631     int candmvjj;
00632     int candevjj;
00633     int mumujj;
00634     int eejj;
00635     int mTonelept;
00636     int MLQonelept;
00637     int MtLQonelept;
00638     int Stvonelept;
00639     int mTev;
00640     int MLQev;
00641     int MtLQev;
00642     int Stvev;
00643     int muvjj;
00644     int evjj;
00645     int emuvjj;
00646     int cande;
00647     int candmu;
00648     int tmpe;
00649     int tmpmu;
00650     int mumuZCR;
00651     int eeZCR;
00652     int munuW2CR;
00653     int munuttCR;
00654     int enuW2CR;
00655     int enuttCR;
00656 
00657   };
00658 
00659 
00660 
00661   // The hook for the plugin system
00662   DECLARE_RIVET_PLUGIN(ATLAS_2011_S9041966);
00663 
00664 }