| 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 | } | 
|---|