Added to repository.
This commit is contained in:
35
geant3/paw/fit_prec.for
Normal file
35
geant3/paw/fit_prec.for
Normal file
@ -0,0 +1,35 @@
|
||||
function fit_prec(t)
|
||||
|
||||
real t, t0
|
||||
vector tzero(1)
|
||||
common/pawpar/par(6)
|
||||
|
||||
|
||||
c t: time [ns]
|
||||
|
||||
c par(1): Background [1]
|
||||
c par(2): normalization [1]
|
||||
c par(3): asymmetry [1]
|
||||
c par(4): frequency [MHz]
|
||||
c par(5): phase [degree]
|
||||
c par(6): muon lifetime [microsec]
|
||||
c par(7): relaxation [1/microsec]
|
||||
|
||||
c um richtige Fitergebnisse zu erhalten, muss der Fitroutine der Zeitnullpunkt
|
||||
c des Spektrums mitgeteilt werden:
|
||||
|
||||
t0 = tzero(1)
|
||||
t = t-t0
|
||||
|
||||
|
||||
twopi = 6.283185
|
||||
fit_prec = par(1)+ ! Background
|
||||
+ par(2)* ! normalization
|
||||
+ exp(-t/(1000.*par(6)))* ! decay
|
||||
+ ( 1.+par(3)* ! asymmetry
|
||||
c + exp(-t*(par(7)/1000.))* ! relaxation
|
||||
+ cos( twopi*(par(4)/1000. *t + par(5)/360.)) ! oscillation
|
||||
+ )
|
||||
|
||||
end
|
||||
|
383
geant3/paw/fit_prec2_ge.kumac
Normal file
383
geant3/paw/fit_prec2_ge.kumac
Normal file
@ -0,0 +1,383 @@
|
||||
if [1].EQ.'?' .OR. [1].EQ.' ' then
|
||||
mess '==============================================================================='
|
||||
mess 'FIT_PREC IDLeft B fromFit toFit t0'
|
||||
mess
|
||||
mess 'Kumac to fit the GEANT simulated decay spectra of L and R.'
|
||||
mess 'If IDleft is given, then it is assumed that'
|
||||
mess ' IDright = IDleft+3,'
|
||||
mess
|
||||
mess 'B : magnetic field in gauss'
|
||||
mess 'fromFit : lower boundary for fit'
|
||||
mess 'toFit : upper boundary for fit'
|
||||
mess 't0 : time zero'
|
||||
mess
|
||||
mess '==============================================================================='
|
||||
exitm
|
||||
endif
|
||||
*
|
||||
*===========================================================================
|
||||
current = $hcdir()
|
||||
|
||||
* define Histo ID's
|
||||
|
||||
idl = [1]
|
||||
idt = [idl]+2
|
||||
idr = [idl]+3
|
||||
idb = [idl]+4
|
||||
*
|
||||
* check if histograms exist in PAW memory
|
||||
*
|
||||
cd //pawc
|
||||
|
||||
if ( $hexist([idl]) .eq. 0 ) then
|
||||
mess
|
||||
mess Did not found Left histogram ID [idl]
|
||||
mess
|
||||
exitm
|
||||
endif
|
||||
if ( $hexist([idt]) .eq. 0 ) then
|
||||
mess
|
||||
mess Did not found Top histogram ID [idt]
|
||||
mess
|
||||
exitm
|
||||
endif
|
||||
if ( $hexist([idr]) .eq. 0 ) then
|
||||
mess
|
||||
mess Did not found Right histogram ID [idr]
|
||||
mess
|
||||
exitm
|
||||
endif
|
||||
if ( $hexist([idb]) .eq. 0 ) then
|
||||
mess
|
||||
mess Did not found Bottom histogram ID [idb]
|
||||
mess
|
||||
exitm
|
||||
endif
|
||||
|
||||
shift
|
||||
|
||||
* transfer magnetic field strength:
|
||||
|
||||
B = [1]
|
||||
|
||||
* get region of histo to be used for fit:
|
||||
|
||||
if ($index([2],'.').NE.0) then
|
||||
von = $rsigma([2])
|
||||
else
|
||||
von = [2]
|
||||
endif
|
||||
if ($index([3],'.').NE.0) then
|
||||
bis = $rsigma([3])
|
||||
else
|
||||
bis = [3]
|
||||
endif
|
||||
|
||||
* get rebinning factor and fit options:
|
||||
|
||||
t0 = [4]
|
||||
|
||||
if ( [t0] .eq. ' ' .or. [t0] .eq. '!' ) then
|
||||
mess
|
||||
mess Missing time zero !
|
||||
mess
|
||||
exitm
|
||||
endif
|
||||
if ( $vexist(tzero) ) then
|
||||
v/de tzero
|
||||
endif
|
||||
v/cre tzero(1)
|
||||
v/inp tzero(1) [t0]
|
||||
|
||||
* check if added histos are to be used and read in histos:
|
||||
|
||||
* do the fits:
|
||||
|
||||
freq = [B] * 0.013554 | precession frequency in MHz
|
||||
freqmin = 0.8*[freq]
|
||||
freqmax = 1.2*[freq]
|
||||
freqstep = 0.005*[freq]
|
||||
*
|
||||
if ( $vexist(par) ) then
|
||||
v/de par
|
||||
endif
|
||||
if ( $vexist(pmin) ) then
|
||||
v/de pmin
|
||||
endif
|
||||
if ( $vexist(pmax) ) then
|
||||
v/de pmax
|
||||
endif
|
||||
if ( $vexist(step) ) then
|
||||
v/de step
|
||||
endif
|
||||
if ( $vexist(errpar) ) then
|
||||
v/de errpar
|
||||
endif
|
||||
*
|
||||
*
|
||||
*
|
||||
* BKG N0 Asym mu+ freq. Phase tau_mu lambda
|
||||
* =======================================================
|
||||
*
|
||||
* v/cre par(7) r 0. 500. 0.25 0. 0. 2.19703 0.
|
||||
* v/cre pmin(7) r -10. 0. 0. 0. -400. 0. 0.
|
||||
* v/cre pmax(7) r 100. 10000. 0.60 0. +400. 3. 100.
|
||||
* v/cre step(7) r 0. 10. 0.01 0. 5. 0. 0.
|
||||
* v/cre errpar(7) r 1. 1. 1. 1. 1. 1. 1.
|
||||
v/cre par(6) r 0. 500. 0.25 [freq] 0. 2.19703
|
||||
v/cre pmin(6) r -10. 0. 0. [freqmin] -400. 0.
|
||||
v/cre pmax(6) r 100. 10000. 0.40 [freqmax] +400. 3.
|
||||
v/cre step(6) r 0. 10. 0.01 [freqstep] 5. 0.
|
||||
v/cre errpar(6) r 0. 1. 1. 1. 1. 0.
|
||||
|
||||
*
|
||||
tdec0 = tzero(1) | vector tzero filled in FIT_PREC.KUMAC
|
||||
ttt = Fit from [von] to [bis], t0 = [tdec0]
|
||||
title [ttt]
|
||||
*
|
||||
*
|
||||
hi/fit [idl]([von]:[bis]) paw$dir:fit_prec.for bl0 6 par step pmin pmax errpar
|
||||
*
|
||||
* store fit result and error for A_Left, frequency and relaxation rate
|
||||
*
|
||||
a_l = par(3)
|
||||
a_lerr = errpar(3)
|
||||
a_l_weight = [a_l]/([a_lerr]*[a_lerr])
|
||||
inv_a_lerr = 1./([a_lerr]*[a_lerr])
|
||||
f_l = par(4)
|
||||
f_lerr = errpar(4)
|
||||
f_l_weight = [f_l]/([f_lerr]*[f_lerr])
|
||||
inv_f_lerr = 1./([f_lerr]*[f_lerr])
|
||||
* r_l = par(7)
|
||||
* r_lerr = errpar(7)
|
||||
* r_l_weight = [r_l]/([r_lerr]*[r_lerr])
|
||||
* inv_r_lerr = 1./([r_lerr]*[r_lerr])
|
||||
*
|
||||
* if ( [opt] .eq. 'strexp' ) then
|
||||
* beta_l = par(8)
|
||||
* beta_lerr = errpar(8)
|
||||
* beta_l_weight = [beta_l]/([beta_lerr]*[beta_lerr])
|
||||
* inv_beta_lerr = 1./([beta_lerr]*[beta_lerr])
|
||||
* endif
|
||||
*
|
||||
*
|
||||
* initialize the phase for the top detector
|
||||
*
|
||||
goto right
|
||||
*
|
||||
phase = par(5)
|
||||
phase = [phase]+90.
|
||||
v/inp par(5) [phase]
|
||||
hi/fit [idt]([von]:[bis]) paw$dir:fit_prec.for bl0 6 par step pmin pmax errpar
|
||||
*
|
||||
* store fit result and error for A_top
|
||||
*
|
||||
a_t = par(3)
|
||||
a_terr = errpar(3)
|
||||
a_t_weight = [a_t]/([a_terr]*[a_terr])
|
||||
inv_a_terr = 1./([a_terr]*[a_terr])
|
||||
f_t = par(4)
|
||||
f_terr = errpar(4)
|
||||
f_t_weight = [f_t]/([f_terr]*[f_terr])
|
||||
inv_f_terr = 1./([f_terr]*[f_terr])
|
||||
* r_t = par(7)
|
||||
* r_terr = errpar(7)
|
||||
* r_t_weight = [r_t]/([r_terr]*[r_terr])
|
||||
* inv_r_terr = 1./([r_terr]*[r_terr])
|
||||
*
|
||||
* if ( [opt] .eq. 'strexp' ) then
|
||||
* beta_t = par(8)
|
||||
* beta_terr = errpar(8)
|
||||
* beta_t_weight = [beta_t]/([beta_terr]*[beta_terr])
|
||||
* inv_beta_terr = 1./([beta_terr]*[beta_terr])
|
||||
* endif
|
||||
*
|
||||
*
|
||||
*
|
||||
* initialize the phase for the right detector
|
||||
*
|
||||
right:
|
||||
phase = par(5)
|
||||
phase = [phase]+180.
|
||||
v/inp par(5) [phase]
|
||||
hi/fit [idr]([von]:[bis]) paw$dir:fit_prec.for bl0 6 par step pmin pmax errpar
|
||||
|
||||
* store fit result and error for A_right
|
||||
*
|
||||
a_r = par(3)
|
||||
a_rerr = errpar(3)
|
||||
a_r_weight = [a_r]/([a_rerr]*[a_rerr])
|
||||
inv_a_rerr = 1./([a_rerr]*[a_rerr])
|
||||
f_r = par(4)
|
||||
f_rerr = errpar(4)
|
||||
f_r_weight = [f_r]/([f_rerr]*[f_rerr])
|
||||
inv_f_rerr = 1./([f_rerr]*[f_rerr])
|
||||
* r_r = par(7)
|
||||
* r_rerr = errpar(7)
|
||||
* r_r_weight = [r_r]/([r_rerr]*[r_rerr])
|
||||
* inv_r_rerr = 1./([r_rerr]*[r_rerr])
|
||||
*
|
||||
* if ( [opt] .eq. 'strexp' ) then
|
||||
* beta_r = par(8)
|
||||
* beta_rerr = errpar(8)
|
||||
* beta_r_weight = [beta_r]/([beta_rerr]*[beta_rerr])
|
||||
* inv_beta_rerr = 1./([beta_rerr]*[beta_rerr])
|
||||
* endif
|
||||
*
|
||||
*
|
||||
*
|
||||
* initialize the phase for the bottom detector
|
||||
*
|
||||
goto end
|
||||
*
|
||||
phase = par(5)
|
||||
phase = [phase]+90.
|
||||
v/inp par(5) [phase]
|
||||
hi/fit [idb]([von]:[bis]) paw$dir:fit_prec.for bl0 6 par step pmin pmax errpar
|
||||
*
|
||||
* store fit result and error for A_bottom
|
||||
*
|
||||
a_b = par(3)
|
||||
a_berr = errpar(3)
|
||||
a_b_weight = [a_b]/([a_berr]*[a_berr])
|
||||
inv_a_berr = 1./([a_berr]*[a_berr])
|
||||
f_b = par(4)
|
||||
f_berr = errpar(4)
|
||||
f_b_weight = [f_b]/([f_berr]*[f_berr])
|
||||
inv_f_berr = 1./([f_berr]*[f_berr])
|
||||
* r_b = par(7)
|
||||
* r_berr = errpar(7)
|
||||
* r_b_weight = [r_b]/([r_berr]*[r_berr])
|
||||
* inv_r_berr = 1./([r_berr]*[r_berr])
|
||||
*
|
||||
* if ( [opt] .eq. 'strexp' ) then
|
||||
* beta_b = par(8)
|
||||
* beta_berr = errpar(8)
|
||||
* beta_b_weight = [beta_b]/([beta_berr]*[beta_berr])
|
||||
* inv_beta_berr = 1./([beta_berr]*[beta_berr])
|
||||
* endif
|
||||
*
|
||||
*
|
||||
* plot result:
|
||||
|
||||
end:
|
||||
zone 2 2
|
||||
|
||||
hi/pl [idl] e
|
||||
hi/pl [idt] e
|
||||
hi/pl [idr] e
|
||||
hi/pl [idb] e
|
||||
*
|
||||
*--------------------------------
|
||||
*
|
||||
* calculate the weighted mean and the "inner" and "outer" standard deviation
|
||||
* fo asymmetry
|
||||
*
|
||||
sum1 = [a_l_weight] + [a_r_weight]
|
||||
sum2 = [inv_a_lerr] + [inv_a_rerr]
|
||||
a_mean = [sum1]/[sum2]
|
||||
in_a_mean = $sigma(sqrt(1./[sum2])) | inner standard deviation
|
||||
*
|
||||
* now calculate the outer standard deviation
|
||||
*
|
||||
dev_l = ([a_mean]-[a_l])*([a_mean]-[a_l])*[inv_a_lerr]
|
||||
dev_r = ([a_mean]-[a_r])*([a_mean]-[a_r])*[inv_a_rerr]
|
||||
sum3 = [dev_l] + [dev_r]
|
||||
out_a_mean = $sigma(sqrt(1./3.*[sum3]/[sum2]))
|
||||
*
|
||||
*----------------------------------
|
||||
*
|
||||
* mean of frequency
|
||||
*
|
||||
sum1 = [f_l_weight] + [f_r_weight]
|
||||
sum2 = [inv_f_lerr] + [inv_f_rerr]
|
||||
f_mean = [sum1]/[sum2]
|
||||
in_f_mean = $sigma(sqrt(1./[sum2])) | inner standard deviation
|
||||
*
|
||||
* no calculate the outer standard deviation
|
||||
*
|
||||
dev_l = ([f_mean]-[f_l])*([f_mean]-[f_l])*[inv_f_lerr]
|
||||
dev_r = ([f_mean]-[f_r])*([f_mean]-[f_r])*[inv_f_rerr]
|
||||
sum3 = [dev_l] + [dev_r]
|
||||
out_f_mean = $sigma(sqrt(1./3.*[sum3]/[sum2]))
|
||||
*
|
||||
*--------------------------------------
|
||||
*
|
||||
* mean of relaxation
|
||||
*
|
||||
* sum1 = [r_l_weight] + [r_t_weight] + [r_r_weight] + [r_b_weight]
|
||||
* sum2 = [inv_r_lerr] + [inv_r_terr] + [inv_r_rerr] + [inv_r_berr]
|
||||
* r_mean = [sum1]/[sum2]
|
||||
* in_r_mean = $sigma(sqrt(1./[sum2])) | inner standard deviation
|
||||
*
|
||||
* no calculate the outer standard deviation
|
||||
*
|
||||
* dev_l = ([r_mean]-[r_l])*([r_mean]-[r_l])*[inv_r_lerr]
|
||||
* dev_t = ([r_mean]-[r_t])*([r_mean]-[r_t])*[inv_r_terr]
|
||||
* dev_r = ([r_mean]-[r_r])*([r_mean]-[r_r])*[inv_r_rerr]
|
||||
* dev_b = ([r_mean]-[r_b])*([r_mean]-[r_b])*[inv_r_berr]
|
||||
* sum3 = [dev_l] + [dev_t] + [dev_r] + [dev_b]
|
||||
* out_r_mean = $sigma(sqrt(1./3.*[sum3]/[sum2]))
|
||||
*
|
||||
* mean of stretched exponent
|
||||
*
|
||||
*
|
||||
* if ( [opt] .eq. 'strexp' ) then
|
||||
* sum1 = [beta_l_weight] + [beta_t_weight] + [beta_r_weight] + [beta_b_weight]
|
||||
* sum2 = [inv_beta_lerr] + [inv_beta_terr] + [inv_beta_rerr] + [inv_beta_berr]
|
||||
* beta_mean = [sum1]/[sum2]
|
||||
* in_beta_mean = $sigma(sqrt(1./[sum2])) | inner standard deviation
|
||||
*
|
||||
* no calculate the outer standard deviation
|
||||
*
|
||||
* dev_l = ([beta_mean]-[beta_l])*([beta_mean]-[beta_l])*[inv_beta_lerr]
|
||||
* dev_t = ([beta_mean]-[beta_t])*([beta_mean]-[beta_t])*[inv_beta_terr]
|
||||
* dev_r = ([beta_mean]-[beta_r])*([beta_mean]-[beta_r])*[inv_beta_rerr]
|
||||
* dev_b = ([beta_mean]-[beta_b])*([beta_mean]-[beta_b])*[inv_beta_berr]
|
||||
* sum3 = [dev_l] + [dev_t] + [dev_r] + [dev_b]
|
||||
* out_beta_mean = $sigma(sqrt(1./3.*[sum3]/[sum2]))
|
||||
*
|
||||
* endif
|
||||
*
|
||||
*----------------------------------------
|
||||
*
|
||||
* output fit parameter definitions to text window:
|
||||
|
||||
mess
|
||||
mess 'par(1): Background [1]'
|
||||
mess 'par(2): normalization [1]'
|
||||
mess 'par(3): asymmetry [1]'
|
||||
mess 'par(4): frequency [MHz]'
|
||||
mess 'par(5): phase [degree]'
|
||||
mess 'par(6): muon lifetime [microSec]'
|
||||
mess 'par(7): relaxation [1/microSec]'
|
||||
mess
|
||||
mess
|
||||
mess A = [a_mean]
|
||||
mess A_err_in = [in_a_mean]
|
||||
mess A_err_out = [out_a_mean]
|
||||
mess
|
||||
mess Freq. = [f_mean]
|
||||
mess F_err_in = [in_f_mean]
|
||||
mess F_err_out = [out_f_mean]
|
||||
mess
|
||||
* mess Relax. = [r_mean]
|
||||
* mess r_err_in = [in_r_mean]
|
||||
* mess r_err_out = [out_r_mean]
|
||||
* mess
|
||||
* if ( [opt] .eq. 'strexp' ) then
|
||||
* mess
|
||||
* mess Beta = [beta_mean]
|
||||
* mess Beta_err_in = [in_beta_mean]
|
||||
* mess Beta_err_out = [out_beta_mean]
|
||||
* mess
|
||||
* endif
|
||||
|
||||
* restore previous settings:
|
||||
|
||||
cd [current]
|
||||
zone
|
||||
title ' '
|
||||
set ysiz
|
||||
set xsiz
|
||||
|
415
geant3/paw/fit_prec_ge.kumac
Normal file
415
geant3/paw/fit_prec_ge.kumac
Normal file
@ -0,0 +1,415 @@
|
||||
if [1].EQ.'?' .OR. [1].EQ.' ' then
|
||||
mess '==============================================================================='
|
||||
mess 'FIT_PREC IDLeft B fromFit toFit t0'
|
||||
mess
|
||||
mess 'Kumac to fit the GEANT simulated decay spectra of L,T,R,B.'
|
||||
mess 'If IDleft is given, then it is assumed that'
|
||||
mess ' IDtop = IDleft+2,'
|
||||
mess ' IDright = IDleft+3,'
|
||||
mess ' IDbottom = IDleft+4.'
|
||||
mess
|
||||
mess 'B : magnetic field in gauss'
|
||||
mess 'fromFit : lower boundary for fit'
|
||||
mess 'toFit : upper boundary for fit'
|
||||
mess 't0 : time zero'
|
||||
mess
|
||||
mess '==============================================================================='
|
||||
exitm
|
||||
endif
|
||||
*
|
||||
*===========================================================================
|
||||
current = $hcdir()
|
||||
|
||||
fitopt = 'bl0' | fit option b=parameters with boundaries
|
||||
| l=log likelihood fit (Poisson stat.)
|
||||
| 0=do not plot fit result
|
||||
|
||||
* define Histo ID's
|
||||
|
||||
idl = [1]
|
||||
idt = [idl]+2
|
||||
idr = [idl]+3
|
||||
idb = [idl]+4
|
||||
*
|
||||
* check if histograms exist in PAW memory
|
||||
*
|
||||
cd //pawc
|
||||
|
||||
if ( $hexist([idl]) .eq. 0 ) then
|
||||
mess
|
||||
mess Did not found Left histogram ID [idl]
|
||||
mess
|
||||
exitm
|
||||
endif
|
||||
if ( $hexist([idt]) .eq. 0 ) then
|
||||
mess
|
||||
mess Did not found Top histogram ID [idt]
|
||||
mess
|
||||
exitm
|
||||
endif
|
||||
if ( $hexist([idr]) .eq. 0 ) then
|
||||
mess
|
||||
mess Did not found Right histogram ID [idr]
|
||||
mess
|
||||
exitm
|
||||
endif
|
||||
if ( $hexist([idb]) .eq. 0 ) then
|
||||
mess
|
||||
mess Did not found Bottom histogram ID [idb]
|
||||
mess
|
||||
exitm
|
||||
endif
|
||||
|
||||
shift
|
||||
|
||||
* transfer magnetic field strength:
|
||||
|
||||
B = [1]
|
||||
|
||||
* get region of histo to be used for fit:
|
||||
|
||||
if ($index([2],'.').NE.0) then
|
||||
von = $rsigma([2])
|
||||
else
|
||||
von = [2]
|
||||
endif
|
||||
if ($index([3],'.').NE.0) then
|
||||
bis = $rsigma([3])
|
||||
else
|
||||
bis = [3]
|
||||
endif
|
||||
|
||||
* get rebinning factor and fit options:
|
||||
|
||||
t0 = [4]
|
||||
|
||||
if ( [t0] .eq. ' ' .or. [t0] .eq. '!' ) then
|
||||
mess
|
||||
mess Missing time zero !
|
||||
mess
|
||||
exitm
|
||||
endif
|
||||
if ( $vexist(tzero) ) then
|
||||
v/de tzero
|
||||
endif
|
||||
v/cre tzero(1)
|
||||
v/inp tzero(1) [t0]
|
||||
|
||||
* check if added histos are to be used and read in histos:
|
||||
|
||||
* do the fits:
|
||||
|
||||
freq = [B] * 0.013554 | precession frequency in MHz
|
||||
freqmin = 0.8*[freq]
|
||||
freqmax = 1.2*[freq]
|
||||
freqstep = 0.005*[freq]
|
||||
*
|
||||
if ( $vexist(par) ) then
|
||||
v/de par
|
||||
endif
|
||||
if ( $vexist(pmin) ) then
|
||||
v/de pmin
|
||||
endif
|
||||
if ( $vexist(pmax) ) then
|
||||
v/de pmax
|
||||
endif
|
||||
if ( $vexist(step) ) then
|
||||
v/de step
|
||||
endif
|
||||
if ( $vexist(errpar) ) then
|
||||
v/de errpar
|
||||
endif
|
||||
*
|
||||
*
|
||||
*
|
||||
* BKG N0 Asym mu+ freq. Phase tau_mu lambda
|
||||
* =======================================================
|
||||
*
|
||||
* v/cre par(7) r 0. 500. 0.25 0. 0. 2.19703 0.
|
||||
* v/cre pmin(7) r -10. 0. 0. 0. -400. 0. 0.
|
||||
* v/cre pmax(7) r 100. 10000. 0.60 0. +400. 3. 100.
|
||||
* v/cre step(7) r 0. 10. 0.01 0. 5. 0. 0.
|
||||
* v/cre errpar(7) r 1. 1. 1. 1. 1. 1. 1.
|
||||
v/cre par(6) r 0. 500. 0.25 [freq] 90. 2.19703
|
||||
v/cre pmin(6) r -10. 0. 0. [freqmin] -400. 0.
|
||||
v/cre pmax(6) r 100. 10000. 0.40 [freqmax] +400. 3.
|
||||
v/cre step(6) r 0. 10. 0.01 [freqstep] 5. 0.
|
||||
v/cre errpar(6) r 0. 1. 1. 1. 1. 0.
|
||||
|
||||
*
|
||||
tdec0 = tzero(1) | vector tzero filled in FIT_PREC.KUMAC
|
||||
ttt = Fit from [von] to [bis], t0 = [tdec0]
|
||||
* title [ttt]
|
||||
*
|
||||
*
|
||||
hi/fit [idl]([von]:[bis]) fit_prec.for [fitopt] 6 par step pmin pmax errpar
|
||||
*
|
||||
* store fit result and error for A_Left, frequency and relaxation rate
|
||||
*
|
||||
a_l = par(3)
|
||||
a_lerr = errpar(3)
|
||||
a_l_weight = [a_l]/([a_lerr]*[a_lerr])
|
||||
inv_a_lerr = 1./([a_lerr]*[a_lerr])
|
||||
f_l = par(4)
|
||||
f_lerr = errpar(4)
|
||||
f_l_weight = [f_l]/([f_lerr]*[f_lerr])
|
||||
inv_f_lerr = 1./([f_lerr]*[f_lerr])
|
||||
* r_l = par(7)
|
||||
* r_lerr = errpar(7)
|
||||
* r_l_weight = [r_l]/([r_lerr]*[r_lerr])
|
||||
* inv_r_lerr = 1./([r_lerr]*[r_lerr])
|
||||
*
|
||||
* if ( [opt] .eq. 'strexp' ) then
|
||||
* beta_l = par(8)
|
||||
* beta_lerr = errpar(8)
|
||||
* beta_l_weight = [beta_l]/([beta_lerr]*[beta_lerr])
|
||||
* inv_beta_lerr = 1./([beta_lerr]*[beta_lerr])
|
||||
* endif
|
||||
*
|
||||
*
|
||||
* initialize the phase for the top detector
|
||||
*
|
||||
phase = par(5)
|
||||
phase = [phase]+90.
|
||||
v/inp par(5) [phase]
|
||||
hi/fit [idt]([von]:[bis]) fit_prec.for [fitopt] 6 par step pmin pmax errpar
|
||||
*
|
||||
* store fit result and error for A_top
|
||||
*
|
||||
a_t = par(3)
|
||||
a_terr = errpar(3)
|
||||
a_t_weight = [a_t]/([a_terr]*[a_terr])
|
||||
inv_a_terr = 1./([a_terr]*[a_terr])
|
||||
f_t = par(4)
|
||||
f_terr = errpar(4)
|
||||
f_t_weight = [f_t]/([f_terr]*[f_terr])
|
||||
inv_f_terr = 1./([f_terr]*[f_terr])
|
||||
* r_t = par(7)
|
||||
* r_terr = errpar(7)
|
||||
* r_t_weight = [r_t]/([r_terr]*[r_terr])
|
||||
* inv_r_terr = 1./([r_terr]*[r_terr])
|
||||
*
|
||||
* if ( [opt] .eq. 'strexp' ) then
|
||||
* beta_t = par(8)
|
||||
* beta_terr = errpar(8)
|
||||
* beta_t_weight = [beta_t]/([beta_terr]*[beta_terr])
|
||||
* inv_beta_terr = 1./([beta_terr]*[beta_terr])
|
||||
* endif
|
||||
*
|
||||
*
|
||||
*
|
||||
* initialize the phase for the right detector
|
||||
*
|
||||
phase = par(5)
|
||||
phase = [phase]+90.
|
||||
v/inp par(5) [phase]
|
||||
hi/fit [idr]([von]:[bis]) fit_prec.for [fitopt] 6 par step pmin pmax errpar
|
||||
|
||||
* store fit result and error for A_right
|
||||
*
|
||||
a_r = par(3)
|
||||
a_rerr = errpar(3)
|
||||
a_r_weight = [a_r]/([a_rerr]*[a_rerr])
|
||||
inv_a_rerr = 1./([a_rerr]*[a_rerr])
|
||||
f_r = par(4)
|
||||
f_rerr = errpar(4)
|
||||
f_r_weight = [f_r]/([f_rerr]*[f_rerr])
|
||||
inv_f_rerr = 1./([f_rerr]*[f_rerr])
|
||||
* r_r = par(7)
|
||||
* r_rerr = errpar(7)
|
||||
* r_r_weight = [r_r]/([r_rerr]*[r_rerr])
|
||||
* inv_r_rerr = 1./([r_rerr]*[r_rerr])
|
||||
*
|
||||
* if ( [opt] .eq. 'strexp' ) then
|
||||
* beta_r = par(8)
|
||||
* beta_rerr = errpar(8)
|
||||
* beta_r_weight = [beta_r]/([beta_rerr]*[beta_rerr])
|
||||
* inv_beta_rerr = 1./([beta_rerr]*[beta_rerr])
|
||||
* endif
|
||||
*
|
||||
*
|
||||
*
|
||||
* initialize the phase for the bottom detector
|
||||
*
|
||||
phase = par(5)
|
||||
phase = [phase]+90.
|
||||
v/inp par(5) [phase]
|
||||
hi/fit [idb]([von]:[bis]) fit_prec.for [fitopt] 6 par step pmin pmax errpar
|
||||
*
|
||||
* store fit result and error for A_bottom
|
||||
*
|
||||
a_b = par(3)
|
||||
a_berr = errpar(3)
|
||||
a_b_weight = [a_b]/([a_berr]*[a_berr])
|
||||
inv_a_berr = 1./([a_berr]*[a_berr])
|
||||
f_b = par(4)
|
||||
f_berr = errpar(4)
|
||||
f_b_weight = [f_b]/([f_berr]*[f_berr])
|
||||
inv_f_berr = 1./([f_berr]*[f_berr])
|
||||
* r_b = par(7)
|
||||
* r_berr = errpar(7)
|
||||
* r_b_weight = [r_b]/([r_berr]*[r_berr])
|
||||
* inv_r_berr = 1./([r_berr]*[r_berr])
|
||||
*
|
||||
* if ( [opt] .eq. 'strexp' ) then
|
||||
* beta_b = par(8)
|
||||
* beta_berr = errpar(8)
|
||||
* beta_b_weight = [beta_b]/([beta_berr]*[beta_berr])
|
||||
* inv_beta_berr = 1./([beta_berr]*[beta_berr])
|
||||
* endif
|
||||
*
|
||||
*
|
||||
* plot result:
|
||||
|
||||
pics kum
|
||||
set ysiz 25
|
||||
zone 2 3
|
||||
|
||||
hi/pl [idl] e
|
||||
hi/pl [idt] e
|
||||
hi/pl [idr] e
|
||||
hi/pl [idb] e
|
||||
*
|
||||
*--------------------------------
|
||||
*
|
||||
* calculate the weighted mean and the "inner" and "outer" standard deviation
|
||||
* fo asymmetry
|
||||
*
|
||||
sum1 = [a_l_weight] + [a_t_weight] + [a_r_weight] + [a_b_weight]
|
||||
sum2 = [inv_a_lerr] + [inv_a_terr] + [inv_a_rerr] + [inv_a_berr]
|
||||
a_mean = [sum1]/[sum2]
|
||||
in_a_mean = $sigma(sqrt(1./[sum2])) | inner standard deviation
|
||||
*
|
||||
* now calculate the outer standard deviation
|
||||
*
|
||||
dev_l = ([a_mean]-[a_l])*([a_mean]-[a_l])*[inv_a_lerr]
|
||||
dev_t = ([a_mean]-[a_t])*([a_mean]-[a_t])*[inv_a_terr]
|
||||
dev_r = ([a_mean]-[a_r])*([a_mean]-[a_r])*[inv_a_rerr]
|
||||
dev_b = ([a_mean]-[a_b])*([a_mean]-[a_b])*[inv_a_berr]
|
||||
sum3 = [dev_l] + [dev_t] + [dev_r] + [dev_b]
|
||||
out_a_mean = $sigma(sqrt(1./3.*[sum3]/[sum2]))
|
||||
*
|
||||
*----------------------------------
|
||||
*
|
||||
* mean of frequency
|
||||
*
|
||||
sum1 = [f_l_weight] + [f_t_weight] + [f_r_weight] + [f_b_weight]
|
||||
sum2 = [inv_f_lerr] + [inv_f_terr] + [inv_f_rerr] + [inv_f_berr]
|
||||
f_mean = [sum1]/[sum2]
|
||||
in_f_mean = $sigma(sqrt(1./[sum2])) | inner standard deviation
|
||||
*
|
||||
* no calculate the outer standard deviation
|
||||
*
|
||||
dev_l = ([f_mean]-[f_l])*([f_mean]-[f_l])*[inv_f_lerr]
|
||||
dev_t = ([f_mean]-[f_t])*([f_mean]-[f_t])*[inv_f_terr]
|
||||
dev_r = ([f_mean]-[f_r])*([f_mean]-[f_r])*[inv_f_rerr]
|
||||
dev_b = ([f_mean]-[f_b])*([f_mean]-[f_b])*[inv_f_berr]
|
||||
sum3 = [dev_l] + [dev_t] + [dev_r] + [dev_b]
|
||||
out_f_mean = $sigma(sqrt(1./3.*[sum3]/[sum2]))
|
||||
*
|
||||
*--------------------------------------
|
||||
*
|
||||
* mean of relaxation
|
||||
*
|
||||
* sum1 = [r_l_weight] + [r_t_weight] + [r_r_weight] + [r_b_weight]
|
||||
* sum2 = [inv_r_lerr] + [inv_r_terr] + [inv_r_rerr] + [inv_r_berr]
|
||||
* r_mean = [sum1]/[sum2]
|
||||
* in_r_mean = $sigma(sqrt(1./[sum2])) | inner standard deviation
|
||||
*
|
||||
* no calculate the outer standard deviation
|
||||
*
|
||||
* dev_l = ([r_mean]-[r_l])*([r_mean]-[r_l])*[inv_r_lerr]
|
||||
* dev_t = ([r_mean]-[r_t])*([r_mean]-[r_t])*[inv_r_terr]
|
||||
* dev_r = ([r_mean]-[r_r])*([r_mean]-[r_r])*[inv_r_rerr]
|
||||
* dev_b = ([r_mean]-[r_b])*([r_mean]-[r_b])*[inv_r_berr]
|
||||
* sum3 = [dev_l] + [dev_t] + [dev_r] + [dev_b]
|
||||
* out_r_mean = $sigma(sqrt(1./3.*[sum3]/[sum2]))
|
||||
*
|
||||
* mean of stretched exponent
|
||||
*
|
||||
*
|
||||
* if ( [opt] .eq. 'strexp' ) then
|
||||
* sum1 = [beta_l_weight] + [beta_t_weight] + [beta_r_weight] + [beta_b_weight]
|
||||
* sum2 = [inv_beta_lerr] + [inv_beta_terr] + [inv_beta_rerr] + [inv_beta_berr]
|
||||
* beta_mean = [sum1]/[sum2]
|
||||
* in_beta_mean = $sigma(sqrt(1./[sum2])) | inner standard deviation
|
||||
*
|
||||
* no calculate the outer standard deviation
|
||||
*
|
||||
* dev_l = ([beta_mean]-[beta_l])*([beta_mean]-[beta_l])*[inv_beta_lerr]
|
||||
* dev_t = ([beta_mean]-[beta_t])*([beta_mean]-[beta_t])*[inv_beta_terr]
|
||||
* dev_r = ([beta_mean]-[beta_r])*([beta_mean]-[beta_r])*[inv_beta_rerr]
|
||||
* dev_b = ([beta_mean]-[beta_b])*([beta_mean]-[beta_b])*[inv_beta_berr]
|
||||
* sum3 = [dev_l] + [dev_t] + [dev_r] + [dev_b]
|
||||
* out_beta_mean = $sigma(sqrt(1./3.*[sum3]/[sum2]))
|
||||
*
|
||||
* endif
|
||||
*
|
||||
*----------------------------------------
|
||||
*
|
||||
* output fit parameter definitions to text window:
|
||||
|
||||
mess
|
||||
mess 'par(1): Background [1]'
|
||||
mess 'par(2): normalization [1]'
|
||||
mess 'par(3): asymmetry [1]'
|
||||
mess 'par(4): frequency [MHz]'
|
||||
mess 'par(5): phase [degree]'
|
||||
mess 'par(6): muon lifetime [microSec]'
|
||||
mess 'par(7): relaxation [1/microSec]'
|
||||
mess
|
||||
mess
|
||||
mess A = [a_mean]
|
||||
mess A_err_in = [in_a_mean]
|
||||
mess A_err_out = [out_a_mean]
|
||||
mess
|
||||
mess Freq. = [f_mean]
|
||||
mess F_err_in = [in_f_mean]
|
||||
mess F_err_out = [out_f_mean]
|
||||
mess
|
||||
* mess Relax. = [r_mean]
|
||||
* mess r_err_in = [in_r_mean]
|
||||
* mess r_err_out = [out_r_mean]
|
||||
* mess
|
||||
* if ( [opt] .eq. 'strexp' ) then
|
||||
* mess
|
||||
* mess Beta = [beta_mean]
|
||||
* mess Beta_err_in = [in_beta_mean]
|
||||
* mess Beta_err_out = [out_beta_mean]
|
||||
* mess
|
||||
* endif
|
||||
|
||||
* output to graphics window (quick and dirty)
|
||||
v/cre x(2) r 0 10
|
||||
v/cre y(2) r 0 10
|
||||
set xtic 0.0001
|
||||
set ytic 0.0001
|
||||
set vsiz 0.0001
|
||||
zone 1 3 3 s
|
||||
graph 2 x y w
|
||||
*
|
||||
asym = $format([a_mean],F8.4)
|
||||
in_err = $format([in_a_mean],F7.4)
|
||||
out_err = $format([out_a_mean],F7.4)
|
||||
*
|
||||
text 1 8 'A = '//[asym]//'+-'//[in_err]//'+-'//[out_err] 0.4
|
||||
*
|
||||
freq = $format([f_mean],F8.5)
|
||||
in_err = $format([in_f_mean],F7.5)
|
||||
out_err = $format([out_f_mean],F7.5)
|
||||
*
|
||||
app = ' MHz'
|
||||
text 1 5 '[n] = '//[freq]//'+-'//[in_err]//'+-'//[out_err]//[app] 0.4
|
||||
|
||||
|
||||
* restore previous settings:
|
||||
|
||||
cd [current]
|
||||
zone
|
||||
* title ' '
|
||||
set xtic
|
||||
set ytic
|
||||
set vsiz
|
||||
set ysiz
|
||||
set xsiz
|
||||
|
158
geant3/paw/geant_dohist.kumac
Normal file
158
geant3/paw/geant_dohist.kumac
Normal file
@ -0,0 +1,158 @@
|
||||
*
|
||||
* quicky KUMAC to get decay spectra from GEANT simulations
|
||||
* (GEANT_LEMSR.KUMAC)
|
||||
*
|
||||
* TP, 03-Feb-1999, PSI
|
||||
*
|
||||
* [1] Geant Runnumber; for histogram titles
|
||||
*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
if ( [1] .eq. ' ' .or. [1] .eq. '?' .or. [1] .eq. '!') then
|
||||
mess
|
||||
mess Missing GEANT RunNumber as parameter.
|
||||
mess Needed for Histogram titles.
|
||||
mess
|
||||
mess Syntax:
|
||||
mess
|
||||
mess GEANT_DOHIST RunNo
|
||||
mess
|
||||
exitm
|
||||
endif
|
||||
runno = [1]
|
||||
*
|
||||
* cuts for e+ and e- and gammas
|
||||
*
|
||||
cut $20 btest(int(partcode),0).and.btest(int(partcode),4) |require gamma in both detec.
|
||||
cut $21 btest(int(partcode),1).and.btest(int(partcode),5) |require e+ in both detec.
|
||||
cut $22 btest(int(partcode),2).and.btest(int(partcode),6) |require e- in both detec.
|
||||
*
|
||||
cut $11 p0>30.
|
||||
cut $10 desci>0.and.desco>0
|
||||
cut $1 de_left_i>0.and.de_left_o>0
|
||||
cut $2 de_top_i>0.and.de_top_o>0
|
||||
cut $3 de_rite_i>0.and.de_rite_o>0
|
||||
cut $4 de_bot_i>0.and.de_bot_o>0
|
||||
*
|
||||
cut $5 btest(int(volno),0).and.btest(int(volno),4) | bits for left in and out
|
||||
cut $6 btest(int(volno),1).and.btest(int(volno),5) | bits for top in and out
|
||||
cut $7 btest(int(volno),2).and.btest(int(volno),6) | bits for right in and out
|
||||
cut $8 btest(int(volno),3).and.btest(int(volno),7) | bits for bottom in and out
|
||||
*
|
||||
1d 1 'GEANT '//[runno]//' volno, dE gt 0' 256 -.5 255.5
|
||||
1d 2 'GEANT '//[runno]//' volno, dE gt 0, e+ bit or e- bit required' 256 -.5 255.5
|
||||
1d 3 'GEANT '//[runno]//' volno, dE ge 0, only gammas' 256 -.5 255.5
|
||||
1d 4 'GEANT '//[runno]//' volno, dE gt 0, only gammas' 256 -.5 255.5
|
||||
1d 5 'GEANT '//[runno]//' volno, volno gt 0' 256 -.5 255.5
|
||||
*goto fine
|
||||
1d 404 'GEANT '//[runno]//' only left, de gt 0, 50ns bins' 220 0. 11000.
|
||||
1d 406 'GEANT '//[runno]//' only top, de gt 0, 50ns bins' 220 0. 11000.
|
||||
1d 407 'GEANT '//[runno]//' only right, de gt 0, 50ns bins' 220 0. 11000.
|
||||
1d 408 'GEANT '//[runno]//' only bottom, de gt 0, 50ns bins' 220 0. 11000.
|
||||
1d 504 'GEANT '//[runno]//' left , de gt 0, 50ns bins' 220 0. 11000.
|
||||
1d 506 'GEANT '//[runno]//' top , de gt 0, 50ns bins' 220 0. 11000.
|
||||
1d 507 'GEANT '//[runno]//' right, de gt 0, 50ns bins' 220 0. 11000.
|
||||
1d 508 'GEANT '//[runno]//' bottom, de gt 0, 50ns bins' 220 0. 11000.
|
||||
1d 604 'GEANT '//[runno]//' left , e+ or e- bit, de gt 0, 50ns bins' 220 0. 11000.
|
||||
1d 606 'GEANT '//[runno]//' top , e+ or e- bit, de gt 0, 50ns bins' 220 0. 11000.
|
||||
1d 607 'GEANT '//[runno]//' right , e+ or e- bit, de gt 0, 50ns bins' 220 0. 11000.
|
||||
1d 608 'GEANT '//[runno]//' bottom, e+ or e- bit, de gt 0, 50ns bins' 220 0. 11000.
|
||||
1d 704 'GEANT '//[runno]//' left , only gamma, de ge 0, 50ns bins' 220 0. 11000.
|
||||
1d 706 'GEANT '//[runno]//' top , only gamma, de ge 0, 50ns bins' 220 0. 11000.
|
||||
1d 707 'GEANT '//[runno]//' right , only gamma, de ge 0, 50ns bins' 220 0. 11000.
|
||||
1d 708 'GEANT '//[runno]//' bottom, only gamma, de ge 0, 50ns bins' 220 0. 11000.
|
||||
* goto cont
|
||||
*
|
||||
fine:
|
||||
1d 1404 'GEANT '//[runno]//' only left, de gt 0, 2ns bins' 5500 0.5 11000.5
|
||||
1d 1406 'GEANT '//[runno]//' only top, de gt 0, 2ns bins' 5500 0.5 11000.5
|
||||
1d 1407 'GEANT '//[runno]//' only right, de gt 0, 2ns bins' 5500 0.5 11000.5
|
||||
1d 1408 'GEANT '//[runno]//' only bottom, de gt 0, 2ns bins' 5500 0.5 11000.5
|
||||
1d 1504 'GEANT '//[runno]//' left , de gt 0, 2ns bins' 5500 0.5 11000.5
|
||||
1d 1506 'GEANT '//[runno]//' top , de gt 0, 2ns bins' 5500 0.5 11000.5
|
||||
1d 1507 'GEANT '//[runno]//' right, de gt 0, 2ns bins' 5500 0.5 11000.5
|
||||
1d 1508 'GEANT '//[runno]//' bottom, de gt 0, 2ns bins' 5500 0.5 11000.5
|
||||
1d 1604 'GEANT '//[runno]//' left , e+ or e- bit, de gt 0, 2ns bins' 5500 0.5 11000.5
|
||||
1d 1606 'GEANT '//[runno]//' top , e+ or e- bit, de gt 0, 2ns bins' 5500 0.5 11000.5
|
||||
1d 1607 'GEANT '//[runno]//' right , e+ or e- bit, de gt 0, 2ns bins' 5500 0.5 11000.5
|
||||
1d 1608 'GEANT '//[runno]//' bottom, e+ or e- bit, de gt 0, 2ns bins' 5500 0.5 11000.5
|
||||
*
|
||||
|
||||
mess Plot 1=Volno dE>0
|
||||
nt/pl 111.volno volno>0.and.$10 -1
|
||||
|
||||
mess Plot 2=Volno dE>0 and e+ or e- bit reuqired
|
||||
nt/pl 111.volno volno>0.and.$10.and.($21.or.$22) -2
|
||||
|
||||
mess Plot 3=Volno dE>=0, only gammas
|
||||
nt/pl 111.volno volno>0.and.partcode=17 -3
|
||||
|
||||
mess Plot 4=Volno dE>0, only gammas
|
||||
nt/pl 111.volno volno>0.and.partcode=17.and.$10 -4
|
||||
|
||||
mess Plot 5=Volno volno>0
|
||||
nt/pl 111.volno volno>0 -5
|
||||
|
||||
mess NTPlot left=404
|
||||
nt/pl 111.tsci volno=17.and.$10 -404
|
||||
mess NTPlot top =406
|
||||
nt/pl 111.tsci volno=34.and.$10 -406
|
||||
mess NTPlot right=407
|
||||
nt/pl 111.tsci volno=68.and.$10 -407
|
||||
mess NTPlot bottom=408
|
||||
nt/pl 111.tsci volno=136.and.$10 -408
|
||||
|
||||
mess NTPlot left=1404
|
||||
nt/pl 111.tsci volno=17.and.$10 -1404
|
||||
mess NTPlot top =1406
|
||||
nt/pl 111.tsci volno=34.and.$10 -1406
|
||||
mess NTPlot right=1407
|
||||
nt/pl 111.tsci volno=68.and.$10 -1407
|
||||
mess NTPlot bottom=1408
|
||||
nt/pl 111.tsci volno=136.and.$10 -1408
|
||||
|
||||
mess NTPlot left id=504
|
||||
nt/pl 111.tsci $1.and.$5 -504
|
||||
mess NTPlot top id=506
|
||||
nt/pl 111.tsci $2.and.$6 -506
|
||||
mess NTPlot rite id=507
|
||||
nt/pl 111.tsci $3.and.$7 -507
|
||||
mess NTPlot bot id=508
|
||||
nt/pl 111.tsci $4.and.$8 -508
|
||||
|
||||
mess NTPlot left id=604
|
||||
nt/pl 111.tsci $1.and.$5.and.($21.or.$22) -604
|
||||
mess NTPlot top id=606
|
||||
nt/pl 111.tsci $2.and.$6.and.($21.or.$22) -606
|
||||
mess NTPlot rite id=607
|
||||
nt/pl 111.tsci $3.and.$7.and.($21.or.$22) -607
|
||||
mess NTPlot bot id=608
|
||||
nt/pl 111.tsci $4.and.$8.and.($21.or.$22) -608
|
||||
|
||||
mess NTPlot left id=704
|
||||
nt/pl 111.tsci partcode=17.and.$5 -704
|
||||
mess NTPlot top id=706
|
||||
nt/pl 111.tsci partcode=17.and.$6 -706
|
||||
mess NTPlot rite id=707
|
||||
nt/pl 111.tsci partcode=17.and.$7 -707
|
||||
mess NTPlot bot id=708
|
||||
nt/pl 111.tsci partcode=17.and.$8 -708
|
||||
|
||||
mess NTPlot left id=1504
|
||||
nt/pl 111.tsci $1.and.$5 -1504
|
||||
mess NTPlot top id=1506
|
||||
nt/pl 111.tsci $2.and.$6 -1506
|
||||
mess NTPlot rite id=1507
|
||||
nt/pl 111.tsci $3.and.$7 -1507
|
||||
mess NTPlot bot id=1508
|
||||
nt/pl 111.tsci $4.and.$8 -1508
|
||||
|
||||
mess NTPlot left id=1604
|
||||
nt/pl 111.tsci $1.and.$5.and.($21.or.$22) -1604
|
||||
mess NTPlot top id=1606
|
||||
nt/pl 111.tsci $2.and.$6.and.($21.or.$22) -1606
|
||||
mess NTPlot rite id=1607
|
||||
nt/pl 111.tsci $3.and.$7.and.($21.or.$22) -1607
|
||||
mess NTPlot bot id=1608
|
||||
nt/pl 111.tsci $4.and.$8.and.($21.or.$22) -1608
|
||||
|
58
geant3/paw/geant_dohist1.kumac
Normal file
58
geant3/paw/geant_dohist1.kumac
Normal file
@ -0,0 +1,58 @@
|
||||
*
|
||||
* quicky KUMAC to get decay spectra from GEANT simulations
|
||||
* (GEANT_LEMSR.KUMAC)
|
||||
*
|
||||
* TP, 03-Feb-1999, PSI
|
||||
*
|
||||
* [1] Geant Runnumber; for histogram titles
|
||||
*
|
||||
*
|
||||
* decay spectra, only 1 detector has hit, e+ e- bit required
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
if ( [1] .eq. ' ' .or. [1] .eq. '?' .or. [1] .eq. '!') then
|
||||
mess
|
||||
mess Missing GEANT RunNumber as parameter.
|
||||
mess Needed for Histogram titles.
|
||||
mess
|
||||
mess Syntax:
|
||||
mess
|
||||
mess GEANT_DOHIST RunNo
|
||||
mess
|
||||
exitm
|
||||
endif
|
||||
runno = [1]
|
||||
*
|
||||
* cuts for e+ and e- and gammas
|
||||
*
|
||||
cut $20 btest(int(partcode),0).and.btest(int(partcode),4) |require gamma in both detec.
|
||||
cut $21 btest(int(partcode),1).and.btest(int(partcode),5) |require e+ in both detec.
|
||||
cut $22 btest(int(partcode),2).and.btest(int(partcode),6) |require e- in both detec.
|
||||
*
|
||||
cut $11 p0>30.
|
||||
cut $10 desci>0.and.desco>0
|
||||
cut $1 de_left_i>0.and.de_left_o>0
|
||||
cut $2 de_top_i>0.and.de_top_o>0
|
||||
cut $3 de_rite_i>0.and.de_rite_o>0
|
||||
cut $4 de_bot_i>0.and.de_bot_o>0
|
||||
*
|
||||
cut $5 btest(int(volno),0).and.btest(int(volno),4) | bits for left in and out
|
||||
cut $6 btest(int(volno),1).and.btest(int(volno),5) | bits for top in and out
|
||||
cut $7 btest(int(volno),2).and.btest(int(volno),6) | bits for right in and out
|
||||
cut $8 btest(int(volno),3).and.btest(int(volno),7) | bits for bottom in and out
|
||||
*
|
||||
1d 614 'GEANT '//[runno]//' only left , e+ or e- bit, de gt 0, 50ns bins' 220 0. 11000.
|
||||
1d 616 'GEANT '//[runno]//' only top , e+ or e- bit, de gt 0, 50ns bins' 220 0. 11000.
|
||||
1d 617 'GEANT '//[runno]//' only right , e+ or e- bit, de gt 0, 50ns bins' 220 0. 11000.
|
||||
1d 618 'GEANT '//[runno]//' only bottom, e+ or e- bit, de gt 0, 50ns bins' 220 0. 11000.
|
||||
|
||||
|
||||
mess NTPlot left id=614
|
||||
nt/pl 111.tsci $1.and.$5.and.($21.or.$22).and.volno.eq.17 -614
|
||||
mess NTPlot top id=616
|
||||
nt/pl 111.tsci $2.and.$6.and.($21.or.$22).and.volno.eq.34 -616
|
||||
mess NTPlot rite id=617
|
||||
nt/pl 111.tsci $3.and.$7.and.($21.or.$22).and.volno.eq.68 -617
|
||||
mess NTPlot bot id=618
|
||||
nt/pl 111.tsci $4.and.$8.and.($21.or.$22).and.volno.eq.136 -618
|
||||
|
72
geant3/paw/geant_dohist2.kumac
Normal file
72
geant3/paw/geant_dohist2.kumac
Normal file
@ -0,0 +1,72 @@
|
||||
*
|
||||
* quicky KUMAC to get decay spectra from GEANT simulations
|
||||
* (GEANT_LEMSR.KUMAC)
|
||||
*
|
||||
* TP, 03-Feb-1999, PSI
|
||||
*
|
||||
* [1] Geant Runnumber; for histogram titles
|
||||
*
|
||||
*
|
||||
* decay spectra, only 1 detector has hit, e+ e- bit required
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
if ( [1] .eq. ' ' .or. [1] .eq. '?' .or. [1] .eq. '!') then
|
||||
mess
|
||||
mess Missing GEANT RunNumber as parameter.
|
||||
mess Needed for Histogram titles.
|
||||
mess
|
||||
mess Syntax:
|
||||
mess
|
||||
mess GEANT_DOHIST RunNo
|
||||
mess
|
||||
exitm
|
||||
endif
|
||||
runno = [1]
|
||||
*
|
||||
* cuts for e+ and e- and gammas
|
||||
*
|
||||
cut $20 btest(int(partcode),0).and.btest(int(partcode),4) |require gamma in both detec.
|
||||
cut $21 btest(int(partcode),1).and.btest(int(partcode),5) |require e+ in both detec.
|
||||
cut $22 btest(int(partcode),2).and.btest(int(partcode),6) |require e- in both detec.
|
||||
*
|
||||
cut $11 p0>30.
|
||||
cut $10 desci>0.and.desco>0
|
||||
cut $1 de_left_i>0.and.de_left_o>0
|
||||
cut $2 de_top_i>0.and.de_top_o>0
|
||||
cut $3 de_rite_i>0.and.de_rite_o>0
|
||||
cut $4 de_bot_i>0.and.de_bot_o>0
|
||||
*
|
||||
cut $5 btest(int(volno),0).and.btest(int(volno),4) | bits for left in and out
|
||||
cut $6 btest(int(volno),1).and.btest(int(volno),5) | bits for top in and out
|
||||
cut $7 btest(int(volno),2).and.btest(int(volno),6) | bits for right in and out
|
||||
cut $8 btest(int(volno),3).and.btest(int(volno),7) | bits for bottom in and out
|
||||
*
|
||||
1d 624 'GEANT '//[runno]//' left, dE others=0 , e+ or e- bit, de gt 0, 50ns bins' 220 0. 11000.
|
||||
1d 626 'GEANT '//[runno]//' top , dE others=0 , e+ or e- bit, de gt 0, 50ns bins' 220 0. 11000.
|
||||
1d 627 'GEANT '//[runno]//' right, dE others=0 , e+ or e- bit, de gt 0, 50ns bins' 220 0. 11000.
|
||||
1d 628 'GEANT '//[runno]//' bottom, dE others=0, e+ or e- bit, de gt 0, 50ns bins' 220 0. 11000.
|
||||
|
||||
1d 1624 'GEANT '//[runno]//' left, dE others=0 , e+ or e- bit, de gt 0, 2ns bins' 5500 0.5 11000.5
|
||||
1d 1626 'GEANT '//[runno]//' top , dE others=0 , e+ or e- bit, de gt 0, 2ns bins' 5500 0.5 11000.5
|
||||
1d 1627 'GEANT '//[runno]//' right, dE others=0 , e+ or e- bit, de gt 0, 2ns bins' 5500 0.5 11000.5
|
||||
1d 1628 'GEANT '//[runno]//' bottom, dE others=0, e+ or e- bit, de gt 0, 2ns bins' 5500 0.5 11000.5
|
||||
|
||||
|
||||
mess NTPlot left id=624
|
||||
nt/pl 111.tsci $1.and.$5.and.($21.or.$22).and..not.($2.or.$3.or.$4) -624
|
||||
mess NTPlot top id=626
|
||||
nt/pl 111.tsci $2.and.$6.and.($21.or.$22).and..not.($1.or.$3.or.$4) -626
|
||||
mess NTPlot rite id=627
|
||||
nt/pl 111.tsci $3.and.$7.and.($21.or.$22).and..not.($1.or.$2.or.$4) -627
|
||||
mess NTPlot bot id=628
|
||||
nt/pl 111.tsci $4.and.$8.and.($21.or.$22).and..not.($1.or.$2.or.$3) -628
|
||||
|
||||
mess NTPlot left id=1624
|
||||
nt/pl 111.tsci $1.and.$5.and.($21.or.$22).and..not.($2.or.$3.or.$4) -1624
|
||||
mess NTPlot top id=1626
|
||||
nt/pl 111.tsci $2.and.$6.and.($21.or.$22).and..not.($1.or.$3.or.$4) -1626
|
||||
mess NTPlot rite id=1627
|
||||
nt/pl 111.tsci $3.and.$7.and.($21.or.$22).and..not.($1.or.$2.or.$4) -1627
|
||||
mess NTPlot bot id=1628
|
||||
nt/pl 111.tsci $4.and.$8.and.($21.or.$22).and..not.($1.or.$2.or.$3) -1628
|
||||
|
92
geant3/paw/geant_eloss.kumac
Normal file
92
geant3/paw/geant_eloss.kumac
Normal file
@ -0,0 +1,92 @@
|
||||
*
|
||||
* quicky KUMAC to get energy loss spectra from GEANT simulations
|
||||
* (GEANT_ELOSS.KUMAC)
|
||||
*
|
||||
* TP, 03-Feb-1999, PSI
|
||||
*
|
||||
* [1] Geant Runnumber; for histogram titles
|
||||
*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
if ( [1] .eq. ' ' .or. [1] .eq. '?' .or. [1] .eq. '!') then
|
||||
mess
|
||||
mess Missing GEANT RunNumber as parameter.
|
||||
mess Needed for Histogram titles.
|
||||
mess
|
||||
mess Syntax:
|
||||
mess
|
||||
mess GEANT_DOHIST RunNo
|
||||
mess
|
||||
exitm
|
||||
endif
|
||||
runno = [1]
|
||||
*
|
||||
* cuts for e+ and e- and gammas
|
||||
*
|
||||
cut $20 btest(int(partcode),0).and.btest(int(partcode),4) | bits for gamma's
|
||||
cut $21 btest(int(partcode),1).and.btest(int(partcode),5) | bits for e+
|
||||
cut $22 btest(int(partcode),2).and.btest(int(partcode),6) | bits for e-
|
||||
* cut $30 partcode=17 | only gammas
|
||||
*
|
||||
* cut $11 p0>30.
|
||||
* cut $10 desci>0.and.desco>0
|
||||
* cut $1 de_left_i>0.and.de_left_o>0
|
||||
* cut $2 de_top_i>0.and.de_top_o>0
|
||||
* cut $3 de_rite_i>0.and.de_rite_o>0
|
||||
* cut $4 de_bot_i>0.and.de_bot_o>0
|
||||
*
|
||||
* cut $5 btest(int(volno),0).and.btest(int(volno),4) | bits for left in and out
|
||||
* cut $6 btest(int(volno),1).and.btest(int(volno),5) | bits for top in and out
|
||||
* cut $7 btest(int(volno),2).and.btest(int(volno),6) | bits for right in and out
|
||||
* cut $8 btest(int(volno),3).and.btest(int(volno),7) | bits for bottom in and out
|
||||
*
|
||||
1d 100 'GEANT '//[runno]//' desci gt 0' 200 0. 10.
|
||||
1d 101 'GEANT '//[runno]//' descie+ gt 0' 200 0. 10.
|
||||
1d 102 'GEANT '//[runno]//' descie- gt 0' 200 0. 10.
|
||||
1d 103 'GEANT '//[runno]//' desciga gt 0' 200 0. 1.
|
||||
1d 110 'GEANT '//[runno]//' desci gt 0, require e+ or e- bits' 200 0. 10.
|
||||
|
||||
1d 200 'GEANT '//[runno]//' desco gt 0' 200 0. 10.
|
||||
1d 201 'GEANT '//[runno]//' descoe+ gt 0' 200 0. 10.
|
||||
1d 202 'GEANT '//[runno]//' descoe- gt 0' 200 0. 10.
|
||||
1d 203 'GEANT '//[runno]//' descoga gt 0' 200 0. 1.
|
||||
1d 210 'GEANT '//[runno]//' desco gt 0, require e+ or e- bits' 200 0. 10.
|
||||
*
|
||||
* inner detectors
|
||||
*
|
||||
|
||||
mess Plot 100=Desci gt 0
|
||||
nt/pl 111.desci desci>0 -100
|
||||
|
||||
mess Plot 101=Descie+ gt 0
|
||||
nt/pl 111.descipos descipos>0 -101
|
||||
|
||||
mess Plot 102=Descie- gt 0
|
||||
nt/pl 111.desciele desciele>0 -102
|
||||
|
||||
mess Plot 103=Descigamma gt 0
|
||||
nt/pl 111.descigam descigam>0 -103
|
||||
|
||||
mess Plot 110=Desci gt 0, e+ or e- bits required
|
||||
nt/pl 111.desci desci>0.and.($21.or.$22) -110
|
||||
|
||||
*
|
||||
* outer detectors
|
||||
*
|
||||
|
||||
mess Plot 200=Desco gt 0
|
||||
nt/pl 111.desco desco>0 -200
|
||||
|
||||
mess Plot 201=Descoe+ gt 0
|
||||
nt/pl 111.descopos descopos>0 -201
|
||||
|
||||
mess Plot 202=Descoe- gt 0
|
||||
nt/pl 111.descoele descoele>0 -202
|
||||
|
||||
mess Plot 203=Descogamma gt 0
|
||||
nt/pl 111.descogam descogam>0 -203
|
||||
|
||||
mess Plot 210=Desco gt 0, e+ or e- bits required
|
||||
nt/pl 111.desco desco>0.and.($21.or.$22) -210
|
||||
|
||||
|
196
geant3/paw/geant_part.kumac
Normal file
196
geant3/paw/geant_part.kumac
Normal file
@ -0,0 +1,196 @@
|
||||
*
|
||||
* paw$dir:geant_part.kumac
|
||||
*
|
||||
* KUMAC to copy first 400 ns of GEANT decay spectra to
|
||||
* histogram.
|
||||
*
|
||||
* [1] ID of left histogram; other ID's will be reconstructed
|
||||
*
|
||||
* TP, 23-feb-1999
|
||||
*
|
||||
*----------------------------------------------------------------------------
|
||||
*
|
||||
if ( [1] .eq. ' ' .or. [1] .eq. '?' .or. [1] .eq. '!' ) then
|
||||
mess
|
||||
mess GEANT_PART IDleft
|
||||
mess
|
||||
mess Copies first 400ns of existing GEANT decay spectra
|
||||
mess to new IDs; NewID = OldID+1000
|
||||
mess
|
||||
exitm
|
||||
endif
|
||||
idl = [1]
|
||||
idt = [idl]+2
|
||||
idr = [idt]+1
|
||||
idb = [idr]+1
|
||||
idln = [idl]+1000
|
||||
idtn = [idt]+1000
|
||||
idrn = [idr]+1000
|
||||
idbn = [idb]+1000
|
||||
*
|
||||
upp = 400. | upper bin center of new histograms
|
||||
*
|
||||
if ( $vexist(data) ) then
|
||||
v/de data
|
||||
endif
|
||||
*
|
||||
* get histo information
|
||||
*
|
||||
if ( $hexist([idl]) .eq. 0 ) then
|
||||
mess
|
||||
mess Left Histogram ID = [idl] does not exist !
|
||||
mess
|
||||
exitm
|
||||
endif
|
||||
if ( $hexist([idt]) .eq. 0 ) then
|
||||
mess
|
||||
mess Top Histogram ID = [idt] does not exist !
|
||||
mess
|
||||
exitm
|
||||
endif
|
||||
if ( $hexist([idr]) .eq. 0 ) then
|
||||
mess
|
||||
mess Right Histogram ID = [idr] does not exist !
|
||||
mess
|
||||
exitm
|
||||
endif
|
||||
if ( $hexist([idb]) .eq. 0 ) then
|
||||
mess
|
||||
mess Bottom Histogram ID = [idb] does not exist !
|
||||
mess
|
||||
exitm
|
||||
endif
|
||||
*
|
||||
*----------------------------------------------------------------------------
|
||||
*
|
||||
* L E F T
|
||||
*
|
||||
xmin = $hinfo([idl], 'XMIN')
|
||||
xmax = $hinfo([idl], 'XMAX')
|
||||
nbin = $hinfo([idl], 'XBINS')
|
||||
bin = ([xmax] - [xmin])/[nbin]
|
||||
*
|
||||
mess Left ID = [idl] with bin size [bin]
|
||||
*
|
||||
* copy histogram to vector
|
||||
*
|
||||
v/cre data([nbin]
|
||||
get_vec/con [idl] data
|
||||
*
|
||||
* construct new upper limit
|
||||
*
|
||||
nbin = [upp]/[bin] + 1
|
||||
xmax = [xmin] + [nbin]*[bin]
|
||||
mess New LeftId = [idln] with xmax = [xmax] and nbin = [nbin]
|
||||
*
|
||||
* book histogram
|
||||
*
|
||||
if ( $hexist([idln]) ) then
|
||||
hi/de [idln]
|
||||
endif
|
||||
1d [idln] 'part of left, id = '//[idl] [nbin] [xmin] [xmax]
|
||||
put_vec/con [idln] data(1:[nbin])
|
||||
v/de data
|
||||
*
|
||||
*---------------------------------------------------------------------------
|
||||
*
|
||||
* T O P
|
||||
*
|
||||
xmin = $hinfo([idt], 'XMIN')
|
||||
xmax = $hinfo([idt], 'XMAX')
|
||||
nbin = $hinfo([idt], 'XBINS')
|
||||
bin = ([xmax] - [xmin])/[nbin]
|
||||
*
|
||||
mess Top ID = [idt] with bin size [bin]
|
||||
*
|
||||
* copy histogram to vector
|
||||
*
|
||||
v/cre data([nbin]
|
||||
get_vec/con [idt] data
|
||||
*
|
||||
* construct new upper limit
|
||||
*
|
||||
nbin = [upp]/[bin] + 1
|
||||
xmax = [xmin] + [nbin]*[bin]
|
||||
mess New TopId = [idtn] with xmax = [xmax] and nbin = [nbin]
|
||||
*
|
||||
* book histogram
|
||||
*
|
||||
if ( $hexist([idtn]) ) then
|
||||
hi/de [idtn]
|
||||
endif
|
||||
1d [idtn] 'part of top, id = '//[idt] [nbin] [xmin] [xmax]
|
||||
put_vec/con [idtn] data(1:[nbin])
|
||||
v/de data
|
||||
*
|
||||
*---------------------------------------------------------------------------
|
||||
*
|
||||
* Right
|
||||
*
|
||||
xmin = $hinfo([idr], 'XMIN')
|
||||
xmax = $hinfo([idr], 'XMAX')
|
||||
nbin = $hinfo([idr], 'XBINS')
|
||||
bin = ([xmax] - [xmin])/[nbin]
|
||||
*
|
||||
mess Right ID = [idr] with bin size [bin]
|
||||
*
|
||||
* copy histogram to vector
|
||||
*
|
||||
v/cre data([nbin]
|
||||
get_vec/con [idr] data
|
||||
*
|
||||
* construct new upper limit
|
||||
*
|
||||
nbin = [upp]/[bin] + 1
|
||||
xmax = [xmin] + [nbin]*[bin]
|
||||
mess New RightId = [idrn] with xmax = [xmax] and nbin = [nbin]
|
||||
*
|
||||
* book histogram
|
||||
*
|
||||
if ( $hexist([idrn]) ) then
|
||||
hi/de [idrn]
|
||||
endif
|
||||
1d [idrn] 'part of Right, id = '//[idr] [nbin] [xmin] [xmax]
|
||||
put_vec/con [idrn] data(1:[nbin])
|
||||
v/de data
|
||||
*
|
||||
*------------------------------------------------------------------------------
|
||||
*
|
||||
* Bottom
|
||||
*
|
||||
xmin = $hinfo([idb], 'XMIN')
|
||||
xmax = $hinfo([idb], 'XMAX')
|
||||
nbin = $hinfo([idb], 'XBINS')
|
||||
bin = ([xmax] - [xmin])/[nbin]
|
||||
*
|
||||
mess Bottom ID = [idb] with bin size [bin]
|
||||
*
|
||||
* copy histogram to vector
|
||||
*
|
||||
v/cre data([nbin]
|
||||
get_vec/con [idb] data
|
||||
*
|
||||
* construct new upper limit
|
||||
*
|
||||
nbin = [upp]/[bin] + 1
|
||||
xmax = [xmin] + [nbin]*[bin]
|
||||
mess New BottomId = [idbn] with xmax = [xmax] and nbin = [nbin]
|
||||
*
|
||||
* book histogram
|
||||
*
|
||||
if ( $hexist([idbn]) ) then
|
||||
hi/de [idbn]
|
||||
endif
|
||||
1d [idbn] 'part of Bottom, id = '//[idb] [nbin] [xmin] [xmax]
|
||||
put_vec/con [idbn] data(1:[nbin])
|
||||
v/de data
|
||||
*
|
||||
*------------------------------------------------------------------------------
|
||||
*
|
||||
zone 2 2
|
||||
hi/pl [idln]
|
||||
hi/pl [idtn]
|
||||
hi/pl [idrn]
|
||||
hi/pl [idbn]
|
||||
zone
|
||||
*
|
62
geant3/paw/readge.kumac
Normal file
62
geant3/paw/readge.kumac
Normal file
@ -0,0 +1,62 @@
|
||||
*
|
||||
* READGE.KUMAC
|
||||
*
|
||||
* KUMAC to open NT file from GEANT_LEMSR simulation on next free
|
||||
* LUN.
|
||||
*
|
||||
* Input parameter:
|
||||
*
|
||||
* [1]: GEant Runnumber
|
||||
*
|
||||
* TP, 10-feb-1999, PSI
|
||||
*
|
||||
* TP, 06-Apr-2001, PSI: Unix, Linux and Windows version
|
||||
*
|
||||
*---------------------------------------------------------------------------
|
||||
*
|
||||
if ([1] .eq. '?' .or. [1] .eq. ' ' .or. [1] .eq. '!') then
|
||||
mess
|
||||
mess READGE kumac to open GEANT_LEMSR NTUPLE file.
|
||||
mess
|
||||
mess Syntax:
|
||||
mess
|
||||
mess READGE runNr
|
||||
mess
|
||||
exitm
|
||||
endif
|
||||
runnr = [1]
|
||||
*
|
||||
* determine operating system to build the filename;
|
||||
* only Windows or Unix/Linux
|
||||
*
|
||||
os = $OS
|
||||
*
|
||||
if ( [os] .eq. 'Windows') then
|
||||
file = 'c:\users\thomas\mc\geant\data\geant_lemsr_'//[runnr]//'.nt'
|
||||
goto check_file
|
||||
endif
|
||||
if ( [os] .eq. 'UNIX') then
|
||||
* if ( $OSTYPE .eq. 'Linux' ) then
|
||||
file = /scratch/$USER/geant/geant_lemsr_[runnr].nt
|
||||
goto check_file
|
||||
* else
|
||||
* file = $HOME//'/mc/geant/data/geant_lemsr_'//[runnr]//'.nt'
|
||||
* goto check_file
|
||||
* endif
|
||||
endif
|
||||
*
|
||||
mess Operating system [os] not supported
|
||||
exitm
|
||||
*
|
||||
check_file:
|
||||
|
||||
if ( $fexist([file]) ) then
|
||||
hi/file 0 [file] 4096
|
||||
else
|
||||
mess
|
||||
mess File [file] does not exist...
|
||||
mess
|
||||
endif
|
||||
*
|
||||
*
|
||||
|
Reference in New Issue
Block a user