CMS 3D CMS Logo

ZdcSimpleReconstructor.cc
Go to the documentation of this file.
10 
11 #include <iostream>
12 
13 
15  reco_(conf.getParameter<bool>("correctForTimeslew"),
16  conf.getParameter<bool>("correctForPhaseContainment"),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 {
23  tok_input_castor = consumes<ZDCDigiCollection>(conf.getParameter<edm::InputTag>("digiLabelcastor"));
24  tok_input_hcal = consumes<ZDCDigiCollection>(conf.getParameter<edm::InputTag>("digiLabelhcal"));
25 
26 
27  std::string subd=conf.getParameter<std::string>("Subdetector");
28  if (!strcasecmp(subd.c_str(),"ZDC")) {
31  produces<ZDCRecHitCollection>();
32  } else if (!strcasecmp(subd.c_str(),"CALIB")) {
35  produces<HcalCalibRecHitCollection>();
36  } else {
37  std::cout << "ZdcSimpleReconstructor is not associated with a specific subdetector!" << std::endl;
38  }
39 
40 }
41 
43 }
45 
47  es.get<HcalLongRecoParamsRcd>().get(p);
49 }
50 
52  delete myobject; myobject = 0;
53 }
55 {
56  // get conditions
58  eventSetup.get<HcalDbRecord>().get(conditions);
59  // define vectors to pass noiseTS and signalTS
60  std::vector<unsigned int> mySignalTS;
61  std::vector<unsigned int> myNoiseTS;
62 
65  e.getByToken(tok_input_hcal,digi);
66 
67  if(digi->size() == 0) {
69  if(digi->size() == 0)
70  edm::LogInfo("ZdcHitReconstructor") << "No ZDC info found in either castorDigis or hcalDigis." << std::endl;
71  }
72 
73  // create empty output
74  auto rec = std::make_unique<ZDCRecHitCollection>();
75  rec->reserve(digi->size());
76  // run the algorithm
77  unsigned int toaddMem = 0;
78 
80  for (i=digi->begin(); i!=digi->end(); i++) {
81  HcalZDCDetId cell = i->id();
82  DetId detcell=(DetId)cell;
83  // rof 27.03.09: drop ZS marked and passed digis:
85  if (i->zsMarkAndPass()) continue;
86 
87 // get db values for signalTSs and noiseTSs
88  const HcalLongRecoParam* myParams = myobject->getValues(detcell);
89  mySignalTS.clear();
90  myNoiseTS.clear();
91  mySignalTS = myParams->signalTS();
92  myNoiseTS = myParams->noiseTS();
93 // warning: the PulseCorrection is not used by ZDC. If it gets a non-contingious set of
94 // signal TS, it may not work properly. Assume contiguous here....
95  unsigned int toadd = mySignalTS.size();
96  if(toaddMem != toadd) {
97  reco_.initPulseCorr(toadd);
98  toaddMem = toadd;
99  }
100  const HcalCalibrations& calibrations=conditions->getHcalCalibrations(cell);
101  const HcalQIECoder* channelCoder = conditions->getHcalCoder (cell);
102  const HcalQIEShape* shape = conditions->getHcalShape (channelCoder);
103  HcalCoderDb coder (*channelCoder, *shape);
104  rec->push_back(reco_.reconstruct(*i,myNoiseTS,mySignalTS,coder,calibrations));
105  }
106  // return result
107  e.put(std::move(rec));
108  }
109 }
T getParameter(std::string const &) const
HcalOtherSubdetector subdetOther_
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:122
std::vector< unsigned int > signalTS() const
HcalLongRecoParams * myobject
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:460
virtual void produce(edm::Event &e, const edm::EventSetup &c) override
edm::EDGetTokenT< ZDCDigiCollection > tok_input_hcal
std::vector< ZDCDataFrame >::const_iterator const_iterator
const Item * getValues(DetId fId, bool throwOnFail=true) const
ZdcSimpleReconstructor(const edm::ParameterSet &ps)
ZDCRecHit reconstruct(const ZDCDataFrame &digi, const std::vector< unsigned int > &myNoiseTS, const std::vector< unsigned int > &mySignalTS, const HcalCoder &coder, const HcalCalibrations &calibs) const
void initPulseCorr(int toadd)
virtual void endRun(edm::Run const &r, edm::EventSetup const &es) override final
virtual void beginRun(edm::Run const &r, edm::EventSetup const &es) override final
edm::EDGetTokenT< ZDCDigiCollection > tok_input_castor
const_iterator end() const
Definition: DetId.h:18
static const int SubdetectorId
Definition: HcalZDCDetId.h:25
const T & get() const
Definition: EventSetup.h:55
const HcalQIECoder * getHcalCoder(const HcalGenericDetId &fId) const
const HcalQIEShape * getHcalShape(const HcalGenericDetId &fId) const
size_type size() const
std::vector< unsigned int > noiseTS() const
const HcalCalibrations & getHcalCalibrations(const HcalGenericDetId &fId) const
T const * product() const
Definition: ESHandle.h:86
def move(src, dest)
Definition: eostools.py:510
const_iterator begin() const
Definition: Run.h:42