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