Program Listing for File ClusterHists.cxx

Return to documentation for file (Root/ClusterHists.cxx)

#include "xAODAnaHelpers/ClusterHists.h"

#include <math.h>

ANA_MSG_SOURCE(msgClusterHists, "ClusterHists")

ClusterHists :: ClusterHists (std::string name, std::string detailStr) :
  HistogramManager(name, detailStr)
{
}

ClusterHists :: ~ClusterHists () {}

StatusCode ClusterHists::initialize() {

  // These plots are always made
  m_ccl_n   = book(m_name, "n", "cluster multiplicity", 80, 0, 800);
  m_ccl_e   = book(m_name, "e", "cluster e [GeV]", 100, -5, 15);
  m_ccl_eta = book(m_name, "eta", "cluster #eta", 80, -4, 4);
  m_ccl_phi = book(m_name, "phi", "cluster #phi", 120, -TMath::Pi(), TMath::Pi());

  // 2D plots
  m_ccl_eta_vs_phi = book(m_name, "eta_vs_phi", "cluster #phi", 120, -TMath::Pi(), TMath::Pi(), "cluster #eta", 80, -4, 4);
  m_ccl_e_vs_eta   = book(m_name, "e_vs_eta", "cluster #eta", 80, -4, 4, "cluster e [GeV]", 100, -5, 15);
  m_ccl_e_vs_phi   = book(m_name, "e_vs_phi", "cluster #phi", 120, -TMath::Pi(), TMath::Pi(), "cluster e [GeV]", 100, -5, 15);

  // if worker is passed to the class add histograms to the output
  return StatusCode::SUCCESS;
}

StatusCode ClusterHists::execute( const xAOD::CaloClusterContainer* ccls, float eventWeight ) {
  using namespace msgClusterHists;
  xAOD::CaloClusterContainer::const_iterator ccl_itr = ccls->begin();
  xAOD::CaloClusterContainer::const_iterator ccl_end = ccls->end();
  for( ; ccl_itr != ccl_end; ++ccl_itr ) {
    ANA_CHECK( this->execute( (*ccl_itr), eventWeight ));
  }

  m_ccl_n -> Fill( ccls->size(), eventWeight );

  return StatusCode::SUCCESS;
}

StatusCode ClusterHists::execute( const xAOD::CaloCluster* ccl, float eventWeight ) {

  //basic
  float cclE   = ccl->e()/1e3;
  float cclEta = ccl->eta();
  float cclPhi = ccl->phi();

  m_ccl_e          -> Fill( cclE,   eventWeight );
  m_ccl_eta        -> Fill( cclEta, eventWeight );
  m_ccl_phi        -> Fill( cclPhi, eventWeight );

  // 2D plots
  m_ccl_eta_vs_phi -> Fill( cclPhi, cclEta,  eventWeight );
  m_ccl_e_vs_eta   -> Fill( cclEta, cclE,    eventWeight );
  m_ccl_e_vs_phi   -> Fill( cclPhi, cclE,    eventWeight );

  return StatusCode::SUCCESS;

}