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

blackhole at projects.hepforge.org blackhole at projects.hepforge.org
Tue Oct 6 18:56:17 BST 2009


Author: buckley
Date: Tue Oct  6 18:56:16 2009
New Revision: 1881

Log:
Add 10 GeV pT cut and use *all* leptons in m_ll histos

Modified:
   trunk/src/Analyses/MC_LHC_SUSY.cc

Modified: trunk/src/Analyses/MC_LHC_SUSY.cc
==============================================================================
--- trunk/src/Analyses/MC_LHC_SUSY.cc	Tue Oct  6 18:07:21 2009	(r1880)
+++ trunk/src/Analyses/MC_LHC_SUSY.cc	Tue Oct  6 18:56:16 2009	(r1881)
@@ -32,7 +32,7 @@
     // Book histograms
     void init() {
       // Basic final state
-      const FinalState fs(-4.0, 4.0, 0.5*GeV);
+      const FinalState fs(-4.0, 4.0, 10*GeV);
 
       // Tracks and jets
       addProjection(ChargedFinalState(fs), "Tracks");
@@ -41,7 +41,6 @@
       IdentifiedFinalState photonfs(fs);
       photonfs.acceptId(PHOTON);
       addProjection(photonfs, "AllPhotons");
-      /// @todo Isolated photons
 
       IdentifiedFinalState efs(fs);
       efs.acceptIdPair(ELECTRON);
@@ -134,11 +133,13 @@
       // Fill final state electron/positron histos
       const FinalState& efs = applyProjection<FinalState>(evt, "Electrons");
       _hist_n_e->fill(efs.size(), weight);
+      vector<FourMomentum> epluses, eminuses;
       foreach (const Particle& e, efs.particles()) {
         const FourMomentum& p = e.momentum();
         _hist_phi_e->fill(mapAngleMPiToPi(p.phi()), weight);
         _hist_eta_e->fill(p.eta(), weight);
         _hist_pt_e->fill(p.pT()/GeV, weight);
+        if (PID::threeCharge(e.pdgId()) > 0) epluses += p; else eminuses += p;
       }
 
       /// @todo Resum photons around muons
@@ -146,11 +147,13 @@
       // Fill final state muon/antimuon histos
       const FinalState& mufs = applyProjection<FinalState>(evt, "Muons");
       _hist_n_mu->fill(mufs.size(), weight);
+      vector<FourMomentum> mupluses, muminuses;
       foreach (const Particle& mu, efs.particles()) {
         const FourMomentum& p = mu.momentum();
         _hist_phi_mu->fill(mapAngleMPiToPi(p.phi()), weight);
         _hist_eta_mu->fill(p.eta(), weight);
         _hist_pt_mu->fill(p.pT()/GeV, weight);
+        if (PID::threeCharge(e.pdgId()) > 0) mupluses += p; else muminuses += p;
       }
 
       // Fill final state non-isolated photon histos
@@ -187,46 +190,75 @@
       const TotalVisibleMomentum& met = applyProjection<TotalVisibleMomentum>(evt, "MET");
       _hist_met->fill(met.scalarET()/GeV);
 
-      // Choose highest-pT leptons of each sign and flavour for dilepton mass edges
-      const FinalState& lpfs = applyProjection<FinalState>(evt, "LeadingParticles");
-      bool eplus_ok, eminus_ok, muplus_ok, muminus_ok;
-      FourMomentum peplus, peminus, pmuplus, pmuminus;
-      foreach (const Particle& p, lpfs.particles()) {
-        const PdgId pid = p.pdgId();
-        if (pid == ELECTRON) {
-          eminus_ok = true;
-          peminus = p.momentum();
-        } else if (pid == POSITRON) {
-          eplus_ok = true;
-          peplus = p.momentum();
-        } else if (pid == MUON) {
-          muminus_ok = true;
-          pmuminus = p.momentum();
-        } else if (pid == ANTIMUON) {
-          muplus_ok = true;
-          pmuplus = p.momentum();
-        } else {
-          throw Error("Unexpected particle type in leading particles FS!");
-        }
-      }
+      // // Choose highest-pT leptons of each sign and flavour for dilepton mass edges
+      // const FinalState& lpfs = applyProjection<FinalState>(evt, "LeadingParticles");
+      // bool eplus_ok, eminus_ok, muplus_ok, muminus_ok;
+      // FourMomentum peplus, peminus, pmuplus, pmuminus;
+      // foreach (const Particle& p, lpfs.particles()) {
+      //   const PdgId pid = p.pdgId();
+      //   if (pid == ELECTRON) {
+      //     eminus_ok = true;
+      //     peminus = p.momentum();
+      //   } else if (pid == POSITRON) {
+      //     eplus_ok = true;
+      //     peplus = p.momentum();
+      //   } else if (pid == MUON) {
+      //     muminus_ok = true;
+      //     pmuminus = p.momentum();
+      //   } else if (pid == ANTIMUON) {
+      //     muplus_ok = true;
+      //     pmuplus = p.momentum();
+      //   } else {
+      //     throw Error("Unexpected particle type in leading particles FS!");
+      //   }
+      // }
+      // // m_ee
+      // if (eminus_ok && eplus_ok) {
+      //   const double m_ee = FourMomentum(peplus + peminus).mass();
+      //   _hist_mll_ossf_ee->fill(m_ee/GeV, weight);
+      // }
+      // // m_mumu
+      // if (muminus_ok && muplus_ok) {
+      //   const double m_mumu = FourMomentum(pmuplus + pmuminus).mass();
+      //   _hist_mll_ossf_mumu->fill(m_mumu/GeV, weight);
+      // }
+      // // m_emu (both configurations)
+      // if (eminus_ok && muplus_ok) {
+      //   const double m_emu = FourMomentum(pmuplus + peminus).mass();
+      //   _hist_mll_osof_emu->fill(m_emu/GeV, weight);
+      // }
+      // if (muminus_ok && eplus_ok) {
+      //   const double m_mue = FourMomentum(peplus + pmuminus).mass();
+      //   _hist_mll_osof_emu->fill(m_mue/GeV, weight);
+      // }
+
+      // Use all electrons, positrons, muons and antimuons for m_ll plots
       // m_ee
-      if (eminus_ok && eplus_ok) {
-        const double m_ee = FourMomentum(peplus + peminus).mass();
-        _hist_mll_ossf_ee->fill(m_ee/GeV, weight);
+      foreach (const FourMomentum& peplus, epluses) {
+        foreach (const FourMomentum& peminus, eminuses) {
+          const double m_ee = FourMomentum(peplus + peminus).mass();
+          _hist_mll_ossf_ee->fill(m_ee/GeV, weight);
+        }
       }
       // m_mumu
-      if (muminus_ok && muplus_ok) {
-        const double m_mumu = FourMomentum(pmuplus + pmuminus).mass();
-        _hist_mll_ossf_mumu->fill(m_mumu/GeV, weight);
+      foreach (const FourMomentum& pmuplus, epluses) {
+        foreach (const FourMomentum& pmuminus, eminuses) {
+          const double m_mumu = FourMomentum(pmuplus + pmuminus).mass();
+          _hist_mll_ossf_mumu->fill(m_mumu/GeV, weight);
+        }
       }
       // m_emu (both configurations)
-      if (eminus_ok && muplus_ok) {
-        const double m_emu = FourMomentum(pmuplus + peminus).mass();
-        _hist_mll_osof_emu->fill(m_emu/GeV, weight);
-      }
-      if (muminus_ok && eplus_ok) {
-        const double m_mue = FourMomentum(peplus + pmuminus).mass();
-        _hist_mll_osof_emu->fill(m_mue/GeV, weight);
+      foreach (const FourMomentum& pmuplus, epluses) {
+        foreach (const FourMomentum& peminus, eminuses) {
+          const double m_emu = FourMomentum(pmuplus + peminus).mass();
+          _hist_mll_osof_emu->fill(m_emu/GeV, weight);
+        }
+      }
+      foreach (const FourMomentum& peplus, epluses) {
+        foreach (const FourMomentum& pmuminus, eminuses) {
+          const double m_mue = FourMomentum(peplus + pmuminus).mass();
+          _hist_mll_osof_emu->fill(m_mue/GeV, weight);
+        }
       }
 
     }


More information about the Rivet-svn mailing list