File indexing completed on 2025-12-16 09:28:19
0001 #include "HGCROC.h"
0002 #include <cassert>
0003 #include <iostream>
0004
0005 ClassImp(Hgcroc)
0006 std::vector<int> Hgcroc::GetADCWaveform(void) const{
0007 return adc_waveform;
0008 }
0009
0010 int Hgcroc::GetMaxSampleADC (void){
0011 Double_t maxADC = -1000;
0012 int nMaxADC = 0;
0013 for (int k = 0; k < (int)adc_waveform.size(); k++ ){
0014 if (maxADC < adc_waveform.at(k)){
0015 maxADC = adc_waveform.at(k);
0016 nMaxADC = k;
0017 }
0018 }
0019 return nMaxADC;
0020 }
0021
0022
0023 int Hgcroc::GetFirstSampleAboveTh (void){
0024 int nFirst = 0;
0025 for (int k = 0; k < (int)adc_waveform.size(); k++ ){
0026 if (adc_waveform.at(k) > GetPedestal() +10){
0027 nFirst = k;
0028 break;
0029 }
0030 }
0031 return nFirst;
0032 }
0033
0034 std::vector<int> Hgcroc::GetTOAWaveform(void) const{
0035 return toa_waveform;
0036 }
0037
0038 int Hgcroc::GetFirstTOASample (void){
0039 int nSampTOA = 0;
0040 for (int k = 0; k < (int)toa_waveform.size(); k++ ){
0041 if (toa_waveform.at(k) > 0){
0042 nSampTOA = k;
0043 break;
0044 }
0045 }
0046 return nSampTOA;
0047 }
0048
0049
0050 std::vector<int> Hgcroc::GetTOTWaveform(void) const{
0051 return tot_waveform;
0052 }
0053
0054 int Hgcroc::GetNsample(void) const{
0055 return Nsample;
0056 }
0057
0058 double Hgcroc::GetTOT(void) const{
0059 return TOT;
0060 }
0061
0062 double Hgcroc::GetTOA(void) const{
0063 return TOA;
0064 }
0065
0066 int Hgcroc::GetPedestal(void) const{
0067 return pedestal;
0068 }
0069
0070 void Hgcroc::SetADCWaveform(std::vector<int> v){
0071 adc_waveform=v;
0072 }
0073
0074 void Hgcroc::AppendWaveformADC(int a){
0075 adc_waveform.push_back(a);
0076 }
0077
0078 void Hgcroc::ResetADCWaveformPoint(int s, int a){
0079 assert(0<=s && s<(int)adc_waveform.size());
0080 adc_waveform.at(s)=a;
0081 }
0082
0083 void Hgcroc::SetTOAWaveform(std::vector<int> v){
0084 toa_waveform=v;
0085 }
0086
0087 void Hgcroc::AppendWaveformTOA(int a){
0088 toa_waveform.push_back(a);
0089 }
0090
0091 void Hgcroc::ResetTOAWaveformPoint(int s, int a){
0092 assert(0<=s && s<(int)toa_waveform.size());
0093 toa_waveform.at(s)=a;
0094 }
0095
0096 void Hgcroc::SetTOTWaveform(std::vector<int> v){
0097 tot_waveform=v;
0098 }
0099
0100 void Hgcroc::AppendWaveformTOT(int a){
0101 tot_waveform.push_back(a);
0102 }
0103
0104 void Hgcroc::ResetTOTWaveformPoint(int s, int a){
0105 assert(0<=s && s<(int)tot_waveform.size());
0106 tot_waveform.at(s)=a;
0107 }
0108
0109 void Hgcroc::SetNsample(int n){
0110 Nsample=n;
0111 }
0112
0113 void Hgcroc::SetTOT(double tot){
0114 TOT=tot;
0115 }
0116
0117 void Hgcroc::SetTOA(double toa){
0118 TOA=toa;
0119 }
0120
0121 void Hgcroc::SetPedestal(int ped){
0122 pedestal=ped;
0123 }
0124
0125 void Hgcroc::PrintWaveFormDebugInfo( double pedMeanH, double pedMeanL, double pedSig){
0126 Setup* setupT = Setup::GetInstance();
0127 int layer = setupT->GetLayer(CellID);
0128 int chInLayer = setupT->GetChannelInLayer(CellID);
0129 int roCh = setupT->GetROchannel(CellID);
0130 std::cout << "Cell ID:" << CellID<< "\t" << layer <<"\t" << chInLayer << "\t RO channel:\t" << roCh << "\t" << pedMeanH << "\t" << pedMeanL << "\t" << pedSig;
0131 std::cout << "\n \tADC-wave " ;
0132 for (int k = 0; k < (int)adc_waveform.size(); k++ ){
0133 std::cout << adc_waveform.at(k) << "\t" ;
0134 }
0135 std::cout << "\n \tTOT-Wave ";
0136 for (int k = 0; k < (int)tot_waveform.size(); k++ ){
0137 std::cout << tot_waveform.at(k) << "\t" ;
0138 }
0139 std::cout << "\n \tTOA-Wave ";
0140 for (int k = 0; k < (int)toa_waveform.size(); k++ ){
0141 std::cout << toa_waveform.at(k) << "\t" ;
0142 }
0143 std::cout <<"\n\t\t\t";
0144 for (int k = 0; k < (int)toa_waveform.size(); k++ )
0145 std::cout <<"\t";
0146 std::cout << " integ: "<<GetIntegratedADC() <<"\t"<< GetTOT() << "\t" << GetTOA() << "\t nTOA = " << GetFirstTOASample() << "\t nTh = " << GetFirstSampleAboveTh() << "\t nMax = " << GetMaxSampleADC() << std::endl;
0147
0148 }