Changeset 100 for hvcontrol/src/HVCalib.cc
- Timestamp:
- 08/12/09 12:15:02 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
hvcontrol/src/HVCalib.cc
r90 r100 7 7 sabrina.stark@phys.ethz.ch 8 8 9 Contents: Class reading the calibration tab elfor DAC to HV values9 Contents: Class reading the calibration table for DAC to HV values 10 10 11 11 \*************************************************************************/ … … 24 24 HVCalib::HVCalib(HVConfig* hvConfig) { 25 25 26 char calibfile[80]; 27 int idac, idacOld; 28 int istep, ihv1000, ihvOld; 29 char dLine[6000]; 26 char calibfile[80], dLine[6000]; 27 int idac, idacOld, istep, ihv1000, ihvOld; 30 28 bool first = true; 31 29 float hv1000,dac; 32 30 double intpart; 33 31 34 iDACMin = hvConfig->DACMin; 35 fHVCalibSlope = hvConfig->fHVCalibSlope; 36 NDACValues = hvConfig->DACMax - hvConfig->DACMin; 32 Config = hvConfig; 33 34 iDACMin = Config->DACMin; 35 fHVCalibSlope = Config->fHVCalibSlope; 36 NDACValues = Config->DACMax - Config->DACMin; 37 37 NHVValues = 10*NDACValues; 38 38 39 40 HVArray = new double***[hvConfig->NumHVBoards]; 41 for(int i=0; i<hvConfig->NumHVBoards; i++) { 42 HVArray[i] = new double**[NUM_CHAINS]; 39 HVArray = new double*** [Config->NumHVBoards]; 40 DACArray = new int*** [Config->NumHVBoards]; 41 for(int i=0; i<Config->NumHVBoards; i++) { 42 HVArray[i] = new double** [NUM_CHAINS]; 43 DACArray[i] = new int** [NUM_CHAINS]; 43 44 for(int j=0; j<NUM_CHAINS; j++) { 44 HVArray[i][j] = new double*[NUM_CHANNELS]; 45 HVArray[i][j] = new double* [NUM_CHANNELS]; 46 DACArray[i][j] = new int* [NUM_CHANNELS]; 45 47 for(int k=0; k<NUM_CHANNELS; k++) { 46 HVArray[i][j][k] = new double[NDACValues]; 48 HVArray[i][j][k] = new double [NDACValues]; 49 DACArray[i][j][k] = new int [NHVValues]; 47 50 } 48 51 } 49 52 } 50 53 51 DACArray = new int***[hvConfig->NumHVBoards]; 52 for(int i=0; i<hvConfig->NumHVBoards; i++) { 53 DACArray[i] = new int**[NUM_CHAINS]; 54 for(int j=0; j<NUM_CHAINS; j++) { 55 DACArray[i][j] = new int*[NUM_CHANNELS]; 56 for(int k=0; k<NUM_CHANNELS; k++) { 57 DACArray[i][j][k] = new int[NHVValues]; 58 } 59 } 60 } 61 62 for(int i=0; i<hvConfig->NumHVBoards; i++){ 54 for(int i=0; i<Config->NumHVBoards; i++){ 63 55 for(int j=0; j<NUM_CHAINS; j++){ 64 56 sprintf(calibfile,"Calib/%s_%c%d.txt",hvConfig->fUSBDevice[i],65+j,1); … … 68 60 fin >> dac; 69 61 idacOld = 0; 70 if ((int) dac >= hvConfig->DACMin) {62 if ((int) dac >= Config->DACMin) { 71 63 if (first){ 72 64 iDACMin = (int) dac; … … 76 68 istep = idac - idacOld; 77 69 for(int k=0; k<NUM_CHANNELS; k++){ 70 if (idac>=NDACValues) break; 71 78 72 fin>>HVArray[i][j][k][idac]; 73 79 74 for (int l=1; l<istep;l++){ 80 75 HVArray[i][j][k][idac-istep+l] = HVArray[i][j][k][idac-istep] + l*(HVArray[i][j][k][idac]-HVArray[i][j][k][idac-istep])/istep; … … 93 88 } 94 89 95 for(int i=0; i< hvConfig->NumHVBoards; i++){96 for(int j=0; j<NUM_CHAINS;j++){97 for(int k=0; k<NUM_CHANNELS;k++){90 for(int i=0; i<Config->NumHVBoards; i++){ 91 for(int j=0; j<NUM_CHAINS; j++){ 92 for(int k=0; k<NUM_CHANNELS; k++){ 98 93 ihvOld = 0; 99 94 first = true; 100 for (int l=0; l<NDACValues; l++){95 for (int l=0; l<NDACValues; l++){ 101 96 if (l == 0){ 102 97 ihvOld = 0; … … 129 124 HVCalib::~HVCalib() { 130 125 131 132 for (int i=0; i<MAX_NUM_HVBOARDS; i++){ 133 for (int j=0; j<NUM_CHAINS;j++){ 134 for (int k=0; k<NUM_CHANNELS;k++){ 135 delete [] HVArray[i][j][k]; 136 delete [] HVArray; 126 for(int i=0; i<Config->NumHVBoards; i++) { 127 for(int j=0; j<NUM_CHAINS; j++) { 128 for(int k=0; k<NUM_CHANNELS; k++) { 129 delete[] HVArray[i][j][k]; 130 delete[] DACArray[i][j][k]; 137 131 } 132 delete[] HVArray[i][j]; 133 delete[] DACArray[i][j]; 138 134 } 135 delete[] HVArray[i]; 136 delete[] DACArray[i]; 139 137 } 140 141 for (int i=0; i<MAX_NUM_HVBOARDS; i++){ 142 for (int j=0; j<NUM_CHAINS;j++){ 143 for (int k=0; k<NUM_CHANNELS;k++){ 144 delete [] DACArray[i][j][k]; 145 delete [] DACArray; 146 } 147 } 148 } 138 delete[] HVArray; 139 delete[] DACArray; 149 140 } 150 141 … … 175 166 ihv = (int) (hv1000<0 ? ceil(hv1000) : floor(hv1000)); 176 167 } 168 if (ihv >= NHVValues) ihv = NHVValues; 177 169 return DACArray[board][chain][channel][ihv]; 178 170 } 179 171 } 180
Note:
See TracChangeset
for help on using the changeset viewer.