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

blackhole at projects.hepforge.org blackhole at projects.hepforge.org
Wed Apr 13 16:17:09 BST 2011


Author: dgrell
Date: Wed Apr 13 16:17:09 2011
New Revision: 3055

Log:
added ATLAS 8983313: 0-lepton BSM

Added:
   trunk/data/anainfo/ATLAS_2011_S8983313.info   (contents, props changed)
      - copied, changed from r3054, trunk/data/anainfo/ATLAS_2011_S8971293.info
   trunk/src/Analyses/ATLAS_2011_S8983313.cc
Modified:
   trunk/data/anainfo/Makefile.am
   trunk/src/Analyses/Makefile.am

Copied and modified: trunk/data/anainfo/ATLAS_2011_S8983313.info (from r3054, trunk/data/anainfo/ATLAS_2011_S8971293.info)
==============================================================================
--- trunk/data/anainfo/ATLAS_2011_S8971293.info	Wed Apr 13 15:24:21 2011	(r3054, copy source)
+++ trunk/data/anainfo/ATLAS_2011_S8983313.info	Wed Apr 13 16:17:09 2011	(r3055)
@@ -1,35 +1,34 @@
-Name: ATLAS_2011_S8971293
+Name: ATLAS_2011_S8983313
 Year: 2011
-Summary: Dijet Azimuthal Decorrelations
+Summary: 0-Lepton Squark and Gluino Search
 Experiment: ATLAS
 Collider: LHC
-SpiresID: 8971293
+SpiresID: 8983313
 Status: VALIDATED
 Authors:
- - Frank Siegert <frank.siegert at cern.ch>
+ - David Grellscheid <david.grellscheid at durham.ac.uk>
 References:
- - arXiv:1102.2696
+ - arXiv:1102.5290
 RunInfo:
-  pp QCD interactions at 7000 GeV. The distributions are binned in leading pT
-  starting at 110 GeV with the last bin starting at 800 GeV.
-NumEvents: 1000000000
+  BSM signal events at 7000 GeV.
+NumEvents: 25000 for BSM signals
 Beams: [p+, p+]
 Energies: [7000]
-PtCuts: [20.0]
 Description:
-  'Dijet azimuthal decorrelation measured by ATLAS at 7 TeV. Jets are anti-
-  kt with $R=0.6$, $p_\perp>100$ GeV, $|\eta|<0.8$. The analysis is binned
-  in  leading jet $p_\perp$ bins. All data is fully corrected.'
-BibKey: Aad:2011ni
-BibTeX: '@Article{Aad:2011ni,
-     author    = "Collaboration, The ATLAS",
-     title     = "{Measurement of Dijet Azimuthal Decorrelations in pp
-                  Collisions at sqrt(s)=7 TeV}",
+  '0-lepton search for squarks and gluinos by ATLAS at 7 TeV. 
+  Event counts in four signal regions A-D are implemented as one-bin
+  histograms.'
+BibKey: daCosta:2011qk
+BibTeX: '@Article{daCosta:2011qk,
+     author    = "da Costa, Joao Barreiro Guimaraes and others",
+ collaboration = "Atlas",
+     title     = "{Search for squarks and gluinos using final states with
+                  jets and missing transverse momentum with the ATLAS
+                  detector in sqrt(s) = 7 TeV proton-proton collisions}",
      year      = "2011",
-     eprint    = "1102.2696",
+     eprint    = "1102.5290",
      archivePrefix = "arXiv",
      primaryClass  =  "hep-ex",
-     SLACcitation  = "%%CITATION = 1102.2696;%%"
-}'
-ToDo:
-  Check BibKey and BibTeX consistency when fixed on SPIRES.
+     SLACcitation  = "%%CITATION = 1102.5290;%%"
+}
+'

Modified: trunk/data/anainfo/Makefile.am
==============================================================================
--- trunk/data/anainfo/Makefile.am	Wed Apr 13 15:24:21 2011	(r3054)
+++ trunk/data/anainfo/Makefile.am	Wed Apr 13 16:17:09 2011	(r3055)
@@ -14,6 +14,7 @@
   ATLAS_2010_S8919674.info \
   ATLAS_2011_S8924791.info \
   ATLAS_2011_S8971293.info \
+  ATLAS_2011_S8983313.info \
   ATLAS_2010_CONF_2010_049.info \
   ATLAS_2010_S8994773.info \
   BELLE_2006_S6265367.info \

Added: trunk/src/Analyses/ATLAS_2011_S8983313.cc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/src/Analyses/ATLAS_2011_S8983313.cc	Wed Apr 13 16:17:09 2011	(r3055)
@@ -0,0 +1,315 @@
+// -*- 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/FastJets.hh"
+#include "Rivet/Tools/RivetMT2.hh"
+
+namespace Rivet {
+
+
+  class ATLAS_2011_S8983313 : public Analysis {
+  public:
+
+    /// @name Constructors etc.
+    //@{
+
+    /// Constructor
+    ATLAS_2011_S8983313()
+      : Analysis("ATLAS_2011_S8983313")
+    {
+      /// Set whether your finalize method needs the generator cross section
+      setNeedsCrossSection(false);
+    }
+
+    //@}
+
+
+  public:
+
+    /// @name Analysis methods
+    //@{
+
+    /// Book histograms and initialise 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, 10.0*GeV);
+      elecs.acceptIdPair(ELECTRON);
+      addProjection(elecs, "elecs");
+
+
+
+      // veto region electrons
+      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
+      addProjection(FastJets(FinalState(), FastJets::ANTIKT, 0.4), 
+		    "AntiKtJets04");
+
+      // all tracks (to do deltaR with leptons)
+      addProjection(ChargedFinalState(-3.0,3.0),"cfs");
+
+      // for pTmiss
+      addProjection(VisibleFinalState(-4.9,4.9),"vfs");
+
+
+      /// Book histograms
+      _count_A = bookHistogram1D("count_A", 1, 0., 1.);
+      _count_B = bookHistogram1D("count_B", 1, 0., 1.);
+      _count_C = bookHistogram1D("count_C", 1, 0., 1.);
+      _count_D = bookHistogram1D("count_D", 1, 0., 1.);
+
+      _hist_meff_A  = bookHistogram1D("m_eff_A", 30, 0., 3000.);
+      _hist_mT2_B   = bookHistogram1D("m_T2", 25, 0., 1000.);
+      _hist_meff_CD = bookHistogram1D("m_eff_C_D", 30, 0., 3000.);
+      _hist_eTmiss  = bookHistogram1D("Et_miss", 20, 0., 1000.);
+    }
+
+
+    /// 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() ) < 4.9 ) {
+          cand_jets.push_back(jet);
+        }
+      } 
+
+      ParticleVector cand_e  = applyProjection<IdentifiedFinalState>(event, "elecs").particlesByPt();
+      
+
+      ParticleVector cand_mu;
+      ParticleVector chg_tracks = applyProjection<ChargedFinalState>(event, "cfs").particles();
+      foreach ( const Particle & mu, applyProjection<IdentifiedFinalState>(event, "muons").particlesByPt() ) {
+	double pTinCone = 0.0;
+	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);
+      }
+
+      Jets cand_jets_2;
+      foreach ( const Jet& jet, cand_jets ) {
+	if ( fabs( jet.momentum().eta() ) >= 2.5 )
+	  cand_jets_2.push_back( jet );
+	else {
+	  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 );
+	}
+      }
+
+      ParticleVector recon_e, recon_mu;
+      foreach ( const Jet& jet, cand_jets_2 ) {
+	foreach ( const Particle & e, cand_e ) {
+	  if ( deltaR(e.momentum(),jet.momentum()) >= 0.4 )
+	    recon_e.push_back( e );
+	}
+	foreach ( const Particle & mu, cand_mu ) {
+	  if ( deltaR(mu.momentum(),jet.momentum()) >= 0.4 )
+	    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 ) {
+	if ( fabs( jet.momentum().eta() ) <= 2.5 )
+	  recon_jets.push_back( jet );
+      }
+
+      
+      // now only use recon_jets, recon_mu, recon_e
+
+      if ( ! ( recon_mu.empty() && recon_e.empty() ) ) {
+	MSG_DEBUG("Charged leptons left after selection");
+	vetoEvent;
+      }
+
+      if ( eTmiss <= 100 * GeV ) {
+	MSG_DEBUG("Not enough eTmiss: " << eTmiss << " < 100");
+	vetoEvent;
+      }
+
+
+      if ( recon_jets.empty() || recon_jets[0].momentum().pT() <= 120.0 * GeV ) {
+	MSG_DEBUG("No hard leading jet in " << recon_jets.size() << " jets");
+	vetoEvent;
+      }
+	
+      // ==================== observables ====================
+
+      // Njets, min_dPhi
+
+      int Njets = 0;
+      double min_dPhi = 999.999;
+      double pTmiss_phi = pTmiss.phi();
+      foreach ( const Jet& jet, recon_jets ) {
+	if ( jet.momentum().pT() > 40 * GeV ) {
+	  if ( Njets < 3 )
+	    min_dPhi = min( min_dPhi, 
+			    deltaPhi( pTmiss_phi, jet.momentum().phi() ) );
+	  ++Njets;
+	}
+      }
+
+      if ( Njets < 2 ) {
+	MSG_DEBUG("Only " << Njets << " >40 GeV jets left");
+	vetoEvent;
+      }
+
+      if ( min_dPhi <= 0.4 ) {
+	MSG_DEBUG("dPhi too small");
+	vetoEvent;
+      }
+
+      // m_eff
+
+      double m_eff_2j = eTmiss 
+	+ recon_jets[0].momentum().pT() 
+	+ recon_jets[1].momentum().pT();
+
+      double m_eff_3j = recon_jets.size() < 3 ? -999.0 : m_eff_2j + recon_jets[2].momentum().pT();
+
+      // etmiss / m_eff
+
+      double et_meff_2j = eTmiss / m_eff_2j;
+      double et_meff_3j = eTmiss / m_eff_3j;
+              
+      FourMomentum a = recon_jets[0].momentum();
+      FourMomentum b = recon_jets[1].momentum();
+
+      double m_T2 = mT2::mT2( a,
+			      b,
+			      pTmiss,
+			      0.0 ); // zero mass invisibles
+      
+  
+    // ==================== FILL ====================
+
+      MSG_DEBUG( "Trying to fill " 
+		 << Njets << ' '
+		 << m_eff_2j << ' '
+		 << et_meff_2j << ' '
+		 << m_eff_3j << ' '
+		 << et_meff_3j << ' '
+		 << m_T2 );
+
+      _hist_eTmiss->fill(eTmiss, weight);
+
+      // AAAAAAAAAA
+      if ( et_meff_2j > 0.3 ) {
+	_hist_meff_A->fill(m_eff_2j, weight);
+	if ( m_eff_2j > 500 * GeV ) {
+	  MSG_DEBUG("Hits A");
+	  _count_A->fill(0.5, weight);
+	}
+      }
+
+      // BBBBBBBBBB
+      _hist_mT2_B->fill(m_T2, weight);
+      if ( m_T2 > 300 * GeV ) {
+	MSG_DEBUG("Hits B");
+	_count_B->fill(0.5, weight);
+      }
+
+      // need 3 jets for C and D
+      if ( Njets >= 3 && et_meff_3j > 0.25 ) {
+	
+	_hist_meff_CD->fill(m_eff_3j, weight);
+	
+	// CCCCCCCCCC
+	if ( m_eff_3j > 500 * GeV ) {
+	  MSG_DEBUG("Hits C");
+	  _count_C->fill(0.5, weight);
+	}
+
+	// DDDDDDDDDD
+	if ( m_eff_3j > 1000 * GeV ) {
+	  MSG_DEBUG("Hits D");
+	  _count_D->fill(0.5, weight);
+	}
+      }
+
+    }
+
+    //@}
+    
+    void finalize() {}
+
+  private:
+
+    /// @name Histograms
+    //@{
+    AIDA::IHistogram1D* _count_A;
+    AIDA::IHistogram1D* _count_B;
+    AIDA::IHistogram1D* _count_C;
+    AIDA::IHistogram1D* _count_D;
+    AIDA::IHistogram1D* _hist_meff_A;
+    AIDA::IHistogram1D* _hist_mT2_B;
+    AIDA::IHistogram1D* _hist_meff_CD;
+    AIDA::IHistogram1D* _hist_eTmiss;
+    //@}
+
+
+  };
+
+
+
+  // This global object acts as a hook for the plugin system
+  AnalysisBuilder<ATLAS_2011_S8983313> plugin_ATLAS_2011_S8983313;
+
+
+}

Modified: trunk/src/Analyses/Makefile.am
==============================================================================
--- trunk/src/Analyses/Makefile.am	Wed Apr 13 15:24:21 2011	(r3054)
+++ trunk/src/Analyses/Makefile.am	Wed Apr 13 16:17:09 2011	(r3055)
@@ -51,7 +51,8 @@
     ATLAS_2010_S8919674.cc \
     ATLAS_2011_S8924791.cc \
     ATLAS_2011_S8971293.cc \
-    ATLAS_2010_S8994773.cc
+    ATLAS_2010_S8994773.cc \
+    ATLAS_2011_S8983313.cc
 if ENABLE_UNVALIDATED
 RivetATLASAnalyses_la_SOURCES += \
     ATLAS_2010_CONF_2010_049.cc


More information about the Rivet-svn mailing list