data analysis scripts
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

84 lines
3.2 KiB

  1. #include "TFile.h"
  2. #include "TTree.h"
  3. #include "TH2.h"
  4. #include "TF1.h"
  5. void offsetcor(string rootfilename, string outfilename)
  6. {
  7. ofstream outfile(outfilename.c_str(), ofstream::out);
  8. TFile *rootFile = new TFile(rootfilename.c_str(),"OPEN");
  9. TTree* tree;
  10. rootFile->GetObject("t",tree);
  11. tree->Print();
  12. TFile *newrootFile = new TFile("offsetcor.root","RECREATE");
  13. TH2D* th2_beamSignal_b0_ic1[30];
  14. TH2D* th2_beamSignal_b1_ic1[30];
  15. TH2D* th2_beamSignal_b2_ic1[30];
  16. TH2D* th2_beamSignal_b3_ic1[30];
  17. TProfile * prof_beamSignal_b0_ic1[30];
  18. TProfile * prof_beamSignal_b1_ic1[30];
  19. TProfile * prof_beamSignal_b2_ic1[30];
  20. TProfile * prof_beamSignal_b3_ic1[30];
  21. char histname[30] = "";
  22. char fitname[30] = "";
  23. TCanvas* c1;
  24. TF1 * fit_beamSignal_b0_ic1[30];
  25. TF1 * fit_beamSignal_b1_ic1[30];
  26. TF1 * fit_beamSignal_b2_ic1[30];
  27. TF1 * fit_beamSignal_b3_ic1[30];
  28. for (int iii=0; iii<=29; iii++){
  29. ///b0
  30. sprintf(histname,"th2_beamSignal_b0_ic1_%d",iii);
  31. sprintf(fitname,"fit_beamSignal_b0_ic1_%d",iii);
  32. th2_beamSignal_b0_ic1[iii] = new TH2D(histname,histname,100,0,500,100,0,50000);
  33. tree->Project(histname,"beamSignal_b0:ic1_avg",Form("energy_index==%i",1+iii*10),"coloz");
  34. prof_beamSignal_b0_ic1[iii] = th2_beamSignal_b0_ic1[iii]->ProfileX();
  35. fit_beamSignal_b0_ic1[iii] = new TF1(fitname,"pol1",10,150);
  36. prof_beamSignal_b0_ic1[iii]->Fit(fit_beamSignal_b0_ic1[iii],"R");
  37. ///b1
  38. sprintf(histname,"th2_beamSignal_b1_ic1_%d",iii);
  39. sprintf(fitname,"fit_beamSignal_b1_ic1_%d",iii);
  40. th2_beamSignal_b1_ic1[iii] = new TH2D(histname,histname,100,0,500,100,0,50000);
  41. tree->Project(histname,"beamSignal_b1:ic1_avg",Form("energy_index==%i",1+iii*10),"coloz");
  42. prof_beamSignal_b1_ic1[iii] = th2_beamSignal_b1_ic1[iii]->ProfileX();
  43. fit_beamSignal_b1_ic1[iii] = new TF1(fitname,"pol1",10,150);
  44. prof_beamSignal_b1_ic1[iii]->Fit(fit_beamSignal_b1_ic1[iii],"R");
  45. ///b2
  46. sprintf(histname,"th2_beamSignal_b2_ic1_%d",iii);
  47. sprintf(fitname,"fit_beamSignal_b2_ic1_%d",iii);
  48. th2_beamSignal_b2_ic1[iii] = new TH2D(histname,histname,100,0,500,100,0,50000);
  49. tree->Project(histname,"beamSignal_b2:ic1_avg",Form("energy_index==%i",1+iii*10),"coloz");
  50. prof_beamSignal_b2_ic1[iii] = th2_beamSignal_b2_ic1[iii]->ProfileX();
  51. fit_beamSignal_b2_ic1[iii] = new TF1(fitname,"pol1",10,150);
  52. prof_beamSignal_b2_ic1[iii]->Fit(fit_beamSignal_b2_ic1[iii],"R");
  53. ///b3
  54. sprintf(histname,"th2_beamSignal_b3_ic1_%d",iii);
  55. sprintf(fitname,"fit_beamSignal_b3_ic1_%d",iii);
  56. th2_beamSignal_b3_ic1[iii] = new TH2D(histname,histname,100,0,500,100,0,50000);
  57. tree->Project(histname,"beamSignal_b3:ic1_avg",Form("energy_index==%i",1+iii*10),"coloz");
  58. prof_beamSignal_b3_ic1[iii] = th2_beamSignal_b3_ic1[iii]->ProfileX();
  59. fit_beamSignal_b3_ic1[iii] = new TF1(fitname,"pol1",10,150);
  60. prof_beamSignal_b3_ic1[iii]->Fit(fit_beamSignal_b3_ic1[iii],"R");
  61. 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;
  62. }
  63. newrootFile->Write();
  64. newrootFile->Close();
  65. outfile.close();
  66. rootFile->Close();
  67. }