1 | #include <cstdio>
|
---|
2 | int FPedestal(char *title_base, fits &datafile, vector<int16_t> &data, vector<int16_t> &data_offset, vector<float> &drs_basemean, vector<float> &drs_gainmean, vector<float> &drs_triggeroffsetmean, UInt_t data_roi, size_t pixelnr, float &pedestal_mean, float &pedestal_rms)
|
---|
3 | {
|
---|
4 | // TCanvas *canv_base = new TCanvas( "canv_base", "Determine the baseline", 100, 520, 700, 500 );
|
---|
5 | TH1F *baseline = new TH1F("baseline", title_base, 1000,-10,40);
|
---|
6 | // canv_base->SetLogy();
|
---|
7 | baseline->GetXaxis()->SetTitle("Sample value (mV)");
|
---|
8 | baseline->GetYaxis()->SetTitle("Entries");
|
---|
9 |
|
---|
10 | //-------------------------------------------
|
---|
11 | //Find the baseline
|
---|
12 | //-------------------------------------------
|
---|
13 | for (size_t i=0; i<datafile.GetNumRows(); i++)
|
---|
14 | {
|
---|
15 | datafile.GetRow(i);
|
---|
16 |
|
---|
17 | //Iterate over the slices
|
---|
18 | for (UInt_t k=0; k<data_roi; k++)
|
---|
19 | {
|
---|
20 | UInt_t drs_calib_offset = (k+data_offset[pixelnr])%data_roi;
|
---|
21 | float sample = (data[pixelnr*data_roi+k]*2000/4096.-drs_basemean[pixelnr*data_roi+drs_calib_offset]-drs_triggeroffsetmean[pixelnr*data_roi+k])/drs_gainmean[pixelnr*data_roi+drs_calib_offset]*1907.35;
|
---|
22 | baseline->Fill(sample);
|
---|
23 | }
|
---|
24 | }
|
---|
25 | pedestal_mean = baseline->GetXaxis()->GetBinCenter(baseline->GetMaximumBin());
|
---|
26 | pedestal_rms = baseline->GetRMS();
|
---|
27 | std::cout << "Value of maximal probability: " << pedestal_mean << " +- " << pedestal_rms << std::endl;
|
---|
28 |
|
---|
29 | // canv_base->cd();
|
---|
30 | // baseline->Draw();
|
---|
31 | // canv_base->Modified();
|
---|
32 | // canv_base->Update();
|
---|
33 |
|
---|
34 | return 0;
|
---|
35 | }
|
---|