[Rivet-svn] r3472 - trunk/src/Analyses

blackhole at projects.hepforge.org blackhole at projects.hepforge.org
Mon Nov 7 09:47:24 GMT 2011


Author: richardn
Date: Mon Nov  7 09:47:24 2011
New Revision: 3472

Log:
added ATLAS multijet susy analysis

Added:
   trunk/src/Analyses/ATLAS_2011_S9225137.cc
      - copied, changed from r3470, trunk/src/Analyses/ATLAS_2011_S8983313.cc
Modified:
   trunk/src/Analyses/Makefile.am

Copied and modified: trunk/src/Analyses/ATLAS_2011_S9225137.cc (from r3470, trunk/src/Analyses/ATLAS_2011_S8983313.cc)
==============================================================================
--- trunk/src/Analyses/ATLAS_2011_S8983313.cc	Wed Nov  2 16:18:10 2011	(r3470, copy source)
+++ trunk/src/Analyses/ATLAS_2011_S9225137.cc	Mon Nov  7 09:47:24 2011	(r3472)
@@ -14,15 +14,15 @@
 namespace Rivet {
 
 
-  class ATLAS_2011_S8983313 : public Analysis {
+  class ATLAS_2011_S9225137 : public Analysis {
   public:
 
     /// @name Constructors etc.
     //@{
 
     /// Constructor
-    ATLAS_2011_S8983313()
-      : Analysis("ATLAS_2011_S8983313")
+    ATLAS_2011_S9225137()
+      : Analysis("ATLAS_2011_S9225137")
     {    }
 
     //@}
@@ -36,15 +36,6 @@
     /// 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));
@@ -53,7 +44,12 @@
       veto_elecs.acceptIdPair(ELECTRON);
       addProjection(veto_elecs, "veto_elecs");
 
-
+      // 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");
 
       // projection to find the muons
       std::vector<std::pair<double, double> > eta_m;
@@ -62,11 +58,12 @@
       muons.acceptIdPair(MUON);
       addProjection(muons, "muons");
 
+      // for pTmiss
+      addProjection(VisibleFinalState(-4.9,4.9),"vfs");
 
       VetoedFinalState vfs;
       vfs.addVetoPairId(MUON);
 
-
       /// Jet finder
       addProjection(FastJets(vfs, FastJets::ANTIKT, 0.4),
 		    "AntiKtJets04");
@@ -74,20 +71,20 @@
       // 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
+      _etmissHTA = bookHistogram1D("etmissHTA", 64, 0., 16.);
+      _etmissHTB = bookHistogram1D("etmissHTB", 64, 0., 16.);
 
+      _njet55A = bookHistogram1D("njet55A", 14, 0.5, 14.5);
+      _njet55B = bookHistogram1D("njet55B", 14, 0.5, 14.5);
+      _njet80A = bookHistogram1D("njet80A", 14, 0.5, 14.5);
+      _njet80B = bookHistogram1D("njet80B", 14, 0.5, 14.5);
+
+      _count_7j55 = bookHistogram1D("count_7j55", 1, 0., 1.);
+      _count_8j55 = bookHistogram1D("count_8j55", 1, 0., 1.);
+      _count_6j80 = bookHistogram1D("count_6j80", 1, 0., 1.);
+      _count_7j80 = bookHistogram1D("count_7j80", 1, 0., 1.);
 
-      /// 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.);
     }
 
 
@@ -95,6 +92,7 @@
     void analyze(const Event& event) {
       const double weight = event.weight();
 
+      // apply electron veto region
       ParticleVector veto_e
 	= applyProjection<IdentifiedFinalState>(event, "veto_elecs").particles();
       if ( ! veto_e.empty() ) {
@@ -102,7 +100,7 @@
 	vetoEvent;
       }
 
-
+      // get the jet candidates
       Jets cand_jets;
       foreach (const Jet& jet,
 	       applyProjection<FastJets>(event, "AntiKtJets04").jetsByPt(20.0*GeV) ) {
@@ -111,11 +109,10 @@
         }
       }
 
-      ParticleVector cand_e  = applyProjection<IdentifiedFinalState>(event, "elecs").particlesByPt();
-
-
+      // candidate muons
       ParticleVector cand_mu;
-      ParticleVector chg_tracks = applyProjection<ChargedFinalState>(event, "cfs").particles();
+      ParticleVector chg_tracks = 
+	applyProjection<ChargedFinalState>(event, "cfs").particles();
       foreach ( const Particle & mu,
 		applyProjection<IdentifiedFinalState>(event, "muons").particlesByPt() ) {
 	double pTinCone = -mu.momentum().pT();
@@ -127,10 +124,18 @@
 	  cand_mu.push_back(mu);
       }
 
+      // candidate electrons
+
+      ParticleVector cand_e  = 
+	applyProjection<IdentifiedFinalState>(event, "elecs").particlesByPt();
+
+      // resolve jet/lepton ambiguity 
       Jets cand_jets_2;
       foreach ( const Jet& jet, cand_jets ) {
-	if ( fabs( jet.momentum().eta() ) >= 2.5 )
+	// candidates above eta=2.8 are jets
+	if ( fabs( jet.momentum().eta() ) >= 2.8 )
 	  cand_jets_2.push_back( jet );
+	// otherwise more the R=0.2 from an electrons
 	else {
 	  bool away_from_e = true;
 	  foreach ( const Particle & e, cand_e ) {
@@ -144,8 +149,8 @@
 	}
       }
 
-      ParticleVector recon_e, recon_mu;
-
+      // only keep electrons more than R=0.4 from jets
+      ParticleVector recon_e;
       foreach ( const Particle & e, cand_e ) {
 	bool away = true;
 	foreach ( const Jet& jet, cand_jets_2 ) {
@@ -158,6 +163,8 @@
 	  recon_e.push_back( e );
       }
 
+      // only keep muons more than R=0.4 from jets
+      ParticleVector recon_mu;
       foreach ( const Particle & mu, cand_mu ) {
 	bool away = true;
 	foreach ( const Jet& jet, cand_jets_2 ) {
@@ -170,135 +177,97 @@
 	  recon_mu.push_back( mu );
       }
 
-
       // pTmiss
-      ParticleVector vfs_particles = applyProjection<VisibleFinalState>(event, "vfs").particles();
+      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 )
+	if ( fabs( jet.momentum().eta() ) <= 2.8 )
 	  recon_jets.push_back( jet );
       }
 
-
       // now only use recon_jets, recon_mu, recon_e
 
+      // reject events with electrons and muons
       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;
+      // calculate H_T
+      double HT=0;
+      foreach ( const Jet& jet, recon_jets ) {
+	if ( jet.momentum().pT() > 40 * GeV )
+	  HT += jet.momentum().pT() ;
       }
 
-      // ==================== 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;
+      // number of jets and deltaR
+      bool pass55DeltaR=true;
+      unsigned int njet55=0;
+      bool pass80DeltaR=true;
+      unsigned int njet80=0;
+      for (unsigned int ix=0;ix<recon_jets.size();++ix) {
+	if(recon_jets[ix].momentum().pT()>80.*GeV) ++njet80;
+	if(recon_jets[ix].momentum().pT()>55.*GeV) ++njet55;
+
+	for (unsigned int iy=ix+1;iy<recon_jets.size();++iy) {
+	  if(recon_jets[ix].momentum().pT()>55.*GeV &&
+	     recon_jets[iy].momentum().pT()>55.*GeV &&
+	     deltaR(recon_jets[ix],recon_jets[ix]) <0.6 ) 
+	    pass55DeltaR = false;
+	  if(recon_jets[ix].momentum().pT()>80.*GeV &&
+	     recon_jets[iy].momentum().pT()>80.*GeV &&
+	     deltaR(recon_jets[ix],recon_jets[ix]) <0.6 ) 
+	    pass80DeltaR = false;
 	}
       }
 
-      if ( Njets < 2 ) {
-	MSG_DEBUG("Only " << Njets << " >40 GeV jets left");
+      // plots of etmiss/ht
+      double etht = eTmiss/sqrt(HT);
+      if(njet55==6) _etmissHTA->fill(etht,weight);
+      if(njet80==5) _etmissHTB->fill(etht,weight);
+
+      if(etht>1.5&&etht<2. ) {
+	_njet55A->fill(njet55,weight);
+	_njet80A->fill(njet80,weight);
+      }
+      if(etht>2. &&etht<3. ) {
+	_njet55B->fill(njet55,weight);
+	_njet80B->fill(njet80,weight);
+      }
+
+      // apply E_T/sqrt(H_T) cut
+      if(etht<=3.5*GeV) {
+	MSG_DEBUG("Fails ET/sqrt(HT) cut ");
 	vetoEvent;
       }
 
-      if ( min_dPhi <= 0.4 ) {
-	MSG_DEBUG("dPhi too small");
+      // check passes at least one delta5/ njet number cut
+      if(!(pass55DeltaR && njet55 >= 7) &&
+	 !(pass80DeltaR && njet80 >= 6) ) {
+	MSG_DEBUG("Fails DeltaR cut or jet number cuts");
 	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);
-	}
-      }
+      // 7j55
+      if(njet55>=7&&pass55DeltaR)
+	_count_7j55->fill( 0.5, weight) ;
+      // 8j55
+      if(njet55>=8&&pass55DeltaR)
+	_count_8j55->fill( 0.5, weight) ;
+      // 6j80
+      if(njet80>=6&&pass80DeltaR)
+	_count_6j80->fill( 0.5, weight) ;
+      // 7j80
+      if(njet80>=7&&pass80DeltaR)
+	_count_7j80->fill( 0.5, weight) ;
 
     }
 
@@ -306,26 +275,25 @@
 
     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;
+    AIDA::IHistogram1D* _etmissHTA;
+    AIDA::IHistogram1D* _etmissHTB;
+    AIDA::IHistogram1D* _njet55A;
+    AIDA::IHistogram1D* _njet55B;
+    AIDA::IHistogram1D* _njet80A;
+    AIDA::IHistogram1D* _njet80B;
+    AIDA::IHistogram1D* _count_7j55;
+    AIDA::IHistogram1D* _count_8j55;
+    AIDA::IHistogram1D* _count_6j80;
+    AIDA::IHistogram1D* _count_7j80;
     //@}
 
   };
 
-
-
   // The hook for the plugin system
-  DECLARE_RIVET_PLUGIN(ATLAS_2011_S8983313);
+  DECLARE_RIVET_PLUGIN(ATLAS_2011_S9225137);
 
 }

Modified: trunk/src/Analyses/Makefile.am
==============================================================================
--- trunk/src/Analyses/Makefile.am	Thu Nov  3 01:27:53 2011	(r3471)
+++ trunk/src/Analyses/Makefile.am	Mon Nov  7 09:47:24 2011	(r3472)
@@ -69,7 +69,8 @@
     ATLAS_2011_S9041966.cc \
     ATLAS_2011_CONF_2011_090.cc \
     ATLAS_2011_CONF_2011_098.cc \
-    ATLAS_2011_S9108483.cc
+    ATLAS_2011_S9108483.cc\
+    ATLAS_2011_S9225137.cc
 endif
 
 


More information about the Rivet-svn mailing list