Tags:
create new tag
, view all tags

Histogramy i NTuple w DaVinci

Wybor odpowiednich zmiennych oraz optymalnych wartosci ciec dla selekcji nie jest prosty. Na szczescie istnieja metody, dzieki ktorym nie trzeba dobierac ciec metoda ''prob i bledow" - nalezy jednak wyprodukowac histogramy i ntuple dla danej selekcji.

Histogramy

Produkcje histogramow dla danej selekcji najlepiej wlaczyc do pliku zawierajacego zdefiniowane dla tej selekcji ciecia (np. MySelBs2Dspi.py). Wazne jest, aby na poczatku zaimportowac metode PlotTool - nalezy do pliku z selekcja dolaczyc linijke:
from Configurables import LoKi__Hybrid__PlotTool as PlotTool
Po zdefniowaniu algorytmu (np. MySelBs2Dspi) i ciec dla daughters/combination/mother, histogramy odpowiadajace czastkom daughters produkujemy nastepujaco:
MySelBs2Dspi.HistoProduce = TRUE
MySelBs2Dspi.addTool( PlotTool("DaughtersPlots") )
MySelBs2Dspi.DaughtersPlots.Histos = {
         "PT/GeV" : ('PT_%1%_%2%',0,10) , 
         "MIPCHI2DV(PRIMARY)" : ('IPS_%1%_%2%',0,16)
}
Jak widac, wewnatrz DaughersPlots wpisujemy zmienne, ktore chcemy wyplotowac:

- w " " (np. "MIPCHI2DV(PRIMARY)") wpisujemy nazwe zmiennej (ktora musi byc zgodna z nazwa uzywana przez DaVinci),

- w ' ' (np. 'IPS_%1%',) wpisujemy nazwe histogramu odpowiadajacego danej zmiennej (nazwe te mozemy wybrac dowolnie, nie musi byc ona zgodna z DaVinci),

- symbol %1% oznacza, dla ktorej czastki z DecayDescriptor produkujemy histogram,

- podane za nazwa histogramu liczby oznaczaja zakres rozkladu.

Analogicznie dolaczymy histogramy dla czastki mother:

MySelBs2Dspi.addTool( PlotTool("MotherPlots") )
MySelBs2Dspi.MotherPlots.Histos = {
         "M/GeV"  : ('Mass',0,10) ,
         "APT/GeV" : ('APT',0,5) ,
         "VFASPF(VCHI2/VDOF)" : ('Chi2',0,50) ,
         "BPVIPCHI2()" : ('IPS',0,50) ,
         "BPVDIRA" : ('BPVDIRA',-1,1) ,
         "BPVVDCHI2" : ('FSchi2',0,50) ,
         "P/GeV" : ('P',0,20)
}

Wazne jest to, ze nie ma CombinationPlots - ciecia, ktore zostaly zawarte w CombinationCut, wpisujemy do MotherPlots. Jest to zrozumiale: ciecia CombinationCut i MotherCut dotycza tej samej czastki (w naszym przykladzie - Bs). CombinationCut stosowane sa przed fitem wierzcholka, natomiast MotherCut - po dofitowaniu wierzcholka.

Mozna za pomoca DaughtersPlots lub MotherPlots utworzyc histogramy nawet dla tych zmiennych, dla ktorych nie zdefiniowalismy ciec.

W celu wykonania opisanego algorytmu, nalezy do pliku zawierajacego produkcje histogramow dodac:

from Configurables import DaVinci
DaVinci().UserAlgorithms += [ MySelSequence ]

a w DaVinci.py nalezy zaimportowac plik z histogramami:

importOptions("DAVINCIROOT/options/MySelBs2Dspi_histos.py")

Kompletny plik, zawierajacy opisywana w DaVinciSelection selekcje Bs2Dspi, z dolaczona produkcja histogramow znajduje sie na ~lhcbsoft/selopts/MySelBs2Dspi_histos.py ,lub w zalacznikach do tej strony (aby plik dzialal poprawnie, nalezy wykasowac _new z roszerzenia).

NTuple

Oprocz opisanych wyzej histogramow, mozna dla danej selekcji wyprodukowac NTuple. Produkcje NTupli najwygodniej zawrzec w osobnym pliku, w opcjach Pythona.

Na poczatek nalezy zaimportowac odpowiednie metody, np. :

from Configurables import DecayTreeTuple, NeuralNetTmva, EventTuple, HltDecReportsMaker, TupleToolTrigger
from Configurables import BackgroundCategory, TupleToolMCBackgroundInfo, TupleToolDecay, UpdateMuonPIDInProtoP

Nastepnie nalezy zdefiniowac odpowiedni algorytm:

tupleBs2JpsiEta = DecayTreeTuple("tupleBs2JpsiEta")

Utworzenie NTupli wymaga podania dokladnego schemat rozpadu, tzn:

tupleBs2JpsiEta.Decay = "[B_s0 -> (^J/psi(1S) -> ^mu+ ^mu-) (^eta -> ^gamma ^gamma)]cc"
W powyzszym przykladzie czastki mu oraz gamma sa juz czastkami pierwotnymi. Przed podaniem schematu rozpadu nalezy wyspecyfikowac lokacje czastek, analogicznie jak dla standardowej selekcji w DaVinci:
tupleBs2JpsiEta.PhysDesktop.InputLocations = [ "Phys/SelBs2JpsiEta" , "Phys/Jpsi2DiMuon" , "Phys/SelEta2GammaGamma" ]
Nastepnie nalezy wybrac czastki, dla ktorych chcemy utworzyc NTuple. W tym celu uzywamy metody Branches:
tupleBs2JpsiEta.Branches = {
    "muonp"  : "[B_s0 -> (J/psi(1S) -> ^mu+ mu-) (eta -> gamma gamma)]cc"
   }
Interesujaca nas czastke oznaczamy przez ^ (w przykladzie: ^mu+), nazwa w " " ("muonp") jest dowolna i nie musi byc zgodna z DaVinci. Jezeli opuscimy te linie, wyprodukowany ntuple zawierac bedzie standardowe nazwy czastek.

Na koniec nalezy podac liste Tooli, ktorych uzywamy do produkcji NTupli, np.:

tupleBs2JpsiEta.ToolList = [
      "TupleToolKinematic"
    , "TupleToolPropertime"
     ]
Zastosowanie wymienionych Tooli pozwala na wyprodukowanie NTupli zwiazanych z wielkosciami kinematycznymi, dla wszystkich czastek uwzglednionych w Branches.

Algorytm z produkcja NTupli dolaczamy do DaVinci analogicznie jak inne algorytmy, tzn:

from Configurables import DaVinci 
DaVinci().UserAlgorithms += [ tupleBs2JpsiEta ]
i importujemy plik w DaVinci.py .

Pelny plik do produkcji NTupli znajduje sie na ~lhcbsoft/selopts/Bs2JpsiEta_tuple.py ,lub w zalacznikach do tej strony.

Linki

-- KatarzynaSenderowska - 29 Jan 2009

Topic attachments
I Attachment History Action Size Date Who Comment
Texttxt Bs2JpsiEta_tuple.py.txt r1 manage 2.1 K 2009-02-18 - 13:25 UnknownUser  
Unknown file formatpy_new Bs2JpsiEta_tuple.py_new r1 manage 2.1 K 2009-02-18 - 13:29 UnknownUser  
Texttxt MySelBs2Dspi_histos.py.txt r1 manage 2.8 K 2009-02-18 - 13:19 UnknownUser  
Unknown file formatpy_new MySelBs2Dspi_histos.py_new r1 manage 2.8 K 2009-02-18 - 13:29 UnknownUser  
Topic revision: r11 - 2010-10-26 - KatarzynaSenderowska
 
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