ATTPCROOT  0.3.0-alpha
A ROOT-based framework for analyzing data from active target detectors
AtFilterCalibrate.cxx
Go to the documentation of this file.
1 #include "AtFilterCalibrate.h"
2 
3 #include "AtPad.h"
4 
5 #include <FairLogger.h>
6 
7 #include <TString.h>
8 
9 #include <array>
10 #include <fstream>
11 
13 
15 {
16  openFileAndReadContents();
17 }
18 
20 {
21  auto padNum = pad->GetPadNum();
22  auto &adc = pad->GetADC();
23  auto intercept = fIntercept.find(padNum);
24 
25  if (intercept == fIntercept.end()) {
26  pad->SetValidPad(false);
27  LOG(debug) << "Missing calibration for pad: " << padNum;
28  } else
29  for (int tb = 0; tb < 512; tb++)
30  pad->SetADC(tb, fIntercept[padNum] + adc[tb] * fSlope[padNum]);
31 }
32 
33 void AtFilterCalibrate::openFileAndReadContents()
34 {
35  auto file = openFile();
36  readContents(*file);
37  LOG(info) << "Loaded calibration parameters for: " << fIntercept.size() << " pads.";
38 }
39 
40 filePtr AtFilterCalibrate::openFile()
41 {
42  filePtr file = std::make_unique<std::ifstream>(fCalibrationFile.Data());
43  if (!file->is_open())
44  LOG(fatal) << "Failed to open calibration file: " << fCalibrationFile;
45 
46  LOG(info) << "Opened calibration file: " << fCalibrationFile;
47  return file;
48 }
49 
50 void AtFilterCalibrate::readContents(std::ifstream &file)
51 {
52  int padNumber;
53  float intercept, slope;
54  while (!file.eof()) {
55  file >> padNumber >> intercept >> slope;
56  fIntercept.emplace(padNumber, intercept);
57  fSlope.emplace(padNumber, slope);
58  }
59 }
AtPad.h
filePtr
std::unique_ptr< std::ifstream > filePtr
Definition: AtFilterCalibrate.h:17
AtPad::SetValidPad
void SetValidPad(Bool_t val=kTRUE)
Definition: AtPad.h:82
AtFilterCalibrate::Filter
virtual void Filter(AtPad *pad, AtPadReference *padReference) override
Called to filter each pad.
Definition: AtFilterCalibrate.cxx:19
AtPad::SetADC
void SetADC(const trace &val)
Definition: AtPad.h:91
AtFilterCalibrate.h
AtPad::GetPadNum
Int_t GetPadNum() const
Definition: AtPad.h:96
AtPad::GetADC
const trace & GetADC() const
Definition: AtPad.cxx:97
AtPad
Container class for AtPadBase objects.
Definition: AtPad.h:38
AtFilterCalibrate::Init
virtual void Init() override
Called at the init stage of the AtFilterTask.
Definition: AtFilterCalibrate.cxx:14
AtFilterCalibrate::AtFilterCalibrate
AtFilterCalibrate()
AtPadReference
Definition: AtPadReference.h:20