96 lines
2.1 KiB
C
96 lines
2.1 KiB
C
|
#pragma once
|
||
|
|
||
|
#ifndef file_handler_h
|
||
|
#define file_handler_h
|
||
|
|
||
|
#include "GaussFit.h"
|
||
|
#include <TH1F.h>
|
||
|
|
||
|
using std::string;
|
||
|
using std::to_string;
|
||
|
|
||
|
class FileHandler {
|
||
|
public:
|
||
|
FileHandler();
|
||
|
FileHandler(string, int n_ = 6);
|
||
|
~FileHandler();
|
||
|
|
||
|
public:
|
||
|
int n = 6, m = 8, pX;
|
||
|
string file;
|
||
|
double adcValue[6][8][2];
|
||
|
TH1F Left[6][8];
|
||
|
TH1F Right[6][8];
|
||
|
|
||
|
public:
|
||
|
double getADC(TH1F hist);
|
||
|
void solve();
|
||
|
void save();
|
||
|
void save(string);
|
||
|
|
||
|
private:
|
||
|
void init();
|
||
|
};
|
||
|
|
||
|
FileHandler::FileHandler() {}
|
||
|
|
||
|
FileHandler::FileHandler(string file_, int n_) {
|
||
|
file = file_;
|
||
|
n = n_;
|
||
|
}
|
||
|
|
||
|
FileHandler::~FileHandler() {}
|
||
|
|
||
|
void FileHandler::init() {
|
||
|
string L, R;
|
||
|
for (int i = 0; i < n; i++)
|
||
|
for (int j = 0; j < m; j++) {
|
||
|
L = "Left" + to_string(i) + to_string(j);
|
||
|
R = "Right" + to_string(i) + to_string(j);
|
||
|
Left[i][j] = TH1F(L.c_str(), L.c_str(), CHANNEL_NUMBER, 0, CHANNEL_NUMBER);
|
||
|
Right[i][j] = TH1F(R.c_str(), R.c_str(), CHANNEL_NUMBER, 0, CHANNEL_NUMBER);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
double FileHandler::getADC(TH1F hist) {
|
||
|
int n, cnt = 0;
|
||
|
double *parma = new double[3];
|
||
|
GaussFit *GF = new GaussFit();
|
||
|
for (int k = 10; k < CHANNEL_NUMBER; k++) {
|
||
|
n = hist.GetBinContent(k);
|
||
|
if (n == 0) continue;
|
||
|
GF->addData(k, n);
|
||
|
// std::cout << k << " " << n << std::endl;
|
||
|
}
|
||
|
parma = GF->fit();
|
||
|
|
||
|
return parma[1];
|
||
|
}
|
||
|
|
||
|
void FileHandler::solve() {
|
||
|
init();
|
||
|
readROOTData(file.c_str(), Left, Right, n);
|
||
|
for (int i = 0; i < n; i++)
|
||
|
for (int j = 0; j < m; j++) {
|
||
|
adcValue[i][j][0] = getADC(Left[i][j]);
|
||
|
adcValue[i][j][1] = getADC(Right[i][j]);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void FileHandler::save() {
|
||
|
string path = rmString(file, ".root") + ".csv";
|
||
|
save(path);
|
||
|
}
|
||
|
|
||
|
void FileHandler::save(string path) {
|
||
|
std::ofstream ofs(path);
|
||
|
|
||
|
ofs << "pX,X4,Bind,Left,Right" << std::endl;
|
||
|
for (int i = 0; i < n; i++)
|
||
|
for (int j = 0; j < m; j++)
|
||
|
ofs << pX << "," << i << "," << j << "," << adcValue[i][j][0] << "," << adcValue[i][j][1]
|
||
|
<< std::endl;
|
||
|
}
|
||
|
|
||
|
#endif
|