CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
ZdcHitReconstructor.cc
Go to the documentation of this file.
1 using namespace std;
2 #include "ZdcHitReconstructor.h"
16 
17 #include <iostream>
18 
19 /* Zdc Hit reconstructor allows for CaloRecHits with status words */
20 
22  reco_(conf.getParameter<int>("firstSample"),
23  conf.getParameter<int>("samplesToAdd"),
24  conf.getParameter<bool>("correctForTimeslew"),
25  conf.getParameter<bool>("correctForPhaseContainment"),
26  conf.getParameter<double>("correctionPhaseNS"),
27  conf.getParameter<int>("recoMethod")),
28  det_(DetId::Hcal),
29  inputLabel_(conf.getParameter<edm::InputTag>("digiLabel")),
30  correctTiming_(conf.getParameter<bool>("correctTiming")),
31  setNoiseFlags_(conf.getParameter<bool>("setNoiseFlags")),
32  setHSCPFlags_(conf.getParameter<bool>("setHSCPFlags")),
33  setSaturationFlags_(conf.getParameter<bool>("setSaturationFlags")),
34  setTimingTrustFlags_(conf.getParameter<bool>("setTimingTrustFlags")),
35  dropZSmarkedPassed_(conf.getParameter<bool>("dropZSmarkedPassed"))
36 
37 { std::string subd=conf.getParameter<std::string>("Subdetector");
38 
40  {
41  const edm::ParameterSet& pssat = conf.getParameter<edm::ParameterSet>("saturationParameters");
42  saturationFlagSetter_ = new HcalADCSaturationFlag(pssat.getParameter<int>("maxADCvalue"));
43  }
44 
45  if (!strcasecmp(subd.c_str(),"ZDC")) {
48  produces<ZDCRecHitCollection>();
49  } else if (!strcasecmp(subd.c_str(),"CALIB")) {
52  produces<HcalCalibRecHitCollection>();
53  } else {
54  std::cout << "ZdcHitReconstructor is not associated with a specific subdetector!" << std::endl;
55  }
56 
57 }
58 
60 }
61 
63 {
64  // get conditions
66  eventSetup.get<HcalDbRecord>().get(conditions);
67  const HcalQIEShape* shape = conditions->getHcalShape (); // this one is generic
68 
70  eventSetup.get<HcalChannelQualityRcd>().get(p);
71  HcalChannelQuality* myqual = new HcalChannelQuality(*p.product());
72 
74  eventSetup.get<HcalSeverityLevelComputerRcd>().get(mycomputer);
75  const HcalSeverityLevelComputer* mySeverity = mycomputer.product();
76 
79  e.getByLabel(inputLabel_,digi);
80 
81  // create empty output
82  std::auto_ptr<ZDCRecHitCollection> rec(new ZDCRecHitCollection);
83  rec->reserve(digi->size());
84  // run the algorithm
86  for (i=digi->begin(); i!=digi->end(); i++) {
87  HcalZDCDetId cell = i->id();
88  DetId detcell=(DetId)cell;
89  // check on cells to be ignored and dropped: (rof,20.Feb.09)
90  const HcalChannelStatus* mydigistatus=myqual->getValues(detcell.rawId());
91  if (mySeverity->dropChannel(mydigistatus->getValue() ) ) continue;
93  if (i->zsMarkAndPass()) continue;
94  const HcalCalibrations& calibrations=conditions->getHcalCalibrations(cell);
95  const HcalQIECoder* channelCoder = conditions->getHcalCoder (cell);
96  HcalCoderDb coder (*channelCoder, *shape);
97  rec->push_back(reco_.reconstruct(*i,coder,calibrations));
98  (rec->back()).setFlags(0);
100  saturationFlagSetter_->setSaturationFlag(rec->back(),*i);
101  }
102  // return result
103  e.put(rec);
104  } // else if (det_==DetId::Calo...)
105 
106  delete myqual;
107 } // void HcalHitReconstructor::produce(...)
T getParameter(std::string const &) const
int i
Definition: DBlmapReader.cc:9
std::vector< T >::const_iterator const_iterator
ZDCRecHit reconstruct(const ZDCDataFrame &digi, const HcalCoder &coder, const HcalCalibrations &calibs) const
uint32_t rawId() const
get the raw id
Definition: DetId.h:45
ZdcSimpleRecAlgo reco_
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:84
HcalOtherSubdetector subdetOther_
bool dropChannel(const uint32_t &mystatus) const
void setSaturationFlag(HBHERecHit &rechit, const HBHEDataFrame &digi)
HcalADCSaturationFlag * saturationFlagSetter_
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:359
tuple conf
Definition: dbtoconf.py:185
Definition: DetId.h:20
static const int SubdetectorId
Definition: HcalZDCDetId.h:22
ZdcHitReconstructor(const edm::ParameterSet &ps)
virtual void produce(edm::Event &e, const edm::EventSetup &c)
const T & get() const
Definition: EventSetup.h:55
T const * product() const
Definition: ESHandle.h:62
tuple cout
Definition: gather_cfg.py:41
uint32_t getValue() const
const Item * getValues(DetId fId) const