refactor: old method
This commit is contained in:
parent
0a8ef2e252
commit
9e63b34088
@ -19,18 +19,13 @@ public:
|
|||||||
int n = 6, m = 8;
|
int n = 6, m = 8;
|
||||||
int thMin, thMax, pX;
|
int thMin, thMax, pX;
|
||||||
string file;
|
string file;
|
||||||
double adcValue[6][8][2];
|
std::vector<int> adcValue[6][8][2];
|
||||||
TH1F Left[6][8];
|
|
||||||
TH1F Right[6][8];
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
double getADC(TH1F hist);
|
double getADC(TH1F hist);
|
||||||
void solve();
|
void readData();
|
||||||
void save();
|
void save();
|
||||||
void save(string);
|
void save(string);
|
||||||
|
|
||||||
private:
|
|
||||||
void init();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
FileHandler::FileHandler() {}
|
FileHandler::FileHandler() {}
|
||||||
@ -44,17 +39,6 @@ FileHandler::FileHandler(string file_, int n_, int thMin_, int thMax_) {
|
|||||||
|
|
||||||
FileHandler::~FileHandler() {}
|
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) {
|
double FileHandler::getADC(TH1F hist) {
|
||||||
int n, cnt = 0;
|
int n, cnt = 0;
|
||||||
double *parma = new double[3];
|
double *parma = new double[3];
|
||||||
@ -70,18 +54,7 @@ double FileHandler::getADC(TH1F hist) {
|
|||||||
return parma[1];
|
return parma[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
void FileHandler::solve() {
|
void FileHandler::readData() { readROOTData(file.c_str(), adcValue, n, m, thMin, thMax); }
|
||||||
init();
|
|
||||||
readROOTData(file.c_str(), Left, Right, n, m, thMin, thMax);
|
|
||||||
if (DEBUG)
|
|
||||||
std::cout << getADC(Left[3][2]) << std::endl;
|
|
||||||
else
|
|
||||||
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() {
|
void FileHandler::save() {
|
||||||
string path = rmString(file, ".root") + ".csv";
|
string path = rmString(file, ".root") + ".csv";
|
||||||
@ -90,12 +63,6 @@ void FileHandler::save() {
|
|||||||
|
|
||||||
void FileHandler::save(string path) {
|
void FileHandler::save(string path) {
|
||||||
std::ofstream ofs(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
|
#endif
|
||||||
|
@ -51,16 +51,9 @@ void GaussFit::addData(double x, double y) { data.push_back(Eigen::Vector2d(x, y
|
|||||||
double* GaussFit::fit(int type_) {
|
double* GaussFit::fit(int type_) {
|
||||||
double x, y;
|
double x, y;
|
||||||
|
|
||||||
SigmaClip* SC1 = new SigmaClip(1, 5, dataMax2DInd, dataStd2DSQRT);
|
|
||||||
SigmaClip* SC2 = new SigmaClip();
|
SigmaClip* SC2 = new SigmaClip();
|
||||||
data = SC1->clipN(data);
|
|
||||||
data = SC2->clip(data);
|
data = SC2->clip(data);
|
||||||
|
|
||||||
if (getTotal() <= 400) {
|
|
||||||
for (int i = 0; i < 3; i++) parma[i] = 0;
|
|
||||||
return parma;
|
|
||||||
}
|
|
||||||
|
|
||||||
parma[0] = dataMax2D(data);
|
parma[0] = dataMax2D(data);
|
||||||
parma[1] = dataAvg2D(data);
|
parma[1] = dataAvg2D(data);
|
||||||
parma[2] = dataStd2D(data);
|
parma[2] = dataStd2D(data);
|
||||||
@ -89,7 +82,7 @@ double* GaussFit::fit(int type_) {
|
|||||||
if (DEBUG) std::cout << parma[0] << " " << parma[1] << ", " << parma[2] << std::endl;
|
if (DEBUG) std::cout << parma[0] << " " << parma[1] << ", " << parma[2] << std::endl;
|
||||||
if (DEBUG) std::cout << RSquare() << std::endl;
|
if (DEBUG) std::cout << RSquare() << std::endl;
|
||||||
|
|
||||||
if (RSquare() < 0.5)
|
if (RSquare() < 0.6)
|
||||||
for (int i = 0; i < 3; i++) parma[i] = 0;
|
for (int i = 0; i < 3; i++) parma[i] = 0;
|
||||||
|
|
||||||
return parma;
|
return parma;
|
||||||
|
@ -62,23 +62,4 @@ std::vector<Eigen::Vector2d> SigmaClip::clip(std::vector<Eigen::Vector2d> data)
|
|||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<Eigen::Vector2d> SigmaClip::clipN(std::vector<Eigen::Vector2d> data) {
|
|
||||||
std::vector<Eigen::Vector2d> dataN;
|
|
||||||
std::vector<Eigen::Vector2d>::iterator itor;
|
|
||||||
|
|
||||||
minValue = INF, maxValue = -INF;
|
|
||||||
for (int k = 1; k <= maxiters; k++) {
|
|
||||||
computeBound(data);
|
|
||||||
for (itor = data.begin(); itor != data.end();) {
|
|
||||||
if ((*itor)(0) < minValue || (*itor)(0) > maxValue) {
|
|
||||||
dataN.push_back(Eigen::Vector2d((*itor)(0), (*itor)(1)));
|
|
||||||
data.erase(itor);
|
|
||||||
} else
|
|
||||||
itor++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return dataN;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -87,7 +87,7 @@ double dataMax2DInd(std::vector<Eigen::Vector2d> data) {
|
|||||||
|
|
||||||
double dataStd2DSQRT(std::vector<Eigen::Vector2d> data) { return std::sqrt(dataMax2D(data)); }
|
double dataStd2DSQRT(std::vector<Eigen::Vector2d> data) { return std::sqrt(dataMax2D(data)); }
|
||||||
|
|
||||||
void readROOTData(const char *fin, TH1F Left[6][8], TH1F Right[6][8], int n = 6, int m = 8,
|
void readROOTData(const char *fin, std::vector<int> adcValue[6][8][2], int n = 6, int m = 8,
|
||||||
int thMin = 800, int thMax = 4000) {
|
int thMin = 800, int thMax = 4000) {
|
||||||
// read file
|
// read file
|
||||||
TFile *fRun = new TFile(fin);
|
TFile *fRun = new TFile(fin);
|
||||||
@ -120,20 +120,10 @@ void readROOTData(const char *fin, TH1F Left[6][8], TH1F Right[6][8], int n = 6,
|
|||||||
x1 = dataArray[j][k];
|
x1 = dataArray[j][k];
|
||||||
x2 = dataArray[j][k + m];
|
x2 = dataArray[j][k + m];
|
||||||
if ((x1 + x2) < thMin || (x1 + x2) > thMax) continue;
|
if ((x1 + x2) < thMin || (x1 + x2) > thMax) continue;
|
||||||
Left[j][k].Fill(dataArray[j][k]);
|
adcValue[j][k][0].push_back(dataArray[j][k]);
|
||||||
Right[j][k].Fill(dataArray[j][k + m]);
|
adcValue[j][k][1].push_back(dataArray[j][k]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Rebin
|
|
||||||
int nMax;
|
|
||||||
for (int i = 0; i < n; i++)
|
|
||||||
for (int j = 0; j < m; j++) {
|
|
||||||
nMax = Left[i][j].GetMaximum();
|
|
||||||
if (nMax < 50) Left[i][j] = *(TH1F *)(Left[i][j].Rebin(8));
|
|
||||||
nMax = Right[i][j].GetMaximum();
|
|
||||||
if (nMax < 50) Right[i][j] = *(TH1F *)(Right[i][j].Rebin(8));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
string rmString(string str, string substr) {
|
string rmString(string str, string substr) {
|
||||||
|
4
main.cpp
4
main.cpp
@ -22,9 +22,7 @@ int main() {
|
|||||||
run = cR(i, 0);
|
run = cR(i, 0);
|
||||||
FH[i - 1] = FileHandler("2016Q3D/root/raw/201609Q3D" + run + ".root", 5);
|
FH[i - 1] = FileHandler("2016Q3D/root/raw/201609Q3D" + run + ".root", 5);
|
||||||
FH[i - 1].pX = stoi(cR(i, 5));
|
FH[i - 1].pX = stoi(cR(i, 5));
|
||||||
FH[i - 1].solve();
|
FH[i - 1].readData();
|
||||||
if (!DEBUG) FH[i - 1].save("result/adc/201609Q3D" + run + ".csv");
|
|
||||||
if (DEBUG) break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user