CMS 3D CMS Logo

ZdcSimpleReconstructor.cc
Go to the documentation of this file.
10 
11 #include <iostream>
12 
14  : reco_(conf.getParameter<bool>("correctForTimeslew"),
15  conf.getParameter<bool>("correctForPhaseContainment"),
16  conf.getParameter<double>("correctionPhaseNS"),
17  conf.getParameter<int>("recoMethod"),
18  conf.getParameter<int>("lowGainOffset"),
19  conf.getParameter<double>("lowGainFrac")),
20  det_(DetId::Hcal),
21  dropZSmarkedPassed_(conf.getParameter<bool>("dropZSmarkedPassed")) {
22  tok_input_castor = consumes<ZDCDigiCollection>(conf.getParameter<edm::InputTag>("digiLabelcastor"));
23  tok_input_hcal = consumes<ZDCDigiCollection>(conf.getParameter<edm::InputTag>("digiLabelhcal"));
24 
25  std::string subd = conf.getParameter<std::string>("Subdetector");
26  if (!strcasecmp(subd.c_str(), "ZDC")) {
27  det_ = DetId::Calo;
29  produces<ZDCRecHitCollection>();
30  } else if (!strcasecmp(subd.c_str(), "CALIB")) {
33  produces<HcalCalibRecHitCollection>();
34  } else {
35  std::cout << "ZdcSimpleReconstructor is not associated with a specific subdetector!" << std::endl;
36  }
37 
38  hcalTimeSlew_delay_ = nullptr;
39 
40  // ES tokens
41  htopoToken_ = esConsumes<HcalTopology, HcalRecNumberingRecord, edm::Transition::BeginRun>();
42  paramsToken_ = esConsumes<HcalLongRecoParams, HcalLongRecoParamsRcd, edm::Transition::BeginRun>();
43  conditionsToken_ = esConsumes<HcalDbService, HcalDbRecord>();
44  timeSlewToken_ = esConsumes<HcalTimeSlew, HcalTimeSlewRecord>(edm::ESInputTag("", "HBHE"));
45 }
46 
48 
50  const HcalTopology& htopo = es.getData(htopoToken_);
52  longRecoParams_ = std::make_unique<HcalLongRecoParams>(p);
53  longRecoParams_->setTopo(&htopo);
54 
56 }
57 
59 
61  // get conditions
62  const HcalDbService* conditions = &eventSetup.getData(conditionsToken_);
63 
64  // define vectors to pass noiseTS and signalTS
65  std::vector<unsigned int> mySignalTS;
66  std::vector<unsigned int> myNoiseTS;
67 
70  e.getByToken(tok_input_hcal, digi);
71 
72  if (digi->empty()) {
73  e.getByToken(tok_input_castor, digi);
74  if (digi->empty())
75  edm::LogInfo("ZdcHitReconstructor") << "No ZDC info found in either castorDigis or hcalDigis." << std::endl;
76  }
77 
78  // create empty output
79  auto rec = std::make_unique<ZDCRecHitCollection>();
80  rec->reserve(digi->size());
81  // run the algorithm
82  unsigned int toaddMem = 0;
83 
85  for (i = digi->begin(); i != digi->end(); i++) {
86  HcalZDCDetId cell = i->id();
87  DetId detcell = (DetId)cell;
88  // rof 27.03.09: drop ZS marked and passed digis:
90  if (i->zsMarkAndPass())
91  continue;
92 
93  // get db values for signalTSs and noiseTSs
94  const HcalLongRecoParam* myParams = longRecoParams_->getValues(detcell);
95  mySignalTS.clear();
96  myNoiseTS.clear();
97  mySignalTS = myParams->signalTS();
98  myNoiseTS = myParams->noiseTS();
99  // warning: the PulseCorrection is not used by ZDC. If it gets a non-contingious set of
100  // signal TS, it may not work properly. Assume contiguous here....
101  unsigned int toadd = mySignalTS.size();
102  if (toaddMem != toadd) {
104  toaddMem = toadd;
105  }
106  const HcalCalibrations& calibrations = conditions->getHcalCalibrations(cell);
107  const HcalQIECoder* channelCoder = conditions->getHcalCoder(cell);
108  const HcalQIEShape* shape = conditions->getHcalShape(channelCoder);
109  HcalCoderDb coder(*channelCoder, *shape);
110  rec->push_back(reco_.reconstruct(*i, myNoiseTS, mySignalTS, coder, calibrations));
111  }
112  // return result
113  e.put(std::move(rec));
114  }
115 }
HcalOther
Definition: HcalAssistant.h:38
ZdcSimpleReconstructor::produce
void produce(edm::Event &e, const edm::EventSetup &c) override
Definition: ZdcSimpleReconstructor.cc:60
Handle.h
electrons_cff.bool
bool
Definition: electrons_cff.py:366
HcalCalibrations.h
mps_fire.i
i
Definition: mps_fire.py:428
edm::ESInputTag
Definition: ESInputTag.h:87
edm::SortedCollection::const_iterator
std::vector< T >::const_iterator const_iterator
Definition: SortedCollection.h:80
ZdcSimpleReconstructor::htopoToken_
edm::ESGetToken< HcalTopology, HcalRecNumberingRecord > htopoToken_
Definition: ZdcSimpleReconstructor.h:57
HcalLongRecoParam::noiseTS
std::vector< unsigned int > noiseTS() const
Definition: HcalLongRecoParam.h:27
edm::Run
Definition: Run.h:45
ZdcSimpleReconstructor::tok_input_hcal
edm::EDGetTokenT< ZDCDigiCollection > tok_input_hcal
Definition: ZdcSimpleReconstructor.h:47
ZdcSimpleReconstructor::ZdcSimpleReconstructor
ZdcSimpleReconstructor(const edm::ParameterSet &ps)
Definition: ZdcSimpleReconstructor.cc:13
gather_cfg.cout
cout
Definition: gather_cfg.py:144
HcalTopology
Definition: HcalTopology.h:26
edm::SortedCollection::size
size_type size() const
Definition: SortedCollection.h:215
AlignmentProducer_cff.calibrations
calibrations
Definition: AlignmentProducer_cff.py:59
edm::Handle
Definition: AssociativeIterator.h:50
DetId::Calo
Definition: DetId.h:29
ZdcSimpleReconstructor.h
HcalCoderDb.h
DetId
Definition: DetId.h:17
HcalZDCDetId
Definition: HcalZDCDetId.h:16
ZdcSimpleReconstructor::~ZdcSimpleReconstructor
~ZdcSimpleReconstructor() override
Definition: ZdcSimpleReconstructor.cc:47
ZdcSimpleReconstructor::det_
DetId::Detector det_
Definition: ZdcSimpleReconstructor.h:44
ZdcSimpleReconstructor::longRecoParams_
std::unique_ptr< HcalLongRecoParams > longRecoParams_
Definition: ZdcSimpleReconstructor.h:52
edm::SortedCollection::begin
const_iterator begin() const
Definition: SortedCollection.h:262
ZdcSimpleReconstructor::hcalTimeSlew_delay_
const HcalTimeSlew * hcalTimeSlew_delay_
Definition: ZdcSimpleReconstructor.h:54
HcalCalibration
Definition: HcalAssistant.h:40
HcalZDCDetId::SubdetectorId
static const int SubdetectorId
Definition: HcalZDCDetId.h:25
HcalDbRecord.h
HcalCalibrations
Definition: HcalCalibrations.h:9
edm::ParameterSet
Definition: ParameterSet.h:47
AlCaHLTBitMon_ParallelJobs.p
def p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
ZdcSimpleRecAlgo::initPulseCorr
void initPulseCorr(int toadd, const HcalTimeSlew *hcalTimeSlew_delay)
Definition: ZdcSimpleRecAlgo.cc:21
edm::SortedCollection::end
const_iterator end() const
Definition: SortedCollection.h:267
ZdcSimpleReconstructor::subdet_
int subdet_
Definition: ZdcSimpleReconstructor.h:45
createfilelist.int
int
Definition: createfilelist.py:10
HcalLongRecoParam
Definition: HcalLongRecoParam.h:15
edm::EventSetup
Definition: EventSetup.h:58
HcalLongRecoParam::signalTS
std::vector< unsigned int > signalTS() const
Definition: HcalLongRecoParam.h:26
AlCaHLTBitMon_QueryRunRegistry.string
string string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
HcalQIECoder
Definition: HcalQIECoder.h:20
ZdcSimpleReconstructor::endRun
void endRun(edm::Run const &r, edm::EventSetup const &es) final
Definition: ZdcSimpleReconstructor.cc:58
edm::EventSetup::getData
bool getData(T &iHolder) const
Definition: EventSetup.h:127
alignCSCRings.r
r
Definition: alignCSCRings.py:93
ZdcSimpleReconstructor::timeSlewToken_
edm::ESGetToken< HcalTimeSlew, HcalTimeSlewRecord > timeSlewToken_
Definition: ZdcSimpleReconstructor.h:60
HcalTopology.h
HcalDbService
Definition: HcalDbService.h:23
submitPVValidationJobs.conditions
list conditions
Definition: submitPVValidationJobs.py:674
eostools.move
def move(src, dest)
Definition: eostools.py:511
ZdcSimpleReconstructor::dropZSmarkedPassed_
bool dropZSmarkedPassed_
Definition: ZdcSimpleReconstructor.h:50
ZdcSimpleReconstructor::beginRun
void beginRun(edm::Run const &r, edm::EventSetup const &es) final
Definition: ZdcSimpleReconstructor.cc:49
ZdcSimpleReconstructor::subdetOther_
HcalOtherSubdetector subdetOther_
Definition: ZdcSimpleReconstructor.h:46
EventSetup.h
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
HcalQIEShape
Definition: HcalQIEShape.h:17
HcalCoderDb
Definition: HcalCoderDb.h:15
HcalDbService.h
ZdcSimpleReconstructor::paramsToken_
edm::ESGetToken< HcalLongRecoParams, HcalLongRecoParamsRcd > paramsToken_
Definition: ZdcSimpleReconstructor.h:58
ZdcSimpleReconstructor::reco_
ZdcSimpleRecAlgo reco_
Definition: ZdcSimpleReconstructor.h:43
HcalLongRecoParams
Definition: HcalLongRecoParams.h:9
ZdcSimpleReconstructor::tok_input_castor
edm::EDGetTokenT< ZDCDigiCollection > tok_input_castor
Definition: ZdcSimpleReconstructor.h:48
ZdcSimpleReconstructor::conditionsToken_
edm::ESGetToken< HcalDbService, HcalDbRecord > conditionsToken_
Definition: ZdcSimpleReconstructor.h:59
edm::Event
Definition: Event.h:73
ZdcSimpleRecAlgo::reconstruct
ZDCRecHit reconstruct(const ZDCDataFrame &digi, const std::vector< unsigned int > &myNoiseTS, const std::vector< unsigned int > &mySignalTS, const HcalCoder &coder, const HcalCalibrations &calibs) const
Definition: ZdcSimpleRecAlgo.cc:265
edm::Log
Definition: MessageLogger.h:70
EDCollection.h
edm::InputTag
Definition: InputTag.h:15
edm::SortedCollection::empty
bool empty() const
Definition: SortedCollection.h:210
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37