From ebd753f4623920575cbc16b7699e68d0ec4b1363 Mon Sep 17 00:00:00 2001 From: Dennis Doering Date: Thu, 19 Sep 2013 16:34:01 +0200 Subject: [PATCH] Noise problem identified with source --- newCOMBI/ChargeSpektrum.c | 73 +++++++++++++++++++++++++++++++++++++-- newCOMBI/MAPS.C | 1 + newCOMBI/run.C | 4 +-- 3 files changed, 73 insertions(+), 5 deletions(-) diff --git a/newCOMBI/ChargeSpektrum.c b/newCOMBI/ChargeSpektrum.c index 88c8f52..fbfc45e 100755 --- a/newCOMBI/ChargeSpektrum.c +++ b/newCOMBI/ChargeSpektrum.c @@ -57,10 +57,18 @@ struct histogram Float_t posVeto; struct laborbook laborbookdata; }; +struct noise +{ + TH1F* noiseHisto; + Int_t inputRun; + Double_t quantiles; + struct laborbook laborbookdata; +}; struct histogram GenerateHisto(Int_t inputRun); Float_t FitPerform(TH1F*, Int_t); struct laborbook LaborBuch(Int_t inputRun); Int_t* ReadRunList(Int_t* numberRuns); +struct noise Noise(Int_t inputRun); void ChargeSpektrum() { @@ -68,10 +76,13 @@ void ChargeSpektrum() ReadRunList(&numberRuns); Int_t* runList=new Int_t[numberRuns]; runList=ReadRunList(&numberRuns); - + + struct histogram* arrayHisto = new struct histogram[numberRuns]; + struct noise* noiseHisto = new struct noise[numberRuns]; for(Int_t lauf=0;laufIsZombie()) + { + // if we cannot open the file, print an error messageForm("hist%i",nHistNtuple) and return immediatly + printf("Error: cannot open %s\n", path.Data()); + exit(0); + } + // get a pointer to the tree + TNtuple* noiseNtuple = (TNtuple*) f->Get("noise"); + + Float_t noise; + TBranch* noiseBranch; + noiseNtuple->SetBranchAddress("noise", &noise, &noiseBranch); + // create histogram + TH1F* histNoise = new TH1F(Form("Noise%i",inputRun), "Noise title", 100, 0, 10); + + Int_t nentries_N = noiseNtuple->GetEntries(); + for (Int_t cnt=0; cntGetEntry(cnt); + histNoise->Fill(noise); + } + + // get median and error estimation + Double_t const probabilities[] = {0.3415/2, 0.5, 1-0.3415/2}; // sigma/2 from gaus to the left and to the right //{0.17, 0.5, 1-0.17}; + Double_t quantiles[3]; + histNoise->GetQuantiles( 3, quantiles, probabilities); + // noiseLowest17percent.push_back((Float_t) quantiles[0]); // left error bar (lowest 17% noise values are below this quantile) + // noiseMedian.push_back((Float_t) quantiles[1]); // median of the noise distribution + // noiseHighest17percent.push_back((Float_t) quantiles[2]); // right error bar (highest 17% noise values are higher than this quantile) + cout << "q1: " << quantiles[1] - quantiles[0] << "\tq2: " << quantiles[1] << "\tq3: " << quantiles[2] - quantiles[1] << endl; + + + TCanvas* cNoise = new TCanvas(); + cNoise->SetTitle(Form("Noise%i",inputRun)); + histNoise->Draw(); + TString legendEntry = TString(Form("Run %i: %.3f %.3f %.3f",inputRun,quantiles[1],quantiles[1] - quantiles[0],quantiles[2] - quantiles[1] )); + TLegend* leg = new TLegend(0.5,0.5,0.89,0.89);//(0.6,0.7,0.89,0.89); + leg->SetFillStyle(0); + leg->AddEntry((TObject*) 0, legendEntry, ""); + leg->SetTextSize(0.03); + leg->Draw(); + struct noise noiseHisto; + noiseHisto.noiseHisto=(TH1F*)histNoise->Clone(Form("NoiseX%i",inputRun)); + noiseHisto.inputRun=inputRun; + noiseHisto.quantiles=quantiles[1]; + noiseHisto.laborbookdata=laborbookdata; + //------------------------------------------------- +return noiseHisto; +} struct laborbook LaborBuch(Int_t inputRun) { std::string system; diff --git a/newCOMBI/MAPS.C b/newCOMBI/MAPS.C index 1ce08b2..396d296 100755 --- a/newCOMBI/MAPS.C +++ b/newCOMBI/MAPS.C @@ -554,6 +554,7 @@ bool MAPS::getNoise(Int_t Start, Int_t Frames) { for(Int_t j=0; j5*PEDESTAL) continue; //throw all frames with a signal >5pedestal away, because of postulated signal charge NOISE+=TMath::Power(ARR[j*fPixels+i]-PEDESTAL,2); } diff --git a/newCOMBI/run.C b/newCOMBI/run.C index 3063ddc..7484688 100755 --- a/newCOMBI/run.C +++ b/newCOMBI/run.C @@ -19,7 +19,7 @@ void run() //------------------------------------------------------- TString path = "/jspc12_F/Mi32/"; TString outpath = "/d/salt/data_recovered/maps/DennisDoering/root/Analysedata/"; - Int_t runStart = 341252; + Int_t runStart = 34009; Int_t rows = 8; Int_t columns = 64; TString system = "USB"; @@ -35,7 +35,7 @@ void run() ULong_t progress_tmp=-1; Float_t progress; //------------------------------------------------------- -for(Int_t runLauf=0;runLauf<9;runLauf++) +for(Int_t runLauf=0;runLauf<3;runLauf++) { Int_t runnumber = runStart+runLauf; if(loadNoise) -- 2.43.0