Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-10-04 22:55:07

0001 //
0002 //
0003 
0004 /**
0005     @file PatElectronHitFitTranslator.cc
0006 
0007     @brief Specialization of template class LeptonTranslatorBase in the
0008     package HitFit for pat::Electron.
0009 
0010     @author Haryo Sumowidagdo <Suharyo.Sumowidagdo@cern.ch>
0011 
0012     @par Created
0013     Sat Jun 27 17:49:06 2009 UTC
0014 
0015     @version $Id: PatElectronHitFitTranslator.cc,v 1.8 2010/08/06 22:02:52 haryo Exp $
0016  */
0017 
0018 #include "TopQuarkAnalysis/TopHitFit/interface/LeptonTranslatorBase.h"
0019 #include "DataFormats/PatCandidates/interface/Electron.h"
0020 
0021 namespace hitfit {
0022 
0023   template <>
0024   LeptonTranslatorBase<pat::Electron>::LeptonTranslatorBase() {
0025     [[clang::suppress]]
0026     std::string CMSSW_BASE(std::getenv("CMSSW_BASE"));
0027     std::string resolution_filename =
0028         CMSSW_BASE + std::string("/src/TopQuarkAnalysis/PatHitFit/data/exampleElectronResolution.txt");
0029     resolution_ = EtaDepResolution(resolution_filename);
0030 
0031   }  // LeptonTranslatorBase<pat::Electron>::LeptonTranslatorBase()
0032 
0033   template <>
0034   LeptonTranslatorBase<pat::Electron>::LeptonTranslatorBase(const std::string& ifile) {
0035     [[clang::suppress]]
0036     std::string CMSSW_BASE(std::getenv("CMSSW_BASE"));
0037     std::string resolution_filename;
0038 
0039     if (ifile.empty()) {
0040       resolution_filename =
0041           CMSSW_BASE + std::string("/src/TopQuarkAnalysis/PatHitFit/data/exampleElectronResolution.txt");
0042     } else {
0043       resolution_filename = ifile;
0044     }
0045 
0046     resolution_ = EtaDepResolution(resolution_filename);
0047 
0048   }  // LeptonTranslatorBase<pat::Electron>::LeptonTranslatorBase(const std::string& ifile)
0049 
0050   template <>
0051   LeptonTranslatorBase<pat::Electron>::~LeptonTranslatorBase() {}
0052 
0053   template <>
0054   Lepjets_Event_Lep LeptonTranslatorBase<pat::Electron>::operator()(const pat::Electron& lepton,
0055                                                                     int type /* = hitfit::lepton_label */,
0056                                                                     bool useObjEmbRes /* = false */) {
0057     Fourvec p(lepton.px(), lepton.py(), lepton.pz(), lepton.energy());
0058 
0059     double electron_eta = lepton.superCluster()->eta();
0060     Vector_Resolution electron_resolution = resolution_.GetResolution(electron_eta);
0061 
0062     Lepjets_Event_Lep electron(p, electron_label, electron_resolution);
0063     return electron;
0064 
0065   }  // Lepjets_Event_Lep LeptonTranslatorBase<pat::Electron>::operator()
0066 
0067   template <>
0068   const EtaDepResolution& LeptonTranslatorBase<pat::Electron>::resolution() const {
0069     return resolution_;
0070   }
0071 
0072   template <>
0073   bool LeptonTranslatorBase<pat::Electron>::CheckEta(const pat::Electron& lepton) const {
0074     double electron_eta = lepton.superCluster()->eta();
0075     return resolution_.CheckEta(electron_eta);
0076   }
0077 
0078 }  // namespace hitfit