00001 #ifndef EgammaReco_SuperCluster_h
00002 #define EgammaReco_SuperCluster_h
00003
00013 #include "DataFormats/Math/interface/Point3D.h"
00014 #include "DataFormats/EgammaReco/interface/BasicClusterFwd.h"
00015 #include "DataFormats/EgammaReco/interface/SuperClusterFwd.h"
00016 #include "DataFormats/CaloRecHit/interface/CaloCluster.h"
00017 #include "DataFormats/DetId/interface/DetId.h"
00018 #include <Rtypes.h>
00019
00020 namespace reco {
00021 class SuperCluster : public CaloCluster {
00022 public:
00023
00024 typedef math::XYZPoint Point;
00025
00027 SuperCluster() : CaloCluster(0., Point(0.,0.,0.)), rawEnergy_(-1.) {}
00028
00030 SuperCluster( double energy, const Point& position );
00031
00032 SuperCluster( double energy, const Point& position,
00033 const BasicClusterRef & seed,
00034 const BasicClusterRefVector& clusters,
00035 double Epreshower=0.,
00036 double phiWidth=0., double etaWidth=0. );
00037
00039 double rawEnergy() const;
00040
00042 double preshowerEnergy() const { return preshowerEnergy_; }
00043
00045 double phiWidth() const { return phiWidth_; }
00046 double etaWidth() const { return etaWidth_; }
00047
00048
00049 void setPhiWidth( double pw ) { phiWidth_ = pw; }
00050 void setEtaWidth( double ew ) { etaWidth_ = ew; }
00051
00053 const BasicClusterRef & seed() const { return seed_; }
00054
00056 basicCluster_iterator clustersBegin() const { return clusters_.begin(); }
00057
00059 basicCluster_iterator clustersEnd() const { return clusters_.end(); }
00060
00062 size_t clustersSize() const { return clusters_.size(); }
00063
00065 std::vector<DetId> getHitsByDetId() const { return usedHits_; }
00066
00068 void setSeed( const BasicClusterRef & r ) { seed_ = r; }
00069
00071 void add( const BasicClusterRef & r ) { clusters_.push_back( r ); }
00072
00073 private:
00074
00076 BasicClusterRef seed_;
00077
00079 BasicClusterRefVector clusters_;
00080
00082 std::vector<DetId> usedHits_;
00083
00084 double preshowerEnergy_;
00085
00086 mutable double rawEnergy_;
00087
00088 Double32_t phiWidth_;
00089 Double32_t etaWidth_;
00090
00091 };
00092
00093 }
00094 #endif