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
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