Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
TAGH_timewalk/scripts/offsets/offsets.C
Go to the documentation of this file.
1 void GetData(TString fname, double *y, const int N) {
2  ifstream fin(fname);
3  double prod = 0.0; double sum = 0.0;
4  for (int i = 0; i < N; i++) {
5  char sep; int n; double w, t, dt, sigma;
6  fin >> n >> sep >> w >> sep >> t >> sep >> dt >> sep >> sigma;
7  y[i] = t;
8  if (sigma < 0.06 && t != 0.0) {
9  y[i] = 0.0;
10  cout << "Bad fit: counter " << n << endl;
11  }
12  }
13  fin.close();
14 }
15 void GetCCDBOffsetsBase(double &adc_offset, double &tdc_offset) {
16  ifstream fin("offsets/base_time_offset_ccdb.txt");
18  fin >> adc_offset >> tdc_offset;
19  fin.close();
20 }
21 void GetCCDBOffsetsTDC(double* tdc_offsets, const int N) {
22  ifstream fin("offsets/tdc_time_offsets_ccdb.txt");
24  int n;
25  for (int i = 0; i < N; i++) {
26  fin >> n >> tdc_offsets[i];
27  }
28  fin.close();
29 }
30 void GetCCDBOffsetsADC(double* adc_offsets, const int N) {
31  ifstream fin("offsets/fadc_time_offsets_ccdb.txt");
33  int n;
34  for (int i = 0; i < N; i++) {
35  fin >> n >> adc_offsets[i];
36  }
37  fin.close();
38 }
39 void WriteBaseOffsets(double c1_adc, double c1_tdc) {
40  double adc_ccdb; double tdc_ccdb;
41  GetCCDBOffsetsBase(adc_ccdb,tdc_ccdb);
42  ofstream fout; fout.open("offsets/base_time_offset.txt");
43  TString sep = " ";
44  fout << adc_ccdb - c1_adc << sep << tdc_ccdb - c1_tdc << endl;
45  fout.close();
46 }
47 void WriteTAGHTDCOffsets(double *y, const int N, double &c1_tdc) {
48  double y_ccdb[N];
49  GetCCDBOffsetsTDC(y_ccdb,N);
50  ofstream fout; fout.open("offsets/tdc_time_offsets.txt");
51  TString sep = " ";
52  for (int i = 0; i < N; i++) {
53  double offset = y_ccdb[i] + y[i];
54  if (i == 0) c1_tdc = offset;
55  if (y_ccdb[i] == 0.0 && y[i] == 0.0) {
56  offset = 0.0;
57  } else {
58  offset -= c1_tdc;
59  }
60  fout << i + 1 << sep << offset << endl;
61  }
62  fout.close();
63  fout.open("offsets/tdc_time_offsets_diff.txt");
64  for (int i = 0; i < N; i++) fout << i + 1 << sep << y[i] << endl;
65  fout.close();
66 }
67 void WriteTAGHADCOffsets(double *y_tdcadc, double *y, const int N, double &c1_adc) {
68  double y_ccdb[N];
69  GetCCDBOffsetsADC(y_ccdb,N);
70  ofstream fout; fout.open("offsets/fadc_time_offsets.txt");
71  TString sep = " ";
72  for (int i = 0; i < N; i++) {
73  double offset = y_ccdb[i] + y[i] - y_tdcadc[i];
74  if (i == 0) c1_adc = offset;
75  if (y_ccdb[i] == 0.0 && y[i] == 0.0) {
76  offset = 0.0;
77  } else {
78  offset -= c1_adc;
79  }
80  fout << i + 1 << sep << offset << endl;
81  }
82  fout.close();
83  fout.open("offsets/fadc_time_offsets_diff.txt");
84  for (int i = 0; i < N; i++) fout << i + 1 << sep << y[i] - y_tdcadc[i] << endl;
85  fout.close();
86 }
87 int offsets(TString dir) {
88  system("mkdir -p offsets");
89  // TAGH offsets
90  const int N = 274; // counters
91  double y[N]; double c1_tdc = 0.0; double c1_adc = 0.0;
92  GetData(dir+"/results_TAGH.txt",y,N);
93  WriteTAGHTDCOffsets(y,N,c1_tdc);
94  double y_tdcadc[N];
95  GetData(dir+"/results_TDCADC.txt",y_tdcadc,N);
96  WriteTAGHADCOffsets(y_tdcadc,y,N,c1_adc);
97  WriteBaseOffsets(c1_adc,c1_tdc);
98  return 0;
99 }
void WriteTAGHTDCOffsets(double *y, const int N, double &c1_tdc)
#define y
int offsets(TString dir)
void GetCCDBOffsetsBase(double &adc_offset_psc, double &tdc_offset_psc, double &adc_offset_ps)
Double_t sigma[NCHANNELS]
Definition: st_tw_resols.C:37
void GetData(TString fname, double *y, double &mean, const int N)
void GetCCDBOffsetsTDC(double *tdc_offsets, const int N)
void GetCCDBOffsetsADC(double *adc_offsets, const int N)
TDirectory * dir
Definition: bcal_hist_eff.C:31
void WriteBaseOffsets(double TAGH_mu, double tdc_mu, double tdcadc_mu, double ps_mu)
void WriteTAGHADCOffsets(double *y_tdcadc, double *y, const int N, double &c1_adc)