ladamczy / STAR-Analysis

Repository for AGH-STAR analysis code
2 stars 0 forks source link

Funkcja zwracająca pozycje wiązki x y na podstawie numeru napełnienia RHIC #1

Closed ladamczy closed 5 months ago

ladamczy commented 1 year ago

W kartotece share znajduje się plik beamLine.txt z pozycja x i y beamu w 2017 roku. Na stronie głównej jest link do strony z data początku i końca napełnień RHIC.

PatrycjaMalinowska commented 1 year ago

Przesyłam dwa skrypty i pliki potrzebne do ich uruchomienia.

Skrypt FindFillPosition.py: Program korzysta z dwóch plików: beamLine.txt (zawierający pozycje wiązki) oraz Run7Polarization.txt (zawierający numer fillu). W pętli po danych z pliku Run7Polarization sprawdzane są daty Start i Stop związane z numerem fillu, a następnie wyszukiwane są dwie daty z pliku beamLine.txt: pierwszą przed Start i pierwszą po Stop.

18.3% danych zawiera dwa numery fillu.

Wynikiem skryptu jest plik csv, który zawiera numer fillu, x,y, x2, y2 oraz daty Start i Stop. W przypadku braku położeń, dane zostały zapisane jako nan.

Skrypt MatchFillPosition.cxx wczytuje plik csv powstały w poprzednik skrypcie (Run7PolarizationWithPosition.csv) i łączy informację z danych dotyczącą fillu (getFillNumber) z odpowiednią pozycją wiązki (linie 90-160, 210-240)

Mam pytanie, w jakie sposób poradzić sobie, gdy na dany numer fillu przypadają dwie średnie pozycje wiązki? Czy powinnam policzyć średnią ważoną, gdzie wagami jest czas jaki przypada na dane położenie?

PatrycjaMalinowska commented 1 year ago

FillPosition.zip

ladamczy commented 1 year ago

Oczywiście można by zrobić krótsze odcinki czasowe (zamiast napelnień używać numeru ranu). Ale wtedy będziemy mieć wiele ranów z tą sama pozycją. Myślę że trzeba spróbować zostać przy napełnieniach. Jak mamy dwie pozycje to prosze wziąść średnią. Bardziej mnie martwi brak informacji o średniej czyli sytuacja gdy wpisuje Pani nan. Nie powinno się tak dziać. Plik beamLine.txt nie ma "dziur". Czas początkowy jednego zestawu pozycji jest równoczesnie czasem końcowym poprzedniego zestawu pozycji. Prosze jeszcze raz sprawdzić czy faktycznie pojawia się nan.

PatrycjaMalinowska commented 1 year ago

nan występuje tylko dla dwóch pierwszych wartości fillu, gdzie data Stop poprzedza pierwszą datę w pliku beamLine.txt.

ladamczy commented 1 year ago

OK. Najprawdopodobniej i tak nie mamy danych dla tych dwóch napełnień. Warto popatrzeć jak to działa i zrobić rozkład vertex_x - beamLine_x. oraz vertex_y - beamLine_y. w funkcji numeru napełnienia ( tak zwany TProfile). Coś podobnego do rysunku 12.1 z pracy Pana Rafała.

PatrycjaMalinowska commented 1 year ago

Poniżej przesyłam rozkłady różnicy położenia vertexu i wiązki oraz histogram R = sqrt((vertex_x - beamLine_x)^2 + (vertex_y - beamLine_y)^2)

DifferenceVertexPositionBeamLineX.pdf DifferenceVertexPositionBeamLineY.pdf HistDistanceR.pdf

ladamczy commented 1 year ago

Wartości odchyleń standardowych świadczą o tym ze pewna część napełnień jest poza skalą rysunku. Wydaje mi sie że na chwile obecną można by wyrzucić z analizy dane z napełnień których średnie róznice (w X lub Y) sa większe niż 0.01 . Pytanie czy stracimy dużo danych. Np. w funkcji którą Pani napisała wprowadzić flagę status, która przyjmuje wartość false dla problematycznych napełnień oraz true dla dobrych. Następnie w analizie wymagać aby kazdy przypadek miał status=true .

To by zamykało obecne zadanie.

Natomiast sam rozkład R wygląda juz dość dobrze. Kolejne kroki to:

sprawdzenie jak wygląda rozkład masy niezmienniczej dla

w zasadzie powinniśmy ciąć nie na R ale na R/error_R tak zwane "significance" np. | R/error_R|>3 lub >5 Nie wiem czy w danych mamy informacje o error(sigma) dla v_x i v_y jeśli jest to warto zrobić również plot R/error_R

error_R = sqrt((vertex_x - beamLine_x)^2/err_x^2 + (vertex_y - beamLine_y)^2/err_y^2)

No i zostaje jeszcze rozkład L (uwzględniający kąt jako tworzy kandydat na K0 z osią wiązki). To by była najlepsza zmienna do cięć.

ladamczy commented 1 year ago

poprawka

sqrt((vertex_x - beamLine_x)^2/err_x^2 + (vertex_y - beamLine_y)^2/err_y^2)

to już jest significance

ladamczy commented 1 year ago

kod ostatecznie prosze umieścić w sekcji code/ExclusiveAnalysis. a nie jako dodatek do tego wątku

ladamczy commented 8 months ago

otwieram to issue. Aby najlepiej jak możemy skorzystać z bazy danych beam-line dodałem baze danych z ranami

share/runs_2017.txt

pole 6 i 7 zawiera date i czas początku każdego ranu w STAR. Sam numer ranu to pole 12.

Proponuje utworzyć nowa baze danych i do każdego zestawu danych w pliku beamline dopisać numer runu od którego dany zestaw obowiazuje oraz Poprawić program tak aby inputem byl numer ranu a nie numer fillu.

Ponieważ w STAR run jest najmniejsza jednostka kalibracyjna spodziewam się ze czas w pliku beamLine.txt pokkrywa się z czasem początkowym któregoś z ranów w pliku runs_2017.txt

PatrycjaMalinowska commented 8 months ago

Próbuję utworzyć plik z runem i pozycją wiązki, ale nie wiem czy powyższy opis odpowiada plikowi runs_2017.txt. Założyłam że kolumna A to numer runu, B czas końcowy, a E czas początkowy runu. Jednak przy takim założeniu, część runów rozciągałaby się na okres miesiąca, jak na załączononym obrazku.

obraz

ladamczy commented 8 months ago

Numer runu to pozycja J. Tę informacje mamy w danych. Numery ranów maja dziury bo koduja one rok i dzień np. 18 035 016 - to run z 2017 (18) roku , 35 dzień roku (4 luty), 16-ty ran w dniu 4 lutego (016)

Poczatek ranu to pozycja E (Dzień i godzina) Nie ma czasu końca ranu. Prosze przyjąć że czas końca ranu to czas początku nasępnego ranu na liscie. Pozycja A to jest kolejny numer na liscie ranów. Czyli ran 18035016 był 164500 ranem w historii STAR'a.

ladamczy commented 7 months ago

czy ten kod jest juz w repozytorium ? Wydaje mi sie że nie.

PatrycjaMalinowska commented 7 months ago

dodałam plik z numerami run i pozycją wiązki do katalogu share - można używać poprzedniej funkcji wraz z tym plikiem i przekazanym do niej numerem run.

ladamczy commented 5 months ago

zamykam to issue. W nowych danych mamy te informacje w drzewie.