hướng dẫn cơ bản xử lý phổ gamma bằng root

Upload: nguyenphuongdang

Post on 02-Jun-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/11/2019 Hng dn c bn x l ph gamma bng ROOT

    1/11

    Hng dn c bn x l ph gamma bng ROOT

    ng Nguyn [email protected]

    Ngy 30 thng 9 nm 2014

    Nh l mt phn m rng ca tp ti liu Hng dn s dng ROOT cho h iu hnhWindows1, bi vit ny s hng dn cc bn mt s cch thc c bn c mt file ph dngtext v x l ph vi cng c ROOT. Mc d bi vit ch ch yu tp trung vo cch thc x lph gamma nhng ngi c hon ton c th p dng cc kin thc c c vo trong vic

    x l cc loi ph khc mt khi nm c cch thc hot ng ca chng trnh.

    1 c file ph

    Thng thng cc ph s c lu li di dng cc file s liu (phn ln l dng text nu kchthc d liu khng qu ln) tin cho vic x l offline. Trong phn ny chng ta s hc cchc ph t mt file dng text v lu vo trong histogram phc v cho cc bc x l tiptheo.

    tin cho vic minh ha, ta s s dng mt file ph gamma ca ngun 60Co 1024 knh(download ti http://goo.gl/wQeh2m). Ph gamma ny c hai nh tng ng vi nng lng

    1173 v 1332keV

    .u tin, chng ta s to mt file macro x l ph c tn l pho_gamma.c, Trong file macrony, ta to mt hm c tn pho_gamma() (lu rng tn hm phi trng vi tn ca file)

    void pho_gamma ( ){

    }

    K tip chng ta s khai bo mt histogram 1-chiu cha ph

    void pho_gamma ( )

    { / / K ha i b ao h i s t og r a mTH1F h1 = new TH1F ( "h1", "Pho Co60 1024 kenh", 1 0 2 4 , 1 , 1 0 2 4) ;

    }

    B ba tham s cui cng (1024,1,1024)dng khai bo ln lt s knh (1024), gi tr ngvi knh u tin (1) v knh cui cng (1024).

    Trong trng hp ta mun v ph theo nng lng ta c th khai bo nh sau

    double nang_luong (i n t kenh ){

    c o n s t d o ub l e A = 1 . 0 ; // g ia t r i v i du

    c o n s t d o ub l e B = 0 . 0 ; // g ia t r i v i du1Xem ti http://goo.gl/olLp5o

    1

    http://goo.gl/wQeh2mhttp://goo.gl/olLp5ohttp://goo.gl/olLp5ohttp://goo.gl/wQeh2m
  • 8/11/2019 Hng dn c bn x l ph gamma bng ROOT

    2/11

    ng Nguyn Phng Ti liu ni b NMTP

    r e t u r n ( Akenh+B ) ;}

    void pho_gamma ( ){

    / / K ha i b ao h i s t og r a m

    TH1F h1 = new TH1F ( "h1", "Pho Co

    60 1024 kenh", 1 0 2 4 , nang_luong ( 1) ,nang_luong (10 24) ) ;

    }

    vi nang_luong(kenh) l hm tr v gi tr nng lng tng ng vi knh da vo ngchun nng lng ta chun trc .

    Sau khi hon thnh vic khai bo histogram, cng vic tip theo chng ta s l tin hnh mfile c s liu, c 2 cch thc hin vic ny

    Cch 1: s dng th vin stdio

    // Mo f i l e pho Co60. dat

    FILE file = fopen ( "Co60. dat ", " r " ) ;

    // Doc f i l e phoi n t i = 0 ;double sodem;w h i l e ( !feof ( file ) ) {

    fscanf ( file,"%l f " ,& sodem ) ;h1>SetBinContent(++i,sodem ) ;

    }

    // Dong f i l e phofclose ( file ) ;

    Cch 2: s dng th vin iostream

    // Mo f i l e pho Co60. datifstream file ( "Co60. dat " ) ;

    // Doc f i l e phoi n t i = 0 ;double sodem;w h i l e ( !file.eo f ( ) ) {

    file >> sodem;h1>SetBinContent(++i,sodem ) ;

    }

    // Dong f i l e phofile.close ( ) ;

    Lu :

    Trong mt s trng hp, d liu ph c cha c nhng thng tin v detector, ngun(mu) o, thi gian o,... (thng nm u file), do chng ta c th s phi thay icch c file cho ph hp vi tng trng hp c th.

    Do s liu ph gamma ghi nhn sn s m theo knh nn ta s dng SetBinContent() gn thng gi tr cho knh tng ng. Trong trng hp s liu th (ch c gi tr nng

    lng hoc in th ghi nhn, cha sp xp s m theo knh), ta c th s dng phngthc Fill() ghi nhn gi tr cho knh tng ng, vd:

    2

  • 8/11/2019 Hng dn c bn x l ph gamma bng ROOT

    3/11

    ng Nguyn Phng Ti liu ni b NMTP

    h1>Fill ( nangluong ) ;

    Trong trng hp cn v ph, ta g

    h1>Draw ( ) ;

    Nu mun thm thng tin ca hai trc x v y khi v ph, ta thm cc dng lnh sau trc dnglnh h1->Draw()

    h1>GetXaxis ( )>SetTitle ( "Channel" ) ;h1>GetYaxis ( )>SetTitle ( "Number of e n t r ie s " ) ;

    Sau khi thc hin xong tt c cc bc lit k, file macro pho_gamma.cin hnh c ni dungnh sau

    void pho_gamma ( ){

    / / K ha i b ao h i s t og r a mTH1F h1 = new TH1F ( "h1", "Pho Co60 1024 kenh", 1 02 4 , 1 , 1 0 2 4) ;

    // Mo f i l e pho Co60. datifstream file ( "Co60. dat " ) ;

    // Doc f i l e phoi n t i = 0 ;double sodem;w h i l e ( !file.eo f ( ) ) {

    file >> sodem;h1>SetBinContent(++i,sodem ) ;

    }

    // Dong f i l e phofile.close ( ) ;

    // Ve phoh1>GetXaxis ( )>SetTitle ( "Channel" ) ;h1>GetYaxis ( )>SetTitle ( "Number of e n t r ie s " ) ;h1>Draw ( ) ;

    }

    thc thi file macro trong ROOT, ti du nhc ta g lnh root -l ng nhp vo ROOT,

    sau g .x pho_gamma.c> root lroot [ 0 ] . x pho_gamma. c

    hoc n gin hn bng cch g trc tip

    > root l pho_gamma. c

    Kt qu v ph c cho nh trong Hnh1.

    thot khi ROOT ta g

    root [ 1 ] . q

    3

  • 8/11/2019 Hng dn c bn x l ph gamma bng ROOT

    4/11

    ng Nguyn Phng Ti liu ni b NMTP

    Hnh 1: Ph ca ngun 60Co 1024 knh

    2 Lm khp nh ph v phng nn

    2.1 Lm khp vi 1 nh

    Gi s ta mun lm khp nh nng lng 1173keV theo dng Gaussian

    f(x) =Aexp (x x0)

    2

    22 (1)

    trong A l cao nh, x0 l v tr ca nh v l lch chun ca phn b nh. Vphng nn c dng tuyn tnh (a thc bc nht)

    g(x) =ax+b (2)

    Ta khai bo hai hm nh v phng nn trong ROOT nh sau

    // Ham mo ta dinh dang GaussianTF1 dinh = new TF 1 ( "dinh", " [0 ] TMath : : Gaus ( x , [ 1 ] , [ 2 ] ) ", min, ma x ) ;// Ham mo t a phong nen dang da t huc bac 1

    TF1

    phongnen = new TF 1 ( "phongnen", " [ 0 ] + [ 1 ]

    x", min, max ) ;

    Chng ta nh ngha hai hm dinh (3 tham s)v phongnen (2 tham s) tng ng vi dngca nh v phng nn m ta cn lm khp. Hai gi tr minvmaxtng ng vi khong gi tr(khong knh) m ta cn lm khp. Ngoi ra ta cng c th s dng cc hm tch hp c sntrongTF1 khai bo

    // Ham mo ta dinh dang GaussianTF1 dinh = new TF 1 ( "dinh", "gaus", min, ma x ) ;// Ham mo t a phong nen dang da t huc bac 1TF1 phongnen = new TF 1 ( "phongnen", " p o l 1 ", min, ma x ) ;

    K , ta s nh ngha hm cn lm khp l tng ca hai hm ny

    // Ham lam khop bang t ong c ua ham dinh va phong nenTF1 f = new TF 1 ( " f ", "dinh+phongnen", min, max ) ;

    4

  • 8/11/2019 Hng dn c bn x l ph gamma bng ROOT

    5/11

    ng Nguyn Phng Ti liu ni b NMTP

    Hmfs c tt c 5 tham s, trong ba tham s u tin (c ch s t 0 n 2) s tng ngvi cc tham s ca nh v 2 tham s cui s tng ng vi phng nn.

    Trong trng hp mun cung cp gi tr c lng (v tr nh, rng nh,...) cho cc thams trong qu trnh lm khp, ta c th s dng hm SetParameter()

    // Tham so dau vaof>SetParameter (1 ,680) ; // u oc l uo ng v i t r i di nh ( tham s o c o c h i s o 1 )f>SetParameter (2 ,10) ; // u oc l uo ng be r on g d i nh ( tham s o c o c h i s o 2 )

    lm khp histogram, ta g

    h1>Fit ( " f " ) ;

    Sau khi thm phn lm khp, file pho_gamma.cc ni dung nh sau

    void pho_gamma ( ){

    TH1F h1 = new TH1F ( "h1", "Pho Co60 1024 kenh", 1 02 4 , 1 , 1 0 2 4) ;ifstream file ( "Co60. dat " ) ;

    i n t i = 0 ;double sodem;w h i l e ( !file.eo f ( ) ) {

    file >> sodem;h1>SetBinContent(++i,sodem ) ;

    }file.close ( ) ;

    // Khai bao ham c an lam khopdouble mi n = 650 , ma x = 7 3 0;

    TF 1 dinh = new TF1 ( "dinh", " [0 ] TMath : : Gaus( x , [ 1 ] , [ 2 ] ) ",min, ma x ) ;TF 1 phongnen = new TF1 ( "phongnen", " [ 0 ] + [ 1 ] x", min, ma x ) ;TF 1 f = new TF1 ( " f ", "dinh+phongnen", min, ma x ) ;

    // T ien hanh lam khopf>SetParameter (1 ,680) ; // uoc l u on g v i t r i d in hf>SetParameter (2 ,10) ; // u o c l u o ng do r o n g d i nhh1>Fi t ( " f " ) ;

    }

    Kt qu lm khp2 c cho di y v trong Hnh2

    FC N =190921 FROM MIGRAD STATUS=CONVERGED 38 8 CALLS 38 9 TOTALED M =6.14761 e09 STRATEGY= 1 ERROR MATRIXUNCERTAINTY 1 . 9 per cent

    EXT PARAMETER STEP FIRST

    NO. NAME VALUE ERROR SIZE DERIVATIVE1 p0 2 . 1 6 9 8 5 e+03 1 .0 28 33 e+01 7.58175 e03 1 .9 20 97 e062 p1 6 . 9 4 7 1 8 e+02 6 .6 98 16 e02 5.47668 e07 6.69323 e043 p2 1 . 5 8 8 6 7 e+01 5 .9 06 63 e02 8 . 796 92 e05 1 .0 57 71 e034 p3 4 . 5 5 6 1 4 e+02 1 .0 97 15 e+00 7 .7 73 81 e04 7 .5 75 60 e065 p4 3.34368e01 1 . 45 069 e03 9.55275 e07 8.72390 e02

    Trong , p0,...,p4l cc tham s c lm khp. truy xut cc tham s c lm khp, ta

    s dng hm GetParameters()2Cng c c s dng lm khp y l lp TMinuit(xem thm ti http://goo.gl/T7TOvy).

    5

    http://goo.gl/T7TOvyhttp://goo.gl/T7TOvy
  • 8/11/2019 Hng dn c bn x l ph gamma bng ROOT

    6/11

    ng Nguyn Phng Ti liu ni b NMTP

    f l o a t par;f>GetParameters ( pa r ) ;

    Hnh 2: Kt qu lm khp nh 1173keV

    Lm khp vi hm do ngi dng t nh ngha Trong trng hp s dng hm dongi dng t nh ngha, trc tin ta cn phi khai bo cc dng ca hm cn lm khp

    // Ham mo t a dinh dang G auss iandouble dinh (double x, double par ) {

    r e t u r n ( par[ 0 ] TMath: : Gaus ( x[ 0 ] ,pa r[ 1 ] ,pa r[ 2 ] ) ) ;}

    // Ham mo t a phong nen dang da t huc bac 1double phongnen (double x, double par ) {

    r e t u r n par[ 0 ] + pa r[ 1 ] x[ 0 ] ;}

    Hm cn lm khp l tng ca hai hm dinh()v phongnen()

    // Ham lam khop bang t ong c ua ham dinh G aussian va phong nendouble tong (double x, double par ) {r e t u r n ( dinh ( x,pa r )+phongnen ( x ,& pa r[ 3 ] ) ) ;

    }

    Hm tong()c tt c 5 tham s, trong 3 tham s u (c ch s t 0 n 2) l cc tham sm t nh Gaussian v 2 tham s cui (c ch s 3 v 4) m t phng nn. Do trong ta chcn khai bo dinh(x,par)(tng ng vi dinh(x,&par[0]), cn i vi hm phng nn tacn khai bo phongnen(x,&par[3]) gn tham s th t (c ch s 3) cho tham s u tinca hm phng nn.

    Trong hm pho_gamma()ta khai bo mt i tng thuc lp TF1 tng ng vi hm cn lm

    khp/ / Tao ham f t r o n g k ho an g ( min , max ) c o 5 tham s o ( 3 c ho d in h , 2 c ho p ho ng

    nen)

    6

  • 8/11/2019 Hng dn c bn x l ph gamma bng ROOT

    7/11

    ng Nguyn Phng Ti liu ni b NMTP

    TF1 f = new TF 1 ( " f ", tong, min, max, 5 ) ;

    Sau khi nh ngha hm f, cch thc lm khp cng tng t nh hng dn trn.

    2.2 Lm khp vi nhiu nh

    Tng t nh vi cch thc lm khp mt nh nhng thay v ch khai bo 1 hm cho 1 nhduy nht, ta s khai bo thm cc hm nh na tng ng vi s lng nh cn lm khp.

    Trong v d ny, ta s tin hnh lm khp hai nh 1173 v 1332keV cng lc.

    void pho_gamma ( ){

    TH1F h1 = new TH1F ( "h1", "Pho Co60 1024 kenh", 1 02 4 , 1 , 1 0 2 4) ;ifstream file ( "Co60. dat " ) ;

    i n t i = 0 ;double sodem;

    w h i l e ( !file.eo f ( ) ) {file >> sodem;h1>SetBinContent(++i,sodem ) ;

    }file.close ( ) ;

    // Khai bao ham c an lam khopdouble mi n = 650 , ma x = 8 4 0;TF 1 dinh1 = new TF 1 ( "dinh1", " [0 ] TMath : : Gaus ( x , [ 1 ] , [ 2 ] ) ",min, ma x ) ;TF 1 dinh2 = new TF 1 ( "dinh2", " [0 ] TMath : : Gaus ( x , [ 1 ] , [ 2 ] ) ",min, ma x ) ;TF 1 phongnen = new TF1 ( "phongnen", " [ 0 ] + [ 1 ] x", min, ma x ) ;TF 1 f = new TF1 ( " f ", "dinh1+dinh2+phongnen", min, ma x ) ;

    // T ien hanh lam khopf>SetParameter (1 ,680) ; // u oc l u on g v i t r i dinh 1f>SetParameter (2 ,10) ; // u o c l u o ng do r o n g d i nh 1f>SetParameter (4 ,800) ; // u oc l u on g v i t r i dinh 2f>SetParameter (5 ,10) ; // u o c l u o ng do r o n g d i nh 2h1>Fi t ( " f " ) ;

    }

    Kt qu thu c nh sau

    FC N =129525 FROM MIGRAD STATUS=CONVERGED 77 8 CALLS 77 9 TOTALED M =1.28668 e07 STRATEGY= 1 ERROR MATRIX

    UNCERTAINTY 1 . 7 per centEXT PARAMETER STEP FIRST

    NO. NAME VALUE ERROR SIZE DERIVATIVE1 p0 2 . 1 8 3 1 7 e+03 1 .0 10 23 e+01 1 .1 94 52 e02 4 .6 47 91 e052 p1 6 . 9 4 6 5 6 e+02 6 .5 49 87 e02 4 . 240 25 e05 4.75500 e033 p2 1 . 6 0 2 1 1 e+01 5 .7 15 97 e02 7.22233 e05 1 .0 66 56 e024 p3 1 . 8 3 7 5 7 e+03 8 .8 67 22 e+00 6.74572 e03 9 .5 44 55 e065 p4 7 . 8 7 3 2 9 e+02 7 .0 59 84 e02 7 . 153 74 e05 1.11855 e036 p5 1 . 6 0 2 3 4 e+01 5 .5 48 44 e02 3.39193 e05 6.49520 e037 p6 4 . 4 9 7 8 7 e+02 1 .0 84 71 e+00 4.24501 e04 1 .3 27 24 e048 p7 3.49310e01 1 . 42 140 e03 4 . 716 60 e07 2 .0 57 78 e01

    7

  • 8/11/2019 Hng dn c bn x l ph gamma bng ROOT

    8/11

    ng Nguyn Phng Ti liu ni b NMTP

    Hnh 3: Kt qu lm khp hai nh 1173 v 1332keV

    3 TSpectrum

    TSpectrum l mt lp c xy dng nhm phc v cho nhu cu x l ph, c bit l phgamma. M ngun gc ca lp ny c vit bi Miroslav Morhac bng ngn ng lp trnh Cv vit li bng C++ bi Rene Brun. Cc bn c th tham kho thm thng tin v lp ny tihttp://root.cern.ch/root/html530/TSpectrum.html .

    Khai bo khai bo mt i tng thuc lp TSpectrumta g

    TSpectrum s = new TSpectrum ( ) ;

    c lng phng nn thng qua hm Background(), hm ny s tnh ton ph phng nnthng qua thut ton SNIP (Sensitive Nonlinear Iterative Peak) c cng thc nh sau

    vp(i) = min

    vp1(i),

    vp1(i+p) +vp1(ip)

    2

    (3)

    vipl s ln lp v il v tr knh. c lng phng nn di chn hai nh ph 60Co ta lm nh sau

    void pho_gamma ( ){

    TH1F h1 = new TH1F ( "h1", "Pho Co60 1024 kenh", 1 02 4 , 1 , 1 0 2 4) ;ifstream file ( "Co60. dat " ) ;

    i n t i = 0 ;double sodem;w h i l e ( !file.eo f ( ) ) {

    file >> sodem;h1

    >SetBinContent(++i,sodem ) ;

    }file.close ( ) ;

    8

    http://root.cern.ch/root/html530/TSpectrum.htmlhttp://root.cern.ch/root/html530/TSpectrum.htmlhttp://root.cern.ch/root/html530/TSpectrum.html
  • 8/11/2019 Hng dn c bn x l ph gamma bng ROOT

    9/11

    ng Nguyn Phng Ti liu ni b NMTP

    h1>GetXaxis ( )>SetRange (600 ,1000 ) ; / / kh oa ng g i a t r i ( k ho an g ken h )c an u oc l u o ng p ho ng n en

    h1>Draw ( ) ; / / ve ph o

    // Khai bao TSpectrumTSpectrum s = new TSpectrum ( ) ;

    // Uoc l uo ng phong nen v o i s o l a n l a p l a 50/ / s u dung o p t io n " same " d e v e p hong nen t r e n c un g d o t h i v o i phoTH1F background = s>Background ( h1,50 , "same" ) ;

    }

    Hnh 4: Kt qu c lng phng nn di chn hai nh 1173 v 1332keV

    Mt s option c th c s dng trong hm Background()gm c:

    BackIncreasingWindow: y l option mc nh cho hm

    BackOrderN: s dng phng php clipping filter, vi N= 2, 4, 6, 8

    nosmoothing: khng lm trn (mc nh l c lm trn)

    BackSmoothingN: rng ca s lm trn, vi N = 3, 5, 7, 9, 11, 13, 15

    Compton: s dng nu c cnh Compton (Compton edge) trong vng lm khp

    same: hin th kt qu trn cng th vi ph

    Tm nh thng qua hm Search(). Phng php tm nh y c da trn phngphp vi phn bc hai c lm trn. Cch thc thc hin nh sau

    void pho_gamma ( ){

    TH1F h1 = new TH1F ( "h1", "Pho Co60 1024 kenh", 1 02 4 , 1 , 1 0 2 4) ;ifstream file ( "Co60. dat " ) ;

    i n t i = 0 ;

    9

  • 8/11/2019 Hng dn c bn x l ph gamma bng ROOT

    10/11

    ng Nguyn Phng Ti liu ni b NMTP

    double sodem;w h i l e ( !file.eo f ( ) ) {

    file >> sodem;h1>SetBinContent(++i,sodem ) ;

    }file.close ( ) ;

    // Khai bao TSpectrumTSpectrum s = new TSpectrum ( ) ;

    // Tim d in h v o i c ac tham s o l a n l u o t l a :// ( hist ogr am , s igma , "op t ion " , t hr e shol d )i n t sodinh = s>Search ( h1, 2 , "", 0 . 2 0 ) ;

    }

    Hnh 5: Kt qu tm nh ca ph 60Co, v tr ca cc nh c nh du bi tam gic mu

    Chc nng ca cc tham s trong hm Search() nh sau:

    histogram: ph cn tm nh.

    sigma: rng nh. Trong trng hp nh ti knh i c hiu gia s m nh v sm trung bnh ca hai knh (i

    3*sigma, i + 3*sigma) nh hn threshold, nh ny s

    b loi b.

    threshold: cc nh c s m nh hn tch ca thresholdv s m ca nh cao nht sb loi b (gi tr mc nh l 0.05).

    option:

    noMarkov: khng s dng thut ton chui Markov (mc nh l c s dng)

    goff: khng lu d liu v v kt qu tm nh

    nodraw: khng v ph vi kt qu tm nh

    thu c thng tin v s lng nh tm c v v tr cc nh ta c th truy xut cc thnhphn fNPeaksv fPositionXthng qua cc hm

    10

  • 8/11/2019 Hng dn c bn x l ph gamma bng ROOT

    11/11

    ng Nguyn Phng Ti liu ni b NMTP

    i n t sodinh = s>GetNPeaks ( ) ; / / s o l u on g d i nh t im d uo cf l o a t vitri = s>GetPositionX ( ) ; / / mang ( a r r ay ) ch ua v i t r i c ac d in h

    Ti liu[1] http://root.cern.ch/root/html/TF1.html

    [2] http://root.cern.ch/root/html530/TSpectrum.html

    11

    http://root.cern.ch/root/html/TF1.htmlhttp://root.cern.ch/root/html530/TSpectrum.htmlhttp://root.cern.ch/root/html530/TSpectrum.htmlhttp://root.cern.ch/root/html/TF1.html