[Rivet-svn] r3970 - in branches/2012-06-aidarivet: data/anainfo src/Analyses

blackhole at projects.hepforge.org blackhole at projects.hepforge.org
Mon Oct 22 12:33:05 BST 2012


Author: richardn
Date: Mon Oct 22 12:33:05 2012
New Revision: 3970

Log:
added latest ATLAS 4-lepton SUSY analysis

Added:
   branches/2012-06-aidarivet/data/anainfo/ATLAS_2012_I1190891.info
      - copied, changed from r3969, branches/2012-06-aidarivet/data/anainfo/ATLAS_2012_CONF_2012_001.info
   branches/2012-06-aidarivet/src/Analyses/ATLAS_2012_I1190891.cc
      - copied, changed from r3966, branches/2012-06-aidarivet/src/Analyses/ATLAS_2012_CONF_2012_001.cc
Modified:
   branches/2012-06-aidarivet/data/anainfo/Makefile.am
   branches/2012-06-aidarivet/src/Analyses/Makefile.am

Copied and modified: branches/2012-06-aidarivet/data/anainfo/ATLAS_2012_I1190891.info (from r3969, branches/2012-06-aidarivet/data/anainfo/ATLAS_2012_CONF_2012_001.info)
==============================================================================
--- branches/2012-06-aidarivet/data/anainfo/ATLAS_2012_CONF_2012_001.info	Wed Oct 17 15:47:49 2012	(r3969, copy source)
+++ branches/2012-06-aidarivet/data/anainfo/ATLAS_2012_I1190891.info	Mon Oct 22 12:33:05 2012	(r3970)
@@ -1,14 +1,16 @@
-Name: ATLAS_2012_CONF_2012_001
+Name: ATLAS_2012_I1190891
 Year: 2012
 Summary: 4 or more lepton plus missing transverse energy SUSY search
 Experiment: ATLAS
 Collider: LHC
-Status: PRELIMINARY
+InspireID: 1190891
+Status: UNVALIDATED
 Authors:
  - Peter Richardson <peter.richardson at durham.ac.uk>
 References:
  - ATLAS-CONF-2012-001
  - ATLAS-CONF-2012-035
+ - arXiv:1210.4457
 RunInfo:
   BSM signal events at 7000 GeV.
 NumEvents: 25000 for BSM signals
@@ -16,11 +18,20 @@
 Energies: [7000]
 NeedCrossSection: yes
 Description:
-  'Search for SUSY using events with 4 or more leptons in association with
+  'Search for R-parity violating SUSY using events with 4 or more leptons in association with
    missing transverse energy in proton-proton
    collisions at a centre-of-mass energy of 7 TeV. The data sample has a total
-   integrated luminosity of 2.06 fb$^{-1}$. There is no reference data and
-   in addition to the control plots from the paper the number of events in
-   the two signal regions,
-   correctly normalized to an integrated luminosity 2.06 fb$^{-1}$,
-   are calculated.'
+   integrated luminosity of 4.7 fb$^{-1}$.'
+BibTeX: '@article{Aad:2012kr,
+      author         = "Aad, Georges and others",
+      title          = "{Search for R-parity-violating supersymmetry in events
+                        with four or more leptons in sqrt(s) = 7 TeV pp collisions
+                        with the ATLAS detector}",
+      collaboration  = "ATLAS Collaboration",
+      year           = "2012",
+      eprint         = "1210.4457",
+      archivePrefix  = "arXiv",
+      primaryClass   = "hep-ex",
+      reportNumber   = "CERN-PH-EP-2012-276",
+      SLACcitation   = "%%CITATION = ARXIV:1210.4457;%%",
+}'

Modified: branches/2012-06-aidarivet/data/anainfo/Makefile.am
==============================================================================
--- branches/2012-06-aidarivet/data/anainfo/Makefile.am	Wed Oct 17 15:47:49 2012	(r3969)
+++ branches/2012-06-aidarivet/data/anainfo/Makefile.am	Mon Oct 22 12:33:05 2012	(r3970)
@@ -61,6 +61,7 @@
   ATLAS_2012_I1117704.info \
   ATLAS_2012_I1180197.info \
   ATLAS_2012_I1186556.info \
+  ATLAS_2012_I1190891.info \
   ATLAS_2012_CONF_2012_103.info \
   ATLAS_2012_CONF_2012_104.info \
   ATLAS_2012_CONF_2012_105.info \

Copied and modified: branches/2012-06-aidarivet/src/Analyses/ATLAS_2012_I1190891.cc (from r3966, branches/2012-06-aidarivet/src/Analyses/ATLAS_2012_CONF_2012_001.cc)
==============================================================================
--- branches/2012-06-aidarivet/src/Analyses/ATLAS_2012_CONF_2012_001.cc	Wed Oct 17 15:06:36 2012	(r3966, copy source)
+++ branches/2012-06-aidarivet/src/Analyses/ATLAS_2012_I1190891.cc	Mon Oct 22 12:33:05 2012	(r3970)
@@ -14,15 +14,15 @@
 namespace Rivet {
 
   /// @author Peter Richardson
-  class ATLAS_2012_CONF_2012_001 : public Analysis {
+  class ATLAS_2012_I1190891 : public Analysis {
   public:
 
     /// @name Constructors etc.
     //@{
 
     /// Constructor
-    ATLAS_2012_CONF_2012_001()
-      : Analysis("ATLAS_2012_CONF_2012_001")
+    ATLAS_2012_I1190891()
+      : Analysis("ATLAS_2012_I1190891")
     {    }
 
     //@}
@@ -63,27 +63,27 @@
       // all tracks (to do deltaR with leptons)
       addProjection(ChargedFinalState(-3.0,3.0),"cfs");
 
-      // Book histograms
-      _hist_leptonpT.push_back(bookHistogram1D(1,1,1));
-      _hist_leptonpT.push_back(bookHistogram1D(2,1,1));
-      _hist_leptonpT.push_back(bookHistogram1D(3,1,1));
-      _hist_leptonpT.push_back(bookHistogram1D(4,1,1));
-      _hist_njet   = bookHistogram1D(5,1,1);
-      _hist_etmiss = bookHistogram1D(6,1,1);
-      _hist_mSFOS  = bookHistogram1D(7,1,1);
-      _hist_meff   = bookHistogram1D(8,1,1);
-
-      _hist_leptonpT_MC.push_back(bookHistogram1D("hist_lepton_pT_1", 26, 0., 260));
-      _hist_leptonpT_MC.push_back(bookHistogram1D("hist_lepton_pT_2", 15, 0., 150));
-      _hist_leptonpT_MC.push_back(bookHistogram1D("hist_lepton_pT_3", 20, 0., 100));
-      _hist_leptonpT_MC.push_back(bookHistogram1D("hist_lepton_pT_4", 20, 0., 100));
-      _hist_njet_MC   = bookHistogram1D("hist_njet", 7, -0.5, 6.5);
-      _hist_etmiss_MC = bookHistogram1D("hist_etmiss",11,0.,220.);
-      _hist_mSFOS_MC  = bookHistogram1D("hist_m_SFOS",13,0.,260.);
-      _hist_meff_MC   = bookHistogram1D("hist_m_eff",19,0.,950.);
+      // // Book histograms
+      // _hist_leptonpT.push_back(bookHistogram1D(1,1,1));
+      // _hist_leptonpT.push_back(bookHistogram1D(2,1,1));
+      // _hist_leptonpT.push_back(bookHistogram1D(3,1,1));
+      // _hist_leptonpT.push_back(bookHistogram1D(4,1,1));
+      // _hist_njet   = bookHistogram1D(5,1,1);
+      // _hist_etmiss = bookHistogram1D(6,1,1);
+      // _hist_mSFOS  = bookHistogram1D(7,1,1);
+      // _hist_meff   = bookHistogram1D(8,1,1);
+
+      // _hist_leptonpT_MC.push_back(bookHistogram1D("hist_lepton_pT_1", 26, 0., 260));
+      // _hist_leptonpT_MC.push_back(bookHistogram1D("hist_lepton_pT_2", 15, 0., 150));
+      // _hist_leptonpT_MC.push_back(bookHistogram1D("hist_lepton_pT_3", 20, 0., 100));
+      // _hist_leptonpT_MC.push_back(bookHistogram1D("hist_lepton_pT_4", 20, 0., 100));
+      // _hist_njet_MC   = bookHistogram1D("hist_njet", 7, -0.5, 6.5);
+      // _hist_etmiss_MC = bookHistogram1D("hist_etmiss",11,0.,220.);
+      // _hist_mSFOS_MC  = bookHistogram1D("hist_m_SFOS",13,0.,260.);
+      // _hist_meff_MC   = bookHistogram1D("hist_m_eff",19,0.,950.);
 
-      _count_SR1 = bookHistogram1D("count_SR1", 1, 0., 1.);
-      _count_SR2 = bookHistogram1D("count_SR2", 1, 0., 1.);
+      // _count_SR1 = bookHistogram1D("count_SR1", 1, 0., 1.);
+      // _count_SR2 = bookHistogram1D("count_SR2", 1, 0., 1.);
     }
 
 
@@ -94,7 +94,7 @@
       Jets cand_jets;
       foreach (const Jet& jet,
                applyProjection<FastJets>(event, "AntiKtJets04").jetsByPt(20.0*GeV) ) {
-        if ( fabs( jet.momentum().eta() ) < 2.8 ) {
+        if ( fabs( jet.momentum().eta() ) < 2.5 ) {
           cand_jets.push_back(jet);
         }
       }
@@ -118,10 +118,6 @@
       ParticleVector cand_e;
       foreach ( const Particle & e,
                 applyProjection<IdentifiedFinalState>(event, "elecs").particlesByPt() ) {
-        double eta = e.momentum().eta();
-        // remove electrons with pT<15 in old veto region
-        if( fabs(eta)>1.37 && fabs(eta) < 1.52 && e.momentum().perp()< 15.*GeV)
-          continue;
         double pTinCone = -e.momentum().perp();
         foreach ( const Particle & track, chg_tracks ) {
           if ( deltaR(e.momentum(),track.momentum()) <= 0.2 )
@@ -147,7 +143,7 @@
       }
 
       // only keep electrons more than R=0.4 from jets
-      ParticleVector recon_e;
+      ParticleVector cand2_e;
       for(unsigned int ie=0;ie<cand_e.size();++ie) {
         const Particle & e = cand_e[ie];
         // at least 0.4 from any jets
@@ -167,21 +163,37 @@
             }
           }
         }
-        // and 0.1 from electrons
+        // and 0.1 from electrons ( keep higher energy)
         for(unsigned int ie2=0;ie2<cand_e.size();++ie2) {
           if(ie==ie2) continue;
-          if ( deltaR(e.momentum(),cand_e[ie2].momentum()) < 0.1 ) {
-            away = false;
-            break;
-          }
+          if ( deltaR(e.momentum(),cand_e[ie2].momentum()) < 0.1 && 
+	       e.momentum().E() < cand_e[ie2].momentum().E() ) {
+	    away = false;
+	    break;
+	  }
         }
         // if isolated keep it
         if ( away )
-          recon_e.push_back( e );
+	  cand2_e.push_back( e );
+      }
+
+      // remove e+e- pairs with mass < 20.
+      ParticleVector recon_e;
+      for(unsigned int ie=0;ie<cand2_e.size();++ie) {
+	bool pass = true;
+	for(unsigned int ie2=0;ie2<cand2_e.size();++ie2) {
+	  if(cand2_e[ie].pdgId()*cand2_e[ie2].pdgId()>0) continue;
+	  double mtest = (cand2_e[ie].momentum()+cand2_e[ie2].momentum()).mass();
+	  if(mtest<=20.) {
+	    pass = false;
+	    break;
+	  }
+	}
+	if(pass) recon_e.push_back(cand2_e[ie]);
       }
 
       // only keep muons more than R=0.4 from jets
-      ParticleVector recon_mu;
+      ParticleVector cand2_mu;
       for(unsigned int imu=0;imu<cand_mu.size();++imu) {
         const Particle & mu = cand_mu[imu];
         bool away = true;
@@ -201,16 +213,23 @@
             }
           }
         }
-        // and 0.1 from muons
-        for(unsigned int imu2=0;imu2<cand_mu.size();++imu2) {
-          if(imu==imu2) continue;
-          if ( deltaR(mu.momentum(),cand_mu[imu2].momentum()) < 0.1 ) {
-            away = false;
-            break;
-          }
-        }
         if ( away )
-          recon_mu.push_back( mu );
+          cand2_mu.push_back( mu );
+      }
+
+      // remove mu+mu- pairs with mass < 20.
+      ParticleVector recon_mu;
+      for(unsigned int imu=0;imu<cand2_mu.size();++imu) {
+	bool pass = true;
+	for(unsigned int imu2=0;imu2<cand2_mu.size();++imu2) {
+	  if(cand2_mu[imu].pdgId()*cand2_mu[imu2].pdgId()>0) continue;
+	  double mtest = (cand2_mu[imu].momentum()+cand2_mu[imu2].momentum()).mass();
+	  if(mtest<=20.) {
+	    pass = false;
+	    break;
+	  }
+	}
+	if(pass) recon_mu.push_back(cand2_mu[imu]);
       }
 
       // pTmiss
@@ -230,25 +249,20 @@
         vetoEvent;
       }
 
-      // ATLAS calo problem
-      if(rand()/static_cast<double>(RAND_MAX)<=0.42) {
-        foreach ( const Particle & e, recon_e ) {
-          double eta = e.momentum().eta();
-          double phi = e.momentum().azimuthalAngle(MINUSPI_PLUSPI);
-          if(eta>-0.1&&eta<1.5&&phi>-0.9&&phi<-0.5)
-            vetoEvent;
-        }
-        foreach ( const Jet & jet, recon_jets ) {
-          double eta = jet.momentum().rapidity();
-          double phi = jet.momentum().azimuthalAngle(MINUSPI_PLUSPI);
-          if(jet.momentum().perp()>40 && eta>-0.1&&eta<1.5&&phi>-0.9&&phi<-0.5)
-            vetoEvent;
-        }
-      }
+      // check if passes single lepton trigger
+      bool passSingle =  
+	( !recon_e .empty() && recon_e[0] .momentum().perp()>25. )|| 
+	( !recon_mu.empty() && recon_mu[0].momentum().perp()>20.);
+
+      // or two lepton trigger
+      bool passDouble = 
+	( recon_mu.size()>=2 && recon_mu[1].momentum().perp()>12.) ||
+	( recon_e .size()>=2 && recon_e [1].momentum().perp()>17.) ||
+	( !recon_e.empty() && !recon_mu.empty() && 
+	  recon_e[0].momentum().perp()>15. &&  recon_mu[0].momentum().perp()>10.);
 
-      // check at least one e/mu passing trigger
-      if( !( !recon_e .empty() && recon_e[0] .momentum().perp()>25.)  &&
-          !( !recon_mu.empty() && recon_mu[0].momentum().perp()>20.) ) {
+      // must pass a trigger
+      if( !passSingle && !passDouble ) {
         MSG_DEBUG("Hardest lepton fails trigger");
         vetoEvent;
       }
@@ -264,103 +278,36 @@
         if(pT>40.) meff += pT;
       }
 
-      double mSFOS=1e30, mdiff=1e30,mMin=1e30;
       // mass of SFOS pairs closest to the Z mass
       for(unsigned int ix=0;ix<recon_e.size();++ix) {
         for(unsigned int iy=ix+1;iy<recon_e.size();++iy) {
           if(recon_e[ix].pdgId()*recon_e[iy].pdgId()>0) continue;
           double mtest = (recon_e[ix].momentum()+recon_e[iy].momentum()).mass();
-          if(fabs(mtest-90.)<mdiff) {
-            mSFOS = mtest;
-            mdiff = fabs(mtest-90.);
-          }
-          else if(mMin>mtest) {
-            mMin = mtest;
-          }
+	  if(mtest>81.2 && mtest<101.2) vetoEvent;
         }
       }
       for(unsigned int ix=0;ix<recon_mu.size();++ix) {
         for(unsigned int iy=ix+1;iy<recon_mu.size();++iy) {
           if(recon_mu[ix].pdgId()*recon_mu[iy].pdgId()>0) continue;
-          double mtest = (recon_mu[ix].momentum()+recon_mu[iy].momentum()).mass();
-          if(fabs(mtest-91.118)<mdiff) {
-            mSFOS = mtest;
-            mdiff = fabs(mtest-91.118);
-          }
-          else if(mMin>mtest) {
-            mMin = mtest;
-          }
-        }
-      }
-      // cut to reject low mass Drell-Yan
-      if(mMin<=20.) {
-        vetoEvent;
+	  double mtest = (recon_mu[ix].momentum()+recon_mu[iy].momentum()).mass();
+	  if(mtest>81.2 && mtest<101.2) vetoEvent;
+	}
       }
 
       // make the control plots
-      // lepton pT
-      unsigned int ie=0,imu=0;
-      for(unsigned int ix=0;ix<4;++ix) {
-        double pTe  = ie <recon_e .size() ?
-          recon_e [ie ].momentum().perp() : -1*GeV;
-        double pTmu = imu<recon_mu.size() ?
-          recon_mu[imu].momentum().perp() : -1*GeV;
-        if(pTe>pTmu) {
-          _hist_leptonpT   [ix]->fill(pTe ,weight);
-          _hist_leptonpT_MC[ix]->fill(pTe ,weight);
-          ++ie;
-        }
-        else {
-          _hist_leptonpT   [ix]->fill(pTmu,weight);
-          _hist_leptonpT_MC[ix]->fill(pTmu,weight);
-          ++imu;
-        }
-      }
-      // njet
-      _hist_njet   ->fill(recon_jets.size(),weight);
-      _hist_njet_MC->fill(recon_jets.size(),weight);
-      // etmiss
-      _hist_etmiss   ->fill(eTmiss,weight);
-      _hist_etmiss_MC->fill(eTmiss,weight);
-      if(mSFOS<1e30) {
-        _hist_mSFOS   ->fill(mSFOS,weight);
-        _hist_mSFOS_MC->fill(mSFOS,weight);
-      }
-      _hist_meff   ->fill(meff,weight);
-      _hist_meff_MC->fill(meff,weight);
-
+      _hist_etmiss ->fill(eTmiss,weight);
+      _hist_meff   ->fill(meff  ,weight);
       // finally the counts
-      if(eTmiss>50.) {
-        _count_SR1->fill(0.5,weight);
-        if(mdiff>10.) _count_SR2->fill(0.5,weight);
-      }
+      if(eTmiss>50.) _count_SR1->fill(0.5,weight);
+      if(meff >300.) _count_SR2->fill(0.5,weight);
     }
 
     //@}
 
     void finalize() {
-      double norm = crossSection()/femtobarn*2.06/sumOfWeights();
-      // these are number of events at 2.06fb^-1 per 10 GeV
-      scale(_hist_leptonpT   [0],norm*10.);
-      scale(_hist_leptonpT   [1],norm*10.);
-      scale(_hist_leptonpT_MC[0],norm*10.);
-      scale(_hist_leptonpT_MC[1],norm*10.);
-      // these are number of events at 2.06fb^-1 per 5 GeV
-      scale(_hist_leptonpT   [2],norm*5.);
-      scale(_hist_leptonpT   [3],norm*5.);
-      scale(_hist_leptonpT_MC[2],norm*5.);
-      scale(_hist_leptonpT_MC[3],norm*5.);
-      // these are number of events at 2.06fb^-1 per 20 GeV
-      scale(_hist_etmiss      ,norm*20.);
-      scale(_hist_mSFOS       ,norm*20.);
-      scale(_hist_etmiss_MC   ,norm*20.);
-      scale(_hist_mSFOS_MC    ,norm*20.);
-      // these are number of events at 2.06fb^-1 per 50 GeV
-      scale(_hist_meff_MC     ,norm*50.);
-      scale(_hist_meff_MC     ,norm*50.);
-      // these are number of events at 2.06fb^-1
-      scale(_hist_njet        ,norm);
-      scale(_hist_njet_MC     ,norm);
+      double norm = crossSection()/femtobarn*4.7/sumOfWeights();
+      scale(_hist_etmiss,norm* 50.);
+      scale(_hist_meff  ,norm*150.);
       scale(_count_SR1,norm);
       scale(_count_SR2,norm);
     }
@@ -369,15 +316,8 @@
 
     /// @name Histograms
     //@{
-    vector<AIDA::IHistogram1D*> _hist_leptonpT,_hist_leptonpT_MC;
-    AIDA::IHistogram1D* _hist_njet;
-    AIDA::IHistogram1D* _hist_njet_MC;
     AIDA::IHistogram1D* _hist_etmiss;
-    AIDA::IHistogram1D* _hist_etmiss_MC;
-    AIDA::IHistogram1D* _hist_mSFOS;
-    AIDA::IHistogram1D* _hist_mSFOS_MC;
     AIDA::IHistogram1D* _hist_meff;
-    AIDA::IHistogram1D* _hist_meff_MC;
     AIDA::IHistogram1D* _count_SR1;
     AIDA::IHistogram1D* _count_SR2;
     //@}
@@ -385,6 +325,6 @@
   };
 
   // The hook for the plugin system
-  DECLARE_RIVET_PLUGIN(ATLAS_2012_CONF_2012_001);
+  DECLARE_RIVET_PLUGIN(ATLAS_2012_I1190891);
 
 }

Modified: branches/2012-06-aidarivet/src/Analyses/Makefile.am
==============================================================================
--- branches/2012-06-aidarivet/src/Analyses/Makefile.am	Wed Oct 17 15:47:49 2012	(r3969)
+++ branches/2012-06-aidarivet/src/Analyses/Makefile.am	Mon Oct 22 12:33:05 2012	(r3970)
@@ -97,6 +97,7 @@
     ATLAS_2012_I946427.cc \
     ATLAS_2012_I1180197.cc \
     ATLAS_2012_I1186556.cc \
+    ATLAS_2012_I1190891.cc \
     ATLAS_2012_CONF_2012_103.cc \
     ATLAS_2012_CONF_2012_104.cc \
     ATLAS_2012_CONF_2012_105.cc \


More information about the Rivet-svn mailing list