Main Page | Modules | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members | File Members

EMJetMatching.cpp

Go to the documentation of this file.
00001 #include <iostream>
00002 #include "caf_util/EMJetMatching.hpp"
00003 #include "cafe/Config.hpp"
00004 #include "kinem_util/AnglesUtil.hpp"
00005 #include "jetcorr/CalTool.hpp"
00006 
00007 using namespace cafe;
00008 using namespace std;
00009 
00010 namespace caf_util {
00011 
00012   EMJetMatching::EMJetMatching(const char *name) : cafe::SelectUserObjects<TMBJet>(name), _event(0), _vars("_CalDetectorPhi","_CalDetectorEta")
00013   {
00014     cafe::Config config(name);
00015     _jetBranch  = config.get("From",""); 
00016     _electronBranch = config.get("electronBranch","EMscone"); 
00017     _dR_Jet_EM  = config.get("DR_Jet_EM",0.4);
00018     _debug = config.get("Debug", 0);
00019   }
00020 
00021   bool EMJetMatching::processEvent(cafe::Event &event)
00022   {
00023     _event = &event ;
00024     SelectUserObjects<TMBJet>::processEvent(event) ;
00025     return true  ;
00026   }
00027 
00028   bool EMJetMatching::selectObject(const TMBJet &jet)
00029   {
00030     return true ;
00031   }
00032 
00033   void EMJetMatching::after(cafe::Collection<TMBJet>& input, cafe::Collection<TMBJet>& rejected)
00034   {
00035     Collection<TMBEMCluster> emcol(_event->getCollection<TMBEMCluster>(_electronBranch.c_str(),_vars));
00036     static const float phiConv = std::acos(-1.)/32.;
00037 
00038     for (Collection<TMBJet>::iterator it_jet = input.begin() ;
00039          it_jet != input.end() ; ++ it_jet)  {
00040 
00041       //      if (!it_jet->isGood()) continue;
00042       float dRmin = kinem::TWOPI;
00043 
00044       for (Collection<TMBEMCluster>::const_iterator it_em = emcol.begin() ; 
00045         it_em != emcol.end() ; ++ it_em) {
00046 
00047          float dphi = kinem::delta_phi(phiConv*it_jet->detPhi(), it_em->CalDetectorPhi());
00048          float deta = fabs(CalTool::EtaDToEtaDet(it_jet->detEta()) - it_em->CalDetectorEta());
00049          float dR = sqrt(dphi*dphi + deta*deta);
00050          if (dR < dRmin) dRmin = dR;
00051 
00052       } // for EM
00053 
00054       if ( dRmin < _dR_Jet_EM ) it_jet->SetFlag(it_jet->isGood(), it_jet->isL1Conf(), it_jet->isBad(),
00055                                         it_jet->isNoise(), true, it_jet->hasMU(), 
00056                                         it_jet->isSmeared(), it_jet->isSmearedMU());
00057       else it_jet->SetFlag(it_jet->isGood(), it_jet->isL1Conf(), it_jet->isBad(),
00058                                         it_jet->isNoise(), false, it_jet->hasMU(), 
00059                                         it_jet->isSmeared(), it_jet->isSmearedMU());
00060 
00061     } // for jet
00062 
00063   }
00064 
00065 } // namespace
00066 
00067 ClassImp(caf_util::EMJetMatching);
00068  

Generated on Tue Mar 28 10:13:03 2006 for CAF by doxygen 1.3.4