Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:15:11

0001 ////////////////////////////////////
0002 // Fillcalhist.C                    //
0003 ////////////////////////////////////
0004 
0005 //  This makes a histogram that can show the raw hits.
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       //CalHistX->SetBinContent(i+1,Tree->theZigzags[i]->XCenter());
0079       //CalHistY->SetBinContent(i+1,Tree->theZigzags[i]->YCenter());
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 }