#include #include // ci serve per istanziare grafici #include // ci serve per manipolare gli assi dei grafici #include // ci serve per disegnare i grafici #include // ci serve per scrivere le funzioni con cui fittare i grafici #include // ci serve per manipolare l'output a video using namespace std; void costante() { // --------------------------- DATI ------------------------------- // // intersezione // float V[]= {1.24498,1.05685,0.817984, 0.523794,0.4622417,0.408752, 0.335608}; float ErrV[]={0.006245,0.006056,0.002731,0.00284,0.00161527,0.00229046,0.0019144}; float lambda[]={426,468,526,560,594,607,641}; float ErrLambda[]={8,8,8,8,8,8,8}; // fit float V2[]= {1.952,2.051,1.555,1.012,1.303,1.105,1.15}; float ErrV2[]={0.05,0.05,0.05,0.05,0.05,0.05,0.05}; float freq[7]; float Errfreq[7]; float Errfreq2[7]; float ErrV3[7]; for(int i=0;i<7;i++) { freq[i]=299792458*pow(10,9)/lambda[i]; Errfreq[i]=299792458*pow(10,9)*ErrLambda[i]/pow(lambda[i],2); Errfreq2[i]=0; ErrV3[i]=0; } // ---------------------- Quantità derivate ----------------------- // // --------------------- Grafico costante V[v]------------------------------ // TCanvas *cGf = new TCanvas("cGf","metodo intersezione",200,10,600,400); cGf->SetFillColor(0); cGf->cd(); gGf = new TGraphAsymmErrors(n,freq,V,Errfreq,Errfreq2,ErrV,ErrV3); gGf->SetMarkerSize(0.6); gGf->SetMarkerStyle(21); gGf->SetTitle("V[freq] intersezione"); gGf->GetXaxis()->SetTitle("freq[s^-1]"); gGf->GetYaxis()->SetTitle("n"); gGf->Draw("AP"); // ----------------------------------------------------------------- // // --------------------- Grafico costante V[v]------------------------------ // TCanvas *cn2 = new TCanvas("cn2","metodo retta",200,10,600,400); cn2->SetFillColor(0); cn2->cd(); TGraphErrors *gn2 = new TGraphErrors(7,freq,V2,Errfreq,ErrV2); gn2->SetMarkerSize(0.6); gn2->SetMarkerStyle(21); gn2->SetTitle("V[freq] retta"); gn2->GetXaxis()->SetTitle("freq[s^-1]"); gn2->GetYaxis()->SetTitle("Vc"); gn2->Draw("AP"); // ----------------------------------------------------------------- // // Ipotesi di relazione tra V e i TF1 *iperbole = new TF1("n","(x+[1])*[0]"); iperbole->SetParameter(0,4.14*pow(10,-15)); iperbole->SetParameter(1,-400*pow(10,12)); gGf->Fit(iperbole,"M+"); cout << "Chi^2 intersezione:" << iperbole->GetChisquare() << ", number of DoF: " << iperbole->GetNDF() << " (Probability: " << iperbole->GetProb() << ")." << endl; cout << "--------------------------------------------------------------------------------------------------------" << endl; // Ipotesi di relazione tra V e i TF1 *iperbole2 = new TF1("n","(x+[1])*[0]"); iperbole2->SetParameter(0,4.14*pow(10,-15)); iperbole2->SetParameter(1,-400*pow(10,12)); gn2->Fit(iperbole2,"M+"); cout << "Chi^2 del mercurio singolo:" << iperbole2->GetChisquare() << ", number of DoF: " << iperbole2->GetNDF() << " (Probability: " << iperbole2->GetProb() << ")." << endl; cout << "--------------------------------------------------------------------------------------------------------" << endl; }