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")),
28 inputLabel_(conf.getParameter<edm::InputTag>(
"digiLabel")),
29 correctTiming_(conf.getParameter<bool>(
"correctTiming")),
30 setNoiseFlags_(conf.getParameter<bool>(
"setNoiseFlags")),
31 setHSCPFlags_(conf.getParameter<bool>(
"setHSCPFlags")),
32 setSaturationFlags_(conf.getParameter<bool>(
"setSaturationFlags")),
33 setTimingTrustFlags_(conf.getParameter<bool>(
"setTimingTrustFlags")),
34 setPulseShapeFlags_(conf.getParameter<bool>(
"setPulseShapeFlags")),
35 dropZSmarkedPassed_(conf.getParameter<bool>(
"dropZSmarkedPassed")),
36 firstauxTS_(conf.getParameter<int>(
"firstSample")+conf.getParameter<int>(
"firstAuxOffset"))
38 std::string subd=conf.
getParameter<std::string>(
"Subdetector");
61 if (!strcasecmp(subd.c_str(),
"HBHE")) {
63 bool timingShapedCutsFlags = conf.
getParameter<
bool>(
"setTimingShapedCutsFlags");
64 if (timingShapedCutsFlags)
80 psdigi.
getParameter<std::vector<edm::ParameterSet> >(
"pulseShapeParameterSets"),
103 psPulseShape.
getParameter<
double>(
"MinimumChargeThreshold"),
104 psPulseShape.
getParameter<
unsigned int>(
"TrianglePeakTS"),
105 psPulseShape.
getParameter<std::vector<double> >(
"LinearThreshold"),
106 psPulseShape.
getParameter<std::vector<double> >(
"LinearCut"),
107 psPulseShape.
getParameter<std::vector<double> >(
"RMS8MaxThreshold"),
108 psPulseShape.
getParameter<std::vector<double> >(
"RMS8MaxCut"),
109 psPulseShape.
getParameter<std::vector<double> >(
"LeftSlopeThreshold"),
110 psPulseShape.
getParameter<std::vector<double> >(
"LeftSlopeCut"),
111 psPulseShape.
getParameter<std::vector<double> >(
"RightSlopeThreshold"),
112 psPulseShape.
getParameter<std::vector<double> >(
"RightSlopeCut"),
113 psPulseShape.
getParameter<std::vector<double> >(
"RightSlopeSmallThreshold"),
114 psPulseShape.
getParameter<std::vector<double> >(
"RightSlopeSmallCut"),
119 produces<HBHERecHitCollection>();
120 }
else if (!strcasecmp(subd.c_str(),
"HO")) {
122 produces<HORecHitCollection>();
123 }
else if (!strcasecmp(subd.c_str(),
"HF")) {
143 psS9S1.
getParameter<std::vector<double> >(
"shortEnergyParams"),
144 psS9S1.
getParameter<std::vector<double> >(
"shortETParams"),
145 psS9S1.
getParameter<std::vector<double> >(
"long_optimumSlope"),
146 psS9S1.
getParameter<std::vector<double> >(
"longEnergyParams"),
147 psS9S1.
getParameter<std::vector<double> >(
"longETParams"),
154 psS8S1.
getParameter<std::vector<double> >(
"shortEnergyParams"),
155 psS8S1.
getParameter<std::vector<double> >(
"shortETParams"),
156 psS8S1.
getParameter<std::vector<double> >(
"long_optimumSlope"),
157 psS8S1.
getParameter<std::vector<double> >(
"longEnergyParams"),
158 psS8S1.
getParameter<std::vector<double> >(
"longETParams"),
165 psPET.
getParameter<std::vector<double> >(
"shortEnergyParams"),
166 psPET.
getParameter<std::vector<double> >(
"shortETParams"),
168 psPET.
getParameter<std::vector<double> >(
"longEnergyParams"),
169 psPET.
getParameter<std::vector<double> >(
"longETParams"),
175 produces<HFRecHitCollection>();
176 }
else if (!strcasecmp(subd.c_str(),
"ZDC")) {
179 produces<ZDCRecHitCollection>();
180 }
else if (!strcasecmp(subd.c_str(),
"CALIB")) {
183 produces<HcalCalibRecHitCollection>();
185 std::cout <<
"HcalHitReconstructor is not associated with a specific subdetector!" << std::endl;
206 const HcalQIEShape* shape = conditions->getHcalShape ();
224 rec->reserve(digi->size());
228 std::vector<HBHEDataFrame> HBDigis;
229 std::vector<int> RecHitIndex;
232 int favorite_capid = 0;
234 long capid_votes[4] = {0,0,0,0};
235 for (i=digi->begin(); i!=digi->end(); i++) {
236 capid_votes[(*i)[0].capid()]++;
238 for (
int k = 0;
k < 4;
k++)
239 if (capid_votes[
k] > capid_votes[favorite_capid])
243 for (i=digi->begin(); i!=digi->end(); i++) {
251 if (i->zsMarkAndPass())
continue;
254 const HcalQIECoder* channelCoder = conditions->getHcalCoder (cell);
261 auxflag+=(i->sample(xx).adc())<<(7*(xx-
firstauxTS_));
264 (rec->back()).setAux(auxflag);
266 (rec->back()).setFlags(0);
280 for(
int j=0;
j!=i->size(); DigiEnergy += i->sample(
j++).nominal_fC());
283 HBDigis.push_back(*i);
284 RecHitIndex.push_back(rec->size()-1);
301 rec->reserve(digi->size());
306 int favorite_capid = 0;
308 long capid_votes[4] = {0,0,0,0};
309 for (i=digi->begin(); i!=digi->end(); i++) {
310 capid_votes[(*i)[0].capid()]++;
312 for (
int k = 0;
k < 4;
k++)
313 if (capid_votes[
k] > capid_votes[favorite_capid])
317 for (i=digi->begin(); i!=digi->end(); i++) {
324 if (i->zsMarkAndPass())
continue;
327 const HcalQIECoder* channelCoder = conditions->getHcalCoder (cell);
334 auxflag+=(i->sample(xx).adc())<<(7*(xx-
firstauxTS_));
337 (rec->back()).setAux(auxflag);
339 (rec->back()).setFlags(0);
368 rec->reserve(digi->size());
373 int favorite_capid = 0;
375 long capid_votes[4] = {0,0,0,0};
376 for (i=digi->begin(); i!=digi->end(); i++) {
377 capid_votes[(*i)[0].capid()]++;
379 for (
int k = 0;
k < 4;
k++)
380 if (capid_votes[
k] > capid_votes[favorite_capid])
384 for (i=digi->begin(); i!=digi->end(); i++) {
391 if (i->zsMarkAndPass())
continue;
394 const HcalQIECoder* channelCoder = conditions->getHcalCoder (cell);
401 auxflag+=(i->sample(xx).adc())<<(7*(xx-
firstauxTS_));
404 (rec->back()).setAux(auxflag);
407 (rec->back()).setFlags(0);
428 int depth=i->id().depth();
429 int ieta=i->id().ieta();
431 if (depth==2 ||
abs(ieta)==29 )
438 int depth=i->id().depth();
439 int ieta=i->id().ieta();
441 if (depth==2 ||
abs(ieta)==29 )
448 int depth=i->id().depth();
449 int ieta=i->id().ieta();
451 if (depth==1 &&
abs(ieta)!=29 )
464 rec->reserve(digi->size());
467 for (i=digi->begin(); i!=digi->end(); i++) {
474 if (i->zsMarkAndPass())
continue;
477 const HcalQIECoder* channelCoder = conditions->getHcalCoder (cell);
T getParameter(std::string const &) const
void hbheSetTimeFlagsFromDigi(HBHERecHitCollection *, std::vector< HBHEDataFrame >, std::vector< int >)
void setHFTimingTrustFlag(HFRecHit &rechit, const HFDataFrame &digi)
HcalADCSaturationFlag * saturationFlagSetter_
void hfSetFlagFromDigi(HFRecHit &hf, const HFDataFrame &digi, const HcalCoder &coder, const HcalCalibrations &calib)
virtual ~HcalHitReconstructor()
std::vector< T >::const_iterator const_iterator
void resetTimeSamples(int firstSample, int samplesToAdd)
uint32_t rawId() const
get the raw id
void resetTimeSamples(int firstSample, int samplesToAdd)
void HFSetFlagFromPET(HFRecHit &hf, HFRecHitCollection &rec, HcalChannelQuality *myqual, const HcalSeverityLevelComputer *mySeverity)
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
HcalHFStatusBitFromDigis * hfdigibit_
bool dropChannel(const uint32_t &mystatus) const
void setSaturationFlag(HBHERecHit &rechit, const HBHEDataFrame &digi)
virtual void produce(edm::Event &e, const edm::EventSetup &c)
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
HcalHitReconstructor(const edm::ParameterSet &ps)
std::vector< T >::iterator iterator
HcalHF_PETalgorithm * hfPET_
void HFSetFlagFromS9S1(HFRecHit &hf, HFRecHitCollection &rec, HcalChannelQuality *myqual, const HcalSeverityLevelComputer *mySeverity)
HcalHF_S9S1algorithm * hfS9S1_
HBHEPulseShapeFlagSetter * hbhePulseShapeFlagSetter_
static const int SubdetectorId
HBHERecHit reconstruct(const HBHEDataFrame &digi, const HcalCoder &coder, const HcalCalibrations &calibs) const
void SetTimingShapedFlags(HBHERecHit &hbhe)
T const * product() const
HBHEStatusBitSetter * hbheFlagSetter_
HBHETimeProfileStatusBitSetter * hbheHSCPFlagSetter_
void SetFlagsFromDigi(HBHERecHit &hbhe, const HBHEDataFrame &digi, const HcalCoder &coder, const HcalCalibrations &calib)
HBHETimingShapedFlagSetter * hbheTimingShapedFlagSetter_
HcalHF_S9S1algorithm * hfS8S1_
HcalOtherSubdetector subdetOther_
static void Correct(HBHERecHit &rechit, const HBHEDataFrame &digi, int favorite_capid)
void SetPulseShapeFlags(HBHERecHit &hbhe, const HBHEDataFrame &digi, const HcalCoder &coder, const HcalCalibrations &calib)
edm::InputTag inputLabel_
bool setTimingTrustFlags_
HFTimingTrustFlag * HFTimingTrustFlagSetter_
uint32_t getValue() const
const Item * getValues(DetId fId) const
void SetFlagsFromRecHits(HBHERecHitCollection &rec)