ATTPCROOT  0.3.0-alpha
A ROOT-based framework for analyzing data from active target detectors
AtCalibration.cxx
Go to the documentation of this file.
1 #include "AtCalibration.h"
2 
3 #include <TString.h>
4 
5 #include <algorithm>
6 #include <fstream> // IWYU pragma: keep
7 #include <iostream>
8 
9 constexpr auto cRED = "\033[1;31m";
10 constexpr auto cYELLOW = "\033[1;33m";
11 constexpr auto cNORMAL = "\033[0m";
12 constexpr auto cGREEN = "\033[1;32m";
13 
15 {
16  return fIsGainCalibrated;
17 }
18 
20 {
21  return fIsJitterCalibrated;
22 }
23 
24 void AtCalibration::SetGainFile(TString gainFile)
25 {
26  fGainFile = gainFile;
27  std::ifstream gainData(fGainFile.Data());
28  if (gainData.fail()) {
29  std::cout << " = No Gain Calibration file found! Please, check the path. Current :" << fGainFile.Data()
30  << std::endl;
31  std::cout << cRED << " = Proceeding with no gain calibration!!" << cNORMAL << std::endl;
32  fIsGainCalibrated = kFALSE;
33  } else {
34  std::cout << " == Gain calibration using: " << cRED << fGainFile.Data() << cNORMAL << std::endl;
35  Double_t nPadNum, nCal;
36  Int_t intPadNum;
37  fGainCalib.fill(0);
38 
39  while (!gainData.eof()) {
40  gainData >> nPadNum >> nCal;
41  intPadNum = (int)nPadNum;
42  fGainCalib[intPadNum] = nCal;
43  }
44  gainData.close();
45  fIsGainCalibrated = kTRUE;
46  }
47 }
48 
49 void AtCalibration::SetJitterFile(TString jitterFile)
50 {
51  fJitterFile = jitterFile;
52  std::ifstream jitterData(fJitterFile.Data());
53  if (jitterData.fail()) {
54  std::cout << " = No Jitter Calibration file found! Please check the path. Current :" << cNORMAL
55  << fJitterFile.Data() << std::endl;
56  std::cout << cRED << " = Proceeding with no jitter calibration!!" << cNORMAL << std::endl;
57  fIsJitterCalibrated = kFALSE;
58  } else {
59  std::cout << " == Jitter calibration using: " << cRED << fJitterFile.Data() << cNORMAL << std::endl;
60  fJitterCalib.fill(0);
61  Int_t jiPadNum, jiCal;
62  Double_t jdCal, jdPadNum;
63 
64  while (!jitterData.eof()) {
65  jitterData >> jiPadNum >> jiCal;
66  fJitterCalib[jiPadNum] = jiCal;
67  }
68  jitterData.close();
69  fIsJitterCalibrated = kTRUE;
70  }
71 }
72 
73 const trace &AtCalibration::CalibrateGain(const trace &adc, Int_t padNum)
74 {
75  if (!fIsGainCalibrated) {
76  return adc;
77  }
78 
79  fPadNum = padNum;
80  fGnewadc[512] = 0;
81 
82  for (Int_t i = 0; i < 512; i++)
83  fGnewadc[i] = adc[i] * fGainCalib[fPadNum];
84 
85  return fGnewadc;
86 }
87 
88 const trace &AtCalibration::CalibrateJitter(const trace &adc, Int_t padNum)
89 {
90  if (!fIsJitterCalibrated) {
91  return adc;
92  }
93 
94  fPadNum = padNum;
95  fGnewadc[512] = 0;
96  Int_t tcorr = 0;
97 
98  for (Int_t j = 0; j < 512; j++) {
99  tcorr = j + fJitterCalib[fPadNum];
100  if (tcorr >= 0 && tcorr <= 512 && adc[j] > 0 && adc[j] < 4000) {
101  fGnewadc[tcorr] = adc[j];
102  // std::cout<<"fGnewadc: "<< fGnewadc[tcorr]<< std::endl;
103  }
104  }
105  return fGnewadc;
106 }
AtCalibration::fPadNum
Int_t fPadNum
Definition: AtCalibration.h:30
AtCalibration::CalibrateGain
const trace & CalibrateGain(const trace &adc, Int_t padNum)
Definition: AtCalibration.cxx:73
AtCalibration::SetGainFile
void SetGainFile(TString gainFile)
Definition: AtCalibration.cxx:24
cYELLOW
constexpr auto cYELLOW
Definition: AtCalibration.cxx:10
AtCalibration::fGainCalib
std::array< Double_t, 10240 > fGainCalib
Definition: AtCalibration.h:27
AtCalibration::fIsGainCalibrated
Bool_t fIsGainCalibrated
Definition: AtCalibration.h:24
cRED
constexpr auto cRED
Definition: AtCalibration.cxx:9
AtCalibration::IsJitterFile
Bool_t IsJitterFile()
Definition: AtCalibration.cxx:19
AtCalibration::fGnewadc
trace fGnewadc
Definition: AtCalibration.h:20
AtCalibration::SetJitterFile
void SetJitterFile(TString jitterFile)
Definition: AtCalibration.cxx:49
cNORMAL
constexpr auto cNORMAL
Definition: AtCalibration.cxx:11
AtCalibration::fJitterFile
TString fJitterFile
Definition: AtCalibration.h:17
trace
std::array< Double_t, 512 > trace
Definition: AtCalibration.h:9
AtCalibration.h
AtCalibration::fJitterCalib
std::array< Double_t, 10240 > fJitterCalib
Definition: AtCalibration.h:28
AtCalibration::fIsJitterCalibrated
Bool_t fIsJitterCalibrated
Definition: AtCalibration.h:25
AtCalibration::CalibrateJitter
const trace & CalibrateJitter(const trace &adc, Int_t padNum)
Definition: AtCalibration.cxx:88
cGREEN
constexpr auto cGREEN
Definition: AtCalibration.cxx:12
AtCalibration::fGainFile
TString fGainFile
Definition: AtCalibration.h:16
AtCalibration::IsGainFile
Bool_t IsGainFile()
Definition: AtCalibration.cxx:14