00001 #ifndef RecoLocalCalo_EcalRecProducers_EcalTPSkimmer_hh 00002 #define RecoLocalCalo_EcalRecProducers_EcalTPSkimmer_hh 00003 00014 #include "FWCore/Framework/interface/EDProducer.h" 00015 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00016 #include "FWCore/Framework/interface/Event.h" 00017 #include "FWCore/Framework/interface/ESHandle.h" 00018 #include "FWCore/Framework/interface/EventSetup.h" 00019 00020 #include "DataFormats/EcalDetId/interface/EcalTrigTowerDetId.h" 00021 #include "DataFormats/EcalDigi/interface/EcalDigiCollections.h" 00022 00023 #include "Geometry/CaloTopology/interface/EcalTrigTowerConstituentsMap.h" 00024 00025 class EcalTPSkimmer : public edm::EDProducer { 00026 00027 public: 00028 explicit EcalTPSkimmer(const edm::ParameterSet& ps); 00029 ~EcalTPSkimmer(); 00030 virtual void produce(edm::Event& evt, const edm::EventSetup& es); 00031 00032 private: 00033 00034 bool alreadyInserted( EcalTrigTowerDetId ttId ); 00035 void insertTP( EcalTrigTowerDetId ttId, edm::Handle<EcalTrigPrimDigiCollection> &in, EcalTrigPrimDigiCollection &out ); 00036 00037 std::string tpCollection_; 00038 00039 bool skipModule_; 00040 bool doBarrel_; 00041 bool doEndcap_; 00042 00043 std::vector<uint32_t> chStatusToSelectTP_; 00044 edm::ESHandle<EcalTrigTowerConstituentsMap> ttMap_; 00045 00046 std::set<EcalTrigTowerDetId> insertedTP_; 00047 00048 edm::InputTag tpInputCollection_; 00049 00050 std::string tpOutputCollection_; 00051 }; 00052 00053 #endif