mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-23 23:10:02 +02:00
114 lines
2.6 KiB
C++
114 lines
2.6 KiB
C++
#ifndef INTMAP_H
|
|
#define INTMAP_H
|
|
#define N 60
|
|
#include <stdio.h>
|
|
#include <math.h>
|
|
|
|
|
|
|
|
|
|
class IntMap{
|
|
|
|
|
|
public:
|
|
|
|
IntMap(){};
|
|
|
|
~IntMap(){};
|
|
|
|
void Init(){
|
|
//lookup table of the output intensity for IR laser
|
|
//measurements performed by Dominic april 2014
|
|
//intensity[59]=intensity with 0 Optical Density
|
|
//intensity[0]=intensity with 5.9 Optical Density
|
|
intensity[0]=29;//5.9
|
|
intensity[1]=21;//5.8
|
|
intensity[2]=31;//5.7
|
|
intensity[3]=43;//5.6
|
|
intensity[4]=60;//5.5
|
|
intensity[5]=91;//5.4
|
|
intensity[6]=69;//5.3
|
|
intensity[7]=102;//5.2
|
|
intensity[8]=136;//5.1
|
|
intensity[9]=196;//5.0
|
|
intensity[10]=425;//4.9
|
|
intensity[11]=311;//4.8
|
|
intensity[12]=462;//4.7
|
|
intensity[13]=653;//4.6
|
|
intensity[14]=926;//4.5
|
|
intensity[15]=1423;//4.4
|
|
intensity[16]=1072;//4.3
|
|
intensity[17]=1592;//4.2
|
|
intensity[18]=2142;//4.1
|
|
intensity[19]=3085;//4.0
|
|
intensity[20]=729;//3.9
|
|
intensity[21]=533;//3.8
|
|
intensity[22]=793;//3.7
|
|
intensity[23]=1121;//3.6
|
|
intensity[24]=1588;//3.5
|
|
intensity[25]=2439;//3.4
|
|
intensity[26]=1842;//3.3
|
|
intensity[27]=2730;//3.2
|
|
intensity[28]=3663;//3.1
|
|
intensity[29]=5271;//3.0
|
|
intensity[30]=8102;//2.9
|
|
intensity[31]=5933;//2.8
|
|
intensity[32]=8789;//2.7
|
|
intensity[33]=12350;//2.6
|
|
intensity[34]=17358;//2.5
|
|
intensity[35]=26300;//2.4
|
|
intensity[36]=20029;//2.3
|
|
intensity[37]=29414;//2.2
|
|
intensity[38]=39202;//2.1
|
|
intensity[39]=55724;//2.0
|
|
intensity[40]=15697;//1.9
|
|
intensity[41]=11541;//1.8
|
|
intensity[42]=16976;//1.7
|
|
intensity[43]=23866;//1.6
|
|
intensity[44]=33478;//1.5
|
|
intensity[45]=50567;//1.4
|
|
intensity[46]=38552;//1.3
|
|
intensity[47]=56394;//1.2
|
|
intensity[48]=74897;//1.1
|
|
intensity[49]=106023;//1.0
|
|
intensity[50]=157384;//0.9
|
|
intensity[51]=117677;//0.8
|
|
intensity[52]=171101;//0.7
|
|
intensity[53]=236386;//0.6
|
|
intensity[54]=327248;//0.5
|
|
intensity[55]=492781;//0.4
|
|
intensity[56]=379641;//0.3
|
|
intensity[57]=546927;//0.2
|
|
intensity[58]=717203;//0.1
|
|
intensity[59]=1000000;//0.
|
|
return;
|
|
};
|
|
//_od is the total Optical Density
|
|
int getIntensity(float _od){
|
|
int _int(-1);
|
|
|
|
//these lines are to take into account rounding errors with floats
|
|
float hun_od = 100.*_od;
|
|
int Ihun_od = (int)round(hun_od);
|
|
float R_od =(float) Ihun_od/10.;
|
|
int I_od = (int)R_od;
|
|
|
|
if(I_od >-1 && I_od <60){
|
|
int index=59-I_od;
|
|
cerr<<index<<endl;
|
|
_int=intensity[index];
|
|
}else{
|
|
cerr<<"Optical density out of range!"<<endl;
|
|
}
|
|
return _int;
|
|
};
|
|
|
|
|
|
private:
|
|
|
|
int intensity[N];
|
|
|
|
};
|
|
|
|
#endif
|