CMS 3D CMS Logo

Public Member Functions | Private Member Functions | Private Attributes

PatJetAnalyzer Class Reference

Module to analyze pat::Jets in the context of a more complex exercise. More...

Inheritance diagram for PatJetAnalyzer:
edm::EDAnalyzer

List of all members.

Public Member Functions

 PatJetAnalyzer (const edm::ParameterSet &cfg)
 default contructor
 ~PatJetAnalyzer ()
 default destructor

Private Member Functions

virtual void analyze (const edm::Event &event, const edm::EventSetup &setup)
 everything that needs to be done during the even loop
bool booked (const std::string histName) const
 check if histogram was booked
void fill (const std::string histName, double value) const
 fill histogram if it had been booked before
void print (edm::View< pat::Jet >::const_iterator &jet, unsigned int idx)

Private Attributes

std::string corrLevel_
 correction level for pat jet
std::map< std::string, TH1F * > hists_
 management of 1d histograms
edm::InputTag jets_
 pat jets

Detailed Description

Module to analyze pat::Jets in the context of a more complex exercise.

Basic quantities of jets like the transverse momentum, eta and phi as well as the invariant dijet mass are plotted. Basic histograms for a jet energy response plot as a function of the pt of the reference object are filled. As reference matched partons are chosen. Input parameters are:

Definition at line 43 of file PatJetAnalyzer.cc.


Constructor & Destructor Documentation

PatJetAnalyzer::PatJetAnalyzer ( const edm::ParameterSet cfg) [explicit]

default contructor

Definition at line 72 of file PatJetAnalyzer.cc.

References BINS, hists_, UserOptions_cff::idx, MAXBIN, and indexGen::title.

                                                        :
  corrLevel_(cfg.getParameter<std::string>("corrLevel")),
  jets_(cfg.getParameter<edm::InputTag>("src"))
{
  // register TFileService
  edm::Service<TFileService> fs;

  // jet multiplicity
  hists_["mult" ]=fs->make<TH1F>("mult" , "N_{Jet}"          ,   15,   0.,   15.);
  // jet pt (for all jets)
  hists_["pt"   ]=fs->make<TH1F>("pt"   , "p_{T}(Jet) [GeV]" ,   60,   0.,  300.);
  // jet eta (for all jets)
  hists_["eta"  ]=fs->make<TH1F>("eta"  , "#eta (Jet)"       ,   60,  -3.,    3.);
  // jet phi (for all jets)
  hists_["phi"  ]=fs->make<TH1F>("phi"  , "#phi (Jet)"       ,   60,  3.2,   3.2);
  // dijet mass (if available)
  hists_["mass" ]=fs->make<TH1F>("mass" , "M_{jj} [GeV]"     ,   50,   0.,  500.);
  // basic histograms for jet energy response
  for(unsigned int idx=0; idx<MAXBIN; ++idx){
    char buffer [10]; sprintf (buffer, "jes_%i", idx);
    char title  [50]; sprintf (title , "p_{T}^{rec}/p_{T}^{gen} [%i GeV - %i GeV]", (int)BINS[idx], (int)BINS[idx+1]);
    hists_[buffer]=fs->make<TH1F>(buffer, title,  100, 0., 2.);
  }  
}
PatJetAnalyzer::~PatJetAnalyzer ( ) [inline]

default destructor

Definition at line 49 of file PatJetAnalyzer.cc.

{};

Member Function Documentation

void PatJetAnalyzer::analyze ( const edm::Event event,
const edm::EventSetup setup 
) [private, virtual]

everything that needs to be done during the even loop

Implements edm::EDAnalyzer.

Definition at line 98 of file PatJetAnalyzer.cc.

References BINS, corrLevel_, fill(), UserOptions_cff::idx, metsig::jet, analyzePatCleaning_cfg::jets, jets_, MAXBIN, and p4.

{
  // recieve jet collection label
  edm::Handle<edm::View<pat::Jet> > jets;
  event.getByLabel(jets_,jets);

  // loop jets
  for(edm::View<pat::Jet>::const_iterator jet=jets->begin(); jet!=jets->end(); ++jet){
    // print jec factors
    // print(jet, jet-jets->begin());

    // fill basic kinematics
    fill( "pt" , jet->correctedJet(corrLevel_).pt());
    fill( "eta", jet->eta());
    fill( "phi", jet->phi());
    // basic plots for jet responds plot as a function of pt
    if( jet->genJet() ){
      double resp=jet->correctedJet(corrLevel_).pt()/jet->genJet()->pt();
      for(unsigned int idx=0; idx<MAXBIN; ++idx){
        if(BINS[idx]<=jet->genJet()->pt() && jet->genJet()->pt()<BINS[idx+1]){
          char buffer [10]; sprintf (buffer, "jes_%i", idx);
          fill( buffer, resp );
        }
      }
    }
  }
  // jet multiplicity
  fill( "mult" , jets->size());
  // invariant dijet mass for first two leading jets
  if(jets->size()>1){ fill( "mass", ((*jets)[0].p4()+(*jets)[1].p4()).mass());}
}
bool PatJetAnalyzer::booked ( const std::string  histName) const [inline, private]

check if histogram was booked

Definition at line 56 of file PatJetAnalyzer.cc.

References hists_.

Referenced by fill().

{ return hists_.find(histName.c_str())!=hists_.end(); };
void PatJetAnalyzer::fill ( const std::string  histName,
double  value 
) const [inline, private]

fill histogram if it had been booked before

Definition at line 58 of file PatJetAnalyzer.cc.

References booked(), hists_, and edm::second().

Referenced by analyze().

{ if(booked(histName.c_str())) hists_.find(histName.c_str())->second->Fill(value); };
void PatJetAnalyzer::print ( edm::View< pat::Jet >::const_iterator &  jet,
unsigned int  idx 
) [private]

Definition at line 131 of file PatJetAnalyzer.cc.

References gather_cfg::cout, pat::Jet::currentJECLevel(), UserOptions_cff::idx, pat::JetCorrFactors::NONE, reco::LeafCandidate::pt(), edm::View< T >::size(), and pat::JetCorrFactors::UDS.

{
  //edm::LogInfo log("JEC");
  std::cout << "[" << idx << "] :: eta=" << std::setw(10) << jet->eta() << " phi=" << std::setw(10) << jet->phi() << " size: " << jet->availableJECLevels().size() << std::endl;
  for(unsigned int idx=0; idx<jet->availableJECLevels().size(); ++idx){
    pat::Jet correctedJet;
    if(jet->availableJECLevels()[idx].find("L5Flavor")!=std::string::npos|| 
       jet->availableJECLevels()[idx].find("L7Parton")!=std::string::npos ){
      correctedJet=jet->correctedJet(idx, pat::JetCorrFactors::UDS);
    }
    else{
      correctedJet=jet->correctedJet(idx, pat::JetCorrFactors::NONE );
    }
    std::cout << std::setw(10) << correctedJet.currentJECLevel() << " pt=" << std::setw(10) << correctedJet.pt() << std::endl;
  }
}

Member Data Documentation

std::string PatJetAnalyzer::corrLevel_ [private]

correction level for pat jet

Definition at line 64 of file PatJetAnalyzer.cc.

Referenced by analyze().

std::map<std::string,TH1F*> PatJetAnalyzer::hists_ [private]

management of 1d histograms

Definition at line 68 of file PatJetAnalyzer.cc.

Referenced by booked(), fill(), and PatJetAnalyzer().

pat jets

Definition at line 66 of file PatJetAnalyzer.cc.

Referenced by analyze().