/[PAMELA software]/DarthVader/CalorimeterLevel2/src/CaloLevel0.cpp
ViewVC logotype

Diff of /DarthVader/CalorimeterLevel2/src/CaloLevel0.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.22 by mocchiut, Thu Jun 19 20:05:44 2008 UTC revision 1.31 by mocchiut, Mon Apr 19 14:17:22 2010 UTC
# Line 56  CaloLevel0::CaloLevel0(){ Line 56  CaloLevel0::CaloLevel0(){
56    clevel1 = &clevel1_;    clevel1 = &clevel1_;
57    clevel2 = &clevel2_;    clevel2 = &clevel2_;
58    //    //
59    //  extern struct FlEventi eventi_;
60    //   extern struct FlGruppo gruppo_;
61    //   extern struct FlGruppo2 gruppo2_;
62    //   extern struct FlGruppo4 gruppo4_;
63    //   extern struct FlTaglioen taglioen_;
64    //   extern struct FlAngolo angolo_;
65    //   extern struct FlWhere where_;
66    //   extern struct FlGeneral general_;
67    //   extern struct FlCh ch_;
68    //   extern struct FlCalofit calofit_;
69    //   extern struct FlPawcd pawcd_;
70    //   extern struct FlQuestd questd_;
71    //   eventi = &eventi_;
72    //   gruppo = &gruppo_;
73    //   gruppo2 = &gruppo2_;
74    //   gruppo4 = &gruppo4_;
75    //   taglioen = &taglioen_;
76    //   angolo = &angolo_;
77    //   where = &where_;
78    //   general = &general_;
79    //   ch = &ch_;
80    //   calofit = &calofit_;
81    //   pawcd = &pawcd_;
82    //   questd = &questd_;
83      //
84    trkseqno = 0;    trkseqno = 0;
85    ClearStructs();    ClearStructs();
86    //    //
# Line 75  CaloLevel0::CaloLevel0(){ Line 100  CaloLevel0::CaloLevel0(){
100    calopar4 = true;    calopar4 = true;
101    calopar5 = true;    calopar5 = true;
102    crosst = true;    crosst = true;
103      mask18 = false;
104    ftcalopar1 = 0;    ftcalopar1 = 0;
105    ttcalopar1 = 0;    ttcalopar1 = 0;
106    ftcalopar2 = 0;    ftcalopar2 = 0;
# Line 715  Int_t CaloLevel0::CalcCrossTalkCorrDo(TS Line 741  Int_t CaloLevel0::CalcCrossTalkCorrDo(TS
741        //        //
742        if ( !ncalibs ) return(-110);        if ( !ncalibs ) return(-110);
743        //        //
744        calo->GetEntry(calibno);        if ( calo->GetEntry(calibno) <= 0) throw -36;
745        if ( verbose ) printf(" PULSE2 using entry %u from file %s",calibno,fcalname.Data());        if ( verbose ) printf(" PULSE2 using entry %u from file %s",calibno,fcalname.Data());
746        //        //
747        // retrieve calibration table        // retrieve calibration table
# Line 796  Int_t CaloLevel0::CalcCrossTalkCorrDo(TS Line 822  Int_t CaloLevel0::CalcCrossTalkCorrDo(TS
822        //        //
823        if ( !ncalibs ) return(-110);        if ( !ncalibs ) return(-110);
824        //        //
825        calo1->GetEntry(calibno);        if ( calo1->GetEntry(calibno) <= 0 ) throw -36;
826        if ( verbose ) printf(" PULSE1 using entry %u from file %s",calibno,fcalname.Data());        if ( verbose ) printf(" PULSE1 using entry %u from file %s",calibno,fcalname.Data());
827        //        //
828        // retrieve calibration table        // retrieve calibration table
# Line 1134  void CaloLevel0::FindBaseRaw(Int_t l, In Line 1160  void CaloLevel0::FindBaseRaw(Int_t l, In
1160          if ( strip6s < 4 && base[l][m][pre] > (-0.015*qp+sbase[l][m][pre]) && sbase[l][m][pre] > 0. ){          if ( strip6s < 4 && base[l][m][pre] > (-0.015*qp+sbase[l][m][pre]) && sbase[l][m][pre] > 0. ){
1161            if ( debug ) printf(" Suspicious calculated baseline: base %f sbase-0.02*qp %f strip6s %i \n",base[l][m][pre],(-qp*0.02+sbase[l][m][pre]),(Int_t)strip6s);            if ( debug ) printf(" Suspicious calculated baseline: base %f sbase-0.02*qp %f strip6s %i \n",base[l][m][pre],(-qp*0.02+sbase[l][m][pre]),(Int_t)strip6s);
1162            base[l][m][pre] = 31000.;                base[l][m][pre] = 31000.;    
1163              nst = 0; // 9RED BUG
1164              qp = 0.; // 9RED BUG
1165            for (Int_t e = pre*16; e < (pre+1)*16 ; e++){            for (Int_t e = pre*16; e < (pre+1)*16 ; e++){
1166              dexyc[l][m][e] = dexy[l][m][e];              dexyc[l][m][e] = dexy[l][m][e];
1167            };                  };      
1168          };          };
1169        } else {        } else {
1170            if ( debug ) printf(" reset baseline here if ! ( (strip6s >=2 && process == 2) || (strip6s >= 9 and process > 2) ) \n");
1171          base[l][m][pre] = 31000.;          base[l][m][pre] = 31000.;
1172            nst = 0; // 9RED BUG
1173            qp = 0.; // 9RED BUG
1174          for (Int_t e = pre*16; e < (pre+1)*16 ; e++){          for (Int_t e = pre*16; e < (pre+1)*16 ; e++){
1175            dexyc[l][m][e] = dexy[l][m][e];            dexyc[l][m][e] = dexy[l][m][e];
1176          };          };
1177        };        };
1178      } else {      } else {
1179          if ( debug ) printf(" reset baseline here if no minimum find\n");
1180          nst = 0; // 9RED BUG
1181          qp = 0.; // 9RED BUG
1182        process += 2;        process += 2;
1183        base[l][m][pre] = 31000.;        base[l][m][pre] = 31000.;
1184        for (Int_t e = pre*16; e < (pre+1)*16 ; e++){        for (Int_t e = pre*16; e < (pre+1)*16 ; e++){
# Line 1152  void CaloLevel0::FindBaseRaw(Int_t l, In Line 1186  void CaloLevel0::FindBaseRaw(Int_t l, In
1186        };        };
1187      };      };
1188    };    };
1189      if ( debug ) printf(" Baseline calculation: baseline for view %i plane %i pre %i is %f nst %i qp %f \n",l,m,pre,base[l][m][pre],nst,qp);
1190  }  }
1191    
1192  Int_t CaloLevel0::Calibrate(Int_t ei){  Int_t CaloLevel0::Calibrate(Int_t ei){
1193    //    //
1194    // get entry ei    // get entry ei
1195    //    //
1196    l0calo->GetEntry(ei);    if ( l0calo->GetEntry(ei) <= 0 ) throw -36;
1197    //    //
1198    // if it was not a selftrigger event, could it ever been a selftrigger event? if so trigty = 3.    // if it was not a selftrigger event, could it ever been a selftrigger event? if so trigty = 3.
1199    //    //
1200    clevel2->nsatstrip = 0.;    clevel2->nsatstrip = 0.;
1201    Int_t val = 0;    Int_t val = 0;
1202    Int_t del = 1100;    Int_t del = 1000;
1203    for (Int_t sec = 0; sec < 4; sec++){    for (Int_t sec = 0; sec < 4; sec++){
1204      for (Int_t dsec = 0; dsec < 7; dsec++){      for (Int_t dsec = 0; dsec < 7; dsec++){
1205        val = (Int_t)de->calselftrig[sec][dsec];        val = (Int_t)de->calselftrig[sec][dsec];
# Line 1173  Int_t CaloLevel0::Calibrate(Int_t ei){ Line 1208  Int_t CaloLevel0::Calibrate(Int_t ei){
1208      };      };
1209    };    };
1210    val = 0;    val = 0;
1211    del = 1100;    del = 1000;
1212    if ( clevel2->trigty != 2. ){    if ( clevel2->trigty < 2. ){
1213      Bool_t ck = false;      Bool_t ck = false;
1214      for (Int_t sec = 0; sec < 4; sec++){      for (Int_t sec = 0; sec < 4; sec++){
1215        val = (Int_t)de->calselftrig[sec][6];        val = (Int_t)de->calselftrig[sec][6];
1216        del = delay(val);        del = delay(val);
1217        if ( del < 1100 ){        if ( del < 1000 ){
1218          clevel2->wartrig = 0.;                clevel2->wartrig = 0.;      
1219          clevel2->trigty = 3.;          clevel2->trigty = 3.;
1220          ck = true;          ck = true;
1221          break;          break;
1222        };        };
1223      };      };
1224      if ( !ck ) clevel2->wartrig = 100.;            //    if ( !ck ) clevel2->wartrig = 100.;      
1225    } else {    } else {
1226      Bool_t ck = false;      Bool_t ck = false;
1227      for (Int_t sec = 0; sec < 4; sec++){      for (Int_t sec = 0; sec < 4; sec++){
1228        val = (Int_t)de->calselftrig[sec][6];        val = (Int_t)de->calselftrig[sec][6];
1229        del = delay(val);        del = delay(val);
1230        if ( del < 1100 ){        if ( del < 1000 ){
1231          clevel2->wartrig = 0.;                clevel2->wartrig = 0.;      
1232          ck = true;          ck = true;
1233        };        };
# Line 1227  Int_t CaloLevel0::Calibrate(Int_t ei){ Line 1262  Int_t CaloLevel0::Calibrate(Int_t ei){
1262    //    //
1263    Float_t ener0 = 0.;    Float_t ener0 = 0.;
1264    Float_t cbase0 = 0.;    Float_t cbase0 = 0.;
1265      Float_t totbase = 0.;
1266      Float_t totped = 0.;
1267    Bool_t pproblem = false;    Bool_t pproblem = false;
1268    Bool_t negbase = false;    Bool_t negbase = false;
1269    //    //
# Line 1268  Int_t CaloLevel0::Calibrate(Int_t ei){ Line 1305  Int_t CaloLevel0::Calibrate(Int_t ei){
1305          };          };
1306          clevel2->perr[se] = 0;          clevel2->perr[se] = 0;
1307          if ( de->perror[se] != 0 ){          if ( de->perror[se] != 0 ){
1308            clevel2->perr[se] = 1;            clevel2->perr[se] = (Int_t)de->perror[se];
1309            pe++;            pe++;
1310          };          };
1311          clevel2->swerr[se] = 0;          clevel2->swerr[se] = 0;
# Line 1341  Int_t CaloLevel0::Calibrate(Int_t ei){ Line 1378  Int_t CaloLevel0::Calibrate(Int_t ei){
1378          //          //
1379          pre = -1;          pre = -1;
1380          ener0 = 0.;          ener0 = 0.;
1381            totbase = 0.;
1382            totped = 0.;
1383          for (Int_t i = 0 ; i < 3 ; i++){          for (Int_t i = 0 ; i < 3 ; i++){
1384            ip[i] = 0;            ip[i] = 0;
1385            for (Int_t n = i*32 ; n < (i+1)*32 ; n++){                            for (Int_t n = i*32 ; n < (i+1)*32 ; n++){                
# Line 1358  Int_t CaloLevel0::Calibrate(Int_t ei){ Line 1397  Int_t CaloLevel0::Calibrate(Int_t ei){
1397              // no suitable new baseline, use old ones!              // no suitable new baseline, use old ones!
1398              //              //
1399              if ( !done ){              if ( !done ){
1400                  if ( debug ) printf(" l %i m %i pre %i ip[i] %i base %f base ip[i] %f sbase %f \n",l,m,pre,ip[i],base[l][m][pre],base[l][m][ip[i]],sbase[l][m][pre]);
1401                if ( (base[l][m][pre] == 31000. || base[l][m][pre] == 0.) ){                if ( (base[l][m][pre] == 31000. || base[l][m][pre] == 0.) ){
1402                  ck[l][m][pre] = 1;                  ck[l][m][pre] = 1;
1403                  if (pre%2 == 0) {                  if (pre%2 == 0) {
# Line 1408  Int_t CaloLevel0::Calibrate(Int_t ei){ Line 1448  Int_t CaloLevel0::Calibrate(Int_t ei){
1448              ener = dexyc[l][m][n];              ener = dexyc[l][m][n];
1449              ener0 += ener;              ener0 += ener;
1450              clevel1->estrip[n][m][l] = 0.;              clevel1->estrip[n][m][l] = 0.;
1451                totbase += de->base[l][m][pre]/96.;
1452                totped += fabs(calped[l][m][n]);
1453              if ( de->base[l][m][pre] < 0 ) negbase = true;              if ( de->base[l][m][pre] < 0 ) negbase = true;
1454              if ( base0>0 && base0 < 30000. ){              if ( base0>0 && base0 < 30000. ){
1455                //                //
# Line 1422  Int_t CaloLevel0::Calibrate(Int_t ei){ Line 1464  Int_t CaloLevel0::Calibrate(Int_t ei){
1464                  //                  //
1465                  // OK, now in estrip we have the energy deposit in MIP of all the strips for this event (at the end of loops of course)                  // OK, now in estrip we have the energy deposit in MIP of all the strips for this event (at the end of loops of course)
1466                  //                  //
1467                    if ( debug && l==0 && (m==17 || m==18) ) printf(" view %i plane %i strip %i ener %f calped %f base0 %f base1 %f base2 %f mip %f ENERGIA %f \n",l,m,n,ener,calped[l][m][n],base0,base1,base2,mip[l][m][n],clevel1->estrip[n][m][l]);
1468                  if ( clevel1->estrip[n][m][l] > 0. ) qpre[l][m][pre] += clevel1->estrip[n][m][l];                  if ( clevel1->estrip[n][m][l] > 0. ) qpre[l][m][pre] += clevel1->estrip[n][m][l];
1469                  //                  //
1470                  //                  //
# Line 1431  Int_t CaloLevel0::Calibrate(Int_t ei){ Line 1474  Int_t CaloLevel0::Calibrate(Int_t ei){
1474          };          };
1475          //          //
1476          // check if there were problems with 5.7 or glitches in the power supply          // check if there were problems with 5.7 or glitches in the power supply
1477          //          //
1478          if ( ((ener0 == 0. && cbase0 == 0.) || negbase ) && !pproblem && clevel2->perr[se] == 0){          //      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.]
1479            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 > 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.]
1480              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);
1481            pproblem = true;            pproblem = true;
1482            pe++;            pe++;
1483          };          };
# Line 1465  Int_t CaloLevel0::Calibrate(Int_t ei){ Line 1509  Int_t CaloLevel0::Calibrate(Int_t ei){
1509          //          //
1510          // Cross-talk corrections            // Cross-talk corrections  
1511          //          //
1512          if ( crosst ){          if ( crosst ){  
1513            //            //
1514            // energy on silicon ladders            // energy on silicon ladders
1515            //            //
# Line 1482  Int_t CaloLevel0::Calibrate(Int_t ei){ Line 1526  Int_t CaloLevel0::Calibrate(Int_t ei){
1526              if ( noselfct ){              if ( noselfct ){
1527                for (Int_t j = ladder*32 ; j < (ladder+1)*32 ; j++){                for (Int_t j = ladder*32 ; j < (ladder+1)*32 ; j++){
1528                  ipre = j/16 ;                    ipre = j/16 ;  
1529                    if ( debug ) printf(" CT STEP1 %i %i %i estrip %f ctprecor %f \n",j,m,l,clevel1->estrip[j][m][l],ctprecor[l][m][ipre]);
1530                  if ( clevel1->estrip[j][m][l] != 0. ) clevel1->estrip[j][m][l] -=  clevel1->estrip[j][m][l] * ctprecor[l][m][ipre];                  if ( clevel1->estrip[j][m][l] != 0. ) clevel1->estrip[j][m][l] -=  clevel1->estrip[j][m][l] * ctprecor[l][m][ipre];
1531                    if ( debug ) printf(" CT STEP2 %i %i %i estrip %f ctprecor %f \n",j,m,l,clevel1->estrip[j][m][l],ctprecor[l][m][ipre]);
1532                };                };
1533              };              };
1534              //              //
# Line 1504  Int_t CaloLevel0::Calibrate(Int_t ei){ Line 1550  Int_t CaloLevel0::Calibrate(Int_t ei){
1550                //                //
1551                if ( debug ) printf(" CK1 Limit for while: 0.07 \n");                if ( debug ) printf(" CK1 Limit for while: 0.07 \n");
1552                for (Int_t j = ipre*16 ; j < (ipre+1)*16 ; j++){                for (Int_t j = ipre*16 ; j < (ipre+1)*16 ; j++){
1553                    if ( debug ) printf(" CT STEP3 %i %i %i estrip %f ctprecor %f \n",j,m,l,clevel1->estrip[j][m][l],ctprecor[l][m][ipp]);
1554                  if ( !ctground ){                  if ( !ctground ){
1555                    if ( clevel1->estrip[j][m][l] != 0. ) clevel1->estrip[j][m][l] += - qpre[l][m][ipp] * ctprecor[l][m][ipp];                    if ( clevel1->estrip[j][m][l] != 0. ) clevel1->estrip[j][m][l] += - qpre[l][m][ipp] * ctprecor[l][m][ipp];
1556                  } else {                  } else {
1557                    if ( clevel1->estrip[j][m][l] != 0. ) clevel1->estrip[j][m][l] += - qpre[l][m][ipp] * 0.00478;                    if ( clevel1->estrip[j][m][l] != 0. ) clevel1->estrip[j][m][l] += - qpre[l][m][ipp] * 0.00478;
1558                  };                  };
1559                  if ( clevel1->estrip[j][m][l] > 0. ) nqpre += clevel1->estrip[j][m][l] ;                  if ( clevel1->estrip[j][m][l] > 0. ) nqpre += clevel1->estrip[j][m][l] ;
1560                    if ( debug ) printf(" CT STEP4 %i %i %i estrip %f ctprecor %f \n",j,m,l,clevel1->estrip[j][m][l],ctprecor[l][m][ipp]);
1561                };                };
1562                qpre[l][m][ipre] = nqpre;                qpre[l][m][ipre] = nqpre;
1563                nqpre = 0.;                nqpre = 0.;
# Line 1520  Int_t CaloLevel0::Calibrate(Int_t ei){ Line 1568  Int_t CaloLevel0::Calibrate(Int_t ei){
1568                while ( it < 10 && deltaqpre > 0.07 ){                while ( it < 10 && deltaqpre > 0.07 ){
1569                  nqpre = 0.;                  nqpre = 0.;
1570                  for (Int_t j = ipre*16 ; j < (ipre+1)*16 ; j++){                  for (Int_t j = ipre*16 ; j < (ipre+1)*16 ; j++){
1571                      if ( debug ) printf(" CT STEP5 %i %i %i estrip %f ctprecor %f \n",j,m,l,clevel1->estrip[j][m][l],ctprecor[l][m][ipre]);
1572                    if ( !ctground ){                    if ( !ctground ){
1573                      if ( debug ) printf(" CK1 pre correction: iteration %i deltaqpre %f  ctprecor %f  TOTAL CORRECTION %f \n",it,deltaqpre,ctprecor[l][m][ipre],deltaqpre * ctprecor[l][m][ipre]);                      if ( debug ) printf(" CK1 pre correction: iteration %i deltaqpre %f  ctprecor %f  TOTAL CORRECTION %f \n",it,deltaqpre,ctprecor[l][m][ipre],deltaqpre * ctprecor[l][m][ipre]);
1574                      if ( clevel1->estrip[j][m][l] != 0. ) clevel1->estrip[j][m][l] += deltaqpre * ctprecor[l][m][ipre];                      if ( clevel1->estrip[j][m][l] != 0. ) clevel1->estrip[j][m][l] += deltaqpre * ctprecor[l][m][ipre];
# Line 1527  Int_t CaloLevel0::Calibrate(Int_t ei){ Line 1576  Int_t CaloLevel0::Calibrate(Int_t ei){
1576                      if ( clevel1->estrip[j][m][l] != 0. ) clevel1->estrip[j][m][l] += deltaqpre * 0.00478;                      if ( clevel1->estrip[j][m][l] != 0. ) clevel1->estrip[j][m][l] += deltaqpre * 0.00478;
1577                    };                    };
1578                    if ( clevel1->estrip[j][m][l] > 0. ) nqpre += clevel1->estrip[j][m][l] ;                    if ( clevel1->estrip[j][m][l] > 0. ) nqpre += clevel1->estrip[j][m][l] ;
1579                      if ( debug ) printf(" CT STEP6 %i %i %i estrip %f ctprecor %f \n",j,m,l,clevel1->estrip[j][m][l],ctprecor[l][m][ipre]);
1580                  };                  };
1581                  if ( ctground ) it = 100;                  if ( ctground ) it = 100;
1582                  it++;                  it++;
# Line 1633  Int_t CaloLevel0::Calibrate(Int_t ei){ Line 1683  Int_t CaloLevel0::Calibrate(Int_t ei){
1683                  nqpre[0] = 0.;                  nqpre[0] = 0.;
1684                  nqpre[1] = 0.;                  nqpre[1] = 0.;
1685                  for (Int_t j = ladder*32 ; j < (ladder+1)*32 ; j++){                  for (Int_t j = ladder*32 ; j < (ladder+1)*32 ; j++){
1686                      if ( debug ) printf(" CT STEP6 %i %i %i estrip %f ctprecor %f \n",j,m,l,clevel1->estrip[j][m][l],ctsicor[l][m][si2]);
1687                    ipre = 0;                    ipre = 0;
1688                    if ( j > (ladder*32)+15 ) ipre = 1;                    if ( j > (ladder*32)+15 ) ipre = 1;
1689                    jpre = j/16 ;                    jpre = j/16 ;
# Line 1648  Int_t CaloLevel0::Calibrate(Int_t ei){ Line 1699  Int_t CaloLevel0::Calibrate(Int_t ei){
1699                    };                    };
1700                    if ( clevel1->estrip[j][m][l] > 0. ) nqsi += clevel1->estrip[j][m][l] ;                    if ( clevel1->estrip[j][m][l] > 0. ) nqsi += clevel1->estrip[j][m][l] ;
1701                    if ( clevel1->estrip[j][m][l] > 0. ) nqpre[ipre] += clevel1->estrip[j][m][l] ;                    if ( clevel1->estrip[j][m][l] > 0. ) nqpre[ipre] += clevel1->estrip[j][m][l] ;
1702                      if ( debug ) printf(" CT STEP7 %i %i %i estrip %f ctprecor %f \n",j,m,l,clevel1->estrip[j][m][l],ctsicor[l][m][si2]);
1703                  };                        };      
1704                  if ( ctground ) it = 100;                  if ( ctground ) it = 100;
1705                  deltaqsi = nqsi-snqsi;                  deltaqsi = nqsi-snqsi;
                 snqsi = nqsi;  
                 it++;  
1706                  deltaqpre[0] = nqpre[0] - qpre[l][m][pre-1];                  deltaqpre[0] = nqpre[0] - qpre[l][m][pre-1];
1707                  deltaqpre[1] = nqpre[1] - qpre[l][m][pre];                  deltaqpre[1] = nqpre[1] - qpre[l][m][pre];
1708                    //
1709                    // Check for divergence and stop if it happens! [9RED bug noticed with plane 18X]
1710                    //
1711                    if ( deltaqpre[0] > qpre[l][m][pre-1] || deltaqpre[1] > qpre[l][m][pre] || deltaqsi >snqsi ){
1712                      if ( debug ) printf(" WARNING!! DIVERGING CORRECTION EXIT IMMEDIATLY FROM THE LOOP!! dqpre0 %f qpre0 %f // dqpre1 %f qpre1 %f // dqsi %f qsi %f \n",deltaqpre[0],qpre[l][m][pre-1],deltaqpre[1],qpre[l][m][pre],deltaqsi,snqsi);
1713                      it = 1000;
1714                    };
1715                    //
1716                    snqsi = nqsi;
1717                    it++;
1718                  if ( debug ) printf(" BEFORE: qpre 0 %f qpre 1 %f \n",qpre[l][m][pre-1],qpre[l][m][pre]);                    if ( debug ) printf(" BEFORE: qpre 0 %f qpre 1 %f \n",qpre[l][m][pre-1],qpre[l][m][pre]);  
1719                  qpre[l][m][pre-1] = nqpre[0];                  qpre[l][m][pre-1] = nqpre[0];
1720                  qpre[l][m][pre] = nqpre[1];                      qpre[l][m][pre] = nqpre[1];    
# Line 1690  Int_t CaloLevel0::Calibrate(Int_t ei){ Line 1750  Int_t CaloLevel0::Calibrate(Int_t ei){
1750          jjj++;          jjj++;
1751          j4++;          j4++;
1752          if ( j < 96 ) ene[j] = clevel1->estrip[j][m][l];          if ( j < 96 ) ene[j] = clevel1->estrip[j][m][l];
1753          if ( crosst ){          if ( crosst ){  
1754            //            //
1755            // "Real" crosstalk effect on the neighbour strips respect to the one which have seen the energy deposit            // "Real" crosstalk effect on the neighbour strips respect to the one which have seen the energy deposit
1756            //            //
# Line 1720  Int_t CaloLevel0::Calibrate(Int_t ei){ Line 1780  Int_t CaloLevel0::Calibrate(Int_t ei){
1780            // CALOLEVEL1 CODING AND FILLING            // CALOLEVEL1 CODING AND FILLING
1781            //            //
1782            //            //
1783            // 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
1784            //            //
1785            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 ) ){
1786              clevel1->estrip[j4][m][l] = 0.;              clevel1->estrip[j4][m][l] = 0.;
1787            };            };
1788            //            //
1789              if ( debug ) printf(" STRIP: view %i plane %i strip %i energy: %f \n",l,m,j4,clevel1->estrip[j4][m][l]);
1790              //
1791            // code and save the energy for each strip in svstrip                // code and save the energy for each strip in svstrip    
1792            //            //
1793            if ( clevel1->estrip[j4][m][l] > clevel1->emin ){            if ( clevel1->estrip[j4][m][l] > clevel1->emin ){
1794              //              //
1795              Float_t savel1 = clevel1->estrip[j4][m][l];              Float_t savel1 = clevel1->estrip[j4][m][l];
1796                //
1797                if ( m == 18 && l == 0 ){
1798                  if ( debug ) printf(" Resetting plane 18X for variable calculation: view %i plane %i strip %i \n",l,m,j4);
1799                  clevel1->estrip[j4][m][l] = 0.; // SAVE STRIPS VALUE FOR PLANE 18 X but DO NOT USE IT FOR VARIABLE CALCULATION
1800                };
1801                if ( debug ) printf(" HIT STRIP: view %i plane %i strip %i energy: %f \n",l,m,j4,clevel1->estrip[j4][m][l]);
1802              //      if ( dexyc[l][m][j4] == 32767. ){              //      if ( dexyc[l][m][j4] == 32767. ){
1803              if ( dexyc[l][m][j4] > 32000. ){              if ( dexyc[l][m][j4] > 32000. || savel1 > 5000.){ // CaloLevel1 bug with plane 18X [9RED 14/04/2010]
1804                savel1 += 5000.;                if ( savel1 > 5000 ){
1805                    if ( debug ) printf(" Absurd plane 18X energy... resetting value to 1100 MIP \n");
1806                    savel1 = 1100.;            // CaloLevel1 bug with plane 18x [9RED 14/04/2010]
1807                  };
1808                  savel1 += 5000.;        
1809                clevel2->nsatstrip += 1.;                clevel2->nsatstrip += 1.;
1810              };              };
1811              //              //
# Line 1776  Int_t CaloLevel0::Calibrate(Int_t ei){ Line 1848  Int_t CaloLevel0::Calibrate(Int_t ei){
1848              } else {              } else {
1849                svstrip[istrip] = -(fbi*1000000000 + plo*10000000 + j4*100000 + cle);                svstrip[istrip] = -(fbi*1000000000 + plo*10000000 + j4*100000 + cle);
1850              };              };
1851                if ( debug ) printf(" svstrip[%i] = %i  fbi %i plo %i j4 %i cle %i \n",istrip,svstrip[istrip],fbi,plo,j4,cle);
1852              //              //
1853              istrip++;              istrip++;
1854            };            };
# Line 1872  void CaloLevel0::GetCommonVar(){ Line 1945  void CaloLevel0::GetCommonVar(){
1945  void CaloLevel0::FillCommonVar(CaloLevel1 *c1, CaloLevel2 *ca){  void CaloLevel0::FillCommonVar(CaloLevel1 *c1, CaloLevel2 *ca){
1946    //    //
1947    ca->good = clevel2->good;    ca->good = clevel2->good;
1948    if ( clevel2->trigty == 2. ){  //   if ( clevel2->trigty == 2. ){
1949      ca->selftrigger = 1;  //     ca->selftrigger = 1;
1950    } else {  //   } else {
1951      ca->selftrigger = 0;  //     ca->selftrigger = 0;
1952    };  //   };
1953    //    //
1954    ca->selftrigger += (Int_t)clevel2->wartrig;    ca->selftrigger = (Int_t)clevel2->trigty + (Int_t)clevel2->wartrig;
1955    //    //
1956    memcpy(ca->perr,clevel2->perr,sizeof(clevel2->perr));    memcpy(ca->perr,clevel2->perr,sizeof(clevel2->perr));
1957    memcpy(ca->swerr,clevel2->swerr,sizeof(clevel2->swerr));    memcpy(ca->swerr,clevel2->swerr,sizeof(clevel2->swerr));
# Line 2155  Int_t CaloLevel0::LoadCalib(Int_t s){ Line 2228  Int_t CaloLevel0::LoadCalib(Int_t s){
2228    //    //
2229    if ( !ncalibs ) return(-110);    if ( !ncalibs ) return(-110);
2230    //    //
2231    calo->GetEntry(calibno[s]);    if ( calo->GetEntry(calibno[s]) <= 0 ) throw -36;
2232    //    //
2233    if (ce->cstwerr[s] != 0 && ce->cperror[s] == 0 ) {    if (ce->cstwerr[s] != 0 && ce->cperror[s] == 0 ) {
2234      for ( Int_t d=0 ; d<11 ;d++  ){      for ( Int_t d=0 ; d<11 ;d++  ){

Legend:
Removed from v.1.22  
changed lines
  Added in v.1.31

  ViewVC Help
Powered by ViewVC 1.1.23