00001 #ifndef DataFormats_EgammaReco_PreshowerCluster_h 00002 #define DataFormats_EgammaReco_PreshowerCluster_h 00003 /* 00004 * Preshower cluster class 00005 * 00006 * \authors Dmirty Bandurin (KSU), Ted Kolberg (ND) 00007 */ 00008 // $Id: PreshowerCluster.h,v 1.17 2008/04/28 19:46:15 meridian Exp $ 00009 // 00010 #include "DataFormats/Math/interface/Point3D.h" 00011 #include "DataFormats/EgammaReco/interface/BasicCluster.h" 00012 #include "DataFormats/EgammaReco/interface/BasicClusterFwd.h" 00013 00014 #include <cmath> 00015 00016 namespace reco { 00017 00018 class PreshowerCluster : public CaloCluster { 00019 public: 00020 00021 typedef math::XYZPoint Point; 00022 00024 PreshowerCluster() : CaloCluster(0., Point(0.,0.,0.)) { }; 00025 00026 virtual ~PreshowerCluster(); 00027 00029 PreshowerCluster(const double E, const Point& pos, 00030 const std::vector<DetId> usedHits, 00031 const int plane); 00032 00034 PreshowerCluster(const PreshowerCluster&); 00035 00037 int nhits() const {return usedHits_.size();} 00038 00040 int plane() const { return plane_; } 00041 00042 double et() const { return energy()/cosh(eta()); } 00043 00045 bool operator==(const PreshowerCluster&) const; 00046 bool operator<(const PreshowerCluster&) const; 00047 00049 BasicClusterRef basicCluster() const {return bc_ref_;} 00050 00052 std::vector<DetId> getHitsByDetId() const { return usedHits_; } 00053 00054 void setBCRef( const BasicClusterRef & r ) { bc_ref_ = r; } 00055 00056 private: 00057 00058 int plane_; 00059 00061 BasicClusterRef bc_ref_; 00062 00064 std::vector<DetId> usedHits_; 00065 }; 00066 } 00067 #endif