Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:02:38

0001 #ifndef CondFormats_SiStripObjects_OptoScanAnalysis_H
0002 #define CondFormats_SiStripObjects_OptoScanAnalysis_H
0003 
0004 #include "CondFormats/SiStripObjects/interface/CommissioningAnalysis.h"
0005 #include "DataFormats/SiStripCommon/interface/SiStripConstants.h"
0006 #include <sstream>
0007 #include <vector>
0008 #include <cstdint>
0009 
0010 /** 
0011    @class OptoScanAnalysis
0012    @author M. Wingham, R.Bainbridge
0013    @brief Histogram-based analysis for opto bias/gain scan.
0014 */
0015 class OptoScanAnalysis : public CommissioningAnalysis {
0016 public:
0017   // ---------- con(de)structors ----------
0018 
0019   OptoScanAnalysis(const uint32_t& key);
0020 
0021   OptoScanAnalysis();
0022 
0023   ~OptoScanAnalysis() override { ; }
0024 
0025   friend class OptoScanAlgorithm;
0026 
0027   // ---------- public interface ----------
0028 
0029   /** Identifies if analysis is valid or not. */
0030   bool isValid() const override;
0031 
0032   /** Optimum LLD gain setting */
0033   inline const uint16_t& gain() const;
0034 
0035   /** LLD bias value for each gain setting */
0036   inline const VInt& bias() const;
0037 
0038   /** Measured gains for each setting [V/V]. */
0039   inline const VFloat& measGain() const;
0040 
0041   /** "Zero light" levels [ADC] */
0042   inline const VFloat& zeroLight() const;
0043 
0044   /** Noise value at "zero light" levels [ADC] */
0045   inline const VFloat& linkNoise() const;
0046 
0047   /** Baseline "lift-off" values [mA] */
0048   inline const VFloat& liftOff() const;
0049 
0050   /** Laser thresholds [mA] */
0051   inline const VFloat& threshold() const;
0052 
0053   /** Tick mark heights [ADC] */
0054   inline const VFloat& tickHeight() const;
0055 
0056   /** Baseline slope [ADC/I2C] */
0057   inline const VFloat& baseSlope() const;
0058 
0059   // ---------- misc ----------
0060 
0061   /** Prints analysis results. */
0062   void print(std::stringstream&, uint32_t gain_setting = sistrip::invalid_) override;
0063 
0064   /** Overrides base method. */
0065   void summary(std::stringstream&) const override;
0066 
0067   /** Resets analysis member data. */
0068   void reset() override;
0069 
0070   // ---------- public static data ----------
0071 
0072   /** Default LLD gain setting if analysis fails. */
0073   static const uint16_t defaultGainSetting_;
0074 
0075   /** Default LLD bias setting if analysis fails. */
0076   static const uint16_t defaultBiasSetting_;
0077 
0078   /** Peak-to-peak voltage for FED A/D converter [V/ADC]. */
0079   static const float fedAdcGain_;
0080 
0081   // ---------- private member data ----------
0082 
0083 private:
0084   /** Optimum LLD gain setting */
0085   uint16_t gain_;
0086 
0087   /** LLD bias value for each gain setting */
0088   VInt bias_;
0089 
0090   /** Measured gains for each setting [V/V]. */
0091   VFloat measGain_;
0092 
0093   /** "Zero light" levels [ADC] */
0094   VFloat zeroLight_;
0095 
0096   /** Noise value at "zero light" levels [ADC] */
0097   VFloat linkNoise_;
0098 
0099   /** Baseline "lift-off" values [mA] */
0100   VFloat liftOff_;
0101 
0102   /** Laser thresholds [mA] */
0103   VFloat threshold_;
0104 
0105   /** Tick mark heights [ADC] */
0106   VFloat tickHeight_;
0107 
0108   /** Slope of baseline [ADC/I2C] */
0109   VFloat baseSlope_;
0110 };
0111 
0112 // ---------- Inline methods ----------
0113 
0114 const uint16_t& OptoScanAnalysis::gain() const { return gain_; }
0115 const OptoScanAnalysis::VInt& OptoScanAnalysis::bias() const { return bias_; }
0116 const OptoScanAnalysis::VFloat& OptoScanAnalysis::measGain() const { return measGain_; }
0117 const OptoScanAnalysis::VFloat& OptoScanAnalysis::zeroLight() const { return zeroLight_; }
0118 const OptoScanAnalysis::VFloat& OptoScanAnalysis::linkNoise() const { return linkNoise_; }
0119 const OptoScanAnalysis::VFloat& OptoScanAnalysis::liftOff() const { return liftOff_; }
0120 const OptoScanAnalysis::VFloat& OptoScanAnalysis::threshold() const { return threshold_; }
0121 const OptoScanAnalysis::VFloat& OptoScanAnalysis::tickHeight() const { return tickHeight_; }
0122 const OptoScanAnalysis::VFloat& OptoScanAnalysis::baseSlope() const { return baseSlope_; }
0123 
0124 #endif  // CondFormats_SiStripObjects_OptoScanAnalysis_H