Go to the documentation of this file.00001 #ifndef RecoParticleFlow_PFClusterProducer_PFRecHitProducerHCAL_h_
00002 #define RecoParticleFlow_PFClusterProducer_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 "Geometry/CaloTopology/interface/HcalTopology.h"
00019 #include "RecoParticleFlow/PFClusterProducer/plugins/PFRecHitProducer.h"
00020 #include "DataFormats/ParticleFlowReco/interface/PFLayer.h"
00021
00029 class CaloSubdetectorTopology;
00030 class CaloSubdetectorGeometry;
00031 class DetId;
00032
00033
00034 class PFRecHitProducerHCAL : public PFRecHitProducer {
00035 public:
00036 explicit PFRecHitProducerHCAL(const edm::ParameterSet&);
00037 ~PFRecHitProducerHCAL();
00038
00039 private:
00040
00041
00044 void createRecHits(std::vector<reco::PFRecHit>& rechits,
00045 std::vector<reco::PFRecHit>& rechitsCleaned,
00046 edm::Event&, const edm::EventSetup&);
00047
00048
00049
00050
00051 reco::PFRecHit* createHcalRecHit( const DetId& detid,
00052 double energy,
00053 PFLayer::Layer layer,
00054 const CaloSubdetectorGeometry* geom,
00055 unsigned newDetId=0);
00056
00057
00058
00059
00062 void
00063 findRecHitNeighbours( reco::PFRecHit& rh,
00064 const std::map<unsigned,unsigned >& sortedHits,
00065 const CaloSubdetectorTopology& barrelTopo,
00066 const CaloSubdetectorGeometry& barrelGeom,
00067 const CaloSubdetectorTopology& endcapTopo,
00068 const CaloSubdetectorGeometry& endcapGeom );
00069
00073 void
00074 findRecHitNeighboursCT( reco::PFRecHit& rh,
00075 const std::map<unsigned,unsigned >& sortedHits,
00076 const CaloSubdetectorTopology& topology );
00077
00078 DetId getNorth(const DetId& id, const CaloSubdetectorTopology& topology);
00079 DetId getSouth(const DetId& id, const CaloSubdetectorTopology& topology);
00080
00081
00082
00083
00084
00085 edm::InputTag inputTagHcalRecHitsHBHE_;
00086 edm::InputTag inputTagHcalRecHitsHF_;
00087 edm::InputTag inputTagCaloTowers_;
00088
00090 double thresh_HF_;
00091
00092 bool navigation_HF_;
00093 double weight_HFem_;
00094 double weight_HFhad_;
00095
00096
00097 bool HCAL_Calib_;
00098 bool HF_Calib_;
00099 float HCAL_Calib_29;
00100 float HF_Calib_29;
00101
00102
00103 double shortFibre_Cut;
00104 double longFibre_Fraction;
00105
00106
00107 double longFibre_Cut;
00108 double shortFibre_Fraction;
00109
00110
00111 bool applyLongShortDPG_;
00112
00113
00114 double longShortFibre_Cut;
00115 double minShortTiming_Cut;
00116 double maxShortTiming_Cut;
00117 double minLongTiming_Cut;
00118 double maxLongTiming_Cut;
00119
00120 bool applyTimeDPG_;
00121 bool applyPulseDPG_;
00122 int HcalMaxAllowedHFLongShortSev_;
00123 int HcalMaxAllowedHFDigiTimeSev_;
00124 int HcalMaxAllowedHFInTimeWindowSev_;
00125 int HcalMaxAllowedChannelStatusSev_;
00126
00127 int hcalHFLongShortFlagValue_;
00128 int hcalHFDigiTimeFlagValue_;
00129 int hcalHFInTimeWindowFlagValue_;
00130
00131
00132 bool ECAL_Compensate_;
00133 double ECAL_Threshold_;
00134 double ECAL_Compensation_;
00135 unsigned int ECAL_Dead_Code_;
00136
00137
00138 double EM_Depth_;
00139 double HAD_Depth_;
00140
00141 HcalTopologyMode::Mode m_mode;
00142 int m_maxDepthHB;
00143 int m_maxDepthHE;
00144 };
00145
00146 #endif