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