--- DarthVader/CalorimeterLevel2/src/CaloLevel0.cpp 2007/12/03 15:47:43 1.14 +++ DarthVader/CalorimeterLevel2/src/CaloLevel0.cpp 2008/02/07 20:02:09 1.16 @@ -728,6 +728,13 @@ return(0); } +void CaloLevel0::FindBaseCompress(Int_t l, Int_t m, Int_t pre){ + for (Int_t e = pre*16; e < (pre+1)*16 ; e++){ + dexy[l][m][e] = dexyc[l][m][e]; + }; + this->FindBaseRaw(l,m,pre); +} + void CaloLevel0::FindBaseRaw(Int_t l, Int_t m, Int_t pre){ Float_t minstrip = 100000.; Float_t rms = 0.; @@ -738,6 +745,9 @@ rms = calthr[l][m][pre]; }; }; + if ( debug && l==1 ){ + printf("\n BASELINE CALCULATION for view %i pl %i pre %i: \n => minstrip %f rms %f \n",l,m,pre,minstrip,rms); + }; if ( minstrip != 100000. ) { Float_t strip6s = 0.; for (Int_t e = pre*16; e < (pre+1)*16 ; e++){ @@ -754,7 +764,11 @@ dexyc[l][m][e] = dexy[l][m][e]; }; }; - if ( strip6s >= 9. ){ + if ( debug && l==1 ){ + printf(" strip6s %f \n",strip6s); + }; + // if ( strip6s >= 9. ){ + if ( strip6s >= 2. ){ Double_t arro = base[l][m][pre]/strip6s; Float_t deci = 1000.*((float)arro - float(int(arro))); if ( deci < 500. ) { @@ -913,8 +927,12 @@ // // baseline check and calculation // - if ( !isRAW ) { - base[l][m][pre] = de->base[l][m][pre] ; + if ( !isRAW ){ + if ( de->base[l][m][pre] != 0. && de->base[l][m][pre]<31000. ) { + base[l][m][pre] = de->base[l][m][pre] ; + } else { + FindBaseCompress(l,m,pre); + }; cbase0 += base[l][m][pre]; } else { // @@ -974,22 +992,22 @@ case 0: base0 = base[l][m][pre]; base2 = calbase[l][m][pre]; - if ( debug ) printf(" base0 = base l m pre = %f base2 = calbase l m pre = %f \n",base[l][m][pre],calbase[l][m][pre]); + if ( debug ) printf(" base0 = base l%i m%i pre%i = %f base2 = calbase l m pre = %f \n",l,m,pre,base[l][m][pre],calbase[l][m][pre]); break; case 1: base0 = base[l][m][ip[i]]; base2 = calbase[l][m][ip[i]]; - if ( debug ) printf(" base0 = base l m ip(i) = %f base2 = calbase l m ip(i) = %f \n",base[l][m][ip[i]],calbase[l][m][ip[i]]); + if ( debug ) printf(" base0 = base l%i m%i ip(i)%i = %f base2 = calbase l m ip(i) = %f \n",l,m,ip[i],base[l][m][ip[i]],calbase[l][m][ip[i]]); break; case 2: base0 = sbase[l][m][pre]; base2 = calbase[l][m][pre]; - if ( debug ) printf(" base0 = sbase l m pre = %f base2 = calbase l m pre = %f \n",sbase[l][m][pre],calbase[l][m][pre]); + if ( debug ) printf(" base0 = sbase l%i m%i pre%i = %f base2 = calbase l m pre = %f \n",l,m,pre,sbase[l][m][pre],calbase[l][m][pre]); break; case 3: base0 = calbase[l][m][pre]; base2 = calbase[l][m][pre]; - if ( debug ) printf(" base0 = calbase l m pre = %f base2 = calbase l m pre = %f \n",calbase[l][m][pre],calbase[l][m][pre]); + if ( debug ) printf(" base0 = calbase l%i m%i pre%i = %f base2 = calbase l m pre = %f \n",l,m,pre,calbase[l][m][pre],calbase[l][m][pre]); break; }; base1 = calbase[l][m][pre]; @@ -1095,7 +1113,7 @@ if ( clevel1->estrip[j4][m][l] > clevel1->emin ){ // Float_t savel1 = clevel1->estrip[j4][m][l]; - if ( dexyc[j4][m][l] == 32767. ){ + if ( dexyc[l][m][j4] == 32767. ){ savel1 += 5000.; clevel2->nsatstrip += 1.; };