CMS 3D CMS Logo

Photon.cc

Go to the documentation of this file.
00001 // $Id: Photon.cc,v 1.17 2008/04/22 19:14:07 nancy Exp $
00002 #include "DataFormats/EgammaCandidates/interface/Photon.h"
00003 #include "DataFormats/EgammaReco/interface/SuperClusterFwd.h" 
00004 
00005 using namespace reco;
00006 
00007 Photon::Photon( const LorentzVector & p4, 
00008                 Point caloPos,
00009                 const SuperClusterRef scl,   
00010                 float HoE, 
00011                 bool hasPixelSeed, 
00012                 const Point & vtx) : 
00013     RecoCandidate( 0, p4, vtx, 22 ), caloPosition_( caloPos ),
00014     superCluster_(scl), 
00015     hadOverEm_(HoE), 
00016     pixelSeed_( hasPixelSeed ) {}
00017 
00018 Photon::~Photon() { }
00019 
00020 Photon * Photon::clone() const { 
00021   return new Photon( * this ); 
00022 }
00023 
00024 reco::SuperClusterRef Photon::superCluster() const {
00025   return superCluster_;
00026 }
00027 
00028 
00029 
00030 std::vector<reco::ConversionRef>  Photon::conversions() const { 
00031    return conversions_;
00032 }
00033 
00034 bool Photon::isConverted() const {
00035   
00036   if ( this->conversions().size() > 0) 
00037     return true;
00038   else
00039     return false;
00040 }
00041 
00042 
00043 
00044 
00045 bool Photon::overlap( const Candidate & c ) const {
00046   const RecoCandidate * o = dynamic_cast<const RecoCandidate *>( & c );
00047   return ( o != 0 && 
00048            ( checkOverlap( superCluster(), o->superCluster() ) )
00049            );
00050   return false;
00051 }
00052 
00053 void Photon::setVertex(const Point & vertex) {
00054   math::XYZVector direction = caloPosition() - vertex;
00055   double energy = this->energy();
00056   math::XYZVector momentum = direction.unit() * energy;
00057   math::XYZTLorentzVector lv(momentum.x(), momentum.y(), momentum.z(), energy );
00058   setP4(lv);
00059   vertex_ = vertex;
00060 }
00061 
00062 

Generated on Tue Jun 9 17:30:43 2009 for CMSSW by  doxygen 1.5.4