#include #include #include #include #include "TGraphErrors.h" void adcVout(){ //Define parameters common to all analysis configurations const Int_t points = 6; gStyle->SetPalette(1); gStyle->SetPadGridX(kTRUE); gStyle->SetPadGridY(kTRUE); TGaxis::SetMaxDigits(4); gStyle->SetOptStat(kFALSE); ifstream infile("summary.txt"); char header[256]; for(int h = 0; h<11; h++) { //read the header info infile >> header; } Double_t Run[points], HV[points], PreAmp[points], Navg[points], PedAve[points], PedRMS[points], nonLin[points], nonLinpV[points], Error[points], Chi2p6df[points], I_out[points]; Double_t RelativeWidth[points], myHV[points], nonLin_positive[points], Chi2[points], erX[points], erY[points], myPreAmp[points], myNavg[points], Vout[points], nonLinpV_positive[points], my_Iout[points]; const int ndf = 6; Double_t Vperch = 76.29E-6; //Volts per channel for(int i=0;i> Run[i] >> HV[i] >> PreAmp[i] >> Navg[i] >> PedAve[i] >> PedRMS[i] >> nonLin[i] >> Error[i] >> nonLinpV[i] >> Chi2p6df[i] >> I_out[i]; RelativeWidth[i] = PedRMS[i]/PedAve[i]; myHV[i] = HV[i]; nonLin_positive[i] = nonLin[i]; nonLinpV_positive[i] = nonLinpV[i]; Chi2[i] = Chi2p6df[i]/ndf; myPreAmp[i] = PreAmp[i]; erX[i] = 0.0; erY[i] = Error[i]; myNavg[i] = Navg[i]; Vout[i] = Navg[i]*Vperch; my_Iout[i] = I_out[i]; cout << Run[i]<<" "<SetTitle("non-linearity vs HV for ZK5370 @ 10nALL; HV (V); nonLinearity (%)"); TExec *ex = new TExec("ex","HVoltage();"); gr->GetListOfFunctions()->Add(ex); gr->Draw("AP"); gr->GetXaxis()->CenterTitle(); gr->GetYaxis()->CenterTitle(); TF1 *f1 = new TF1("f1","pol1",-730,-510); f1->SetLineWidth(2); f1->SetLineColor(46); gr->Fit("f1","R"); gPad->Modified(); TString leg[points]; leg[0]=Form("Vadc=%1.2fV, 0.1M#Omega(SNS)",Vout[0]); leg[1]=Form("Vadc=%1.2fV, 0.21M#Omega(SNS)",Vout[1]); leg[2]=Form("Vadc=%1.2fV, 0.21M#Omega(SNS)",Vout[2]); leg[3]=Form("Vadc=%1.2fV, 0.3M#Omega(KDPA)",Vout[3]); leg[4]=Form("Vadc=%1.2fV, 0.5M#Omega(MAIN)",Vout[4]); leg[5]=Form("Vadc=%1.2fV, 0.5M#Omega(MAIN)",Vout[5]); TPaveText *pt=new TPaveText(-565,0.7,-512,1.19); pt->SetBorderSize(1); pt->SetFillColor(0); pt->AddText(leg[0]); ((TText*)pt->GetListOfLines()->Last())->SetTextColor(1); pt->AddText(leg[1]); ((TText*)pt->GetListOfLines()->Last())->SetTextColor(2); pt->AddText(leg[2]); ((TText*)pt->GetListOfLines()->Last())->SetTextColor(3); pt->AddText(leg[3]); ((TText*)pt->GetListOfLines()->Last())->SetTextColor(4); pt->AddText(leg[4]); ((TText*)pt->GetListOfLines()->Last())->SetTextColor(5); pt->AddText(leg[5]); ((TText*)pt->GetListOfLines()->Last())->SetTextColor(6); pt->Draw(); c->SaveAs("nonLinearity_vs_HV.png"); TCanvas *c1 = new TCanvas("c1","non-Linearity vs HV",0,0,700,500); TGraphErrors *gr1 = new TGraphErrors(points,my_Iout, nonLin_positive, erX, erY); gr1->SetTitle(Form("non-linearity vs I_{out} for ZK5370 @ 10nALL; I_{out} (#muA); nonLinearity(%%)")); TExec *ex1 = new TExec("ex1","HVoltage();"); gr1->GetListOfFunctions()->Add(ex1); gr1->Draw("AP"); gr1->GetXaxis()->CenterTitle(); gr1->GetYaxis()->CenterTitle(); TF1 *f2 = new TF1("f2","pol1",9,50); f2->SetLineWidth(2); f2->SetLineColor(46); gr1->Fit("f2","R"); gPad->Modified(); TPaveText *pt1=new TPaveText(12.8,0.67,25,1.19); pt1->SetBorderSize(1); pt1->SetFillColor(0); pt1->AddText(leg[0]); ((TText*)pt1->GetListOfLines()->Last())->SetTextColor(1); pt1->AddText(leg[1]); ((TText*)pt1->GetListOfLines()->Last())->SetTextColor(2); pt1->AddText(leg[2]); ((TText*)pt1->GetListOfLines()->Last())->SetTextColor(3); pt1->AddText(leg[3]); ((TText*)pt1->GetListOfLines()->Last())->SetTextColor(4); pt1->AddText(leg[4]); ((TText*)pt1->GetListOfLines()->Last())->SetTextColor(5); pt1->AddText(leg[5]); ((TText*)pt1->GetListOfLines()->Last())->SetTextColor(6); pt1->Draw(); c1->SaveAs(Form("nonLinVSIout.png")); TCanvas *c2 = new TCanvas("c2","non-Linearity vs HV",0,0,700,500); TGraph *gr2 = new TGraph(points, myHV, my_Iout); gr2->SetTitle(Form("I_{out} vs HV for ZK5370 @ 10nALL; HV(V); I_{out} (#muA)")); TExec *ex2 = new TExec("ex2","HVoltage();"); gr2->GetListOfFunctions()->Add(ex2); gr2->Draw("AP"); gr2->GetXaxis()->CenterTitle(); gr2->GetYaxis()->CenterTitle(); gPad->Modified(); TPaveText *pt2=new TPaveText(-512,40,-580,54); pt2->SetBorderSize(1); pt2->SetFillColor(0); pt2->AddText(leg[0]); ((TText*)pt2->GetListOfLines()->Last())->SetTextColor(1); pt2->AddText(leg[1]); ((TText*)pt2->GetListOfLines()->Last())->SetTextColor(2); pt2->AddText(leg[2]); ((TText*)pt2->GetListOfLines()->Last())->SetTextColor(3); pt2->AddText(leg[3]); ((TText*)pt2->GetListOfLines()->Last())->SetTextColor(4); pt2->AddText(leg[4]); ((TText*)pt2->GetListOfLines()->Last())->SetTextColor(5); pt2->AddText(leg[5]); ((TText*)pt2->GetListOfLines()->Last())->SetTextColor(6); pt2->Draw(); c2->SaveAs(Form("IoutVSHV.png")); TCanvas *c3 = new TCanvas("c3","nonLinearity vs HV",0,0,700,500); gPad->SetLogy(0); gPad->SetLogx(0); TH2F *hr; hr = new TH2F("hr","",100,-720,-520,100,9,50); hr->SetTitle(Form("I_{out} vs HV for ZK5370 @ 10nALL; HV(V); I_{out} (#muA)")); hr->GetXaxis()->CenterTitle(); hr->GetYaxis()->CenterTitle(); hr->Draw(); // TF1 *f = new TF1("f","pol1",-970,-875); TF1 *ff = new TF1("ff","pol1",-680,-620); TF1 *fff = new TF1("fff","pol1",-620,-520); TGraph *gr3 = new TGraph(points, myHV, my_Iout); gr3->SetLineColor(1); gr3->SetMarkerStyle(20); gr3->SetMarkerColor(1); gr3->SetMarkerSize(0.55); gr3->Draw("P"); // f->SetLineWidth(2); // f->SetLineColor(1); // gr3->Fit("f","R"); ff->SetLineWidth(2); ff->SetLineColor(2); gr3->Fit("ff","R+"); fff->SetLineWidth(2); fff->SetLineColor(3); gr3->Fit("fff","R++"); c3->SaveAs(Form("IoutVSHV_fit.png")); } void HVoltage(){ Int_t i,points,j; Double_t x,y; TGraph *g = (TGraph*)gPad->GetListOfPrimitives()->FindObject("Graph"); points = g->GetN(); TMarker *m; for (i=0; iGetPoint(i,x,y); m = new TMarker(x,y,29); m->SetMarkerColor(i+1); m->Paint(); } }