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])
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] )
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)
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)
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)
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)
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])
def test_vIn_and_capaNum_to_ADU_code(self): detObj = detector() vIn, capaNum = detObj.capaV2vInGain(detObj.e2capaV()) aduCode = detObj.vIn2ADUCode(vIn,capaNum)
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])
def test_vIn_and_capaNum_to_ADU_code(self): detObj = detector() vIn, capaNum = detObj.capaV2vInGain(detObj.e2capaV()) aduCode = detObj.vIn2ADUCode(vIn, capaNum)