Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
#include "CondFormats/SiStripObjects/interface/FedTimingAnalysis.h"
#include "DataFormats/SiStripCommon/interface/SiStripHistoTitle.h"
#include "DataFormats/SiStripCommon/interface/SiStripEnumsAndStrings.h"
#include "FWCore/MessageLogger/interface/MessageLogger.h"
#include <iostream>
#include <iomanip>
#include <cmath>

using namespace sistrip;

// ----------------------------------------------------------------------------
//
FedTimingAnalysis::FedTimingAnalysis(const uint32_t& key)
    : CommissioningAnalysis(key, "FedTimingAnalysis"),
      time_(sistrip::invalid_),
      max_(sistrip::invalid_),
      delay_(sistrip::invalid_),
      error_(sistrip::invalid_),
      base_(sistrip::invalid_),
      peak_(sistrip::invalid_),
      height_(sistrip::invalid_),
      optimumSamplingPoint_(15.) {
  ;
}

// ----------------------------------------------------------------------------
//
FedTimingAnalysis::FedTimingAnalysis()
    : CommissioningAnalysis("FedTimingAnalysis"),
      time_(sistrip::invalid_),
      max_(sistrip::invalid_),
      delay_(sistrip::invalid_),
      error_(sistrip::invalid_),
      base_(sistrip::invalid_),
      peak_(sistrip::invalid_),
      height_(sistrip::invalid_),
      optimumSamplingPoint_(15.) {
  ;
}

// ----------------------------------------------------------------------------
//
void FedTimingAnalysis::reset() {
  time_ = sistrip::invalid_;
  max_ = sistrip::invalid_;
  delay_ = sistrip::invalid_;
  error_ = sistrip::invalid_;
  base_ = sistrip::invalid_;
  peak_ = sistrip::invalid_;
  height_ = sistrip::invalid_;
}

// ----------------------------------------------------------------------------
//
void FedTimingAnalysis::print(std::stringstream& ss, uint32_t not_used) {
  header(ss);
  ss << " Time of tick rising edge [ns]      : " << time_ << "\n"
     << " Maximum time (sampling point) [ns] : " << max_ << "\n"
     << " Delay required wrt max time [ns]   : " << delay_ << "\n"
     << " Error on delay [ns]                : " << error_ << "\n"
     << " Baseline [adc]                     : " << base_ << "\n"
     << " Tick peak [adc]                    : " << peak_ << "\n"
     << " Tick height [adc]                  : " << height_ << "\n";
}

// ----------------------------------------------------------------------------
//
void FedTimingAnalysis::max(const float& max) {
  max_ = max;
  if (time_ > sistrip::maximum_) {
    return;
  }
  int32_t adjustment = 25 - static_cast<int32_t>(rint(max_ + optimumSamplingPoint_)) % 25;
  max_ += adjustment;
  delay_ = max_ - time_;
}