Exemplo n.º 1
0
    def test_convert_number_of_electrons_to_capaV(self):
        detObj = detector()

        startV = detObj.startVoltage
        switchV = detObj.switchVoltage

        capaV = detObj.e2capaV(0)
        self.assertEqual(len(capaV), 4)
        self.assertEqual(capaV, detObj.startVoltage)

        capaV = detObj.e2capaV(detObj.cumuFullWellDiode)
        self.assertTrue(capaV[0] <= detObj.switchVoltage[0])
        self.assertEqual(capaV[1], detObj.startVoltage[1])

        capaV = detObj.e2capaV(detObj.cumuFullWellDiode + 100)
        self.assertEqual(capaV[0], detObj.switchVoltage[0])
        self.assertTrue(capaV[1] < detObj.startVoltage[1])

        capaV = detObj.e2capaV(detObj.cumuFullWellC1)
        self.assertEqual(capaV[1], detObj.switchVoltage[1])  # filled
        self.assertEqual(capaV[2], detObj.switchVoltage[2])
        self.assertEqual(capaV[3], detObj.startVoltage[3])

        capaV = detObj.e2capaV(detObj.cumuFullWellC2 + 1000)
        self.assertEqual(capaV, detObj.switchVoltage)

        capaV = detObj.e2capaV(0.5 * detObj.cumuFullWellC2)
        self.assertEqual(capaV[2], detObj.switchVoltage[2])
        self.assertTrue(
            detObj.startVoltage[3] > capaV[3] > detObj.switchVoltage[3])
Exemplo n.º 2
0
    def test_convert_number_of_electrons_to_capaV(self):
        detObj = detector()

        startV  = detObj.startVoltage
        switchV = detObj.switchVoltage

        capaV = detObj.e2capaV(0)
        self.assertEqual(len(capaV),4)
        self.assertEqual(capaV,detObj.startVoltage)

        capaV = detObj.e2capaV(detObj.cumuFullWellDiode)
        self.assertTrue(capaV[0]<=detObj.switchVoltage[0])
        self.assertEqual(capaV[1],detObj.startVoltage[1])

        capaV = detObj.e2capaV(detObj.cumuFullWellDiode+100)
        self.assertEqual(capaV[0],detObj.switchVoltage[0])
        self.assertTrue(capaV[1]<detObj.startVoltage[1])

        capaV = detObj.e2capaV(detObj.cumuFullWellC1)
        self.assertEqual(capaV[1],detObj.switchVoltage[1]) # filled
        self.assertEqual(capaV[2],detObj.switchVoltage[2])
        self.assertEqual(capaV[3],detObj.startVoltage[3])

        capaV = detObj.e2capaV(detObj.cumuFullWellC2+1000)
        self.assertEqual(capaV,detObj.switchVoltage)

        capaV = detObj.e2capaV(0.5*detObj.cumuFullWellC2)
        self.assertEqual(capaV[2],detObj.switchVoltage[2])
        self.assertTrue(
            detObj.startVoltage[3]>capaV[3]>detObj.switchVoltage[3]
            )
Exemplo n.º 3
0
    def test_arguments_passsed(self):

        detObj = detector(100,200,5,10)
        
        columns             = detObj.nCol
        rows                = detObj.nRow
        calibrationcolumns  = detObj.nColCal
        calibrationrows     = detObj.nRowCal
        
        self.assertEqual(100,   columns)
        self.assertEqual(200,   rows)
        self.assertEqual(5,     calibrationcolumns)
        self.assertEqual(10,    calibrationrows)
Exemplo n.º 4
0
    def test_arguments_passsed(self):

        detObj = detector(100, 200, 5, 10)

        columns = detObj.nCol
        rows = detObj.nRow
        calibrationcolumns = detObj.nColCal
        calibrationrows = detObj.nRowCal

        self.assertEqual(100, columns)
        self.assertEqual(200, rows)
        self.assertEqual(5, calibrationcolumns)
        self.assertEqual(10, calibrationrows)
Exemplo n.º 5
0
    def test_capaV_to_vIn_and_capaNum(self):
        detObj = detector()

        capaV = detObj.e2capaV(0) # zero electrons, capaV = startvoltage
        vIn,capaNum = detObj.capaV2vInGain(capaV)
        
        self.assertEqual(vIn,detObj.startVoltage[capaNum])
        self.assertTrue(0<=capaNum<4)

        vIn,capaNum = detObj.capaV2vInGain(detObj.e2capaV(0.5*detObj.fullWellC1))
        self.assertEqual(capaNum,2)
        self.assertTrue(0.25<=vIn<=2.)

        vIn,capaNum = detObj.capaV2vInGain(detObj.e2capaV(1.5*detObj.cumuFullWellC2))
        self.assertEqual(capaNum,3)
        self.assertEqual(vIn,0.25)
Exemplo n.º 6
0
    def test_capaV_to_vIn_and_capaNum(self):
        detObj = detector()

        capaV = detObj.e2capaV(0)  # zero electrons, capaV = startvoltage
        vIn, capaNum = detObj.capaV2vInGain(capaV)

        self.assertEqual(vIn, detObj.startVoltage[capaNum])
        self.assertTrue(0 <= capaNum < 4)

        vIn, capaNum = detObj.capaV2vInGain(
            detObj.e2capaV(0.5 * detObj.fullWellC1))
        self.assertEqual(capaNum, 2)
        self.assertTrue(0.25 <= vIn <= 2.)

        vIn, capaNum = detObj.capaV2vInGain(
            detObj.e2capaV(1.5 * detObj.cumuFullWellC2))
        self.assertEqual(capaNum, 3)
        self.assertEqual(vIn, 0.25)
Exemplo n.º 7
0
    def test_detector_has_default_parameters(self):
        
        detObj = detector()
        
        # settable parameters
        columns             = detObj.nCol
        rows                = detObj.nRow
        calibrationcolumns  = detObj.nColCal
        calibrationrows     = detObj.nRowCal
        
        self.assertEqual(1408,  columns)
        self.assertEqual(1484,  rows)
        self.assertEqual(8,     calibrationcolumns)
        self.assertEqual(7,     calibrationrows)

        cumuFullWellDiode   = detObj.cumuFullWellDiode
        cumuFullWellC0      = detObj.cumuFullWellC0
        cumuFullWellC1      = detObj.cumuFullWellC1
        cumuFullWellC2      = detObj.cumuFullWellC2

        self.assertEqual(2.64e4,cumuFullWellDiode)
        self.assertEqual(3.56e5,cumuFullWellC0)
        self.assertEqual(5.27e6,cumuFullWellC1)
        self.assertEqual(1.42e7,cumuFullWellC2)

        startVoltage    = detObj.startVoltage
        switchVoltage   = detObj.switchVoltage
        dbRefVoltage    = detObj.dbRefVoltage

        self.assertEqual([2,2,2,2],             startVoltage)
        self.assertEqual([.25,.25,.25,0.25],    switchVoltage)
        self.assertEqual(0.25,                  dbRefVoltage)

        gains = detObj.gains
        self.assertEqual(gains,[1,2,4,8])

        ncb     = detObj.nCoarseBits
        nfb     = detObj.nFineBits
        nforb   = detObj.nFineOverRangeBits
        nadc    = detObj.nADC

        self.assertEqual(ncb,   5)
        self.assertEqual(nfb,   7)
        self.assertEqual(nforb, 1)
        self.assertEqual(nadc,  7)

        # calculated parameters
        fullWellDiode   = detObj.fullWellDiode 
        fullWellC0      = detObj.fullWellC0 
        fullWellC1      = detObj.fullWellC1
        fullWellC2      = detObj.fullWellC2

        self.assertEqual(2.64e4,fullWellDiode)
        self.assertEqual(3.56e5-2.64e4,fullWellC0)
        self.assertEqual(5.27e6-3.56e5,fullWellC1)
        self.assertEqual(1.42e7-5.27e6,fullWellC2)

        fgt = detObj.fineGainTarget
        fot = detObj.fineOffsetTarget
        cgt = detObj.coarseGainTarget
        cot = detObj.coarseOffsetTarget

        self.assertEqual(fgt, (2**nfb-1)/(2./(2**ncb-1)))
        self.assertEqual(fot, 0)
        self.assertEqual(cgt, -2./(2**ncb-1))
        self.assertEqual(cot, 2**ncb-1)

        fineGains       = detObj.adcFineGain
        fineOffsets     = detObj.adcFineOffset
        coarseGains     = detObj.adcCoarseGain
        coarseOffsets   = detObj.adcCoarseOffset
        vThresholds     = detObj.adcVThreshold
        coarseSteps     = detObj.adcCoarseStep

        self.assertTrue(len(fineGains)==len(fineOffsets)==len(coarseGains)==len(coarseOffsets)==nadc)
        self.assertEqual(len(vThresholds),7)
        self.assertEqual(len(coarseSteps),7)
        self.assertEqual(vThresholds[0],2.)
        self.assertEqual(coarseSteps[0],vThresholds[0]/coarseOffsets[0])
Exemplo n.º 8
0
    def test_vIn_and_capaNum_to_ADU_code(self):
        detObj = detector()

        vIn, capaNum = detObj.capaV2vInGain(detObj.e2capaV())
        aduCode = detObj.vIn2ADUCode(vIn,capaNum)
Exemplo n.º 9
0
    def test_detector_has_default_parameters(self):

        detObj = detector()

        # settable parameters
        columns = detObj.nCol
        rows = detObj.nRow
        calibrationcolumns = detObj.nColCal
        calibrationrows = detObj.nRowCal

        self.assertEqual(1408, columns)
        self.assertEqual(1484, rows)
        self.assertEqual(8, calibrationcolumns)
        self.assertEqual(7, calibrationrows)

        cumuFullWellDiode = detObj.cumuFullWellDiode
        cumuFullWellC0 = detObj.cumuFullWellC0
        cumuFullWellC1 = detObj.cumuFullWellC1
        cumuFullWellC2 = detObj.cumuFullWellC2

        self.assertEqual(2.64e4, cumuFullWellDiode)
        self.assertEqual(3.56e5, cumuFullWellC0)
        self.assertEqual(5.27e6, cumuFullWellC1)
        self.assertEqual(1.42e7, cumuFullWellC2)

        startVoltage = detObj.startVoltage
        switchVoltage = detObj.switchVoltage
        dbRefVoltage = detObj.dbRefVoltage

        self.assertEqual([2, 2, 2, 2], startVoltage)
        self.assertEqual([.25, .25, .25, 0.25], switchVoltage)
        self.assertEqual(0.25, dbRefVoltage)

        gains = detObj.gains
        self.assertEqual(gains, [1, 2, 4, 8])

        ncb = detObj.nCoarseBits
        nfb = detObj.nFineBits
        nforb = detObj.nFineOverRangeBits
        nadc = detObj.nADC

        self.assertEqual(ncb, 5)
        self.assertEqual(nfb, 7)
        self.assertEqual(nforb, 1)
        self.assertEqual(nadc, 7)

        # calculated parameters
        fullWellDiode = detObj.fullWellDiode
        fullWellC0 = detObj.fullWellC0
        fullWellC1 = detObj.fullWellC1
        fullWellC2 = detObj.fullWellC2

        self.assertEqual(2.64e4, fullWellDiode)
        self.assertEqual(3.56e5 - 2.64e4, fullWellC0)
        self.assertEqual(5.27e6 - 3.56e5, fullWellC1)
        self.assertEqual(1.42e7 - 5.27e6, fullWellC2)

        fgt = detObj.fineGainTarget
        fot = detObj.fineOffsetTarget
        cgt = detObj.coarseGainTarget
        cot = detObj.coarseOffsetTarget

        self.assertEqual(fgt, (2**nfb - 1) / (2. / (2**ncb - 1)))
        self.assertEqual(fot, 0)
        self.assertEqual(cgt, -2. / (2**ncb - 1))
        self.assertEqual(cot, 2**ncb - 1)

        fineGains = detObj.adcFineGain
        fineOffsets = detObj.adcFineOffset
        coarseGains = detObj.adcCoarseGain
        coarseOffsets = detObj.adcCoarseOffset
        vThresholds = detObj.adcVThreshold
        coarseSteps = detObj.adcCoarseStep

        self.assertTrue(
            len(fineGains) == len(fineOffsets) == len(coarseGains) == len(
                coarseOffsets) == nadc)
        self.assertEqual(len(vThresholds), 7)
        self.assertEqual(len(coarseSteps), 7)
        self.assertEqual(vThresholds[0], 2.)
        self.assertEqual(coarseSteps[0], vThresholds[0] / coarseOffsets[0])
Exemplo n.º 10
0
    def test_vIn_and_capaNum_to_ADU_code(self):
        detObj = detector()

        vIn, capaNum = detObj.capaV2vInGain(detObj.e2capaV())
        aduCode = detObj.vIn2ADUCode(vIn, capaNum)