Warning, file /epic-lfhcal-tbana/NewStructure/waveform_fitting/max_sample_fit_n_integ.cc was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 #include "waveform_fit_base.h"
0002 #include "max_sample_fit_n_integ.h"
0003
0004 #include <iostream>
0005
0006 max_sample_fit_n_integ::max_sample_fit_n_integ() : waveform_fit_base{} {
0007 max_sample_value = 0;
0008 pedestal_value = 0;
0009 max_sample = 0;
0010 integ_nSample = 0;
0011
0012 saturated = false;
0013 stale = true;
0014 }
0015
0016 max_sample_fit_n_integ::max_sample_fit_n_integ( int n) : waveform_fit_base{} {
0017 max_sample_value = 0;
0018 pedestal_value = 0;
0019 max_sample = 0;
0020 integ_nSample = 0;
0021
0022
0023 saturated = false;
0024 stale = true;
0025 nSample = n;
0026 if (!( nSample == 3 || nSample == 5)) {
0027 std::cerr << "max_sample_fit_n_integ: Waveform has not been set" << std::endl;
0028 return;
0029 }
0030 }
0031
0032 max_sample_fit_n_integ::~max_sample_fit_n_integ() {
0033 }
0034
0035 void max_sample_fit_n_integ::fit() {
0036 if (waveform.empty()) {
0037 std::cerr << "max_sample_fit_n_integ: Waveform has not been set" << std::endl;
0038 return;
0039 }
0040 pedestal_value = waveform[0];
0041 max_sample_value = waveform[0];
0042 max_sample = 0;
0043 for (size_t i = 0; i < waveform.size(); ++i) {
0044 if (waveform[i] > max_sample_value) {
0045 max_sample_value = waveform[i];
0046 max_sample = i;
0047 }
0048 if (waveform[i] > 1000) {
0049 saturated = true;
0050 }
0051 }
0052 if (nSample == 3){
0053 integ_nSample = max_sample_value - pedestal_value;
0054 if (max_sample > 0 )
0055 integ_nSample = integ_nSample+ (waveform[max_sample-1] - pedestal_value);
0056 if (max_sample < waveform.size()-1)
0057 integ_nSample = integ_nSample+ (waveform[max_sample+1] - pedestal_value);
0058 } else if (nSample == 5){
0059 integ_nSample = max_sample_value - pedestal_value;
0060 if (max_sample > 1 )
0061 integ_nSample = integ_nSample+ (waveform[max_sample-2] - pedestal_value);
0062 if (max_sample > 0 )
0063 integ_nSample = integ_nSample+ (waveform[max_sample-1] - pedestal_value);
0064 if (max_sample < waveform.size()-1)
0065 integ_nSample = integ_nSample+ (waveform[max_sample+1] - pedestal_value);
0066 if (max_sample < waveform.size()-2)
0067 integ_nSample = integ_nSample+ (waveform[max_sample+2] - pedestal_value);
0068 }
0069 E = integ_nSample;
0070 fit_ndf = -1;
0071 fit_chi2 = -1;
0072 stale = false;
0073 }
0074
0075 void max_sample_fit_n_integ::fit_with_average_ped(double ped) {
0076 if (waveform.empty()) {
0077 std::cerr << "max_sample_fit_n_integ: Waveform has not been set" << std::endl;
0078 return;
0079 }
0080 pedestal_value = ped;
0081 max_sample_value = ped;
0082 max_sample = 0;
0083 for (size_t i = 0; i < waveform.size(); ++i) {
0084 if (waveform[i] > max_sample_value) {
0085 max_sample_value = waveform[i];
0086 max_sample = i;
0087 }
0088 if (waveform[i] > 1000) {
0089 saturated = true;
0090 }
0091 }
0092 if (nSample == 3){
0093 integ_nSample = max_sample_value - pedestal_value;
0094 if (max_sample > 0 )
0095 integ_nSample = integ_nSample+ (waveform[max_sample-1] - pedestal_value);
0096 if (max_sample < waveform.size()-1)
0097 integ_nSample = integ_nSample+ (waveform[max_sample+1] - pedestal_value);
0098 } else if (nSample == 5){
0099 integ_nSample = max_sample_value - pedestal_value;
0100 if (max_sample > 1 )
0101 integ_nSample = integ_nSample+ (waveform[max_sample-2] - pedestal_value);
0102 if (max_sample > 0 )
0103 integ_nSample = integ_nSample+ (waveform[max_sample-1] - pedestal_value);
0104 if (max_sample < waveform.size()-1)
0105 integ_nSample = integ_nSample+ (waveform[max_sample+1] - pedestal_value);
0106 if (max_sample < waveform.size()-2)
0107 integ_nSample = integ_nSample+ (waveform[max_sample+2] - pedestal_value);
0108 }
0109
0110
0111 E = integ_nSample;
0112 fit_ndf = -1;
0113 fit_chi2 = -1;
0114 stale = false;
0115 }
0116
0117
0118 int max_sample_fit_n_integ::get_pedestal() {
0119 if (stale) {
0120 return -1;
0121 }
0122 return pedestal_value;
0123 }