CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_5/src/RecoLocalCalo/HcalRecAlgos/src/HcalTDCReco.cc

Go to the documentation of this file.
00001 #include "RecoLocalCalo/HcalRecAlgos/src/HcalTDCReco.h"
00002 #include "DataFormats/HcalDigi/interface/HcalUpgradeDataFrame.h"
00003 #include "DataFormats/HcalRecHit/interface/HBHERecHit.h"
00004 
00005 HcalTDCReco::HcalTDCReco() 
00006 {}
00007 
00008 void HcalTDCReco::reconstruct(const HcalUpgradeDataFrame & digi, 
00009                               HBHERecHit & recHit) const
00010 {
00011   int n = digi.size();
00012   double risingTime = -999.;
00013   double fallingTime = -999.;
00014   int signalBX = 5;              // NB: HARDWIRED !!!
00015   int nbins = 50; // as in HcalTDCParameters.h (SimCalorimetry/HcalSimAlgos)
00016   // start at bunch crossing 3 by default
00017   for(int i = 3; i < n; ++i)
00018   {
00019     unsigned tdc = digi.tdc(i);
00020 
00021     /* 
00022     unsigned rising = tdc & 0x7F;
00023     unsigned falling = (tdc >> 7) & 0x7F;
00024     */
00025     // temporary "unpacking" instead, which directly corresponds to 
00026     // SimCalorimetry/HcalSimAlgos/src/HcalTDC.cc  (nibs = 50...)
00027     // packedTDC = TDC_RisingEdge + (tdcBins*2) * TDC_FallingEdge;
00028     unsigned rising  =  tdc%100; 
00029     unsigned falling =  tdc/100;
00030 
00031     // only set the first time, avoiding "special" codes 
00032     if(risingTime < -998. && rising != 62 && rising != 63) {
00033       risingTime = rising*25./nbins + (i-signalBX)*25.;
00034     }
00035     if(fallingTime < -998. && falling != 62 && falling != 63) {
00036       fallingTime = falling*25./nbins + (i-signalBX)*25.;
00037     }    
00038 
00039     /*
00040     std::cout << " digi.tdc[" << i << "] = " << tdc 
00041               << "  rising = " << rising << "  falling = " << falling
00042               << "   Rt = " << risingTime
00043               << "   Ft = " << fallingTime
00044               << std::endl;
00045     */
00046   }
00047   recHit = HBHERecHit(recHit.id(), recHit.energy(), risingTime, fallingTime);
00048 }