00001 #ifndef RecoEcal_EgammaClusterProducers_PreshowerClusterProducer_h 00002 #define RecoEcal_EgammaClusterProducers_PreshowerClusterProducer_h 00003 00004 #include <memory> 00005 00006 #include "FWCore/Framework/interface/EDProducer.h" 00007 #include "FWCore/Framework/interface/Event.h" 00008 #include "FWCore/Framework/interface/EventSetup.h" 00009 #include "FWCore/Framework/interface/ESHandle.h" 00010 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00011 #include "DataFormats/EcalDetId/interface/ESDetId.h" 00012 #include "DataFormats/EgammaReco/interface/PreshowerCluster.h" 00013 #include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h" 00014 #include "RecoEcal/EgammaClusterAlgos/interface/PreshowerClusterAlgo.h" 00015 #include "CondFormats/ESObjects/interface/ESGain.h" 00016 #include "CondFormats/ESObjects/interface/ESMIPToGeVConstant.h" 00017 #include "CondFormats/ESObjects/interface/ESEEIntercalibConstants.h" 00018 00019 class PreshowerClusterProducer : public edm::EDProducer { 00020 00021 public: 00022 00023 typedef math::XYZPoint Point; 00024 00025 explicit PreshowerClusterProducer (const edm::ParameterSet& ps); 00026 00027 ~PreshowerClusterProducer(); 00028 00029 virtual void produce( edm::Event& evt, const edm::EventSetup& es); 00030 void set(const edm::EventSetup& es); 00031 00032 private: 00033 00034 int nEvt_; // internal counter of events 00035 00036 //clustering parameters: 00037 edm::InputTag preshHitProducer_; // name of module/plugin/producer producing hits 00038 edm::InputTag endcapSClusterProducer_; // ditto SuperClusters 00039 00040 // name out output collections 00041 std::string preshClusterCollectionX_; 00042 std::string preshClusterCollectionY_; 00043 00044 00045 int preshNclust_; 00046 float preshClustECut; 00047 double etThresh_; 00048 00049 // association parameters: 00050 std::string assocSClusterCollection_; // name of super cluster output collection 00051 00052 edm::ESHandle<ESGain> esgain_; 00053 edm::ESHandle<ESMIPToGeVConstant> esMIPToGeV_; 00054 edm::ESHandle<ESEEIntercalibConstants> esEEInterCalib_; 00055 double mip_; 00056 double gamma_; 00057 double alpha_; 00058 00059 PreshowerClusterAlgo * presh_algo; // algorithm doing the real work 00060 // The set of used DetID's 00061 //std::set<DetId> used_strips; 00062 00063 PreshowerClusterAlgo::DebugLevel debugL; 00064 00065 }; 00066 #endif 00067