Hướng dẫn sử dụng macro xử lý phổ bằng ROOT

Embed Size (px)

Citation preview

  • 8/10/2019 Hng dn s dng macro x l ph bng ROOT

    1/18

    Hng dn s dng macro x l ph bng ROOT

    ng Nguyn [email protected]

    Ngy 24 thng 11 nm 2014

    1 M u

    Trong thi gian gn y ti c nhn c mt s cu hi lin quan n vic x l cc ph tia Xv gamma, c th l v cc vn c fie ph, xc nh nh, lm khp, tch cc nh ph bng

    ROOT. tr li cho cc cu hi ny, ti vit mt ti liu Hng dn c bn x l phgamma bng ROOT (http://goo.gl/05IUcp) tuy nhin c v nh n vn cn qu n ginso vi nhu cu tht s ca cc bn.

    V l do ti vit mt macro nh x l mt s ph n gin nh cc ph gamma, nhiux tia X, Raman,... C th xem macro ny l nh mt v d trc quan gip cc bn hiu c ccbc tin hnh x l mt ph n gin. Cc bn c th s dng macro phc v cho cng vicx l ph ca mnh hoc xem n nh l mt v d mu t xy dng nn chng trnh ring camnh. Cc cch thc x l s liu trong macro ny tuy khng phi l nhng cch x l tt nhtnhng hi vng chng s gip cho cc bn c ci nhn r rng v c th hn v nhng g mnh cnlm khi tin hnh x l ph bng ROOT.

    Ti cng xin gi li cm n n anhTrn Duy Tp v bnNguyn Ngc Hn(sinh vin lpVLHNK11) v cho php ti s dng ph tn x tia X ca mnh lm v d cho ti liu hngdn ny, c bit l bn Nguyn Ngc Hn c nhng trao i truyn cm hng cho ti to ramacro ny.

    2 Ti liu cn c

    Trong trng hp cc bn ch cn s dng macro m khng cn quan tm n ni dung ca n,cc bn c th b qua phn ny. Tuy nhin, nu cc bn mun hiu c cc thc vit chngtrnh thc hin cc x l hay hiu c cc hng dn trong ti liu ny, cc bn cn c mts kin thc nht nh v ROOT cng nh ngn ng lp trnh C++.

    Nhng kin thc ny c th thu c thng qua bt c ti liu no cc bn c th tm thy (schbo, tp ch, mng internet,...) hoc cc bn cng c th tm c trong nhng ti liu m ti vit trc

    Hng dn s dng ROOT cho h iu hnh Windows(http://goo.gl/olLp5o).

    Ngn ng lp trnh C++ (chun 2011)(http://goo.gl/ng8KyS).

    3 Chc nng chnh ca macro

    Macro x l s liu c tn l Spectrum_analysis, bao gm cc chc nng chnh nh sau

    c ph gamma, tia X v Raman.

    Tm nh v c lng phng nn thng qua vic s dng cc phng thc ca lpTSpectrumtrong ROOT.

    1

    http://goo.gl/05IUcphttp://goo.gl/olLp5ohttp://goo.gl/ng8KyShttp://goo.gl/ng8KyShttp://goo.gl/olLp5ohttp://goo.gl/05IUcp
  • 8/10/2019 Hng dn s dng macro x l ph bng ROOT

    2/18

    ng Nguyn Phng Ti liu ni b NMTP

    Lm khp cc nh dng Gauss, Lorentz v Voigt vi phng nn tuyn tnh v exponential.

    3.1 c ph

    MacroSpectrum_analysishin ti c th c c cc loi ph di y

    Ph tn x tia X ca vt liu ethylene tetrafluoroethylene(ETFE) c cung cp bi anhTrn Duy Tp.

    Ph gamma v tia X c ghi nhn bi phn mm Genie2K ca hng Canberra (c ui.TKA).

    Ph gamma v tia X c ghi nhn bi cc phn mm ca hng Amptek (c ui .MCA).

    Ph nhiu x tia X v Raman ca c s d liu RRUFF (http://rruff.info/).

    Hnh1trnh by mt s hnh v ca cc ph c c v v bng macro Spectrum_analysis.

    (a) Ph tn x tia X ca ETFE (b) Ph 60Co ca Amptek

    (c) Ph Raman ca Alum(K) t RRUFF (d) Ph phng nn HPGe ca Genie2K

    Hnh 1: Mt s v d ph c c v v bng macro Spectrum_analysis

    3.2 Tm nh

    Vi macroSpectrum_analysis, cc ph c c s c lu li di dng cc histogram. Vic tmnh ph c thc hin thng qua phng thc TSpectrum::Search trong ROOT vi cc thams do ngi dng t a vo. Hnh2trnh by kt qu ca vic tm nh ph, cc nh ph ctm thy s c nh du bi cc hnh tam gic mu . Ngoi ra hm tm nh ph cng tr vcho chng ta mt mng cha kt qu cc v tr nh ph tm c chng ta c th s dng chocc phn tch tip theo.

    2

    http://rruff.info/http://rruff.info/
  • 8/10/2019 Hng dn s dng macro x l ph bng ROOT

    3/18

    ng Nguyn Phng Ti liu ni b NMTP

    (a) Kt qu tm nh ca ph phng nn HPGe (b) Kt qu tm nh ca ph nhiu x tia X

    Hnh 2: Mt s v d tm nh ca macro Spectrum_analysis, cc v tr nh c nh du bngnhng tam gic mu

    3.3 c lng v tr phng nn

    Cng tng t nh vi tm nh, vic c lng phng nn lin tc c thc hin thng quaphng thc TSpectrum::Background. Hnh3trnh by vic c lng phng nn lin tc vi (a)ph Raman v(b)ph phng nn phng x HPGe, vi ng mu th hin phng nn clng c. Cc hnh(c)v(d)l cc ph Raman v phng nn phng x sau khi tr i phngnn lin tc.

    (a) Ph Raman trc khi tr phng nn (b) Ph phng HPGe trc khi tr phng nn

    (c) Ph Raman sau khi tr phng nn (d) Ph phng HPGe sau khi tr phng nn

    Hnh 3: Mt s v d c lng phng nn lin tc bng macroSpectrum_analysistrong hnh(a)v(b); tr phng nn trong hnh(c)v(d)

    3

  • 8/10/2019 Hng dn s dng macro x l ph bng ROOT

    4/18

    ng Nguyn Phng Ti liu ni b NMTP

    3.4 Lm khp, tch nh

    MacroSpectrum_analysischo php lm khp d liu thu c vi mt s dng nh (Hnh4)

    Gauss

    G(x) =A exp(x x0)

    2

    22

    Lorentz

    L(x) = 1

    1

    2

    (x x0)2 + (1

    2)2

    Voigt (l tch chp ca hai hm Gauss v Lorentz)

    V(x) = L(x) + (1 )G(x)

    Hnh 4: So snh cc hm Gauss, Lorentz va Voigt

    Cn i vi phng nn th hin ti macro ch c hai dng phng nn l

    Tuyn tnh lin(x) =a + b x

    Exponentialexp(x) =ea+bx

    Hnh5trnh by kt qu lm khp s liu vi hai nh Gauss v phng nn tyn tnh cho cc phtn x tia X v ph gamma ca ngun 60Co.

    (a) Kt qu lm khp ca ph tn x tia X (b) Kt qu lm khp ca ph 60Co

    Hnh 5: Mt s v d lm khp nh Gauss v phng nn tuyn tnh ca macroSpectrum_analysischo ph tn x tia X v ph 60Co

    4

  • 8/10/2019 Hng dn s dng macro x l ph bng ROOT

    5/18

    ng Nguyn Phng Ti liu ni b NMTP

    4 Cch s dng macro

    Phn ny s hng dn cc bn cch thc chy macro Spectrum_analysis.

    s dng c macro x l ph, trc tin ta cn phi ci t ROOT vo my, cch thc ci t c hng dn trong ti liuHng dn s dng ROOT cho h iu hnh Windowsnn ti s

    khng nhc ti na. Sau khi ci t xong ROOT, cc bn c th ti file Spectrum_analysis.tarti http://goo.gl/wxkwJe.

    Sau khi ti v gii nn file, ta thu c th mcSpectrum_analysisgm c cc file sau

    Spectrum_analysis.cxxl file macro x l ph.

    Cc fileGraftedETFE.txt,AlumK_Broad_Scan_Raman.rruff,Alloclasite_Powder_Xray.rruff,Co60_76B76.mcavphong.tkal cc file s liu ph cho ph tn x tia X (ETFE), ph Ra-man (Alum-K), ph nhiu x tia X (Alloclasite), ph 60Co (Amptek) v ph phng phng xgamma (Genie2K).

    Cc filerun.(....).batl cc batch file chy macro trong mi trng thng dch CINT vi

    cc file ph c tn tng ng. ChangeLog.txtl file lu tr cc thng tin sa i, cp nht ca macro.

    thc thi macro, cc bn c th s dng mt trong hai cch sau

    Cch 1 cch thc thng thng, cc bn m ng dngCommand Prompt(Windows) hayTer-minal(Linux), di chuyn n th mc mcSpectrum_analysisv g lnh

    > r oot -l

    v sau chy macro t du nhc root

    r o ot [ 0] . x S p e c tr u m _a n a l ys i s . c x x

    Hoc ta c th vit cng trn 1 dng lnh

    > r o ot - l S p e ct r u m _a n a l ys i s . c x x

    Nu mun truyn i s cho macro, ta vit

    > r oot -l 'S p e c t r u m _ a n a l ys i s . c x x ( " G r a f t e d E T F E . t x t " , " E T F E " ) '

    vi i s u tin l tn ca file ph, i s th hai l kiu file (vit hoa).

    Hin ti macro Spectrum_analysis.cxxch c c mt s kiu nh dng ph nh c lit k trn. Tuy nhin cc bn c th vit thm cho mnh cc hm dc d liu ph khc ph hp vikiu nh dng ph m mnh ang x l.

    Cch 2 s dng cc batch file1 (ch cho h iu hnh Windows), trong trng hp ny l cc filec dng

    run...bat

    Trong l tn ca file ph (khng c ui m rng) v l nh dng cafile ph m ta mun c.

    i vi cc batch file, cc bn ch n gin l nhp i chut (double click) vo file v macro st ng c thc thi. Nu cc bn mun c cc file ph khc, ch cn nhp chut phi, chn

    1Cch thc to batch file s c cp n trong mt ti liu khc.

    5

    http://goo.gl/wxkwJehttp://goo.gl/wxkwJe
  • 8/10/2019 Hng dn s dng macro x l ph bng ROOT

    6/18

    ng Nguyn Phng Ti liu ni b NMTP

    Renamev i tn ca batch file li cho tng ng vi tn v nh dng ca file ph, chng trnhs t ng cp nht v thc thi file ph .

    Gi s nh ta c mt file ph Genie2K c tn l Spectrum.txt. c file ph ny, ta c th itn file run.GraftedETFE.ETFE.batli thnh run.Spectrum.TKA.bat, chng trnh s tm file ctn tng ng (trong cng th mc) v c file theo nh dng nh ta khai bo.

    Hnh6cho ta mt v d v giao din xut hin khi chy mt batch file.

    Hnh 6: V d chy file run.AlumK_Broad_Scan_Raman.RRUFF.bat

    5 Cc thc x l ph vi macro

    Trong phn ny ti s hng dn cc bn cch thc x l ph vi macroSpectrum_analysis, ti sc gng trnh by tng bc mt cng vi nhng gii thch chi tit km theo. ng thi ti cngs dng phong cch lp trnh th tc thay v lp trnh hng i tng tin cho vic gii thch.Hi vng l khng qu kh theo di i vi cc bn, bi v y l phn quan trng nu cc bnmun s dng macro ny x l ph hoc vit mt chng trnh tng ng.

    5.1 Hm chnh ca macro

    u tin chng ta s tm hiu cch thc thit lp cc x l ph cho macro. Trong phn ny chngta s lm quen vi hm chnh ca macro, hm ny s c tn trng vi tn file macro m trong

    trng hp ny l Spectrum_analysis.Cc bn m file macro v tm n hmSpectrum_analsyis(), cc bn s thy hm ny c ni dungnh sau

    / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /

    /* Main functi on */

    / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /

    int S p e c t r u m _ a n a l y s i s ( TString f i le n am e = " G r a f t e d E T F E . t x t " , TString

    f i le t y pe = " E T F E " , bool s h o wp l ot = false )

    {

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    }

    6

  • 8/10/2019 Hng dn s dng macro x l ph bng ROOT

    7/18

    ng Nguyn Phng Ti liu ni b NMTP

    HmSpectrum_analsyis()c tt c 3 i s

    i s th nht c kiu TString khai bo tn ca file ph, y l i s quan trng nht(tt nhin, lm sao chng ta c th x l ph nu khng bit l ph no), gi tr bn phica du = l gi tr mc nh c gn cho i s nu khng c gi tr no c truyn

    TString f i l en a me = " G r a f t e d E T F E . t x t "

    i s th hai cng c kiuTString, khai bo nh dng ca file ph cn c, hin ti macroc sn 4 nh dng ph l ph tn x ETFE (k hiu "ETFE"), ph Genie2K (k hiu "TKA"),ph Amptek (k hiu "MCA") v ph ca c s d liu RRUFF (k hiu "RRUFF")

    TString f i l et y pe = " E T F E "

    i s th ba c kiu boolch nhn mt trong hai gi tr truehoc false(hay 1 hoc 0),i s ny c nhim v bt tt ch hin th hnh v th khi thc thi macro (chng tas ni sau)

    bool s h ow p l ot = false

    By gi chng ta s i vo ni dung u tin ca macro

    / * * * * ** * ** T h ie t l ap * * * ** * ** * /

    if ( ! s h o w p l o t ) gROOT - > S e t B a t c h ( true ) ;

    s e t P l o t S t y l e ( ) ;

    / * * * * ** * ** T h on g t in * * * ** * ** * /

    i n f o ( ) ;

    Dng lnh u tin dng iu khin bt tt ch hin th th khi chy chng trnh thng

    qua i s showplotm ta ni trn. i s ny c mc nh gi tr falsetc l hnhv th s khng xut hin khi thc thi macro (chng ta s xut hnh v ra thng file). Vic thitlp ch hin th hnh v ca ROOT c thc hin thng qua bin ton cc gROOT

    if ( ! s h o w p l o t ) gROOT - > S e t B a t c h ( true ) ;

    (nu gi tr truyn cho SetBatch()l trueth chng trnh s c thc hin ch batch modetc l khng hin th hnh v, ngoi ra ta cng c th thit lp ch ny thng qua ty chnh -bkhi chy root).

    Hai lnh tip theo

    s e t P l o t S t y l e ( ) ;

    v

    i n f o ( ) ;

    s gi cc hm thit lp kiu v v in ra thng tin ca macro (nhng ni dung nm trong hminfo()).

    Phn c d liu ca ph l khi lnh di y

    / * * ** ** ** D oc d u l ie u * ** ** ** * /

    TH1F * h ;

    int e r r c o d e ;switch ( h a s h_ t y pe s ( f i l e ty p e ) ) {

    case ETFE:

    e r r c o de = r e a d _ E TF E ( f i l en a m e , h ) ;

    7

  • 8/10/2019 Hng dn s dng macro x l ph bng ROOT

    8/18

    ng Nguyn Phng Ti liu ni b NMTP

    break ;

    case TKA:

    e r r c o de = r e a d _ T KA ( f i l en a m e , h ) ;

    break ;

    case MCA:

    e r r c o de = r e a d _ M CA ( f i l en a m e , h ) ;break ;

    case R R U F F :

    e r r c o de = r e a d _ R R UF F ( f i l en a m e , h ) ;

    break ;

    default :

    s td : : c e rr < < " E rr o r : U n de f i ne d f i le t yp e " < < s td : : e n dl ;

    e rr co de = 1 ;

    }

    if ( e r r c o d e ) return e r r c o d e ;

    Trong chng ta s so snh kiu nh dng filetypevi cc kiu c sn trong macro v gi cchm c d liu tng ng (read_ETFE(), read_TKA(), read_MCA() hay read_RRUFF()), trongtrng hp khng c kiu nh dng no ph hp, chng trnh s xut ra cu bo li

    s td : : c e rr < < " E rr o r : U n de f i ne d f i le t yp e " < < s td : : e n dl ;

    y cc bn cn lu mt iu l gi tr so snh ca chng ta khng phi l cc chui, bi vtheo c php C++ chun lnh switch ... case ...khng so snh cc chui2.Tuy nhin trongtrng hp ny cc bn li c th so snh chui bi v khi thc thi macro chng ta s dng trnhthng dch CINT ch khng phi trnh bin dch C++, v trnh thng dch CINT chp nhn vic

    so snh chui. Mt cch khc so snh chui l cc bn c th s dng chui cc cu lnh iukin if ... else if ... else if ... else ... so snh.

    Mc d vy y ti li khng mun so snh chui m mun th mt cch khc, trong trng hpny l to ra mt kiu d liu lit k thng qua t kha enum, u im ca cch ny l s trnhc vic phi so snh chui nhng vn c th s dng c switch ... case ... trong hmchnh so snh cc nh dng v gi hm c ph hp.

    Nu cc bn nhn ln pha trn ca hm Spectrum_analsyis(), cc bn s thy mt on codesau

    enum t y pe s { ET FE , TK A , MC A , R RU FF , N ON E };

    t y pe s h a sh _ t yp e s ( TString type)

    {

    if ( t yp e = = " E T F E " ) return E T F E ;

    if ( t yp e = = " T K A " ) return TKA;

    if ( t yp e = = " M C A " ) return MCA;

    if ( t yp e = = " R R U F F " ) return R R U F F ;

    return N O N E ;

    }

    y chng ta to ra mt kiu d liu mi l typesc 5 gi tr l ETFE, TKA, MCA, RRUFF,NONE, c k hiu trng vi gi tr ca chui nh dng. Sau l mt hm hash_types(TString)nhn vo gi tr ca chui, thc hin so snh v tr v kiu d liu typestng ng. Chng ta ss dng d liu kiu typesny thc hin so snh vi switch ... case ...

    2Kiu chui khng phi l kiu d liu c bn ca C++

    8

  • 8/10/2019 Hng dn s dng macro x l ph bng ROOT

    9/18

    ng Nguyn Phng Ti liu ni b NMTP

    switch ( h a s h_ t y pe s ( f i l e ty p e ) ) {

    case ETFE:

    . . .

    case TKA:

    . . .

    case MCA:

    . . .

    case R R U F F :

    . . .

    default :

    . . .

    }

    Cc bn thy y, vi vic s dng enumchng ta c th trnh vic phi vi phm c php chunC++ m vn to ra cho ngi c cm gic l ang so snh chui3. Ngoi ra, thay v s dnghm hash_types(), ta cng c th s dng std::map to ra mt cp gi tr (TString, types)vi cng dng tng ng.

    Mt iu na l trong on code c ph cc bn s thy xut hin mt bin errcode, bin nyc nhim v nhn gi tr tr v t cc hm c d liu, nu c li xy ra trong qu trnh c, cchm ny s tr v mt s nguyn khc 0 (trong trng hp ny l 1). Nu gi tr tr v l mt snguyn khc 0, lnh returns c thc hin v kt thc chng trnh m khng cn phi thcthi cc lnh theo sau .

    Nu qu trnh c d liu thnh cng, khng c li xy ra, d liu c c s cha trong histogramh.

    X l histogram Chng ta s n phn tip theo l x l histogramhny, cc lnh x l nmtrong khi di y

    / / st d :: c o ut < < " M a ki ng p lo ts : " < < s td : : e nd l ;

    / / s e t Ra n ge ( h , 1 7 , 2 6) ;

    / / d r a w ( h ) ;

    / / st d :: c o ut < < " F i nd in g p ea ks : " < < s td : : e nd l ;

    / / fl oa t * p ea k_ po s = p ea k Fi n di n g (h , 10 , 0 .0 5) ;

    / / d r a w ( h ) ;

    / / st d :: c o ut < < " E s ti m at i ng b a ck gr o un d : " < < s td : : e nd l ;

    / / T H1 F * b kg = b k g Es t i ma t i on ( h , 8 0 , " B a c k I n cr e a s in g W in d o w " ) ;

    / / d r a w ( h , b k g ) ;

    / / h = b k g Su b t ra c t io n ( h , b kg ) ;

    / / d r a w ( h ) ;

    / / st d :: c o ut < < " F i tt in g p ea ks : " < < s td : : e nd l ;

    / / p e a kF i t ti n g ( h , 1 6 , 2 2) ;

    mu lt ip ea k Fi tt in g (h , 2 , 2600 , 3800) ;

    / / m u l t ip e a kF i t ti n g ( h , 1 , 6 10 0 , 6 2 00 ) ;

    y l phn m cc bn c th chnh sa phc v cho nhu cu x l ca mnh nh tm nh,c lng phng nn, lm khp nh,... Cc bn ng ngc nhin rng v sao c nhiu dng lnh3Cc bn cng c th s dng cch thc tng t vi cc s nguyn v bin hng thay v to mt kiu d liu

    mi.

    9

  • 8/10/2019 Hng dn s dng macro x l ph bng ROOT

    10/18

    ng Nguyn Phng Ti liu ni b NMTP

    c comment (n i) trong phn ny, bn c th uncomment bt c dng lnh no v th xemkt qu ca chng trnh s nh th no i vi nhng dng lnh .

    u tin l hm v histogram

    d r a w ( h ) ;

    Rt n gin, ch cn truyn histogram cho hm l xong. Tuy nhin c mt iu cc bn nn bitl chng ta c ti 3 hm draw()

    void d ra w ( TH1F * h )

    void d ra w ( TH1F *h , TH1F * h 1 )

    void d ra w ( TH1F *h , TF1 * * f un c , int N )

    i vi cc bn ch quen s dng C, hn s rt ngc nhin khi ti khai bo c ba hm u c cngtn vi nhau. y l mt tnh nng ch c trong C++ ch khng c trong C, l kh nng npchng (hay cn gi l ti nh ngha) hm, cc hm hon ton c th c cng mt tn, min lkhc nhau v s lng hoc kiu i s truyn vo v tr v. Trnh bin dch (hoc thng dch)

    s quyt nh hm no c gi da vo cc tham s m chng ta truyn cho hm, trong trnghp ny ti ch truyn duy nht hisotgram hnn hm u tin s c gi. iu ny s c li chochng ta, ch cn nh duy nht 1 tn thay v phi nh nhiu tn ca cc hm v th khc nhau(vic nh i s cng mt ri!!).

    Kt qu v th s khng hin ra trn mn hnh ca chng ta m s c lu vo file nh c ui.pngtrong cng th mc vi macro ca chng ta.

    Trong trng hp chng ta khng mun v ton ph th c th s dng hm

    void s e t R a n g e ( TH1F * h , float m i n , float max)

    thit lp khong v (min,max) trc khi gi hm draw().

    Vic tm nh v c lng phng nn s c thc hin thng qua cc hm

    float * p ea k Fi n di n g ( TH1F *h , float s ig ma = 2 , float t h r es ho l d = 0 .2 )

    TH1F * b k gE s ti m at i on ( TH1F *h , int N i t e r = 5 0 , TString o p t i o n = "

    B a c k I n c r e a s i n g W i n d o w ")

    ngha ca cc tham s sigma, threshold, Niter v option c gii thch trong ti liuHng dn c bn x l ph gamma bng ROOTnn ti s lt qua phn ny. Trong qu trnhtm nh hay c lng phng nn, cc bn hon ton c th t do thay i gi tr cc tham s vchn ra b tham s ph hp nht ng vi tng trng hp c th.

    Khi c lng c phng nn, hm bkgEstimation()s tr v mt histogram cha phng nn c c lng, chng ta c th s dng histogram ny thc hin vic tr phng nn lintc

    TH1F * b kg = b k gE st i ma t io n ( h , 8 0 , " B a c k I n c r e a s i n g W i n d o w " ) ; / / uo c

    l u on g p h on g n en

    d r a w ( h , b k g ) ; // ve p ho ng ne n c u ng v oi p ho

    h = b k g Su b t ra c t io n ( h , b kg ) ; // tru ph ong nen va gan tro lai cho pho

    d r a w ( h ) ; // ve pho sau khi da tru ph ong nen

    i vi lm khp nh, chng ta c hai hm

    TF1 * p ea k Fi t ti n g ( TH1F *h , float m i n , float max)TF1 * * m u l ti p e ak F i tt i n g ( TH1F *h , c o ns t i nt N , float m i n , float max)

    10

  • 8/10/2019 Hng dn s dng macro x l ph bng ROOT

    11/18

    ng Nguyn Phng Ti liu ni b NMTP

    Trong hm peakFitting()l hm lm khp n gin, ch s dng mt nh Gauss v phngnn tuyn tnh hoc exponential, hm ny s dng cc nh ngha hm c sn trong ROOT lmkhp. Trong trng hp cc bn mun lm khp nhiu nh hay lm khp vi cc dng phn bkhc, cc bn nn s dng hm multipeakFitting().

    Di y l mt v d ni dung tiu biu cho hm Spectrum_analysis()

    / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /

    /* Main functi on */

    / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /

    int S p e c t r u m _ a n a l y s i s ( TString f i le n am e = " G r a f t e d E T F E . t x t " , TString

    f i le t y pe = " E T F E " , bool s h o wp l ot = false )

    {

    / * * * * ** * ** T h ie t l ap * * * ** * ** * /

    if ( ! s h o w p l o t ) gROOT - > S e t B a t c h ( true ) ;

    s e t P l o t S t y l e ( ) ;

    / * * * * ** * ** T h on g t in * * * ** * ** * /

    i n f o ( ) ;

    / * * ** ** ** D oc d u l ie u * ** ** ** * /

    TH1F * h ;

    int e r r c o d e ;

    switch ( h a s h_ t y pe s ( f i l e ty p e ) ) {

    case ETFE:

    e r r c o de = r e a d _ E TF E ( f i l en a m e , h ) ;

    break ;case TKA:

    e r r c o de = r e a d _ T KA ( f i l en a m e , h ) ;

    break ;

    case MCA:

    e r r c o de = r e a d _ M CA ( f i l en a m e , h ) ;

    break ;

    case R R U F F :

    e r r c o de = r e a d _ R R UF F ( f i l en a m e , h ) ;

    break ;

    default :

    s td : : c e rr < < " E rr o r : U n de f i ne d f i le t yp e " < < s td : : e n dl ;e rr co de = 1 ;

    }

    if ( e r r c o d e ) return e r r c o d e ;

    / * ** ** * X u l y h is t og ra m * ** ** * /

    s td : : c o ut < < " M ak in g p lo ts : " < < s td : : e n dl ;

    d r a w ( h ) ;

    s td : : c o ut < < " F i nd in g p ea ks : " < < s td : : e n dl ;float * p ea k_ po s = p ea k Fi n di n g (h , 20 , 0 .2 ) ;

    d r a w ( h ) ;

    11

  • 8/10/2019 Hng dn s dng macro x l ph bng ROOT

    12/18

    ng Nguyn Phng Ti liu ni b NMTP

    s td : : c o ut < < " E s t im a t in g b a c kg r o un d : " < < s td : : e n dl ;

    TH1F * b kg = b k gE st i ma t io n ( h , 5 , " B a c k I n c r e a s i n g W i n d o w " ) ;

    d r a w ( h , b k g ) ;

    s td : : c o ut < < " F i tt in g p ea ks : " < < s td : : e n dl ;

    mu lt ip ea k Fi tt in g (h , 2 , 10 , 25) ;

    return 0;

    }

    5.2 Hm lm khp nhiu nh ph

    Trong phn ny ti s ni k hn v hm multipeakFitting(), cc cch thc thit lp gi tr thams ban u cng nh truyn tham s sau khi lm khp.

    thun tin cho vic hng dn, ti sp xp hm ny ngay sau hm Spectrum_analysis()

    TF1 * * m u l ti p e ak F i tt i n g ( TH1F *h , c o ns t i nt N , float m i n , float max)

    {

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    }

    u tin, chng ta hy xem xt cc i s ca hm ny: i s u tin l histogram hm ta sdng cho vic lm khp, i s th hai l s lng cc nh Nm ta d nh s lm khp v haii s cng cng l khong lm khp (min,max).

    lm khp vi histogram, trc tin chng ta cn phi xy dng xy dng cc hm m t nhv phng nn. m t phn b nh, ti to ra 3 hm

    / / G a u ss i an P e ak f u nc t i on

    double g a u s s i a n P e a k ( double *x , double * p a r )

    {

    return par[0]* TMath : : G au s ( x [ 0] , p ar [ 1 ] , p ar [ 2 ] ) ;

    }

    / / L o r en z i an P e ak f u nc t i on

    double l o r e n t z i a n P e a k ( double *x , double * p a r )

    {

    return par[0]/ TMath : : M ax ( 1 . e -1 0 , ( x [0 ] - p a r [ 2] ) * ( x [0 ] - p a r [ 2] ) +

    . 2 5* p a r [ 1 ]* p a r [ 1 ] ) ;}

    / / V oi gt P ea k f un ct io n

    double v o i g t P e a k ( double *x , double * p a r )

    {

    return par[0]* TMath : : V o ig t ( x [ 0] - p a r [ 1] , p ar [ 2 ] , p ar [ 3 ] ) ;

    }

    Nhim v ca cc hm ny l tnh v tr v gi tr tng ng vi cc gi tr ca x v tham spar[]c truyn vo.

    y chng ta truyn cc i s l cc con tr, nh cc bn bit, cc con tr ny s cha ach ca cc phn t u tin ca mt mng (c ch s l 0), cc phn t tip theo cng s nmtrong cc a ch tip theo phn t u tin ny. Do nu ta truyn a ch ca phn t u

    12

  • 8/10/2019 Hng dn s dng macro x l ph bng ROOT

    13/18

    ng Nguyn Phng Ti liu ni b NMTP

    tin cng ng ngha vi vic truyn a ch ca mng, cc phn t tip theo c th d dng suyra c. Trong trng hp ca x, n ch c mt gi tr nn ta s s dng phn t u tin x[0]trong tnh ton.

    Cc hm m t phng nn cng c nh ngha theo cch thc tng t

    / / E x p on e n ti a l B a c kg r o un d f u nc t io ndouble e x p o n e n t i a l ( double *x , double * p a r )

    {

    return TMath : : E xp ( p a r [ 0] + p ar [ 1 ] * x [ 0] ) ;

    }

    / / L i ne a r B a c kg r o un d f u n ct i on

    double l i n e a r ( double *x , double * p a r )

    {

    return p ar [ 0 ] + p ar [ 1 ] * x [ 0] ;

    }

    Sau khi c cc hm m t nh v phng nn, ta s tip tc xy dng nh tng cu hai hmny, y chnh l hm m ta s s dng lm khp, trong trng hp ny ti xin ly v d hmGauss m t nh v hm tuyn tnh m t phng nn, ta c hm tng nh sau

    / / G a us si an P ea ks + B a ck g ro u nd

    double g a u s s i a n F ( double *x , double * p a r )

    {

    double f ;

    f = l i ne a r ( x ,& p a r [ 1 ]) ;

    for ( int i = 1; i

  • 8/10/2019 Hng dn s dng macro x l ph bng ROOT

    14/18

    ng Nguyn Phng Ti liu ni b NMTP

    f + = g a u ss i a nP e a k ( x ,& p a r [ i * 3] ) ;

    }

    return f ;

    Nh cc bn thy, bin is lp t 1 n par[0]vi par[0]chnh l tham s cha s lng cc

    nh Gauss m ta cn lm khp.Nu cc bn s thy cc hm Gauss c gi vi tham spar[i*3], l do l v chng ta sdng 3 tham s u tin, 1 cho s lng cc nh (par[0]) v hai cho hm phng nn tuyn tnh(par[1], par[2]), ng thi mi hm Gauss cng s dng 3 tham s. Nh vy hm Gauss this s dng tham s t par[i*3]tr i.

    Sau khi xy dng xong hm tng, chng ta s quay tr li hm multipeakFitting()v btu khai bo cc hm

    TF1 * * m u l ti p e ak F i tt i n g ( TH1F *h , c o ns t i nt N , float m i n , float max)

    {

    TF1 * f = new TF1 ( " f " , g a us s ia n F , m in , m ax , 3 *( N + 1 ) ) ;

    f - > S e t T i t l e ( " T o t a l " ) ;TF1 * bk g = new TF1 ( " b k g " , li ne ar , min , max , 2) ;

    b k g - > S e t T i t l e ( " B a c k g r o u n d " ) ;

    }

    y chng ta khai bo hai i tng (object) thuc lp TF1 l f (hm tng) s dng hm nidung ca hm gaussianF()m ta nh ngha trc , v bkg s dng hm linear(). Haitham s min vmax quy nh khong gi tr s dng hm, i tng fc tt c 3*(N+1)thams (1 cho s lng nh, 2 cho phng nn tuyn tnh v 3N cho N hm Gauss). Cc phng thcTF1::SetTitle() s thit lp tiu cho cc i tng fvbkg, m chng ta s s dng cc tiu ny trong phn ch gii khi v th phn sau.

    Tip theo chng ta s tin hnh thit lp cc gi tr ban u v lm khp

    TF1 * * m u l ti p e ak F i tt i n g ( TH1F *h , c o ns t i nt N , float m i n , float max)

    {

    TF1 * f = new TF1 ( " f " , g a us s ia n F , m in , m ax , 3 *( N + 1 ) ) ;

    f - > S e t T i t l e ( " T o t a l " ) ;

    TF1 * bk g = new TF1 ( " b k g " , li ne ar , min , max , 2) ;

    b k g - > S e t T i t l e ( " B a c k g r o u n d " ) ;

    h - > G e t X a x i s ( ) - > S e t R a n g e U s e r ( m i n , m a x ) ;

    f - > F i x P a r a m e t e r ( 0 , N ) ;/ / f - > S e t P a r L i m i t s ( 2 , - 2 , 2 ) ;

    for ( int i =1 ; i S e t P a r a m e t e r ( i * 3 , h - > G e t M a x i m u m ( ) / 2 ) ;

    f - > S e t P a r a m e t e r ( i * 3 + 1 , ( m a x + m i n ) / 2 ) ;

    f - > S e t P a r a m e t e r ( i * 3 + 2 , ( m a x - m i n ) / 6 ) ;

    }

    h - > F i t ( " f " , " r 0 " ) ;

    }

    Dng lnh

    h - > G e t X a x i s ( ) - > S e t R a n g e U s e r ( m i n , m a x ) ;

    s thit lp khong gi tr hin th cho histogram phc v cho mc ch v th sau ny.

    14

  • 8/10/2019 Hng dn s dng macro x l ph bng ROOT

    15/18

    ng Nguyn Phng Ti liu ni b NMTP

    Nu cc bn nh li, chng ta mun s dngpar[0] truyn thng tin v s nh Gauss cn lmkhp cho hm gaussianF(), lm c iu ny chng ta cn thit lp gi tr c nh tham sny

    f - > F i x P a r a m e t e r ( 0 , N ) ;

    vi phng thc TF1::FixParameter(), gi tr ca tham s s c nh trong sut qu trnh lmkhp. Trong cu lnh trn ti thit lp gi tr c nh cho par[0]l N, nh vy tham s par[0]ch mang duy nht gi tr ny trong sut qu trnh lm khp v chng ta s yn tm l thng tinv s nh s khng thay i.

    Chng ta c th thit lp cc gi tr u tin cho tham s thng qua phng thc TF1::SetParameter()v gii hn khong gi tr ca tham s thng qua phng thc TF1::SetParLimits()

    for ( int i =1 ; i S e t P a r a m e t e r ( i * 3 , h - > G e t M a x i m u m ( ) / 2 ) ;

    f - > S e t P a r a m e t e r ( i * 3 + 1 , ( m a x + m i n ) / 2 ) ;

    f - > S e t P a r a m e t e r ( i * 3 + 2 , ( m a x - m i n ) / 6 ) ;

    }

    Trong on code ny, vng l[ fors lp qua ton cc nh Gauss v thit lp gi tr ban ucho cc tham s tng ng vi cao nh (i*3), v tr nh (i*3+1) v rng nh (i*3+2). Ccgi tr u vo nh trong on code ch l cc v d, khng phi l cc gi tr ti u nht. Khithc hin vic lm khp hm, cc bn cn phi iu chnh cc gi tr ny sao cho ph hp vi tntrng hp c th. Chng hn nh nu trc khi lm khp chng ta thc hin vic tm nh,chng ta c th truyn cc v tr nh tm c vo trong hm multipeakFitting()v s dngchng nh nhng gi tr ban u cho vic lm khp.

    Sau khi hon thnh xong cc bc chun b, chng ta sn sng cho vic lm khp. thchin vic ny, chng ta n gin ch g

    h - > F i t ( " f " , " r 0 " ) ;

    Chng trnh s lm khp histogram htheo hm f, ty chn "r" y dng bo cho chngtrnh rng vic lm khp ch tin hnh trn khong m hm c gii hn (trong trng hp nyl tminn max), ty chn "0" bo cho chng trnh khng hin th hm lm khp cng vihistogram khi v hnh, chng ta s thc hin vic v hnh sau.

    Cui cng, phn vic cn li l thm on code ly cc tham s c lm khp v v kt qu

    TF1 * * m u l ti p e ak F i tt i n g ( TH1F *h , c o ns t i nt N , float m i n , float max)

    {

    TF1 * f = new TF1 ( " f " , g a us s ia n F , m in , m ax , 3 *( N + 1 ) ) ;f - > S e t T i t l e ( " T o t a l " ) ;

    TF1 * bk g = new TF1 ( " b k g " , li ne ar , min , max , 2) ;

    b k g - > S e t T i t l e ( " B a c k g r o u n d " ) ;

    h - > G e t X a x i s ( ) - > S e t R a n g e U s e r ( m i n , m a x ) ;

    f - > F i x P a r a m e t e r ( 0 , N ) ;

    / / f - > S e t P a r L i m i t s ( 2 , - 2 , 2 ) ;

    for ( int i =1 ; i S e t P a r a m e t e r ( i * 3 , h - > G e t M a x i m u m ( ) / 2 ) ;

    f - > S e t P a r a m e t e r ( i * 3 + 1 , ( m a x + m i n ) / 2 ) ;f - > S e t P a r a m e t e r ( i * 3 + 2 , ( m a x - m i n ) / 6 ) ;

    }

    h - > F i t ( " f " , " r 0 " ) ;

    15

  • 8/10/2019 Hng dn s dng macro x l ph bng ROOT

    16/18

    ng Nguyn Phng Ti liu ni b NMTP

    double p a r s [ 3 * ( N + 1 ) ] ;

    TF1 * f un c [ N + 2 ];

    f - > G e t P a r a m e t e r s ( p a r s ) ;

    f un c [0 ] = f ;

    b k g - > S e t P a r a m e t e r s ( & p a r s [ 1 ] ) ;

    f un c [ 1] = b kg ;for ( int i =0; i S e t T i t l e ( s t r ) ;

    p e a k - > S e t P a r a m e t e r s ( & p a r s [ ( i + 1 ) * 3 ] ) ;

    f un c [ i +2 ] = p ea k ;

    }

    d r a w ( h , f u n c , N ) ;

    return f u n c ;

    }

    ly c cc tham s sau khi lm khp ta khai bo mt mng pars[]v lu cc tham s vomng ny thng qua phng thc TF1::GetParameters()

    double p a r s [ 3 * ( N + 1 ) ] ;

    f - > G e t P a r a m e t e r s ( p a r s ) ;

    Chng ta cng to thm 1 mng func[] lu tr tt c cc hm sau khi lm khp, v phn tu tin ca mng ny chnh l f

    TF1 * f un c [ N + 2 ];

    f un c [0 ] = f ;

    Phn t th hai s l bkg, nhng i tng bkg y cha c tham s c th cho nn ta cn phitruyn tham s vo bkgtrc khi a vo mngfunc[](nu cc bn vn cn nh th tham s caphng nn bt u t phn t th hai, tc l par[1])

    b k g - > S e t P a r a m e t e r s ( & p a r s [ 1 ] ) ;

    f un c [ 1] = b kg ;

    Cc hm nh Gauss cng ln lt c a vo trong mng func[]

    for ( int i =0; i S e t T i t l e ( s t r ) ;

    p e a k - > S e t P a r a m e t e r s ( & p a r s [ ( i + 1 ) * 3 ] ) ;

    f un c [ i +2 ] = p ea k ;

    }

    Cui cng l ta gi hm draw() v th v tr mng func[]v cho hm

    d r a w ( h , f u n c , N ) ;

    return f u n c ;

    16

  • 8/10/2019 Hng dn s dng macro x l ph bng ROOT

    17/18

    ng Nguyn Phng Ti liu ni b NMTP

    5.3 Hm v th

    Chng ta c tt c 3 hm draw() nhng y ti ch xin trnh by v hm va c gi bimultipeakFitting()

    void d ra w ( TH1F *h , TF1 * * f un c , int N )

    {. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    }

    Hm ny c 3 i s, i s th nht l histogram, th hai l mng func[] cha cc hm mic lm khp v i s th ba l s lng cc nh. L do s dng i s th ba l ta khngc phng thc trc tip ta bit c kch thc ca mng func[], cng chnh l s nh mta lm khp. Nu trong C++ ta c th s dng mt s cch bit c chng hn nh dngsizeof() hay s dng std::vector thay cho vic s dng mng, tuy nhin trnh thngdch CINT c mt s gii hn ca n nn cch nhanh gn nht l truyn thng gi tr N.

    bt u cho vic v th, chng ta cn tin hnh mt s thit lp, u tin l to canvasvoid d ra w ( TH1F *h , TF1 * * f un c , int N )

    {

    / * * * ** * V e h i s to g ra m * * ** * * /

    s td : : c o ut < < " . .. D r aw i ng h i s to g r am s '" < < h - > G et Na me ( ) < < " ' and

    f i tt e d f u nc t i on s " < < s td : : e n dl ;

    TCanvas * c a nv as = new TCanvas () ;

    c a n v a s - > c d ( ) ;

    }

    Sau l chn ra mt s mu ng nht v (cc bn c th tham kho cc gi tr mu trongti liuHng dn s dng ROOT cho h iu hnh Windows)

    void d ra w ( TH1F *h , TF1 * * f un c , int N )

    {

    / * * * ** * V e h i s to g ra m * * ** * * /

    s td : : c o ut < < " . .. D r aw i ng h i s to g r am s '" < < h - > G et Na me ( ) < < " ' and

    f i tt e d f u nc t i on s " < < s td : : e n dl ;

    TCanvas * c a nv as = new TCanvas () ;

    c a n v a s - > c d ( ) ;

    int colors[9];

    c ol or s [0 ] = 2; c ol or s [1 ] = 4; c ol or s [2 ] = 6; c ol or s [3 ] = 7; c ol or s[4] = 8;

    c ol or s [5 ] = 9; c ol or s [6 ] = 3 2; c ol or s [7 ] = 40 ; c ol or s [8 ] = 4 6;

    }

    Thit lp cc gi tr cho trc ta v v histogram

    void d ra w ( TH1F *h , TF1 * * f un c , int N )

    {

    / * * * ** * V e h i s to g ra m * * ** * * /

    s td : : c o ut < < " . .. D r aw i ng h i s to g r am s '" < < h - > G et Na me ( ) < < " ' and

    f i tt e d f u nc t i on s " < < s td : : e n dl ;TCanvas * c a nv as = new TCanvas () ;

    c a n v a s - > c d ( ) ;

    17

  • 8/10/2019 Hng dn s dng macro x l ph bng ROOT

    18/18

    ng Nguyn Phng Ti liu ni b NMTP

    int colors[9];

    c ol or s [0 ] = 2; c ol or s [1 ] = 4; c ol or s [2 ] = 6; c ol or s [3 ] = 7; c ol or s

    [4] = 8;

    c ol or s [5 ] = 9; c ol or s [6 ] = 3 2; c ol or s [7 ] = 40 ; c ol or s [8 ] = 4 6;

    h - > G e t Y a x i s ( ) - > S e t R a n g e U s e r ( 0 , h - > G e t M a x i m u m ( ) * 1 . 2 ) ;

    h - > G e t X a x i s ( ) - > S e t T i t l e ( h - > G e t T i t l e ( ) ) ;

    h - > G e t Y a x i s ( ) - > S e t T i t l e ( " C o u n t s " ) ;

    h - > G e t X a x i s ( ) - > S e t T i t l e S i z e ( gStyle - > G e t T i t l e S i z e ( " x " ) ) ;

    h - > G e t Y a x i s ( ) - > S e t T i t l e S i z e ( gStyle - > G e t T i t l e S i z e ( " x " ) ) ;

    h - > D r a w C o p y ( " p " ) ;

    }

    V cc hm mi c lm khp (lu s dng ty chn "same" v trn cng canvas vihistogram)

    for ( int i = 0; i < N +2; ++ i ) {

    f u n c [ i ] - > S e t L i n e C o l o r ( c o l o r s [ i ] ) ;

    f u n c [ i ] - > D r a w C o p y (" s a m e " ) ;

    }

    Thm bng ch gii bng cch to mt i tng thuc lp TLegend

    / * ** ** B an g c hu g ia i * ** ** * /

    TLegend * leg = new TLegend ( 0. 75 , 0 .7 5 , 0 .9 , 0 .9 ) ;

    l e g - > S e t B o r d e r S i z e ( 0 ) ;

    l e g - > S e t T e x t S i z e ( gStyle - > G e t T i t l e S i z e ( " x " ) * 0 . 7 ) ;

    l e g - > S e t F i l l C o l o r ( 0 ) ;for ( int i = 0; i < N +2; ++ i ) {

    l eg - > A d d E n t r y ( f u n c [ i ] , f u n c [ i ] - > G e t T i t l e ( ) , " L " ) ;

    }

    l e g - > D r a w ( ) ;

    V cui cng l lu li cavas sau khi v xong ra file c hu t l "_fit"v phn m rng l ".png"

    / * ** ** * L uu h in h v e * ** ** * /

    TString n am e = h - > G e t Na m e ( ) ;

    n a m e . A p p e n d (" _ f i t . p n g " ) ;

    s td : : c o ut < < " .. . S av in g p lo t a s '

    " < < n am e < < "'

    " < < s td : : e n dl ;c a n v a s - > S a v e A s ( n a m e ) ;

    Cc bn c th chnh li cc thit lp v hnh cng nh tn file c lu li ty theo nhu cu ring.

    6 Li kt

    Mc d cn mt s hm vn cha c cp n trong ti liu ny nhng ti ngh rng hy nhng hm nh l nhng iu b n ang ch cc bn tip tc khm ph . Tt c nhng iuti trnh by y ch l nhng kin thc c bn, li khuyn cho cc bn l hy tm hiu su hnv nhng vn ny vn dng mt cch ph hp vo trong cng vic ca mnh, ng ngh rng

    macro ny c th x l c tt c cc ph m cc bn gp phi. y ch l s khi u, l nntng cc bn c th t xy dng nn cc chng trnh x l s liu ca mnh.

    Chc cc bn thnh cng!