• Nenhum resultado encontrado

A Ajustement de données - LPNHE

N/A
N/A
Protected

Academic year: 2023

Share "A Ajustement de données - LPNHE"

Copied!
4
0
0

Texto

(1)

Mention Physique - L2 - Ann´ ee 2011-2012 Licence de Sciences et Technologies LP223 : Analyse de Donn´ ees et Simulation

Travaux Dirig´es : ROOT ( N2)

A Ajustement de donn´ ees

A1 Repr´ esentation des donn´ ees par un graphe

Pour cr´eer un graphe, on d´efinit tout d’abord 2 vecteurs, un vecteur nomm´e ici x, contenant les abscisses et autre vecteur nomm´e ici y, contenant les ordonn´ees des couples de valeur (xi, yi) que l’on veut tracer. Ensuite on cr´ee le graphe dans ROOT qui utilise ces vecteurs comme suit (dans l’exemple ci-dessous la dimenssion des vecteurs est 5) :

root[ ]Doubletx[5] ={0.,0.5,1.,1.5,2.} ; root[ ]Doublety[5] ={492.,189.,61.,29.,9.} ; root[ ]gr1 = new TGraph(5,x,y) ;

root[ ]gr1.Draw(”AC*”) ;

Si vous voulez cr´eer un nouveau vecteur, de mˆeme nom x mais de dimension diff´erente, faite un resset de ROOT, par la commande gROOT.Reset(); (attention tous les objets que vous avez construit sont d´etruits). Le mieux en g´en´eral est de changer le nom du vecteur.

Si le graphe a des erreurs en x et y, on d´efinit en plus des vecteurs des abscisses et des ordonn´ees 2 vecteurs, chacun contenant les erreurs sur x et sur y comme suit :

root[ ]Doubletex[5] ={0.,0.1,0.1,0.1,0.1} ; root[ ]Doubletey[5] ={22.,13.,8.,5.,3.} ; root[ ]gr2 = new TGraphErrors(5,x,y,ex,ey) ; root[ ]c1.Clear() ;

root[ ]gr2.Draw(”ACP”) ;

En physique on doit dans un graphe d´efinir un titre et les grandeurs en abscisses et en ordonn´ees. Pour cela on utilise les commandes suivantes :

1

root[ ]gr2.SetTitle(” Etude de l’absorption des photons dans la matiere ”) ; root[ ]gr2.GetXaxis().SetTitle(” epaisseur de matiere (cm) ”) ;

root[ ]gr2.GetYaxis().SetTitle(” nb de photons detectes ”) ; root[ ]gr2.Draw(”ACP”) ;

Questions :

• Observez l’action de la commande suivante : root[ ] gr2.GetXaxis().CenterTitle() ; root[ ] gr2.GetYaxis().CenterTitle() ; root[ ] gr2.SetMarkerColor(kBlue) ; root[ ] gr2.SetMarkerStyle(21) ; root[ ] gr2.Draw(”AP”) ;

• Si vous ne l’avez pas d´ej`a fait, ´ecrivez, une fois pour tout, toutes ces lignes de commandes par un copi´e coll´e avec la souris dans un fichier nomm´e par exem- ple mgraph.C ( voir partie nomm´ee ”Plus d’infos”), puis `ex´ecutez ce fichier par la commande ci-dessous. L’id´ee derri`ere cela ´etant d’utiliser ce fichier `a chaque fois que vous avez un graphe `a tracer :

root[ ] .x mgraph.C ;

A2 Ajustement d’un graphe par une fonction param´ etr´ ee

Pour cela on d´efinit dans ROOT, comme on l’a d´ej`a fait ci-dessus, la fonction param´etrique `a ajuster. Ce sont ces param`etres qui pourront ˆetre ajust´es. Dans notre exemple on veut ajuster une fonction exponentielle (f(x) =p0ep1x), pour cela on utilise les commandes suivantes :

root[ ]TF1 f8(”f8”,”[0]* exp(-[1]*x)”,0,10);

root[ ]f8.SetParameters(500.,1.5) ; root[ ]f8.Draw() ;

Les valeurs donn´ees aux param`etres seront les valeurs initiales des param`etres lors de l’ajustement. Il faut essayer, autant que l’on peut, de les prendre le plus proche possible des valeurs que l’on va obtenir. Il faut toujour avoir en tˆete un ordre de grandeur des valeurs que l’on veut obtenir. On obtient cet ordre de grandeur en ´etudiant le graphe.

L’ajustement du graphe nomm´e gr2 par la fonction nomm´ee f8 se fait par la commande suivante :

root[ ]gr2.Fit(”f8”) ;

Pour obtenir, apr´es ajustement, les valeurs duχ2, des param`etres et de leurs erreurs es- soci´ees vous pouvez taper (sans mettre de point-virgule) :

root[ ]f8.GetChisquare() root[ ]f8.GetParameter(0) root[ ]f8.GetParError(0) root[ ]f8.GetParameter(1) root[ ]f8.GetParError(1)

2

(2)

On peut inserer du texte dans le graphe : root[ ]TLatex l1 ;

root[ ]l1.SetTextAlign(12);

root[ ]l1.SetTextSize(0.04);

root[ ]l1.DrawLatex(0.5,500,”N(x) =Ae{−♯mu x}

A= 492♯pm22, ♯mu= 2.0♯pm0.1cm{−1}” ) ; Questions :

• Observez l’action de la commande suivante qui fixe le param´etrep0`a la valeur 600 lors de l’ajustement :

root[ ] f8.FixParameter(0,600) ; root[ ] gr2.Fit(”f8”) ;

• Commantez l’action des commandes suivantes : root[ ] f8.FixParameter(1,2) ;

root[ ] gr2.Fit(”f8”) ;

• Commantez l’action des commandes suivantes : root[ ] f8.ReleaseParameter(1); ;

root[ ] gr2.Fit(”f8”) ;

B Cr´ eation d’un graphe et utilisation de l’´ editeur graphique

B1 Cr´ eation d’un graphe

1. Le r´esultat de la premi`ere et deuxi`eme mesure du nombre de photons d´etect´es d’´energie donn´ee traversant une certaine ´epaisseur de mati`ere est 379124 et 381104. Les erreurs respectives sur ces nombres sont respectivement 2027 et 2001.

2. Pour cr´eer dans ROOT un graphe repr´esentant le r´esultat des mesures, on utilise les comnandes suivantes :

root[ ]gre = new TGraphErrors(2); // Cr´eation d’un graphe `a 2 points nomm´e gre root[ ]gre.SetPoint(0,1,379124); // On d´efinit le point 0 : on a x=1 et y = 379124 root[ ]gre.SetPointError(0,0,2027); //Erreur sur le point 0 : on a Ex=0 et Ey = 2027 root[ ]gre.SetPoint(1,2,381104); // On d´efinit le point 1 : on a x=2 et y = 379124 root[ ]gre.SetPointError(1,0,2001); // Erreur sur le point 1 : on a Ex=0 et Ey = 2021 root[ ]gre.Draw(”ACP”); // On dessine le graphe

B2 Utilisation de l’´ editeur graphique

B2 .1 Changer les couleurs, ect ... d’un graphe

1. Placer le curseur de la souris sur un point du graphe (une petite main doit apparaitre).

2. Faire alors un clic droit et s´electionner l’option SetLineAttributes.

3

3. Changer alors, par exemple, la couleur et l’´epaisseur de la ligne joignant les points, la couleur et la forme du marqueur, ect ... (familiarisez-vous rapidement avec les options) B2 .2 Changer le titre d’un graphe

1. Placer le curseur de la souris sur un point du graphe (une petite main doit apparaitre).

2. Faire alors un clic droit et s´electionner l’option SetTitle, puis changer le titre du graphe.

B2 .3 Changer le titre en abscisse d’un graphe

1. Placer le curseur de la souris sur l’axe des abscisses (une petite main doit apparaitre).

2. Faire alors un clic droit et s´electionner l’option SetTitle, puis changer le titre en abscisse du graphe.

3. familiarisez-vous rapidement avec les autres options.

B2 .4 Changer le titre en ordonn´ees d’un graphe

1. Placer le curseur de la souris sur l’axe des ordonn´ees (une petite main doit apparaitre).

2. Faire alors un clic droit et s´electionner l’option SetTitle, puis changer le titre en ordonn´ees du graphe.

3. familiarisez-vous rapidement avec les autres options.

B3 Ajustement en utilisant de l’´ editeur graphique

1. Placer le curseur de la souris sur un point du graphe, une petite main doit apparaitre.

2. Faire alors un clique droit et selectionner l’option FitPanel.

3. Changer alors la fonction d’ajustement par d´efault (la fonction de gaus) par la fonction Pol0 (polynome de deg´ee z´ero)

4. puis cliquer sur le buton Fit

5. Placer alors le curseur de la souris la fonction que vous venez d’ajuster (une petite main doit apparaitre) et faites un clique droit sur l’option SetLineAttributes et changer par exemple la couleur de la fonction ( (familiarisez vous avec les options)

C Etude de la variation du χ

2

en fonction des param` etres ajust´ es

Apr`es un ajustement il est int´eressant de regarder la variation duχ2en fonction des param`etres ajust´es pour s’assurer de visu qu’ il n’y a pas de de comportement ´etrange duχ2vis `a vis de la variation des param`etres ( par exemple que l’on se situe bien dans le voisinage du minimum).

4

(3)

• Si l’on veut regarder la variation duχ2 en fonction du premier param`etre ajust´e, on utilise les commandes ci-dessous, o`u l’on demande au programme d’ajustement, appel´e Minuit, de faire un “scan” de la fonctionχ2en faisant varier le premier param`etre au- tour de sa valeur d’ajustement et en gardant les autres param`etres constant `a leur valeur d’ajustement. Puis on fabrique le graphe, appel´e graphe1, o`u l’on met le r´esultat du scan et on le dessine :

• Ajuster votre fonction exponentielle, pour initialiser les commandes ci-dessous.

root[ ]c1.Clear(); //r´enitialise le TCanvas appel´e par default c1 root[ ]gMinuit.Command(”SCAn 1”);

root[ ]TGraph *graphe1=(TGraph*)gMinuit.GetPlot();

root[ ]graphe1.SetMarkerStyle(20);

root[ ]graphe1.Draw(”alp”);

Pour scanner le deuxi`eme param`etre on remplace ”SCAn 1” par ”SCAn 2”.

Questions : Etudier le comportement duχ2 si vous faites varier le deuxi`eme param`etre et donner l’incertitude sur ce param´etre. Cette incertitude est-elle en accord avec le r´esultat le l’ajustement ?

• Il est aussi tr´es int´eressant de regarder la relation entre les deux param`etres ajust´es si on garde la valeur duχ2constante (courbe de niveau duχ2). On a presque une ellipse au voisinage de leur valeur d’ajustement car leχ2peut alors ˆetre approxim´e par une forme quadratique.

Si l’on veut regarder le premier param`etre en fonction du second param`etre en gardant le χ2 constant, on utilise les commandes ci-dessous, o`u l’on demande au programme d’ajustement, appel´e Minuit, de rechercher les points M de coordonn´es (param´etre 0, param´etre 1) tel queχ22min+a2(si a = 1,2,3 on a un contour `a 1,2,3 sigma d’erreur r`espectivement). Dans l’exemple, la courbe est trace avec 500 points. Puis on fabrique le graphe, appel´e gr10, o`u l’on met le r´esultat et on le dessine :

root[ ] c1.Clear();

root[ ] gMinuit.SetErrorDef(100); // dans l’exemple a=10 root[ ] TGraph *gr10 = (TGraph*) gMinuit.Contour(500,0,1);

root[ ] gr10.Draw(”alp”);

Questions :

– Tracer le graphe qui corresponds `a un contour de 1 sigma d’erreur avec 1000 points en ayant comme abscisse le param`etre 1 et donner les incer- titudes sur les param`etres. Sont-elles en accords avec celle donn´ees par le programme d’ajustement ?

– Observer les commandes suivante o`u l’on cr´e un multigraphe :

5

root[ ] c1.Clear();

root[ ] gMinuit.SetErrorDef(1);// 1 sigma contour

root[ ] TGraph *gr10 = (TGraph*) gMinuit.Contour(1000,0,1);

root[ ] gMinuit.SetErrorDef(4); // 2 sigma contour

root[ ] TGraph *gr20 = (TGraph*) gMinuit.Contour(1000,0,1);

root[ ] gMinuit.SetErrorDef(9);// 3 sigma contour

root[ ] TGraph *gr30 = (TGraph*) gMinuit.Contour(1000,0,1);

root[ ] TMultiGraph *mgr = new TMultiGraph();

root[ ] mgr.Add(gr10);

root[ ] mgr.Add(gr20);

root[ ] mgr.Add(gr30);

root[ ] mgr.Draw(”ALP”);

– Ajuster votre fonction avec fitPanel. Cliquer sur l’option Advanced, et reouver vos r´esultats en utilisant les options Contour et Scan.

note:

gaus : f(x) =p0× ∗exp −0.5 ((x−p1)/p2)2 expo : f(x) = exp (p0+p1×x)

polN :f(x) =p0+p1×x+p1×x2+· · ·+pn×xn

D Exemples de figures que vous pouvez faire avec ROOT.

ro de la mesure e num

1 1.2 1.4 1.6 1.8 2

setecte nb de photons d

377 378 379 380 381 382 383 103

×

Ajustement d’une constant C

1423

± C = 380127

e par les erreurs :C e r e Moyenne pond

tre C e param

378.5 379379.5 380380.5 381 381.5 103

× (C)2χ

0.4 0.6 0.8 1 1.2 1.4 1.6

2(C) χ tre C : e Variation du khi deux en fonction du param

6

(4)

e (cm ) e paisseur de plomb travers e

0 0.5 1 1.5 2 2.5

setectenb de photons d

100 150 200 250 300 350 400

103

×

Absorption des photons de 1275 KeV dans du plomb

µ x

N(x) = A e- 0,009 cm-1

± = 0,577 µ

3, 2) 10

± A = (381

tre A e param 379 379.5 380 380.5 381 381.5 382 382.5 383

103

× (A)2χ

7.4 7.6 7.8 8 8.2 8.4 8.6

2(A) χ tre A : e Variation du khi deux en fonction du param

µ tre e param 0.5660.5680.57 0.5720.5740.5760.5780.58 0.5820.5840.5860.588 )µ(2χ

7.4 7.6 7.8 8 8.2 8.4 8.6

µ) 2( χ µ : tre e Variation du khi deux en fonction du param

tre A e param

376 378 380 382 384 386

103

×

µtre e param

0.55 0.56 0.57 0.58 0.59 0.6

, {n=1,2,3}

+ n2 min χ2 ,A) = µ 2( χ σ : n a Courbe de niveau du khi deux

7

Referências

Documentos relacionados

pei-"tt.rt de fairË une petite obr..urrio, fài*i"a*, les cÿd de terrestris sont sombres sans aucun poil clair sur la face ni sur le vert"*, ,rrm poil, launes au scuællgm; les d d de