Upload
aido177
View
222
Download
2
Embed Size (px)
Citation preview
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
1/92
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
2/92
Mc lc
Li ni u 4
1 Gii thiu v ROOT 5
1.1 Gii thiu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.2 Lch s hnh thnh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.3 Mt s tnh nng c bn ca ROOT . . . . . . . . . . . . . . . . . . . . . 6
1.4 Cu trc ca ROOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.5 Cc lp ca ROOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.6 Cch thc ci t v thc thi ROOT . . . . . . . . . . . . . . . . . . . . . 9
1.6.1 Cch ci t. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.6.2 Cch chy chng trnh trong ROOT . . . . . . . . . . . . . . . . . 10
1.7 Mt s ch khi s dng ROOT . . . . . . . . . . . . . . . . . . . . . . . 121.7.1 Quy c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121.7.2 Mt s bin ton cc quan trng . . . . . . . . . . . . . . . . . . . 12
1.8 CINT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.9 ACLiC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.10 Cch bin dch macro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2 Kin thc C++ cn bn cho ROOT 15
2.1 Cc lnh xut nhp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.2 Khai bo bin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.3 Vit nhiu dng lnh mt lc . . . . . . . . . . . . . . . . . . . . . . . . . 162.4 Cc php ton. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.5 Mt s cu trc iu khin . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.5.1 Cu trc iu khinif...else... . . . . . . . . . . . . . . . . . . . . . 172.5.2 Cu trc lpfor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.5.3 Cu trc lpwhile . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.5.4 Cc lnh cho vng lp:continuevbreak . . . . . . . . . . . . . . . 18
2.6 Cc lnh dnh cho file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.7 Mng (Array & Vector). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.8 Hm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.9 Con tr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.10 Lp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
3/92
MC LC ng Nguyn Phng
2.11 Bi tp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3 Histogram 25
3.1 Khai bo histogram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.2 Mt s thao tc vi histogram . . . . . . . . . . . . . . . . . . . . . . . . . 253.3 Chng histogram (histogram stack) . . . . . . . . . . . . . . . . . . . . . . 293.4 Histogram 2 chiu v 3 chiu. . . . . . . . . . . . . . . . . . . . . . . . . . 303.5 Profile histogram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.6 Bi tp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4 Hm 35
4.1 Khai bo hm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354.2 Khai bo hm c cha tham s . . . . . . . . . . . . . . . . . . . . . . . . 36
4.3 Lm khp histogram theo hm. . . . . . . . . . . . . . . . . . . . . . . . . 384.4 TMinuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414.5 Bi tp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5 th 46
5.1 Canvas v pad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465.2 Bng ch gii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495.3 Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515.4 GraphError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525.5 MultiGraph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535.6 Cc ty chnh v th. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545.7 Cch to vn bn v biu thc ton hc . . . . . . . . . . . . . . . . . . . 575.8 Graphics Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595.9 Bi tp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
6 Cc th vin ton hc 62
6.1 Cc hm ton hc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
6.2 S ngu nhin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636.3 Ma trn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646.4 Vector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676.5 Lorentz Vector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696.6 Bi tp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
7 File 72
7.1 Khai bo file. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727.2 Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
7.2.1 TNtuple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747.2.2 TTree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
2
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
4/92
MC LC ng Nguyn Phng
7.2.3 Cu trc ca tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767.3 Cch to v truy xut d liu t file root . . . . . . . . . . . . . . . . . . . 77
7.3.1 Cch to file root . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777.3.2 Cch truy xut file root . . . . . . . . . . . . . . . . . . . . . . . . 78
7.4 X l s liu c cu trc dng tree . . . . . . . . . . . . . . . . . . . . . . 807.5 Bi tp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Li kt 85
Ti liu tham kho 86
A Cch ci t ROOT cho HH Linux 87
B Bng k hiu mu v marker 89
C K hiu LATEX trong ROOT 90
3
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
5/92
Li ni u
Tp ti liu Hng dn s dng ROOT cho h iu hnh Windows c binson nhm mc ch gii thiu cho cc bn trong nhm NMTP v gi phn mm mngun m ROOT, mt trong nhng cng c x l s liu ph bin nht hin nay trongngnh Vt l Ht nhn v Nng lng cao. Mc d y l mt cng c kh thng dng, v ang c s dng trong hu ht cc th nghim ln trn th gii, tuy nhin likh l lm vi cc bn sinh vin chuyn ngnh Vt l Ht nhn ti Vit Nam. Do qua
tp ti liu ny, ti hi vng s gii thiu n cc bn thm mt cng c x l s liu huch na bn cnh cc cng c m cc bn ang s dng nh Origin, Matlab,...
Ni dung ca ti liu tp trung vo nhng vn c bn, ct li nht ca ROOT, cckin thc c trnh by ngn gn v i km cc v d minh ha nhm lm sng t thmvn . Cc ch c la chn trnh by trong ti liu ny l cc vn c bn cnnm vng m tc gi c kt c sau mt thi gian s dng ROOT. Ngoi ra, cuimi phn u c cc bi tp cc bn c th luyn tp vi cc kin thc thu nhn.
Tp ti liu c bin son nhm mc ch trnh by s lc cho cc bn nhng kinthc v k nng c bn nht trong vic s dng ROOT cho cng vic ca mnh. Do, ni dung ca bi vit kh c ng v khng i qu su vo chi tit. c th tmhiu v ROOT mt cch trn vn hn, cc bn c th vo trang web ca ROOT tihttp://root.cern.ch/drupal/;hoc tham gia trao i, tho lun vi cc chuyn gia tihttp://root.cern.ch/drupal/content/roottalk-digest.
ng Nguyn Phng
4
http://root.cern.ch/drupal/http://root.cern.ch/drupal/http://root.cern.ch/drupal/content/roottalk-digesthttp://root.cern.ch/drupal/content/roottalk-digesthttp://root.cern.ch/drupal/content/roottalk-digesthttp://root.cern.ch/drupal/8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
6/92
Chng 1
Gii thiu v ROOT
1.1 Gii thiu
ROOT l mtframework(th vin cha cc m lnh) dng cho vic phn tch v x l sliu, ch yu cho ngnh Vt l Ht nhn v Ht c bn (Vt l Nng lng cao). Chngtrnh ny c xy dng da trn ngn ng lp trnh C++ vi kh nng lp trnh hngi tng (object-oriented programing).
ROOT c pht trin u tin bi Ren Brun v Fons Rademakers vo gia nhng nm1990 ti T chc Nghin cu Nguyn t Chu u (CERN), v n khong nhng nmu th k 21 n thay th hon ton cho cc framework c xy dng bng ngn ng
Fortran trc ti t chc ny.Mt im c trng d nhn thy nht ca ROOT l vic t chc, sp xp d liudi dng cy (tree) nhm gip cho vic lu tr v x l mt lng ln d liu c hiuqu hn. Hin nay, chng trnh ny ang c s dng trong cc th nghim ti LargeHadron Collider (LHC) v ti hu ht cc th nghim vt l nng lng cao trn th gii.
1.2 Lch s hnh thnh
ROOT c pht trin trong d n th nghim NA49 ti trung tm Nghin cu Nguynt Chu u (CERN). Th nghim ny i hi phi x l mt lng d liu rt ln, khong10 Terabytes/run, do i hi phi pht trin mt th h cng c x l d liu mi thay th cho cng c hin ang c.
Vo gia nhng nm 1990, Ren Brun v Fons Rademakers sau nhiu nm pht trin cccng c x l v m phng cho cc th nghim vt l nng lng cao nh PAW, PIAF,GEANT nhn ra rng cc th vin ngn ng lp trnh Fortran dng nh t ti
gii hn ca n. D cho vn cn rt thng dng, cc cng c ny cn phi c nng cp c th tng thch cho lng d liu khng l ca cc th nghim trong tng lai, c
5
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
7/92
CHNG 1. GII THIU V ROOT ng Nguyn Phng
bit l cc th nghim ti Large Hadron Collider (LHC). Cng lc , s pht trin cakhoa hc my tnh c bit l k thut lp trnh hng i tng to tin hxy dng mt cng c da trn nn tng k thut ny.
S pht trin ca ROOT phn ln l nh vo s tng tc ca nhng ngi dng vngi pht trin. V y l m ngun m cho nn bn thn ngi dng cng c th trthnh ngi pht trin bng cch xy dng v tch hp cc m ngun ca mnh vo trongROOT.
T nm 1995 n nay, c rt nhiu phin bn ROOT c ra i:
11/1995: phin bn u tin ROOT 0.5 c cng b
1996: s dng CINT cho ROOT
1997: phin bn ROOT 1.0 1998: phin bn ROOT 2.0
2001: phin bn ROOT 3.0
2004: phin bn ROOT 4.0
2005: phin bn ROOT 5.0
2011: phin bn ROOT 5.32
2013: phin bn ROOT 5.34
1.3 Mt s tnh nng c bn ca ROOT
Lu tr d liu:chng ta c th lu tr cc d liu (th hoc qua x l) vthm ch l cc i tng C++ vo trong cc file nn dng .root. Cc d liu clu li di dng cu trc cy (tree) gip cho tc truy xut d liu c tng
ln nhanh chng so vi vic truy xut cc d liu dng thng thng. Truy xut d liu:d liu c lu tr trong cc file root c th c truy xut
t my tnh hoc thng qua mng internet. Vi cc d liu c kch thc ln, ta cth lu tr trn mng grid. Cc d liu c th c chia nh ra nhiu file root khcnhau v c lin kt li trong qu trnh x l.
X l d liu:ROOT l mt th vin ln tp hp rt nhiu cc cng c ton hcv thng k gip chng ta c th x l d liu mt cch tt nht. ROOT cng htr cc x l theo hng lp trnh hng i tng hoc lp trnh song song.
6
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
8/92
CHNG 1. GII THIU V ROOT ng Nguyn Phng
Trnh by kt qu:cc kt qu c th c trnh by theo rt nhiu dng khcnhau (histogram, chm im, ng,...) v c th c hiu chnh trc tip trnhnh v. Cc hnh v trong ROOT c th c xut ra theo nhiu nh dng khcnhau (pdf, eps, png,...).
M phng:ROOT c kh nng m t cc hnh hc khng gian phc tp, vic mphng trong ROOT c thc hin thng qua cc gi m t hnh hc, tracker vMonte Carlo o.
1.4 Cu trc ca ROOT
Hnh1.1trnh by cu trc ca ROOT. Cc th mc chnh ca ROOT gm c: bin,lib,include,tutorialsvtest.
Hnh 1.1: Cu trc ca ROOT
bin cha cc file thc thi (executable). Mt s file quan trng trong th mc bin:
root.exe:chy root
rootcint:cung cp th vin cc lp cho CINT
rmkdepend:phin bn ca makedependcho ROOT
7
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
9/92
CHNG 1. GII THIU V ROOT ng Nguyn Phng
root-config:script xc nh cc flag v th vin cho vic bin dch chng trnhc s dng ROOT
cint:chy trnh thng dch C++
makecint:xc nh cc flag v th vin ca rootcint
proofd: chng trnh daemon to user cho qu trnh tnh ton song song bngROOT (PROOF)
proofserv:thc hin tnh ton PROOF
rootd:chng trnh daemon dng iu khin vic truy xut cc file
lib cha th vin chia s (shared object) ca cc lp c nh ngha trong ROOT,ngi dng c th lin kt cc th vin ny vi chng trnh ca mnh. Hnh 1.2 trnhby s ph thuc gia cc th vin vi nhau.
include cha cc file header m t nh ngha ca cc lp.
tutorials cha cc file v d gip ngi dng nm r thm v cc khi nim, k thuttrong ROOT.
test cha cc file v d test framework. Khi mt phin bn mi ca framework cxy dng, cc v d trong th mc ny s c bin dch v thc thi test kh nngca phin bn mi.
Hnh 1.2: S ph thuc ca cc th vin trong ROOT
8
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
10/92
CHNG 1. GII THIU V ROOT ng Nguyn Phng
1.5 Cc lp ca ROOT
Trong ROOT hin c khong hn 250 lp (class) c chia thnh 11 loi:
Cc lp c bn: bao gm cc lp tng thp nht trong cu trc lp ca ROOT,lm nn tng xy dng nn cc lp khc. VD: TObject, TClass,...
Cc lp lu tr: bao gm cc lp to cu trc d liu (array,list,set,...)
Cc lp histogram:bao gm cc lp histogram 1D, 2D, 3D, cc lp lm khp d liu,hm.
Cc lp ntuple: bao gm cc lp nhTTree, TNtuple,...
Cc lp ha 2D: bao gm cc ha 2D c bn (ng thng, hnh hp, ellipse,...) Cc lp ha 3D: bao gm c khi hnh hc 3D v cc hnh hc detector.
Cc lp giao din ngi dng MOTIF: cha cc thnh phn giao din tng t nhcc cng c khc nh ca s, nt bm, menu,...
Cc lp giao din tng tc: cha cc ng dng tng tc, trnh thng dch C++.
Cc lp tng tc vi h iu hnh: cc lp tng tc vi h iu hnh thng quaTSystem(TUnixSystem, TWinNTSystem, TMacSystem).
Cc lp mng (network): cc ng dng xy dng h thng mng.
Cc lp ti liu: cho php to cc ti liu (dng HTML), file header v sourceC++,...
1.6 Cch thc ci t v thc thi ROOT
1.6.1 Cch ci t
ROOT l gi phn mm m ngun m min ph, c th c download ti trang webhttp://root.cern.ch/drupal/,thch hp cho rt nhiu h iu hnh nh Linux, Windows,Mac OS,...
Trong phn ny tc gi ch trnh by cch thc ci t ROOT cho h iu hnh Windows,cn cch ci t cho h iu hnh Linux c trnh by trong phn Ph lc A. i vicho h iu hnh Windows, cch thc n gin nht ci t ROOT l ci t thng
file binary ca chng trnh ny, cc bc tin hnh nh sau:
9
http://root.cern.ch/drupal/http://root.cern.ch/drupal/http://root.cern.ch/drupal/http://root.cern.ch/drupal/http://root.cern.ch/drupal/8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
11/92
CHNG 1. GII THIU V ROOT ng Nguyn Phng
Download ROOT ti:http://root.cern.ch/drupal/content/downloading-root, nhp chn version cndownload (Hnh1.3).
ng vi mi version s c nhiu file source khc nhau cho mi h iu hnh, chnfile c ui.msicho h iu hnh Windows (Hnh1.4).
Double click vo file download v ci t nh nhng chng trnh bnh thng.
Hnh 1.3: Cc phin bn ca ROOT
Hnh 1.4: File download
1.6.2 Cch chy chng trnh trong ROOT
khi ng ROOT, ta c th thc hin 1 trong 2 cch sau:
Cch 1:double click vo biu tng ROOT c to ra sau khi ci t.
Cch 2:m ca sCommand Prompt, g lnhroothocroot -l.
G lnh.q thot ra khi ROOT.
thc thi cc lnh, ta c th g cc lnh ny trc tip ti du nhc lnh ca ROOThoc to mt file macro v chy file ny ti du nhc lnh ca ROOT. Thng thng cc
10
http://root.cern.ch/drupal/content/downloading-roothttp://root.cern.ch/drupal/content/downloading-root8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
12/92
CHNG 1. GII THIU V ROOT ng Nguyn Phng
Hnh 1.5: Giao din khi khi ng ca ROOT
file macro c s dng trong ROOT l cc file C++, cho nn thng c ui dng nh.c,.cpphoc.cxx. Cc lnh trong file macro c bao li bi mt cp ngoc nhn {}.
V d:to mt file macroten.cxxyu cu ngi dng nhp vo tn ca mnh:
{
Char_t ten[ 1 0 0 ] ;
cout
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
13/92
CHNG 1. GII THIU V ROOT ng Nguyn Phng
Ngoi ra ta cng c th gi thc thi macro ngay t bn ngoi ROOT bng cch g lnhnh sau
$ r oo t t en.cxx
Trong trng hp thc thi macro, nu file macro c cha nhiu hm bn trong, ta cnt tn hm chnh trong file trng vi tn ca file.
1.7 Mt s ch khi s dng ROOT
Trong phn ny ti s trnh by mt s quy c k hiu v nhng iu cn lu trongROOT cc bn c th d dng theo di v nm bt ngha ca cc v d nhngphn sau.
1.7.1 Quy c
Cc quy c k hiu trong ROOT gm c:
Cc lp bt u bng k tT, v d nhTH1, TTree,...
Cc khai bo khng thuc lp c kt thc bng _t, v d nhInt_t, Float_t,...
Cc thnh phn ca d liu c bt u bng k tf, v d nhfTree,...
Cc hm, lnh trong lp c bt u bng k t hoa, v d nhLoop(),Integral(),...
Cc hng s c bt u bng k tk, v d nhkRed, kInitialSize,...
Cc bin ton cc c bt u bng k tg, v d nhgEnv, gSystem,...
Cc thnh phn tnh ca d liu c bt u bng k tfg, v d nhfgTokenClient,...
Cc bin cc b v tham s c bt u bng k t thng, v d nhnbytes,...
Cc lnh, hm gn gi tr v truy xut gi tr c bt u bng cc tSetvGet,v d nhSetLast(), GetFirst(),...
1.7.2 Mt s bin ton cc quan trng
gROOTlu gi thng tin ca hin ti trong ROOT, bng cch s dng gROOTtac th truy cp ti tt c cc i tng ang c to ra trong ROOT.
gSystemtng tc vi h iu hnh.
12
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
14/92
CHNG 1. GII THIU V ROOT ng Nguyn Phng
gFiletr n file ang m trong ROOT.
gDirectorytr n th mc ang lm vic.
gPadtr n pad ang hot ng.
gRandomtr n b phn pht s ngu nhin ang hot ng.
gEnvcha tt c cc thit lp mi trng trong qu trnh s dng ROOT.
V d:
root [ 0 ] gROOT>Reset ( ) ;
root [ 1 ] gSystem>Load ( " . . / l i b /libQFramework . so" ) ;
root [ 2 ] gStyle>SetFrameBorderMode ( 0 ) ;
1.8 CINT
CINT l mt trnh thng dch C++ c to bi Masa Goto, v c tch hp trongROOT thng dch cc lnh C++ do ngi dng to ra. Trnh thng dch ny c nhimv c v thc thi tng cu lnh do ngi dng to ra, nhng khng bin dch thnhngn ng my. Mc d vic ny lm cho tc chy mt chng trnh thng dch chm
hn rt nhiu so vi mt chng trnh c bin dch, tuy nhin vic ny s thun tinhn cho ngi dng trong trng hp phi chnh sa m ngun nhiu ln do thi gianbin dch lu hn nhiu so vi thi gian thng dch.
Mc d c tch hp trong ROOT nhng CINT l mt chng trnh c lp v c thdownload ti http://root.cern.ch/drupal/content/cint.
Cch vit nhiu dng lnh
Cc cm dng lnh bt u v kt thc bng cp ngoc nhn {}
Cc lnh bn trong kt thc bng du ;
Tt c cc i tng c to ra l ton cc
1.9 ACLiC
ACLiC (Automatic Compiler of Libraries for CINT) l trnh bin dch c nhim v to
ra cc th vin chia s da trn m ngun C++ do ngi dng vit ra, s dng cc tychnh c thit lp tng t nh khi thc thi ROOT.
13
http://root.cern.ch/drupal/content/cinthttp://root.cern.ch/drupal/content/cint8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
15/92
CHNG 1. GII THIU V ROOT ng Nguyn Phng
Cch bin dch macro vi ACLiC c th bin dch c cc macro vi ACLiC,iu u tin l chng ta cn khai bo thm cc file header ph hp vo trong script camacro (iu ny l khng cn thit i vi CINT).
V d: to ra cc th vin chia s, ta thm du +vo sau tn file macro khi load, chng hnnh
root [ 0 ] . L t en.cxx+
Chng trnh s bin dch v to ra cc file chia s c ui .so. V d nh file macro cachng ta c tn lmacro1.cxxth file th vin to ra s c tn l macro1_cxx.so
1.10 Cch bin dch macro
bin dch macro thnh mt chng trnh c lp (stand alone) chng ta cn phi bindch vi mt trnh bin dch C/C++, trong trng hp ny chng ta s s dng g++.Trc khi bin dch, cn phi chc chn l tt c cc file header cn thit u cinlcude. lm c iu , chng ta s dng cng c root-config, y l mt scriptca ROOT cung cp tt c cc flag v th vin cn thit c th bin dch c chngtrnh v lin kt chng ti cc th vin ca ROOT. Lu rng c th to ra mt
chng trnh c lp, chng ta cn khai bo hmmain()trong code. Hm main()c thc to ra ch vi mt nhim v duy nht l gi hm macro.
V d:
# i f n d e f __CINT__
i n t main ( ) {
Macro ( ) ;
r e t u r n 0 ;
}
# e n d i f
Khi chy chng trnh trong ROOT,__CINT__c xc nh th on code trn s khngc thc thi, ngc li khi bin dch vi g++CINT khng c xc nh th on codetrn s c thc thi.
bin dch mt chng trnh c lp t fileMacro.Cta ch cn g on lnh:
g++ o M ac ro.exe Macro. C rootconfig cflags libs
14
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
16/92
Chng 2
Kin thc C++ cn bn cho ROOT
ROOT l mt framework c xy dng trn nn tng ngn ng lp trnh C/C++, do mt s kin thc v lp trnh C/C++ l cn thit c th s dng c ROOT.
Trong phn ny, ti s trnh by mt s im chnh ca ngn ng lp trnh C++ bsung kin thc nn tng cho vic s dng ROOT trong nhng phn sau. Nu cc bn c kin thc v lp trnh C++ trc ri th c th b qua phn ny m i thng vonhng phn sau.
2.1 Cc lnh xut nhp
cin,cout: cc lnh nhp, xut d liu trn mn hnh. endl: lnh kt thc dng v xung dng mi.
V d:
root [ 0 ] cout
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
17/92
CHNG 2. KIN THC C++ CN BN CHO ROOT ng Nguyn Phng
2.3 Vit nhiu dng lnh mt lc
Trong ROOT, c th vit c nhiu dng lnh cng mt lc, ta s dng cp ngoc
nhn {} m u v kt thc cc dng lnh.V d:
root [ 0 ] {
end with ' } ' , '@ ':abort > I nt _t x = 0 , y = 3 ;
end with ' } ' , '@ ':abort > x = y 2 ;
end with ' } ' , '@ ':abort > cout = so snh ln hn hoc bng
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
18/92
CHNG 2. KIN THC C++ CN BN CHO ROOT ng Nguyn Phng
ln(x) hm logarit t nhin
V d:
root [ 0 ] I n t_ t x=3 ; // x = 3
root [ 1 ] cout
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
19/92
CHNG 2. KIN THC C++ CN BN CHO ROOT ng Nguyn Phng
2.5.3 Cu trc lp while
Cu trc:while (iu kin) { cc lnh thc thi }
hocdo { cc lnh thc thi } while (iu kin)
V d:
root [ 0 ] I n t_ t x=5 ; do { cout
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
20/92
CHNG 2. KIN THC C++ CN BN CHO ROOT ng Nguyn Phng
close(),open(): lnh ng, m file.
V d:
root [ 0 ] ofstream f ( " f i l e . tx t " ) ; / / Mo mot f i l e c o t e n l a f i l e . t x t
d e g h i d u l i e uroot [ 1 ] f
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
21/92
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
22/92
CHNG 2. KIN THC C++ CN BN CHO ROOT ng Nguyn Phng
( Int_t ) 3
Ngoi ra, con tr cng c s dng trong khai bo mt mng, hm hay file.
V d:khai bo mt mng cha bin kiu s nguyn, a ch ca con tr tr ti cng chnhl a ch ca phn t u tin trong mng
root [ 0 ] Int_t a ;
2.10 Lp
Lp (class) l mt kiu d liu do ngi dng t nh ngha, c th bao gm trong n ccd liu v hm. Cch thc khai bo mt lp nh sau:
class {
:
d liu 1;
d liu 2;
hm 1;
....
} ;
Thuc tnh ca d liu v hm c cc dng: private(ch c truy xut bi cc thnhvin trong cng lp),protected(c th c truy xut bi cc thnh vin trong cng lphoc t cc lp k tha), hoc public(c th c truy xut t bn ngoi lp).
V d:
c l a s s Sinhvien { // Tao mot lo p co t en l a S i nh v ie n
p u b l i c:
Char_t ten[ 1 0 0 ] ;
Int_t tuoi;
Int_t diemthi;
Sinhvien ( ) {} / / C o n s t r uc t o r
~Sinhvien ( ) {} / / D e s t ru c t o r
v o i d ketqua ( ) {
i f( diemthi >= 5)
cout
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
23/92
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
24/92
CHNG 2. KIN THC C++ CN BN CHO ROOT ng Nguyn Phng
Bng 2.1: Cc trng s bc x WrLoi bc x v nng lng WrPhoton 1Electron & muon 1Neutron di 10 keV 5Neutron t 10 keV n 100 keV 10Neutron t 100 keV n 2 MeV 20Neutron t 2 MeV n 20 MeV 10Neutron trn 20 MeV 5Proton trn 2 MeV 5Ht , ion nng 20
Bng 2.2: Cc trng s m Wt
M/C quan Wt M/C quan WtTuyn sinh dc 0.20 V 0.05Ty ca xng 0.12 Gan 0.05Rut kt 0.12 Thc qun 0.05Phi 0.12 Tuyn gip 0.05D dy 0.12 Da 0.01Bng quang 0.05 B mt xng 0.01Cc m cn li 0.05
nh theo cng thc bn thc nghim Weizsacker:
EB(A, Z) = av A +as A2/3 +ac
Z2
A1/3+aa
(N Z)2
4A +
A1/2
viN =A Z, av= 15.7 MeV, as= 17.2 MeV, ac= 0.7 MeV, aa= 93.2 MeV v= 0 nu A l,11.2 MeV nu Z v A cng chn, +11.2 MeV nu Z v A cng l.Vit chng trnh:
Yu cu ngi dng nhp vo s khi A v lit k ra cc ng v bn c cng
s khi A . Yu cu ngi dng nhp s nguyn t Z v s khi A, xc nh l ng v
no, c bn hay khng, nu khng bn th s phn r pht , + hay.
Bng danh sch cc nguyn t c lit k trong fileelement_list.txt, c downloadti http://nmtp.wikispaces.com/file/detail/element_list.txt.
5. Download file ph Uranium c o bng detector HPGe 8192 knh ti http://nmtp.wikispaces.com/file/detail/Uranium.tka,file ny c th m c di
dng text. To mt lp c tn l Pho cha cc thnh phn:-tenfile: cha tn ca file ph.
23
http://nmtp.wikispaces.com/file/detail/element_list.txthttp://nmtp.wikispaces.com/file/detail/element_list.txthttp://nmtp.wikispaces.com/file/detail/Uranium.tkahttp://nmtp.wikispaces.com/file/detail/Uranium.tkahttp://nmtp.wikispaces.com/file/detail/Uranium.tkahttp://nmtp.wikispaces.com/file/detail/Uranium.tkahttp://nmtp.wikispaces.com/file/detail/Uranium.tkahttp://nmtp.wikispaces.com/file/detail/element_list.txt8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
25/92
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
26/92
Chng 3
Histogram
Theo nh ngha thng thng, histogram l mt dng biu phn b ca mt ilng no . Trong ROOT, lp histogram c k hiu l THdp, vi dl s chiu ca
histogram v pl kiu ca cc phn t cha trong histogram (tham kho thm ti ftp://root.cern.ch/root/doc/3Histograms.pdf). Cc li histogram chnh trong ROOTgm c: 1D, 2D, 3D v profile.
V d:TH1Fl lp histogram 1 chiu (1D), cc phn t trong histogram s c kiu s thc(float).
3.1 Khai bo histogram
Ta c th khai bo mt histogram theo c php nh sau:
* = new ("", "", , , );
V d:
root [ 0 ] TH1F h = new TH1F ( "h", " Pho gamma", 8 19 2 , 0 , 8 19 2) ;
V d trn khai bo 1 histogram tn l h c tiu l "Pho gamma" vi s khong chial 8192 khong (bin), rng mi khong chia l 1.
3.2 Mt s thao tc vi histogram
Sumw2(): thc hin lu tr tng bnh phng cc trng s i km vi cc gi tr cahistogram trong qu trnh ghi nhn (nn gi ngay sau khi khai bao histogram)
root [ 1 ] h>Sumw2 ( ) ;
25
ftp://root.cern.ch/root/doc/3Histograms.pdfftp://root.cern.ch/root/doc/3Histograms.pdfftp://root.cern.ch/root/doc/3Histograms.pdfftp://root.cern.ch/root/doc/3Histograms.pdf8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
27/92
CHNG 3. HISTOGRAM ng Nguyn Phng
Fill(x): tng 1 s m ti v tr tng ng vi gi tr a vo
root [ 1 ] h>Fill ( value ) ;
Fill(x, w): tng 1 s m vi trng swti v tr tng ng vi gi tr a voroot [ 1 ] h>Fill ( value,weight ) ;
SetBinContent(i, x): gn gi tr tng ng vi v tr ca khong chia
root [ 1 ] h>SetBinContent ( i ,value ) ;
GetBinContent(i): ly gi tr tng ng vi v tr ca khong chia
root [ 1 ] h>GetBinContent ( i ) ;
Integral(): tnh tch phn histogram
root [ 1 ] h>Integral ( ) ; / / t i nh t i c h phan tu b in 1 d en b in c uo i
root [ 2 ] h>Integral ( i , j ) ; // t in h t i ch phan tu bi n i den bin j
root [ 3 ] h>IntegralAndError ( i , j ,er r ) ; // t i nh t i c h phan tu b in
i den b in j , s a i s o thong ke cua t i c h phan duoc l uu vao t ro ng
e r r
Draw(): v histogramroot [ 1 ] h>Draw ( ) ;
V d:(xem Hnh3.1)
{
// Tao h is to gr am c o 5 khoang c h ia t u 0 den 5
TH1F h = new TH1F ( "h", "", 5 , 0 , 5 ) ;
h>Fill ( 1 ) ; / / T ang 1 s o dem t a i khoang c h ia t u 1 den 2
h>Fill ( 3 ) ; / / T ang 1 s o dem t a i khoang c h ia t u 3 den 4h>Fill ( 3 ) ; / / T ang 1 s o dem t a i khoang c h ia t u 3 den 4
h>Fill( 4 . 3 ) ; / / T ang 1 s o dem t a i khoang c h i a t u 4 den 5
h>Draw ( ) ; / / Ve h i s t og r a m
}
Truy xut cc thng s ca histogram:
GetEntries(): s lng cc gi tr c ghi nhn trong histogram
GetMean(), GetMeanError(): gi tr trung bnh v sai s tng ng GetRMS(), GetRMSError(): cn ca phng sai v sai s tng ng
26
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
28/92
CHNG 3. HISTOGRAM ng Nguyn Phng
Hnh 3.1: Biu ca v d
GetMaximum(), GetMinimum(): gi tr ln nht v nh nht trong histogram
GetMaximumBin(), GetMinimumBin(): ly v tr bin tng ng vi gi tr ln nhtv nh nht
GetBinCenter(i): gi tr trung tm ca bin th i
V d:S dng v d trong Hnh3.1
root [ 0 ] cout
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
29/92
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
30/92
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
31/92
CHNG 3. HISTOGRAM ng Nguyn Phng
h1>SetFillColor ( kRed ) ;
/ /Tao h i s t og r a m h2 ba ng c a ch g i e o n ga u n h i en ham e x p o n e n t i a l
TH1F h2 = new TH1F ( "h2", " H i s to g r am 2 ", 1 00 ,4 , 4 ) ;
h2>FillRandom ( "expo", 1 0 0 0 0 ) ;
h2>SetFillColor ( kBlue ) ;
/ / Them h a i ham v ao s t a c k
hs>Ad d ( h1 ) ;
hs>Ad d ( h2 ) ;
/ / Ve h i s t og r a m
/ / hs>Draw ( " n o s t a c k " ) ; / / v e k ho ng x ep c ho n g
hs>Draw ( ) ; / / v e x ep ch on g
}
Hnh 3.3: V d v xp chng histogram: hnh bn tri l hai histogram v trn cng th, hnh bn phi l hai histogram c xp chng ln nhau.
3.4 Histogram 2 chiu v 3 chiu
Tng t nh vi histogram 1 chiu
V d:Histogram 2 chiu (xem Hnh3.4)
{
TH 2 h2 = new TH2D ( "h2", " 2 D h i s t o g r a m ",1 00 ,0 ,70 ,10 0 ,0 ,200 00) ;
Double_t x , y ;
f o r ( I nt _t i = 0 ; i < 1 0 0 0 0 ; i++) {
// G ieo ngau n hi en c ac g i a t r i x , y t he o ham G auss
x=gRandom>Gaus ( 4 0 , 1 0 ) ;
y=gRandom>Gaus ( 1 0 0 0 0 , 3 0 0 0 ) ;
h2>Fill ( x , y ) ;}
h2>Draw ( " c o l " ) ;
30
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
32/92
CHNG 3. HISTOGRAM ng Nguyn Phng
}
Hnh 3.4: V d histogram 2 chiu
V d:Histogram 3 chiu (xem Hnh3.5)
{
TH3D h3=new TH3D ( "h3", " 3 D h i s t o g r a m ",2 0 , 2 ,2 ,20 , 2 ,2 ,2 0 ,0 ,4 ) ;Double_t x , y , z ;
f o r ( I nt _t i =0 ; i Gaus (2 ,2) ;
y=gRandom>Gaus (2 ,2) ;
z=xx+yy ;
h3>Fill ( x , y , z ) ;
}
h3>SetFillColor ( kCyan ) ;h3>Draw ( " i s o " ) ;
}
3.5 Profile histogram
Profile histogram nhm gip cho ngi dng thy c s tng quan gia cc bin vi
nhau trong cng mt histogram (2 chiu hoc 3 chiu). Trong mt s trng hp, ccprofile c th c xem l s biu din thay th cho cc th histogram nhiu chiu.
31
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
33/92
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
34/92
CHNG 3. HISTOGRAM ng Nguyn Phng
Hnh 3.6: V d profile 1 chiu
}
hprof2d>Draw ( ) ;
}
Hnh 3.7: V d profile 2 chiu
33
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
35/92
CHNG 3. HISTOGRAM ng Nguyn Phng
3.6 Bi tp
1. Mt ngun phng x A c hot phng x nm 2000 l 1.2 mCi, v th biu
din hot ca ngun ny theo tng nm trong khong thi gian t nm 2000n 2020, bit chu k bn r ca ngun ny l 8 nm.
2. Mt sinh vin tin hnh th nghim o s m ghi nhn c theo khong ccht v tr ng n ngun. S m ghi nhn c theo khong cch c trnh bytrong Bng3.1, v th phn b s m theo khong cch v c lng s mghi nhn c ti khong cch d = 1.8m.
Bng 3.1: S m theo khong cch
Khong cch (m) 1 1.2 1.5 2 2.5S m 541 353 169 42 8
3. S dng file ph phng x o c tihttp://nmtp.wikispaces.com/file/detail/pho_do.tkav phng nn ti http://nmtp.wikispaces.com/file/detail/phong_nen.tka,ghi cc s m ca hai ph ny vo cc histogram tng ng.
Xc nh v tr knh c s m ln nht, nh nht ca ph o.
V cc histogram ca ph o, phng nn v ph o tr cho phng nn trncng 1 th. Gi : v mt histogram trn cng th vi histogram c v trc , ta thm option same vo trong lnh vDraw("same")
Tnh din tch nh sau khi tr phng.
34
http://nmtp.wikispaces.com/file/detail/pho_do.tkahttp://nmtp.wikispaces.com/file/detail/pho_do.tkahttp://nmtp.wikispaces.com/file/detail/phong_nen.tkahttp://nmtp.wikispaces.com/file/detail/phong_nen.tkahttp://nmtp.wikispaces.com/file/detail/phong_nen.tkahttp://nmtp.wikispaces.com/file/detail/phong_nen.tkahttp://nmtp.wikispaces.com/file/detail/phong_nen.tkahttp://nmtp.wikispaces.com/file/detail/pho_do.tkahttp://nmtp.wikispaces.com/file/detail/pho_do.tka8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
36/92
Chng 4
Hm
Trong ROOT, lp hm (function) c k hiu l TFd, vi dl s chiu ca ca hm. Vd TF1l lp hm 1 chiu, TF2l lp hm 2 chiu,...
4.1 Khai bo hm
C php chung cho vic khai bo mt hm l:
* = new ("", "", , );
Ta c th khai bo cng thc ca mt hm theo 1 trong 3 cch sau:Cch 1:to trc tip mt hm da vo cc cng thc C++ c sn
V d:Khai bo hm sin(x)/x (xem Hnh4.1)
root [ 0 ] TF 1 f = new TF 1 ( " f ", " s i n ( x ) / x", 0 , 1 00 )
root [ 1 ] f>Draw ( )
Cch 2:to trc tip mt hm da vo lp TMath
V d:Khai bo hm Gaussian cx= 50 v= 5.3 (xem Hnh4.2)root [ 0 ] TF 1 f = new TF 1 ( " f ", " [ 0 ] TMath : : Gaus ( x ,5 0 , 5. 3 ) ", 0 , 2 00 )
root [ 1 ] f>Draw ( )
Cch 3:t nh ngha hm ring
V d:Khai bo hm x2 + x + 1 = 0 (xem Hnh4.3)
Double_t my_func ( Double_t x ) {
r e t u r n ( xx+x+1);
}
root [ 0 ] TF 1 f = new TF 1 ( " f ", "my_func(x)", 0 , 1 0 0)
35
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
37/92
CHNG 4. HM ng Nguyn Phng
Hnh 4.1: th ca hm sin(x)/x
Hnh 4.2: th ca hm Gauss(50,5.3)
root [ 1 ] f>Draw ( )
4.2 Khai bo hm c cha tham s
Trong trng hp khai bo cc hm c tham s, k hiu ca cc tham s c t trong cpngoc vung []. Gi tr ca cc tham s c th c gn thng qua hm SetParameter()
36
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
38/92
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
39/92
CHNG 4. HM ng Nguyn Phng
4.3 Lm khp histogram theo hm
lm khp histogram, ta c th dng lnh Fit()(xem thm ti http://root.cern.
ch/root/HowtoFit.htmlvhttp://root.cern.ch/root/html/TH1.html#TH1:Fit) vic php sau:
>Fit(, ,... )
i vi mt s hm c bit, ta ch cn khai bo t kha m khng cn phi khai bohm:
gaus: hm Gaussian vi 3 tham s, f(x) = [0]*exp(-0.5*((x-[1])/[2])**2)
expo: hm e m vi 2 tham s, f(x) = exp([0]+[1]*x)
polN: hm a thc bc N, f(x) = [0] + [1]*x + [2]*x**2 + ...
Mt s option thng c s dng khi lm khp:
W: chuyn tt c trng s ca cc bin khc 0 v 1.
WW: chuyn tt c trng s ca cc bin v 1.
L: s dng phng php log likelihood.
U: s dng phng php lm khp do ngi dng t nh ngha.
V: s dng verbose mode.
E: s dng k thut Minos trong c lng sai s.
0: khng v kt qu lm khp.
V d: Gieo s ngu nhin phn b dng Gauss v lm khp li theo dng ny (xemHnh4.5)
{
TH1F h = new TH1F ( "h", " G a u s s i a n ",1 00 ,0 ,20 0) ;Float_t mean = 1 0 0 , sigma = 2 0 ;
f o r ( I nt _t i = 0 ; i < 1 0 00 ; i++) { // g i e o ngau n hi en 1 00 0 l a n
h>Fill ( gRandom>Gaus (mean ,sigma ) ) ; // g i e o ngau n hi en t he o
phan bo Gauss
}
TF 1 f = new TF 1 ( " f ", " [ 0 ] TMath : : Gaus( x , [ 1 ] , [ 2 ] ) ", 0 , 2 00) ;
f>SetParameters (10 ,10 ,10 ) ;
h>Fi t ( " f " ) ; // t a c o t he su dung f >F i t ( " g a u s " ) t ha y t h e
h>Draw ( ) ; // ve h is to gr am h
38
http://root.cern.ch/root/HowtoFit.htmlhttp://root.cern.ch/root/HowtoFit.htmlhttp://root.cern.ch/root/html/TH1.html#TH1:Fithttp://root.cern.ch/root/html/TH1.html#TH1:Fithttp://root.cern.ch/root/HowtoFit.htmlhttp://root.cern.ch/root/HowtoFit.html8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
40/92
CHNG 4. HM ng Nguyn Phng
f>Draw ( "same" ) ; / / v e ham lam k hop f t r e n c un g do t h i
}
Kt qu lm khp nh sau:
FC N =65.1586 FROM MIGRAD STATUS=CONVERGED 35 8 CALLS 35 9
TOTAL
ED M =4.68058 e009 STRATEGY= 1 ERROR MATRIX
ACCURATE
EXT PARAMETER STEP FIRST
NO . NAME VALUE ERROR SIZE DERIVATIVE
1 p0 3 . 6 3 1 3 2 e+001 1 . 5 26 2 3 e+000 4 . 7 17 0 9e003 6 . 14 78 9 e005
2 p1 1 . 0 0 2 6 2 e+002 6 . 9 49 9 8e001 2 . 76 0 13 e003 9.82112 e007
3 p2 2 . 0 6 8 2 6 e+001 5 . 7 60 7 8e001 1 . 78 0 36 e003 2 . 12 47 0 e004
Hnh 4.5: th lm khp hm dng Gauss
Trong trng hp mun c nh 1 tham s trong qu trnh lm khp, ta c th s dnglnh FixParameter, v d
f>FixParameter( 0 , 1 . ) ;
Ngoi ra ta cng c th xc nh khong lm khp
h>Fi t ( " f ", " ", " ",40 ,160 ) ;
Cc tham s lm khp c th c truy xut qua cc lnh sau: GetFunction("f"): ly hm c lm khp
39
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
41/92
CHNG 4. HM ng Nguyn Phng
GetChisquare(): gi tr 2 ca vic lm khp
GetParameter(i): gi tr ca tham s th i
GetParError(i): sai s ca tham s th i
V d:
root [ 1 ] f>GetChisquare ( )
(c o n s t Double_t ) 6 . 5 1 5 8 5 9 7 6 9 2 8 2 9 4 1 7 0 e+001
root [ 2 ] f>GetParameter ( 1 )
(c o n s t Double_t ) 1 . 0 0 2 6 1 6 3 4 2 8 3 0 9 2 4 5 0 e+002
root [ 3 ] f>GetParError ( 1 )
(c o n s t Double_t ) 6 . 9 4 9 9 7 6 4 1 7 1 9 1 0 3 6 1 0 e001
V d:Lm khp s liu vi nh Gaussian v phng nn a thc bc 2 (xem Hnh4.6)
/ / Ham mo t a p ho ng n en d an g d a t h u c b ac 2
Double_t background ( Double_t x , Double_t pa r ) {
r e t u r n pa r[ 0 ] + pa r[ 1 ] x[ 0 ] + pa r[ 2 ] x [ 0 ] x[ 0 ] ;
}
/ / Ham mo t a d i n h d an g G a u ss i a n
Double_t Gaussian ( Double_t x , Double_t pa r ) {
r e t u r n ( pa r[ 0 ] TMath: : Gaus ( x[ 0 ] ,par [ 1 ] ,par [ 2 ] ) ) ;}
/ / Ham l am k ho p b an g t o n g c ua ham d i n h G a u ss i a n v a p ho ng n en
Double_t function ( Double_t x , Double_t pa r ) {
r e t u r n background ( x ,pa r ) + Gaussian ( x ,& pa r[ 3 ] ) ;
}
/ / Thuc h i e n v i e c lam kho p
v o i d fitting ( ) {c on st i n t nBins = 5 0 ;
Double_t data[nBins] = { 1 5 , 2 2 , 2 5 , 1 8 , 2 2 , 2 2 , 1 6 , 2 1 , 1 9 ,
20 ,34 ,41 ,45 ,49 ,7 2 ,77 ,91 ,89 ,
90 ,94 ,96 ,94 ,84 ,8 0 ,64 ,61 ,52 ,
38 ,39 ,31 ,32 ,24 ,2 5 ,25 ,30 ,20 ,
27 ,20 ,20 ,14 ,16 ,18 ,1 2 ,23 ,
8 ,22 ,17 ,12 ,23 ,12 };
TH1F h = new TH1F ( "h", "Gaus s ian + backgr ound",5 0 ,0 , nBins ) ;
f o r(i n t i=0 ; i < nBins; i++) {
40
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
42/92
CHNG 4. HM ng Nguyn Phng
h>SetBinContent ( i+1 , data[ i] ) ;
}
h>Sumw2 ( ) ;
/ / t a o ham TF1 t u 0 den n Bi ns , c o 6 tham s o ( 3 c ho phong nen , 3 c ho
d i n h )
TF 1 f = new TF 1 ( " f ", function , 0 , nBins, 6 ) ;
/ / dua tham s o da u v ao
f>SetParameter ( 4 , 2 0 ) ; // u oc l uo ng v i t r i dinh
f>SetParameter ( 5 , 1 0 ) ; // uoc l uo ng be ro ng d in h
h>Fi t ( " f " ) ;
/ / k ha o b ao ham r i e n g c ho ph on g n e n va d i nh
TF 1 bk g = new TF 1 ( "bkg", background , 0 , 5 0 , 3 ) ;
bkg>SetLineColor ( 3 ) ;
TF 1 peak = new TF 1 ( "peak", Gaussian, 0 , 5 0 , 3 ) ;
peak>SetLineColor ( 4 ) ;
Double_t par[ 6 ] ;
/ / dua c a c tham s o v ao ham p ho ng n en va d i nh s a u do v e c a c ham n ay
f>GetParameters ( pa r ) ;
bkg>SetParameters ( pa r ) ;
bkg>Draw ( "same" ) ;
peak>SetParameters (&pa r[ 3 ] ) ;
peak>Draw ( "same" ) ;
}
4.4 TMinuit
Minuit l mt gi lm khp bng phng php cc tiu ha hm mc tiu (objectivefunction) nm trong PACKLIB, c vit u tin bng ngn ng lp trnh Fortran biFred James v c chuyn sang lp TMinuitbng ngn ng C++ bi Rne Brun. Chiv lp ny c th c xem ti http://root.cern.ch/root/html/TMinuit.html.
Cc bc tin hnh lm khp s dng lp TMinuit
Xy dng hm cc tiu ha "FCN" (chi square, likelihood,...).
Khai bo d liu lm khp.
41
http://root.cern.ch/root/html/TMinuit.htmlhttp://root.cern.ch/root/html/TMinuit.html8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
43/92
CHNG 4. HM ng Nguyn Phng
Hnh 4.6: Lm khp s liu vi dng nh Gaussian v phng nn a thc bc 2
Khai bo i tng thuc lp TMinuit lm khp, cc tham s v khong lmkhp, cng vi cc kiu lm khp
SIMPLEX: tm cc tiu a phng, u im ca phng php ny l tc nhanh, tuy nhin chnh xc khng cao lm.
MIGRAD: lm khp hm a phng s dng phng php Davidson-Fletcher-Powell ci tin.
HESSE: tnh ma trn o hm bc hai ca hm FCN s dng phng php viphn hu hn (finite difference method), thng c s dng ti u ktqu thu c tMIGRAD.
MINOS: phn tch sai s (bt i xng), thng thng ta hay s dng t nhthai phng php (HESSEc s dng ngay sau MIGRAD). Cn MINOSc s
dng ti u sai s ca cc gi tr lm khp. Tr v kt qu lm khp (cng vi cc kim tra thng k).
V d:
Float_t z[ 5 ] ,x[ 5 ] ,y[ 5 ] ,errorz[ 5 ] ;
//_________________________________________________________________
v o i d fc n ( Int_t &npar, Double_t gin, Double_t &f , Double_t par,
Int_t iflag )
{
c o n s t Int_t nbins = 5 ;
I nt _t i ;
42
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
44/92
CHNG 4. HM ng Nguyn Phng
/ / Tinh c h i s q u a r e
Double_t chisq = 0 ;
Double_t delta;
f o r ( i=0 ;i
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
45/92
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
46/92
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
47/92
Chng 5
th
5.1 Canvas v pad
Canvasl mt ca s m hnh nh c th c hin th trn . Mt canvas c th cchia thnh 1 hay nhiu khu vc v, cc khu vc v ny c gi l pad.
Trong ROOT, nu canvas khng c khai bo trc khi v hnh, chng trnh s mcnh to ra canvas c tn lc1, v pad tng ng cng c cng tn vi canvas ny. Mtpad c th nm trong 1 canvas hoc nm trong 1 pad khc.
C php khai bo canvas nh sau:
TCanvas * = new TCanvas("", "", , )
hoc
TCanvas * = new TCanvas("", "", form)
vi form = 1 kch thc 700 500ti (10,10)form = 2 kch thc 500 500ti (20,20)form = 3 kch thc 500 500ti (30,30)form = 4 kch thc 500 500ti (40,40)form = 5 kch thc 500 500ti (50,50)
C php khai bo pad nh sau:
TPad * = new TPad("", "", xlow, ylow, xup, yup, color,
bordersize, bordermode)
Trong :xlow v tr ca im di bn tri ca pad ang khai boylow ta y ca im xup v tr ca im trn bn phi ca pad ang khai boyup ta y ca im
46
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
48/92
CHNG 5. TH ng Nguyn Phng
color k hiu mu ca pad (xem Ph lcB)bordersize kch thc bin ca pad (tnh theo pixel)bordermode hiu ng bin chm xung (=1)bordermode khng c hiu ng (= 0)bordermode hiu ng bin ni ln (= 1)
Mt s lnh lin quan n canvas v pad:
(xem thm tihttp://root.cern.ch/root/html/TPad.htmlvhttp://root.cern.ch/root/html/TCanvas.html)
Divide(nx,ny): chia canvas/pad ra lm nhiu phn theo trc x v y, cc pad nhbn trong s c nh s t 1 n nx*ny
cd(i): chn pad nh th i, mc nh cd() = cd(0) tc l chn chnh canvas/pad
GetPad(i): chn pad th i (trng hp nm trong mt pad khc)
SetCanvasSize(w,h): chnh kch thc cho canvas
SetBorderSize(): chnh kch thc cho bin
SetBorderMode(): chnh kiu cho bin
SetLogx(), SetLogy(), SetLogz(): v trc x,y,z theo thang log
SetGrid(), SetGridx(), SetGridy(): v li cho trc ta
SetTicks(), SetTickx(), SetTicky(): nh du cc khong chia cho trc ta
Print("file"): lu ni dung trong hnh v ra file
SaveAs("file"): tng t Print
V d 1:(xem Hnh5.1)
{
TH1F h1 = new TH1F ( "h1", "1D Gaus s ian", 1 00 , 1 00 , 1 0 0 ) ;
TH2F h2 = new TH2F ( "h2", "2D Gaus s ian", 100 ,100 , 1 00 , 1 00 , 100,100 ) ;
h1>Sumw2 ( ) ;
h2>Sumw2 ( ) ;
Float_t mean = 0 , sigma = 2 0 ;
f o r ( I nt _t i = 0 ; i < 1 0 0 0 0 ; i++) {
h1>Fill ( gRandom>Gaus (mean ,sigma ) ) ;
h2>Fill ( gRandom>Gaus (mean ,sigma ) , gRandom>Gaus (mean ,sigma ) ) ;
}
47
http://root.cern.ch/root/html/TPad.htmlhttp://root.cern.ch/root/html/TCanvas.htmlhttp://root.cern.ch/root/html/TCanvas.htmlhttp://root.cern.ch/root/html/TCanvas.htmlhttp://root.cern.ch/root/html/TCanvas.htmlhttp://root.cern.ch/root/html/TPad.html8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
49/92
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
50/92
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
51/92
CHNG 5. TH ng Nguyn Phng
Lu :trong mt s trng hp sau khi s dng lnhDraw(), nu bng ch gii (thm chl trc ta ) khng hin th nh c chnh sa th nn g thm lnhgPad->RedrawAxis()sau khi chnh sa.
V d:So snh 2 dng phn b Gauss v Landau (xem Hnh5.3){
TH1F h1 = new TH1F ( "h1", " So s a nh ", 5 0 , 0 , 1 0 0 ) ;
TH1F h2 = new TH1F ( "h2", " So s a nh ", 5 0 , 0 , 1 0 0 ) ;
h1>Sumw2 ( ) ;
h2>Sumw2 ( ) ;
Float_t mean = 2 0 , sigma = 4 ;
f o r ( I nt _t i = 0 ; i < 1 0 0 0 0 ; i++) {
h1>Fill ( gRandom>Gaus (mean ,sigma ) ) ; / / p ha n b o G au ss
h2>Fill ( gRandom>Landau (mean ,sigma ) ) ; // phan bo Landau
}
/ / Chuan d in h c ua h a i phan bo ve 1
h1>Scale ( 1 . / h1>GetMaximum ( ) ) ;
h2>Scale ( 1 . / h2>GetMaximum ( ) ) ;
/ / V e c a c phan bo
h1>SetLineColor ( kRed ) ;
h2>SetLineColor ( kBlack ) ;
h1>SetLineWidth ( 2 ) ;
h2>SetLineWidth ( 2 ) ;
h1>Draw ( " h i s t o " ) ;
h2>Draw ( " same h i s t o " ) ;
/ / Chon t ho ng s o c ho bang chu g i a i
gStyle>SetOptStat ( 0 ) ; / / an b ang t ho ng t i n h i st o gr a m
le g = new TLegend( 0 . 7 , 0 . 7 , 0 . 9 , 0 . 8 5 ) ; // k ha i b ao b ang c hu g i a ileg>SetTextSize( 0 . 0 4 ) ; / / ch on c o c hu
leg>SetTextColor ( kBlue ) ; // chon mau chu
leg>SetFillColor ( 0 ) ; / / c ho n mau t o
leg>SetBorderSize ( 0 ) ; / / k ho ng v e k hung b a ng c hu g i a i
leg>AddEntry ( h1, " G a u s s i a n " ) ; // d at c hu g i a i cho h is to gr am h 1
leg>AddEntry ( h2, "Landau" ) ; // d at c hu g i a i cho h is to gr am h 2
leg>Draw ( ) ; // v e b ang c hu g i a i
}
50
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
52/92
CHNG 5. TH ng Nguyn Phng
Hnh 5.3: So snh dng phn b Gauss v Landau
5.3 Graph
Graphl mt dng th c to thnh bi hai mng X v Y tng ng nhau. Cphp khai bo graph nh sau:
= new TGraph(n, x, y)Trong n l s im, x v y la hai mng c n im tng ng, hoc
= new TGraph(h) vi h l tn histogram
Mt s lnh lin quan n graph:
(xem thm ti http://root.cern.ch/root/html/TGraph.html)
RemovePoint(i): xa im th i
CompareX(g,i,j), CompareY(g,i,j): so snh gi tr ca hai im th i v j trong
graph g Sort(): sp xp li cc im
V d:(xem Hnh5.4)
{
Double_t x [ 2 0 ] , y[ 2 0 ] ;
I nt _t n = 2 0 ;
f o r ( I nt _t i =0 ; i < n ; i++) {
x [ i ] = co s ( i +0.5) ;
y [ i ] = 3si n ( i2) ;
}
51
http://root.cern.ch/root/html/TGraph.htmlhttp://root.cern.ch/root/html/TGraph.html8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
53/92
CHNG 5. TH ng Nguyn Phng
gr = new TGraph ( n , x , y ) ;
gr>Draw ( "AC" ) ;
}
Hnh 5.4: th phn v d cho graph
5.4 GraphError
GraphErrorl mt dng th c to thnh bi hai mng X v Y tng ng c sais i km. C php khai bo GraphError nh sau:
= new TGraphErrors(n, x, y, ex, ey)
Trong n l s im, x v y la hai mng c n im tng ng, ex v ey l hai mngcha sai s ca x v y
Mt s lnh lin quan n GraphError:
(xem thm ti http://root.cern.ch/root/html/TGraphErrors.html)
GetErrorX(i), GetErrorY(i): sai s theo trc x v y ti bin th i
Apply(f): p dng hm f(x,y) cho tt c cc im
V d:(xem Hnh5.5)
{
I nt _t n = 1 0 ;
Double_t x [ n ] = {0.2 , 0 . 1 , 0 . 3 , 0 . 4 , 0 . 7 , 0 . 8 , 1 . 0 , 1 . 6 , 2 . 4 ,
2 . 7 } ;
52
http://root.cern.ch/root/html/TGraphErrors.htmlhttp://root.cern.ch/root/html/TGraphErrors.html8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
54/92
CHNG 5. TH ng Nguyn Phng
Double_t y [ n ] = { 1 .2 , 2 . 3 , 4 . 0 , 5 . 1 , 7 . 7 , 8 . 7 , 6 . 5 , 4 . 5 , 2 . 7 ,
1.3};
Double_t ex [ n ] = { 0 .0 2 , 0 . 0 3 , 0 . 0 5 , 0 . 0 5 , 0 . 0 7 , 0 . 0 4 , 0 . 0 5 , 0 . 0 6 ,
0 . 0 4 , 0 . 0 1 } ;
Double_t ey [ n ] = { 0. 6 , 0 . 1 , 0 . 8 , 0 . 6 , 0 . 9 , 0 . 7 , 1 . 0 , 0 . 5 , 0 . 5 ,
0 . 2 } ;
gr = new TGraphErrors ( n , x , y , ex, ey ) ;
gr>SetMarkerStyle ( 2 1 ) ;
gr>SetMarkerColor ( 4 ) ;
gr>Draw ( "ALP" ) ;
}
Hnh 5.5: th phn v d cho GraphError
5.5 MultiGraph
MultiGraphto mt tp hp cc th. C php khai bo MultiGraph nh sau: = new TMultiGraph("", "")
Mt s lnh lin quan n MultiGraph:
(xem thm ti http://root.cern.ch/root/html/TMultiGraph.html)
Add(): thm th vo multigraph
Draw(): v cc th
V d:(xem Hnh5.6)
53
http://root.cern.ch/root/html/TMultiGraph.htmlhttp://root.cern.ch/root/html/TMultiGraph.html8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
55/92
CHNG 5. TH ng Nguyn Phng
{
TMultiGraph mg = new TMultiGraph ( ) ;
Int_t n1 = 1 0 , n2 = 1 0 ;Double_t x1[ ] = {0.1 , 0 . 0 5 , 0 . 2 5 , 0 . 3 5 , 0 . 5 ,
0 . 6 1 , 0 . 7 , 0 . 8 5 , 0 . 8 9 , 0 . 9 5 } ;
Double_t y1[ ] = { 1 , 2 . 9 , 5 . 6 , 7 . 4 , 9 , 9 . 6 , 8 . 7 , 6 . 3 , 4 . 5 , 1 } ;
Double_t ex1 [ ] = { . 0 5 , . 1 , . 0 7 , . 0 7 , . 0 4 , . 0 5 , . 0 6 , . 0 7 , . 0 8 , . 0 5 } ;
Double_t ey1 [ ] = { . 8 , . 7 , . 6 , . 5 , . 4 , . 4 , . 5 , . 6 , . 7 , . 8 } ;
TGraphErrors gr 1 = new TGraphErrors ( n1, x1, y1, ex1,ey 1 ) ;
gr1>SetMarkerColor ( kBlue ) ;
gr1>SetMarkerStyle ( 2 1 ) ;
mg>Ad d ( gr 1 ) ;
Float_t x2[ ] = {0 .2 8 , 0 . 0 0 5 , 0 . 1 9 , 0 . 2 9 , 0 . 4 5 ,
0 . 5 6 , 0 . 6 5 , 0 . 8 0 , 0 . 9 0 , 1 . 0 1 } ;
Float_t y2 [ ] = { 2 . 1 , 3 . 8 6 , 7 , 9 , 1 0 , 1 0 . 5 5 , 9 . 6 4 , 7 . 2 6 , 5 . 4 2 , 2 } ;
Float_t ex2 [ ] = { . 0 4 , . 1 2 , . 0 8 , . 0 6 , . 0 5 , . 0 4 , . 0 7 , . 0 6 , . 0 8 , . 0 4 } ;
Float_t ey2 [ ] = { . 6 , . 8 , . 7 , . 4 , . 3 , . 3 , . 4 , . 5 , . 6 , . 7 } ;
TGraphErrors gr 2 = new TGraphErrors ( n2, x2, y2, ex2,ey 2 ) ;
gr2>SetMarkerColor ( kRed ) ;
gr2>SetMarkerStyle ( 2 0 ) ;
mg>Ad d ( gr 2 ) ;
mg>Draw ( "APL" ) ;
}
5.6 Cc ty chnh v th
Khi v th bng lnh Draw(), ta c th s dng cc ty chnh v cc dng thkhc nhau ca cng mt histogram. Bng5.1trnh by mt s ty chnh thng s dngcho cc histogram 1D v 2D.
Mt s ty chnh cho im nh du (marker), ng (line) v ch t mu
(fill)
Chn mu: SetMarkerColor(), SetLineColor(), SetFillColor()
Chn kiu v: SetMarkerStyle(), SetLineStyle(), SetFillStyle()
Chn b dy: SetMarkerWidth(), SetLineWidth()
54
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
56/92
CHNG 5. TH ng Nguyn Phng
Hnh 5.6: th v d cho MultiGraph
Ph lcBtrnh by cc bng k hiu mu, kiu ng v kiu marker c trong ROOT.
V d:(xem Hnh5.7)
{
TH1F h1 = new TH1F ( "h1", "1D Gaus s ian", 1 00 , 1 00 , 1 0 0 ) ;
Float_t mean = 0 , sigma = 2 0 ;
f o r ( I nt _t i = 0 ; i < 1 0 0 0 0 ; i++) {
h1>Fill ( gRandom>Gaus (mean ,sigma ) ) ;
}
h1>SetFillColor ( kBlue ) ; // chon mau to mau xanh
h1>SetLineColor ( kRed ) ; / / c ho n mau l i n e mau do
h1>SetLineWidth ( 3 ) ; // c hon b e day l i n e bang 3
h1>Draw ( " h i s t o " ) ;
h1>SetMarkerStyle ( 2 0 ) ; / chon kieu marker 20
h1>SetMarkerColor ( kGreen ) ; / / c ho n mau m a rk er x an h l a
h1>SetMarkerSize ( 1 ) ; / / c ho n k i c h t hu oc m ark er bang 1
h1>Draw ( "s ame p" ) ;
}
Mt s ty chnh cho trc th (axis) tin hnh hiu chnh cc trc th,ta s dng cc lnh GetXaxis(), GetYaxis(), GetZaxis() chn cc trc x,y,z tng
ng. (Xem thm ti http://root.cern.ch/root/htmldoc/TAxis.html) SetTitle(" "): t tiu cho trc th
55
http://root.cern.ch/root/htmldoc/TAxis.htmlhttp://root.cern.ch/root/htmldoc/TAxis.html8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
57/92
CHNG 5. TH ng Nguyn Phng
Bng 5.1: Cc ty chnh ca lnh Draw() cho cc histogram 1D v 2D (Xem thm tihttp://root.cern.ch/root/html/THistPainter.html)
1D & 2D SAME V trn cng 1 thE V cc thanh sai sHIST V dng histogramTEXT Ghi gi tr ca im trn thLEGO V dng lego c loi b cc ng b nLEGO1 V dng lego c loi b cc mt b nLEGO2 V dng lego c s dng mu hin th gi tr
1D B V biu ctC V ng lm trn qua cc imL V ng ni cc imP V cc im nh duP0 V cc im nh du k c cho cc bin khng c gi trE0 V thanh sai sE1 V thanh sai s c vch ngang vung gc vi thanh sai sE2 V thanh sai s c khung ch nhtE3 V thanh sai s v t phn din tch thanh theo trc tungE4 V thanh sai s v t din tch c lm trnE5 Tng t E3 nhng b qua cc gi tr 0E6 Tng t E4 nhng b qua cc gi tr 0
2D CYL V trn trc ta trPOL V trn trc ta ccSPH V trn trc ta cuPSR V trn trc ta pseudorapidity/phiBOX V dng hpCOL V dng hp c t muCOLZ Tng t nh COL nhng c thm thang muCONT V ng contour (tng t CONT0)CONT0 V ng contour c muCONT1 V ng contour c phn bit kiu ngCONT2 V ng contour vi cng kiu ngCONT3 V ng contour c t muCONT4 V ng contour c s dng mu ca mtCONT5 V ng contour c s dng tam gic DelaunaySURF V dng mtSURF1 V dng mtSURF2 V dng mt c s dng mu hin th gi trSURF3 Tng t SURF, c thm ng contour pha trnSURF4 V dng mt c lm trn (Gouraud shading)SURF5 Tng t SURF3, c ng contour muSCAT V dng chm im
SetRangeUser(a,b): chn khong v t a n b SetTitleSize(),SetTitleFont(),SetTitleOffset(): chn c ch v font ch v
56
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
58/92
CHNG 5. TH ng Nguyn Phng
Hnh 5.7: th phn b ngu nhin dng Gauss 1 chiu
offset cho tiu trn trc
SetLabelSize(), SetLabelFont(): chn c ch v font ch hin th trn trc
V d:(xem Hnh5.8)
{TH1F h1 = new TH1F ( "h1", "1D Gaus s ian", 1 00 , 1 00 , 1 0 0 ) ;
Float_t mean = 0 , sigma = 2 0 ;
f o r ( I nt _t i = 0 ; i < 1 0 0 0 0 ; i++) {
h1>Fill ( gRandom>Gaus (mean ,sigma ) ) ;
}
h1>SetTitle ( "Do t h i G a us si a n " ) ; // dat t i eu de
h1>GetXaxis ( )>SetTitle ( "X[m] " ) ; // g ia t r i cua t ru c x
h1>GetYaxis ( )>SetTitle ( "Counts" ) ; // g ia t r i cua t ru c y
h1>GetXaxis ( )>SetRangeUser (50 ,50) ; / / k ho an g v eh1>Draw ( ) ;
}
5.7 Cch to vn bn v biu thc ton hc
Cc on vn bn (text) c a vo trong pad c th c nm trong cc khung c
gi l pave(lp TPaveLabel) hoc l nm t do. Cc on vn bn hin th tiu th hay cc trc c th c khai bo mt cch trc tip. Tt c cc vn bn, cng thc
57
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
59/92
CHNG 5. TH ng Nguyn Phng
Hnh 5.8: V d chnh cc trc cho th
ton hc hin th trong hnh v u l cc i tng thuc lp TTextv tun theo cphp vit vn bn latex (lp TLatex). Ph lcCtrnh by cch vit mt s k hiu latexn gin c s dng trong ROOT.
V d:(xem Hnh5.9)
{
TLatex l ;
l>SetTextAlign ( 1 2 ) ;
l>SetTextSize( 0 . 0 4 ) ;
l>DrawLatex( 0 . 1 , 0 . 8 , "1 ) C(x) = d #s qr t{#fr ac {2}{#lambdaD}}
#int^ {x}_ {0}cos (#fr ac{#pi}{2}t^ {2})dt" ) ;
l>DrawLatex( 0 . 1 , 0 . 6 , "2 ) C(x) = d #s qr t{#fr ac {2}{#lambdaD}}
# i n t ^ { x } c o s ( # f r a c { # p i } { 2 } t ^ { 2 } ) d t " ) ;
l>DrawLatex( 0 . 1 , 0 . 4 , " 3 ) R = | A| ^ {2 } =
#fr a c {1}{2 }(#[]{ # f r a c {1}{2}+C(V)}^{2}+
#[]{#fr ac{1}{2}+ S(V)}^ {2})") ;
l>DrawLatex( 0 . 1 , 0 . 2 , " 4) F( t ) = #sum_{ i=
#in ft y}^{#i nf ty }A( i ) cos #[]{# fr ac { i }{t+ i }}" ) ;
}
58
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
60/92
CHNG 5. TH ng Nguyn Phng
Hnh 5.9: V d cng thc latex
5.8 Graphics Editor
Bn cnh vic hiu chnh cc hnh v bng cu lnh, ROOT cng xy dng cc lp GUI(Graphics User Interface) nhm gip cho vic hiu chnh hnh v c thun tin hn.
khi ng phn Graphics Editor ta c th nhp vo mc View Editornh trongHnh5.10. hiu chnh cho i tng no trong hnh v (canvas, pad, axis,...) ta ch cnnhp vo i tng trn hnh. Cc hiu chnh bng Graph Editor cng tng ngvi cc hiu chnh bng cu lnh.
Ngoi ra, thay v m Graph Editor trc tip, ta c th hiu chnh hnh v bng cch nhpchut phi vo cc i tng cn chnh v chn cc lnh tng ng nh trong Hnh5.11.
5.9 Bi tp
1. Mt sinh vin tin hnh th nghim o h s suy gim ca tia gamma qua hai loivt liu A v B. Bng5.2trnh by s m thu c ng vi cc b dy khc nhauca hai vt liu A v B. Hy tnh h s suy gim ca gamma i vi hai loi vtliu ny v v trn cng 1 th.
2. Mt phn b s liu m phng phn b liu trong phantom nc c chiu bichm tia gamma (phn b trn mt phng kch thc44cm2) c cho tihttp://nmtp.wikispaces.com/file/detail/dose_distribution.txt. Hy v phn bny theo cc dng col,cont,legovsurf.
59
http://nmtp.wikispaces.com/file/detail/dose_distribution.txthttp://nmtp.wikispaces.com/file/detail/dose_distribution.txthttp://nmtp.wikispaces.com/file/detail/dose_distribution.txthttp://nmtp.wikispaces.com/file/detail/dose_distribution.txt8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
61/92
CHNG 5. TH ng Nguyn Phng
Hnh 5.10: Cch chn Graphics Editor
Hnh 5.11: Cch chnh sa th 2
Bng 5.2: S m theo khong cchB dy (cm) 1 2 3 4 5 6 7
A 452 199 94 45 14 5 5
B 904 276 81 30 7 2 4
60
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
62/92
CHNG 5. TH ng Nguyn Phng
3. Mt detector ghi nhn vt ca 1 ht mang in chuyn ng di tc ng cat trng hng theo trc z. Ht chuyn ng trong mt phng xy, cc v tr ctn hiu ghi nhn ht c cho trong file: http://nmtp.wikispaces.com/file/detail/track_hits.txt
Xc nh xung lng ca ht bit cng t trng l B = 1T v in tch caht l |q|= e.Gi : xung lng ngang ca ht c in tch e chuyn ng di tc ng ca t
trng c xc nh theo cng thcpT[GeV] = 0.3 B[T] R[m], vi R l bn
knh qu o chuyn ng ca ht.
61
http://nmtp.wikispaces.com/file/detail/track_hits.txthttp://nmtp.wikispaces.com/file/detail/track_hits.txthttp://nmtp.wikispaces.com/file/detail/track_hits.txthttp://nmtp.wikispaces.com/file/detail/track_hits.txt8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
63/92
Chng 6
Cc th vin ton hc
6.1 Cc hm ton hc
TMathl lp cha cc hm ton hc c nh ngha sn trong ROOT (xem thm tihttp://root.cern.ch/root/html/TMath.html). Mt s hm thng dng:
Abs(): hm tr tuyt i
Sqrt(): hm khai cn
ASin(), ACos(): cc hmarcsin(),arccos(),...
Gaus(): hm Gaussian
E(), Pi(): cc gi tre,
Ngoi ra, trong ROOT cng c hai th vin ton hc:
Th vin MathCore: cung cp cc lp v hm cho cc tnh ton s, th vin nybao gm cc hm ton hc, thng k v mt s thut ton c bn.
Th vin MathMore: cung cp cc hm v thut ton nng cao da trn nn tngth vin GNU Scientific Library (GSL).
V d:(xem Hnh6.1){
gSystem>Load ( "libMathMore" ) ;
TLegend le g = new TLegend ( 0 . 7 5 , 0 . 7 , 0 . 8 9 , 0 . 8 9 ) ;
i n t n = 5 ;
TF 1 JBessel[ 5 ] ;
f o r(i n t nu = 0 ; nu < n ; nu++)
{
62
http://root.cern.ch/root/html/TMath.htmlhttp://root.cern.ch/root/html/TMath.html8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
64/92
CHNG 6. CC TH VIN TON HC ng Nguyn Phng
JBessel[ nu ]= new TF 1 ( "J_0", "ROOT: : Math : : c yl _b es se l_ j ( [ 0 ] , x ) ",
0 , 1 0) ;
JBessel[ nu ]>SetParameters ( nu, 0 . ) ;
JBessel[ nu ]>SetTitle ( " " ) ;
JBessel[ nu ]>SetLineStyle (1 ) ;
JBessel[ nu ]>SetLineWidth (3 ) ;
JBessel[ nu ]>SetLineColor ( nu +1);
}
leg>SetFillColor ( 0 ) ;
leg>AddEntry ( JBessel [0]> DrawCopy ( ) , " J _ 0 ( x ) ", " l " ) ;
leg>AddEntry ( JBessel [1]> DrawCopy ( "same" ) , " J _ 1 ( x ) ", " l " ) ;
leg>AddEntry ( JBessel [2]> DrawCopy ( "same" ) , " J _ 2 ( x ) ", " l " ) ;
leg>AddEntry ( JBessel [3]> DrawCopy ( "same" ) , " J _ 3 ( x ) ", " l " ) ;
leg>AddEntry ( JBessel [4]> DrawCopy ( "same" ) , " J _ 4 ( x ) ", " l " ) ;
leg>Draw ( ) ;
}
Hnh 6.1: Cc hm Bessel J
6.2 S ngu nhin
TRandoml lp to s ngu nhin c bn (chu k109
) (xem thm ti http://root.cern.ch/root/html/TRandom.html). Ngoi ra cn c cc lp TRandom1to s ngu nhin da
63
http://root.cern.ch/root/html/TRandom.htmlhttp://root.cern.ch/root/html/TRandom.htmlhttp://root.cern.ch/root/html/TRandom.htmlhttp://root.cern.ch/root/html/TRandom.html8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
65/92
CHNG 6. CC TH VIN TON HC ng Nguyn Phng
trn thut ton RANLUX (chu k 10171), TRandom2da trn thut ton Tausworthe (chuk 1026) vTRandom3da trn thut ton Mersenne Twister (chu k 106000).
Mt s phn b ngu nhin c nh ngha sn trong ROOT:
Exp(X): phn b exp(x/X)
Integer(max): s nguyn ngu nhin t 0 n max1
Gaus(mean,sigma): phn b Gauss
Rndm(): phn b ngu nhin t 0 n 1
Uniform(x): phn b ngu nhin trong khong t 0 n x
Landau(mean,sigma): phn b Landau
Poisson(mean): phn b Poisson
Binomial(n,p): phn b nh thc
BreitWigner(mean,gamma): phn b Breit Wigner
Ngoi ra ta cn c th gieo s ngu nhiu theo mt phn b t nh ngha thng qua lnhGetRandom().
V d:(xem Hnh6.2)
{TH1F h = new TH1F ( "h", " a b s ( s i n ( x ) / x ) ",5 0 ,0 ,10) ;
h>Sumw2 ( ) ;
TF 1 f = new TF 1 ( " f ", " a b s ( s i n ( x ) / x ) ",0 ,10 ) ; // d in h n g hi a ham f
f o r ( I nt _t i = 0 ; i < 1 0 0 0 0 ; i++) {
h>Fill ( f>GetRandom ( ) ) ; / / g i e o nga u n h i en t h eo phan b o ham f
}
h>Draw ( ) ;
}
6.3 Ma trn
xy dng vo thc hin tnh ton ma trn trong ROOT ta c th s dng cclp ma trn c bn nh TMatrixF, TMatrixD, TMatrixT, hoc cc ma trn i xng(TMatrixFSym, TMatrixDSym, TMatrixTSym),... (xem thm ti http://root.cern.ch/root/html/MATH_MATRIX_Index.html).
Mt s lnh dnh cho ma trn:
64
http://root.cern.ch/root/html/MATH_MATRIX_Index.htmlhttp://root.cern.ch/root/html/MATH_MATRIX_Index.htmlhttp://root.cern.ch/root/html/MATH_MATRIX_Index.htmlhttp://root.cern.ch/root/html/MATH_MATRIX_Index.html8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
66/92
CHNG 6. CC TH VIN TON HC ng Nguyn Phng
Hnh 6.2: Phn b ngu nhin theo hm |sin(x)/x|
Print(): xut ra gi tr ca ma trn
Determinant(): tnh nh thc
Invert(): tnh nh thc
Transpose(): tnh nh thc Plus(a,b): tng hai ma trn
Minus(a,b): hiu hai ma trn
Mult(a,b): tch hai ma trn
V d:Tnh nh thc v ma trn nghch o ca mt ma trn cho trc
{
#include
Double_t x [ ] = { 3 , 4 , 0 , 1 } ;
/ / T ao ma t r a n n k i c h t hu oc 2 x2 t u mang x
TMatrixD n (2 ,2 , x ) ;
/ / Tinh d in h t hu c c ua ma t r an n
cout
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
67/92
CHNG 6. CC TH VIN TON HC ng Nguyn Phng
Dinh thuc = 3
2x 2 m at ri x i s a s f ol lo ws
| 0 | 1 |
0 | 0 . 3 3 3 3 1.333
1 | 0 1
V d:Tnh tr ring v vector ring ca ma trn i xng
{
#include
#include
#include
c on st i n t N = 3 ;
/ / T ao mang v o i k i c h t h uo c NN
double e [ NN ] = { 1 , 4 , 5 ,
4 , 2 , 6 ,
5 , 6 , 3 } ;
/ / T ao ma t r a n d o i xun g v o i mang vua t a oTMatrixDSym m ( N , e ) ;
TMatrixDSymEigen me (m ) ;
// Tinh t r i r ie n g va v ec to r r ie ng
TVectorD eigenval = me .GetEigenValues ( ) ;
TMatrixD eigenvec = me .GetEigenVectors ( ) ;
/ / Xuat k e t qu a
m .Print ( ) ;
eigenval.Print ( ) ;
eigenvec.Print ( ) ;}
Kt qu
3x 3 m at ri x i s a s f ol lo ws
| 0 | 1 | 2 |
0 | 1 4 5
1 | 4 2 62 | 5 6 3
66
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
68/92
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
69/92
CHNG 6. CC TH VIN TON HC ng Nguyn Phng
Cross(v): tch hu hng vi vector v
Unit(v): ly vector n v
Angle(v): gc gia hai vector
RotateX(phi), RotateY(phi), RotateZ(phi): quay quanh trc mt gc phi
Rotate(phi,v): quay quanh vector v mt gc phi
V d:Tnh tng hai vector vi lp TVector3
{
TVector3 v1 (1 ,3 ,2) ;
TVector3 v2 (2 , 2 , 0 ) ;
v1 += v2 ;
v1 .Print ( ) ;
}
Kt qu
TVector3 A 3D physics vector ( x , y , z ) = ( 1 . 0 0 0 0 0 0 , 5 . 0 0 0 0 0 0 , 2 . 0 0 0 0 0 0 ) (
rho,theta,ph i ) = ( 5 . 4 7 7 2 2 6 , 6 8 . 5 8 3 2 8 6 , 1 0 1 . 3 0 9 9 3 2 )
V d:Tnh tng hai vector vi lp TVectorD
{
#include
TVectorD v1 ( 2 ) ;
TVectorD v2 ( 2 ) ;
v1 ( 0 ) = 1 ; v1 ( 1 ) = 3 ;
v2 ( 0 ) =2; v2 ( 1 ) = 2 ;
v1 .Ad d ( v2 ) ;
v1 .Print ( ) ;
}
Kt qu
Vector ( 2 ) i s a s f ol lo ws
| 1 |
0 |1
1 | 5
68
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
70/92
CHNG 6. CC TH VIN TON HC ng Nguyn Phng
6.5 Lorentz Vector
TLorentzVectorl vector 4 chiu c xy dng bng cch thm 1 phn t vo trong
TVector3. y l lp vector thng hay c s dng trong cc bi ton ht c bni hi s dng cc php bin i Lorentz, tnh khi lng bt bin,... (xem thm tihttp://root.cern.ch/root/html/TLorentzVector.html).
Mt s lnh dnh cho Lorentz vector:
SetXYZT(): t cc gi tr ta (x,y,z) v thi gian t
SetPxPyPzE(): t cc gi tr xung lng (px,py,pz) v nng lng E
SetPtEtaPhiE(): t cc gi tr xung lng ngang pT, gc , v nng lng E
SetPtEtaPhiM(): t cc gi tr xung lng ngang pT, gc , v khi lng M
Rho(), CosTheta(), Phi(), E(), M(),...: truy xut cc gi tr , cos(), E, M,...
Boost(v): chuyn trc ta theo vector v
V d:Tnh khi lng bt bin ca mt ht c nng lng E v xung lng (px,py,pz)
{
Double_t E = 0 . 5 7 , px = 0 . 1 , py = 0 . 1 , pz = 0 . 2 ;
/ / K ha i b ao mot h at c o n an g l u o ng E va xung l u o ng px , py , p zTLorentzVector particle ( px, py, pz, E ) ;
// Tinh k ho i l uo ng b at b ie n cua h at
cout
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
71/92
CHNG 6. CC TH VIN TON HC ng Nguyn Phng
T Lo re n tz Ve c to r b om ba rd ( E , 0 , 0 , E ) ;
// Hat b i a c o k ho i l uo ng m
T Lo re nt zV ec to r t ar ge t ( 0 , 0 , 0 , m ) ;
/ / V e ct o r k h o i t am
T Lo re nt zV ec to r c ms = bombard+target;
TVector3 boost = cm s.BoostVector ( ) ;
// Hat t o i t ro ng he t oa do k ho i tam
bombard.Boost ( boost ) ;
bombard.Print ( ) ;
// Hat b i a t ro n g he t oa do k ho i tam
target.Boost ( boost ) ;
target.Print ( ) ;
}
Kt qu
( x , y , z , t ) = ( 1 . 1 4 5 1 5 9 , 0 . 0 0 0 0 0 0 , 0 . 0 0 0 0 0 0 , 1 . 1 4 5 1 5 9 ) ( P , eta, phi, E )
= ( 1 . 1 4 5 1 5 9 , 0 . 0 0 0 0 0 0 , 0 . 0 0 0 0 0 0 , 1 . 1 4 5 1 5 9 )
( x , y , z , t ) = ( 1 . 1 4 5 1 5 9 , 0 . 0 0 0 0 0 0 , 0 . 0 0 0 0 0 0 , 1 . 4 8 1 5 5 0 ) ( P , eta, phi, E )
= ( 1 . 1 4 5 1 5 9 , 0 . 0 0 0 0 0 0 , 3 . 1 4 1 5 9 3 , 1 . 4 8 1 5 5 0 )
6.6 Bi tp
1. gieo ngu nhin mt phn b f(x)> 0ngi ta c th s dng hai trong nhiuphng php sau:
Phng php hit-and-miss:
Gieo mt cp s ngu nhin (xi, yi)trong khong xmin < xi < xmax v0< yi < max(f(x)).
Nu yi f(xi)th chp nhn gi tr xi.
Nu yi > f(xi)th loi b gi tr xi.
Phng php gii tch: gieo ngu nhin mt gi tr utrong khong 0 < u
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
72/92
CHNG 6. CC TH VIN TON HC ng Nguyn Phng
Hy gieo ngu nhin phn b f(x) = 0.05e0.05x vi xtrong khong 0 < x < 100bng c hai phng php.
2. Mt h detector ghi nhn hai ht muon pht ra t phn r ca Z boson. Xung lng
ca hai ht ln lt l: p1x= 5.4 GeV/c, p1y= 42.9 GeV/c, p1z= 32.2 GeV/c, vp2x= 4.6 GeV/c, p2y= -22.9 GeV/c, p2z= -32.2 GeV/c (khi lng ca ht muonc th b qua).H detector c th ghi nhn xung lng ngang (pT= p2x+ p2y) vi phn gii 5%,thnh phn pzc ghi nhn vi phn gii 20%. Hy m phng p ng ca hdetector vi 1000 event v v histogram khi lng bt bin ca h hai ht muon.
71
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
73/92
Chng 7
File
7.1 Khai bo file
C php khai bo file nh sau:TFile = new TFile("", option)
hocTFile ("", option)
Mt s ty chnh cho file
NEW: to file mi, trong trng hp file cng tn c tn ti, file mi s khng c
to ra.
CREATE: tng t NEW.
RECREATE: to file mi trong ngay c khi hin dang c file cng tn vi file nhto.
UPDATE: m file c sn, nu cha c th to mi.
READ: m file v c (mc nh).
Mt s lnh cho file (xem thm tihttp://root.cern.ch/root/html/TFile.html)
Close(): ng file
Draw(): duyt cc cu trc ca file
GetSize(): tr v kch thc ca file
ls(): lit k ni dung ca file
Print(): in tt c i tng c trong file
Recover(): phc hi file
72
http://root.cern.ch/root/html/TFile.htmlhttp://root.cern.ch/root/html/TFile.html8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
74/92
CHNG 7. FILE ng Nguyn Phng
ReOpen(): m li file
Seek(): tm n v tr c th trong file
V d:
root[ 0 ] TFile f = new TFile ( " h i s t o g r a m . r o o t " ) ;
root[ 1 ] f>ls ( ) ;
TFile histogram.root Histograms f o r ROOT c l a s s
TFile histogram.root Histograms f o r ROOT c l a s s
KE Y: TH1F hist1 ; 1 F u nc ti on t o b e f it
KE Y: TH1F hist2 ; 1 A n o th er f un ct io n t o b e f it
root[ 2 ] . q
Mt s c im ca ROOT file
Khi ROOT file c m, n tr thnh th mc hin hnh.
Tt c cc hisotgram v tree s c t ng lu vo file.
Khi file ng, tt c cc histogram, tree, i tng lin quan u s b xa b.
Tt c cc i tng c xut x t TObject u c th c ghi trn file.
7.2 Tree
Trong qu trnh x l, d liu c th c t chc theo nhiu cch khc nhau. Tuy nhin,trong cc trng hp thng thng, d liu c lu di dng tuyn tnh (record) vcui cng c t chc di dng cc bng (table). Tt nhin cch t chc d liu nycng c chp nhn trong ROOT. Cc bng ny c gi l cc n-tuple, ccrecordcgi leventv cc tiu ct c gi l cc bin (variable).
Chng ta c th lu cc n-tupletrong ROOT theo hai cch. Cc th nht l lu theomt chui cc event, y cng l cch lu d liu thng thng. Tuy nhin, khi ngi sdng ch quan tm n mt b s liu nh hn nhiu so vi cu trc d liu c lu thhiu qu x l s khng c cao do phi di chuyn t b s liu ca event ny n bs liu ca event k tip. Do , thay v lu tr theo chui cc event, ROOT s chia tchmi event theo cc bin v xy dng mt tp tin bng cch t cng tt c cc ct. iuny to ra hai u im: th nht, mi ct l mt chui ng nht ca cng mt bin,do s cho kch thc file nh hn nhiu so vi trng hp thng thng. Th hai, khi
ngi s dng ch quan tm n mt vi bin c th ca mi event, thi gian truy xutd liu nh hn nhiu do khng phi qut ton b d liu trong file.
73
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
75/92
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
76/92
CHNG 7. FILE ng Nguyn Phng
4 4 0 . 0 7 9 1 2 0 2.322895
5 5 3 . 9 1 1 9 4 1 19.55198
6 3 9 . 5 1 0 5 9 3 33.30006
7 2 9 . 3 9 3 2 9 5 31.64893
8 4 7 . 6 7 3 9 6 5 12.08088
9 4 5 . 7 9 7 2 1 4 1.464032
10 6 0 . 6 0 9 0 2 0 27.04453
11 5 1 . 6 5 3 3 6 9 3.626074
12 3 8 . 6 5 2 2 8 6 4.989183
13 3 8 . 1 7 5 6 4 0 6 5 . 3 2 9 3 9 1
14 3 7 . 5 7 1 5 2 1 6 9 . 9 0 5 8 3 8
15 4 0 . 0 4 8 0 6 1 2.665381
16 5 5 . 4 0 5 3 1 5 1 2 . 8 4 2 2 8 4
17 5 5 . 2 4 6 9 2 1 4 6 . 5 0 2 5 7 4
18 3 8 . 6 3 6 9 0 9 4 . 0 2 3 5 2 8 1
19 3 7 . 0 6 2 3 5 5 6 . 4 4 9 2 5 2 1
20 2 8 . 3 9 7 0 6 4 1 0 . 3 7 0 8 6 3
21 4 0 . 2 2 0 6 4 2 7 . 8 6 2 4 1 8 6
22 2 6 . 7 8 3 8 2 3 6 2 . 3 2 9 8 1 1
23 3 6 . 6 7 6 2 2 7 2 . 5 8 1 8 1 9 3
24 2 8 . 1 9 7 8 4 7 25.71282
Type to c o n ti n ue o r q to qu it ==>
7.2.2 TTree
LpTTreekhc vi lp TNtuple ch l lp TNtuplech gii hn trong vic cha d liudng s trong khi lp TTreec th cha mi loi d liu chng hn nh cc i tng(object) hoc cc mng. C php khai bo Tree nh sau:
TTree = new TTree("", splitlevel)
Mt s lnh dnh cho Tree
CloneTree(): copy tree
Fill(): lu tt c cc branch
AddBranchToCache(), DropBranchFromCache(): thm, loi bbranchtrong tree
GetEntries(): tr v tng s entry
Merge(list): hp nht tt c cc tree c trong list
Show(entry): lit k tt c cc gi tr caleaf trong entry
75
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
77/92
CHNG 7. FILE ng Nguyn Phng
Process(): thc thi code i vi mi event
Print(): in ra bng tm tt ni dung ca tree
Scan(): in ra tt c cc entry vt qua selection
StartViewer(): khi ng giao dinTreeViewer
V d:(xem Hnh7.1)
{
T Fi le f ( " 1 1 6 9 4 4 . ro o t " ) ;
TTree t = ( TTree ) t>Ge t ( "HWWTree_e" ) ;
t>StartViewer ( ) ;
f>Close ( ) ;
}
Hnh 7.1: Cu trc ca tree
7.2.3 Cu trc ca tree
Mt tree c th cha cc branch(nhnh), cc branchny c th l cc bin, cc object
hoc bao gm c tree khc. Cui mi branchlun l mt bin, c gi lleaf(l). Thngthng, cc tree u c chia thnh ccbranchkhi c lu vo mt file ROOT. Bi vcu trc tree phc tp hn so vi cu trc bng, nn mc chia tch c th c iu
76
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
78/92
CHNG 7. FILE ng Nguyn Phng
chnh ph hp vi nhu cu ca ngi s dng. Hnh 7.2 trnh by cu trc ca mttree.
Cc tree c th c lu tr trn nhiu file khc nhau v c th c ni tip vi nhau
trong qu trnh x l thng qua mt i tng duy nht gi l chain.
Hnh 7.2: Cu trc ca tree
7.3 Cch to v truy xut d liu t file root
7.3.1 Cch to file root
Cc bc to mt file root nh sau:
1. To mt fileVD: TFile *file = new TFile("file.root","RECREATE");
2. To mt treeVD: TTree *tree = new TTree("Tree","Tree");
77
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
79/92
CHNG 7. FILE ng Nguyn Phng
Nu mun to tree vi th mc bn trong ta c th lm nh sau:TTree tree("Tree","/folder")
3. Thmbranchvo tree
VD: Event *event = new Event();tree->Branch("EventBranch","Event",&event);
4. Lu d liu vo treeVD: tree->Fill();
5. Lu vo fileVD: file->Write();
V d:
{T Fi le f ( "example . r oo t ", " r e c r e a t e " ) ;
TTree t = new TTree ( " t r e e ", " t r e e " ) ;
Float_t px, py, pz ;
t>Branch ( "px" ,& px, "px/F" ) ;
t>Branch ( "py" ,& py, "py/F" ) ;
t>Branch ( "pz" ,& pz, "pz/F" ) ;
f o r ( I nt _t i =0 ; i Rannor ( px, py ) ;
pz = px px + py py ;
t>Fill ( ) ;
}
t>Write ( ) ;
}
7.3.2 Cch truy xut file root
Cc bc truy xut mt file root nh sau:
1. M mt fileVD: TFile file("file.root");
2. c treeVD: TTree * tree = (TTree*) file->FindObject("tree")
3. To cc bin lu gi liuVD: Float_t a, b, c;
78
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
80/92
CHNG 7. FILE ng Nguyn Phng
4. Lin ktbranchvi cc binVD: tree->SetBranchAddress("a", &a)
5. c entry v ly gi tr ca bin
VD: tree->GetEntry(i); cout a endl;V d:(xem Hnh7.3)
{
TFile f = new TFile ( "example . r oo t " ) ;
TTree t = ( TTree ) f>Ge t ( " t r e e " ) ;
Float_t px, py, pz ;
t>SetBranchAddress ( "pz" ,& pz ) ;
TH1F hp z = new TH1F ( "hpz", "pz",1 00 ,0 ,10 ) ;
Long64_t nentries = t>GetEntries ( ) ;
f o r ( Long64_t i =0 ; iGetEntry ( i ) ;
hpz>Fill ( pz ) ;
}
hpz>Draw ( ) ;
}
Hnh 7.3: V d file root
Trong trng hp mun xem nhanh histogram ca mt vi bin, ta c th s dng lnhDraw().
79
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
81/92
CHNG 7. FILE ng Nguyn Phng
V d:Cu lnh v histogram ca sqrt(x) vi cc gi tr x>0, histogram c t tn lhisto
tree>Draw ( " s q r t ( x ) >> h i s t ", "x>0" ) ;
Ngoi ra, trong trng hp tree c chia thnh nhiu file, ta c th dng TChain nicc file li. V d:
TChain chain ( " t r e e " ) ;
chain>Ad d ( " f i l e 1 . r o o t " ) ;
chain>Ad d ( " f i l e 2 . r o o t " ) ;
. . .
7.4 X l s liu c cu trc dng tree
Quy trnh x l s liu c cu trc dngtreehocntuplethng thng bao gm ba bcsau
M file s liu, khai bo cc bin, hitogram,...
To vng lp trn tt c cc d liu (entry) cha trong file, tin hnh tnh ton gi
tr, p dng cc ngng ct, lu gi tr vo histogram,... Lu kt qu, biu din kt qu,...
tin hnh x l d liu c cu trc dng treehocntuplecha trong cc file ROOT,vic u tin ta cn lm l to ra mt lp x l (analysis class). B khung sn (skeleton)ca lp ny c to ra thng qua lnh MakeClass().
root [ 0 ] TFile myFile ( " d a t a . r o o t " )
root [ 1 ] tree>MakeClass ( "MyAnalysis" ) // g i a s u d o i t uong t hu oc
l op TTree co t en l a t r e e
Lnh MakeClass()s to ra hai file MyAnalysis.hvMyAnalysis.Ctng ng vi tnca lp m ta mun to ra. File MyAnalysis.hl file header cha cc khai bo cho lpm ta to, trong file ny cng cha danh sch cc bin c trong file ROOT m ta munx l.
V d:MyAnalysis.h
c l a s s MyAnalysis {
p u b l i c :
/ / Con t r o d o i t uo ng t h uo c l o p TTree ha y T Chain
TTree fChain;
80
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
82/92
CHNG 7. FILE ng Nguyn Phng
/ / T re e h i e n t a i t r on g TChain
Int_t fCurrent;
/ / C ac b i e n
UInt_t fUniqueID;
UInt_t fBits;
Char_t fType[ 2 0 ] ;
Int_t fNtrack;
Int_t fNseg;
Int_t fNvertex;
UInt_t fFlag;
/ / Cac n ha nh ( b r an c h )
TBranch b_fUniqueID;
TBranch b_fBits;
TBranch b_fType;
TBranch b_fNtrack;
TBranch b_fNseg;
TBranch b_fNvertex;
TBranch b_fFlag;
. . .
MyClass ( TTree tree =0);
~MyClass ( ) ;
I nt _t Cut ( Int_t entry ) ;
I nt _t G et En tr y ( Int_t entry ) ;
I nt _t L oa dT re e ( Int_t entry ) ;
v o i d Init ( TTree tree ) ;
v o i d Loop ( ) ;
Bool_t Notify ( ) ;
v o i d Show ( Int_t entry = 1) ;
} ;
Mt s thnh phn quan trng trong lp ny gm c: fChain: tr titreehaychaingc (ltreehaychainm lp ny c to ra t ).
fCurrent: tr titreehaychainhin ti ang x l, c bit trong trng hp xl nhiutreelin kt li vi nhau qua TChain.
void Init(TTree *tree): khi totree chun b c d liu.
Int_t GetEntry(Int_t entry): c entrytng ng, v d GetEntry(9)s cs kin th 10 trongtree(s kin u tin c ch s l 0).
void Loop(): hm cha cc lnh x l, hm ny s lp trn tt c d liu trongtreehaychainv p cc lnh x l vo tng d liu.
81
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
83/92
CHNG 7. FILE ng Nguyn Phng
V d:MyAnalysis.C (trong day quan trong nhat la ham Loop())
v o i d MyAnalysis: : Loop ( ) {
// I n a ROOT s e s si o n , you ca n do :
// Root > . L MyClass .C
// Root > MyClass t
// Root > t . GetEntry ( 1 2 ) ; // F i l l t d at a members w it h e n t ry
number 12
// Root > t . Show () ; // Show v a l u e s o f e n t r y 12
// Root > t . Show (1 6) ; // Read and show v al ue s of e nt r y 16
// Root > t . Loop () ; // Loop on a l l e n t r i e s
//
// This i s t he lo o p s ke le to n where :// j en tr y i s th e g l o ba l e nt r y number in t he c ha in
// i e nt r y i s th e en tr y number in t he c u rr en t Tree
/ / N ot e t h a t t h e a rg um en t t o G et En tr y m ust b e :
// j e n t r y f o r TChain : : GetEntry
/ / i e n t r y f o r T Tre e : : G et En tr y a nd T Bra nch : : G et En tr y
//
// To r ea d on ly s e l ec t ed b r anches , I n se r t s ta te me n ts l i k e :
// METHOD1:
// fChain>SetB r anchSta tus (" " , 0) ; // d i s ab l e a l l b ra nch es// fChain>S e t Br a n ch S t a tu s ( " b ra nc hn am e " , 1 ) ; / / a c t i v a t e
branchname
// METHOD2: re pl ac e l i n e
// fChain>GetEntry ( j e nt r y ) ; // r ea d a l l b ra nch es
//by b_branchname>G et En tr y ( i e n t r y ) ; / / r e a d o n l y t h i s b ra nc h
// gROOT>Res et () ;
i f ( fChain == 0) r e t u r n;
/ Cac k ha i bao v i e t o day /
/ / Tong s o e n t ry t r on g c h a in
Int_t nentries = Int_t ( fChain>GetEntries ( ) ) ;
// Lap t re n t a t ca e nt ry
Int_t nbytes = 0 , nb = 0 ;
f o r ( Int_t jentry =0 ; jentry
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
84/92
CHNG 7. FILE ng Nguyn Phng
/ / t r o n g t r u o n g h op TChain , 'i e n t r y ' l a s o e nt r y t ro n g f i l e dang
doc
nb = fChain>GetEntry ( jentry ) ; nbytes += nb ;
// i f ( Cut ( i e n t r y ) < 0 ) c o nt i nu e ;
/ Doan c od e x u l y v i e t o day /
}
/ Doan c od e l uu va t r i n h bay k et qua xu l y /
}
FileMyAnalysis.C cha cc ni dung tng ng vi cc hm c khai bo trongMy-Analysis.h. Cc x l s liu u c thc hin trong hm Loop(), cc khai bo v lnhtng ng c t ti cc v tr nh c ch ra trong v d bn trn.
V d:
v o i d An a: : Loop ( ) {
i f ( fChain == 0) r e t u r n;
Int_t nentries = Int_t ( fChain>GetEntries ( ) ) ;
TH1F hist = new TH1F ( " ", " ", 1 00 , 0 , 1 00 00 ) ;
Int_t nbytes = 0 , nb = 0 ;
f o r ( Int_t jentry =0 ; jentryGetEntry ( jentry ) ; nbytes += nb ;
f o r( Int_t itrack =0 ; itracksize ();++itrack ) {
i f( TrackP>at ( itrack ) > 1 00 0)
hist>Fill ( TrackP>at ( itrack ) ) ;}
}
hist>Draw ( ) ;
}
thc thi file x l, ta thc hin nh sau
root [ 0 ] . L MyAnalysis. C
root [ 1 ] MyAnalysis a
root [ 2 ] a .Loop ( )
83
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
85/92
CHNG 7. FILE ng Nguyn Phng
7.5 Bi tp
1. B s liu m phng phn b liu trong phantom nc (kch thc 4 4 4cm3)
c chiu bi chm tia gamma c cho ti http://nmtp.wikispaces.com/file/detail/dose_phantom.txt. Hy to mt file root c tn l dose.root, c cha 1 treec tn lDoseDistribution. Lu b s liu ny vo trong root file theo cc bin ta x, y, z.
2. c file root c to ra trong bi tp trc, v cc phn b liu:
Theo trc x, y, z i qua tm ca phantom.
Trn mt phng xy, yz, xz i qua tm ca phantom.
Trn mt phng xy, yz, xz ti bin ca phantom.
84
http://nmtp.wikispaces.com/file/detail/dose_phantom.txthttp://nmtp.wikispaces.com/file/detail/dose_phantom.txthttp://nmtp.wikispaces.com/file/detail/dose_phantom.txthttp://nmtp.wikispaces.com/file/detail/dose_phantom.txt8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
86/92
Li kt
Ti liu ny c bin son vi mc ch cung cp cho ngi c mt ci nhn khi qutcng nhng kin thc cn bn nht trong vic s dng ROOT trong cng vic phn tchv x l s liu. Mc d vn cn rt nhiu ch cha c cp n trong ti liu, tuynhin vi nhng g c trnh by, hi vng cc bn s nm bt c phn no nhng kinthc nn tng ca ROOT t c th tm hiu su hn v chng trnh ny thngqua cc ti liu ph bin trn mng internet. c bit i vi nhng bn c nh hngnghin cu v lnh vc thc nghim ht c bn, y gn nh l mt cng c khng ththiu trong cng vic ca cc bn sau ny.
Mc d rt c gng, nhng do thi gian hn hp nn chc chn ti liu ny vn cnnhiu thiu st v ni dung cng nh hnh thc trnh by. Rt mong nhn c s nggp kin ca cc bn vic bin son ti liu ngy cng tt hn.
85
8/13/2019 Hng dn s dng ROOT cho h iu hnh Windows
87/9