Back to home page

Project CMSSW displayed by LXR

 
 

    


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

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