[Rivet-svn] r3687 - in trunk: data/anainfo data/plotinfo src/Analyses

blackhole at projects.hepforge.org blackhole at projects.hepforge.org
Mon 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