<jupyter_start><jupyter_text>Hiukkaset hukassa      Aalto Junior x CMS open dataTervetuloa kiehtovan ja kummallisen hiukkasfysiikan pariin.  Tämä tiedosto on oppilaan versio, joka sisältää tehtäviä ja demoja CMS:n avoimen datan parissa. Vastatkaa kaikkiin $\color{blue}{\text{kysymyksiin}}$ ja pitäkää hauskaa datan kanssa!   AlustusAlla on koodisolu joka ajettaessa hakee tarvittavat python paketit. Pandas on data-analyysiä varten, numpy tieteellistä laskentaa ja matplotlib.pyplot mahdollistaa kuvaajien piirtämisen. Annetaan näille lyhyemmät nimet (pd, np ja plt), jotta myöhemmin niitä käytettäessä ei tarvitse kirjoittaa koko paketin nimeä.<jupyter_code>import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
#lataa koodin ja sitten ajaa sen:
!curl -O https://raw.githubusercontent.com/cms-opendata-education/cms-jupyter-materials-finnish/master/Data/Apufunktiot/hiukkasethukassa.ipynb
%run hiukkasethukassa.ipynb
#%run ./../../Apufunktiot/hiukkasethukassa.ipynb<jupyter_output>% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100  7616  100  7616    0     0  21698      0 --:--:-- --:--:-- --:--:-- 21698<jupyter_text>**** Hiukkasfysiikkaa - Maailmankaikkeuden pienimpiä rakennuspalikoita  - Niin pieniä, ettei niitä aina voi edes havaita suoraan - Tarvitaan uusia työkaluja ja teorioita selittämään hiukkasten maailmaa  - Korkeita energioita  - Valtavasti dataa  Ote tieteen kuvalehden artikkelista kvanttimekaniikka viidessä minuutissa :> Hiukkasten mittaamista vaikeuttaa se, että tietyt ominaisuudet muuttavat luonnettaan juuri sillä hetkellä, kun niitä aletaan mitata. Niels Bohrin mukaan tällöin ei enää voida määrittää hiukkasten paikkaa ja liikettä, koska käsitteillä ei enää ole merkitystä.Yksi esimerkki paradoksista on niin sanottu Schrödingerin kissa.[[1](tk)] Katsokaa ensimmäinen minuutti videosta. [[2](tedvideo)]<jupyter_code>from IPython.lib.display import YouTubeVideo
YouTubeVideo('UjaAxUO6-Uw', width=1000, height=600)
#https://youtu.be/UjaAxUO6-Uw<jupyter_output><empty_output><jupyter_text>>Tämä ei tunnu järkevältä, jos asiaa tarkastellaan klassisen fysiikan näkökulmasta. Niiden mukaan kissa ei voi olla yhtaikaa kuollut ja elävä – vaan ainoastaan jompaakumpaa.Suuri osa kvanttimekaniikasta on kuitenkin Schrödingerin kissa -ajatusleikin kaltaisia kahden eri tilan yhdistelmiä. [[1](tk)]  Stadardimalli    $\color{blue}{\text{Mitä tarkoittaa malli?}}$    Malli on yksinkertaistettu kuvaus todellisuudesta. Fysiikan mallit rakennetaan teorian ja kokeellisen tutkimuksen yhteistyönä. Teoreetikot rakentavat malleja joita sitten testataan kokeellisesti.              __Stadardimalli__ on matemaattinen malli joka kuvaa kaikkia tunnettuja hiukkasia sekä heikon-, vahvan- ja sähkömagneettisen vuorovaikutuksen. Standardimallissa on mukana 12 alkeishiukkasta, neljä voimaa välittävää hiukkasta sekä Higgsin hiukkanen.     Lisätietoa [1] Ote Tieteen Kuvalehden artikkelista "kvanttimekaniikka viidessä minuutissa"     Alkeishiukkaset ovat ne fysikaaliset rakennuskivet, joista kaikki universumin atomit koostuvat. Niitä on kahtatoista eri tyyppiä, mutta luonnollisissa oloissa niistä esiintyy nykyään vain neljää – elektroneja, elektronin neutriinoja, ylöskvarkkeja ja alaskvarkkeja. Muita oli luonnossa vain heti alkuräjähdyksen jälkeen, mutta sittemmin niitä on luotu uudelleen hiukkaskiihdyttimissä.**Voimia välittävät hiukkaset** pitävät rakennusosaset kasassa. Ne välittävät atomeihin neljää luonnon perusvoimaa: FotonitFotonit ovat massattomia valohiukkasia, jotka välittävät sähkömagneettista voimaa. GluonitGluonit liimaavat kvarkit yhteen alkeishiukkasissa ja välittävät vahvaa ydinvoimaa.**W**-ja **Z**-hiukkaset W- ja Z-hiukkaset eli **-bosonit** välittävät heikkoa ydinvoimaa. Ne liittyvät tietynlaisiin radioaktiivisuuden muotoihin.Gravitoni Gravitonien arvellaan välittävän painovoimaa. Hiukkasten olemassaoloa ei ole vielä onnistuttu todistamaan, mutta niitä etsitään kiivaasti CERNissä Sveitsissä.Lisäksi on olemassa **Higgsin hiukkanen**. Se löytyi 99,99 prosentin todennäköisyydellä vuonna 2012. Hiukkanen antaa atomien rakennusosasille massan. Kvarkit kiinnittyvät voimakkaammin Higgsin hiukkasiin, ja siksi ne ovat raskaampia kuin esimerkiksi elektronit.     $\color{blue}{\text{Mitä standardimalli ei selitä?}}$ • Onko löytämämme Higgsin bosoni standardimallin mukainen ja ainoa?   • Miksi maailmankaikkeudessa on enemmän materiaa kuin antimateriaa?    • Mitä on pimeä aine?  • Miten gravitaatio yhdistetään muihin (kvantti)vuorovaikutuksiin?  • Onko ”alkeishiukkasilla” sisäinen rakenne? • Onko luonnossa lisää symmetrioita? Supersymmetria? [[3](cernstandard)]        **Työ on siis vielä kesken!**    **** CERNKatsotaan lyhyt esittelyvideo CERN:stä ja CMS kokeesta.<jupyter_code>from IPython.lib.display import YouTubeVideo
YouTubeVideo('S99d9BQmGB0', width=900, height=400)<jupyter_output><empty_output><jupyter_text>LHC kiihdytin ja kaikki sen koeasemat ovat nyt (2019-2020) toisella pitkällä huoltotauolla.- Suorituskykyä parannellaan.- Säteilystä kärsineitä osia vaihdetaan.    _CMS on kuin sipuli_CMS-hiukkasilmaisin koostuu useasta kerroksesta, joista jokaisella on erityinen tehtävä törmäyksen mittaamisessa. Tärkeää on mitata, millaisia hiukkasia törmäyksestä sinkoilee. Tämä saadaan selville mittaamalla **varaus**, **liikemäärä** ja **energia**.     Lisätietoa eri osien toiminnasta    Eri hiukkaset vaikuttavat aineen kanssa eri tavoin, eli tarvitaan erilaisia kerroksia mittamaan hiukkasten energioita ja ratoja. Tässä lyhyt tiivistelmäilmaisimen toiminnasta. [[4](diat)], [[5](cms)].    - **Jälki-ilmaisin** Jälki-ilmaisin koostuu kahden tyyppisisitä pii osista. Jälki-ilmaisin havaitsee varattujen hiukkasten reitit, kun ne vuorovaikuttavat elekromagneettisesti ilmaisimen kanssa. Tarkan paikkadatan avulla voidaan määrittää protonien törmäyskohdat ja syntyneiden raskaampien ydinten hajoamispaikat. Myös hiukkasen radan kaarevuussäteen avulla voidaan laskea sen momentti.*Pixel* -ilmaisin on rakennettu pienistä piisoluista (65 miljoonaa kappaletta), jotka mittaavat varattujen hiukkasten radat hyvin tarkasti.*Tracker* -kerros on valmistettu piiliuskoista jotka niin ikään mittaavat hiukkasten ratoja.- **Sähkömagneettinen kalorimetri (ECAL)**Elektronien ja fotonien energiat saadaan mitattua hyvin tarkasti sillä niiden törmäyks ECAL-kerrokseen aiheuttaa sähkömagneettisen ryöpyn, joka mitataan tuikeilmaisimilla. Törmänneen elektronin tai fotonin energia on suoraan verrannollinen tuikeilmaisimien havaitsemaan valon määrään.- **Hadronikalorimetri (HCAL)**Hardonikalorimetri pysäyttää hardoneiksi kutsutut hiukkaset, kuten protonit ja netronit. HCAL-kerrokseen saapuvat hardonit menettävät liike-energiaansa hiukkasryöppyihin, joiden synnyttämien tuikevalojen avulla saadaan lasketuksi hardonin alkuperäinen energia.- **Myonijärjestelmä**CMS ilmaisin on nimensä (Compact Muon Solenoid) mukaisesti suunniteltu erityisesti havaitsemaan myoneita. Myonit ovat vaikeasti havaittavia ja ne kulkevatkin ECAL ja HCAL kerrosten läpi pysähtymättä. Kuitenkin positiivisina hiukkasina niiden kulkiessa kaasulla täytettyjen kammioiden läpi (_drift tubes_) kaasu ionisoituu ja vapautuneet elektronit sekä positiiviset ionit kulkeutuvat (_Cathode Strip Chambers_) anodeille ja katodeille. Signaalin avulla voidaan laskea myonin paikka tietyllä ajanhetkellä. _Resistive Plate Chambers_ ovat myös osa myonijärjestelmää luoden signaalia, joka voidaan siirtää eteenpäin käsiteltäväksi.Neutriinot havaitaan epäsuorasti liikemäärän säilymisen kautta.   **$\color{blue}{\text{Tarkastelkaa miten eri hiukkaset käyttäytyvät CMS ilmaisimen kerroksissa.}}$****$\color{blue}{\text{Selvitä millainen varaus kuvan hiukkasilla on. }}$**    Vinkki              Vastaus- **Myoneita**      on vaikea havaita mutta CMS on nimensä (Compact Muon Solenoid) mukaisesti erittäin hyvä myös siinä. Myonit kulkevat kaikkien kerrosten läpi pysähtymättä jättäen kuitenkin signaaleja pii-ilmaisimiin ja myoni kammioihin. Kuvassa myonin rata kääntyy ensin alaspäin ja sitten vahvan solenoid magneetin ohitettuaan alkaa kaartua ylöspäin. Oikean käden säännön mukaan myoni on siis negatiivinen hiukkanen. Huomion arvoista on että solenoidi magneetin sisällä magneettikenttä on vastakkais suuntainen magneetin ulkopuoliseen magneettikenttään verrattuna.         - **'Elektronin'**    rata kääntyy kuvassa ylöspäin. Tarkastellessamme tilannetta oikean käden säännön avulla päädymme ristiriitaan. Hiukkanen käyttäytyy, kuin positiivinen hiukkanen, mutta jo yläasteelta on tuttua, että elektronit ovat negatiivisesti varautuneita. Kyseessä onkin positroni eli elektronin antihiukkanen joka muistuttaa paljon elektronia, mutta onkin positiivisesti varautnut. Fyysikot saattavat käyttää välillä termejä hajamielisesti sekaisin, kunhan asiayhteydestä on selvää mistä puhutaan ;)        - **Hadronit**    Kuvassa on kaksi hadronia toinen merkittynä vihreällä viivalla ja toinen vihreällä katkoviivalla. Hadronit ovat vähintään kahden kvarkin muodostamia hiukkasia.    **Katkoviivalla** merkityn hiukkasen rata ei taivu ollenkaan 4 Teslan, eli vahvuudeltaan noin 100,000 kertaa maan magneettikentän vahvuisessa  [5](cms) magneettikentässä. Tämä tarkoittanee sitä, että hadroni on varaukseton. Kyseessä voi olla esimerkiksi neutroni. Neutronin vauhti hidastuu hadronikalorimetrissä kun se vuorovaikuttaa aineen kanssa ja aiheuttaa signaalin.    **Jatkuvalla viivalla** kuvatun hadronin rata kaartuu kuvassa alaspäin. Voimme siis päätellä hiukkasen olevan varaukseltaan negatiivinen. Tälläinen hadroni on esimerkiksi Pion ($ \pi^- : d \overline{\mu} $ ), hadronin liike-energia voidaan mitata sen aiheuttamasta hiukkasryöpystä hadronikalorimetrissä.        - **Fotonin** kulku CMS:n sisällä on piirretty tummansinisellä katkoviivalla. Viiva on suora ja päättyy elektrokalorimetrissä syntyvään hiukkasryöppyyn. Fotoni on siis varaukseton.Kaikkia hiukkasia ei voida CMS:n avulla havaita. Esimerkiksi neutriinot havaitaan epäsuorasti liikemäärän säilymisen kautta.         Jos hiukkanen pyörii myötäpäivää LHC:ssa, **$\color{blue}{\text{mihin suuntaan}}$  $\color{blue}{\text{magneettikentän}}$  $\color{blue}{\text{ tulisi osoittaa?}}$**    Vinkki               Vastaus    Magneettikentän tulee osoittaa $\color{green}{\text{ylöspäin}}$, jotta sen aiheuttama voima pitää protonin ympyräradalla. LHC kiihdyttimessä kiihdytetään kuitenkin protoneja molempiin suuntiin. Magneettikenttä osoittaa alaspäin toisessa putkessa, jossa protonit viilettävät vastapäivään.            YksiköistäMeidän on helppo puhua metreistä, koska voimme mitata sillä matkaamme lähikauppaan, kilogramma on maitotölkin massa ja sekunnissa sanomme yhden numeron. Hiukkasfysiikan liikkuu kuitenkin aivan eri suuruusluokissa ja voimien suhteissa. Siksi meille luontevat yksiköt kuten metri tai kilogramma eivät sovi hiukkasfyysikon arkeen.Tutkitaan ensin millaisia suureita tulemme käytämään      massa: m      aika: t      pituus: l Loput tarvitsemistamme suureista voidaan johtaa näistä kolmesta.    $\color{blue}{\text{Miten liikemäärän voi essittää yllä mainittujen suureiden avulla?}}$ $\frac{m \cdot l}{t}$    $\color{blue}{\text{ Entä energian?}}$    $\frac{m \cdot l^2}{t^2}$       Hiukkas fyysikot usein asettavat     c=1    tällä oletuksella saadaan useat kaavat siistimpään muotoon (esim $E=mc^2 \rightarrow E=m$). Muutoksen voi huoletta tehdä, sillä valonnopeus (tyhjiössä) on vakio ja sen numeerinen arvo riippuu vain valituista yksiköistä. Samalla muutamme käytettävää järjestelmää siten, että nopeudella ei ole yksikköä eli se on ns. dimensioton.Näin ollen myös liikemäärän ja energian yksiköt muuttuvat    liikemäärä: [m] * [v] --> [m]    energia: [m] * [v]^2 --> [m]    Olemme päätyneet tilanteeseen jossa liikemäärällä, energialla ja massalla on kaikilla sama yksikkö $[m]$! Voimme siis valita lempi yksikkömme, jolla mittaamme kaikkia kolmea esim. kilogramma tai newtonsekuntti.     $\color{blue}{\text{Arvatkaa mikä on hiukkasfyysikoiden lempi yksikkö!}}$ (vastaus on entuudestaan tuttu massan, liikemäärän tai energian yksikkö)      eV         = 1.602176634×10−19 JouleaElektronivoltti on tuttu energian yksikkönä. Hiukkasfyysikot voivat kuitenkin mitata sillä myös massaa ja liikemäärää. Tulevissa tehtävissä tulet törmäämään sen kerrannaisyksiköihin:            1MeV = 10^6 eV            1GeV = 10^9 eV             ****  Hiukkasten havaitseminen hiukkaskiihdyttimellä- LHC törmäyttää miltei valonnopeudella kulkevia protoneja.     - Syntyy uusia hiukkasia        - Mitataan vakaampia hiukkasia            - Päätellään datan avulla mistä hiukkasesta mitatut hiukkaset ovat kotoisin- Yksittäiset havainnot eivät riitä- Tarvitaan tilastollisesti merkittävä määrä dataa ja havaintoja    - Verrataan dataa simulaatioihin ja ennusteisiin      **** $\color{purple}{\text{Esimerkki:}}$  Histogrammi eri datamäärilläKokeillaan, miten datan määrä vaikuttaa tuloksiin. Alla on koodi, joka piirtää annetulla datamäärällä (4 kertaa) histogrammin kahden suurienergisen myonin invariantista massasta. Aloitetaan tutkimalla pieniä lukuja 0-20 ja kasvatetaan datan määrää vähitellen.<jupyter_code># Haetaan data tiedostosta ja tallennetaan se muuttujaan 'data'.
data = pd.read_csv('https://raw.githubusercontent.com/cms-opendata-education/cms-jupyter-materials-finnish/master/Data/Zmumu_Run2011A_massoilla.csv')

# Tallennetaan datatiedostossa olevat invarianttien massojen arvot muuttujaan 'invariantti_massa'.
invariantti_massa = data['M']
kuvat = 0
# Luodaan tyhjä lista 'valitut', johon tallennetaan valittujen invarianttien massojen arvot.
while kuvat < 4:
    valitut = []

# Pyydetään käyttäjää valitsemaan tapahtumien lukumäärä. Tallennetaan luku muuttujaan 'määrä'.
    määrä = int(input('Kuinka monta tapahtumaa valitaan: '))

# Tarkastetaan, onko datassa tarpeeksi tapahtumia. Jos tapahtumia ei ole tarpeeksi, tulostetaan virheilmoitus.
# Muussa tapauksessa massat valitaan ja tallennetaan 'valitut'-listaan.
    if määrä > len(invariantti_massa):
        print('Virhe: Histogrammin piirto epäonnistui. Ei tarpeeksi dataa. Maksimimäärä tapahtumia on ' + str(len(invariantti_massa)) + '.')
    else:
        for f in range(määrä):
            M = invariantti_massa[f]
            valitut.append(M)
        print('\n Valitsit datasta {} invariantin massan arvoa.'.format(määrä))

# Piirretään histogrammi valitusta datamäärästä. Valitaan pylväiden lukumäärä 'bins' sekä x-akselin väli 'range'.
    plt.hist(valitut, bins=120, range=(60,120))

# Name the axises and give the title.
    plt.xlabel('Invariantti massa [GeV]')
    plt.ylabel('Tapahtumien lukumäärä')
    plt.title('Kahden myonin invariantti massa\n')
    plt.show()
# Empty the variable "selected" for the next run.
    kuvat += 1
    valitut = []<jupyter_output><empty_output><jupyter_text>**** Mikä invariantti massa?Hiukkasfysiikan maailmassa tavallisen mekaniikan kaavat eivät enään aina päde kun massa muuttuu energiaksi ja toisin päin. Säilymislakeja toki kuitenkin on. Voimme muodostaa hiukkasten energian ja liikemäärän avulla suureen jota kutsumme **invariantiksi massaksi**. Sen arvo kuvaa hajonneelle emohiukkaselle ominaista massaa. On mahdoton ajatus punnita esimerkiksi Higgsin hiukkasta, jonka eliniänodote on luokkaa $10^{-22}$ sekunttia [[6](higs)]. CMS:n kaltainen laite voi kuitenkin mitata tytärhiukkasten liikemäärää ja energiaa, joiden avulla voidaan laskea _invariantti massa_. Se on matemaattinen arvo joka on "invariantti" mittausympäristölle, eli se voidaan laskea missä ja mille tahansa. Jos sen laskee tietystä hajoamisesta syntyneille tytärhiukkasille, saadaan arvo joka on lähellä emohiukkasen massaa. Jos taas lasketaan invariantti massa hiukkasille jotka eivät liity mitenkään toisiinsa saadaan arvo joka ei kuvaa mitään, eli taustakohinaa.**Invariantti massa siis säilyy hiukkasen hajotessa uusiksi hiukkasiksi.** Tämän ominaisuuden ansiosta se on voittamaton työkalu kokeellisen hiukkasfysiikan tutkijoille. Hiukkasilmaisin, kuten CMS, havaitsee lähinnä stabiileja hiukkasia. Määrittääkseen minkä raskaamman hiukkasen hajoamisesta stabiilit hiukkaset ovat kotoisin, tutkijoiden tulee tarkastella suuria määriä dataa. Piikit invariantin massan histogrammissa voivat viitata tietyn energiseen emohiukkaseen.[Lisätietoa englanniksi](https://profmattstrassler.com/articles-and-posts/particle-physics-basics/mass-energy-matter-etc/mass-and-energy/)    **** Hiukkaset hukassaVAIHTOEHTO1:CERN:in kesäopiskelija on saanut tehtäväkseen tutkia CMS:n mittaamaa tutkimusdataa vuoden 2011 ajoilta. Dataan on valikoitu tapahtumia jossa hiukkasilmaisin on havainnut kaksi myonia. Aikaisempien tukimusten perusteella tiedetään että moni hiukkanen voi hajota juuri kahdeksi myoniksi ja ne voidaan tunnistaa invariantin massan avulla. Kiireinen kesäopiskelija pyytää teitä auttamaan suuren datamäärän analysoinnissa. Hän on jakanut datan valmiiksi 6 tiedostoon, joissa jokaisessa vaikuttaa olevan jotain kiinnostava invariantin massan arvoissa. Autetaan kesäopiskelijaa ja tutkitaan mistä tiedostoista on oikein kyse!Hypoteesi: Emohiukkasten massat voidaan selvittää invariantin massan arvojen avulla ja näin löytää hiukkaset jotka voivat hajota kahdeksi myoniksi.VAIHTOEHTO2:CERN:n kesäopiskelijalle on käynyt vahinko. Hän on unohtanut pitää tärkeän mittausdatan järjestyksessä. Nyt hänellä on käsissään kuusi oudosti nimettyä tiedostoa CMS:n mittausdataa. Jokaisessa tiedostossa on mitattuja arvoja kahdesta myonista jotka ovat kenties peräisin jonkun hiukkasen hajoamisesta. Kesäopiskelija pyytää teidän apua tiedostojen sisällön tutkimisessa.  Tiedostot ovat suuria, joten tehokas ja hyvä tapa käsitellä tällaisia tiedostoja on käyttää Python ohjelmointikieltä. Ette tarvitse aikaisempaa ohjelmointikokemusta.<jupyter_code>#Python koodi ajetaan koodisoluista
muuttuja = 10*10
print("saimme vastaukseski: " + str(muuttuja))<jupyter_output>saimme vastaukseski: 100<jupyter_text>**** Datan kimppuunEnnen kuin aloitatte muistakaa ajaa ensimmäinen koodisolu otsikon [alustus](alustus) alta. Sen avulla saatte tarvittavat Python paketit datan käsittelyyn.**\** merkkaa koodissa kommentin jota kone ei aja. Kommentit helpottavat koodin lukemista ja sen toiminnan ymmärtämistä.Poistakaa alla olevasta koodista kommentin merkki **\** ryhmänne numeron mukaiselta riviltä ja ajakaa solu. Käsky pd.read_csv() lukee suluissa olevan csv-tiedoston ja tallentaa sen sisältämän datan taulukkona muuttujaan. Annetaan muuttujalle nimeksi _pikkidata_ + _ryhmän numero_.$\color{red}{\text{Ajakaa esim. näppäimillä [ctrl] + [enter]}}$<jupyter_code>#piikkidata1 = pd.read_csv('https://raw.githubusercontent.com/cms-opendata-education/cms-jupyter-materials-finnish/master/Data/piikkidata1.csv')
#piikkidata2 = pd.read_csv('https://raw.githubusercontent.com/cms-opendata-education/cms-jupyter-materials-finnish/master/Data/piikkidata2.csv')
#piikkidata3 = pd.read_csv('https://raw.githubusercontent.com/cms-opendata-education/cms-jupyter-materials-finnish/master/Data/piikkidata3.csv')
#piikkidata4 = pd.read_csv('https://raw.githubusercontent.com/cms-opendata-education/cms-jupyter-materials-finnish/master/Data/piikkidata4.csv')
#piikkidata5 = pd.read_csv('https://raw.githubusercontent.com/cms-opendata-education/cms-jupyter-materials-finnish/master/Data/piikkidata5.csv')
#piikkidata6 = pd.read_csv('https://raw.githubusercontent.com/cms-opendata-education/cms-jupyter-materials-finnish/master/Data/piikkidata6.csv')<jupyter_output><empty_output><jupyter_text>Edellisessä koodisolussa latasit tiedoston netistä, luit sen csv-muodosta ja tallensit muuttujaan. Mutta miten saamme tietää miltä lataamamme data näyttää? Lukekaa ajatuksella läpi alla oleva esimerkki. Sitten koittakaa tutkia ryhmänne piikkidataa ja löytää vastaukset ensimmäisiin kysymyksiin.    Hyödyllisiä Python komentoja        - tiedostonnimi.head() tulostaa tiedoston 5 ensimmäistä riviä        - tiedostonnimi.sarakkeenotsikko palauttaa taulukosta tämän sarakkeen arvot.        - print() tulostaa sulkujen sisällä olevan arvon        - len() palauttaa sulkujen sisällä olevan listan/jonon/taulukon pituuden        - min() palauttaa sulkujen sisällä olevan datan pienimmän arvon        - max() palauttaa datan suurimman arvon    **** $\color{purple}{\text{Esimerkki:}}$  Taulukon (_Pandas DataFrame_) tutkiminen ja käyttäminenLukekaa ensin huolella ja ajakaa sitten solut järjestyksessä.Esimerkin numerot ovat todellisten koeasemien mittoja. [[7](mitat)]<jupyter_code># Tätä ei tarvitse ymmärtää sillä latasitte jo tutkittavan datan netistä.
LHC_koeasemat=pd.DataFrame({'Nimi':['CMS', 'ATLAS', 'ALICE', 'LHCb'],
        'Paino':[14000, 7000, 10000, 5600], #tonneja
        'Pituus':[21, 46, 26, 21], #metrejä
        'Leveys':[15, 25, 16, 13], #metrejä
        'Korkeus':[15, 25, 16, 10]})  #metrejä
# luodaan taulukko ja tallennetaan se muuttujaan "LHC_koeasemat" 
# Taulukko sisältää LHC kiihdyttimen varrella olevien koeasemien tietoja [lähdee].
# HEAD-komennon käyttö:
LHC_koeasemat.head() #palauttaa taulukon 5 ensimmäistä riviä
# Valitaan sarake "Nimi" ja tulostetaan se
print(LHC_koeasemat.Nimi)
#lasketaan montako riviä taulukossa on ja tulostetaan vastaus
pituus=len(LHC_koeasemat)
print(pituus)
# LHC_koeasemat.Paino                 valitsee tutkittavaksi sarakkeen jossa on ilmaisimien painot
# max(LHC_koeasemat.Paino )         etsii painoista suurimman
# print(max(LHC_koeasemat.Paino))     tulostaa max() funktiolla saaadun suurimman massan.

suurin=max(LHC_koeasemat.Paino)
print(suurin)

#samaan tapaan:
pienin=min(LHC_koeasemat.Korkeus)
print(pienin)<jupyter_output><empty_output><jupyter_text>**** Tutkikaa ladattua tiedostoa Seuraavaksi kokeilkaa kirjoittaa itse koodia.Haetussa datassa on monta tapahtumaa, joista jokaisesta on tallennettu useita arvoja. Lisäksi jokaisessa tapahtumassa syntyi 2 myonia jotenka dataan on tallennettu arvot molemmille myoneille. Numerointi 1 tai 2 kertoo kummalle myonille kyseinen arvo kuuluu. Tehtävän kannalta __oleellisia ovat__:   - __px__ : $p_x$ on kyseisen myonin (1 tai 2) liikemäärän x-akselin suuntainen komponentti (GeV).   - __py__ : $p_y$ on myonin (1 tai 2) liikemäärän y-komponentti (GeV).   - __pz__ : $p_z$ on myonin (1 tai 2) liikemäärän z-komponentti (GeV).   - __E__ : $E$ on myonin (1 tai 2) energia (GeV).       Muita arvoja taulukossa       - __Run__ ja __Event__ : kertovat mistä törmäyksestä kyseisen rivin data on peräisin.   - __pt__ : $p_t$ (transverse momentum) myonin liikemäärän komponentti joka on kohtisuorassa hiukkassuihkua vastaan (GeV).   - __eta__ : $\eta$ on pseudorapiditeetti.   - __phi__ : $\phi$ (atsimuuttikulma) on kulma jonka suuntaan hiukkanen kulkee jos detektoria tarkastellaan  hiukkassuihkun akselilta (rad).   - __Q__ : on myonin varaus. Jokaisessa dataan valitussa törmäyksessä syntyy myoni ja antimyoni ($\mu^+ , \mu^-$) [1].   - __M__ : palataan tähän myöhemmin.         Kysymykset:- $\color{blue}{\text{Kuinka monta mittausta tiedostossa on?}}$- $\color{blue}{\text{Mikä on suurin energia, jonka myonille on havaittu?}}$- $\color{blue}{\text{Mikä on pienin liikemäärän y-komponentti joka myonille on havaittu?}}$Kirjoittakaa koodi jolla saatte vastaukset kysymyksiin!<jupyter_code>#Tähänn tulee teidän itse kirjoittama koodi!<jupyter_output><empty_output><jupyter_text>$\color{purple}{\text{Tarkistakaa}}$ saamanne arvot ajamalla alla oleva solu ja vastaamalla kysymyksiin.<jupyter_code>tarkista_arvot()<jupyter_output><empty_output><jupyter_text>****  Laskuja PythonillaPython on monikäyttöinen ohjelmointikieli, jolla voidaan käsitellä suuria määriä dataa ja suorittaa teokkaasti laskutoimituksia. Aloitetaan harjoittelu perus laskuista ja käytetään yllä esitettyä esimerkkiä. Esimerkkitaulukko on jo tallennettu tietokoneen muistiin.Alussa latasimme _numpy_ kirjaston ja tallensimme sen nimellä _np_. Kirjasto sisältää valmiiksi määriteltyjä funktioita, jota helpottavat laskujen suorittamista. Esimerkiksi _np.sqrt(x)_ vastaa $\sqrt x$. Lisäksi (x)\**2 ja _np.square(x)_ vastaa vat molemmat $x^2$.**** $\color{purple}{\text{Esimerkki:}}$  Laskuja taulukon arvoillaYksinkertaisuuden vuoksi oletetaan, että kaikki listan hiukkasilmaisimet olisivat lieriöitä. Näin ei kuitenkaan todellisuudessa ole.<jupyter_code>#muistellaan mitä taulukko näyttikään
LHC_koeasemat.head()<jupyter_output><empty_output><jupyter_text>Kun tehtiin oletus että jokainen ilmaisin on lieriö voidaan helposti laskea - **tilavuudet V :**  $\pi (0.5 r)^2 \cdot l$  - **tiheydet :** $\frac{m}{V}$.- **lävistäjät x :** pythagoran lauseen avulla, $\sqrt{(r)^2+l^2}$, missä **$r$** on lieriön pohjan lävistäjä eli ilmaisimen korkeus, **$l$** lieriön korkeus eli ilmaisimen pituus ja **$m$** ilmaisimen massa.<jupyter_code>#   tilavuuden laskemine 

tilavuus = np.pi * (LHC_koeasemat.Korkeus /2 )**2 * LHC_koeasemat.Pituus
print(tilavuus)
#  tiheyden laskemine

tiheys = LHC_koeasemat.Paino / tilavuus
print(tiheys)
#  lävistäjän laskemine

lävistäjä= np.sqrt((LHC_koeasemat.Pituus)**2 + (LHC_koeasemat.Korkeus)**2)
print(lävistäjä)<jupyter_output><empty_output><jupyter_text>**** Invariantin massan laskeminenDatassa on havaintoja kahdesta törmäyksen synnyttämästä myonista. Jotta voisimme ymmmärtää paremmin mitä törmäyksessä on todella tapahtunut on dataa kerättävä paljon ja sen perusteella päätellä mitä tapahtui siellä mihin hiukkasilmaisinkaan ei näe. Törmäyksestä sinkoilevista vakaammista hiukkasista ja niiden energioista voimme päätellä invariantin massan avulla mistä ne saattavat olla kotoisin.$\color{blue}{\text{Laskekaa ryhmänne datalle invariantin masssan arvot}}$, ehkä sieltä löytyy jotain mielenkiintoista? Käytetään laskussa seuraavaa lauseketta invariantille massalle $M = \sqrt{(E_1 + E_2)^2 - \|\textbf{p}_1 + \textbf{p}_2 \| ^2}$missä $\|\textbf{p}_1 + \textbf{p}_2 \|^2$ on vektorinormin neliö ja se voidaan laskea seuraavan kaavan mukaisesti, $\|\textbf{p}_1 + \textbf{p}_2 \|^2=(p_{x1}+p_{x2})^2+(p_{y1}+p_{y2})^2+(p_{z1}+p_{z2})^2$Kannattaa suorittaa välivaiheita ja tallentaa niiden tulokset muuttujiin. Muuttujia voi sitten käyttää lopullisen tuloksen laskemisessa.<jupyter_code>#Kirjoittakaa tähän koodi joka suorittaa invariantin massan laskun<jupyter_output><empty_output><jupyter_text>$\color{purple}{\text{Tarkistakaa}}$ saamanne arvot ajamalla alla oleva solu ja vastaamalla kysymyksiin.<jupyter_code>tarkista_inv_massat()<jupyter_output><empty_output><jupyter_text>PsstTarkkasilmäisimmät saattoivatkin jo huomata, että invariantti massa oli jo valmiiksi laskettuna sarakkessa 'M'. Voitte halutessanne vertailla saamianne vastauksia valmiiksi laskettuihin.              **** $\color{purple}{\text{Esimerkki:}}$  Histogrammi PythonillaVoitte tarkastella laskemianne invariantin massan arvoja _head()_ funktion avulla, mutta tuhansien numeroiden katselu listana ei ole järkevää. Nähdäkemme fysiikkaa mittausten takana on numerot esitettävä havainnolistavassa muodossa. Tässä kohtaa astuu esiin _histogrammi_. Histogrammi on voittamaton työkalu hiukkasfysiikan tutkimuksessa, jossa tapahtummia on suuri määrä ja ne jakautuvat todennäköisyyksien mukaan.Käytetään histogrammin piirtoon _matplotlib.pyplot_ pakettia jonka tallensimme alussa nimellä _plt_. Paketilla piirretään histogrammi helposti funktion plt.hist() avulla.<jupyter_code># Luodaan histogrammi
# plt.hist()ottaa argumenteiksi kolme arvoa:
### tidoston nimi josta histogrammi piirretään
### bins kertoo moneenko pylvääseen havainnot jaetaan
### range määrittää alueen jolle histogrammi luodaan

plt.hist(LHC_koeasemat.Korkeus, bins=4, range=(10,30))  

# nimetään akselit
plt.xlabel("Korkeus (m)")
plt.ylabel("Havaintojen lukumäärä")

# annetaan kuvaajalle otsikko
plt.title("Histogrammi koeasemien korkeudesta")

# tulostetaan luotu kuvaaja
plt.show()<jupyter_output><empty_output><jupyter_text>Pienillä datamäärillä histogrammi ei tuo lisäarvoa numeroiden tarkasteluun, eikä siitä ole hyötyä. Palataan kuitenkin tutkittavaan aiheiseen, ja kokeillaan saadaanko histogrammilla selvyyttä _piikkidataan_.****  Histogrammi piikkidatasta$\color{blue}{\text{Piirtäkää laskemistanne invariantin massan arvoista histogrammi.}}$ Kokeilkaa ensin itse ja kurkatkaa sitten _vinkkejä_.    Vinkkejä     tiedostoLaskitte aijemmin invariantin massan arvot ja tallensitte ne johonkin muuttujaan. Riittää, kun kirjoitatte kyseisen muuttujan nimen.     rangeKannattaa ensin tarkastella _max()_ ja _min()_ funktioiden avulla millaisia arvoja laskemanne invariantti massa saa. Näin saatte määriteltyä histogrammin piirtoalueen (_range=(min,max)_) helposti.Tämän jälkeenkin kannattaa rajata kuvaa vielä hieman, jotta näette piikin hyvin. binsKokeilkaa eri vaihtoehtoja, ja pitäkää mielessä montako tapahtumaa datassa olikaan. Voitte myös tarkistakaa sen _len()_ funktion avulla.<jupyter_code>#Kirjoittakaa tähän koodi joka piirtää histogrammin. Muistakaa myös nimetä akselit ja kuvaaja.<jupyter_output><empty_output><jupyter_text>**** Pohdintaa $\color{blue}{\text{Oliko histogrammissa nähtävissä jonkinlainen kuvio tai jakauma?}}$ $\color{blue}{\text{Mistä mahdollinen kuvio johtuu, vai voiko se olla sattumaa?}}$ $\color{blue}{\text{Oliko histogrammin piirtäminen hyödyllistä?}}$  Tulosten vertailuVAIHTOEHTO1Nyt yhdistetään saamamme tulokset suurempaan kokonaisuuteen ja tutkitaan tiedostoa jonka palasia _piikkidatat_ ovat.VAIHTOEHTO2Kesäopiskelijallamme on epävarma aavistus siitä mistä _piikkidatat_ saattavat olla peräisin. Hänellä on tietokeneellaan toinen tiedosto jossa on samoihin aikoihin CMS:llä mitattuja myonien arvoja. Alla oleva solu lataa kyseisen tiedoston myös teidän tutkittavaksi.<jupyter_code># tallennetaan tidosto nimellä 'dimu2'
dimu2=pd.read_csv('https://raw.githubusercontent.com/cms-opendata-education/cms-jupyter-materials-finnish/master/Data/DoubleMuRun2011A.csv')
#Tutkikaa tiedostoa esimerkiksi invariantin massan histogrammin avulla.<jupyter_output><empty_output>
StarcoderdataJupyterStructuredCleanDedup