85 lines
3.2 KiB
C++
85 lines
3.2 KiB
C++
|
#include "TFile.h"
|
||
|
#include "TTree.h"
|
||
|
#include "TH2.h"
|
||
|
#include "TF1.h"
|
||
|
|
||
|
void offsetcor(string rootfilename, string outfilename)
|
||
|
{
|
||
|
|
||
|
ofstream outfile(outfilename.c_str(), ofstream::out);
|
||
|
|
||
|
TFile *rootFile = new TFile(rootfilename.c_str(),"OPEN");
|
||
|
TTree* tree;
|
||
|
rootFile->GetObject("t",tree);
|
||
|
tree->Print();
|
||
|
|
||
|
TFile *newrootFile = new TFile("offsetcor.root","RECREATE");
|
||
|
|
||
|
TH2D* th2_beamSignal_b0_ic1[30];
|
||
|
TH2D* th2_beamSignal_b1_ic1[30];
|
||
|
TH2D* th2_beamSignal_b2_ic1[30];
|
||
|
TH2D* th2_beamSignal_b3_ic1[30];
|
||
|
|
||
|
TProfile * prof_beamSignal_b0_ic1[30];
|
||
|
TProfile * prof_beamSignal_b1_ic1[30];
|
||
|
TProfile * prof_beamSignal_b2_ic1[30];
|
||
|
TProfile * prof_beamSignal_b3_ic1[30];
|
||
|
|
||
|
char histname[30] = "";
|
||
|
char fitname[30] = "";
|
||
|
|
||
|
TCanvas* c1;
|
||
|
TF1 * fit_beamSignal_b0_ic1[30];
|
||
|
TF1 * fit_beamSignal_b1_ic1[30];
|
||
|
TF1 * fit_beamSignal_b2_ic1[30];
|
||
|
TF1 * fit_beamSignal_b3_ic1[30];
|
||
|
|
||
|
|
||
|
for (int iii=0; iii<=29; iii++){
|
||
|
///b0
|
||
|
sprintf(histname,"th2_beamSignal_b0_ic1_%d",iii);
|
||
|
sprintf(fitname,"fit_beamSignal_b0_ic1_%d",iii);
|
||
|
th2_beamSignal_b0_ic1[iii] = new TH2D(histname,histname,100,0,500,100,0,50000);
|
||
|
tree->Project(histname,"beamSignal_b0:ic1_avg",Form("energy_index==%i",1+iii*10),"coloz");
|
||
|
prof_beamSignal_b0_ic1[iii] = th2_beamSignal_b0_ic1[iii]->ProfileX();
|
||
|
fit_beamSignal_b0_ic1[iii] = new TF1(fitname,"pol1",10,150);
|
||
|
prof_beamSignal_b0_ic1[iii]->Fit(fit_beamSignal_b0_ic1[iii],"R");
|
||
|
|
||
|
///b1
|
||
|
sprintf(histname,"th2_beamSignal_b1_ic1_%d",iii);
|
||
|
sprintf(fitname,"fit_beamSignal_b1_ic1_%d",iii);
|
||
|
th2_beamSignal_b1_ic1[iii] = new TH2D(histname,histname,100,0,500,100,0,50000);
|
||
|
tree->Project(histname,"beamSignal_b1:ic1_avg",Form("energy_index==%i",1+iii*10),"coloz");
|
||
|
prof_beamSignal_b1_ic1[iii] = th2_beamSignal_b1_ic1[iii]->ProfileX();
|
||
|
fit_beamSignal_b1_ic1[iii] = new TF1(fitname,"pol1",10,150);
|
||
|
prof_beamSignal_b1_ic1[iii]->Fit(fit_beamSignal_b1_ic1[iii],"R");
|
||
|
|
||
|
///b2
|
||
|
sprintf(histname,"th2_beamSignal_b2_ic1_%d",iii);
|
||
|
sprintf(fitname,"fit_beamSignal_b2_ic1_%d",iii);
|
||
|
th2_beamSignal_b2_ic1[iii] = new TH2D(histname,histname,100,0,500,100,0,50000);
|
||
|
tree->Project(histname,"beamSignal_b2:ic1_avg",Form("energy_index==%i",1+iii*10),"coloz");
|
||
|
prof_beamSignal_b2_ic1[iii] = th2_beamSignal_b2_ic1[iii]->ProfileX();
|
||
|
fit_beamSignal_b2_ic1[iii] = new TF1(fitname,"pol1",10,150);
|
||
|
prof_beamSignal_b2_ic1[iii]->Fit(fit_beamSignal_b2_ic1[iii],"R");
|
||
|
|
||
|
///b3
|
||
|
sprintf(histname,"th2_beamSignal_b3_ic1_%d",iii);
|
||
|
sprintf(fitname,"fit_beamSignal_b3_ic1_%d",iii);
|
||
|
th2_beamSignal_b3_ic1[iii] = new TH2D(histname,histname,100,0,500,100,0,50000);
|
||
|
tree->Project(histname,"beamSignal_b3:ic1_avg",Form("energy_index==%i",1+iii*10),"coloz");
|
||
|
prof_beamSignal_b3_ic1[iii] = th2_beamSignal_b3_ic1[iii]->ProfileX();
|
||
|
fit_beamSignal_b3_ic1[iii] = new TF1(fitname,"pol1",10,150);
|
||
|
prof_beamSignal_b3_ic1[iii]->Fit(fit_beamSignal_b3_ic1[iii],"R");
|
||
|
|
||
|
|
||
|
outfile << fit_beamSignal_b0_ic1[iii]->GetParameter(0) << " " << fit_beamSignal_b1_ic1[iii]->GetParameter(0) << " " << fit_beamSignal_b2_ic1[iii]->GetParameter(0) << " " << fit_beamSignal_b3_ic1[iii]->GetParameter(0) << std::endl;
|
||
|
}
|
||
|
|
||
|
newrootFile->Write();
|
||
|
newrootFile->Close();
|
||
|
outfile.close();
|
||
|
rootFile->Close();
|
||
|
}
|
||
|
|