[Rivet-svn] r3242 - in branches/2011-07-aida2yoda: . data/anainfo src/Analyses

blackhole at projects.hepforge.org blackhole at projects.hepforge.org
Fri Jul 22 11:40:35 BST 2011


Author: hoeth
Date: Fri Jul 22 11:40:34 2011
New Revision: 3242

Log:
merged r3232 from trunk

Modified:
   branches/2011-07-aida2yoda/ChangeLog
   branches/2011-07-aida2yoda/data/anainfo/MC_TTBAR.info
   branches/2011-07-aida2yoda/src/Analyses/MC_TTBAR.cc

Modified: branches/2011-07-aida2yoda/ChangeLog
==============================================================================
--- branches/2011-07-aida2yoda/ChangeLog	Fri Jul 22 11:35:13 2011	(r3241)
+++ branches/2011-07-aida2yoda/ChangeLog	Fri Jul 22 11:40:34 2011	(r3242)
@@ -1,3 +1,13 @@
+2011-07-20  Andy Buckley  <andy at insectnation.org>
+
+	* Making MC_TTBAR work with semileptonic ttbar events and generally
+	tidying the code.
+
+2011-07-19  Andy Buckley  <andy at insectnation.org>
+
+	* Version bump to 1.5.2.b01 in preparation for a release in the
+	very near future.
+
 2011-07-18  David Mallows <dave.mallows at gmail.com>
 
 	* Replaced MC_TTBAR: Added t,tbar reconstruction. Not yet working.

Modified: branches/2011-07-aida2yoda/data/anainfo/MC_TTBAR.info
==============================================================================
--- branches/2011-07-aida2yoda/data/anainfo/MC_TTBAR.info	Fri Jul 22 11:35:13 2011	(r3241)
+++ branches/2011-07-aida2yoda/data/anainfo/MC_TTBAR.info	Fri Jul 22 11:40:34 2011	(r3242)
@@ -2,12 +2,14 @@
 Summary: MC analysis for ttbar studies
 Status: UNVALIDATED
 Authors:
- - Holger Schulz <hschulz at physik.hu-berlin.de>
+ - Hendrik Hoeth <hendrik.hoeth at cern.ch>
  - Andy Buckley <andy.buckley at cern.ch>
+ - Dave Mallows
+ - Michal Kawalec
 RunInfo:
-  "* For Pythia6, set MSEL=6.
+ "* For Pythia6, set MSEL=6 and fix $W^+$ and $W^-$ decays to semi-leptonic modes via the MDME array.
   * For Fortran Herwig/Jimmy select IPROC=1706."
 NumEvents: 10000
 PtCuts: [0]
 Description:
-  This is a pure Monte Carlo study for t-tbar production.
+  This is a pure Monte Carlo study for semi-leptonic $t\bar{t}$ production.

Modified: branches/2011-07-aida2yoda/src/Analyses/MC_TTBAR.cc
==============================================================================
--- branches/2011-07-aida2yoda/src/Analyses/MC_TTBAR.cc	Fri Jul 22 11:35:13 2011	(r3241)
+++ branches/2011-07-aida2yoda/src/Analyses/MC_TTBAR.cc	Fri Jul 22 11:40:34 2011	(r3242)
@@ -1,6 +1,5 @@
 #include "Rivet/Analysis.hh"
 #include "Rivet/Projections/FinalState.hh"
-#include "Rivet/Projections/ChargedFinalState.hh"
 #include "Rivet/Projections/ChargedLeptons.hh"
 #include "Rivet/Projections/FastJets.hh"
 #include "Rivet/AnalysisLoader.hh"
@@ -8,7 +7,7 @@
 
 
 namespace Rivet {
-  
+
   class MC_TTBAR : public Analysis {
 
   public:
@@ -16,24 +15,25 @@
     MC_TTBAR()
       : Analysis("MC_TTBAR")
     {   }
-    
+
+
     /// @name Analysis methods
     //@{
+
     void init() {
-      addProjection(ChargedFinalState(-3.5, 3.5, 0.5*GeV), "CFS");
-      addProjection(ChargedLeptons(ChargedFinalState(-3.5, 3.5, 30*GeV)), "LFS");
-      addProjection(FastJets(FinalState(-2.5, 2.5, 0*GeV), FastJets::KT, 0.5), "JETS");
+      addProjection(ChargedLeptons(FinalState(-4.2, 4.2, 30*GeV)), "LFS");
+      addProjection(FastJets(FinalState(-4.2, 4.2, 0*GeV), FastJets::ANTIKT, 0.4), "Jets");
 
-      _h_jet_0_pT = bookHisto1D("jet_0_pT", 50, 0, 250);
       _h_jet_1_pT = bookHisto1D("jet_1_pT", 50, 0, 250);
       _h_jet_2_pT = bookHisto1D("jet_2_pT", 50, 0, 250);
       _h_jet_3_pT = bookHisto1D("jet_3_pT", 50, 0, 250);
+      _h_jet_4_pT = bookHisto1D("jet_4_pT", 50, 0, 250);
 
-      _h_bjet_0_pT = bookHisto1D("bjet_0_pT", 50, 0, 250);
-      _h_bjet_1_pT = bookHisto1D("bjet_1_pT", 50, 0, 250);
+      _h_bjet_1_pT = bookHisto1D("jetb_1_pT", 50, 0, 250);
+      _h_bjet_2_pT = bookHisto1D("jetb_2_pT", 50, 0, 250);
 
-      _h_ljet_0_pT = bookHisto1D("ljet_0_pT", 50, 0, 250);
-      _h_ljet_1_pT = bookHisto1D("ljet_1_pT", 50, 0, 250);
+      _h_ljet_1_pT = bookHisto1D("jetl_1_pT", 50, 0, 250);
+      _h_ljet_2_pT = bookHisto1D("jetl_2_pT", 50, 0, 250);
 
       _h_W_mass = bookHisto1D("W_mass", 75, 30, 180);
       _h_t_mass = bookHisto1D("t_mass", 150, 130, 430);
@@ -41,81 +41,73 @@
       _h_W_comb_mass = bookHisto1D("W_comb_mass", 75, 30, 180);
       _h_t_comb_mass = bookHisto1D("t_comb_mass", 150, 130, 430);
     }
-    
-    void analyze(const Event& event) {
-      double weight = event.weight();
 
-      const FinalState& cfs = applyProjection<FinalState>(event, "CFS");
-      getLog() << Log::DEBUG << "Total charged multiplicity    = " 
-               << cfs.size()  << endl;
+
+    void analyze(const Event& event) {
+      const double weight = event.weight();
 
       const ChargedLeptons& lfs = applyProjection<ChargedLeptons>(event, "LFS");
-      getLog() << Log::DEBUG << "Charged lepton multiplicity   = " 
-               << lfs.chargedLeptons().size()  << endl;
-      if (lfs.chargedLeptons().size() != 1) {
-        MSG_DEBUG("Event failed lepton cut");
-        vetoEvent;
-      }
+      MSG_DEBUG("Charged lepton multiplicity = " << lfs.chargedLeptons().size());
       foreach (Particle lepton, lfs.chargedLeptons()) {
-        getLog() << Log::DEBUG << "lepton pT = " << lepton.momentum().pT() << endl;
+        MSG_DEBUG("Lepton pT = " << lepton.momentum().pT());
       }
-
-      const FastJets& jetpro = applyProjection<FastJets>(event, "JETS");
-      const Jets jets = jetpro.jetsByPt();
-      getLog() << Log::DEBUG << "jet multiplicity = " << jets.size() << endl;
-
-      if (jets.size() < 4) {
-        getLog() << Log::DEBUG << "Event failed jet cut" << endl;
+      if (lfs.chargedLeptons().empty()) {
+        MSG_DEBUG("Event failed lepton multiplicity cut");
         vetoEvent;
       }
 
-      _h_jet_0_pT->fill(jets[0].momentum().pT(), weight);
-      _h_jet_1_pT->fill(jets[1].momentum().pT(), weight);
-      _h_jet_2_pT->fill(jets[2].momentum().pT(), weight);
-      _h_jet_3_pT->fill(jets[3].momentum().pT(), weight);
-
-      if (jets[3].momentum().pT() < 35) {
-        getLog() << Log::DEBUG << "Event failed jet cut" << endl;
+      const FastJets& jetpro = applyProjection<FastJets>(event, "Jets");
+      const Jets alljets = jetpro.jetsByPt();
+      if (alljets.size() < 4) {
+        MSG_DEBUG("Event failed jet multiplicity cut");
         vetoEvent;
       }
-
-      foreach (Jet jet, jets) {
-        getLog() << Log::DEBUG << "jet pT = " << jet.momentum().pT() << endl;
+      _h_jet_1_pT->fill(alljets[0].momentum().pT(), weight);
+      _h_jet_2_pT->fill(alljets[1].momentum().pT(), weight);
+      _h_jet_3_pT->fill(alljets[2].momentum().pT(), weight);
+      _h_jet_4_pT->fill(alljets[3].momentum().pT(), weight);
+
+      const Jets jets = jetpro.jetsByPt(35*GeV);
+      foreach (const Jet& jet, jets) {
+        MSG_DEBUG("Jet pT = " << jet.momentum().pT()/GeV << " GeV");
+      }
+      if (jets.size() < 4) {
+        MSG_DEBUG("Event failed jet pT cut");
+        vetoEvent;
       }
 
       Jets bjets, ljets;
-      foreach (Jet jet, jets) {
-        if (jet.momentum().pT() < 35*GeV) continue;
-        if (jet.containsBottom())
+      foreach (const Jet& jet, jets) {
+        if (jet.containsBottom()) {
           bjets.push_back(jet);
-        else
+        } else {
           ljets.push_back(jet);
+        }
       }
-
-      if (bjets.size() !=2) {
-        getLog() << Log::DEBUG << "Event failed b-tagging cut" << endl;
+      MSG_DEBUG("Number of b-jets = " << bjets.size());
+      if (bjets.size() != 2) {
+        MSG_DEBUG("Event failed b-tagging cut");
         vetoEvent;
       }
-
-      _h_bjet_0_pT->fill(bjets[0].momentum().pT(), weight);
-      _h_bjet_1_pT->fill(bjets[1].momentum().pT(), weight);
-
-      _h_ljet_0_pT->fill(ljets[0].momentum().pT(), weight);
-      _h_ljet_1_pT->fill(ljets[1].momentum().pT(), weight);
-
-      FourMomentum W  = ljets[0].momentum() + ljets[1].momentum();
-      FourMomentum t1 = W + bjets[0].momentum();
-      FourMomentum t2 = W + bjets[1].momentum();
-
-      _h_W_mass->fill(mass(W), weight);
-      _h_t_mass->fill(mass(t1), weight);
-      _h_t_mass->fill(mass(t2), weight);
-      if (mass(W) > 70 && mass(W) < 90) {
-        getLog() << Log::INFO << "W found with mass " << W.mass() << endl;
-        _h_t_mass_W_cut->fill(mass(t1), weight);
-        _h_t_mass_W_cut->fill(mass(t2), weight);
+      _h_bjet_1_pT->fill(bjets[0].momentum().pT(), weight);
+      _h_bjet_2_pT->fill(bjets[1].momentum().pT(), weight);
+      _h_ljet_1_pT->fill(ljets[0].momentum().pT(), weight);
+      _h_ljet_2_pT->fill(ljets[1].momentum().pT(), weight);
+
+      const FourMomentum W  = ljets[0].momentum() + ljets[1].momentum();
+      const FourMomentum t1 = W + bjets[0].momentum();
+      const FourMomentum t2 = W + bjets[1].momentum();
+
+      _h_W_mass->fill(W.mass(), weight);
+      _h_t_mass->fill(t1.mass(), weight);
+      _h_t_mass->fill(t2.mass(), weight);
+      if (inRange(W.mass()/GeV, 70, 90)) {
+        MSG_DEBUG("W found with mass " << W.mass()/GeV << " GeV");
+        _h_t_mass_W_cut->fill(t1.mass(), weight);
+        _h_t_mass_W_cut->fill(t2.mass(), weight);
       }
 
+      // All combinatoric 2-jet masses
       _h_W_comb_mass->fill(mass(jets[0].momentum() + jets[1].momentum()), weight);
       _h_W_comb_mass->fill(mass(jets[0].momentum() + jets[2].momentum()), weight);
       _h_W_comb_mass->fill(mass(jets[0].momentum() + jets[3].momentum()), weight);
@@ -123,36 +115,37 @@
       _h_W_comb_mass->fill(mass(jets[1].momentum() + jets[3].momentum()), weight);
       _h_W_comb_mass->fill(mass(jets[2].momentum() + jets[3].momentum()), weight);
 
+      // All combinatoric 3-jet masses
       _h_t_comb_mass->fill(mass(jets[0].momentum() + jets[1].momentum() + jets[2].momentum()), weight);
       _h_t_comb_mass->fill(mass(jets[0].momentum() + jets[1].momentum() + jets[3].momentum()), weight);
       _h_t_comb_mass->fill(mass(jets[0].momentum() + jets[2].momentum() + jets[3].momentum()), weight);
       _h_t_comb_mass->fill(mass(jets[1].momentum() + jets[2].momentum() + jets[3].momentum()), weight);
+
+      /// @todo Add reconstruction of the other top from the leptonically decaying W, using WFinder
     }
-    
+
+
     void finalize() {
       // No histos, so nothing to do!
     }
-    //@}
 
-  private:
-    Histo1DPtr _h_jet_0_pT;
-    Histo1DPtr _h_jet_1_pT;
-    Histo1DPtr _h_jet_2_pT;
-    Histo1DPtr _h_jet_3_pT;
+    //@}
 
-    Histo1DPtr _h_bjet_0_pT;
-    Histo1DPtr _h_bjet_1_pT;
 
-    Histo1DPtr _h_ljet_0_pT;
-    Histo1DPtr _h_ljet_1_pT;
+  private:
 
+    Histo1DPtr _h_jet_1_pT, _h_jet_2_pT, _h_jet_3_pT, _h_jet_4_pT;
+    Histo1DPtr _h_bjet_1_pT, _h_bjet_2_pT;
+    Histo1DPtr _h_ljet_1_pT, _h_ljet_2_pT;
     Histo1DPtr _h_W_mass;
     Histo1DPtr _h_t_mass;
     Histo1DPtr _h_W_comb_mass;
     Histo1DPtr _h_t_comb_mass;
     Histo1DPtr _h_t_mass_W_cut;
+
   };
 
+
   // This global object acts as a hook for the plugin system
   AnalysisBuilder<MC_TTBAR> plugin_MC_TTBAR;
 


More information about the Rivet-svn mailing list