File indexing completed on 2025-08-05 08:15:11
0001
0002
0003
0004
0005
0006
0007 #include "FillCalHist.h"
0008 #include "TH1D.h"
0009 #include "TH2D.h"
0010 #include "TH3D.h"
0011 #include "TF1.h"
0012 #include "AZigzag.h"
0013
0014 #include "groot.h"
0015
0016 #include <iostream>
0017 #include <cmath>
0018
0019 TH2D* CalHist=0;
0020 TH1D* CalDist[Nsrs];
0021
0022 TH1D* CalHistQ=0;
0023 TH1D* CalHistT=0;
0024 TH1D* CalHistX=0;
0025 TH1D* CalHistY=0;
0026
0027 TH1D* CalibratedMeans=0;
0028 TH1D* CalibratedSigmas=0;
0029
0030 using namespace std;
0031
0032 void FillCalHist()
0033 {
0034
0035 int nTime = AZigzag::Raw[0].size();
0036 double left = -0.5;
0037 double right = (double)nTime - 0.5;
0038
0039 if (!CalHist)
0040 {
0041 CalHist = new TH2D("CalHist", "CalHist", Nsrs, -0.5, (float)Nsrs-0.5, nTime, left, right);
0042
0043 CalHistQ = new TH1D("CalHistQ", "CalHistQ", Nsrs, -0.5, (float)Nsrs-0.5);
0044 CalHistT = new TH1D("CalHistT", "CalHistT", Nsrs, -0.5, (float)Nsrs-0.5);
0045
0046 CalHistX = new TH1D("CalHistX", "CalHistX", Nsrs, -0.5, (float)Nsrs-0.5);
0047 CalHistY = new TH1D("CalHistY", "CalHistY", Nsrs, -0.5, (float)Nsrs-0.5);
0048
0049 char name[500];
0050 for (int i=0; i<Nsrs; i++)
0051 {
0052 sprintf(name,"CalDist%04d",i);
0053 CalDist[i] = new TH1D(name, name, 101, -50.5, 50.5);
0054
0055 }
0056
0057 }
0058
0059 CalHist->Reset();
0060 CalHistQ->Reset();
0061 CalHistT->Reset();
0062 CalHistX->Reset();
0063 CalHistY->Reset();
0064
0065 groot* Tree=groot::instance();
0066 for (int i=0; i<Nsrs; i++)
0067 {
0068 for (int j=0; j<AZigzag::Cal[i].size(); j++)
0069 {
0070 CalHist->SetBinContent(i+1,j+1,AZigzag::Cal[i][j]);
0071 CalDist[i]->Fill(AZigzag::Cal[i][j]);
0072 }
0073 if (Tree->theZigzags[i])
0074 {
0075 int ID = Tree->theZigzags[i]->MyID();
0076 CalHistQ->SetBinContent(i+1,Tree->theZigzags[i]->Q());
0077 CalHistT->SetBinContent(i+1,Tree->theZigzags[i]->T());
0078
0079
0080 }
0081 }
0082 }
0083
0084
0085 void FitCalHist()
0086 {
0087 if (!CalibratedMeans)
0088 {
0089 CalibratedMeans = new TH1D("CalibratedMeans", "CalibratedMeans", Nsrs, -0.5, Nsrs-0.5);
0090 CalibratedSigmas = new TH1D("CalibratedSigmas", "CalibratedSigmas", Nsrs, -0.5, Nsrs-0.5);
0091 }
0092
0093 CalibratedMeans->Reset();
0094 CalibratedSigmas->Reset();
0095
0096 for (int i=0; i<Nsrs; i++)
0097 {
0098 CalDist[i]->Fit("gaus","Q");
0099 CalibratedMeans->SetBinContent(i, CalDist[i]->GetFunction("gaus")->GetParameter(1));
0100 CalibratedSigmas->SetBinContent(i, CalDist[i]->GetFunction("gaus")->GetParameter(2));
0101 }
0102
0103 }