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 #include "CondFormats/ESObjects/interface/ESChannelStatus.h" 00019 00020 class PreshowerClusterProducer : public edm::EDProducer { 00021 00022 public: 00023 00024 typedef math::XYZPoint Point; 00025 00026 explicit PreshowerClusterProducer (const edm::ParameterSet& ps); 00027 00028 ~PreshowerClusterProducer(); 00029 00030 virtual void produce( edm::Event& evt, const edm::EventSetup& es); 00031 void set(const edm::EventSetup& es); 00032 00033 private: 00034 00035 int nEvt_; // internal counter of events 00036 00037 //clustering parameters: 00038 edm::InputTag preshHitProducer_; // name of module/plugin/producer producing hits 00039 edm::InputTag endcapSClusterProducer_; // ditto SuperClusters 00040 00041 // name out output collections 00042 std::string preshClusterCollectionX_; 00043 std::string preshClusterCollectionY_; 00044 00045 00046 int preshNclust_; 00047 float preshClustECut; 00048 double etThresh_; 00049 00050 // association parameters: 00051 std::string assocSClusterCollection_; // name of super cluster output collection 00052 00053 edm::ESHandle<ESGain> esgain_; 00054 edm::ESHandle<ESMIPToGeVConstant> esMIPToGeV_; 00055 edm::ESHandle<ESEEIntercalibConstants> esEEInterCalib_; 00056 edm::ESHandle<ESChannelStatus> esChannelStatus_; 00057 double mip_; 00058 double gamma0_; 00059 double gamma1_; 00060 double gamma2_; 00061 double gamma3_; 00062 double alpha0_; 00063 double alpha1_; 00064 double alpha2_; 00065 double alpha3_; 00066 00067 PreshowerClusterAlgo * presh_algo; // algorithm doing the real work 00068 // The set of used DetID's 00069 //std::set<DetId> used_strips; 00070 00071 PreshowerClusterAlgo::DebugLevel debugL; 00072 00073 }; 00074 #endif 00075