|
[Rivet-svn] r3687 - in trunk: data/anainfo data/plotinfo src/Analysesblackhole at projects.hepforge.org blackhole at projects.hepforge.orgMon Apr 16 13:24:31 BST 2012
Author: richardn Date: Mon Apr 16 13:24:31 2012 New Revision: 3687 Log: added ATLAS_2011_S9212353 and ATLAS_2012_CONF_2012_041 latest 1 lepton + met SUSY searches Added: trunk/data/anainfo/ATLAS_2011_S9212353.info - copied, changed from r3651, trunk/data/anainfo/ATLAS_2011_CONF_2011_090.info trunk/data/anainfo/ATLAS_2012_CONF_2012_041.info - copied, changed from r3651, trunk/data/anainfo/ATLAS_2011_CONF_2011_090.info trunk/data/plotinfo/ATLAS_2011_S9212353.plot trunk/data/plotinfo/ATLAS_2012_CONF_2012_041.plot trunk/src/Analyses/ATLAS_2011_S9212353.cc trunk/src/Analyses/ATLAS_2012_CONF_2012_041.cc Modified: trunk/data/anainfo/Makefile.am trunk/data/plotinfo/Makefile.am trunk/src/Analyses/Makefile.am Copied and modified: trunk/data/anainfo/ATLAS_2011_S9212353.info (from r3651, trunk/data/anainfo/ATLAS_2011_CONF_2011_090.info) ============================================================================== --- trunk/data/anainfo/ATLAS_2011_CONF_2011_090.info Sun Mar 25 11:21:04 2012 (r3651, copy source) +++ trunk/data/anainfo/ATLAS_2011_S9212353.info Mon Apr 16 13:24:31 2012 (r3687) @@ -1,14 +1,15 @@ -Name: ATLAS_2011_CONF_2011_090 +Name: ATLAS_2011_S9212353 Year: 2011 Summary: Single lepton search for supersymmetry Experiment: ATLAS Collider: LHC -SpiresID: -Status: VALIDATED +SpiresID: 9212353 +Status: UNVALIDATED Authors: - - Angela Chen <aqchen at fas.harvard.edu> + - References: - - ATLAS-CONF-2011-090 + - Phys. Rev.D85:012006,2012 + - arXiv:1109.6606 RunInfo: BSM signal events at 7000 GeV. NumEvents: 25000 for BSM signals @@ -19,4 +20,19 @@ Event counts in electron and muon signal regions are implemented as one-bin histograms. Histograms for missing transverse energy and effective mass are implemented for the two signal regions.' - +BibKey: ATLAS:2011ad +BibTeX: '@Article{ATLAS:2011ad, + author = "Aad, Georges and others", + collaboration = "ATLAS", + title = "{Search for supersymmetry in final states with jets, + missing transverse momentum and one isolated lepton in + sqrt{s} = 7 TeV pp collisions using 1 fb-1 of ATLAS data}", + journal = "Phys. Rev.", + volume = "D85", + year = "2012", + pages = "012006", + eprint = "1109.6606", + archivePrefix = "arXiv", + primaryClass = "hep-ex", + SLACcitation = "%%CITATION = 1109.6606;%%" +}' Copied and modified: trunk/data/anainfo/ATLAS_2012_CONF_2012_041.info (from r3651, trunk/data/anainfo/ATLAS_2011_CONF_2011_090.info) ============================================================================== --- trunk/data/anainfo/ATLAS_2011_CONF_2011_090.info Sun Mar 25 11:21:04 2012 (r3651, copy source) +++ trunk/data/anainfo/ATLAS_2012_CONF_2012_041.info Mon Apr 16 13:24:31 2012 (r3687) @@ -1,14 +1,14 @@ -Name: ATLAS_2011_CONF_2011_090 -Year: 2011 +Name: ATLAS_2012_CONF_2012_041 +Year: 2012 Summary: Single lepton search for supersymmetry Experiment: ATLAS Collider: LHC -SpiresID: -Status: VALIDATED +SpiresID: +Status: UNVALIDATED Authors: - - Angela Chen <aqchen at fas.harvard.edu> + - Peter Richardson <Peter.Richardson at durham.ac.uk> References: - - ATLAS-CONF-2011-090 + - ATLAS-CONF-2012-041 RunInfo: BSM signal events at 7000 GeV. NumEvents: 25000 for BSM signals @@ -16,7 +16,7 @@ Energies: [7000] Description: 'Single lepton search for supersymmmetric particles by ATLAS at 7 TeV. - Event counts in electron and muon signal regions are implemented as one-bin histograms. - Histograms for missing transverse energy and effective mass are implemented for the two - signal regions.' - + Event counts in the signal regions are implemented as one-bin histograms. + Histograms for effective mass are implemented for the two + signal hard lepton signal regions and the ratio of missing transverse energy + to effective mass for the soft lepton region.' Modified: trunk/data/anainfo/Makefile.am ============================================================================== --- trunk/data/anainfo/Makefile.am Mon Apr 16 13:16:53 2012 (r3686) +++ trunk/data/anainfo/Makefile.am Mon Apr 16 13:24:31 2012 (r3687) @@ -41,6 +41,7 @@ ATLAS_2011_I926145.info \ ATLAS_2011_I944826.info \ ATLAS_2011_S9225137.info \ + ATLAS_2011_S9212353.info \ ATLAS_2012_I1083318.info \ ATLAS_2012_I1084540.info \ ATLAS_2012_I1094568.info \ @@ -49,6 +50,7 @@ ATLAS_2012_CONF_2012_023.info \ ATLAS_2012_CONF_2012_033.info \ ATLAS_2012_CONF_2012_037.info \ + ATLAS_2012_CONF_2012_041.info \ BABAR_2005_S6181155.info \ BABAR_2007_S6895344.info \ BABAR_2007_S7266081.info \ Added: trunk/data/plotinfo/ATLAS_2011_S9212353.plot ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/data/plotinfo/ATLAS_2011_S9212353.plot Mon Apr 16 13:24:31 2012 (r3687) @@ -0,0 +1,173 @@ +# BEGIN PLOT /ATLAS_2011_S9212353/3jl_count_electron_channel +Title=Number of events in the 3 jet loose electron channel +XLabel= +YLabel=Number of Events +LogY=0 +# END PLOT +# BEGIN PLOT /ATLAS_2011_S9212353/3jl_count_muon_channel +Title=Number of events in the 3 jet loose muon channel +XLabel= +YLabel=Number of Events +LogY=0 +# END PLOT +# BEGIN PLOT /ATLAS_2011_S9212353/3jt_count_electron_channel +Title=Number of events in the 3 jet tight electron channel +XLabel= +YLabel=Number of Events +LogY=0 +# END PLOT +# BEGIN PLOT /ATLAS_2011_S9212353/3jt_count_muon_channel +Title=Number of events in the 3 jet tight muon channel +XLabel= +YLabel=Number of Events +LogY=0 +# END PLOT +# BEGIN PLOT /ATLAS_2011_S9212353/4jl_count_electron_channel +Title=Number of events in the 4 jet loose electron channel +XLabel= +YLabel=Number of Events +LogY=0 +# END PLOT +# BEGIN PLOT /ATLAS_2011_S9212353/4jl_count_muon_channel +Title=Number of events in the 4 jet loose muon channel +XLabel= +YLabel=Number of Events +LogY=0 +# END PLOT +# BEGIN PLOT /ATLAS_2011_S9212353/4jt_count_electron_channel +Title=Number of events in the 4 jet tight electron channel +XLabel= +YLabel=Number of Events +LogY=0 +# END PLOT +# BEGIN PLOT /ATLAS_2011_S9212353/4jt_count_muon_channel +Title=Number of events in the 4 jet tight muon channel +XLabel= +YLabel=Number of Events +LogY=0 +# END PLOT + +# BEGIN PLOT /ATLAS_2011_S9212353/3j_Et_miss_e +Title=Missing transverse Energy in the 3 jet electron channel +XLabel=$E_{\mathrm{T}}^{\rm miss}$ [GeV] +YLabel=$\mathrm{Events}/10 \mathrm{GeV}$ +LogY=1 +# END PLOT +# BEGIN PLOT /ATLAS_2011_S9212353/3j_Et_miss_mu +Title=Missing transverse Energy in the 3 jet muon channel +XLabel=$E_{\mathrm{T}}^{\rm miss}$ [GeV] +YLabel=$\mathrm{Events}/10 \mathrm{GeV}$ +LogY=1 +# END PLOT +# BEGIN PLOT /ATLAS_2011_S9212353/4j_Et_miss_e +Title=Missing transverse Energy in the 4 jet electron channel +XLabel=$E_{\mathrm{T}}^{\rm miss}$ [GeV] +YLabel=$\mathrm{Events}/10 \mathrm{GeV}$ +LogY=1 +# END PLOT +# BEGIN PLOT /ATLAS_2011_S9212353/4j_Et_miss_mu +Title=Missing transverse Energy in the 4 jet muon channel +XLabel=$E_{\mathrm{T}}^{\rm miss}$ [GeV] +YLabel=$\mathrm{Events}/10 \mathrm{GeV}$ +LogY=1 +# END PLOT + +# BEGIN PLOT /ATLAS_2011_S9212353/3j_mT_e +Title=Transverse mass in the 3 jet electron channel +XLabel=$m_{\mathrm{T}}$ [GeV] +YLabel=$\mathrm{Events}/10 \mathrm{GeV}$ +LogY=1 +# END PLOT +# BEGIN PLOT /ATLAS_2011_S9212353/3j_mT_mu +Title=Transverse mass in the 3 jet muon channel +XLabel=$m_{\mathrm{T}}$ [GeV] +YLabel=$\mathrm{Events}/10 \mathrm{GeV}$ +LogY=1 +# END PLOT +# BEGIN PLOT /ATLAS_2011_S9212353/4j_mT_e +Title=Transverse mass in the 4 jet electron channel +XLabel=$m_{\mathrm{T}}$ [GeV] +YLabel=$\mathrm{Events}/10 \mathrm{GeV}$ +LogY=1 +# END PLOT +# BEGIN PLOT /ATLAS_2011_S9212353/4j_mT_mu +Title=Transverse mass in the 4 jet muon channel +XLabel=$m_{\mathrm{T}}$ [GeV] +YLabel=$\mathrm{Events}/10 \mathrm{GeV}$ +LogY=1 +# END PLOT + +# BEGIN PLOT /ATLAS_2011_S9212353/3j_m_eff_e +Title=Effective Mass in the 3 jet electron channel before final selectron +XLabel=$m_{\mathrm{eff}}$ [GeV] +YLabel=$\mathrm{Events}/50 \mathrm{GeV}$ +LogY=1 +# END PLOT +# BEGIN PLOT /ATLAS_2011_S9212353/3j_m_eff_mu +Title=Effective Mass in the 3 jet muon channel before final selectron +XLabel=$m_{\mathrm{eff}}$ [GeV] +YLabel=$\mathrm{Events}/50 \mathrm{GeV}$ +LogY=1 +# END PLOT +# BEGIN PLOT /ATLAS_2011_S9212353/4j_m_eff_e +Title=Effective Mass in the 4 jet electron channel before final selectron +XLabel=$m_{\mathrm{eff}}$ [GeV] +YLabel=$\mathrm{Events}/50 \mathrm{GeV}$ +LogY=1 +# END PLOT +# BEGIN PLOT /ATLAS_2011_S9212353/4j_m_eff_mu +Title=Effective Mass in the 4 jet muon channel before final selectron +XLabel=$m_{\mathrm{eff}}$ [GeV] +YLabel=$\mathrm{Events}/50 \mathrm{GeV}$ +LogY=1 +# END PLOT + +# BEGIN PLOT /ATLAS_2011_S9212353/3jl_m_eff_e_final +Title=Effective Mass in the 3 jet loose electron channel after final selectron +XLabel=$m_{\mathrm{eff}}$ [GeV] +YLabel=$\mathrm{Events}/50 \mathrm{GeV}$ +LogY=1 +# END PLOT +# BEGIN PLOT /ATLAS_2011_S9212353/3jl_m_eff_mu_final +Title=Effective Mass in the 3 jet loose muon channel after final selectron +XLabel=$m_{\mathrm{eff}}$ [GeV] +YLabel=$\mathrm{Events}/50 \mathrm{GeV}$ +LogY=1 +# END PLOT +# BEGIN PLOT /ATLAS_2011_S9212353/4jl_m_eff_e_final +Title=Effective Mass in the 4 jet loose electron channel after final selectron +XLabel=$m_{\mathrm{eff}}$ [GeV] +YLabel=$\mathrm{Events}/50 \mathrm{GeV}$ +LogY=1 +# END PLOT +# BEGIN PLOT /ATLAS_2011_S9212353/4jl_m_eff_mu_final +Title=Effective Mass in the 4 jet loose muon channel after final selectron +XLabel=$m_{\mathrm{eff}}$ [GeV] +YLabel=$\mathrm{Events}/50 \mathrm{GeV}$ +LogY=1 +# END PLOT + +# BEGIN PLOT /ATLAS_2011_S9212353/3jt_m_eff_e_final +Title=Effective Mass in the 3 jet tight electron channel after final selectron +XLabel=$m_{\mathrm{eff}}$ [GeV] +YLabel=$\mathrm{Events}/50 \mathrm{GeV}$ +LogY=1 +# END PLOT +# BEGIN PLOT /ATLAS_2011_S9212353/3jt_m_eff_mu_final +Title=Effective Mass in the 3 jet tight muon channel after final selectron +XLabel=$m_{\mathrm{eff}}$ [GeV] +YLabel=$\mathrm{Events}/50 \mathrm{GeV}$ +LogY=1 +# END PLOT +# BEGIN PLOT /ATLAS_2011_S9212353/4jt_m_eff_e_final +Title=Effective Mass in the 4 jet tight electron channel after final selectron +XLabel=$m_{\mathrm{eff}}$ [GeV] +YLabel=$\mathrm{Events}/50 \mathrm{GeV}$ +LogY=1 +# END PLOT +# BEGIN PLOT /ATLAS_2011_S9212353/4jt_m_eff_mu_final +Title=Effective Mass in the 4 jet tight muon channel after final selectron +XLabel=$m_{\mathrm{eff}}$ [GeV] +YLabel=$\mathrm{Events}/50 \mathrm{GeV}$ +LogY=1 +# END PLOT Added: trunk/data/plotinfo/ATLAS_2012_CONF_2012_041.plot ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/data/plotinfo/ATLAS_2012_CONF_2012_041.plot Mon Apr 16 13:24:31 2012 (r3687) @@ -0,0 +1,39 @@ +# BEGIN PLOT /ATLAS_2012_CONF_2012_041/count_3jet_channel +Title=Number of events in the 3 jet channel +XLabel= +YLabel=Number of Events +LogY=0 +# END PLOT +# BEGIN PLOT /ATLAS_2012_CONF_2012_041/count_4jet_channel +Title=Number of events in the 4 jet channel +XLabel= +YLabel=Number of Events +LogY=0 +# END PLOT +# BEGIN PLOT /ATLAS_2012_CONF_2012_041/count_soft_channel +Title=Number of events in the soft lepton channel +XLabel= +YLabel=Number of Events +LogY=0 +# END PLOT + +# BEGIN PLOT /ATLAS_2012_CONF_2012_041/hist_m_eff_3jet +Title=Effective Mass in the 3 jet channe +XLabel=$m_{\mathrm{eff}}$ [GeV] +YLabel=$\mathrm{Events}/200 \mathrm{GeV}$ +LogY=1 +# END PLOT + +# BEGIN PLOT /ATLAS_2012_CONF_2012_041/hist_m_eff_4jet +Title=Effective Mass in the 4 jet channe +XLabel=$m_{\mathrm{eff}}$ [GeV] +YLabel=$\mathrm{Events}/200 \mathrm{GeV}$ +LogY=1 +# END PLOT + +# BEGIN PLOT /ATLAS_2012_CONF_2012_041/hist_eTmiss_m_eff_soft +Title=Ratio $E_{\mathrm{T}}^{\rm miss}/m_{\mathrm{eff}}$ in the soft lepton channel +XLabel=$E_{\mathrm{T}}^{\rm miss}/m_{\mathrm{eff}}$ +YLabel=$\mathrm{Events}/0.1$ +LogY=1 +# END PLOT Modified: trunk/data/plotinfo/Makefile.am ============================================================================== --- trunk/data/plotinfo/Makefile.am Mon Apr 16 13:16:53 2012 (r3686) +++ trunk/data/plotinfo/Makefile.am Mon Apr 16 13:24:31 2012 (r3687) @@ -38,6 +38,7 @@ ATLAS_2011_CONF_2011_090.plot \ ATLAS_2011_CONF_2011_098.plot \ ATLAS_2011_S8983313.plot \ + ATLAS_2011_S9212353.plot \ ATLAS_2012_I1083318.plot \ ATLAS_2012_I1084540.plot \ ATLAS_2012_I1094568.plot \ @@ -46,6 +47,7 @@ ATLAS_2012_CONF_2012_023.plot \ ATLAS_2012_CONF_2012_033.plot \ ATLAS_2012_CONF_2012_037.plot \ + ATLAS_2012_CONF_2012_041.plot \ BABAR_2005_S6181155.plot \ BABAR_2007_S6895344.plot \ BABAR_2007_S7266081.plot \ Added: trunk/src/Analyses/ATLAS_2011_S9212353.cc ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/src/Analyses/ATLAS_2011_S9212353.cc Mon Apr 16 13:24:31 2012 (r3687) @@ -0,0 +1,525 @@ +// -*- C++ -*- +#include "Rivet/Analysis.hh" +#include "Rivet/Tools/BinnedHistogram.hh" +#include "Rivet/RivetAIDA.hh" +#include "Rivet/Tools/Logging.hh" +#include "Rivet/Projections/FinalState.hh" +#include "Rivet/Projections/ChargedFinalState.hh" +#include "Rivet/Projections/VisibleFinalState.hh" +#include "Rivet/Projections/IdentifiedFinalState.hh" +#include "Rivet/Projections/VetoedFinalState.hh" +#include "Rivet/Projections/FastJets.hh" + +namespace Rivet { + + + class ATLAS_2011_S9212353 : public Analysis { + public: + + /// @name Constructors etc. + //@{ + + /// Constructor + + ATLAS_2011_S9212353() + : Analysis("ATLAS_2011_S9212353") + { } + + //@} + + + public: + + /// @name Analysis methods + //@{ + + /// Book histograms and initialize projections before the run + void init() { + + // projection to find the electrons + std::vector<std::pair<double, double> > eta_e; + eta_e.push_back(make_pair(-2.47,2.47)); + IdentifiedFinalState elecs(eta_e, 20.0*GeV); + elecs.acceptIdPair(ELECTRON); + addProjection(elecs, "elecs"); + + + // veto region electrons (from 2010 arXiv:1102.2357v2) + std::vector<std::pair<double, double> > eta_v_e; + eta_v_e.push_back(make_pair(-1.52,-1.37)); + eta_v_e.push_back(make_pair( 1.37, 1.52)); + IdentifiedFinalState veto_elecs(eta_v_e, 10.0*GeV); + veto_elecs.acceptIdPair(ELECTRON); + addProjection(veto_elecs, "veto_elecs"); + + + // projection to find the muons + std::vector<std::pair<double, double> > eta_m; + eta_m.push_back(make_pair(-2.4,2.4)); + IdentifiedFinalState muons(eta_m, 10.0*GeV); + muons.acceptIdPair(MUON); + addProjection(muons, "muons"); + + + // Jet finder + VetoedFinalState vfs; + vfs.addVetoPairId(MUON); + addProjection(FastJets(vfs, FastJets::ANTIKT, 0.4), + "AntiKtJets04"); + + + // all tracks (to do deltaR with leptons) + addProjection(ChargedFinalState(-3.0,3.0,0.5*GeV),"cfs"); + + + // for pTmiss + addProjection(VisibleFinalState(-4.5,4.5),"vfs"); + + + /// Book histograms + _3jl_count_mu_channel = bookHistogram1D("3jl_count_muon_channel", 1, 0., 1.); + _3jl_count_e_channel = bookHistogram1D("3jl_count_electron_channel", 1, 0., 1.); + _3jt_count_mu_channel = bookHistogram1D("3jt_count_muon_channel", 1, 0., 1.); + _3jt_count_e_channel = bookHistogram1D("3jt_count_electron_channel", 1, 0., 1.); + _3j_hist_eTmiss_e = bookHistogram1D("3j_Et_miss_e", 65, 0., 650.); + _3j_hist_eTmiss_mu = bookHistogram1D("3j_Et_miss_mu", 65, 0., 650.); + _3j_hist_mT_e = bookHistogram1D("3j_mT_e", 58, 0., 580.); + _3j_hist_mT_mu = bookHistogram1D("3j_mT_mu", 58, 0., 580.); + _3j_hist_m_eff_e = bookHistogram1D("3j_m_eff_e", 46, 0., 2300.); + _3j_hist_m_eff_mu = bookHistogram1D("3j_m_eff_mu", 46, 0., 2300.); + _3jl_hist_m_eff_e_final = bookHistogram1D("3jl_m_eff_e_final", 15, 0., 1500.); + _3jl_hist_m_eff_mu_final = bookHistogram1D("3jl_m_eff_mu_final", 15, 0., 1500.); + _3jt_hist_m_eff_e_final = bookHistogram1D("3jt_m_eff_e_final", 15, 0., 1500.); + _3jt_hist_m_eff_mu_final = bookHistogram1D("3jt_m_eff_mu_final", 15, 0., 1500.); + + + _4jl_count_mu_channel = bookHistogram1D("4jl_count_muon_channel", 1, 0., 1.); + _4jl_count_e_channel = bookHistogram1D("4jl_count_electron_channel", 1, 0., 1.); + _4jt_count_mu_channel = bookHistogram1D("4jt_count_muon_channel", 1, 0., 1.); + _4jt_count_e_channel = bookHistogram1D("4jt_count_electron_channel", 1, 0., 1.); + _4j_hist_eTmiss_e = bookHistogram1D("4j_Et_miss_e", 65, 0., 650.); + _4j_hist_eTmiss_mu = bookHistogram1D("4j_Et_miss_mu", 65, 0., 650.); + _4j_hist_mT_e = bookHistogram1D("4j_mT_e", 58, 0., 580.); + _4j_hist_mT_mu = bookHistogram1D("4j_mT_mu", 58, 0., 580.); + _4j_hist_m_eff_e = bookHistogram1D("4j_m_eff_e", 46, 0., 2300.); + _4j_hist_m_eff_mu = bookHistogram1D("4j_m_eff_mu", 46, 0., 2300.); + _4jl_hist_m_eff_e_final = bookHistogram1D("4jl_m_eff_e_final", 15, 0., 1500.); + _4jl_hist_m_eff_mu_final = bookHistogram1D("4jl_m_eff_mu_final", 15, 0., 1500.); + _4jt_hist_m_eff_e_final = bookHistogram1D("4jt_m_eff_e_final", 15, 0., 1500.); + _4jt_hist_m_eff_mu_final = bookHistogram1D("4jt_m_eff_mu_final", 15, 0., 1500.); + + + } + + + + /// Perform the per-event analysis + void analyze(const Event& event) { + const double weight = event.weight(); + ParticleVector veto_e + = applyProjection<IdentifiedFinalState>(event, "veto_elecs").particles(); + if ( ! veto_e.empty() ) { + MSG_DEBUG("electrons in veto region"); + vetoEvent; + } + + Jets cand_jets; + foreach ( const Jet& jet, + applyProjection<FastJets>(event, "AntiKtJets04").jetsByPt(20.0*GeV) ) { + if ( fabs( jet.momentum().eta() ) < 2.8 ) { + cand_jets.push_back(jet); + } + } + + ParticleVector candtemp_e = + applyProjection<IdentifiedFinalState>(event, "elecs").particlesByPt(); + ParticleVector candtemp_mu = + applyProjection<IdentifiedFinalState>(event,"muons").particlesByPt(); + ParticleVector chg_tracks = + applyProjection<ChargedFinalState>(event, "cfs").particles(); + ParticleVector cand_mu; + ParticleVector cand_e; + + + // pTcone around muon track + foreach ( const Particle & mu, candtemp_mu ) { + double pTinCone = -mu.momentum().pT(); + foreach ( const Particle & track, chg_tracks ) { + if ( deltaR(mu.momentum(),track.momentum()) < 0.2 ) + pTinCone += track.momentum().pT(); + } + if ( pTinCone < 1.8*GeV ) + cand_mu.push_back(mu); + } + + // pTcone around electron + foreach ( const Particle e, candtemp_e ) { + double pTinCone = -e.momentum().pT(); + foreach ( const Particle & track, chg_tracks ) { + if ( deltaR(e.momentum(),track.momentum()) < 0.2 ) + pTinCone += track.momentum().pT(); + } + if ( pTinCone < 0.1 * e.momentum().pT() ) + cand_e.push_back(e); + } + + // discard jets that overlap with electrons + Jets cand_jets_2; + foreach ( const Jet& jet, cand_jets ) { + bool away_from_e = true; + foreach ( const Particle & e, cand_e ) { + if ( deltaR(e.momentum(),jet.momentum()) < 0.2 ) { + away_from_e = false; + break; + } + } + if ( away_from_e ) + cand_jets_2.push_back( jet ); + } + + // only consider leptons far from jet + ParticleVector recon_e, recon_mu; + foreach ( const Particle & e, cand_e ) { + bool e_near_jet = false; + foreach ( const Jet& jet, cand_jets_2 ) { + if ( deltaR(e.momentum(),jet.momentum()) < 0.4 && + deltaR(e.momentum(),jet.momentum()) > 0.2 ) + e_near_jet = true; + } + if ( ! e_near_jet ) + recon_e.push_back( e ); + } + + foreach ( const Particle & mu, cand_mu ) { + bool mu_near_jet = false; + foreach ( const Jet& jet, cand_jets_2 ) { + if ( deltaR(mu.momentum(),jet.momentum()) < 0.4 ) + mu_near_jet = true; + } + if ( ! mu_near_jet ) + recon_mu.push_back( mu ); + } + + // pTmiss + ParticleVector vfs_particles + = applyProjection<VisibleFinalState>(event, "vfs").particles(); + FourMomentum pTmiss; + foreach ( const Particle & p, vfs_particles ) { + pTmiss -= p.momentum(); + } + double eTmiss = pTmiss.pT(); + + // final jet filter + Jets recon_jets; + foreach ( const Jet& jet, cand_jets_2 ) { + recon_jets.push_back( jet ); + } + + + // ==================== observables ==================== + + + // Njets + int Njets = 0; + double pTmiss_phi = pTmiss.phi(); + foreach ( const Jet& jet, recon_jets ) { + if ( fabs(jet.momentum().eta()) < 2.8 ) + Njets+=1; + } + if ( Njets < 3 ) { + MSG_DEBUG("Only " << Njets << " jets w/ eta<2.8 left"); + vetoEvent; + } + + ParticleVector lepton; + if ( recon_mu.empty() && recon_e.empty() ) { + MSG_DEBUG("No leptons"); + vetoEvent; + } + else { + foreach ( const Particle & mu, recon_mu ) + lepton.push_back(mu); + foreach ( const Particle & e, recon_e ) + lepton.push_back(e); + } + + + std::sort(lepton.begin(), lepton.end(), cmpParticleByPt); + + double e_id = 11; + double mu_id = 13; + + // one hard leading lepton cut + if ( fabs(lepton[0].pdgId()) == e_id && + lepton[0].momentum().pT() <= 25*GeV ) { + vetoEvent; + } + else if ( fabs(lepton[0].pdgId()) == mu_id && + lepton[0].momentum().pT() <= 20*GeV ) { + vetoEvent; + } + + // exactly one hard leading lepton cut + if(lepton.size()>1) { + if ( fabs(lepton[1].pdgId()) == e_id && + lepton[1].momentum().pT() > 20*GeV ) { + vetoEvent; + } + else if ( fabs(lepton[1].pdgId()) == mu_id && + lepton[1].momentum().pT() > 10*GeV ) { + vetoEvent; + } + } + + // 3JL + if ( recon_jets[0].momentum().pT() > 60.0*GeV && + recon_jets[1].momentum().pT() > 25.0*GeV && + recon_jets[2].momentum().pT() > 25.0*GeV && + deltaPhi( pTmiss_phi, recon_jets[0].momentum().phi() ) > 0.2 && + deltaPhi( pTmiss_phi, recon_jets[1].momentum().phi() ) > 0.2 && + deltaPhi( pTmiss_phi, recon_jets[2].momentum().phi() ) > 0.2 ) { + + FourMomentum pT_l = lepton[0].momentum(); + double dPhi = deltaPhi( pT_l.phi(), pTmiss_phi); + double mT = sqrt( 2 * pT_l.pT() * eTmiss * (1 - cos(dPhi)) ); + double m_eff = eTmiss + pT_l.pT() + + recon_jets[0].momentum().pT() + + recon_jets[1].momentum().pT() + + recon_jets[2].momentum().pT(); + + if ( fabs( lepton[0].pdgId() ) == e_id ) { + _3j_hist_mT_e->fill(mT, weight); + _3j_hist_eTmiss_e->fill(eTmiss, weight); + _3j_hist_m_eff_e->fill(m_eff, weight); + if ( mT > 100*GeV && eTmiss > 125*GeV ) { + _3jl_hist_m_eff_e_final->fill(m_eff, weight); + if ( m_eff > 500*GeV && eTmiss > 0.25*m_eff ) { + _3jl_count_e_channel->fill(0.5,weight); + } + } + } + + else if ( fabs( lepton[0].pdgId() ) == mu_id ) { + _3j_hist_mT_mu->fill(mT, weight); + _3j_hist_eTmiss_mu->fill(eTmiss, weight); + _3j_hist_m_eff_mu->fill(m_eff, weight); + if ( mT > 100*GeV && eTmiss > 125*GeV ) { + _3jl_hist_m_eff_mu_final->fill(m_eff, weight); + if ( m_eff > 500*GeV && eTmiss > 0.25*m_eff ) { + _3jl_count_mu_channel->fill(0.5,weight); + } + } + } + + } + + // 3JT + if ( recon_jets[0].momentum().pT() > 80.0*GeV && + recon_jets[1].momentum().pT() > 25.0*GeV && + recon_jets[2].momentum().pT() > 25.0*GeV && + deltaPhi( pTmiss_phi, recon_jets[0].momentum().phi() ) > 0.2 && + deltaPhi( pTmiss_phi, recon_jets[1].momentum().phi() ) > 0.2 && + deltaPhi( pTmiss_phi, recon_jets[2].momentum().phi() ) > 0.2 ) { + + FourMomentum pT_l = lepton[0].momentum(); + double dPhi = deltaPhi( pT_l.phi(), pTmiss_phi); + double mT = sqrt( 2 * pT_l.pT() * eTmiss * (1 - cos(dPhi)) ); + double m_eff = eTmiss + pT_l.pT() + + recon_jets[0].momentum().pT() + + recon_jets[1].momentum().pT() + + recon_jets[2].momentum().pT(); + + + if ( fabs( lepton[0].pdgId() ) == e_id ) { + if ( mT > 100*GeV && eTmiss > 240*GeV ) { + _3jt_hist_m_eff_e_final->fill(m_eff, weight); + if ( m_eff > 600*GeV && eTmiss > 0.15*m_eff ) { + _3jt_count_e_channel->fill(0.5,weight); + } + } + } + + else if ( fabs( lepton[0].pdgId() ) == mu_id ) { + if ( mT > 100*GeV && eTmiss > 240*GeV ) { + _3jt_hist_m_eff_mu_final->fill(m_eff, weight); + if ( m_eff > 600*GeV && eTmiss > 0.15*m_eff ) { + _3jt_count_mu_channel->fill(0.5,weight); + } + } + } + + } + + if ( Njets < 4 ) { + MSG_DEBUG("Only " << Njets << " jets w/ eta<2.8 left"); + vetoEvent; + } + + + + // 4JL + if ( recon_jets[0].momentum().pT() > 60.0*GeV && + recon_jets[1].momentum().pT() > 25.0*GeV && + recon_jets[2].momentum().pT() > 25.0*GeV && + recon_jets[3].momentum().pT() > 25.0*GeV && + deltaPhi( pTmiss_phi, recon_jets[0].momentum().phi() ) > 0.2 && + deltaPhi( pTmiss_phi, recon_jets[1].momentum().phi() ) > 0.2 && + deltaPhi( pTmiss_phi, recon_jets[2].momentum().phi() ) > 0.2 && + deltaPhi( pTmiss_phi, recon_jets[3].momentum().phi() ) > 0.2 ) { + + FourMomentum pT_l = lepton[0].momentum(); + double dPhi = deltaPhi( pT_l.phi(), pTmiss_phi); + double mT = sqrt( 2 * pT_l.pT() * eTmiss * (1 - cos(dPhi)) ); + double m_eff = eTmiss + pT_l.pT() + + recon_jets[0].momentum().pT() + + recon_jets[1].momentum().pT() + + recon_jets[2].momentum().pT() + + recon_jets[3].momentum().pT(); + + + if ( fabs( lepton[0].pdgId() ) == e_id ) { + _4j_hist_mT_e->fill(mT, weight); + _4j_hist_eTmiss_e->fill(eTmiss, weight); + _4j_hist_m_eff_e->fill(m_eff, weight); + if ( mT > 100*GeV && eTmiss > 140*GeV ) { + _4jl_hist_m_eff_e_final->fill(m_eff, weight); + if ( m_eff > 300*GeV && eTmiss > 0.3*m_eff ) { + _4jl_count_e_channel->fill(0.5,weight); + } + } + } + + // Muon channel signal region + else if ( fabs( lepton[0].pdgId() ) == mu_id ) { + _4j_hist_mT_mu->fill(mT, weight); + _4j_hist_eTmiss_mu->fill(eTmiss, weight); + _4j_hist_m_eff_mu->fill(m_eff, weight); + if ( mT > 100*GeV && eTmiss > 140*GeV ) { + _4jl_hist_m_eff_mu_final->fill(m_eff, weight); + if ( m_eff > 300*GeV && eTmiss > 0.3*m_eff ) { + _4jl_count_mu_channel->fill(0.5,weight); + } + } + } + + } + + // 4JT + if ( recon_jets[0].momentum().pT() > 60.0*GeV && + recon_jets[1].momentum().pT() > 40.0*GeV && + recon_jets[2].momentum().pT() > 40.0*GeV && + recon_jets[3].momentum().pT() > 40.0*GeV && + deltaPhi( pTmiss_phi, recon_jets[0].momentum().phi() ) > 0.2 && + deltaPhi( pTmiss_phi, recon_jets[1].momentum().phi() ) > 0.2 && + deltaPhi( pTmiss_phi, recon_jets[2].momentum().phi() ) > 0.2 && + deltaPhi( pTmiss_phi, recon_jets[3].momentum().phi() ) > 0.2 ) { + + FourMomentum pT_l = lepton[0].momentum(); + + double m_eff = eTmiss + pT_l.pT() + + recon_jets[0].momentum().pT() + + recon_jets[1].momentum().pT() + + recon_jets[2].momentum().pT() + + recon_jets[3].momentum().pT(); + + + if ( fabs( lepton[0].pdgId() ) == e_id ) { + if ( eTmiss > 200*GeV ) { + _4jt_hist_m_eff_e_final->fill(m_eff, weight); + if ( m_eff > 500*GeV && eTmiss > 0.15*m_eff ) { + _4jt_count_e_channel->fill(0.5,weight); + } + } + } + + // Muon channel signal region + else if ( fabs( lepton[0].pdgId() ) == mu_id ) { + if ( eTmiss > 200*GeV ) { + _4jt_hist_m_eff_mu_final->fill(m_eff, weight); + if ( m_eff > 500*GeV && eTmiss > 0.15*m_eff ) { + _4jt_count_mu_channel->fill(0.5,weight); + } + } + } + + } + } + + //@} + + + void finalize() { + + scale( _3j_hist_eTmiss_e, 10. * 1.04e3 * crossSection()/sumOfWeights() ); + scale( _3j_hist_eTmiss_mu, 10. * 1.04e3 * crossSection()/sumOfWeights() ); + scale( _3j_hist_m_eff_e, 50. * 1.04e3 * crossSection()/sumOfWeights() ); + scale( _3j_hist_m_eff_mu, 50. * 1.04e3 * crossSection()/sumOfWeights() ); + scale( _3j_hist_mT_e, 10. * 1.04e3 * crossSection()/sumOfWeights() ); + scale( _3j_hist_mT_mu, 10. * 1.04e3 * crossSection()/sumOfWeights() ); + scale( _3jl_hist_m_eff_e_final, 100. * 1.04e3 * crossSection()/sumOfWeights() ); + scale( _3jl_hist_m_eff_mu_final, 100. * 1.04e3 * crossSection()/sumOfWeights() ); + scale( _3jt_hist_m_eff_e_final, 100. * 1.04e3 * crossSection()/sumOfWeights() ); + scale( _3jt_hist_m_eff_mu_final, 100. * 1.04e3 * crossSection()/sumOfWeights() ); + + scale( _4j_hist_eTmiss_e, 10. * 1.04e3 * crossSection()/sumOfWeights() ); + scale( _4j_hist_eTmiss_mu, 10. * 1.04e3 * crossSection()/sumOfWeights() ); + scale( _4j_hist_m_eff_e, 50. * 1.04e3 * crossSection()/sumOfWeights() ); + scale( _4j_hist_m_eff_mu, 50. * 1.04e3 * crossSection()/sumOfWeights() ); + scale( _4j_hist_mT_e, 10. * 1.04e3 * crossSection()/sumOfWeights() ); + scale( _4j_hist_mT_mu, 10. * 1.04e3 * crossSection()/sumOfWeights() ); + scale( _4jl_hist_m_eff_e_final, 100. * 1.04e3 * crossSection()/sumOfWeights() ); + scale( _4jl_hist_m_eff_mu_final, 100. * 1.04e3 * crossSection()/sumOfWeights() ); + scale( _4jt_hist_m_eff_e_final, 100. * 1.04e3 * crossSection()/sumOfWeights() ); + scale( _4jt_hist_m_eff_mu_final, 100. * 1.04e3 * crossSection()/sumOfWeights() ); + + + } + + private: + + /// @name Histograms + //@{ + AIDA::IHistogram1D* _3jl_count_e_channel; + AIDA::IHistogram1D* _3jl_count_mu_channel; + AIDA::IHistogram1D* _3jt_count_e_channel; + AIDA::IHistogram1D* _3jt_count_mu_channel; + AIDA::IHistogram1D* _3j_hist_eTmiss_e; + AIDA::IHistogram1D* _3j_hist_eTmiss_mu; + AIDA::IHistogram1D* _3j_hist_m_eff_e; + AIDA::IHistogram1D* _3j_hist_m_eff_mu; + AIDA::IHistogram1D* _3j_hist_mT_e; + AIDA::IHistogram1D* _3j_hist_mT_mu; + AIDA::IHistogram1D* _3jl_hist_m_eff_e_final; + AIDA::IHistogram1D* _3jl_hist_m_eff_mu_final; + AIDA::IHistogram1D* _3jt_hist_m_eff_e_final; + AIDA::IHistogram1D* _3jt_hist_m_eff_mu_final; + + + + AIDA::IHistogram1D* _4jl_count_e_channel; + AIDA::IHistogram1D* _4jl_count_mu_channel; + AIDA::IHistogram1D* _4jt_count_e_channel; + AIDA::IHistogram1D* _4jt_count_mu_channel; + AIDA::IHistogram1D* _4j_hist_eTmiss_e; + AIDA::IHistogram1D* _4j_hist_eTmiss_mu; + AIDA::IHistogram1D* _4j_hist_m_eff_e; + AIDA::IHistogram1D* _4j_hist_m_eff_mu; + AIDA::IHistogram1D* _4j_hist_mT_e; + AIDA::IHistogram1D* _4j_hist_mT_mu; + AIDA::IHistogram1D* _4jl_hist_m_eff_e_final; + AIDA::IHistogram1D* _4jl_hist_m_eff_mu_final; + AIDA::IHistogram1D* _4jt_hist_m_eff_e_final; + AIDA::IHistogram1D* _4jt_hist_m_eff_mu_final; + + + //@} + + + }; + + + + // The hook for the plugin system + DECLARE_RIVET_PLUGIN(ATLAS_2011_S9212353); + +} Added: trunk/src/Analyses/ATLAS_2012_CONF_2012_041.cc ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/src/Analyses/ATLAS_2012_CONF_2012_041.cc Mon Apr 16 13:24:31 2012 (r3687) @@ -0,0 +1,304 @@ +// -*- C++ -*- +#include "Rivet/Analysis.hh" +#include "Rivet/Tools/BinnedHistogram.hh" +#include "Rivet/RivetAIDA.hh" +#include "Rivet/Tools/Logging.hh" +#include "Rivet/Projections/FinalState.hh" +#include "Rivet/Projections/ChargedFinalState.hh" +#include "Rivet/Projections/VisibleFinalState.hh" +#include "Rivet/Projections/IdentifiedFinalState.hh" +#include "Rivet/Projections/VetoedFinalState.hh" +#include "Rivet/Projections/FastJets.hh" + +namespace Rivet { + + + class ATLAS_2012_CONF_2012_041 : public Analysis { + public: + + /// @name Constructors etc. + //@{ + + /// Constructor + + ATLAS_2012_CONF_2012_041() + : Analysis("ATLAS_2012_CONF_2012_041") + { } + + //@} + + + public: + + /// @name Analysis methods + //@{ + + /// Book histograms and initialize projections before the run + void init() { + + // projection to find the electrons + std::vector<std::pair<double, double> > eta_e; + eta_e.push_back(make_pair(-2.47,2.47)); + IdentifiedFinalState elecs(eta_e, 7.0*GeV); + elecs.acceptIdPair(ELECTRON); + addProjection(elecs, "elecs"); + + // projection to find the muons + std::vector<std::pair<double, double> > eta_m; + eta_m.push_back(make_pair(-2.4,2.4)); + IdentifiedFinalState muons(eta_m, 6.0*GeV); + muons.acceptIdPair(MUON); + addProjection(muons, "muons"); + + // Jet finder + VetoedFinalState vfs; + vfs.addVetoPairId(MUON); + addProjection(FastJets(vfs, FastJets::ANTIKT, 0.4), + "AntiKtJets04"); + + // all tracks (to do deltaR with leptons) + addProjection(ChargedFinalState(-3.0,3.0,0.5*GeV),"cfs"); + + // for pTmiss + addProjection(VisibleFinalState(-4.9,4.9),"vfs"); + + // Book histograms + _count_3jet_channel = bookHistogram1D("count_3jet_channel", 1, 0., 1.); + _count_4jet_channel = bookHistogram1D("count_4jet_channel", 1, 0., 1.); + _count_soft_channel = bookHistogram1D("count_soft_channel", 1, 0., 1.); + + _hist_m_eff_3jet = bookHistogram1D("hist_m_eff_3jet" , 6, 400., 1600.); + _hist_m_eff_4jet = bookHistogram1D("hist_m_eff_4jet" , 6, 400., 1600.); + _hist_eTmiss_m_eff_soft = bookHistogram1D("hist_eTmiss_m_eff_soft", 6, 0.1 , 0.7 ); + + } + + /// Perform the per-event analysis + void analyze(const Event& event) { + const double weight = event.weight(); + + // get the candiate jets + Jets cand_jets; + foreach ( const Jet& jet, + applyProjection<FastJets>(event, "AntiKtJets04").jetsByPt(20.0*GeV) ) { + if ( fabs( jet.momentum().eta() ) < 4.5 ) { + cand_jets.push_back(jet); + } + } + + // get the candidate "medium" leptons without isolation + ParticleVector cand_soft_e,cand_hard_e; + foreach( const Particle & e, + applyProjection<IdentifiedFinalState>(event, "elecs").particlesByPt()) { + double pT = e.momentum().perp(); + double eta = e.momentum().eta(); + // remove any leptons within 0.4 of any candidate jets + bool e_near_jet = false; + foreach ( const Jet& jet, cand_jets ) { + double dR = deltaR(e.momentum(),jet.momentum()); + if ( dR < 0.4 && dR > 0.2 ) { + e_near_jet = true; + break; + } + } + if ( e_near_jet ) continue; + // soft selection + if(pT>7.&&!(fabs(eta)>1.37&&fabs(eta)<1.52)) { + cand_soft_e.push_back(e); + } + // hard selection + if(pT>10.) cand_hard_e.push_back(e); + } + ParticleVector cand_soft_mu,cand_hard_mu; + foreach( const Particle & mu, + applyProjection<IdentifiedFinalState>(event, "muons").particlesByPt()) { + double pT = mu.momentum().perp(); + double eta = mu.momentum().eta(); + // remove any leptons within 0.4 of any candidate jets + bool mu_near_jet = false; + foreach ( const Jet& jet, cand_jets ) { + if ( deltaR(mu.momentum(),jet.momentum()) < 0.4 ) { + mu_near_jet = true; + break; + } + } + if ( mu_near_jet ) continue; + // soft selection + if(pT>6.&&!(fabs(eta)>1.37&&fabs(eta)<1.52)) { + cand_soft_mu.push_back(mu); + } + // hard selection + if(pT>10.) cand_hard_mu.push_back(mu); + } + // apply the isolation + ParticleVector chg_tracks = + applyProjection<ChargedFinalState>(event, "cfs").particles(); + // pTcone around muon track (hard) + ParticleVector recon_hard_mu; + foreach ( const Particle & mu, cand_hard_mu ) { + double pTinCone = -mu.momentum().pT(); + if(-pTinCone<20.) continue; + foreach ( const Particle & track, chg_tracks ) { + if ( deltaR(mu.momentum(),track.momentum()) < 0.2 ) + pTinCone += track.momentum().pT(); + } + if ( pTinCone < 1.8*GeV ) recon_hard_mu.push_back(mu); + } + // pTcone around muon track (soft) + ParticleVector recon_soft_mu; + foreach ( const Particle & mu, cand_soft_mu ) { + double pTinCone = -mu.momentum().pT(); + if(-pTinCone>20.) continue; + foreach ( const Particle & track, chg_tracks ) { + if ( deltaR(mu.momentum(),track.momentum()) < 0.2 ) + pTinCone += track.momentum().pT(); + } + if ( pTinCone < 1.8*GeV ) recon_soft_mu.push_back(mu); + } + // pTcone around electron track (hard) + ParticleVector recon_hard_e; + foreach ( const Particle & e, cand_hard_e ) { + double pTinCone = -e.momentum().pT(); + if(-pTinCone<25.) continue; + foreach ( const Particle & track, chg_tracks ) { + if ( deltaR(e.momentum(),track.momentum()) < 0.2 ) + pTinCone += track.momentum().pT(); + } + if ( pTinCone < 0.1 * e.momentum().pT() ) recon_hard_e.push_back(e); + } + // pTcone around electron track (soft) + ParticleVector recon_soft_e; + foreach ( const Particle & e, cand_soft_e ) { + double pTinCone = -e.momentum().pT(); + if(-pTinCone>25.) continue; + foreach ( const Particle & track, chg_tracks ) { + if ( deltaR(e.momentum(),track.momentum()) < 0.2 ) + pTinCone += track.momentum().pT(); + } + if ( pTinCone < 0.1 * e.momentum().pT() ) recon_soft_e.push_back(e); + } + + // discard jets that overlap with electrons + Jets recon_jets; + foreach ( const Jet& jet, cand_jets ) { + if(fabs(jet.momentum().eta())>2.5|| + jet.momentum().perp()<25.) continue; + bool away_from_e = true; + foreach ( const Particle & e, cand_hard_e ) { + if ( deltaR(e.momentum(),jet.momentum()) < 0.2 ) { + away_from_e = false; + break; + } + } + if ( away_from_e ) recon_jets.push_back( jet ); + } + + // pTmiss + FourMomentum pTmiss; + foreach ( const Particle & p, + applyProjection<VisibleFinalState>(event, "vfs").particles() ) { + pTmiss -= p.momentum(); + } + double eTmiss = pTmiss.pT(); + + // both selections require at least 3 jets + if(recon_jets.size()<2) vetoEvent; + + // start of meff calculation + double HT=0.; + foreach( const Jet & jet, recon_jets) { + HT += jet.momentum().perp(); + } + double m_eff = HT+eTmiss; + + // hard selection exactly one candidate + // and 1 recon and at least 3 jets + if( cand_hard_e.size() + cand_hard_mu.size() == 1 && + recon_hard_e.size() + recon_hard_mu.size() == 1 && + recon_jets.size() >= 3 ) { + // get the lepton + Particle lepton = recon_hard_e.empty() ? + recon_hard_mu[0] : recon_hard_e[0]; + // lepton variables + double pT = lepton.momentum().perp(); + double mT = 2.*(pT*eTmiss - + lepton.momentum().x()*pTmiss.x() - + lepton.momentum().y()*pTmiss.y()); + mT = sqrt(mT); + HT += pT; + m_eff += pT; + + // three jet selection + if(recon_jets[0].momentum().perp()>100. && + (recon_jets.size() >= 3 || + recon_jets[3].momentum().perp() < 80. ) && + mT>100. && eTmiss>250. && eTmiss/m_eff>0.3) { + if(m_eff>1200.) _count_3jet_channel->fill(0.5,weight); + _hist_m_eff_3jet->fill(min(1599.,m_eff),weight); + } + // four jet selecton + if(recon_jets.size() >= 4 && + recon_jets[3].momentum().perp() > 80. && + mT>100. && eTmiss>250. && eTmiss/m_eff>0.1) { + if(m_eff>800.) _count_4jet_channel->fill(0.5,weight); + _hist_m_eff_4jet->fill(min(1599.,m_eff),weight); + } + } + + // soft selection exactly one candidate + // and 1 recon and 4 jets + if( cand_soft_e.size() + cand_soft_mu.size() == 1 && + recon_soft_e.size() + recon_soft_mu.size() == 1 && + recon_jets.size() >= 2 && + recon_jets[0].momentum().perp()>130.) { + // get the lepton + Particle lepton = recon_soft_e.empty() ? + recon_soft_mu[0] : recon_soft_e[0]; + // lepton variables + double pT = lepton.momentum().perp(); + double mT = 2.*(pT*eTmiss - + lepton.momentum().x()*pTmiss.x() - + lepton.momentum().y()*pTmiss.y()); + mT = sqrt(mT); + HT += pT; + m_eff += pT; + if (mT>100. && eTmiss>250.) { + if( eTmiss/m_eff>0.3 ) _count_soft_channel->fill(0.5,weight); + _hist_eTmiss_m_eff_soft->fill( eTmiss/m_eff,weight); + } + } + } + //@} + + + void finalize() { + + double norm = 4.7* crossSection()/sumOfWeights()/femtobarn; + scale(_count_3jet_channel ,norm); + scale(_count_4jet_channel ,norm); + scale(_count_soft_channel ,norm); + scale(_hist_m_eff_3jet ,200.*norm); + scale(_hist_m_eff_4jet ,200.*norm); + scale(_hist_eTmiss_m_eff_soft,0.1*norm); + + } + + private: + + /// @name Histograms + //@{ + AIDA::IHistogram1D* _count_3jet_channel; + AIDA::IHistogram1D* _count_4jet_channel; + AIDA::IHistogram1D* _count_soft_channel; + + AIDA::IHistogram1D* _hist_m_eff_3jet; + AIDA::IHistogram1D* _hist_m_eff_4jet; + AIDA::IHistogram1D* _hist_eTmiss_m_eff_soft; + //@} + + }; + + // The hook for the plugin system + DECLARE_RIVET_PLUGIN(ATLAS_2012_CONF_2012_041); + +} Modified: trunk/src/Analyses/Makefile.am ============================================================================== --- trunk/src/Analyses/Makefile.am Mon Apr 16 13:16:53 2012 (r3686) +++ trunk/src/Analyses/Makefile.am Mon Apr 16 13:24:31 2012 (r3687) @@ -76,12 +76,14 @@ ATLAS_2011_CONF_2011_098.cc \ ATLAS_2011_S9108483.cc \ ATLAS_2011_S9225137.cc \ + ATLAS_2011_S9212353.cc \ ATLAS_2012_I1083318.cc \ ATLAS_2012_I1095236.cc \ ATLAS_2012_CONF_2012_001.cc \ ATLAS_2012_CONF_2012_023.cc \ ATLAS_2012_CONF_2012_033.cc \ - ATLAS_2012_CONF_2012_037.cc + ATLAS_2012_CONF_2012_037.cc \ + ATLAS_2012_CONF_2012_041.cc endif
More information about the Rivet-svn mailing list |