00001 #ifndef HCALHITRECONSTRUCTOR_H 00002 #define HCALHITRECONSTRUCTOR_H 1 00003 00004 #include "FWCore/Framework/interface/EDProducer.h" 00005 #include "FWCore/Framework/interface/Event.h" 00006 #include "DataFormats/Common/interface/Handle.h" 00007 00008 #include "FWCore/Framework/interface/EventSetup.h" 00009 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00010 00011 #include "RecoLocalCalo/HcalRecAlgos/interface/HcalSimpleRecAlgo.h" 00012 #include "RecoLocalCalo/HcalRecAlgos/interface/HcalHFStatusBitFromRecHits.h" 00013 #include "RecoLocalCalo/HcalRecAlgos/interface/HcalHFStatusBitFromDigis.h" 00014 #include "RecoLocalCalo/HcalRecAlgos/interface/HcalCaloFlagLabels.h" 00015 00016 #include "CondFormats/HcalObjects/interface/HcalChannelQuality.h" 00017 #include "CondFormats/HcalObjects/interface/HcalChannelStatus.h" 00018 #include "CondFormats/HcalObjects/interface/HcalRecoParams.h" 00019 #include "CondFormats/HcalObjects/interface/HcalRecoParam.h" 00020 #include "CondFormats/HcalObjects/interface/HcalFlagHFDigiTimeParams.h" 00021 00022 #include "RecoLocalCalo/HcalRecAlgos/interface/HBHEStatusBitSetter.h" 00023 #include "RecoLocalCalo/HcalRecAlgos/interface/HcalTimingCorrector.h" 00024 #include "RecoLocalCalo/HcalRecAlgos/interface/HBHETimeProfileStatusBitSetter.h" 00025 #include "RecoLocalCalo/HcalRecAlgos/interface/HBHETimingShapedFlag.h" 00026 #include "RecoLocalCalo/HcalRecAlgos/interface/HBHEPulseShapeFlag.h" 00027 #include "RecoLocalCalo/HcalRecAlgos/interface/HcalADCSaturationFlag.h" 00028 #include "RecoLocalCalo/HcalRecAlgos/interface/HFTimingTrustFlag.h" 00029 #include "RecoLocalCalo/HcalRecAlgos/interface/HcalHF_S9S1algorithm.h" 00030 #include "RecoLocalCalo/HcalRecAlgos/interface/HcalHF_PETalgorithm.h" 00031 00039 class HcalHitReconstructor : public edm::EDProducer { 00040 public: 00041 explicit HcalHitReconstructor(const edm::ParameterSet& ps); 00042 virtual ~HcalHitReconstructor(); 00043 virtual void beginRun(edm::Run&r, edm::EventSetup const & es); 00044 virtual void endRun(edm::Run&r, edm::EventSetup const & es); 00045 virtual void produce(edm::Event& e, const edm::EventSetup& c); 00046 private: 00047 HcalSimpleRecAlgo reco_; 00048 HcalADCSaturationFlag* saturationFlagSetter_; 00049 HFTimingTrustFlag* HFTimingTrustFlagSetter_; 00050 HBHEStatusBitSetter* hbheFlagSetter_; 00051 HBHETimeProfileStatusBitSetter* hbheHSCPFlagSetter_; 00052 HBHETimingShapedFlagSetter* hbheTimingShapedFlagSetter_; 00053 HBHEPulseShapeFlagSetter *hbhePulseShapeFlagSetter_; 00054 HcalHFStatusBitFromDigis* hfdigibit_; 00055 HcalHF_S9S1algorithm* hfS9S1_; 00056 HcalHF_S9S1algorithm* hfS8S1_; 00057 HcalHF_PETalgorithm* hfPET_; 00058 00059 DetId::Detector det_; 00060 int subdet_; 00061 HcalOtherSubdetector subdetOther_; 00062 edm::InputTag inputLabel_; 00063 //std::vector<std::string> channelStatusToDrop_; 00064 bool correctTiming_; // turn on/off Ken Rossato's algorithm to fix timing 00065 bool setNoiseFlags_; // turn on/off basic noise flags 00066 bool setHSCPFlags_; // turn on/off HSCP noise flags 00067 bool setSaturationFlags_; // turn on/off flag indicating ADC saturation 00068 bool setTimingTrustFlags_; // turn on/off HF timing uncertainty flag 00069 bool setPulseShapeFlags_; // turn on/off HBHE fit-based noise flags 00070 bool dropZSmarkedPassed_; // turn on/off dropping of zero suppression marked and passed digis 00071 00072 int firstAuxTS_; 00073 00074 // legacy parameters for config-set values compatibility 00075 int firstSample_; 00076 int samplesToAdd_; 00077 bool tsFromDB_; 00078 bool recoParamsFromDB_; 00079 bool digiTimeFromDB_; 00080 00081 00082 // switch on/off leakage (to pre-sample) correction 00083 bool useLeakCorrection_; 00084 00085 HcalRecoParams* paramTS; // firstSample & sampleToAdd from DB 00086 HcalFlagHFDigiTimeParams* HFDigiTimeParams; // HF DigiTime parameters 00087 }; 00088 00089 #endif