diff --git a/DataFormats/ForwardDetId/src/HGCEEDetId.cc b/DataFormats/ForwardDetId/src/HGCEEDetId.cc index 9b2613c8cc483..43fb8452f6201 100644 --- a/DataFormats/ForwardDetId/src/HGCEEDetId.cc +++ b/DataFormats/ForwardDetId/src/HGCEEDetId.cc @@ -15,6 +15,7 @@ HGCEEDetId::HGCEEDetId(ForwardSubdetector subdet, int zp, int lay, int sec, int id_ |= ((cell & 0xfff) << 0 ); id_ |= ((sec & 0x3f) << 12); + if(subsec<0) subsec=0; id_ |= ((subsec & 0x1) << 18); id_ |= ((lay & 0x1f) << 19); if (zp>0) id_ |= ((zp & 0x1) << 24); diff --git a/DataFormats/ForwardDetId/src/HGCHEDetId.cc b/DataFormats/ForwardDetId/src/HGCHEDetId.cc index b6b6ecd89aaf8..cd67894355058 100644 --- a/DataFormats/ForwardDetId/src/HGCHEDetId.cc +++ b/DataFormats/ForwardDetId/src/HGCHEDetId.cc @@ -14,6 +14,7 @@ HGCHEDetId::HGCHEDetId(ForwardSubdetector subdet, int zp, int lay, int sec, int id_ |= ((cell & 0xfff) << 0 ); id_ |= ((sec & 0x3f) << 12); + if(subsec<0) subsec=0; id_ |= ((subsec & 0x1) << 18); id_ |= ((lay & 0x1f) << 19); if(zp>0) id_ |= ((zp & 0x1) << 24); diff --git a/DataFormats/ForwardDetId/src/HGCalDetId.cc b/DataFormats/ForwardDetId/src/HGCalDetId.cc index d31119232b7ad..cfaac6eeae4e9 100644 --- a/DataFormats/ForwardDetId/src/HGCalDetId.cc +++ b/DataFormats/ForwardDetId/src/HGCalDetId.cc @@ -25,6 +25,7 @@ HGCalDetId::HGCalDetId(ForwardSubdetector subdet, int zp, int lay, int sec, int uint32_t rawid=0; rawid |= ((cell & 0xffff) << 0 ); rawid |= ((sec & 0x7f) << 16); + if(subsec<0) subsec=0; rawid |= ((subsec & 0x1) << 23); rawid |= ((lay & 0x7f) << 24); if (zp>0) rawid |= ((zp & 0x1) << 31); diff --git a/SimCalorimetry/HGCSimProducers/interface/HGCDigitizer.h b/SimCalorimetry/HGCSimProducers/interface/HGCDigitizer.h index dafa46dd78fa9..c9f2bb22041b5 100644 --- a/SimCalorimetry/HGCSimProducers/interface/HGCDigitizer.h +++ b/SimCalorimetry/HGCSimProducers/interface/HGCDigitizer.h @@ -57,6 +57,9 @@ class HGCDigitizer private : + //used for initialization + bool checkValidDetIds_; + //input/output names std::string hitCollection_,digiCollection_; diff --git a/SimCalorimetry/HGCSimProducers/interface/HGCDigitizerBase.h b/SimCalorimetry/HGCSimProducers/interface/HGCDigitizerBase.h index 35bd482c0f88a..7169fa18a8149 100644 --- a/SimCalorimetry/HGCSimProducers/interface/HGCDigitizerBase.h +++ b/SimCalorimetry/HGCSimProducers/interface/HGCDigitizerBase.h @@ -57,7 +57,6 @@ class HGCDigitizerBase { it!=simData.end(); it++) { - //convert total energy GeV->keV->ADC counts double totalEn(0); for(size_t i=0; isecond.size(); i++) totalEn+= (it->second)[i]; @@ -76,8 +75,6 @@ class HGCDigitizerBase { if(singleSample.adc()==0) continue; - //std::cout << totalEn << " -> Gain:" << singleSample.gain() << " #ADC:" << singleSample.adc() << std::endl; - //no time information D newDataFrame( it->first ); newDataFrame.setSample(0, singleSample); diff --git a/SimCalorimetry/HGCSimProducers/src/HGCDigitizer.cc b/SimCalorimetry/HGCSimProducers/src/HGCDigitizer.cc index 3b3e607981994..6d3e44999d6c0 100644 --- a/SimCalorimetry/HGCSimProducers/src/HGCDigitizer.cc +++ b/SimCalorimetry/HGCSimProducers/src/HGCDigitizer.cc @@ -16,6 +16,7 @@ // HGCDigitizer::HGCDigitizer(const edm::ParameterSet& ps) : + checkValidDetIds_(true), theHGCEEDigitizer_(ps), theHGCHEbackDigitizer_(ps), theHGCHEfrontDigitizer_(ps), @@ -45,7 +46,7 @@ HGCDigitizer::HGCDigitizer(const edm::ParameterSet& ps) : } // -void HGCDigitizer::initializeEvent(edm::Event const& e, edm::EventSetup const& es) +void HGCDigitizer::initializeEvent(edm::Event const& e, edm::EventSetup const& es) { resetSimHitDataAccumulator(); } @@ -165,6 +166,22 @@ void HGCDigitizer::accumulate(edm::Handle const &hits, i if(itime<0 || itime>(int)simHitIt->second.size()) continue; (simHitIt->second)[itime] += ien; } + + //add base data for noise simulation + if(!checkValidDetIds_) return; + if(!geom.isValid()) return; + HGCSimHitData baseData(10,0); + const std::vector &validIds=geom->getValidDetIds(); + int nadded(0); + for(std::vector::const_iterator it=validIds.begin(); it!=validIds.end(); it++) + { + uint32_t id(it->rawId()); + if(simHitAccumulator_.find(id)!=simHitAccumulator_.end()) continue; + simHitAccumulator_[id]=baseData; + nadded++; + } + std::cout << "Added " << nadded << " detIds without " << hitCollection_ << " in first event processed" << std::endl; + checkValidDetIds_=false; } // diff --git a/SimGeneral/MixingModule/python/hgcalDigitizer_cfi.py b/SimGeneral/MixingModule/python/hgcalDigitizer_cfi.py index ca1b93ac02f74..8a9185ddaff47 100644 --- a/SimGeneral/MixingModule/python/hgcalDigitizer_cfi.py +++ b/SimGeneral/MixingModule/python/hgcalDigitizer_cfi.py @@ -24,9 +24,9 @@ hgchebackDigitizer = hgceeDigitizer.clone() hgchebackDigitizer.hitCollection = cms.untracked.string("HGCHitsHEback") hgchebackDigitizer.digiCollection = cms.untracked.string("HGCDigisHEback") -hgchefrontDigitizer.digiCfg.mipInKeV = cms.untracked.double(1498.4) -hgchefrontDigitizer.digiCfg.lsbInMIP = cms.untracked.double(0.25) -hgchefrontDigitizer.digiCfg.mip2noise = cms.untracked.double(5.0) +hgchebackDigitizer.digiCfg.mipInKeV = cms.untracked.double(1498.4) +hgchebackDigitizer.digiCfg.lsbInMIP = cms.untracked.double(0.25) +hgchebackDigitizer.digiCfg.mip2noise = cms.untracked.double(5.0)