Robert Michaels, rom@jlab.org, Jefferson
Lab Hall A, Aug 2001
//--------------------------------------------------------
// tscalhist_main.C
//
// Test of scaler class, for reading scaler history (end-of-run)
// files and obtaining data.
// Hint: if you have two scaler history files (for L and R arm),
// try to concatenate them 'cat file1 file2 > file3' and analyze
// the resulting concatenated file3.
//
// R. Michaels, August 2001
//--------------------------------------------------------
#include < iostream >
#include < string >
#include "THaScaler.h"
int main(int argc, char* argv[]) {
const Double_t calib_u3 = 4114; // calibrations (an example)
const Double_t calib_d10 = 12728;
const Double_t off_u3 = 167.1;
const Double_t off_d10 = 199.5;
cout << "Enter bank 'Right' or 'Left' (spectrometer) ->" << endl;
string bank; cin >> bank;
cout << "enter [runlo, runhi] = interval of runs to summarize ->" << endl;
int runlo; cout << "runlo: " << endl; cin >> runlo;
int runhi; cout << "runhi: " << endl; cin >> runhi;
THaScaler scaler;
if (scaler.Init(bank.c_str()) == -1) { // Init for default time ("now").
cout << "Error initializing scaler " << endl; return 1;
}
int status;
for (int run = runlo; run < runhi; run++) {
status = scaler.LoadDataHistoryFile(run); // load data from default history file
if ( status != 0 ) continue;
cout << "\nScalers for run = " << run << endl << flush;
cout << "Time --- Beam Current (uA) ---- | --- Triggers --- " << endl;
cout << "(min) u3 d10";
cout << " T1(Right) T3(Left) Tot accepted" << endl;
double time_sec = scaler.GetPulser("clock")/1024;
double chg_u3 = (scaler.GetBcm("bcm_u3")/time_sec - off_u3)/calib_u3;
double chg_d10 = (scaler.GetBcm("bcm_d10")/time_sec - off_d10)/calib_d10;
printf("%7.2f %7.2f %7.2f %d %d %d\n",
time_sec/60, chg_u3, chg_d10, scaler.GetTrig(1), scaler.GetTrig(3),
scaler.GetNormData(0,12));
}
return 0;
}