CMS 3D CMS Logo

EcalRecHitWorkerSimple.cc
Go to the documentation of this file.
7 
11  v_chstatus_ = StringToEnumValue<EcalChannelStatusCode::Code>(
12  ps.getParameter<std::vector<std::string> >("ChannelStatusToBeExcluded"));
13  killDeadChannels_ = ps.getParameter<bool>("killDeadChannels");
14  laserCorrection_ = ps.getParameter<bool>("laserCorrection");
15  EBLaserMIN_ = ps.getParameter<double>("EBLaserMIN");
16  EELaserMIN_ = ps.getParameter<double>("EELaserMIN");
17  EBLaserMAX_ = ps.getParameter<double>("EBLaserMAX");
18  EELaserMAX_ = ps.getParameter<double>("EELaserMAX");
19 
20  skipTimeCalib_ = ps.getParameter<bool>("skipTimeCalib");
21 
23  if (!skipTimeCalib_) {
26  }
29  if (laserCorrection_)
31 
32  // Traslate string representation of flagsMapDBReco into enum values
33  const edm::ParameterSet& p = ps.getParameter<edm::ParameterSet>("flagsMapDBReco");
34  std::vector<std::string> recoflagbitsStrings = p.getParameterNames();
35  v_DB_reco_flags_.resize(32);
36 
37  for (unsigned int i = 0; i != recoflagbitsStrings.size(); ++i) {
38  EcalRecHit::Flags recoflagbit = (EcalRecHit::Flags)StringToEnumValue<EcalRecHit::Flags>(recoflagbitsStrings[i]);
39  std::vector<std::string> dbstatus_s = p.getParameter<std::vector<std::string> >(recoflagbitsStrings[i]);
40  std::vector<uint32_t> dbstatuses;
41  for (unsigned int j = 0; j != dbstatus_s.size(); ++j) {
43  (EcalChannelStatusCode::Code)StringToEnumValue<EcalChannelStatusCode::Code>(dbstatus_s[j]);
44  dbstatuses.push_back(dbstatus);
45  }
46 
47  v_DB_reco_flags_[recoflagbit] = dbstatuses;
48  }
49 
50  flagmask_ = 0;
53  flagmask_ |= 0x1 << EcalRecHit::kDead;
57 }
58 
61 
62  if (!skipTimeCalib_) {
65  }
66 
67  agc = es.getHandle(agcToken_);
69  if (laserCorrection_)
71 }
72 
74  const EcalUncalibratedRecHit& uncalibRH,
76  DetId detid = uncalibRH.id();
77 
79  EcalChannelStatusCode::Code dbstatus = chit->getStatusCode();
80 
81  // check for channels to be excluded from reconstruction
82  if (!v_chstatus_.empty()) {
83  std::vector<int>::const_iterator res = std::find(v_chstatus_.begin(), v_chstatus_.end(), dbstatus);
84  if (res != v_chstatus_.end())
85  return false;
86  }
87 
88  uint32_t flagBits = setFlagBits(v_DB_reco_flags_, dbstatus);
89 
90  float offsetTime = 0; // the global time phase
91  const EcalIntercalibConstantMap& icalMap = ical->getMap();
92  if (detid.subdetId() == EcalEndcap) {
94  if (!skipTimeCalib_)
95  offsetTime = offtime->getEEValue();
96  } else {
98  if (!skipTimeCalib_)
99  offsetTime = offtime->getEBValue();
100  }
101 
102  // first intercalibration constants
103  EcalIntercalibConstantMap::const_iterator icalit = icalMap.find(detid);
104  EcalIntercalibConstant icalconst = 1;
105  if (icalit != icalMap.end()) {
106  icalconst = (*icalit);
107  } else {
108  edm::LogError("EcalRecHitError") << "No intercalib const found for xtal " << detid.rawId()
109  << "! something wrong with EcalIntercalibConstants in your DB? ";
110  }
111 
112  // get laser coefficient
113  float lasercalib = 1.;
114  if (laserCorrection_)
115  lasercalib = laser->getLaserCorrection(detid, evt.time());
116 
117  // get time calibration coefficient
118  EcalTimeCalibConstant itimeconst = 0;
119 
120  if (!skipTimeCalib_) {
121  const EcalTimeCalibConstantMap& itimeMap = itime->getMap();
123 
124  if (itime != itimeMap.end()) {
125  itimeconst = (*itime);
126  } else {
127  edm::LogError("EcalRecHitError") << "No time calib const found for xtal " << detid.rawId()
128  << "! something wrong with EcalTimeCalibConstants in your DB? ";
129  }
130  }
131 
132  // make the rechit and put in the output collection, unless recovery has to take care of it
133  if (!(flagmask_ & flagBits) || !killDeadChannels_) {
134  EcalRecHit myrechit(rechitMaker_->makeRecHit(uncalibRH,
135  icalconst * lasercalib,
136  (itimeconst + offsetTime),
137  /*recoflags_ 0*/
138  flagBits));
139 
140  if (detid.subdetId() == EcalBarrel && (lasercalib < EBLaserMIN_ || lasercalib > EBLaserMAX_))
142  if (detid.subdetId() == EcalEndcap && (lasercalib < EELaserMIN_ || lasercalib > EELaserMAX_))
143  myrechit.setFlag(EcalRecHit::kPoorCalib);
144  result.push_back(myrechit);
145  }
146 
147  return true;
148 }
149 
150 // Take our association map of dbstatuses-> recHit flagbits and return the apporpriate flagbit word
151 uint32_t EcalRecHitWorkerSimple::setFlagBits(const std::vector<std::vector<uint32_t> >& map, const uint32_t& status) {
152  for (unsigned int i = 0; i != map.size(); ++i) {
153  if (std::find(map[i].begin(), map[i].end(), status) != map[i].end())
154  return 0x1 << i;
155  }
156 
157  return 0;
158 }
159 
161 
EcalRecHitWorkerSimple::icalToken_
edm::ESGetToken< EcalIntercalibConstants, EcalIntercalibConstantsRcd > icalToken_
Definition: EcalRecHitWorkerSimple.h:51
EcalCondObjectContainer::end
const_iterator end() const
Definition: EcalCondObjectContainer.h:74
EcalRecHit::kNeighboursRecovered
Definition: EcalRecHit.h:29
EcalTimeOffsetConstantRcd
Definition: EcalTimeOffsetConstantRcd.h:5
EcalRecHitWorkerSimple::chStatusToken_
edm::ESGetToken< EcalChannelStatus, EcalChannelStatusRcd > chStatusToken_
Definition: EcalRecHitWorkerSimple.h:55
EcalRecHit
Definition: EcalRecHit.h:15
EcalRecHit::kTPSaturated
Definition: EcalRecHit.h:33
mps_fire.i
i
Definition: mps_fire.py:428
EcalRecHitWorkerSimple::~EcalRecHitWorkerSimple
~EcalRecHitWorkerSimple() override
Definition: EcalRecHitWorkerSimple.cc:160
MessageLogger.h
EcalRecHitSimpleAlgo::setADCToGeVConstant
void setADCToGeVConstant(const float &value) override
make rechits from dataframes
Definition: EcalRecHitSimpleAlgo.h:23
EcalRecHitWorkerSimple::offtime
edm::ESHandle< EcalTimeOffsetConstant > offtime
Definition: EcalRecHitWorkerSimple.h:46
mps_update.status
status
Definition: mps_update.py:69
EcalRecHit::kL1SpikeFlag
Definition: EcalRecHit.h:34
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
EcalRecHit::Flags
Flags
Definition: EcalRecHit.h:20
EcalRecHitWorkerSimple::EELaserMIN_
double EELaserMIN_
Definition: EcalRecHitWorkerSimple.h:40
EcalRecHitWorkerSimple::laserCorrection_
bool laserCorrection_
Definition: EcalRecHitWorkerSimple.h:66
EcalTimeOffsetConstant::getEEValue
float getEEValue() const
Definition: EcalTimeOffsetConstant.h:21
edm::SortedCollection< EcalRecHit >
EcalTimeOffsetConstant
Definition: EcalTimeOffsetConstant.h:13
EcalRecHitWorkerSimple::set
void set(const edm::EventSetup &es) override
Definition: EcalRecHitWorkerSimple.cc:59
EcalADCToGeVConstant
Definition: EcalADCToGeVConstant.h:13
EcalTimeOffsetConstant::getEBValue
float getEBValue() const
Definition: EcalTimeOffsetConstant.h:20
EcalRecHitWorkerSimple::run
bool run(const edm::Event &evt, const EcalUncalibratedRecHit &uncalibRH, EcalRecHitCollection &result) override
Definition: EcalRecHitWorkerSimple.cc:73
EcalRecHitWorkerSimple::laser
edm::ESHandle< EcalLaserDbService > laser
Definition: EcalRecHitWorkerSimple.h:50
edm::EventBase::time
edm::Timestamp time() const
Definition: EventBase.h:60
EcalRecHit::kTowerRecovered
Definition: EcalRecHit.h:30
spr::find
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
EcalCondObjectContainer
Definition: EcalCondObjectContainer.h:13
EcalBarrel
Definition: EcalSubdetector.h:10
EcalIntercalibConstant
float EcalIntercalibConstant
Definition: EcalIntercalibConstants.h:10
EcalRecHitSimpleAlgo::makeRecHit
EcalRecHit makeRecHit(const EcalUncalibratedRecHit &uncalibRH, const float &intercalibConstant, const float &timeIntercalib=0, const uint32_t &flags=0) const override
Compute parameters.
Definition: EcalRecHitSimpleAlgo.h:32
DetId
Definition: DetId.h:17
MakerMacros.h
testProducerWithPsetDescEmpty_cfi.x1
x1
Definition: testProducerWithPsetDescEmpty_cfi.py:33
EcalRecHitWorkerSimple::itimeToken_
edm::ESGetToken< EcalTimeCalibConstants, EcalTimeCalibConstantsRcd > itimeToken_
Definition: EcalRecHitWorkerSimple.h:52
EcalRecHitWorkerSimple::agcToken_
edm::ESGetToken< EcalADCToGeVConstant, EcalADCToGeVConstantRcd > agcToken_
Definition: EcalRecHitWorkerSimple.h:54
mps_fire.end
end
Definition: mps_fire.py:242
EcalCondObjectContainer::find
const_iterator find(uint32_t rawId) const
Definition: EcalCondObjectContainer.h:53
EcalRecHitWorkerSimple::EcalRecHitWorkerSimple
EcalRecHitWorkerSimple(const edm::ParameterSet &, edm::ConsumesCollector &c)
Definition: EcalRecHitWorkerSimple.cc:8
EcalIntercalibConstants
EcalIntercalibConstantMap EcalIntercalibConstants
Definition: EcalIntercalibConstants.h:12
StringToEnumValue.h
DEFINE_EDM_PLUGIN
#define DEFINE_EDM_PLUGIN(factory, type, name)
Definition: PluginFactory.h:124
EcalSeverityLevelAlgo.h
EcalRecHitWorkerSimple::agc
edm::ESHandle< EcalADCToGeVConstant > agc
Definition: EcalRecHitWorkerSimple.h:47
EcalLaserDbRecord
Definition: EcalLaserDbRecord.h:19
DetId::subdetId
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum)
Definition: DetId.h:48
EcalEndcap
Definition: EcalSubdetector.h:10
EcalRecHitWorkerSimple::offtimeToken_
edm::ESGetToken< EcalTimeOffsetConstant, EcalTimeOffsetConstantRcd > offtimeToken_
Definition: EcalRecHitWorkerSimple.h:53
EcalRecHitWorkerSimple::EBLaserMAX_
double EBLaserMAX_
Definition: EcalRecHitWorkerSimple.h:41
edm::ParameterSet
Definition: ParameterSet.h:47
ecal_dqm_sourceclient-live_cfg.EcalLaserDbService
EcalLaserDbService
Definition: ecal_dqm_sourceclient-live_cfg.py:65
EcalADCToGeVConstant::getEEValue
float getEEValue() const
Definition: EcalADCToGeVConstant.h:21
Event.h
EcalUncalibratedRecHit::id
DetId id() const
Definition: EcalUncalibratedRecHit.h:38
EcalChannelStatusRcd
Definition: EcalChannelStatusRcd.h:5
EcalRecHitWorkerSimple::EBLaserMIN_
double EBLaserMIN_
Definition: EcalRecHitWorkerSimple.h:39
edmplugin::PluginFactory
Definition: PluginFactory.h:34
EcalRecHitWorkerSimple.h
edm::EventSetup::getHandle
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:155
trackerHitRTTI::vector
Definition: trackerHitRTTI.h:21
EcalRecHitWorkerSimple::chStatus
edm::ESHandle< EcalChannelStatus > chStatus
Definition: EcalRecHitWorkerSimple.h:48
edm::EventSetup
Definition: EventSetup.h:58
EcalRecHitWorkerSimple::laserToken_
edm::ESGetToken< EcalLaserDbService, EcalLaserDbRecord > laserToken_
Definition: EcalRecHitWorkerSimple.h:56
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
EcalRecHit::kDead
Definition: EcalRecHit.h:31
EcalChannelStatus
EcalChannelStatusMap EcalChannelStatus
Definition: EcalChannelStatus.h:13
res
Definition: Electron.h:6
EcalRecHitWorkerSimple::ical
edm::ESHandle< EcalIntercalibConstants > ical
Definition: EcalRecHitWorkerSimple.h:44
EcalTimeCalibConstantsRcd
Definition: EcalTimeCalibConstantsRcd.h:5
EcalUncalibratedRecHit
Definition: EcalUncalibratedRecHit.h:8
EcalLaserDbService::getLaserCorrection
float getLaserCorrection(DetId const &xid, edm::Timestamp const &iTime) const
Definition: EcalLaserDbService.cc:30
EcalChannelStatusCode::Code
Code
Definition: EcalChannelStatusCode.h:20
EcalRecHitWorkerSimple::skipTimeCalib_
bool skipTimeCalib_
Definition: EcalRecHitWorkerSimple.h:67
DetId::rawId
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
EcalRecHitWorkerSimple::itime
edm::ESHandle< EcalTimeCalibConstants > itime
Definition: EcalRecHitWorkerSimple.h:45
EcalRecHitWorkerSimple::EELaserMAX_
double EELaserMAX_
Definition: EcalRecHitWorkerSimple.h:42
EcalRecHitWorkerSimple::flagmask_
uint32_t flagmask_
Definition: EcalRecHitWorkerSimple.h:63
EventSetup.h
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
EcalRecHit::kPoorCalib
Definition: EcalRecHit.h:26
EcalRecHitSimpleAlgo
Definition: EcalRecHitSimpleAlgo.h:15
EcalRecHitWorkerSimple::v_chstatus_
std::vector< int > v_chstatus_
Definition: EcalRecHitWorkerSimple.h:49
EcalCondObjectContainer::const_iterator
std::vector< Item >::const_iterator const_iterator
Definition: EcalCondObjectContainer.h:19
mps_fire.result
result
Definition: mps_fire.py:311
genParticles_cff.map
map
Definition: genParticles_cff.py:11
EcalRecHitWorkerFactory.h
EcalRecHitWorkerSimple::v_DB_reco_flags_
std::vector< std::vector< uint32_t > > v_DB_reco_flags_
Definition: EcalRecHitWorkerSimple.h:59
EcalTimeCalibConstants
EcalTimeCalibConstantMap EcalTimeCalibConstants
Definition: EcalTimeCalibConstants.h:12
c
auto & c
Definition: CAHitNtupletGeneratorKernelsImpl.h:46
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
EcalRecHit::setFlag
void setFlag(int flag)
set the flags (from Flags or ESFlags)
Definition: EcalRecHit.h:183
EcalRecHit::kKilled
Definition: EcalRecHit.h:32
EcalRecHitWorkerSimple::rechitMaker_
EcalRecHitSimpleAlgo * rechitMaker_
Definition: EcalRecHitWorkerSimple.h:69
edm::Event
Definition: Event.h:73
EcalRecHitWorkerSimple::killDeadChannels_
bool killDeadChannels_
Definition: EcalRecHitWorkerSimple.h:65
EcalADCToGeVConstant::getEBValue
float getEBValue() const
Definition: EcalADCToGeVConstant.h:20
EcalIntercalibConstantsRcd
Definition: EcalIntercalibConstantsRcd.h:5
EcalRecHitWorkerBaseClass
Definition: EcalRecHitWorkerBaseClass.h:13
EcalADCToGeVConstantRcd
Definition: EcalADCToGeVConstantRcd.h:5
edm::ConsumesCollector
Definition: ConsumesCollector.h:45
EcalTimeCalibConstant
float EcalTimeCalibConstant
Definition: EcalTimeCalibConstants.h:10
EcalRecHitWorkerSimple
Definition: EcalRecHitWorkerSimple.h:30
EcalRecHitWorkerSimple::setFlagBits
uint32_t setFlagBits(const std::vector< std::vector< uint32_t > > &map, const uint32_t &status)
Definition: EcalRecHitWorkerSimple.cc:151