--- DarthVader/CalorimeterLevel2/src/CaloLevel0.cpp 2008/12/04 14:55:48 1.24 +++ DarthVader/CalorimeterLevel2/src/CaloLevel0.cpp 2010/01/29 05:49:24 1.30 @@ -56,6 +56,31 @@ clevel1 = &clevel1_; clevel2 = &clevel2_; // +// extern struct FlEventi eventi_; +// extern struct FlGruppo gruppo_; +// extern struct FlGruppo2 gruppo2_; +// extern struct FlGruppo4 gruppo4_; +// extern struct FlTaglioen taglioen_; +// extern struct FlAngolo angolo_; +// extern struct FlWhere where_; +// extern struct FlGeneral general_; +// extern struct FlCh ch_; +// extern struct FlCalofit calofit_; +// extern struct FlPawcd pawcd_; +// extern struct FlQuestd questd_; +// eventi = &eventi_; +// gruppo = &gruppo_; +// gruppo2 = &gruppo2_; +// gruppo4 = &gruppo4_; +// taglioen = &taglioen_; +// angolo = &angolo_; +// where = &where_; +// general = &general_; +// ch = &ch_; +// calofit = &calofit_; +// pawcd = &pawcd_; +// questd = &questd_; + // trkseqno = 0; ClearStructs(); // @@ -75,6 +100,7 @@ calopar4 = true; calopar5 = true; crosst = true; + mask18 = false; ftcalopar1 = 0; ttcalopar1 = 0; ftcalopar2 = 0; @@ -715,7 +741,7 @@ // if ( !ncalibs ) return(-110); // - calo->GetEntry(calibno); + if ( calo->GetEntry(calibno) <= 0) throw -36; if ( verbose ) printf(" PULSE2 using entry %u from file %s",calibno,fcalname.Data()); // // retrieve calibration table @@ -796,7 +822,7 @@ // if ( !ncalibs ) return(-110); // - calo1->GetEntry(calibno); + if ( calo1->GetEntry(calibno) <= 0 ) throw -36; if ( verbose ) printf(" PULSE1 using entry %u from file %s",calibno,fcalname.Data()); // // retrieve calibration table @@ -1158,13 +1184,13 @@ // // get entry ei // - l0calo->GetEntry(ei); + if ( l0calo->GetEntry(ei) <= 0 ) throw -36; // // if it was not a selftrigger event, could it ever been a selftrigger event? if so trigty = 3. // clevel2->nsatstrip = 0.; Int_t val = 0; - Int_t del = 1100; + Int_t del = 1000; for (Int_t sec = 0; sec < 4; sec++){ for (Int_t dsec = 0; dsec < 7; dsec++){ val = (Int_t)de->calselftrig[sec][dsec]; @@ -1173,26 +1199,26 @@ }; }; val = 0; - del = 1100; - if ( clevel2->trigty != 2. ){ + del = 1000; + if ( clevel2->trigty < 2. ){ Bool_t ck = false; for (Int_t sec = 0; sec < 4; sec++){ val = (Int_t)de->calselftrig[sec][6]; del = delay(val); - if ( del < 1100 ){ + if ( del < 1000 ){ clevel2->wartrig = 0.; clevel2->trigty = 3.; ck = true; break; }; }; - if ( !ck ) clevel2->wartrig = 100.; + // if ( !ck ) clevel2->wartrig = 100.; } else { Bool_t ck = false; for (Int_t sec = 0; sec < 4; sec++){ val = (Int_t)de->calselftrig[sec][6]; del = delay(val); - if ( del < 1100 ){ + if ( del < 1000 ){ clevel2->wartrig = 0.; ck = true; }; @@ -1227,6 +1253,8 @@ // Float_t ener0 = 0.; Float_t cbase0 = 0.; + Float_t totbase = 0.; + Float_t totped = 0.; Bool_t pproblem = false; Bool_t negbase = false; // @@ -1341,6 +1369,8 @@ // pre = -1; ener0 = 0.; + totbase = 0.; + totped = 0.; for (Int_t i = 0 ; i < 3 ; i++){ ip[i] = 0; for (Int_t n = i*32 ; n < (i+1)*32 ; n++){ @@ -1408,6 +1438,8 @@ ener = dexyc[l][m][n]; ener0 += ener; clevel1->estrip[n][m][l] = 0.; + totbase += de->base[l][m][pre]/96.; + totped += fabs(calped[l][m][n]); if ( de->base[l][m][pre] < 0 ) negbase = true; if ( base0>0 && base0 < 30000. ){ // @@ -1431,9 +1463,10 @@ }; // // check if there were problems with 5.7 or glitches in the power supply - // - if ( ((ener0 == 0. && cbase0 == 0.) || negbase ) && !pproblem && clevel2->perr[se] == 0){ - if ( verbose ) printf(" L0 entry %i : calorimeter power problems! event marked as bad perr %f swerr %X view %i plane %i \n",ei,de->perror[se],de->stwerr[se],l,m); + // + // if ( ((ener0 == 0. && cbase0 == 0.) || negbase || totbase > 196600. || totped < 1. ) && !pproblem && clevel2->perr[se] == 0){ // check pedestal and baseline values for one plane, if all zeros calibration is not valid (calorimeter power problems) [8th data reduction bug, fixed on 25/11/2009 by E.M.] + if ( ((ener0 == 0. && cbase0 == 0.) || negbase || totbase > 32700. || totped < 1. ) && !pproblem && clevel2->perr[se] == 0){ // check pedestal and baseline values for one plane, if all zeros calibration is not valid (calorimeter power problems) [8th data reduction bug, fixed on 25/11/2009 by E.M.] + if ( verbose ) printf(" L0 entry %i : calorimeter power problems! event marked as bad perr %f swerr %X view %i plane %i negbase %i totbase %f totped %f\n",ei,de->perror[se],de->stwerr[se],l,m, negbase, totbase, totped); pproblem = true; pe++; }; @@ -1720,17 +1753,25 @@ // CALOLEVEL1 CODING AND FILLING // // - // NOTICE: THE FOLLOWING LINE EXCLUDE ALL STRIPS FOR WHICH THE RMS*4 IS GREATER THAN 26 !!! <=============== IMPORTANT! =================> + // NOTICE: THE FOLLOWING LINE EXCLUDE ALL STRIPS FOR WHICH THE RMS*4 IS GREATER THAN 26 !!! <=============== IMPORTANT! =================> // not true anymore, now it trust parameter files // - if ( obadmask[l][m][j4] == 1 || clevel1->estrip[j4][m][l] <= clevel1->emin || clevel1->estrip[j4][m][l] <= memin[l][m][j4] || calrms[l][m][j4] > maxrms[l][m] ){ + if ( obadmask[l][m][j4] == 1 || clevel1->estrip[j4][m][l] <= clevel1->emin || clevel1->estrip[j4][m][l] <= memin[l][m][j4] || calrms[l][m][j4] > maxrms[l][m] || (l==0 && m == 18 && mask18 ) ){ clevel1->estrip[j4][m][l] = 0.; }; // + if ( debug ) printf(" STRIP: view %i plane %i strip %i energy: %f \n",l,m,j4,clevel1->estrip[j4][m][l]); + // // code and save the energy for each strip in svstrip // if ( clevel1->estrip[j4][m][l] > clevel1->emin ){ // Float_t savel1 = clevel1->estrip[j4][m][l]; + // + if ( m == 18 && l == 0 ){ + if ( debug ) printf(" Resetting plane 18X for variable calculation: view %i plane %i strip %i \n",l,m,j4); + clevel1->estrip[j4][m][l] = 0.; // SAVE STRIPS VALUE FOR PLANE 18 X but DO NOT USE IT FOR VARIABLE CALCULATION + }; + if ( debug ) printf(" HIT STRIP: view %i plane %i strip %i energy: %f \n",l,m,j4,clevel1->estrip[j4][m][l]); // if ( dexyc[l][m][j4] == 32767. ){ if ( dexyc[l][m][j4] > 32000. ){ savel1 += 5000.; @@ -1872,13 +1913,13 @@ void CaloLevel0::FillCommonVar(CaloLevel1 *c1, CaloLevel2 *ca){ // ca->good = clevel2->good; - if ( clevel2->trigty == 2. ){ - ca->selftrigger = 1; - } else { - ca->selftrigger = 0; - }; +// if ( clevel2->trigty == 2. ){ +// ca->selftrigger = 1; +// } else { +// ca->selftrigger = 0; +// }; // - ca->selftrigger += (Int_t)clevel2->wartrig; + ca->selftrigger = (Int_t)clevel2->trigty + (Int_t)clevel2->wartrig; // memcpy(ca->perr,clevel2->perr,sizeof(clevel2->perr)); memcpy(ca->swerr,clevel2->swerr,sizeof(clevel2->swerr)); @@ -2155,7 +2196,7 @@ // if ( !ncalibs ) return(-110); // - calo->GetEntry(calibno[s]); + if ( calo->GetEntry(calibno[s]) <= 0 ) throw -36; // if (ce->cstwerr[s] != 0 && ce->cperror[s] == 0 ) { for ( Int_t d=0 ; d<11 ;d++ ){