Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -6,41 +6,16 @@
*/
public class ExtendedFADCFitter implements IFADCFitter {

private int pedistalMinBin = 1;
private int pedistalMaxBin = 5;
private final int pedistalMaxBin = 5;

int p1=1,p2=15;
int mmsum,summing_in_progress;

public int t0,adc,ped,pedsum;
public int thresholdCrossing,pulsePeakValue, pulsePeakPosition, pulseWidth;
public double baseline, rms;
private int tcourse, tfine;

public ExtendedFADCFitter(){

}

public void fitCourseTime(int nsa, int nsb, int tet, int pedr, short[] pulse) {
pedsum=0;adc=0;mmsum=0;summing_in_progress=0;
for (int mm=0; mm<pulse.length; mm++) {
if(mm>p1 && mm<=p2) pedsum+=pulse[mm];
if(mm==p2) pedsum=pedsum/(p2-p1);
if(mm>p2) {
if (pedr==0) ped=pedsum;
if (pedr!=0) ped=pedr;
if ((summing_in_progress==0) && pulse[mm]>ped+tet) {
summing_in_progress=1;
tcourse = mm;
t0 = (tcourse << 6);
for (int ii=1; ii<nsb+1;ii++) adc+=(pulse[mm-ii]-ped);
mmsum=nsb;
}
if(summing_in_progress>0 && mmsum>(nsa+nsb)) summing_in_progress=-1;
if(summing_in_progress>0) {adc+=(pulse[mm]-ped); mmsum++;}
}
}
}
public ExtendedFADCFitter(){}

public void fit(int nsa, int nsb, int tet, int pedr, short[] pulse) {
t0=0; adc=0; ped=0; pedsum=0; baseline=0; rms=0;
Expand Down Expand Up @@ -115,51 +90,14 @@ public void fit(int nsa, int nsb, int tet, int pedr, short[] pulse) {
t0 = (tcourse << 6) + tfine;
}
if(s1>-1 && s0>-1) {
int a0 = pulse[s1];
int a1 = pulse[s1+1];
pulseWidth = s1 - s0;
}
}
}

private double findPedestal(DetectorDataDgtz.ADCData data){
int ped = 0;
for(int i = this.pedistalMinBin; i < this.pedistalMaxBin; i++){
ped += data.getPulseValue(i);
}
double ped_norm = ((double) ped) / (Math.abs(this.pedistalMaxBin-this.pedistalMinBin));
return ped_norm;
}

private int findMaximumADC(DetectorDataDgtz.ADCData data){
int bin = this.pedistalMaxBin ;
int max = data.getPulseValue(pedistalMaxBin);

for(int i = this.pedistalMaxBin; i < data.getPulseSize(); i++){
if(data.getPulseValue(i)>max){
max = data.getPulseValue(i);
bin = i;
}
}
return bin;
}

private int findPulseIntegral(DetectorDataDgtz.ADCData data, int maxValueBin, int nsa, int nsb){
int min_bin = maxValueBin - nsb;
int max_bin = maxValueBin + nsa;
if(min_bin>=0&&max_bin<data.getPulseSize()){

} else {
System.out.println("MIN _ MAX out of range....");
}
return 0;
}

@Override
public void fit(DetectorDataDgtz.ADCData data) {
if(data.getPulseSize()>this.pedistalMaxBin){
double ped = this.findPedestal(data);
}
throw new UnsupportedOperationException("Not supported yet.");
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -130,103 +130,6 @@ public List<Short> getDecoded(){
return result;
}

public void decode(){

List<Short> result = new ArrayList<>();

short[] bucket = new short[16];

//int channel;
//int minimum;
int nwords;
int nskip;
int position = 0;
int headerWord;
int pedestal ;
int compressedWord;
byte[] array = new byte[4];

System.out.println(desc.toString());
System.out.println("------------------------------------------------------");
for(int i = 0 ; i < adcBuffer.length/2; i++){
System.out.print(String.format("%04X ", adcBuffer[i*2+1]));
System.out.print(String.format("%04X ", adcBuffer[i*2]));
if((i+1)%8==0) System.out.println();
}
System.out.println();
System.out.println("------------------------------------------------------");
ByteBuffer buffer = ByteBuffer.wrap(array);
buffer.order(ByteOrder.LITTLE_ENDIAN);

while(position<this.adcBuffer.length){

short dataH = adcBuffer[position];
short dataL = adcBuffer[position+1];

buffer.putShort(0, dataH);
buffer.putShort(2, dataL);

headerWord = buffer.getInt(0);

//headerWord = (dataL<<16)|(dataH);
//channel = (headerWord >> 23) & 0x0F;
nwords = (headerWord&0x07);
nskip = (dataH>>4) &0x0F;
pedestal = (headerWord>>8)&0x0FFF;
compressedWord = (headerWord>>27)&0x0F;

position+=2;
if(compressedWord==5){

short value;
result.clear();
for(int i = 0; i < 4; i++){
value = (short) (adcBuffer[position+i]&0x000F);

bucket[i*4] = (short) (value+pedestal);
result.add( (short) (value+pedestal));

value = (short) ((adcBuffer[position+i] >> 4)&0x000F);

bucket[i*4+1] = (short) (value+pedestal);
result.add( (short) (value+pedestal));

value = (short) ((adcBuffer[position+i] >> 8)&0x000F);
bucket[i*4+2] = (short) (value+pedestal);
result.add( (short) (value+pedestal));

value = (short) ((adcBuffer[position+i] >> 12)&0x000F);
bucket[i*4+3] = (short) (value+pedestal);
result.add( (short) (value+pedestal));
}

position += 4;

if(nwords>0){

for(int i = 0; i < nwords*2; i++){
short first = (short) ( (adcBuffer[i+position]&0x00FF) << 4);
short second = (short) ( ((adcBuffer[i+position] >>8)&0x00FF)<<4);
if( (nskip+i*2)<=15)
bucket[nskip+i*2] += first;
if( (nskip+i*2+1)<=15)
bucket[nskip+i*2+1] += second;
}

position += nwords*2;
}
result.clear();
for(int k = 0 ; k < bucket.length; k++){
result.add(bucket[k]);
}
for(int i = 0; i < result.size(); i++){
System.out.print(String.format("%6d", result.get(i)));
}
System.out.println();
}
}
}

public void show(){
int length = 0;
if(adcBuffer!=null) length = adcBuffer.length;
Expand Down
Loading