26void calibrate_wfm(TString converted_root_file, TString branch_name, TString calib_file,
int max_events_show,
int max_entries)
29 const int model_order = 2;
30 const int exponents = 2;
33 std::vector<TH2F*> harmHistVect;
34 harmHistVect.resize(exponents);
35 for(
int i =0;
i < exponents;
i++)
36 harmHistVect.at(
i) =
new TH2F(Form(
"harmonic%i",
i+1),Form(
"harmonic%i",
i+1), 100,0,1,100,-1,1);
38 TFile *_file0 = TFile::Open(converted_root_file,
"READONLY");
39 TTree *tree = (TTree *)_file0->Get(
"bmndata");
41 TClonesArray *DigiArray =
nullptr;
42 tree->SetBranchAddress(branch_name, &DigiArray);
48 if (branch_name.Contains(
"ScWall")) {
54 else if (branch_name.Contains(
"FHCal")) {
60 else if (branch_name.Contains(
"Hodo")) {
66 else if (branch_name.Contains(
"Ndet")) {
72 else if (branch_name.Contains(
"Ndet")) {
80 int n_events = (tree->GetEntries() > max_entries)? max_entries : tree->GetEntries();
81 cout << n_events << endl;
82 for (
int ev = 0; ev < n_events; ev++)
85 for (
int i = 0;
i < DigiArray->GetEntriesFast();
i++)
88 auto wfm = ThisDigi->
GetWfm();
89 if(wfm.empty())
continue;
103 complex<float> *harmonics;
108 Float_t fit_integral = Pfitter.
GetIntegral(digiPars.gateBegin, digiPars.gateEnd);
109 Float_t fit_chi2 = Pfitter.
GetChiSquare(digiPars.gateBegin, digiPars.gateEnd, ThisDigi->
fTimeMax);
110 Float_t fit_R2 = Pfitter.
GetRSquare(digiPars.gateBegin, digiPars.gateEnd);
111 if(
false) printf(
"fit integral %.0f integral %.0d chi2 %.1f R2 %.3f\n", fit_integral, ThisDigi->
fIntegral, fit_chi2, fit_R2);
117 for(
int i =0;
i < exponents;
i++)
118 harmHistVect.at(
i)->Fill(real(harmonics[
i+1]), imag(harmonics[
i+1]));
121 TString signal_name = Form(
"channel %i fit_integral %.0f integral %.0d chi2 %.1f fit_R2 %.3f",
125 if(counter > max_events_show)
continue;
126 TCanvas *canv_ptr =
new TCanvas();
127 std::vector<float> points(wfm.size());
128 std::iota(std::begin(points), std::end(points), 0);
129 TGraph *tgr_ptr =
new TGraph(wfm.size(), &points[0], &wfm[0]);
130 tgr_ptr->SetTitle(signal_name.Data());
132 if(!fit_wfm.empty()){
133 TGraph *tgr_ptr_fit =
new TGraph(fit_wfm.size(), &points[0], &fit_wfm[0]);
134 tgr_ptr_fit->SetLineColor(kRed);
135 tgr_ptr_fit->SetLineWidth(2);
136 tgr_ptr_fit->Draw(
"same");
144 for(
int i =0;
i < exponents;
i++){
145 TCanvas *canv_ptr =
new TCanvas();
146 harmHistVect.at(
i)->Draw(
"colz");