Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:27:58

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   /** \class HcalTBTDCUnpacker
0009     
0010    \author J. Mans, P. Dudero - Minnesota
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     //  void setupWC();  // reads it from configuration file
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 }  // namespace hcaltb
0042 
0043 #endif