Line: 1 to 1  

FIR filtering  
Line: 22 to 22  
The FIR filter acts only on a peranalogcable basis, it cannot correct for a pulse that spreads over the boundary of two cables.  
Added:  
> >  Algorithms sequenceVeloTELL1CableFIRFilter has to be inserted into the TELL1Emulator sequence. It requires the data to be pedestal subtracted or optionally also common mode subtracted. The reordering have to be done after the FIR. Actually, the FIR should be applied at the point it has been measured, that is, if the VeloXTalkComputer had anInputDataLoc taking CM data into account, you must apply the FIR after the CM. An minimal example is
TELL1Processing.Members += { "VeloTELL1EmulatorInit", "VeloTELL1PedestalSubtractor", "VeloTELL1LCMS", "VeloTELL1CableFIRFilter", "VeloTELL1Reordering", "VeloTELL1ClusterMaker" }; VeloTELL1PedestalSubtractor.InputDataLoc = "Raw/Velo/DecodedADC"; // to skip the VeloTELL1FIRFilter VeloTELL1PedestalSubtractor.OutputDataLoc = "Raw/Velo/SubtractedPedADCs"; VeloTELL1LCMS.InputDataLoc = "Raw/Velo/SubtractedPedADCs"; VeloTELL1LCMS.OutputDataLocation = "Raw/Velo/ADCCMSuppressed"; VeloTELL1CableFIRFilter.InputDataLoc = "Raw/Velo/ADCCMSuppressed"; VeloTELL1CableFIRFilter.OutputDataLocation = "Raw/Velo/somename"; VeloTELL1Reordering.InputDataLoc = "Raw/Velo/somename";In case there is a typo in this example, you can check $VETRAROOT/options/TELL1Emulator.opts to have a working example you can adapt.  
The VeloTELL1CableFIRFilter options

Line: 1 to 1  

Added:  
> > 
FIR filteringFIR filtering theory is described in Lars presentation but other documents and presentation from Doris and Kazu are available at Indico search: FIR
Which FIR is applied with VeloTELL1CableFIRFilterThe filter is designed to be applied on pedestal and common mode subtracted non zero suppressed data.
It is applied in a way as close as possible to a TELL1 realistic scenario (thanks to Guido, which designed me this algorithm): newADC[i] = g[2] * ADC[i2] + g[1] * ADC[i1] + g[0] * ADC[i] + g[1] * ADC[i+1] + g[2] * ADC[i+2] this can be trivially written newADC[i] = 1/128 * ( g[2]*512 * (ADC[i2]/4) + g[1]*512 * (ADC[i1]/4) + g[1]*512 * (ADC[i+1]/4) + g[2]*512 * (ADC[i+2]/4) ) + ADC[i] g[0] is assumed to be one.FIR coef inside the TELL1s must have a binary representation. The real values of the g[k] are of the order of the xtalk coefficients, that is O(0.05). Storing g[k]*512 on a 8 bit signed integer allows to explore the range +127/512 = 24% to 24% by step of 0.2%. Dividing the ADC value by 4 allows to drop the least significant bits which we do not want to enter the computation.
A VeloTELL1CableFIRFilter instance has a given N (xtalk order, defined by the amount of Kmi vector you give in options (see below)) and M (FIR order, given by the The FIR filter acts only on a peranalogcable basis, it cannot correct for a pulse that spreads over the boundary of two cables.
The VeloTELL1CableFIRFilter options
The 