void CalibrazionePotenziometro() { // carica la libreria gSystem->Load("LibEsp3_C.so"); // legge i dati e crea il grafico con errori TGraphErrors *g=LoadGraphErrors("CalibPotR6.dat"); // apre la finestra grafica TCanvas *c1 = new TCanvas("c1"); // setta alcuni attributi del grafico g->SetName("cp"); g->SetTitle("Potenziometro R6"); g->SetMarkerStyle(20); g->SetMarkerColor(4); g->SetLineColor(2); // disegna il grafico g->Draw("ap"); // scrive le label g->GetXaxis()->SetTitle("Posizione"); g->GetXaxis()->CenterTitle(); g->GetYaxis()->SetTitle("Resistenza [#Omega]"); g->GetYaxis()->CenterTitle(); // esegue il fit lineare non pesato // l'1 indica che gli errori delle R vengono settati al // valore della sigma_y comune del fit TF1 *f=LinFit(g,1); // disegna la funzione sopra il grafico f->Draw("same"); // salva il contenuto della finestra grafica in formato gif // e in formato root (che puo' essere modificato in seguito) c1->Modified(); c1->Update(); c1->Print("CalibPotR6.gif"); c1->Print("CalibPotR6.root"); // crea il grafico dei residui TGraphErrors *r=GetResidues(g,f); TCanvas *c2=new TCanvas("c2"); // setta alcuni attributi del grafico r->SetName("cp_res"); r->SetTitle("Potenziometro R6"); r->SetMarkerStyle(20); r->SetMarkerColor(4); r->SetLineColor(2); // disegna il grafico r->Draw("ap"); // scrive le label r->GetXaxis()->SetTitle("Posizione"); r->GetXaxis()->CenterTitle(); r->GetYaxis()->SetTitle("Residui [#Omega]"); r->GetYaxis()->CenterTitle(); // salva il contenuto della finestra grafica c2->Modified(); c2->Update(); c2->Print("CalibPotR6_res.gif"); c2->Print("CalibPotR6_res.root"); // calcola qualche valore estrapolato printf("\nQualche valore estrapolato (fit non pesato): \n"); Extrapolate(-500,g,f); Extrapolate(500,g,f); Extrapolate(1500,g,f); }