Closed ladamczy closed 5 months 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?
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.
nan występuje tylko dla dwóch pierwszych wartości fillu, gdzie data Stop poprzedza pierwszą datę w pliku beamLine.txt.
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.
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
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ęć.
poprawka
sqrt((vertex_x - beamLine_x)^2/err_x^2 + (vertex_y - beamLine_y)^2/err_y^2)
to już jest significance
kod ostatecznie prosze umieścić w sekcji code/ExclusiveAnalysis. a nie jako dodatek do tego wątku
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
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.
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.
czy ten kod jest juz w repozytorium ? Wydaje mi sie że nie.
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.
zamykam to issue. W nowych danych mamy te informacje w drzewie.
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.