Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:30:55

0001 #ifndef _SimTracker_SiPhase2Digitizer_SSDigitizerAlgorithm_h
0002 #define _SimTracker_SiPhase2Digitizer_SSDigitizerAlgorithm_h
0003 
0004 #include "CondFormats/DataRecord/interface/SiPhase2OuterTrackerLorentzAngleRcd.h"
0005 #include "FWCore/Utilities/interface/ESGetToken.h"
0006 #include "Geometry/Records/interface/TrackerDigiGeometryRecord.h"
0007 #include "SimTracker/SiPhase2Digitizer/plugins/Phase2TrackerDigitizerAlgorithm.h"
0008 #include "CondFormats/SiStripObjects/interface/SiStripBadStrip.h"
0009 
0010 class SSDigitizerAlgorithm : public Phase2TrackerDigitizerAlgorithm {
0011 public:
0012   SSDigitizerAlgorithm(const edm::ParameterSet& conf, edm::ConsumesCollector iC);
0013   ~SSDigitizerAlgorithm() override;
0014 
0015   // initialization that cannot be done in the constructor
0016   void init(const edm::EventSetup& es) override;
0017 
0018   bool select_hit(const PSimHit& hit, double tCorr, double& sigScale) const override;
0019   bool isAboveThreshold(const digitizerUtility::SimHitInfo* hitInfo, float charge, float thr) const override;
0020 
0021 private:
0022   enum { SquareWindow, SampledMode, LatchedMode, SampledOrLachedMode, HIPFindingMode };
0023   double cbc3PulsePolarExpansion(double x) const;
0024   double signalShape(double x) const;
0025   double getSignalScale(double xval) const;
0026   void storeSignalShape();
0027   bool select_hit_sampledMode(const PSimHit& hit, double tCorr, double& sigScale) const;
0028   bool select_hit_latchedMode(const PSimHit& hit, double tCorr, double& sigScale) const;
0029   void module_killing_DB(const Phase2TrackerGeomDetUnit* pixdet) override;
0030 
0031   int hitDetectionMode_;
0032   std::vector<double> pulseShapeVec_;
0033   std::vector<double> pulseShapeParameters_;
0034   float deadTime_;
0035   edm::ESGetToken<SiPhase2OuterTrackerLorentzAngle, SiPhase2OuterTrackerLorentzAngleSimRcd> siPhase2OTLorentzAngleToken_;
0036   const edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> geomToken_;
0037   static constexpr float bx_time{25};
0038   static constexpr size_t interpolationPoints{1000};
0039   static constexpr int interpolationStep{10};
0040   edm::ESGetToken<SiStripBadStrip, SiPhase2OuterTrackerBadStripRcd> badChannelToken_;
0041   const SiStripBadStrip* badChannelPayload_;
0042 };
0043 #endif