00001 #ifndef RecoParticleFlow_PFRecHitProducerHCAL_h_
00002 #define RecoParticleFlow_PFRecHitProducerHCAL_h_
00003
00004
00005 #include <memory>
00006 #include <vector>
00007
00008
00009 #include "FWCore/Framework/interface/Frameworkfwd.h"
00010 #include "FWCore/Framework/interface/EDProducer.h"
00011
00012 #include "FWCore/Framework/interface/Event.h"
00013 #include "FWCore/Framework/interface/MakerMacros.h"
00014
00015 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00016
00017 #include "Geometry/CaloTopology/interface/CaloDirection.h"
00018 #include "RecoParticleFlow/PFClusterProducer/interface/PFRecHitProducer.h"
00019 #include "DataFormats/ParticleFlowReco/interface/PFLayer.h"
00020
00028 class CaloSubdetectorTopology;
00029 class CaloSubdetectorGeometry;
00030 class DetId;
00031
00032
00033 class PFRecHitProducerHCAL : public PFRecHitProducer {
00034 public:
00035 explicit PFRecHitProducerHCAL(const edm::ParameterSet&);
00036 ~PFRecHitProducerHCAL();
00037
00038
00039 private:
00040
00041
00044 void createRecHits(std::vector<reco::PFRecHit>& rechits,
00045 edm::Event&, const edm::EventSetup&);
00046
00047
00048
00049
00050 reco::PFRecHit* createHcalRecHit( const DetId& detid,
00051 double energy,
00052 PFLayer::Layer layer,
00053 const CaloSubdetectorGeometry* geom,
00054 unsigned newDetId=0);
00055
00056
00057
00058
00061 void
00062 findRecHitNeighbours( reco::PFRecHit& rh,
00063 const std::map<unsigned,unsigned >& sortedHits,
00064 const CaloSubdetectorTopology& barrelTopo,
00065 const CaloSubdetectorGeometry& barrelGeom,
00066 const CaloSubdetectorTopology& endcapTopo,
00067 const CaloSubdetectorGeometry& endcapGeom );
00068
00072 void
00073 findRecHitNeighboursCT( reco::PFRecHit& rh,
00074 const std::map<unsigned,unsigned >& sortedHits,
00075 const CaloSubdetectorTopology& topology );
00076
00077 DetId getNorth(const DetId& id, const CaloSubdetectorTopology& topology);
00078 DetId getSouth(const DetId& id, const CaloSubdetectorTopology& topology);
00079
00080
00081
00082
00083
00084 edm::InputTag inputTagHcalRecHitsHBHE_;
00085 edm::InputTag inputTagCaloTowers_;
00086
00088 double thresh_HF_;
00089 };
00090
00091 #endif