Graduation-Project/integral.cpp

73 lines
2.3 KiB
C++

#include <TFile.h>
#include <TString.h>
#include <TTree.h>
#include <stdio.h>
int integral(TString file) {
double e[24];
int id[24], N[1];
int sum1, sum2, sum3;
TFile f(file);
TTree* t = (TTree*)f.Get("SimData1");
t->SetBranchAddress("detE", e);
t->SetBranchAddress("detId", id);
t->SetBranchAddress("Ndets", N);
int n = t->GetEntries();
// printf("n=%d\n", n);
int i, j;
sum1 = sum2 = sum3 = 0;
for (i = 0; i < n; i++) {
t->GetEntry(i);
for (j = 0; j < N[0]; j++) {
if (e[j] > 0.18 && id[j] < 12) sum1++;
if (e[j] > 0.18 && id[j] > 11) sum2++;
if (e[j] >= 0.64 && e[j] <= 0.8) sum3++;
}
}
// printf("%d, %d, %d, %d, %f\n", n, sum1 + sum2, sum1, sum2, 1.0 * sum1 / sum2);
// return sum1 + sum2;
return sum3;
}
void process() {
double or1[5] = {10, 11, 12, 13, 14};
double or2[5] = {12.14, 13.35, 14.57, 15.79, 17};
double or3[5] = {14.28, 15.71, 17.14, 18.57, 20};
// int energy[8] = {600, 650, 700, 750, 800, 850, 900, 950};
for (int i = 0; i < 5; i++) {
TString file =
TString::Format("data/7/%d/Simulation_RunNo_650kev_70mm_%dmm.root", int(or1[i]), int(or1[i] * 10));
printf("%d\n", integral(file));
}
for (int i = 0; i < 5; i++) {
TString file =
TString::Format("data/8.5/%.2f/Simulation_RunNo_650kev_85mm_%dmm.root", or2[i], int(or2[i] * 10));
printf("%d\n", integral(file));
}
for (int i = 0; i < 5; i++) {
TString file =
TString::Format("data/10/%.2f/Simulation_RunNo_650kev_100mm_%dmm.root", or3[i], int(or3[i] * 10));
printf("%d\n", integral(file));
}
// for (int i = 0; i < 5; i++) {
// for (int j = 0; j < 8; j++) {
// TString file = TString::Format("data/7/%d/Simulation_RunNo_%dkev_70mm_%dmm.root", int(or1[i]), energy[j],
// int(or1[i] * 10));
// printf("%d\n", integral(file));
// }
// }
// for (int i = 0; i < 5; i++) {
// for (int j = 0; j < 8; j++) {
// TString file = TString::Format("data/8.5/%.2f/Simulation_RunNo_%dkev_85mm_%dmm.root", or2[i], energy[j],
// int(or2[i] * 10));
// printf("%d\n", integral(file));
// }
// }
}