2. Histogrammin piirto#
Tässä harjoituksessa opetellaan piirtämään invariantin massan histogrammi Pythonilla. Käytetään datana CMS-kokeen vuonna 2011 keräämää dataa kahden protonin törmäyksistä [1]. Tässä harjoituksessa käytettävään CSV-tiedostoon on karsittu edellä mainitusta datasta kiinnostavia tapahtumia, joissa hiukkasilmaisin on havainnut kaksi myonia, joiden invariantti massa on välillä 8–12 GeV [2].
1) Tilanteen alustus#
Aloitetaan tuomalla tarvittavat moduulit ja lukemalla datatiedosto.
Tuo moduulit pandas, numpy ja matplotlib.pyplot import -komennolla
Käytä moduuleissa lyhenteitä pd, np ja plt, jotta moduulin koko nimeä ei tarvitse kirjoittaa aina uudelleen.
$\color{purple}{\text{Kirjoita koodi alle.}}$
# Tuo tarvittavat moduulit import-komennolla
Lue datatiedosto pandas-moduulin read_csv -metodilla ja tallenna tiedot muuttujaan datasetti.
Datatiedoston polku on ‘https://raw.githubusercontent.com/cms-opendata-education/cms-jupyter-materials-finnish/master/Data/Ymumu_Run2011A.csv’
$\color{purple}{\text{Kirjoita koodi alle.}}$
# Lue datatiedosto ja tallenna data muuttujaan 'datasetti'.
Mitä tallennettu tiedosto sisältää? Tarkista tulostamalla ainakin viisi ensimmäistä riviä.
$\color{purple}{\text{Kirjoita koodi alle.}}$
# Tulosta tiedoston viisi ensimmäistä riviä (vinkki: käytä head() -metodia)
Huomaamme, että tässä datatiedostossa on laskettu invariantti massa jo valmiiksi, joten käytetään valmiiksi laskettua massan arvoa.
Tallenna datasetistä sarake, joka sisältää invariantin massan muuttujaan invariantti_massa.
Vinkki: Harjoituksessa 1 valittiin datasetistä sarakkeita, kuten eta1 tai psi2. Voit tallentaa invariantin massan sarakkeen samaan tapaan.
$\color{purple}{\text{Kirjoita koodi alle.}}$
# Tallenna invariantti massa muuttujaan invariantti_massa
Selvitä len() -funktion avulla, kuinka monta invariantin massan arvoa muuttujaan invariantti_massa on tallennettu.
len() -funktiossa sulkeiden sisään laitetaan lista, tässä tapauksessa muuttujamme invariantti_massa ja funktio laskee, kuinka monta arvoa listassa on.
$\color{purple}{\text{Kirjoita koodi alle.}}$
# Selvitä len() -funktion avulla, kuinka monta invariantin massan arvoa data sisältää.
2) Histogrammin piirtäminen#
Piirretään seuraavaksi histogrammi invariantin massan arvoista. Histogrammin piirtoon hyödynnämme aiemmin tuomaamme matplotlib.pyplot-moduulia. Histogrammi on pylväskaavio, joka tässä tapauksessa kuvaa sitä, kuinka monta törmäystapahtumaa on osunut kunkin invariantin massan arvon kohdalle.
$\color{purple}{\text{Piirrä histogrammi käyttäen seuraavia komentoja:}}$
plt.hist(muuttuja, bins=pylväiden lukumäärä), korvaa funktiossa muuttuja invariantilla massalla ja pylväiden lukumäärä haluamallasi lukumäärällä. Kokeile, miltä histogrammi näyttää eri pylväiden lukumäärillä, esim 50 tai 500.
plt.title(), histogrammin otsikko lainausmerkeissä
plt.xlabel() ja plt.ylabel(), x- ja y-akseleiden otsikot lainausmerkeissä
plt.show(), lisää tämä komento loppuun, jotta histogrammi näkyy näytöllä
# Piirrä histogrammi
Mitä invariantin massan histogrammi kertoo?
Mitä tapahtuu noin 9.5 GeV kohdalla?
Lähteet#
[1] CMS collaboration (2016). DoubleMu primary dataset in AOD format from RunA of 2011 (/DoubleMu/Run2011A-12Oct2013-v1/AOD). CERN Open Data Portal. DOI: 10.7483/OPENDATA.CMS.RZ34.QR6N.
[2] Thomas McCauley (2016). Ymumu. Jupyter Notebook file. Url: https://github.com/tpmccauley/cmsopendata-jupyter/blob/hst-0.1/Ymumu.ipynb.
Kuvat#
[Kuva 1] Domenico Salvagnin, Url: https://commons.wikimedia.org/wiki/File:CMS@CERN.jpg