File indexing completed on 2024-04-06 12:04:51
0001 #ifndef DataFormats_ParticleFlowReco_HGCalMultiCluster
0002 #define DataFormats_ParticleFlowReco_HGCalMultiCluster
0003
0004 #include <vector>
0005 #include <limits>
0006
0007 #include "DataFormats/Common/interface/PtrVector.h"
0008 #include "DataFormats/EgammaReco/interface/BasicCluster.h"
0009 #include "DataFormats/ParticleFlowReco/interface/PFCluster.h"
0010
0011 namespace reco {
0012 class HGCalMultiCluster : public reco::PFCluster {
0013 public:
0014 typedef edm::PtrVector<reco::BasicCluster>::const_iterator component_iterator;
0015 typedef edm::PtrVector<reco::BasicCluster> ClusterCollection;
0016
0017 HGCalMultiCluster() : PFCluster() { this->setLayer(PFLayer::HGCAL); }
0018
0019 HGCalMultiCluster(double energy, double x, double y, double z, ClusterCollection& thecls);
0020
0021 void push_back(const edm::Ptr<reco::BasicCluster>& b) { myclusters.push_back(b); }
0022
0023 const edm::PtrVector<reco::BasicCluster>& clusters() const { return myclusters; }
0024
0025 unsigned int size() const { return myclusters.size(); }
0026 component_iterator begin() const { return myclusters.begin(); }
0027 component_iterator end() const { return myclusters.end(); }
0028
0029 bool operator>(const HGCalMultiCluster& rhs) const { return (energy() > rhs.energy()); }
0030
0031 private:
0032 edm::PtrVector<reco::BasicCluster> myclusters;
0033 };
0034
0035 typedef std::vector<HGCalMultiCluster> HGCalMultiClusterCollection;
0036 }
0037 #endif