00001 #ifndef RECOLOCALCALO_CALOTOWERSCREATOR_CALOTOWERSCREATOR_H 00002 #define RECOLOCALCALO_CALOTOWERSCREATOR_CALOTOWERSCREATOR_H 1 00003 00004 #include "FWCore/Framework/interface/EDProducer.h" 00005 #include "FWCore/Framework/interface/Event.h" 00006 #include "FWCore/Framework/interface/ESWatcher.h" 00007 #include "DataFormats/Common/interface/Handle.h" 00008 00009 #include "FWCore/Framework/interface/EventSetup.h" 00010 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00011 #include "Geometry/Records/interface/IdealGeometryRecord.h" 00012 #include "RecoLocalCalo/CaloTowersCreator/interface/CaloTowersCreationAlgo.h" 00013 00014 00022 // Now we allow for the creation of towers from 00023 // rejected hists as well: requested by the MET group 00024 // for studies of the effect of noise clean up. 00025 00026 class CaloTowersCreator : public edm::EDProducer { 00027 public: 00028 explicit CaloTowersCreator(const edm::ParameterSet& ps); 00029 virtual ~CaloTowersCreator() { } 00030 virtual void produce(edm::Event& e, const edm::EventSetup& c); 00031 double EBEScale, EEEScale, HBEScale, HESEScale; 00032 double HEDEScale, HOEScale, HF1EScale, HF2EScale; 00033 00034 private: 00035 00036 static const std::vector<double>& getGridValues(); 00037 00038 CaloTowersCreationAlgo algo_; 00039 edm::InputTag hbheLabel_,hoLabel_,hfLabel_; 00040 std::vector<edm::InputTag> ecalLabels_; 00041 bool allowMissingInputs_; 00042 00043 00044 // more compact flags: all HCAL are combined 00045 00046 unsigned int theHcalAcceptSeverityLevel_; 00047 std::vector<int> theEcalSeveritiesToBeExcluded_; 00048 00049 // flag to use recovered hits 00050 bool theRecoveredHcalHitsAreUsed_; 00051 bool theRecoveredEcalHitsAreUsed_; 00052 00053 00054 // paramaters for creating towers from rejected hits 00055 00056 bool useRejectedHitsOnly_; 00057 unsigned int theHcalAcceptSeverityLevelForRejectedHit_; 00058 // for ECAL we have a list of problem flags 00059 std::vector<int> theEcalSeveritiesToBeUsedInBadTowers_; 00060 00061 00062 00063 // Flags wheteher to use recovered hits for production of 00064 // "bad towers". 00065 // If the recoverd hits were already used for good towers, 00066 // these flags have no effect. 00067 // Note: These flags have no effect on the default tower reconstruction. 00068 bool useRejectedRecoveredHcalHits_; 00069 bool useRejectedRecoveredEcalHits_; 00070 00071 edm::ESWatcher<HcalSeverityLevelComputerRcd> hcalSevLevelWatcher_; 00072 edm::ESWatcher<HcalChannelQualityRcd> hcalChStatusWatcher_; 00073 edm::ESWatcher<IdealGeometryRecord> caloTowerConstituentsWatcher_; 00074 00075 }; 00076 00077 #endif