Rivet analyses

CDF Run I color coherence analysis.

Experiment: CDF (Tevatron Run 1)

Inspire ID: 374155

Status: VALIDATED

Authors: - Lars Sonnenschein - Andy Buckley

References: - Phys.Rev.D50,5562,1994 - DOI: 10.1103/PhysRevD.50.5562

Beams: p- p+

Beam energies: (900.0, 900.0)GeV

Run details: - QCD events at $\sqrt{s} = 1800$ GeV. Leading jet $\pT_\text{min} = 100$ GeV.

CDF Run I color coherence analysis. Events with  ≥ 3 jets are selected and Et distributions of the three highest-pT jets are obtained. The plotted quantities are the ΔR between the 2nd and 3rd leading jets in the pT and pseudorapidity of the 3rd jet, and α = dη/dϕ, where dη is the pseudorapidity difference between the 2nd and 3rd jets and dϕ is their azimuthal angle difference. Since the data has not been detector-corrected, a bin by bin correction is applied, based on the distributions with ideal and CDF simulation as given in the publication.

Source code:CDF_1994_I374155.cc

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

namespace Rivet {


  /// @brief CDF Run I color coherence analysis
  ///
  /// @author Andy Buckley
  /// @author Lars Sonnenschein
  class CDF_1994_I374155 : public Analysis {
  public:

    RIVET_DEFAULT_ANALYSIS_CTOR(CDF_1994_I374155);


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

    void init() {
      const FinalState fs(Cuts::abseta < 4.2);
      declare(fs, "FS");
      declare(FastJets(fs, JetAlg::CDFJETCLU, 0.7), "Jets");

      // Zero passed-cuts event weight counters
      book(_sumw, "sumW");

      // Output histograms
      book(_histJet1Et  ,1,1,1);
      book(_histJet2Et  ,2,1,1);
      book(_histJet3eta, 3,1,1);
      book(_histR23    , 4,1,1);
      book(_histAlpha  , 5,1,1);

      // Temporary histos: these are the ones we actually fill for the plots which require correction
      book(_tmphistJet3eta, "TMP/Jet3eta", refData(3,1,1));
      book(_tmphistR23, "TMP/R23",     refData(4,1,1));
      book(_tmphistAlpha, "TMP/Alpha",   refData(5,1,1));
    }


    // Do the analysis
    void analyze(const Event & event) {
      const Jets jets = apply<FastJets>(event, "Jets").jets(cmpMomByEt);
      MSG_DEBUG("Jet multiplicity before any cuts = " << jets.size());

      // ETs only from jets:
      double et_sinphi_sum = 0;
      double et_cosphi_sum = 0;
      double et_sum = 0;
      for (size_t i = 0; i< jets.size(); ++i) {
        et_sinphi_sum += jets[i].Et() * sin(jets[i].phi());
        et_cosphi_sum += jets[i].Et() * cos(jets[i].phi());
        et_sum += jets[i].Et();
      }

      // ET requirement
      if (sqrt(sqr(et_sinphi_sum) + sqr(et_cosphi_sum))/et_sum > 6.0) vetoEvent;

      // Check jet requirements
      if (jets.size() < 3) vetoEvent;
      if (jets[0].pT() < 110*GeV) vetoEvent;
      if (jets[2].pT() < 10*GeV) vetoEvent;

      // More jet 1,2,3 checks
      FourMomentum pj1(jets[0].momentum()), pj2(jets[1].momentum()), pj3(jets[2].momentum());
      if (fabs(pj1.eta()) > 0.7 || fabs(pj2.eta()) > 0.7) vetoEvent;
      MSG_DEBUG("Jet 1 & 2 eta, pT requirements fulfilled");

      // Require that jets are back-to-back within 20 degrees in phi
      if ((PI - deltaPhi(pj1.phi(), pj2.phi())) > (20/180.0)*PI) vetoEvent;
      MSG_DEBUG("Jet 1 & 2 phi requirement fulfilled");

      _sumw->fill();

      // Fill histos
      _histJet1Et->fill(pj1.pT());
      _histJet2Et->fill(pj2.pT());
      _tmphistJet3eta->fill(pj3.eta());
      _tmphistR23->fill(deltaR(pj2, pj3));

      // Calc and plot alpha
      const double dPhi = deltaPhi(pj3.phi(), pj2.phi());
      const double dH = sign(pj2.eta()) * (pj3.eta() - pj2.eta());
      const double alpha = atan(dH/dPhi);
      _tmphistAlpha->fill(alpha*180./PI);
    }


    /// Apply bin-wise detector correction factors
    void finalize() {

      // Normal scalings
      normalize(_histJet1Et, 12.3);
      normalize(_histJet2Et, 12.3);

      // eta3 correction
      const double eta3_CDF_sim[] =
        { 0.0013, 0.0037, 0.0047, 0.0071, 0.0093, 0.0117, 0.0151, 0.0149, 0.0197, 0.0257,
          0.0344, 0.0409, 0.0481, 0.0454, 0.0394, 0.0409, 0.0387, 0.0387, 0.0322, 0.0313,
          0.0290, 0.0309, 0.0412, 0.0417, 0.0412, 0.0397, 0.0417, 0.0414, 0.0376, 0.0316,
          0.0270, 0.0186, 0.0186, 0.0132, 0.0127, 0.0106, 0.0071, 0.0040, 0.0020, 0.0013 };
      const double eta3_CDF_sim_err[] =
        { 0.0009, 0.0009, 0.0007, 0.0007, 0.0007, 0.0010, 0.0012, 0.0012, 0.0013, 0.0016,
          0.0017, 0.0020, 0.0020, 0.0022, 0.0020, 0.0020, 0.0018, 0.0018, 0.0016, 0.0017,
          0.0017, 0.0019, 0.0020, 0.0021, 0.0020, 0.0020, 0.0019, 0.0020, 0.0018, 0.0017,
          0.0017, 0.0014, 0.0014, 0.0009, 0.0010, 0.0009, 0.0009, 0.0008, 0.0008, 0.0009 };
      const double eta3_Ideal_sim[] =
        { 0.0017, 0.0030, 0.0033, 0.0062, 0.0062, 0.0112, 0.0177, 0.0164, 0.0196, 0.0274,
          0.0351, 0.0413, 0.0520, 0.0497, 0.0448, 0.0446, 0.0375, 0.0329, 0.0291, 0.0272,
          0.0233, 0.0288, 0.0384, 0.0396, 0.0468, 0.0419, 0.0459, 0.0399, 0.0355, 0.0329,
          0.0274, 0.0230, 0.0201, 0.0120, 0.0100, 0.0080, 0.0051, 0.0051, 0.0010, 0.0010 };
      for (size_t i = 0;  i < 40; ++i) {
        const double yval = _tmphistJet3eta->bin(i+1).sumW() * (eta3_CDF_sim[i]/eta3_Ideal_sim[i]);
        const double yerr = _tmphistJet3eta->bin(i+1).errW() * (eta3_CDF_sim_err[i]/eta3_Ideal_sim[i]);
        _histJet3eta->bin(i+1).set(yval/dbl(*_sumw), yerr/dbl(*_sumw));
      }

      // R23 correction
      const double R23_CDF_sim[] =
        { 0.0005, 0.0161, 0.0570, 0.0762, 0.0723, 0.0705, 0.0598, 0.0563, 0.0557, 0.0579,
          0.0538, 0.0522, 0.0486, 0.0449, 0.0418, 0.0361, 0.0326, 0.0304, 0.0252, 0.0212,
          0.0173, 0.0176, 0.0145, 0.0127, 0.0103, 0.0065, 0.0049, 0.0045, 0.0035, 0.0029,
          0.0024, 0.0014, 0.0011, 0.0010, 0.0009 };
      const double R23_CDF_sim_err[] =
        { 0.0013, 0.0009, 0.0022, 0.0029, 0.0026, 0.0024, 0.0022, 0.0025, 0.0023, 0.0024,
          0.0021, 0.0021, 0.0021, 0.0021, 0.0021, 0.0019, 0.0019, 0.0016, 0.0017, 0.0014,
          0.0010, 0.0014, 0.0012, 0.0013, 0.0010, 0.0011, 0.0010, 0.0010, 0.0010, 0.0011,
          0.0011, 0.0009, 0.0008, 0.0008, 0.0009 };
      const double R23_Ideal_sim[] =
        { 0.0005, 0.0176, 0.0585, 0.0862, 0.0843, 0.0756, 0.0673, 0.0635, 0.0586, 0.0619,
          0.0565, 0.0515, 0.0466, 0.0472, 0.0349, 0.0349, 0.0266, 0.0254, 0.0204, 0.0179,
          0.0142, 0.0134, 0.0101, 0.0090, 0.0080, 0.0034, 0.0030, 0.0033, 0.0027, 0.0021,
          0.0012, 0.0006, 0.0004, 0.0005, 0.0003 };
      for (size_t i = 0;  i < 35; ++i) {
        const double yval = _tmphistR23->bin(i+1).sumW() * (R23_CDF_sim[i]/R23_Ideal_sim[i]);
        const double yerr = _tmphistR23->bin(i+1).errW() * (R23_CDF_sim_err[i]/R23_Ideal_sim[i]);
        _histR23->bin(i+1).set(yval/dbl(*_sumw), yerr/dbl(*_sumw));
      }

      // alpha correction
      const double alpha_CDF_sim[] =
        { 0.0517, 0.0461, 0.0490, 0.0452, 0.0451, 0.0435, 0.0317, 0.0287, 0.0294, 0.0261,
          0.0231, 0.0220, 0.0233, 0.0192, 0.0213, 0.0166, 0.0176, 0.0146, 0.0136, 0.0156,
          0.0142, 0.0152, 0.0151, 0.0147, 0.0164, 0.0186, 0.0180, 0.0210, 0.0198, 0.0189,
          0.0197, 0.0211, 0.0270, 0.0236, 0.0243, 0.0269, 0.0257, 0.0276, 0.0246, 0.0286 };
      const double alpha_CDF_sim_err[] =
        { 0.0024, 0.0025, 0.0024, 0.0024, 0.0024, 0.0022, 0.0019, 0.0018, 0.0019, 0.0016,
          0.0017, 0.0017, 0.0019, 0.0013, 0.0017, 0.0014, 0.0016, 0.0013, 0.0012, 0.0009,
          0.0014, 0.0014, 0.0014, 0.0014, 0.0014, 0.0015, 0.0014, 0.0016, 0.0016, 0.0015,
          0.0016, 0.0016, 0.0019, 0.0017, 0.0019, 0.0018, 0.0018, 0.0018, 0.0018, 0.0019 };
      const double alpha_Ideal_sim[] =
        { 0.0552, 0.0558, 0.0583, 0.0550, 0.0495, 0.0433, 0.0393, 0.0346, 0.0331, 0.0296,
          0.0258, 0.0196, 0.0171, 0.0179, 0.0174, 0.0141, 0.0114, 0.0096, 0.0076, 0.0087,
          0.0099, 0.0079, 0.0102, 0.0114, 0.0124, 0.0130, 0.0165, 0.0160, 0.0177, 0.0190,
          0.0232, 0.0243, 0.0238, 0.0248, 0.0235, 0.0298, 0.0292, 0.0291, 0.0268, 0.0316 };
      for (size_t i = 0;  i < 40; ++i) {
        const double yval = _tmphistAlpha->bin(i+1).sumW() * (alpha_CDF_sim[i]/alpha_Ideal_sim[i]);
        const double yerr = _tmphistAlpha->bin(i+1).errW() * (alpha_CDF_sim_err[i]/alpha_Ideal_sim[i]);
        _histAlpha->bin(i+1).set(yval/dbl(*_sumw), yerr/dbl(*_sumw));
      }
    }

    /// @}


  private:

    /// Event weight counter
    CounterPtr _sumw;

    /// @name Histograms
    /// @{

    /// Straightforward output histos
    Histo1DPtr _histJet1Et, _histJet2Et;

    /// Output histos which need to have correction factors applied
    Estimate1DPtr _histR23, _histJet3eta, _histAlpha;

    /// Temporary histos, to be converted to scatters
    Histo1DPtr _tmphistR23, _tmphistJet3eta, _tmphistAlpha;

    /// @}

  };



  RIVET_DECLARE_ALIASED_PLUGIN(CDF_1994_I374155, CDF_1994_S2952106);

}

Aliases: - CDF_1994_S2952106