File indexing completed on 2023-03-17 11:22:04
0001 #ifndef HCALTBTDCUNPACKER_H
0002 #define HCALTBTDCUNPACKER_H 1
0003 #include "TBDataFormats/HcalTBObjects/interface/HcalTBEventPosition.h"
0004 #include "TBDataFormats/HcalTBObjects/interface/HcalTBTiming.h"
0005 #include "DataFormats/FEDRawData/interface/FEDRawData.h"
0006
0007 namespace hcaltb {
0008
0009
0010
0011
0012 class HcalTBTDCUnpacker {
0013 public:
0014 HcalTBTDCUnpacker(bool);
0015 void unpack(const FEDRawData& raw, HcalTBEventPosition& pos, HcalTBTiming& timing) const;
0016 void setCalib(const std::vector<std::vector<std::string> >& calibLines_);
0017
0018 private:
0019 struct Hit {
0020 int channel;
0021 double time;
0022 };
0023
0024 void unpackHits(const FEDRawData& raw, std::vector<Hit>& hits, HcalTBTiming& timing) const;
0025 void reconstructWC(const std::vector<Hit>& hits, HcalTBEventPosition& pos) const;
0026 void reconstructTiming(const std::vector<Hit>& hits, HcalTBTiming& timing) const;
0027
0028
0029 static const int PLANECOUNT = 16;
0030 static const int WC_CHANNELIDS[PLANECOUNT * 3];
0031 struct WireChamberRecoData {
0032 double b0, b1, mean, sigma;
0033 } wc_[PLANECOUNT];
0034
0035 bool includeUnmatchedHits_;
0036 double tdc_ped[161];
0037 double tdc_convers[161];
0038 FILE* dumpObs_;
0039 };
0040
0041 }
0042
0043 #endif