Rivet analyses

Search for supersymmetry with diphotons and missing transverse momentum

Experiment: ATLAS (LHC)

Inspire ID: 946427

Status: OBSOLETE

Authors: - Peter Richardson

References: - arXiv: 1111.4116 - Phys. Lett. B710 (2012) 519-537

Beams: p+ p+

Beam energies: (3500.0, 3500.0)GeV

Run details: - BSM signal events at 7000 GeV.

Search for diphoton events with large missing transverse momentum with integrated luminosity 1.07fb−1 at $\sqrt{s}=7$. No excess of events was observed.

Source code:ATLAS_2012_I946427.cc

// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/ChargedFinalState.hh"
#include "Rivet/Projections/FastJets.hh"
#include "Rivet/Projections/FinalState.hh"
#include "Rivet/Projections/IdentifiedFinalState.hh"
#include "Rivet/Projections/VetoedFinalState.hh"
#include "Rivet/Projections/VisibleFinalState.hh"

namespace Rivet {


  /// @author Peter Richardson
  class ATLAS_2012_I946427 : public Analysis {
  public:

    /// @name Constructors etc.
    /// @{

    /// Constructor
    ATLAS_2012_I946427()
        : Analysis("ATLAS_2012_I946427") { }

    /// @}


  public:

    /// @name Analysis methods
    /// @{

    /// Book histograms and initialise projections before the run
    void init() {

      // photons
      IdentifiedFinalState photonfs(Cuts::abseta < 1.81 && Cuts::pT > 25 * GeV);
      photonfs.acceptId(PID::PHOTON);
      declare(photonfs, "Photon");

      //
      FinalState fs;
      declare(fs, "FS");

      // Used for pTmiss
      declare(VisibleFinalState(Cuts::abseta < 4.9), "vfs");

      // Book histograms
      book(_count_SR, "count_SR", 1, 0., 1.);

      book(_hist_ET_photon, "hist_ET_photon", 48, 20., 500.);
      book(_hist_met, "hist_met", 100, 0., 500.);
    }


    /// Perform the per-event analysis
    void analyze(const Event& event) {


      // require at least 2 photons in final state
      Particles photons = apply<IdentifiedFinalState>(event, "Photon").particlesByPt();
      if (photons.size() < 2) {
        vetoEvent;
      }

      // Loop over photons and fill vector of isolated ones
      Particles fs = apply<FinalState>(event, "FS").particles();
      Particles isolated_photons;
      for (const Particle& photon : photons) {
        // remove photons in crack
        double eta_P = photon.eta();
        if (fabs(eta_P) >= 1.37 && fabs(eta_P) < 1.52) continue;

        double phi_P = photon.phi();

        FourMomentum mom_in_EtCone = -photon.momentum();
        for (const Particle& p : fs) {
          // check if it's in the cone of .2
          if (deltaR(eta_P, phi_P, p.eta(), p.phi()) >= 0.2) continue;
          mom_in_EtCone += p.momentum();
        }
        // apply isolation
        if (mom_in_EtCone.Et() > 5.) continue;

        // add photon to list of isolated ones
        isolated_photons.push_back(photon);
      }

      // need two isolated photons
      if (isolated_photons.size() < 2) {
        vetoEvent;
      }

      // pTmiss
      Particles vfs_particles = apply<VisibleFinalState>(event, "vfs").particles();
      FourMomentum pTmiss;
      for (const Particle& p : vfs_particles) {
        pTmiss -= p.momentum();
      }
      double eTmiss = pTmiss.pT();

      _hist_ET_photon->fill(isolated_photons[0].Et());
      _hist_met->fill(eTmiss);

      if (eTmiss > 125.) _count_SR->fill(0.5);
    }


    void finalize() {

      double norm = crossSection() / femtobarn * 1.07 / sumOfWeights();
      // these are number of events at 1.07fb^-1 per 10 GeV
      scale(_hist_ET_photon, 10. * norm);
      // these are number of events at 1.07fb^-1 per  5 GeV
      scale(_hist_met, 5. * norm);
      // these are number of events at 1.07fb^-1
      scale(_count_SR, norm);
    }

    /// @}


  private:

    Histo1DPtr _count_SR;
    Histo1DPtr _hist_ET_photon;
    Histo1DPtr _hist_met;
  };


  RIVET_DECLARE_PLUGIN(ATLAS_2012_I946427);

}