CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_10_patch2/src/RecoParticleFlow/PFClusterProducer/plugins/PFRecHitProducerHO.h

Go to the documentation of this file.
00001 #ifndef RecoParticleFlow_PFClusterProducer_PFRecHitProducerHO_h_
00002 #define RecoParticleFlow_PFClusterProducer_PFRecHitProducerHO_h_
00003 
00004 // system include files
00005 #include <memory>
00006 #include <vector>
00007 
00008 // user include files
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 
00019 #include "RecoParticleFlow/PFClusterProducer/plugins/PFRecHitProducer.h"
00020 #include "DataFormats/ParticleFlowReco/interface/PFLayer.h"
00021 
00022 #include "DataFormats/Math/interface/Vector3D.h"
00030 class CaloSubdetectorTopology;
00031 class CaloSubdetectorGeometry;
00032 //class HcalBarrelGeometry;
00033 class DetId;
00034 
00035 class PFRecHitProducerHO : public PFRecHitProducer {
00036 
00037  public:
00038   explicit PFRecHitProducerHO(const edm::ParameterSet&);
00039   ~PFRecHitProducerHO();
00040 
00041  private:
00042 
00043   // gets HO rechits, 
00044   // translate them to PFRecHits, which are stored in the rechits vector
00045   void createRecHits(std::vector<reco::PFRecHit>& rechits,
00046                      std::vector<reco::PFRecHit>& rechitsCleaned,
00047                      edm::Event&, const edm::EventSetup&);
00048 
00049   reco::PFRecHit*  createHORecHit( const DetId& detid,
00050                                      double energy,
00051                                      PFLayer::Layer layer,
00052                                    const CaloSubdetectorGeometry* geom);
00053   //                                 unsigned newDetId=0);
00054 
00055 
00056 
00058   bool findHORecHitGeometry ( const DetId& detid, 
00059                                 const CaloSubdetectorGeometry* geom,
00060                                 math::XYZVector& position, 
00061                                 math::XYZVector& axis );
00062 
00064     void 
00065       findRecHitNeighboursHO( reco::PFRecHit& rh, 
00066                               const std::map<unsigned,unsigned >& sortedHits );
00067 void
00068     findRecHitNeighbours( reco::PFRecHit& rh, 
00069                           const std::map<unsigned,unsigned >& sortedHits, 
00070                           const CaloSubdetectorTopology& barrelTopo,
00071                           const CaloSubdetectorGeometry& barrelGeom); 
00072 
00076   void hoNeighbArray( const CaloSubdetectorGeometry& barrelGeom,
00077                         const CaloSubdetectorTopology& barrelTopo);
00078 
00079   DetId move(DetId cell, const CaloDirection& dir ) const;
00080 
00081   bool stdsimplemove(DetId& cell, 
00082                      const CaloDirection& dir,
00083                      const CaloSubdetectorTopology& barrelTopo,
00084                      const CaloSubdetectorGeometry& barrelGeom) const;
00085 
00086   bool stdmove(DetId& cell, 
00087                const CaloDirection& dir,
00088                const CaloSubdetectorTopology& barrelTopo,
00089                const CaloSubdetectorGeometry& barrelGeom) const; 
00090 
00091   // ----------member data ---------------------------
00092   
00093 
00094  
00096   std::vector<std::vector<DetId> >  neighboursHO_;
00097 
00099   bool  neighbourmapcalculated_;
00100 
00101 //  // if true, navigation will cross the barrel-endcap border
00102 //  bool  crossBarrelEndcapBorder_;
00103 
00104   // ----------access to event data
00105   edm::InputTag    inputTagHORecHits_;
00106 
00107   // ---- Thresholds on Ring0 hit energies
00108   double thresholdR0_;
00109 
00110   // --- Thresholds on Rings +/-1, +/-2 hit energies
00111   double thresholdR1_;
00112 
00113   // Maximum allowed severity of HO rechits.  Hits above the given severity level will be rejected.  Default max value is 9 (the same as used for accepting hits in the default Hcal caloTowers)
00114   int HOMaxAllowedSev_;
00115 };
00116 
00117 #endif