# filter for tail pulser test
#        -t      A      B
test = ((16,  -600,  -627),
        ( 1,    14,  -898),
        ( 2,   884,  -983),
        ( 3,  1725, -1143),
        ( 4,  2699, -1140),
        ( 5,  3608,  -855),
        ( 6,  4095,  -153),
        ( 7,  3121,  1729),
        ( 8,   -28,  4095),
        ( 9, -2217,   -25),
        (10, -2217,     0),
        (11, -2217,     0),
        (12, -2217,     0),
        (13, -2217,     0),
        (14, -2217,     0),
        (15, -2217,     0),
        )
	
#        -t      A      B
radf = ((38,    74, -3523),  # 2007-03-10 SiB: Sum(A)=-4, added +1 to 4 peak samples
        ( 1,   451, -3523),
        ( 9,  3656,     0),
        (10,  3970,     0),
        (11,  4095,     0),
        (12,  4033,     0),
        (13,  3844,     0),
        (14,  3089,     0),
        (16,   577,  2952),
        (17, -1433,  4094),
        (26, -3726,     0),
        (28, -3726,     0),
        (30, -3726,     0),
        (32, -3726,     0),
        (34, -3726,     0),
        (36, -3726,     0),
        )

rshv2 = ((38,  -74,  3523),  # 2008-01-22 SiB: copy from radf
        ( 1,  -451,  3523),
        ( 9, -3656,     0),
        (10, -3970,     0),
        (11, -4095,     0),
        (12, -4033,     0),
        (13, -3844,     0),
        (14, -3089,     0),
        (16,  -577, -2952),
        (17,  1433, -4094),
        (26,  3726,     0),
        (27,  3726,     0),
        (28,  3726,     0),
        (29,  3726,     0),
        (30,  3726,     0),
        (31,  3726,     0),
        )

#        -t      A      B
rade = ((38,    74,     0), # -t == readout sample
        ( 6,   451, -4095),
        (14,  3655,     0),
        (15,  3969,     0),
        (16,  4095,     0),
        (17,  4032,     0),
        (18,  3843,     0),
        (19,  3089,     0),
        (21,   577,  4095),
        (22, -1433,     0),
        (31, -3726,     0),
        (33, -3726,     0),
        (35, -3726,     0),
        (37, -3726,     0),
        (39, -3726,     0),
        (41, -3726,     0),
        )

preamp = ((20, 4095,    0),
          ( 1, 4095,    0),
          ( 2, 4095,    0),
          ( 3, 4095,    0),
          ( 4, 4095,    0),
          ( 5, 4095,    0),
          ( 6, 4095,    0),
          ( 7, 4095,-4095),
          ( 9,-4095, 4095),
          (10,-4095,    0),
          (11,-4095,    0),
          (12,-4095,    0),
          (13,-4095,    0),
          (14,-4095,    0),
          (15,-4095,    0),
          (16,-4095,    0),
          )

SiV2 = ( # pf2-2008-02-05-5.gnumeric
    (	40,	570,	1886,	),
    (	5,	-1402,	2221,	),
    (	11,	-3753,	1325,	),
    (	12,	-3969,	978,	),
    (	13,	-4092,	538,	),
    (	14,	-4095,	-50,	),
    (	15,	-3937,	-623,	),
    (	16,	-3624,	-1506,	),
    (	20,	-114,	-3878,	),
    (	21,	1081,	-4095,	),
    (	27,	3889,	534,	),
    (	28,	3889,	534,	),
    (	29,	3889,	534,	),
    (	30,	3889,	534,	),
    (	31,	3889,	534,	),
    (	32,	3889,	534,	),
    )

CsIV2 = ( # pf2-2008-02-05-5.gnumeric
    (	40,	-1586,	1901,	),
    (	1,	-1912,	1917,	),
    (	6,	-3346,	1248,	),
    (	7,	-3533,	934,	),
    (	8,	-3653,	662,	),
    (	9,	-3716,	241,	),
    (	10,	-3690,	-245,	),
    (	11,	-3560,	-790,	),
    (	17,	-239,	-3957,	),
    (	18,	678,	-4095,	),
    (	25,	4093,	364,	),
    (	26,	4093,	364,	),
    (	27,	4093,	364,	),
    (	28,	4093,	364,	),
    (	29,	4093,	364,	),
    (	30,	4093,	364,	),
    )

          
def pulse(i, r):
    for j in range(16):
        ca = r[(j+2)&15][1] & 0x1fff
        cb = r[(j+2)&15][2] & 0x1fff
        da = r[(j+4)&15][0] & 0x3f
#        if j==13:
#            da = (da-1) & 0x3f
        filt(i,j, (long(da)<<26) | (cb<<13) | ca)

mV=10000

def Defaults():
    global mV
    mV=3500.0
    adcmask(0x3ffff)
    tmask(0x3ffff)
    nsamples(40)
    for i in range(18):
        thres(i,20*mV)
        pulse(i,radf)

def RADBC(n=0):
    global mV, BL, BH, CH, CL, C2, F1
    global sBH, sCH, sC2, sF1, sBL, sCL
    BL=12
    BH=13
    CH=14
    CL=15
    C2=16
    F1=17
    mV=3500
    sBH=0.070*mV
    sBL=sBH/16
    sCH=0.106*mV
    sCL=sCH/8
    sC2=0.328*mV
    sF1=0.560*mV
    adcmask(0x3F000)
    tmask(0x36000)
    nsamples(n)
    for i in range(18):
        thres(i,200000)
        pulse(i,radf)
    thres(BH, 50*sBH)
    thres(CH, 50*sCH)
    thres(C2, 40*sC2)
    thres(F1, 80*sF1)

def RADA(n=0):
    global mV, A1L, A1H, A2L, A2H
    global sA1L, sA1H, sA2L, sA2H
    A1L=17
    A1H=15
    A2H=14
    A2L=13
    mV=3500
    sA1H=0.070*mV
    sA1L=sA1H/16
    sA2H=sA1H
    sA2L=sA1L
    adcmask(0x2e000)
    tmask(0x0c000)
    nsamples(n)
    for i in range(18):
        thres(i,200000)
        pulse(i,radf)
    thres(A1H, 50*sA1H)
    thres(A2H, 50*sA2H)

def RADDE(n=0):
    global mV, DH, EH, EM, EL
    DH=17
    EL=15
    EH=14
    EM=13
    mV=3500
    adcmask(0x2e000)
    tmask(0x20000)
    nsamples(n)
    for i in range(18):
        thres(i,200000)
        pulse(i,rade)
    thres(DH, 10*mV)
    pulse(DH, radf)

def RADPF(n=0):
    global mV, F1, A1H, A1L, A2H, A2L, BH, BL
    global C2, CH, CL, EH, EF, EM, EL
    global DH, DM, DL, F2
    (      DL, # black       (Ecol 7)
     DH, # white             (8)
           DM, # gray        (9)       
     EL, # violet            (10)           
           EM, # blue        (11)       
           F1, # brown       (12)      
           EH, # yellow      (13)     
           CL, # orange      (14)     
     CH, # red               (15)              
           # direna hole         
           C2, # white       (16)      
     BH, # gray              (17)            
           BL, # violet      (18)     
     A2L, # blue             (19)            
           A2H,# green       (20)     
           A1L,# yellow      (21)     
           A1H,# orange      (22)     
     F2, # red               (23)              
           UU, #             (24)
     )=range(18)
    mV=3500
    adcmask(0x1ffff)
    tmask(0x3ffff)
    nsamples(n)
    for i in range(18):
        thres(i,200000)
        pulse(i,radf)
    thres(BH,3.5*mV)
    thres(CH,5.0*mV)
    thres(A1H,3.5*mV)
    thres(A2H,10*mV)
    thres(DH,7*mV)
    thres(EH,16*mV)
    tmask(0x00542)

def RADPF2(n=0):
    global mV, F1, A1H, A1L, A2H, A2L, BH, BL
    global C2, CH, CL, EH, EF, EM, EL
    global DH, DM, DL, F2
    (F1,
     F2,
     A1H,
     A1L,
     
     A2H,
     A2L,
     BL,
     BH,

     C2,             
     CH,
     CL,           
     EH,

     EM,          
     EL,
     DM,
     DH,

     DL,             
     T1,
     )=range(18)
    mV=3500
    adcmask(0x1ffff)
    nsamples(n)
    for i in range(18):
        thres(i,100*mV)
        pulse(i, SiV2)
    for i in (DH, DL, DM):
        pulse(i, CsIV2)
    thres(BH,3.5*mV)
    thres(CH,5.0*mV)
    thres(A1H,7*mV)
    thres(A2H,10*mV)
    thres(DH,10*mV)
    thres(EH,15*mV)
    tmask(0x08a94)

def RADD(n=0):
    global mV
    global DH, DM, DL
    DL=0
    DH=1
    DM=2
    mV=3500
    adcmask(0x7)
    nsamples(n)
    for i in range(18):
        thres(i,200000)
        pulse(i,preamp)
    thres(DH,20*mV)
    thres(DH,20*mV)
    thres(DH,20*mV)
    tmask(0x7)

def RADPF_TELTRIG(n=0):
    global mV, F1, A1H, A1L, A2H, A2L, BH, BL
    global C2, CH, CL, EH, EF, EM, EL
    global DH, DM, DL, F2
    (      DL, # black       (Ecol 7)
     DH, # white             (8)
           DM, # gray        (9)       
     EL, # violet            (10)           
           EM, # blue        (11)       
           F1, # brown       (12)      
           EH, # yellow      (13)     
           CL, # orange      (14)     
     CH, # red               (15)              
           # direna hole         
           C2, # white       (16)      
     BH, # gray              (17)            
           BL, # violet      (18)     
     A2L, # blue             (19)            
           A2H,# green       (20)     
           A1L,# yellow      (21)     
           A1H,# orange      (22)     
     F2, # red               (23)              
           UU, #             (24)
     )=range(18)
    mV=3500
    adcmask(0x1ffff)
    tmask(0x3ffff)
    nsamples(n)
    for i in range(18):
        thres(i,200000)
        pulse(i,radf)
    thres(BH,3.5*mV)
    thres(CH,5.0*mV)
    thres(A1H,3.5*mV)
    thres(A2H,10*mV)
    thres(DH,7*mV)
    thres(EH,16*mV)
    thres(DL, 5*mV) # K1 trigger PIN
    thres(EL, 5*mV) # K2 trigger PIN
    tmask(0x0054b)

def NSRL_PF_P0(n=0):
    global mV, F1, A1H, A1L, A2H, A2L, BH, BL
    global C2, CH, CL, EH, EF, EM, EL
    global DH, DM, DL, F2
    (      DL, # black       (Ecol 7)
     DH, # white             (8)
           DM, # gray        (9)       
     EL, # violet            (10)           
           EM, # blue        (11)       
           F1, # brown       (12)      
           EH, # yellow      (13)     
           CL, # orange      (14)     
     CH, # red               (15)              
           # direna hole         
           C2, # white       (16)      
     BH, # gray              (17)            
           BL, # violet      (18)     
     A2L, # blue             (19)            
           A2H,# green       (20)     
           A1L,# yellow      (21)     
           A1H,# orange      (22)     
     F2, # red               (23)              
           UU, #             (24)
     )=range(18)
    mV=3500
    adcmask(0x1ffff)
    tmask(0x3ffff)
    nsamples(n)
    for i in range(18):
        thres(i,200000)
        pulse(i,radf)
    thres(BH,2.5*mV)
    thres(CH,3.0*mV)
    thres(DH,6*mV)
    thres(EH,16*mV)
    tmask(0x00542)

def NSRL_PF_P90(n=0):
    global mV, F1, A1H, A1L, A2H, A2L, BH, BL
    global C2, CH, CL, EH, EF, EM, EL
    global DH, DM, DL, F2
    (      DL, # black       (Ecol 7)
     DH, # white             (8)
           DM, # gray        (9)       
     EL, # violet            (10)           
           EM, # blue        (11)       
           F1, # brown       (12)      
           EH, # yellow      (13)     
           CL, # orange      (14)     
     CH, # red               (15)              
           # direna hole         
           C2, # white       (16)      
     BH, # gray              (17)            
           BL, # violet      (18)     
     A2L, # blue             (19)            
           A2H,# green       (20)     
           A1L,# yellow      (21)     
           A1H,# orange      (22)     
     F2, # red               (23)              
           UU, #             (24)
     )=range(18)
    mV=3500
    adcmask(0x1ffff)
    tmask(0x3ffff)
    nsamples(n)
    for i in range(18):
        thres(i,200000)
        pulse(i,radf)
    thres(BH, 2.5*mV)
    thres(CH, 3.0*mV)
    thres(DH, 6*mV)
    thres(EH, 16*mV)
    thres(F2, 32*mV)
    tmask(0x10542)

def NSRL_PF_P0_250(n=0):
    global mV, F1, A1H, A1L, A2H, A2L, BH, BL
    global C2, CH, CL, EH, EF, EM, EL
    global DH, DM, DL, F2
    (      DL, # black       (Ecol 7)
     DH, # white             (8)
           DM, # gray        (9)       
     EL, # violet            (10)           
           EM, # blue        (11)       
           F1, # brown       (12)      
           EH, # yellow      (13)     
           CL, # orange      (14)     
     CH, # red               (15)              
           # direna hole         
           C2, # white       (16)      
     BH, # gray              (17)            
           BL, # violet      (18)     
     A2L, # blue             (19)            
           A2H,# green       (20)     
           A1L,# yellow      (21)     
           A1H,# orange      (22)     
     F2, # red               (23)              
           UU, #             (24)
     )=range(18)
    mV=3500
    adcmask(0x1ffff)
    tmask(0x3ffff)
    nsamples(n)
    for i in range(18):
        thres(i,200000)
        pulse(i,radf)
    thres(BH, 2.5*mV)
    thres(CH, 3.0*mV)
    thres(DH, 6*mV)
    thres(EH, 16*mV)
    thres(F2, 32*mV)
    tmask(0x00502)
