Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-11-19 23:20:17

0001 #ifndef RecoLocalTracker_SiStripZeroSuppression_SiStripRawProcessingAlgorithms_h
0002 #define RecoLocalTracker_SiStripZeroSuppression_SiStripRawProcessingAlgorithms_h
0003 
0004 #include "RecoLocalTracker/SiStripZeroSuppression/interface/SiStripPedestalsSubtractor.h"
0005 #include "RecoLocalTracker/SiStripZeroSuppression/interface/SiStripCommonModeNoiseSubtractor.h"
0006 #include "RecoLocalTracker/SiStripZeroSuppression/interface/SiStripFedZeroSuppression.h"
0007 #include "RecoLocalTracker/SiStripZeroSuppression/interface/SiStripAPVRestorer.h"
0008 
0009 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
0010 #include "Geometry/TrackerGeometryBuilder/interface/StripGeomDetUnit.h"
0011 
0012 #include "DataFormats/Common/interface/DetSet.h"
0013 #include "DataFormats/Common/interface/DetSetVector.h"
0014 
0015 class SiStripRawProcessingAlgorithms {
0016   friend class SiStripRawProcessingFactory;
0017 
0018 public:
0019   using digivector_t = SiStripAPVRestorer::digivector_t;
0020 
0021   void initialize(const edm::EventSetup&);
0022   void initialize(const edm::EventSetup&, const edm::Event&);
0023 
0024   uint16_t suppressHybridData(const uint16_t maxStrip,
0025                               const edm::DetSet<SiStripDigi>& inDigis,
0026                               edm::DetSet<SiStripDigi>& suppressedDigis,
0027                               uint16_t firstAPV = 0);
0028 
0029   uint16_t suppressVirginRawData(uint32_t detId,
0030                                  uint16_t firstAPV,
0031                                  digivector_t& procRawDigis,
0032                                  edm::DetSet<SiStripDigi>& output);
0033   uint16_t suppressVirginRawData(const edm::DetSet<SiStripRawDigi>& rawDigis, edm::DetSet<SiStripDigi>& output);
0034 
0035   uint16_t suppressProcessedRawData(uint32_t detId,
0036                                     uint16_t firstAPV,
0037                                     digivector_t& procRawDigis,
0038                                     edm::DetSet<SiStripDigi>& output);
0039   uint16_t suppressProcessedRawData(const edm::DetSet<SiStripRawDigi>& rawDigis, edm::DetSet<SiStripDigi>& output);
0040 
0041   uint16_t convertVirginRawToHybrid(uint32_t detId,
0042                                     uint16_t firstAPV,
0043                                     digivector_t& inDigis,
0044                                     edm::DetSet<SiStripDigi>& rawDigis);
0045   uint16_t convertVirginRawToHybrid(const edm::DetSet<SiStripRawDigi>& rawDigis,
0046                                     edm::DetSet<SiStripDigi>& suppressedDigis);
0047 
0048   inline const std::vector<bool>& getAPVFlags() const { return restorer->getAPVFlags(); }
0049   inline const SiStripAPVRestorer::baselinemap_t& getBaselineMap() const { return restorer->getBaselineMap(); }
0050   inline const std::map<uint16_t, SiStripAPVRestorer::digimap_t>& getSmoothedPoints() const {
0051     return restorer->getSmoothedPoints();
0052   }
0053   inline const SiStripAPVRestorer::medians_t& getAPVsCM() const { return subtractorCMN->getAPVsCM(); }
0054 
0055   const std::unique_ptr<SiStripPedestalsSubtractor> subtractorPed;
0056   const std::unique_ptr<SiStripCommonModeNoiseSubtractor> subtractorCMN;
0057   const std::unique_ptr<SiStripFedZeroSuppression> suppressor;
0058   const std::unique_ptr<SiStripAPVRestorer> restorer;
0059 
0060 private:
0061   const bool doAPVRestore;
0062   const bool useCMMeanMap;
0063 
0064   edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> tkGeomToken_;
0065   const TrackerGeometry* trGeo;
0066 
0067   SiStripRawProcessingAlgorithms(edm::ConsumesCollector iC,
0068                                  std::unique_ptr<SiStripPedestalsSubtractor> ped,
0069                                  std::unique_ptr<SiStripCommonModeNoiseSubtractor> cmn,
0070                                  std::unique_ptr<SiStripFedZeroSuppression> zs,
0071                                  std::unique_ptr<SiStripAPVRestorer> res,
0072                                  bool doAPVRest,
0073                                  bool useCMMap);
0074 };
0075 #endif