rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

ATLAS_2011_S9041966

1-lepton and 2-lepton search for first or second generation leptoquarks
Experiment: ATLAS (LHC)
Inspire ID: 897002
Status: OBSOLETE
Authors:
  • Angela Chen
References: Beams: p+ p+
Beam energies: (3500.0, 3500.0) GeV
Run details:
  • BSM signal events at 7000 GeV.

Single and dilepton search for first and second generation scalar leptoquarks by ATLAS at 7 TeV. Event counts in four signal regions (single lepton and dilepton for first and second generation) are implemented as one-bin histograms. Histograms for event transverse energy are implemented for dilepton signal regions and histograms for leptoquark mass are implemented for single lepton signal regions. Histograms for observables in six control regions are implemented.

Source code: ATLAS_2011_S9041966.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/FinalState.hh"
  4#include "Rivet/Projections/ChargedFinalState.hh"
  5#include "Rivet/Projections/VisibleFinalState.hh"
  6#include "Rivet/Projections/IdentifiedFinalState.hh"
  7#include "Rivet/Projections/VetoedFinalState.hh"
  8#include "Rivet/Projections/FastJets.hh"
  9
 10namespace Rivet {
 11
 12
 13  /// 1-lepton and 2-lepton search for first or second generation leptoquarks
 14  class ATLAS_2011_S9041966 : public Analysis {
 15  public:
 16
 17    /// Constructor
 18    ATLAS_2011_S9041966()
 19      : Analysis("ATLAS_2011_S9041966"),
 20        // DEBUG
 21        count(0), vetoe(0), Njetscut(0), //dilept(0),
 22        candmumujj(0), candeejj(0), //onelept(0),
 23        eTmisscut(0), candmvjj(0), candevjj(0),
 24        mumujj(0), eejj(0),
 25        mTonelept(0), MLQonelept(0), MtLQonelept(0), Stvonelept(0),
 26        mTev(0), MLQev(0), MtLQev(0), Stvev(0),
 27        muvjj(0), evjj(0), emuvjj(0),
 28        cande(0), candmu(0),
 29        tmpe(0), tmpmu(0),
 30        mumuZCR(0), eeZCR(0),
 31        munuW2CR(0), munuttCR(0),
 32        enuW2CR(0), enuttCR(0)
 33    {    }
 34
 35
 36    /// Book histograms and initialize projections before the run
 37    void init() {
 38
 39      // projection to find the electrons
 40      IdentifiedFinalState elecs(Cuts::abseta < 2.47 && Cuts::pT > 20*GeV);
 41      elecs.acceptIdPair(PID::ELECTRON);
 42      declare(elecs, "elecs");
 43
 44      // veto region electrons
 45      Cut vetocut = Cuts::absetaIn(1.35, 1.52);
 46      IdentifiedFinalState veto_elecs(vetocut && Cuts::pT > 10*GeV);
 47      veto_elecs.acceptIdPair(PID::ELECTRON);
 48      declare(veto_elecs, "veto_elecs");
 49
 50      /// @todo Clean up DEBUG
 51      // projection to find all leptons
 52      IdentifiedFinalState all_mu_e;
 53      all_mu_e.acceptIdPair(PID::MUON);
 54      all_mu_e.acceptIdPair(PID::ELECTRON);
 55      declare(all_mu_e, "all_mu_e"); //debug
 56
 57      // projection to find the muons
 58      IdentifiedFinalState muons(Cuts::abseta < 2.4 && Cuts::pT > 20*GeV);
 59      muons.acceptIdPair(PID::MUON);
 60      declare(muons, "muons");
 61
 62      // Jet finder
 63      VetoedFinalState vfs;
 64      vfs.addVetoPairDetail(PID::MUON, 20*GeV, 7000*GeV);
 65      vfs.addVetoPairDetail(PID::ELECTRON, 20*GeV, 7000*GeV);
 66      declare(FastJets(vfs, FastJets::ANTIKT, 0.4), "AntiKtJets04");
 67
 68      // all tracks (to do deltaR with leptons)
 69      declare(ChargedFinalState(Cuts::abseta < 3 && Cuts::pT > 0.5*GeV), "cfs");
 70
 71      // for pTmiss
 72      declare(VisibleFinalState(Cuts::abseta < 4.9), "vfs");
 73
 74      /// Book histograms
 75      book(_count_mumujj ,"count_2muons_dijet", 1, 0., 1.);
 76      book(_count_eejj   ,"count_2elecs_dijet", 1, 0., 1.);
 77      book(_count_muvjj  ,"count_muon_neutrino_dijet", 1, 0., 1.);
 78      book(_count_evjj   ,"count_elec_neutrino_dijet", 1, 0., 1.);
 79
 80      book(_hist_St_mumu ,"hist_mumujj_St", 10, 450., 1650.);
 81      book(_hist_St_ee   ,"hist_eejj_St", 10, 450., 1650.);
 82      book(_hist_MLQ_muv ,"hist_munujj_MLQ", 9, 150., 600.);
 83      book(_hist_MLQ_ev  ,"hist_enujj_MLQ", 9, 150., 600.);
 84
 85      book(_hist_St_mumu_ZCR   ,"CR_Zjets_St_mumu", 40, 0., 800.);
 86      book(_hist_St_ee_ZCR     ,"CR_Zjets_Stee", 40, 0., 800.);
 87      book(_hist_MLQ_munu_W2CR ,"CR_W2jets_MLQ_munu", 20, 0., 400.);
 88      book(_hist_MLQ_enu_W2CR  ,"CR_W2jets_MLQ_enu", 20, 0., 400.);
 89      book(_hist_MLQ_munu_ttCR ,"CR_tt_MLQ_munu", 35, 0., 700.);
 90      book(_hist_MLQ_enu_ttCR  ,"CR_tt_MLQ_enu", 35, 0., 700.);
 91
 92    }
 93
 94
 95
 96    /// Perform the per-event analysis
 97    void analyze(const Event& event) {
 98
 99      const double weight = 1.0;
100
101      ///DEBUG
102      count +=1; //cerr<< "Event " << count << '\n';
103      // debug
104
105      Particles veto_e = apply<IdentifiedFinalState>(event, "veto_elecs").particles();
106      if ( ! veto_e.empty() ) {
107        MSG_DEBUG("electrons in veto region");
108        vetoEvent;
109      }
110      ++vetoe;
111
112      Jets cand_jets = apply<FastJets>(event, "AntiKtJets04").jetsByPt(Cuts::pT > 20*GeV && Cuts::abseta < 2.8);
113
114      Particles candtemp_e = apply<IdentifiedFinalState>(event, "elecs").particlesByPt();
115      Particles candtemp_mu = apply<IdentifiedFinalState>(event,"muons").particlesByPt();
116      Particles cand_mu;
117      Particles cand_e;
118      Particles vfs_particles = apply<VisibleFinalState>(event, "vfs").particles();
119
120
121      // pTcone around muon track
122      for ( const Particle & mu : candtemp_mu ) {
123        ++tmpmu;
124        double pTinCone = -mu.pT();
125        for ( const Particle & track : vfs_particles ) {
126          if ( deltaR(mu.momentum(),track.momentum()) < 0.2 )
127            pTinCone += track.pT();
128        }
129        if ( pTinCone/mu.pT() < 0.25 )
130          ++candmu;
131        cand_mu.push_back(mu);
132      }
133
134      // pTcone around electron
135      for ( const Particle & e : candtemp_e ) {
136        ++tmpe;
137        double pTinCone = -e.pT();
138        for ( const Particle & track : vfs_particles ) {
139          if ( deltaR(e.momentum(),track.momentum()) < 0.2 )
140            pTinCone += track.pT();
141        }
142        if ( pTinCone/e.pT() < 0.2 )
143          ++cande;
144        cand_e.push_back(e);
145      }
146
147      if ( cand_e.empty() && cand_mu.empty() ) {
148        //cerr<<" ->Event vetoed. No candidate lept"<<'\n';
149        vetoEvent;
150      }
151
152
153      //DEBUG
154      // else{
155      // for (const Particle & mu,  cand_mu) {
156      //   cerr << "cand mu: " << "Id " << mu.pid() << "      eta " << mu.eta() << "      pT " << mu.pT() << '\n';
157      // }
158      // for (const Particle & lepton,  cand_e) {
159      //   cerr << "cand e: " << "Id " << lepton.pid() << "      eta " << lepton.eta() << "      pT " << lepton.pT() << '\n';
160      // }} // debug
161
162
163
164      // pTmiss
165      FourMomentum pTmiss;
166      for ( const Particle & p : vfs_particles ) {
167        pTmiss -= p.momentum();
168      }
169      double eTmiss = pTmiss.pT();
170
171
172      // discard jets that overlap with leptons
173      Jets recon_jets;
174      for ( const Jet& jet : cand_jets ) {
175        bool away_from_lept = true;
176        for ( const Particle & e : cand_e ) {
177          if ( deltaR(e.momentum(),jet.momentum()) <= 0.5 ) {
178            away_from_lept = false;
179            break;
180          }
181        }
182        for ( const Particle & mu : cand_mu ) {
183          if ( deltaR(mu.momentum(),jet.momentum()) <= 0.5 ) {
184            away_from_lept = false;
185            break;
186          }
187        }
188        if ( away_from_lept )
189          recon_jets.push_back( jet );
190      }
191
192
193
194      //DEBUG
195      // cerr << " Num of recon jets: " << recon_jets.size() << '\n';
196      // cerr << " Num of cand e: " << cand_e.size() << '\n';
197      // cerr << " Num of cand mu: " << cand_mu.size() << '\n';
198      //debug
199
200
201
202      // ================ OBSERVABLES ================
203
204
205      // At least 2 hard jets
206      if ( recon_jets.size() < 2 ) {
207        //cerr << " ->Event vetoed. Not enough hard jets." << '\n';
208        vetoEvent;
209      }
210      ++Njetscut;
211
212
213      // Initialize variables for observables
214      double M_ll=0., M_LQ=0., St_ll=0., Mt_LQ=0., St_v=0., mT=0.;
215      FourMomentum p_l, p_l1, p_l2, p_j[2];
216      p_j[0] = recon_jets[0].momentum();
217      p_j[1] = recon_jets[1].momentum();
218
219      Particles dilept_pair;
220      bool single_lept = false;
221
222      if ( cand_mu.size() == 2 && cand_e.empty() ) {
223        ++candmumujj;
224        for ( const Particle& mu : cand_mu )
225          dilept_pair.push_back(mu);
226      }
227      else if ( cand_e.size() == 2 && cand_mu.empty() ) {
228        ++candeejj;
229        for ( const Particle& e : cand_e )
230          dilept_pair.push_back(e);
231      }
232      else if ( cand_mu.size() == 1 && cand_e.empty() ) {
233        ++candmvjj;
234        p_l = cand_mu[0].momentum();
235        single_lept = true;
236      }
237      else if ( cand_e.size() == 1 && cand_mu.empty() ) {
238        ++candevjj;
239        p_l = cand_e[0].momentum();
240        single_lept = true;
241      }
242
243      // Dilepton channel observables
244      if ( ! dilept_pair.empty() ) {
245
246        double E_l1, E_l2, E_j1, E_j2;
247        double tmpM_LQ1[2], tmpM_LQ2[2], M_LQDiff1, M_LQDiff2;
248
249        p_l1 = dilept_pair[0].momentum();
250        p_l2 = dilept_pair[1].momentum();
251        E_l1 = p_l1.E();
252        E_l2 = p_l2.E();
253
254        E_j1 = p_j[0].E();
255        E_j2 = p_j[1].E();
256
257        // Calculate possible leptoquark mass M_LQ and reconstruct average M_LQ
258
259        tmpM_LQ1[0] = E_l1 + E_j1;
260        tmpM_LQ1[1] = E_l2 + E_j2;
261        M_LQDiff1 = abs( tmpM_LQ1[0] - tmpM_LQ1[1] );
262
263        tmpM_LQ2[0] = E_l1 + E_j2;
264        tmpM_LQ2[1] = E_l2 + E_j1;
265        M_LQDiff2 = abs( tmpM_LQ2[0] - tmpM_LQ2[1] );
266
267        if ( M_LQDiff1 > M_LQDiff2 )
268          M_LQ = ( tmpM_LQ2[0] + tmpM_LQ2[1] ) / 2;
269        else
270          M_LQ = ( tmpM_LQ1[0] + tmpM_LQ1[1] ) / 2;
271
272        // Calculate event transverse energy St
273        St_ll = p_l1.pT() + p_l2.pT() + p_j[0].pT() + p_j[1].pT();
274
275        // Dilept pair invariant mass M_ll
276        M_ll = E_l1 + E_l2;
277
278      }
279
280      // 1-lepton channel observables
281      else if ( single_lept ) {
282
283        double tmpM_LQ[2], tmpMt_LQ[2], dPhi_j[2], M_LQDiff1, M_LQDiff2;
284
285        // List of possible M_LQ, Mt_LQ pairings
286
287        for ( int i = 0; i < 2; ++i ) {
288          tmpM_LQ[i] = p_l.E() + p_j[i].E();
289          dPhi_j[1-i] = deltaPhi( p_j[1-i].phi(), pTmiss.phi() );
290          tmpMt_LQ[i] = sqrt( 2 * p_j[1-i].pT() * eTmiss * (1 - cos( dPhi_j[1-i] )) );
291        }
292
293        // Choose pairing that gives smallest absolute difference
294
295        M_LQDiff1 = abs( tmpM_LQ[0] - tmpMt_LQ[0] );
296        M_LQDiff2 = abs( tmpM_LQ[1] - tmpMt_LQ[1] );
297
298        if ( M_LQDiff1 > M_LQDiff2 ) {
299          M_LQ = tmpM_LQ[1];
300          Mt_LQ = tmpMt_LQ[1];
301        }
302        else {
303          M_LQ = tmpM_LQ[0];
304          Mt_LQ = tmpMt_LQ[0];
305        }
306
307        // Event transverse energy
308        St_v = p_l.pT() + eTmiss + p_j[0].pT() + p_j[1].pT();
309
310        // Transverse mass mT
311        double dPhi_l = deltaPhi( p_l.phi(), pTmiss.phi());
312        mT = sqrt( 2 * p_l.pT() * eTmiss * (1 - cos(dPhi_l)) );
313
314      }
315
316
317      // ============== CONTROL REGIONS ===============
318
319      // mumujj, Z control region
320      if ( cand_mu.size() == 2 ) {
321        if ( M_ll >= 81*GeV && M_ll <= 101*GeV ) {
322          ++mumuZCR;
323          _hist_St_mumu_ZCR->fill(St_ll, weight);
324        }
325      }
326      // eejj, Z control region
327      else if ( cand_e.size() == 2 ) {
328        if ( M_ll >= 81*GeV && M_ll <= 101*GeV ) {
329          ++eeZCR;
330          _hist_St_ee_ZCR->fill(St_ll, weight);
331
332        }
333      }
334
335      if ( cand_mu.size() == 1 ) {
336        // munujj, W+2jets control region
337        if ( recon_jets.size() == 2 &&
338             mT >= 40*GeV && mT <= 150*GeV ) {
339          ++munuW2CR;
340          _hist_MLQ_munu_W2CR->fill(M_LQ, weight);
341        }
342        // munujj, tt control region
343        if ( recon_jets.size() >= 4 &&
344             recon_jets[0].pT() > 50*GeV && recon_jets[1].pT() > 40*GeV && recon_jets[2].pT() > 30*GeV ) {
345          ++munuttCR;
346          _hist_MLQ_munu_ttCR->fill(M_LQ, weight);
347        }
348      }
349      if ( cand_e.size() == 1 ) {
350        // enujj, W+2jets control region
351        if ( recon_jets.size() == 2 &&
352             mT >= 40*GeV && mT <= 150*GeV ) {
353          ++enuW2CR;
354          _hist_MLQ_enu_W2CR->fill(M_LQ, weight);
355        }
356        // enujj, tt control region
357        if ( recon_jets.size() >= 4 &&
358             recon_jets[0].pT() > 50*GeV && recon_jets[1].pT() > 40*GeV && recon_jets[2].pT() > 30*GeV ) {
359          ++enuttCR;
360          _hist_MLQ_enu_ttCR->fill(M_LQ, weight);
361        }
362      }
363
364
365
366
367      // ========= PRESELECTION =======================
368
369
370
371      // Single lepton channel cuts
372      if ( single_lept ) {
373
374        if ( eTmiss <= 25*GeV ) {
375          //cerr << " ->Event vetoed. eTmiss=" << eTmiss << '\n';
376          vetoEvent;
377        }
378        ++eTmisscut;
379
380        if ( mT <= 40*GeV )
381          vetoEvent;
382
383        //++mTcut;
384
385        // enujj channel
386        if ( cand_e.size() == 1 && cand_mu.empty() ) {
387
388          // Triangle cut
389          double dPhi_jet1 = deltaPhi( recon_jets[0].phi(), pTmiss.phi() );
390          double dPhi_jet2 = deltaPhi( recon_jets[1].phi(), pTmiss.phi() );
391
392          if ( dPhi_jet1 <= 1.5 * (1 - eTmiss/45) ||
393               dPhi_jet2 <= 1.5 * (1 - eTmiss/45) ) {
394            ++emuvjj;
395            vetoEvent;
396          }
397        }
398      }
399
400      // ==================== FILL ====================
401
402
403      // mumujj channel
404      if ( cand_mu.size() == 2 ) {
405        if ( M_ll <= 120*GeV ||
406             M_LQ <= 150*GeV ||
407             p_l1.pT() <= 30*GeV || p_l2.pT() <= 30*GeV ||
408             p_j[0].pT() <= 30*GeV || p_j[1].pT() <= 30*GeV ||
409             St_ll <= 450*GeV ) {
410          //cerr<<" ->Dilept event vetoed. Table 4 cuts." << '\n';
411          vetoEvent;
412        }
413        else {
414
415
416          ++mumujj;
417          // cerr<< " ->MUMUJJ event selected." << '\n';
418          _hist_St_mumu->fill(St_ll, weight);
419          _count_mumujj->fill(0.5, weight);
420
421        }
422      }
423      // eejj channel
424      else if ( cand_e.size() == 2 ) {
425        if ( M_ll <= 120*GeV ||
426             M_LQ <= 150*GeV ||
427             p_l1.pT() <= 30*GeV || p_l2.pT() <= 30*GeV ||
428             p_j[0].pT() <= 30*GeV || p_j[1].pT() <= 30*GeV ||
429             St_ll <= 450*GeV ) {
430          //cerr<<" ->Dilept event vetoed. Table 4 cuts." << '\n';
431          vetoEvent;
432        }
433        else {
434
435          ++eejj;
436          //cerr<< " ->EEJJ event selected." << '\n';
437          _hist_St_ee->fill(St_ll, weight);
438          _count_eejj->fill(0.5, weight);
439
440        }
441      }
442
443
444      // muvjj channel
445      else if ( cand_mu.size() == 1 ) {
446
447
448
449        if (M_LQ<=150*GeV) {
450          //cerr<<" ->muvjj event vetoed. Not enough M_LQ: " << M_LQ<< '\n';
451          vetoEvent;
452        }
453        ++MLQonelept;
454        if (Mt_LQ<=150*GeV) {
455          //cerr<<" ->muvjj event vetoed. Not enough Mt_LQ: " << Mt_LQ<< '\n';
456          vetoEvent;
457        }
458        ++MtLQonelept;
459        if (St_v<=400*GeV) {
460          //cerr<<" ->muvjj event vetoed. Not enough St_v: " << St_v<< '\n';
461          vetoEvent;
462        }
463        ++Stvonelept;
464        if (mT<=160*GeV) {
465          //cerr<<" ->muvjj event vetoed. Not enough mT: " << mT<<'\n';
466          vetoEvent;
467        }
468        ++mTonelept;
469        //else {
470        ++muvjj;
471        //cerr<< " ->MUVJJ event selected." << '\n';
472        _hist_MLQ_muv->fill(M_LQ, weight);
473        _count_muvjj->fill(0.5, weight);
474
475        //}
476      }
477
478      // evjj channel
479      else if ( cand_e.size() == 1 ) {
480
481        if (M_LQ<=180*GeV) {
482          //cerr<<" ->evjj event vetoed. Not enough M_LQ: " << M_LQ<< '\n';
483          vetoEvent;
484        }
485        ++MLQev;
486        if (Mt_LQ<=180*GeV) {
487          //cerr<<" ->evjj event vetoed. Not enough Mt_LQ: " << Mt_LQ<< '\n';
488          vetoEvent;
489        }
490        ++MtLQev;
491        if (St_v<=410*GeV) {
492          //cerr<<" ->evjj event vetoed. Not enough St_v: " << St_v<< '\n';
493          vetoEvent;
494        }
495        ++Stvev;
496        if (mT<=200*GeV) {
497          //cerr<<" ->evjj event vetoed. Not enough mT: " << mT<<'\n';
498          vetoEvent;
499        }
500        ++mTev;
501        //else {
502        ++evjj;
503        //cerr<< " ->EVJJ event selected." << '\n';
504        _hist_MLQ_ev->fill(M_LQ, weight);
505        _count_evjj->fill(0.5, weight);
506
507
508
509        //      if ( mT <= 200*GeV ||
510        //              M_LQ <= 180*GeV ||
511        //              Mt_LQ <= 180*GeV ||
512        //              St_v <= 410*GeV ) {
513        // cerr<<" ->evjj event vetoed. Doesn't pass table 4 cuts." << '\n';
514        //        vetoEvent;
515        //      }
516        //      else {
517        // ++evjj;
518        // cerr<< " ->EVJJ event selected." << '\n';
519        // _hist_MLQ_ev->fill(M_LQ, weight);
520        //          _count_evjj->fill(0.5, weight);
521
522        //      }
523
524
525      }
526
527
528    }
529
530    //@}
531
532
533    void finalize() {
534      // cerr << '\n' << "Of " << count << " events, saw "
535      // << vetoe << " (after veto region cut), "
536      // << Njetscut << " (after 2jet req). "
537      // << '\n'
538      // << "For " << dilept << " dilept events: "
539      // << candmumujj << " cand mumujj events, "
540      // << candeejj << " cand eejj events."
541      // << '\n'
542      // << "For " << onelept << " onelept events: "
543      // << candmvjj << " preselected mvjj events, "
544      // << candevjj << " preselected evjj events; "
545      // << eTmisscut << " (eTmiss req); "
546      // << emuvjj << " leftover; "
547      // << MLQonelept << " (muvjj M_LQ cut), "
548      // << MtLQonelept << " (muvjj Mt_LQ cut), "
549      // << Stvonelept << " (muvjj St_v cut), "
550      // << mTonelept << " (muvjj mT cut); "
551      // << MLQev << " (evjj M_LQ cut), "
552      // << MtLQev << " (evjj Mt_LQ cut), "
553      // << Stvev << " (evjj St_v cut), "
554      // << mTev << " (evjj mT cut). "
555      // << '\n'<<'\n'
556      // ;
557      // cerr << "CR - " << "mumu Z: " << mumuZCR << " ee Z: " << eeZCR << "
558      // munu W+2jets: " << munuW2CR << " munu tt: " << munuttCR << " enu
559      // W+2jets: " << enuW2CR << " enu tt: " << enuttCR << '\n';
560      // cerr << "mumujj: " << mumujj << " eejj: " << eejj << " muvjj: " <<
561      // muvjj << " evjj: " << evjj << '\n';
562
563      scale( _hist_St_ee, 120. * 35. * crossSection()/sumOfWeights() );
564      scale( _hist_St_mumu, 120. * 35. * crossSection()/sumOfWeights() );
565      scale( _hist_MLQ_muv, 50. * 35. * crossSection()/sumOfWeights() );
566      scale( _hist_MLQ_ev, 50. * 35. * crossSection()/sumOfWeights() );
567
568      scale( _hist_St_mumu_ZCR, 20. * 35. * crossSection()/sumOfWeights() );
569      scale( _hist_St_ee_ZCR, 20. * 35. * crossSection()/sumOfWeights() );
570      scale( _hist_MLQ_munu_W2CR, 20. * 35. * crossSection()/sumOfWeights() );
571      scale( _hist_MLQ_enu_W2CR, 20. * 35. * crossSection()/sumOfWeights() );
572      scale( _hist_MLQ_munu_ttCR, 20. * 35. * crossSection()/sumOfWeights() );
573      scale( _hist_MLQ_enu_ttCR, 20. * 35. * crossSection()/sumOfWeights() );
574
575      // scale( _hist_eTmiss_mu, binwidth*luminosity* crossSection()/sumOfWeights() );
576
577    }
578
579
580  private:
581
582    /// @name Histograms
583    /// @{
584    Histo1DPtr _count_mumujj;
585    Histo1DPtr _count_eejj;
586    Histo1DPtr _count_muvjj;
587    Histo1DPtr _count_evjj;
588
589    Histo1DPtr _hist_St_mumu;
590    Histo1DPtr _hist_St_ee;
591    Histo1DPtr _hist_MLQ_muv;
592    Histo1DPtr _hist_MLQ_ev;
593
594    Histo1DPtr _hist_St_mumu_ZCR;
595    Histo1DPtr _hist_St_ee_ZCR;
596    Histo1DPtr _hist_MLQ_munu_W2CR;
597    Histo1DPtr _hist_MLQ_enu_W2CR;
598    Histo1DPtr _hist_MLQ_munu_ttCR;
599    Histo1DPtr _hist_MLQ_enu_ttCR;
600    /// @}
601
602
603    // DEBUG VARIABLES
604    int count, vetoe, Njetscut;
605    int candmumujj, candeejj, eTmisscut, candmvjj, candevjj, mumujj, eejj;
606    int mTonelept, MLQonelept, MtLQonelept, Stvonelept;
607    int mTev, MLQev, MtLQev, Stvev;
608    int muvjj, evjj, emuvjj, cande, candmu, tmpe, tmpmu;
609    int mumuZCR, eeZCR, munuW2CR, munuttCR, enuW2CR, enuttCR;
610
611  };
612
613
614
615  RIVET_DECLARE_ALIASED_PLUGIN(ATLAS_2011_S9041966, ATLAS_2011_I897002);
616
617}