ladamczy / STAR-Analysis

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

Analiza ekskluzywna K0K0 3 with ToF + 1 without ToF #11

Open ladamczy opened 9 months ago

ladamczy commented 9 months ago

Przenosze tutaj dyskusje mailowa:

Dla przypadków 3 ToF warto jeszcze dodać rozkłady dla pary 2ToF oraz 1ToF (oprócz leading i subleading)

Chcę się teraz zając zwiększeniem próbki o przypadki, gdzie mam przynajmniej jeden track z TOF dla kaonu.

Do tej pory selekcje opierała się na wyborze przypadków z jednym vertexem gdzie mogło być nawet kilkanaście śladów, ale ograniczaliśmy próbkę do przypadków gdzie były 4 tracki z TOF i na nich sprawdzałam ich jakość i fiducial region, a na samym końcu rozpatrywałam dwie kombinacje par pionów.

Teraz pojawia się problem dobrania śladów bez TOF i wyboru leading i subleading kaonu.

Chciałam to zrobić w następujący sposób:

  1. warunek na 1 vertex i |vtz_z| < 80 cm
  2. wymaganie przynajmniej 2, i nie więcej niż 4 ślady z TOF.
  3. warunki na dobranie tracków:

    a) if 4 z TOF - dalsza analiza jak dotychczas, ale z przeniesieniem wyboru kombinacji pionów i szerokiego okna masy przed sprawdzeniem jakości tracków. b) else if 3 z TOF - sprawdzenie czy są dwa tracki o przeciwnych znakach - jeżel tak, to akceptujemy przypadek, jeżeli 3 są tych samych znaków to odrzucamy. Jeżeli przypadek został zaakceptowany, to w pętli po pozostałych trackach szukamy tracka bez TOF. Ja bym szukała w pierwszej kolejności trakca o takim ładunku żeby całkowity ładunek był zero.

generalnie tak. Dobobieramy trak aby suma ładunków była 0. Takich sladów moze byc wiele. wybieramy taki ślad i taka kombinacje aby odległość od dwóch mas K0 były minimalna.

W uproszczeniu można najpierw połączyć w kaon te piony które są z TOF, a track dobrać, tak aby był najbliżej właściwej warości masy K0, z niesparowanym trackiem z TOF. Z drugiej strony my nie wiemy czy akurat te tracki zmatchowane z TOF tworzą parę więc trzeba by było niezależnie w pętlach sprawdzić , który track bez TOF, daje lepszą sumaryczną odległość, np. jest posPionTOF_1, negPionTOF, posPionTOF_2 i chcemy dobrać ujemny pion z grupy dostępnych ujemnych tracków: negPion_N, negPion_M, negPion_W.. .

jeżeli w kombinacji: (posPionTOF_1+negPion_N) i (negPionTOF + posPionTOF_2) ma najmniejszą odległość od właściwej masy kaony i będzie w mniejszej odległości niż (posPionTOF_1+negPionTOF), (negPion_W + posPionTOF_2) -(przypadek z najmniejszą odległością w drugiej kombinacji) - to wybieramy pierwszy przypadek.

Teraz nastąpiłoby sprawdzenie jakości tracków i fiducial region łącznie z trackiem bez Tof, a pozostałeępne tracki bez TOF nie byłby sprawdzane.

Generalnie ślady bez ToF traktujemy podejrzliwie dlatego sprawdzamy ich jakość (hity) oraz fidutial region przed parowaniem ze sladami z ToF. Innymi słowy do trzech śladów z Tof dobieramy czwarty bez ToF juz po cieciach.

c) 2 z TOF - zaakceptowanie jeżeli są takiego samego znaku,

odrzucenie, gdy mają przeciwne - dobieramy tracki jak wyżej.

Prosze najpierw zrobić przypadki z 3 tof zobaczymy co wyjdzie. Ale generalnie dla 2 z ToF do dwóch sladow o dowolnej kombinacji znaków dobieramy slady bez tof

PatrycjaMalinowska commented 9 months ago

Data_3_and_4_TOF-9.pdf Przesyłam wyniki. Wykresy są pokazane w kolejności: 3 i 4 tracki z TOF, 4 tracki z TOF, 3 tracki z TOF.

ladamczy commented 9 months ago

Jest potencjał ale tło jest zbyt duże. Prosze może dodac cieicie (i dla 4 i dla 3 ToF) dca(pi,pi)<1.5 cm

ladamczy commented 9 months ago

Dobrze byłoby też pokazać te ploty dla MC.

ladamczy commented 9 months ago

Rozkład R dobrze zrobić w węższych binach (2 mm ?)

PatrycjaMalinowska commented 9 months ago

dodałam warunek na DCA < 1.5 - każdy wykres w pliku pdf ma ten warunek. Data_3_and_4_TOF-11.pdf

PatrycjaMalinowska commented 9 months ago

Przesyłam rozkłady najmniejszej odległości pomiędzy prostymi, które wyznaczyłam na podstawie punktów decayVertex leading i subleading Kaonu i wektorów pędu. Poniżej załączam fragment kodu który liczy tę odległość. Dodam cięcie distK0K0 < 0.3 cm

HistClosestDistanceBetweenKaonsData.pdf HistClosestDistanceBetweenKaonsData3.pdf HistClosestDistanceBetweenKaonsData4.pdf

    // vertices
    TVector3 vertexLeadingKaon = leadingKaon.decayVertex();
    double leadingKaonVtxX = vertexLeadingKaon.X();
    double leadingKaonVtxY = vertexLeadingKaon.Y();
    double leadingKaonVtxZ = vertexLeadingKaon.Z();

    TVector3 vertexSubLeadingKaon = subLeadingKaon.decayVertex();
    double subLeadingKaonVtxX = vertexSubLeadingKaon.X();
    double subLeadingKaonVtxY = vertexSubLeadingKaon.Y();
    double subLeadingKaonVtxZ = vertexSubLeadingKaon.Z();

    double leadingKaonPx = leadingKaon.px();
    double leadingKaonPy = leadingKaon.py();
    double leadingKaonPz = leadingKaon.pz();

    double subLeadingKaonPx = subLeadingKaon.px();
    double subLeadingKaonPy = subLeadingKaon.py();
    double subLeadingKaonPz = subLeadingKaon.pz();

    double nx = leadingKaonPy*subLeadingKaonPz - leadingKaonPz*subLeadingKaonPy;
    double ny = leadingKaonPz*subLeadingKaonPx - leadingKaonPx*subLeadingKaonPz;
    double nz = leadingKaonPx*subLeadingKaonPy - leadingKaonPy*subLeadingKaonPx;

    double dx = leadingKaonVtxX - subLeadingKaonVtxX;
    double dy = leadingKaonVtxY - subLeadingKaonVtxY;
    double dz = leadingKaonVtxZ - subLeadingKaonVtxZ;

    double ds = sqrt(pow(dx,2)+ pow(dy,2) + pow(dz,2)) ;

    double distance = (abs(nx*dx+dy*ny+dz*nz))/(ds);
    HistClosestDistanceBetweenKaons->Fill(distance);
f1pmpr commented 9 months ago

Czy w tym wzorze na distance w mianowniku nie powinien byc modul z wektora (nx,ny,nz) zamiast modulu z (dx,dy,dz)?

PatrycjaMalinowska commented 9 months ago

wyniki z cięciem dla dist K0K0 < 0.3 cm. w opisie obrazków dodałam info o zastosowanych cięciach. Data_3_and_4_TOF-13.pdf

PatrycjaMalinowska commented 9 months ago

Czy w tym wzorze na distance w mianowniku nie powinien byc modul z wektora (nx,ny,nz) zamiast modulu z (dx,dy,dz)?

tak, powinno być n, pomyliłam się...

PatrycjaMalinowska commented 9 months ago

przesyłam poprawione rozkłady disK0K0 - w przeciwieństwie do poprzenich, teraz został nałożony warunek na wąskie okno masy. Teraz zrobię pozostałe rozkłady z warunkiem distK0K0 < 1.5 cm

HistClosestDistanceBetweenKaonsData.pdf HistClosestDistanceBetweenKaonsData3.pdf HistClosestDistanceBetweenKaonsData4.pdf

PatrycjaMalinowska commented 9 months ago

wyniki dla distk0k0 < 1.5 cm Data_3_and_4_TOF-15.pdf

f1pmpr commented 9 months ago

Czy mogłaby Pani zrobić jeszcze rozkłady pozycji punktu leżącego na środku tego odcinka wyznaczającego minimalną odległość pomiędzy dwoma K0. Dwa rysunki: rozklad współrzędnej z, oraz scatterplot y vs. x Dobrze by było również popatrzeć jak te wszystkie rozkłady na które tniemy wyglądają w MC.

I może jeszcze scatterplot sqrt(x^2+y^2) vs z, zeby miec pelniejszy obraz jak to wyglada.

ladamczy commented 9 months ago

Zaczynamy tracić sygnał, jak te rozkłady wygladaja dla MC ? Coś mi sie również nie zgadza. Na plotach missing pT dla 4 ToF widze 44 przypadki a dla 3ToF 200 przypadków dla pT<0.15 a na rozkładach masy K0 lub masy K0K0 pT i eta K0K0 widze tylko odpowiednio 17 i 70 . Dlaczego?

PatrycjaMalinowska commented 9 months ago

Zaczynamy tracić sygnał, jak te rozkłady wygladaja dla MC ? Coś mi sie również nie zgadza. Na plotach missing pT dla 4 ToF widze 44 przypadki a dla 3ToF 200 przypadków dla pT<0.15 a na rozkładach masy K0 lub masy K0K0 pT i eta K0K0 widze tylko odpowiednio 17 i 70 . Dlaczego?

przez pomyłkę zostawiłam warunek na 0.3 a nie 1.5 cm dla dist K0K0, przesyłam poprawione wyniki. Dołożę jeszcze MC.

Data_3_and_4_TOF-16.pdf

PatrycjaMalinowska commented 9 months ago

Czy mogłaby Pani zrobić jeszcze rozkłady pozycji punktu leżącego na środku tego odcinka wyznaczającego minimalną odległość pomiędzy dwoma K0. Dwa rysunki: rozklad współrzędnej z, oraz scatterplot y vs. x Dobrze by było również popatrzeć jak te wszystkie rozkłady na które tniemy wyglądają w MC.

I może jeszcze scatterplot sqrt(x^2+y^2) vs z, zeby miec pelniejszy obraz jak to wyglada.

z vs sqrt(x^2+y^2) obraz

y vs x obraz

f1pmpr commented 9 months ago

Prosze troche poprawic zakresy osi: x, y w zakresie +-10 cm, sqrt(x^2+y^2) < 15 cm, z w zakresie +-100 cm

I dobrze by bylo jeszcze popatrzec, ktore przypadki na powyzszych scatterplotach efektywnie wycinamy stosujac ciecie na distance.

ladamczy commented 9 months ago

Myślę, że ciekawszy jest rozkład

sqrt((x-x_beam(z))^2+(y-y_beam(z))^2)

no i sam rozkład z(K0,K0)

Czy nadal ma Pani tutaj wymóg 1 werteksu z |z_vtx|<80 ? Powinna Pani zrezygnować z tego wymogu (czyli dodąc również przypadki z dwoma werteksami lub bez. Ostatecznie będziemy wymagali |z|<80 ale rozkład z dobrze narysować w szerszym zakresie

ladamczy commented 9 months ago

No i czekamy na MC.

PatrycjaMalinowska commented 9 months ago

przesyłam wyniki z MC 34.pdf

PatrycjaMalinowska commented 9 months ago

Myślę, że ciekawszy jest rozkład

sqrt((x-x_beam(z))^2+(y-y_beam(z))^2)

no i sam rozkład z(K0,K0)

Czy nadal ma Pani tutaj wymóg 1 werteksu z |z_vtx|<80 ? Powinna Pani zrezygnować z tego wymogu (czyli dodąc również przypadki z dwoma werteksami lub bez. Ostatecznie będziemy wymagali |z|<80 ale rozkład z dobrze narysować w szerszym zakresie

tak, dalej mam warunek na |z_vtx| < 80. Później dodam przypadki bez tego wymogu

ladamczy commented 9 months ago

Szybkie pytanie.
Fig. 9 Tof3 i ToF4 wyglądają tak samo . Prosze jeszcze dodac rozkłady sqrt((x-x_beam(z))^2+(y-y_beam(z))^2) no i sam rozkład z(K0,K0) dca(K0,K0).

PatrycjaMalinowska commented 9 months ago

Szybkie pytanie. Fig. 9 Tof3 i ToF4 wyglądają tak samo . To błąd z overleaf

Prosze jeszcze dodac rozkłady sqrt((x-x_beam(z))^2+(y-y_beam(z))^2) ale to nie jest nasze R?

no i sam rozkład z(K0,K0) dca(K0,K0). dodam

ladamczy commented 9 months ago

wcześniejsze R to było dla kazdego K0 (R_K0) . Teraz mówimy o R werteksu K0,K0. Znajdujac punkt DCA(K0,K0) mamy z,y,z pary(K0K0).

PatrycjaMalinowska commented 9 months ago

dla przypadków z 2 vertexami gdy mam 4 ślady zmatchowane z TOF, przeważają przypadki gdzie mam 3 ślady dla jednego vertexu i 1 dla drugiego, czy uwzględnić te przypadki w analizie poprzez zrobienie dokłądnie takiej samej selekcji kaonów jak dla przypadku gdy mam 1 vertex z 4 śladami (najmniejsza odległość od masy kaonu)?

w przypadku gdy mam 2+2 zostawię przyporządkowanie takie jakie jest.

PatrycjaMalinowska commented 9 months ago

mam jeszcze pytanie, do tej pory sprawdzałam liczbę werteksów przez: upcEvt->getNumberOfVertices(), a później sprawdzałam czy są 4 ślady z TOF lub 3 ślady z TOF

Teraz sprawdzam przypadki z 2 verteksami, ale może się zdarzyć, że moje ślady z TOF będą przyporządkowane do jednego vertexu - dlatego pomimo rządania aby mieć upcEvt->getNumberOfVertices()==2, dodatkowo sprawdzam czy na pewno dla śladów z TOF mam 2 różne werteksy.

Czy rozszerzać liczbę przypadków:

a) w przypadkach z 1 vertexem upcEvt->getNumberOfVertices() == 1 zmienić ten warunek na taki aby 4 ślady z TOF miały, lub 3 ślady z TOF miały jeden vertex (dopuścić dowolną 'globalną' liczbę werteksów) b) w przypadkach z 2 verteksami np. dla 4 śladów z TOF, gdyby okazało się że 4 ślady zostały przyporządkowane do 1 verexu, lub 3+1 (jak opisałam w poprzednim komentarzu) - wymieszać do puli wspólnych śladów i rozpatrywać jak do tej pory robiłam - czyli traktować jakby pochodziły z 1 werteksu, ale globalnie dopuszczam 2 werteksy.

ladamczy commented 9 months ago

Chyba nie rozumiem tego w pełni. upcEvt->getNumberOfVertices()==2, oznacza dwa różne werteksy. Chyba nie ma sensu sprawdzać czy faktycznie wszsytkie slady z ToF sa z dwóch werteksów. To beda bardzo rzadkie przypadki gdy wszystkie Z ToF beda tylko z jednego werteksu. Poza tym nie chodzi o to aby dodać przypadki gdzie slady z ToF sa przypisane do dwóch werteksóe. Chodzi o to aby do przypadków upcEvt->getNumberOfVertices()==1 dodać przypadki z upcEvt->getNumberOfVertices()==2 (jakkolwiek się dzielą slady z ToF). A w zasadzie chodziło o rezygnacje z ciecia upcEvt->getNumberOfVertices()==1 i dopuścić upcEvt->getNumberOfVertices()>=1 . A w przyszłości (nose dane) nawet z upcEvt->getNumberOfVertices()==0

Nie rozumiem punktu a) . co ta znaczy 'globalną' liczbę werteksów? upcEvt->getNumberOfVertices() == 1 nie dopuszcza większej liczby werteksów.

Punkt b) tak mieszamy slady i traktujemy jak z jednego werteksu.

PatrycjaMalinowska commented 9 months ago

dobrze, jako globalną liczbę werteksów miałam na myśli właśnie upcEvt->getNumberOfVertices() - potem zaczęłam się zastanawiać, czy nie zażądać najpierw 4 śladów, a następnie sprawdzenie czyte 4 ślady mają to samo id.

PatrycjaMalinowska commented 9 months ago

Chyba nie rozumiem tego w pełni. upcEvt->getNumberOfVertices()==2, oznacza dwa różne werteksy. Chyba nie ma sensu sprawdzać czy faktycznie wszsytkie slady z ToF sa z dwóch werteksów. To beda bardzo rzadkie przypadki gdy wszystkie Z ToF beda tylko z jednego werteksu. Poza tym nie chodzi o to aby dodać przypadki gdzie slady z ToF sa przypisane do dwóch werteksóe. Chodzi o to aby do przypadków upcEvt->getNumberOfVertices()==1 dodać przypadki z upcEvt->getNumberOfVertices()==2 (jakkolwiek się dzielą slady z ToF). A w zasadzie chodziło o rezygnacje z ciecia upcEvt->getNumberOfVertices()==1 i dopuścić upcEvt->getNumberOfVertices()>=1 . A w przyszłości (nose dane) nawet z upcEvt->getNumberOfVertices()==0

Nie rozumiem punktu a) . co ta znaczy 'globalną' liczbę werteksów? upcEvt->getNumberOfVertices() == 1 nie dopuszcza większej liczby werteksów.

Punkt b) tak mieszamy slady i traktujemy jak z jednego werteksu.

a jak mam 2+2 ? to też wymieszać ślady?

ladamczy commented 9 months ago

dla przypadków z 2 vertexami gdy mam 4 ślady zmatchowane z TOF, przeważają przypadki gdzie mam 3 ślady dla jednego vertexu i 1 dla drugiego, czy uwzględnić te przypadki w analizie poprzez zrobienie dokłądnie takiej samej selekcji kaonów jak dla przypadku gdy mam 1 vertex z 4 śladami (najmniejsza odległość od masy kaonu)?

w przypadku gdy mam 2+2 zostawię przyporządkowanie takie jakie jest.

Wolałlbym ostatecznie nie patrzeć na werteks wogóle. Tak bedzie ostatecznie wyglądała analiza. Teraz mamy ciecia na dca(pi,pi)<1.5 cm to w sposób naturalny dobrze dopasuje ślady do K0. Rozumiem, że nie mamy juz cieć na DCA(pi,vertex) (?). Z tych cięć (dca_z, dca_xy) też trzeba zrezygnować.

PatrycjaMalinowska commented 9 months ago

Nie mam cięć na dca(pi). Usunęłam cięcie na vtx_z. Poniżej przesyłam wyniki dla upcEvt->getNumberOfVertices()==2 i upcEvt->getNumberOfVertices()==1. Pojawiają się coraz wyraźniejsze piki dla glueballi w 1370, 1500, 1710, 1930 34-1.pdf.

Czy już dodawać przypadki z dwoma śladami z TOF?

ladamczy commented 9 months ago

Myślę, że wciąż musimy poprawić stosunek sygnału do tła dla ToF=3. Musimy dodać ciecie dca(pi,pi)<1.5 jeśli go nie ma. Nic Pani o nim nie pisze w opisach . Z drugiej strony pisze Pani o cieciach dca(pi) w opisach. Prosze je usunąć jeśli tych ciecia już nie ma. Pozostaje ciecie na dca(K0,K0)<??? . Najpierw musimy zobaczyć rozklad dca(K0,K0).

 

PatrycjaMalinowska commented 9 months ago

czy leadingKaon.dcaDaughters() == dca(pi,pi)? to cięcie jest uwzględnione dla leading jak i dla subleadaing kaonu

ladamczy commented 9 months ago

o przepraszam tak pomyliłem leadingKaon z leadingpi. Pozostaje dca(K0,K0)

PatrycjaMalinowska commented 9 months ago

tak wygląda DCA(K0,K0) DCAK0K0.pdf

PatrycjaMalinowska commented 9 months ago

obliczyłam je w taki sposób:

    // vertices
    TVector3 vertexLeadingKaon = leadingKaon.decayVertex();
    double leadingKaonVtxX = vertexLeadingKaon.X();
    double leadingKaonVtxY = vertexLeadingKaon.Y();
    double leadingKaonVtxZ = vertexLeadingKaon.Z();

    TVector3 vertexSubLeadingKaon = subLeadingKaon.decayVertex();
    double subLeadingKaonVtxX = vertexSubLeadingKaon.X();
    double subLeadingKaonVtxY = vertexSubLeadingKaon.Y();
    double subLeadingKaonVtxZ = vertexSubLeadingKaon.Z();

    double leadingKaonPx = leadingKaon.px();
    double leadingKaonPy = leadingKaon.py();
    double leadingKaonPz = leadingKaon.pz();

    double subLeadingKaonPx = subLeadingKaon.px();
    double subLeadingKaonPy = subLeadingKaon.py();
    double subLeadingKaonPz = subLeadingKaon.pz();

    double nx = leadingKaonPy*subLeadingKaonPz - leadingKaonPz*subLeadingKaonPy;
    double ny = leadingKaonPz*subLeadingKaonPx - leadingKaonPx*subLeadingKaonPz;
    double nz = leadingKaonPx*subLeadingKaonPy - leadingKaonPy*subLeadingKaonPx;

    double dx = leadingKaonVtxX - subLeadingKaonVtxX;
    double dy = leadingKaonVtxY - subLeadingKaonVtxY;
    double dz = leadingKaonVtxZ - subLeadingKaonVtxZ;

    double ds = sqrt(pow(nx,2)+ pow(ny,2) + pow(nz,2)) ;

    double distance = (abs(nx*dx+dy*ny+dz*nz))/(ds);

    double distVertexBeamxLeadingKaon = leadingKaonVtxX - beamPositionX;
    double distVerteyBeamyLeadingKaon = leadingKaonVtxY - beamPositionY;
    double distRLeadingKaon = sqrt(pow(distVertexBeamxLeadingKaon,2) + pow(distVerteyBeamyLeadingKaon,2));

    double distVertexBeamxSubLeadingKaon = subLeadingKaonVtxX - beamPositionX;
    double distVerteyBeamySubLeadingKaon = subLeadingKaonVtxY - beamPositionY;
    double distRSubLeadingKaon = sqrt(pow(distVertexBeamxSubLeadingKaon,2) + pow(distVerteyBeamySubLeadingKaon,2));  

    double t1x = subLeadingKaonPy*nz - subLeadingKaonPz*ny;
    double t1y = subLeadingKaonPz*nx - subLeadingKaonPx*nz;
    double t1z = subLeadingKaonPx*ny - subLeadingKaonPy*nx;

    double t2x = leadingKaonPy*nz - leadingKaonPz*ny;
    double t2y = leadingKaonPz*nx - leadingKaonPx*nz;
    double t2z = leadingKaonPx*ny - leadingKaonPy*nx;

    double t1 = (t1x*dx + t1y*dy + t1z*dz)/ds/ds;
    double t2 = (t2x*dx + t2y*dy + t2z*dz)/ds/ds;

    double x1 = leadingKaonVtxX+t1*leadingKaonPx;
    double y1 = leadingKaonVtxY+t1*leadingKaonPy;
    double z1 = leadingKaonVtxZ+t1*leadingKaonPz;             

    double x11 = subLeadingKaonVtxX+t2*subLeadingKaonPx;
    double y11 = subLeadingKaonVtxY+t2*subLeadingKaonPy;
    double z11 = subLeadingKaonVtxZ+t2*subLeadingKaonPz;             

    double xs = (x1+x11)/2.0;
    double ys = (y1+y11)/2.0;   
    double zs = (z1+z11)/2.0;

    double dcak0k0 = sqrt( pow((x1-x11),2) + pow((y1-y11),2) + pow((z1-z11),2) );
ladamczy commented 9 months ago

czekamy na wzory aby sprawdzić ten kawałek kodu.

ladamczy commented 8 months ago

wydaje mi się że zaczynam rozumieć Pani kod. Wydaje mi sie że błędy sa tutaj:

double t1 = (t1xdx + t1ydy + t1zdz)/ds/ds; double t2 = (t2xdx + t2ydy + t2zdz)/ds/ds;

tutaj powinno być:

double t1 = (t1xnx + t1yny + t1znz)/ds; double t2 = (t2xnx + t2yny + t2znz)/ds

i druga poprawka

to zamiana t1 i t2 na t1=-|t1| oraz t2=-|t2|

ekstrapolacja powinna być w strone przeciwną do pedu kaonów Prosze spróbować i zobaczymy jaka jest róznice. Ale mogę sie mylić .

PatrycjaMalinowska commented 8 months ago

Przesyłam rozkład DCA z powyższymi zmianami przed i po nałożeniu wąskiego okna masy. Wcześniej pokazywałam rozkład po nałożeniu wąskiego okna masy. Co więcej wcześniej miałam 3 lub 4 ślady z TOF i 1 lub 2 verteksy, a teraz wróciłam do 1 vtx z 4 śladmai.

DCAK0K0.pdf

ladamczy commented 8 months ago

Wygląda lepiej. A czy Pani się zgadza z tymi zmianami czy tylko sprawdziła Pani co sie stanie jak Pani je wprowadzi?

Czy to sa dane czy MC? Jesli dane to prosze sprawdzic jak to wygląda dla MC. Prosze sprawdzić jak to wygląda dla przypadków 4ToF. Zamiast robić rozkłady DCAK0K0 w szerokim i wąskim oknie masy prosze zrobić rozkąd masy dla DCAK0K0<1.5 i taki sam plot dla DCAK0K0>1.5

ladamczy commented 8 months ago

W obu analizach 4 ToF i 3ToF prosze wykorzystać nową klase StUPCV0 i nowe sugerowane ciecia.

Zamiast ciecia DCAK0K0 będziemy stosowali ciecie na DeltaZ=K0_1.prodVertexHypo().Z()- K0_2.prodVertexHypo().Z(). Pozycje Z-towe musza się zgadząć ale najpierw prosze zrobić wykres (dla danych i MC).

ladamczy commented 7 months ago

W tych analizach trzeba dodać poprawki na pozycje RP (afterburner) oraz rekonstruować pędy protonów przy założeniu energii beamu. Czyli liczymy np. składowa pędu w kierunku x to 255*theta_x. Mamy również nowe MC więc powinno się zrobić pełne porównanie dane MC (najlepiej w konwencji n-1, ....)

PatrycjaMalinowska commented 7 months ago

mam pytanie dotyczące maila z poprzedniej środy: """

ladamczy commented 7 months ago

inputem do StUPCV0 nie jest punkt tylko cała linia prosta opisujaca beamline (4 parametry x0,y0,slope_x,slopy_y) To jest cała nowość tej klasy ze nie musimy znać położenia werteksu, wystarczy znć położenie beamlinu.

V0.productionVertex jest punktem no osi beamu a jego zkładowa z jest położeniem o które pytamy. Tak delta_z obu kandydatów fo V01.productionVertex.z()-V02.productionVertex.z() Jesli oba K0 pochodza z tego samego punktu to delta_z powinna być w okolicach 0

PatrycjaMalinowska commented 7 months ago

Przesyłam rozkłady dla 4TOF. Pęd protonów policzyłam na podstawie kątów. Usunęłam cięcie na wertex. 4TOF.pdf

ladamczy commented 7 months ago

Wydaje mi sie ze Fig.2 nie jest poprawny. Pod rysunkiem mamy ze zastosowano ciecie pt_mis i masy K0. Gdyby to była prawda to na Fig. 2 w zakresie n_cluster<= 9 mielibysmy mniej wiecej 65 przypadków a mamy znacznie więcej . Podejrzewam że na tym plocie nie ma ciecia pt_mis<0.15 . Prosze sprawdzić i dodać.

Fig. 4 ten plot prosze zrobić z cieciami takimi jak Fig. 8 . Dodatkowo z tą samą selekcja prosze zrobić plot średniej (V01.productionVertex.z()+V02.productionVertex.z())/2. pewnie trzeba bedzie zrobić ciecie abs( (V01.productionVertex.z()+V02.productionVertex.z())/2.) < 80.

PatrycjaMalinowska commented 7 months ago

Dlaczego burner zmienia liczbe tracków RP - w preselekcji miałam zapisane zdarzenia z dwoma trackami rp (bez afterburner), w analize ekskluzywnej użwam burnera - wartość correctedRpEvent->getNumberOfTracks() różni się od rpEvt->getNumberOfTracks()

ladamczy commented 7 months ago

jedynym powodem różnic może być ciecie na ilość płaszczyzn na ślad. Afterburner wymaga minimalnej ilości 3 płaszczyzn. W analizie wymagamy trzech płaszczyzn na poziomie analizy. Zakładam ze ilość traków RP po afterburner powinna być taka sama jak przed afterbernerem (ale z cieciem przynajmniej 3 płaszczyzn) . Wyapadało by to sprawdzić.

ladamczy commented 7 months ago

może Pani również zmienić ilość wymaganych płaszczyzn w afterburner

https://github.com/ladamczy/STAR-Analysis/blob/e2709445038ae68bf339d26ba01e5e3a44d830fd/star-upc/include/Afterburner.h#L15

z 3 na 2 i wtedy powinną być zgodność z tym co było wczesniej.

ladamczy commented 7 months ago

mamy zbyt duze tło dla 3 ToF. Ciecie na

abs( (V01.productionVertex.z()+V02.productionVertex.z())/2.) < 80.

oraz

abs( V01.productionVertex.z()-V02.productionVertex.z())) < 5.

raczej nie pomoże. Jedyne co zostaje to ciecie na

cos(theta*) to jest polarny w układzie środka masy . Mamy to juz w klasie StUPCV0 . Trzeba zoaczyć jak to wygląda dla danych i MC ale w analizach cześto jest ciecie

abs(cos(theta*))<0.8

może to pomoże . Dodatkowo cieicie na decayLengthHypo() > 1-2 cm tez pomoze w czyszczeniu ale równocześnie troche wytnie sygnału.

ladamczy commented 7 months ago

po cieciach na DCAdaughters , DCAbeamline i cos(pointingAngle) próbka 3 ToF jest dość czysta. mozna spróbowac zrezygnować z cięcia cos(pointingAngle) może nadal tło bedzie stosunkowo małe a zyskamy na sygnale

Prosze ciecia na DCAdaughters , DCAbeamline zastosować do próbki 4 ToF.

Wydaje mi sie że jest szansa ze z cieciami DCAdaughters , DCAbeamline i cos(pointingAngle) również próbka 2 ToF będzie sensowna (czyli tylko jeden ToF na kazde K0).