ATTPCROOT  0.3.0-alpha
A ROOT-based framework for analyzing data from active target detectors
S800Calibration.h
Go to the documentation of this file.
1 #ifndef __S800CALIBRAtION_HH
2 #define __S800CALIBRAtION_HH
3 
4 #include <Rtypes.h>
5 
6 #include "S800Calc.h"
7 
8 #include <algorithm>
9 #include <ext/alloc_traits.h>
10 #include <memory>
11 #include <vector>
12 
13 class GTimeOfFlight;
14 class S800;
15 class S800Settings;
16 
23 public:
27 
28  void ReadCrdcCalibration(const char *filename, const char *pedestalfile);
29  void ReadCrdcBadPads(const char *filename);
30  // bool IsCrdcBadPad(int ch);
31  bool IsBad(int ch, int CrdcId)
32  {
33  for (UShort_t b = 0; b < fbad[CrdcId].size(); b++) {
34  if (ch == fbad[CrdcId][b])
35  return true;
36  }
37  return false;
38  };
39 
43  void S800Calculate(S800 *in, S800Calc *out);
44 
48  void CrdcCal(std::vector<Short_t> channel, std::vector<Short_t> data, Int_t id);
49 
54  std::vector<Float_t> GetCalibratedCrdcPads(std::vector<Short_t> channels, std::vector<Short_t> data, Int_t id,
55  vector<Float_t> &PedSubtractedPads);
56 
61  void MakeCalibratedCRDC(CRDC *theCRDC, std::vector<Short_t> channels, std::vector<Short_t> data, Float_t tac,
62  Float_t anode, Int_t id);
63 
66  Float_t CalcX();
67  Float_t CalcX2(CRDC *theCRDC);
68 
71  void SetCrdc(std::vector<Short_t> channel, std::vector<Short_t> data, Float_t tac, Float_t anode, Int_t id);
72 
75  CRDC GetCrdc() { return fcrdc; }
76 
77  Float_t TimeOffset(Float_t time1, Float_t time2);
78  Float_t TimeOffset(Float_t time);
79  void SetTof(GTimeOfFlight *tof);
80  TOF GetTof() { return ftof; }
81 
82  void ReadICCalibration(const char *filename);
83  std::vector<Float_t> ICCal(std::vector<int> chan, std::vector<float> raw);
84  Float_t ICSum(std::vector<Float_t> cal);
85  Float_t ICDE(Float_t sum, Float_t x, Float_t y);
86 
87  void SetTS800(Short_t ts800) { fts800 = ts800; }
88 
89  std::vector<Float_t> GetCRDCCal() { return fcrdccal; }
90 
91 private:
92  S800Settings *fSett{};
93  std::vector<std::vector<Float_t>> fped;
94  std::vector<std::vector<Float_t>> fslope;
95  std::vector<std::vector<Float_t>> foffset;
96  std::vector<std::vector<Int_t>> fbad;
97  std::vector<Float_t> fcrdccal;
98  Short_t fts800{};
99 
100  std::vector<Float_t> fICoffset;
101  std::vector<Float_t> fICslope;
102  Float_t fde_slope{};
103  Float_t fde_offset{};
104 
105  CRDC fcrdc;
106  TOF ftof;
107 };
108 
109 #endif
S800Calibration::ICDE
Float_t ICDE(Float_t sum, Float_t x, Float_t y)
Definition: S800Calibration.cxx:620
S800Calibration::CalcX2
Float_t CalcX2(CRDC *theCRDC)
Definition: S800Calibration.cxx:394
GTimeOfFlight
Definition: S800.h:22
S800Calibration::CrdcCal
void CrdcCal(std::vector< Short_t > channel, std::vector< Short_t > data, Int_t id)
Definition: S800Calibration.cxx:124
TOF
Definition: S800Calc.h:147
S800Calibration::ReadCrdcCalibration
void ReadCrdcCalibration(const char *filename, const char *pedestalfile)
Definition: S800Calibration.cxx:72
S800Calibration::GetCrdc
CRDC GetCrdc()
Definition: S800Calibration.h:75
S800Calc
Definition: S800Calc.h:455
S800Calibration::S800Calibration
S800Calibration()
Definition: S800Calibration.cxx:20
S800Calibration::ReadICCalibration
void ReadICCalibration(const char *filename)
Definition: S800Calibration.cxx:575
S800Calibration::SetTS800
void SetTS800(Short_t ts800)
Definition: S800Calibration.h:87
S800Calibration::TimeOffset
Float_t TimeOffset(Float_t time1, Float_t time2)
Definition: S800Calibration.cxx:559
S800Calibration::IsBad
bool IsBad(int ch, int CrdcId)
Definition: S800Calibration.h:31
S800Calibration::S800Calculate
void S800Calculate(S800 *in, S800Calc *out)
Definition: S800Calibration.cxx:673
CRDC
Definition: S800Calc.h:21
S800Calibration
Definition: S800Calibration.h:22
S800
Definition: S800.h:338
S800Calibration::GetCalibratedCrdcPads
std::vector< Float_t > GetCalibratedCrdcPads(std::vector< Short_t > channels, std::vector< Short_t > data, Int_t id, vector< Float_t > &PedSubtractedPads)
Definition: S800Calibration.cxx:161
S800Calibration::~S800Calibration
~S800Calibration()
Definition: S800Calibration.cxx:58
y
const double * y
Definition: lmcurve.cxx:20
S800Calc.h
S800Calibration::ICSum
Float_t ICSum(std::vector< Float_t > cal)
Definition: S800Calibration.cxx:603
S800Calibration::SetCrdc
void SetCrdc(std::vector< Short_t > channel, std::vector< Short_t > data, Float_t tac, Float_t anode, Int_t id)
Definition: S800Calibration.cxx:216
S800Calibration::ReadCrdcBadPads
void ReadCrdcBadPads(const char *filename)
Definition: S800Calibration.cxx:104
S800Calibration::ICCal
std::vector< Float_t > ICCal(std::vector< int > chan, std::vector< float > raw)
Definition: S800Calibration.cxx:586
S800Calibration::CalcX
Float_t CalcX()
Definition: S800Calibration.cxx:243
S800Settings
Definition: S800Settings.h:13
S800Calibration::SetTof
void SetTof(GTimeOfFlight *tof)
Definition: S800Calibration.cxx:569
S800Calibration::GetCRDCCal
std::vector< Float_t > GetCRDCCal()
Definition: S800Calibration.h:89
S800Calibration::GetTof
TOF GetTof()
Definition: S800Calibration.h:80
S800Calibration::MakeCalibratedCRDC
void MakeCalibratedCRDC(CRDC *theCRDC, std::vector< Short_t > channels, std::vector< Short_t > data, Float_t tac, Float_t anode, Int_t id)
Definition: S800Calibration.cxx:635