FACT++  1.0
static void DrsCalibrate::RemoveSpikes4 ( float *  ptr,
uint32_t  roi 
)
inlinestatic

Definition at line 718 of file DrsCalib.h.

References i.

Referenced by EventBuilderWrapper::applyCalib().

719  {
720  if (roi<7)
721  return;
722 
723  for (uint32_t i=0; i<roi-6; i++)
724  {
725  double d10, d21, d32, d43, d54;
726 
727  // ============================================
728  d43 = ptr[i+4]-ptr[i+3];
729  d54 = ptr[i+5]-ptr[i+4];
730 
731  if ((d43>35 && -d54>35) || (d43<-35 && -d54<-35))
732  {
733  ptr[i+4] = (ptr[i+3]+ptr[i+5])/2;
734  }
735 
736  // ============================================
737  d32 = ptr[i+3]-ptr[i+2];
738  d54 = ptr[i+5]-ptr[i+4];
739 
740  if ((d32>9 && -d54>13 && d32-d54>31)/* || (d32<-13 && -d54<-13 && d32+d54<-63)*/)
741  {
742  double avg0 = (ptr[i+2]+ptr[i+5])/2;
743  double avg1 = (ptr[i+3]+ptr[i+4])/2;
744 
745  ptr[i+3] = ptr[i+3] - avg1+avg0;
746  ptr[i+4] = ptr[i+4] - avg1+avg0;
747  }
748 
749  // ============================================
750  d21 = ptr[i+2]-ptr[i+1];
751  d54 = ptr[i+5]-ptr[i+4];
752 
753  if (d21>15 && -d54>17)
754  {
755  double avg0 = (ptr[i+1]+ptr[i+5])/2;
756  double avg1 = (ptr[i+2]+ptr[i+3]+ptr[i+4])/3;
757 
758  ptr[i+2] = ptr[i+2] - avg1+avg0;
759  ptr[i+3] = ptr[i+3] - avg1+avg0;
760  ptr[i+4] = ptr[i+4] - avg1+avg0;
761  }
762 
763  // ============================================
764  d10 = ptr[i+1]-ptr[i];
765  d54 = ptr[i+5]-ptr[i+4];
766 
767  if (d10>18 && -d54>20)
768  {
769  double avg0 = (ptr[i]+ptr[i+5])/2;
770  double avg1 = (ptr[i+1]+ptr[i+2]+ptr[i+3]+ptr[i+4])/4;
771 
772  ptr[i+1] = ptr[i+1] - avg1+avg0;
773  ptr[i+2] = ptr[i+2] - avg1+avg0;
774  ptr[i+3] = ptr[i+3] - avg1+avg0;
775  ptr[i+4] = ptr[i+4] - avg1+avg0;
776  }
777  }
778  }
int i
Definition: db_dim_client.c:21

+ Here is the caller graph for this function: