CMS 3D CMS Logo

EcalTBH2TDCRecInfoAlgo.cc
Go to the documentation of this file.
3 
4 #include <list>
5 #include <vector>
6 #include <iostream>
7 
8 EcalTBH2TDCRecInfoAlgo::EcalTBH2TDCRecInfoAlgo(const std::vector<EcalTBH2TDCRanges>& tdcZeros):
9  tdcZeros_(tdcZeros), actualRun_(-1) , actualRange_(-1)
10 {
11 
12 }
13 
15 {
16  if (actualRun_ != runNumber )
17  {
19  actualRange_ = -1;
20  for (unsigned int i=0; i<tdcZeros_.size();i++)
21  if ( runNumber <= tdcZeros_[i].runRanges.second && runNumber >= tdcZeros_[i].runRanges.first )
22  actualRange_ = i;
23 
24  if (actualRange_ == -1)
25  {
26  edm::LogError("TDCRange not found") << "TDC range not found";
27  return EcalTBTDCRecInfo(-1);
28  }
29  }
30 
31  int ntdc = TDCRawInfo.BeamCoincidenceCount();
32  edm::LogInfo("") << "EcalTBH2TDCRecInfoAlgo::reconstruct # tdc hits: " << ntdc << std::endl;;
33  if(ntdc>1) {
34  for(int i=0; i<ntdc; ++i) {
35  edm::LogInfo("") << "hit i: " << i << " tdc: " << TDCRawInfo.BeamCoincidenceHits(i) << std::endl;
36  }
37  }
38 
39 
40  if(ntdc==0) {
41  edm::LogError("NoTDCHits") << "no TDC hits. TDC info not reliable" << std::endl;
42  return EcalTBTDCRecInfo(-999.);
43  }
44 
45 
46  //double tdcd = TDCRawInfo.ttcL1Atime() - TDCRawInfo.beamCoincidence();
47  double tdcd = TDCRawInfo.ttcL1Atime() - TDCRawInfo.BeamCoincidenceHits(0);
48 
49  if(
50  (tdcd < tdcZeros_[actualRange_].tdcZero -1 || tdcd > tdcZeros_[actualRange_].tdcZero + 26) )
51  {
52  edm::LogError("TDCOutOfRange") << " ============================\n"
53  << " tdc value out of range = "<< tdcd
54  << " tdcZero = " << tdcZeros_[actualRange_].tdcZero
55  << "\n"
56  << " ============================\n" <<std::endl;
58  return EcalTBTDCRecInfo(-999.);
59  }
60 
61  double offset = ( (double)tdcd - (double)tdcZeros_[actualRange_].tdcZero )
62  / 25.; //
63  // if (use2004OffsetConvention)
64  // offset = (1. - offset) ;
65  return EcalTBTDCRecInfo(offset);
66 }
67 
double ttcL1Atime() const
Returns the Level 1 Accept time in ns.
Definition: HcalTBTiming.h:28
EcalTBTDCRecInfo reconstruct(const int &runNumber, const HcalTBTiming &TDCRawInfo) const
double BeamCoincidenceHits(int index) const
Returns the indexed hit time from Beam Coincidence.
Definition: HcalTBTiming.h:72
int BeamCoincidenceCount() const
Returns the number of hits from Beam Coincidence.
Definition: HcalTBTiming.h:45
std::vector< EcalTBH2TDCRanges > tdcZeros_