Gotthard class implemented

git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorSoftware@34 951219d9-93cf-4727-9268-0efd64621fa3
This commit is contained in:
bergamaschi
2011-10-13 11:26:28 +00:00
parent 3367bb3026
commit ab27ab1c5d
36 changed files with 17857 additions and 161 deletions

View File

@ -69,7 +69,7 @@ int mapCSP0(void) {
fd = open("/dev/mem", O_RDWR | O_SYNC, 0);
if (fd == -1) {
printf("\nCan't find /dev/mem!\n");
return FAIL;
return FAIL;
}
printf("/dev/mem opened\n");
CSP0BASE = (u_int32_t)mmap(0, MEM_SIZE, PROT_READ|PROT_WRITE, MAP_FILE|MAP_SHARED, fd, CSP0);

View File

@ -150,7 +150,7 @@ int M_nofunc(int fnum){
printf(mess);
sendDataOnly(&retval,sizeof(retval));
sendDataOnly(mess,sizeof(mess));
return -1;
return GOODBYE;
}
@ -825,6 +825,14 @@ int set_dac(int fnum) {
case PREAMP:
idac=RGPR;
break;
/***************************************************************
add possible potentiometers like in chiptest board!!!!!!!!!!!!!!!
****************************************************************/
default:
printf("Unknown DAC index %d\n",ind);
sprintf(mess,"Unknown DAC index %d\n",ind);

View File

@ -476,9 +476,9 @@ int choose_vthresh() {
int retval=OK;
#ifdef MCB_FUNCS
int imod, ichan;
u_int32_t *scan;
u_int32_t *scan, *scan1;
int olddiff[nModX], direction[nModX];
int med[nModX], diff, media;
int med[nModX], med1[nModX], diff, media;
int change_flag=1;
int iteration=0;
int maxiterations=10;
@ -517,10 +517,14 @@ int choose_vthresh() {
fifodata=fifo_read_event();
scan=decode_data(fifodata);
//
scan1=decode_data(fifodata);
for (imod=modmi; imod<modma; imod++) {
med[imod]=median(scan+imod*nChans*nChips,nChans*nChips);
//
med[imod]=median(scan1+imod*nChans*nChips,nChans*nChips);
med1[imod]=med[imod];
vthreshmean=vthreshmean+getDACbyIndexDACU(VTHRESH,imod);
olddiff[imod]=0xffffff;
direction[imod]=0;
@ -529,9 +533,12 @@ int choose_vthresh() {
vthreshmean=vthreshmean/nm;
//media=median(scan,nChans*nChips*nModX);
//printf("Median overall=%d\n",media);
media=median(med+modmi,nm);
media=median(med1+modmi,nm);
printf("Median of modules=%d\n",media);
free(scan);
free(scan1);
while(change_flag && iteration<maxiterations) {
setDynamicRange(32);
@ -548,12 +555,16 @@ int choose_vthresh() {
fifodata=fifo_read_event();
scan=decode_data(fifodata);
//
scan1=decode_data(fifodata);
change_flag=0;
printf("Vthresh iteration %3d 0f %3d\n",iteration, maxiterations);
for (ichan=modmi; ichan<modma; ichan++) {
med[ichan]=median(scan+ichan*nChans*nChips,nChans*nChips);
media=median(med+modmi,nm);
med[ichan]=median(scan1+ichan*nChans*nChips,nChans*nChips);
med1[imod]=med[imod];
media=median(med1+modmi,nm);
diff=med[ichan]-media;
if (direction[ichan]==0) {
if (diff>0)
@ -586,6 +597,7 @@ int choose_vthresh() {
}
iteration++;
free(scan);
free(scan1);
}
#endif
return retval;
@ -602,12 +614,12 @@ int trim_with_median(int stop, int im) {
#ifdef MCB_FUNCS
int ichan, imod, ichip, ich;
u_int32_t *scan;
u_int32_t *scan, *scan1;
int *olddiff, *direction;
int med, diff;
int change_flag=1;
int iteration=0;
int me[nModX];
int me[nModX], me1[nModX];
int modma, modmi, nm;
int trim;
int *fifodata;
@ -631,7 +643,7 @@ int trim_with_median(int stop, int im) {
for (ich=0; ich<nChans; ich++) {
ichan=imod*nChips*nChans+ichip*nChans+ich;
direction[ichan]=0;
olddiff[ichan]=0xffffffff;
olddiff[ichan]=0x0fffffff;
}
}
}
@ -670,16 +682,18 @@ int trim_with_median(int stop, int im) {
usleep(500);
fifodata=fifo_read_event();
scan=decode_data(fifodata);
scan1=decode_data(fifodata);
/********* calculates median every time ***********/
for (imod=modmi; imod<modma; imod++) {
me[imod]=median(scan+imod*nChans*nChips,nChans*nChips);
me[imod]=median(scan1+imod*nChans*nChips,nChans*nChips);
me1[imod]=me[imod];
printf("Median of module %d=%d\n",imod,me[imod]);
}
med=median(me,nm);
med=median(me1,nm);
printf("median is %d\n",med);
change_flag=0;
@ -691,7 +705,7 @@ int trim_with_median(int stop, int im) {
for (ich=0; ich<nChans; ich++) {
ichan=imod*nChips*nChans+ichip*nChans+ich;
nextStrip(imod);
diff=scan[ichan]-med;
diff=scan[ichan]-me[imod];
if (direction[ichan]==0) {
if (diff>0) {
direction[ichan]=1;
@ -726,6 +740,7 @@ int trim_with_median(int stop, int im) {
}
iteration++;
free(scan);
free(scan1);
}
free(olddiff);
free(direction);