Root programma

di il
3 risposte

Root programma

Aiuto! devo fare un programma con root ma non so da dove iniziare.. ho provato a fare come mi avete suggerito ma sono ferma alle funzioni e non so manco che cavolo è sta roba... giuro sono disposta a pagare.. il prof corre e io sono troppo lenta

?? = 2p (rad l/ g)

in cui T è il periodo del pendolo ed l è la sua lunghezza. Si hanno a disposizione delle
misure di T al variare di l, contenute nel file misure.dat, in cui ogni riga descrive una misura,
composta dai quattro quantità ordinate nel modo seguente (l e sl
in metri, T e sT in secondi):
l T sl sT
Si dispone inoltre del file misure_linearizzate.dat, contenente le quantità corrispondenti alla
relazione “linearizzata”
??^ 2 =4p^2 l/g
Ogni riga del file misure_linearizzate.dat ha il formato
l T^2 sl sT^2

Ripetere i seguenti punti utilizzando una macro di ROOT
? Fare un grafico dei dati contenuti nel file misure_linearizzate.dat
? Eseguire un fit lineare dei dati usando la relazione 2 (linearizzata)
? Confrontare i valori (e le incertezze) ottenuti dai metodi numerici di fit di
ROOT con quelli ottenuti col metodo analitico

io ho scritto questo... dei pezzi di codice:


#include <iostream>
#include <fstream>
#include <cmath>

using namespace std;

int main () 
{
   double l, T, dl, dt;
   
   ifstream file("misure_linearizzate.dat");
   TGraphErrors gr;

   while(file >> l >> T*T >> dl >> dt*dt) {
      double T2 = T*T;
      

      gr.SetPoint(gr.GetN(), l, T2);
      
   }

   
   TF1 f("f", "[0] + [1]*x", 0, 0.5);
   f.SetLineColor(kBlue);
   f.SetParameter(0, 0);
   f.SetParameter(1, 2*3.14*(sqrt(l/9.8));

   gr.Draw("ap");
   gr.Fit("f");
}

3 Risposte

  • Re: Root programma

    Ciao, per quanto riguarda la parte ROOT, che io ricordi mancano almeno un altro paio di ingredienti: una TCanvas (essenzialmente un oggetto che corrisponde a una finestra in cui disegnare plots) e una TApplication (che essenzialmente fa partire l'event loop della UI per mostrare i plots e interagire su di essi).

    Vedi qua http://labmaster.mi.infn.it/Laboratorio2/labTNDS/lectures_1819/lezione3_1819.html

    Un paio di curiosità:
    1) studi Fisica in Università? (è una quasi domanda retorica, perché ROOT è usato quasi sempre in quell'ambito)
    2) studi a Milano Università degli Studi (perché su quel testo ho vaghi ricordi, non mi è per nulla nuovo ...)
    In particolare ti suggerirei, durante le lezioni di laboratorio, di approfittare di professore e assistenti.

    Per il resto del codice: prova a risolvere, un passo alla volta, i requisiti:
    1) la lettura del file, su due piedi, potrebbe andare bene. Perché non utilizzi l'incertezza sulle misure? Qual è il significato del primo argomento in TGraphErrors::SetPoint? Guarda qui https://root.cern.ch/doc/master/classTGraphErrors.htm
    2) implementa la tua funzione che esegua il fit lineare delle coppie (il punto 2)
  • Re: Root programma

    Vedendo i costruttori di TGraphError , ce n'è uno che prende direttamente il nome del file in input, quindi non c'è bisogno di leggere il file da stream. Purtroppo la versione Windows è in preview e da un sacco di problemi, quindi non posso provarlo.
  • Re: Root programma

    Corretto, ma purtroppo non può fare a meno di leggere via stream in quanto la richiesta dell'esercizio è di eseguire il fit con il metodo analitico (che immagino significhi di scrivere una funzione che implementi il calcolo dei coefficienti del fit lineare). Ok, si potrebbe forse usare qualche getter dell'oggetto TGraph per recuperare le coppie inserite, ma dato che l'esercizio è didattico e la semplicità dell'operazione secondo me è meglio usare lo stream
Devi accedere o registrarti per scrivere nel forum
3 risposte