Tags:
create new tag
, view all tags

Instalacja aplikacji DaVinci oraz wskazowki jak napisac wlasna selekcje

Linki do informacji

Instalacja aplikacji DaVinci

Instalacje aplikacji wykonujemy tylko raz dla np nowej wersji DaVinci. Pozniej przy kolejnych loginach mozna ja uruchamiac zgodnie z opisem w punkcie Uruchomienie. Pierwszym krokiem jest zbudowanie aplikacji DaVinci - przyklad dla v20r1 (najnowsza wersja DaVinci to v25r2 )
     
   SetupProject --build-env DaVinci v20r1
 
opcje --build-env stosuje sie tylko pierwszy raz. Sluzy do utworzenia katalogu, w tym wypadku bedzie to ~cmtuser/DaVinci_v20r1

Nastepnie

   cd ~/cmtuser/DaVinci_v20r1
   getpack Phys/DaVinci v20r1
   cd Phys/DaVinci/v20r1/cmt
   SetupProject DaVinci v20r1
   gmake

UWAGA. Na naszym klastrze zamiast getpack wygodniej jest uzywac cvsano (nie wpisywac hasla, tylko nacisnac RETURN) a nastepnie mozna uzyc getano zamist getpack

Podstawowym zbiorem z opcjami jest DaVinci.py znajdujacy sie w katalogu options.

Dane wejsciowe

Przed uruchomieniem aplikacji nalezy wyspecyfikowac dane wejsciowe. W CERN aplikacja uruchamiana jest na przygotowanych danych testowych znajdujacych sie w DaVinciTestData.py. Na BAL nalezy wyspecyfikowac lokalne dane wejsciowe albo korzystajac z przygotowanych zbiorow albo tworzac wlsny zbior.
Wykorzystanie zbiorow ogolnego uzytku
  • Edycja ../options/DaVinciTestData.py. Importujemy wlasne dane w miejscu DC06 komentujac oryginalne
if ( dataType == "DC06" ):
    importOptions("/home/people/lhcbsoft/dataopts/mydata.py")
#    importOptions("$DAVINCIROOT/options/DC06_stripped_bbincl_lumi2.py")

gdzie mydata.py moze byc jednym z przygotowanych zbiorow .py z katalogu /home/people/lhcbsoft/dataopts/:

Utworzenie wlasnego zbioru
  • tworzymy wlasny zbior ktory moze wygladac nastepujaco
 
from Gaudi.Configuration import EventSelector
EventSelector().Input   = [
    "DATAFILE='PFN:/data3/lhcbsoft/data/witekma/lesya/phigamma1a.dst' TYP='POOL_ROOTTREE' OPT='READ'",
    "DATAFILE='PFN:/data3/lhcbsoft/data/witekma/lesya/phigamma1b.dst' TYP='POOL_ROOTTREE' OPT='READ'",
    "DATAFILE='PFN:/data3/lhcbsoft/data/witekma/lesya/phigamma1c.dst' TYP='POOL_ROOTTREE' OPT='READ'"
  ]
umieszczamy go np we wlasnym $DAVINCIROOT/options i wlaczamy go za pomoca linijki
importOptions("$DAVINCIROOT/options/mydata.py")

Uruchomienie

Standardowo aplikacje uruchamiamy nastepujaco:
   cd ~/cmtuser/DaVinci_v20r1/Phys/DaVinci/v20r1/job
   gaudirun.py $DAVINCIROOT/options/DaVinci.py $DAVINCIROOT/options/DaVinciTestData.py

dla wygody zdefiniowany jest alias dvpd ktory odpowiada komendzie z ostatniej linijki ( guadirun.py ... ) i ktory mozna uruchamiac z dowolnego katalogu.

Uruchamianie po kolejnych loginach

Aplikacje instalujemy tylko raz. Pozniej po zalogowaniu wystarczy wykonac:
   SetupProject DaVinci v20r1
   cd cmtuser/DaVinci_v20r1/Phys/DaVinci/v20r1/job
i uruchomic.

Aby zautomatyzowac ustawianie srodowiska aplikacji na klastrze BAL zdefiniowane sa aliasy:

sdv221 dla v22r1
sdv2202 dla v22r0p2 ...
ktore wykonuja SetupProject ... i przechodza do katalogu cmt. Mozna przejsc do ../job i uruchomic aplikacje. Dodatkowo mamy aliasy
gdv221 dla v22r1
ktore mozna uzyc do nawigacji tzn do poruszania sie po strukturze aplikacji. Jezeli mamy sciagniety pakiet np cmtuser/DaVinci_v22r0/Hlt/HltEcalAlley to komenda gdv220 HltEcalAlley przerzuci nas do cmtuser/DaVinci_v22r0/Hlt/HltEcalAlley/cmt.

Jak napisac wlasna selekcje?

Osoba zajmujaca sie danym kanalem powinna przygotowac 2 selekcje: offline, preselekcja oraz Hlt2.

Pelny przyklad opcji dla selekcji Bs2Dspi znajduje sie w katalogu ~lhcbsoft/selopts/Bs2Dspi_example. Mozna tam znalezc:

  • DaVinci_Bs2Dspi.py - glowny zbior z opcjami
  • MySelBs2Dspi_histos.py - opcje do selekcji rozpadu wraz z wypelnianiem histogramow
  • MySelBs2Dspi_tuples.py - przyklad tworzenia ntupli
dane wejsciowe znajduja sie w ~lhcbsoft/dataopts/Bs2Dspi.py. Prosze zwrocic uwage jak dolaczamy nasz algorytm lub sekwencje do lancucha algorytmow do wykonania za pomoca linii przy koncu MySelBs2Dspi_histos.py:
DaVinci().UserAlgorithms += [ MySelSequence ]
Jest to zalecany sposob gdyz pozwala w latwy sposob przenosic selekcje do nowych wersji gdyz w glownym zbiorze opcji DaVinci_Bs2Dspi.py wystarczy dolaczyc:
importOptions( "$DAVINCIROOT/options/MySelBs2Dspi_histos.py" )

Przygotowanie selekcji polega na skonstruowaniu zbioru z opcjami skladajacego sie srednio z kulkudziesieciu linijek. Wszystkie trzy rodzaje przygotowywane sa tymi samymi narzedziami. Roznia sie jedynie cieciami i jakoscia rekonstrukcji (Hlt2 ma jakosc onlinowa). Obecnie nastepuje transformacja opcji Gaudi'ego na opcje Python'a. Zalecana jest praca z opcjami Pythona.

Opcje sa rzeczywiscie ogromnym ulatwieniem ale nalezy zrozumiec reguly ich pisania, nazewnictwo itp. Niektore z nich:

  • Ten sam algorytm np. CombinedParticles moze byc powielany wielokrotnie z roznymi nazwami.
  • Kazda kopia jest niezaleznym algorytmem ktorego dzialanie ustawiamy roznymi opcjami.
  • Skonstruowane czastki ktore przeszly kryteria selekcji umieszczane sa w lokacji Phys/nazwa_algorytmu i moze byc uzyta jako input do nastepnego algorytmu w przypadku kaskadowych rozpadow.
  • Aplikacja DaVinci przygotowuje duzo czastek standardowych, ktore sa do dyspozycji w momencie uruchamiania selekcji uzytkownika. Sa to zarowno podstawowe czastki typu K i pi jak i czaski zlozone J/psi, D0, Ds, phi itp. Mozna zerknac do DaVinciCommon.opts gdzie wlaczane sa inne opcje przygotowujace czastki standardowe.

Ogolna filozofia opcji jest nastepujaca:

Specyfikujemy tzw DecayDescriptor

NazwaMojegoAlgorytmu.DecayDescriptor  = "[B0 -> D+ pi-]cc"
a nastepnie wpisujemy ciecia
NazwaMojegoAlgorytmu.DaughtersCuts = { "D+" : "ADMASS('D+')<50*MeV" }  
NazwaMojegoAlgorytmu.CombinationCut = "(ADAMASS('B0')<500*MeV)" 
NazwaMojegoAlgorytmu.MotherCut = "((VFASPF(VCHI2/VDOF)<10) & (BPVIPCHI2()<30.25) & (BPVVDCHI2>6.25) & (BPVDIRA>0.9999))" 
Praktycznie wszyskie interesujace ciecia sa predefiniowane. Ciecia te sa dosyc wyrafinowane tzn. moga w nich byc ukryte petle po kombinacjach czstek.

Najprostszym przypadkiem jest rozpad dwucialowy na czastki podstawowe np pi+pi-. Ale juz w omawianym przykladzie mamy doczynienia z czastka Ds+. Wczesniej czastka ta musi zostac przygotowana za pomoca kilku opcji.

W opcjach specyfikujemy nazwe algorytmu, input dla algorytmu oraz opis rozpadu oraz ciecia . Dwoma podstawowymi algorytmami sa: CombineParticles i FilterDesktop

CombineParticles (opis do rozszerzenia)

  • tworzy nowa czastke np. Ds+ z czastek podanych na wejsciu zgodnie ze specyfikacja w DecayDescriptor.
Mozna podawac wiele lokacji input. Algorytm dba aby czastki sie nie powtarzaly tzn usuwa combinacje zawierajace w drzewie rozpadu dwie czastki utworzone sa z tej samej protoczastki.

FilterDesktop (opis do rozszerzenia)

  • sluzy do zakladania ciec jak w przykladzie np. ADMASS.

Lista nazw czastek ktore uzywamy w DecayDescriptor znajduje sie $PARAMFILESROOT/data/ParticleTable.txt

Przykladowa selekcja Bs0 -> Ds- pi+

Najpierw tworzona jest czastka Ds- (pierwszy CombineParticles) a nastepnie Bs0 (drugi CombineParticles). Opcje znajduja sie na ~lhcbsoft/selopts/MySelBs2Dspi.py. Tam tez znajduja sie opcje glowne DaVinci_Bs2Dspi.py (odpowiednik DaVinci.py z wykomentowana przykladowa selekcja i wpisana selekcja Bs2Dspi). Aby uruchomic ten przyklad nalezy przekopiowac DaVinci_Bs2Dspi.py i MySelBs2Dspi.py (aby je swobodnie modyfikowac) do katalogu $DAVINCIROOT/options i uruchomic:
  cd ../job
  gaudirun.py ../options/DaVinci_Bs2Dspi.py ../options/DaVinciTestData.py
Prosze zwrocic uwage na miejsce wlaczania opcji MySelBs2Dspi.py w DaVinci_Bs2Dspi.py. Kolejnosc linijek w opcjach jest WAZNA.
importOptions( "$DAVINCIROOT/options/MySelBs2Dspi.py" )
a dane mozna dolaczyc w DaVinciTestData.py
importOptions( "/home/people/lhcbsoft/dataopts/Bs2Dspi.py")

Na razie nie ma jeszcze innych przykladow selekcji offline napisanych w opcjach .py ale wszystkie selekcje Hlt2 juz sa przetlumaczone (ten sam syntax co offline) i mozna je ogladac w $HLTSELECTIONSROOT/options

Wymogi dotyczace selekcji

Selekcja offline

Sygnal generowany jest programem Gauss. Zwykle zbiory istnieja w bazie danych. Typowo jest to kilkaset tysiecy przypadkow produkcji hadronu b ktorego produkty rozpadu wpadaja w obszar czuly detektora. Nie ma zadnych ciec kinematycznych, wydajnosc jest wiec stosunkowo niska. Ciecia nalezy tak dobrac aby osiagnac stosunek S/B w okolicach 1.

Tlo przygotowywane jest centralnie. Zawiera przypadki bbbar ktore przeszly faze preselekcji. Zwykle okolo kilka milionow dostepnych jedynie poprzez interfejs gridowy Ganga. Kopie duzej czesci tych danych mamy lokalnie (LokalneDane).

Preselekcja

Zwykle jest to poluzowana selekcja tak aby osiagnac odpowiedni stopien redukcji dla danych bbar inclusive.

Selekcja Hlt2

Selekcja wykonywana na farmie online. Powinna miec wydajnosc bliska 100% (mierzona wzgledem selekcji offline) ale obecne doswiadczenia sa blizsze granicy 75-85%i redukowac przypadki L0+Hlt1 do czestosci kilku Hz. Czestosc te sprawdza sie na danych minimum bias ktore przeszly L0+Hlt1 (w praktyce uruchamia sie na tasmach MC minimum bias L0 i aktywuje sie w opcjach tryger Hlt1).

Linki

  • Prezentacje na ostatnich SW.
    • SW grudzien 2008 - Juan Palacios - DaVinci configurable and Python job options
    • SW wrzesien 2008.
    • Prezentacja PK na SW marzec 2008. Jest tam duzo pozytecznych rzeczy (Wednesday morning) ale troche zbyt technicznych. Do napisania selekcji wystarczy zrozumiec jak nalezy konstruowac opcje za pomoca predefiniowanych zmiennych.
  • DaVinci info: tutorial etc.

-- MariuszWitek - 19 Jan 2009

Topic revision: r12 - 2010-03-15 - SzymonKukulak
 
This site is powered by the TWiki collaboration platform Powered by Perl This site is powered by the TWiki collaboration platformCopyright © 2008-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback