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