HOME ESR EXPERIMENTS LABS etc
E121 E127 E132 E125 E143 laser_cooling_2021 E142 Ê128 E146 E0052 E0018
  Bound beta decay experiment on Tl-205  Not logged in ELOG logo
Message ID: 175     Entry time: Thu Oct 1 22:20:03 2020
Author: Jan 
Category: DAQ 
Subject: final unpacker config 
We identified an issue with randomly missing adc channels in all lmd-files before run 0273.
This led to errors in the unpacking process. 

This issue is solved with the new config and mapping for the unpacker. 
The respective files are attached here. 
The unpacker is ready to use in /u/litv-exp/unpacker/unpackexps/E121

The adc issue is also understood. We deactivated the internal adc thresholds during the experiment, because we encountered the very same unpacker errors. This solved the problem for all later runs, but we forgot to think about a solution for the earlier runs. 
Mea culpa.

Jan 
Attachment 1: E121.spec  5 kB  Uploaded Thu Oct 1 23:23:09 2020  | Hide | Hide all
// -*- C++ -*-

ADC_CH(start, id)
{
  MEMBER(DATA12 data[96]);

  UINT32 item NOENCODE
  {
  0_15: channel = MATCH(id);
  16_27: value;
  28_31: unknown;  
  ENCODE(data[channel - start], (value=value));
  }
}

SCALER(start)
{
	MEMBER(DATA32 data[32]);

	list(0 <= ch < 32)
	{
		UINT32 high NOENCODE
		{
			0_15: channel;
			16_31: value;
		}

		UINT32 low NOENCODE
		{
			0_15: channel;
			16_31: value;

		}

		ENCODE(data[(high.channel - start) / 2], (value=(high.value << 16) | low.value));
	}
}

TDC(start)
{
  MEMBER(DATA32 data);

  UINT32 high NOENCODE
  {
  0_15: channel = MATCH(start);
  16_31: value;
  }

  UINT32 low NOENCODE
  {
  0_15: channel;
  16_31: value;
  }
      
  ENCODE(data,(value=(high.value << 16) | low.value));
}


TBOX(start)
{
  MEMBER(DATA32 data[16]);

  list(0 <= ch < 16)
    {
            UINT32 high NOENCODE
	    {
	    0_15: channel;
	    16_31: value;
	    }

	    UINT32 low NOENCODE
	    {
	    0_15: channel;
	    16_31: value;
	    }
	    
	    ENCODE(data[(high.channel - start) / 2], (value=(high.value << 16) | low.value));
    }
}

SUBEVENT(ESR)
{
  tb_in[0] = TBOX(start = 0x300);
  tb_inhibit[0] = TBOX(start = 0x380);
  tb_red[0] = TBOX(start = 0x400);
  //  adc[0]   = ADC(start = 0);
  //  adc[1]   = ADC(start = 32);
  //  adc[2]   = ADC(start = 64);
  select several {
    adc[0] = ADC_CH(start = 0 , id =  0);
    adc[0] = ADC_CH(start = 0 , id =  1);
    adc[0] = ADC_CH(start = 0 , id =  2);
    adc[0] = ADC_CH(start = 0 , id =  3);
    adc[0] = ADC_CH(start = 0 , id =  4);
    adc[0] = ADC_CH(start = 0 , id =  5);
    adc[0] = ADC_CH(start = 0 , id =  6);
    adc[0] = ADC_CH(start = 0 , id =  7);
    adc[0] = ADC_CH(start = 0 , id =  8);
    adc[0] = ADC_CH(start = 0 , id =  9);
    adc[0] = ADC_CH(start = 0 , id = 10);
    adc[0] = ADC_CH(start = 0 , id = 11);
    adc[0] = ADC_CH(start = 0 , id = 12);
    adc[0] = ADC_CH(start = 0 , id = 13);
    adc[0] = ADC_CH(start = 0 , id = 14);
    adc[0] = ADC_CH(start = 0 , id = 15);
    adc[0] = ADC_CH(start = 0 , id = 16);
    adc[0] = ADC_CH(start = 0 , id = 17);
    adc[0] = ADC_CH(start = 0 , id = 18);
    adc[0] = ADC_CH(start = 0 , id = 19);
    adc[0] = ADC_CH(start = 0 , id = 20);
    adc[0] = ADC_CH(start = 0 , id = 21);
    adc[0] = ADC_CH(start = 0 , id = 22);
    adc[0] = ADC_CH(start = 0 , id = 23);
    adc[0] = ADC_CH(start = 0 , id = 24);
    adc[0] = ADC_CH(start = 0 , id = 25);
    adc[0] = ADC_CH(start = 0 , id = 26);
    adc[0] = ADC_CH(start = 0 , id = 27);
    adc[0] = ADC_CH(start = 0 , id = 28);
    adc[0] = ADC_CH(start = 0 , id = 29);
    adc[0] = ADC_CH(start = 0 , id = 30);
    adc[0] = ADC_CH(start = 0 , id = 31);
    adc[1] = ADC_CH(start = 32, id = 32);
    adc[1] = ADC_CH(start = 32, id = 33);
    adc[1] = ADC_CH(start = 32, id = 34);
    adc[1] = ADC_CH(start = 32, id = 35);
    adc[1] = ADC_CH(start = 32, id = 36);
    adc[1] = ADC_CH(start = 32, id = 37);
    adc[1] = ADC_CH(start = 32, id = 38);
    adc[1] = ADC_CH(start = 32, id = 39);
    adc[1] = ADC_CH(start = 32, id = 40);
    adc[1] = ADC_CH(start = 32, id = 41);
    adc[1] = ADC_CH(start = 32, id = 42);
    adc[1] = ADC_CH(start = 32, id = 43);
    adc[1] = ADC_CH(start = 32, id = 44);
    adc[1] = ADC_CH(start = 32, id = 45);
    adc[1] = ADC_CH(start = 32, id = 46);
    adc[1] = ADC_CH(start = 32, id = 47);
    adc[1] = ADC_CH(start = 32, id = 48);
    adc[1] = ADC_CH(start = 32, id = 49);
    adc[1] = ADC_CH(start = 32, id = 50);
    adc[1] = ADC_CH(start = 32, id = 51);
    adc[1] = ADC_CH(start = 32, id = 52);
    adc[1] = ADC_CH(start = 32, id = 53);
    adc[1] = ADC_CH(start = 32, id = 54);
    adc[1] = ADC_CH(start = 32, id = 55);
    adc[1] = ADC_CH(start = 32, id = 56);
    adc[1] = ADC_CH(start = 32, id = 57);
    adc[1] = ADC_CH(start = 32, id = 58);
    adc[1] = ADC_CH(start = 32, id = 59);
    adc[1] = ADC_CH(start = 32, id = 60);
    adc[1] = ADC_CH(start = 32, id = 61);
    adc[1] = ADC_CH(start = 32, id = 62);
    adc[1] = ADC_CH(start = 32, id = 63);
    adc[2] = ADC_CH(start = 64, id = 64);
    adc[2] = ADC_CH(start = 64, id = 65);
    adc[2] = ADC_CH(start = 64, id = 66);
    adc[2] = ADC_CH(start = 64, id = 67);
    adc[2] = ADC_CH(start = 64, id = 68);
    adc[2] = ADC_CH(start = 64, id = 69);
    adc[2] = ADC_CH(start = 64, id = 70);
    adc[2] = ADC_CH(start = 64, id = 71);
    adc[2] = ADC_CH(start = 64, id = 72);
    adc[2] = ADC_CH(start = 64, id = 73);
    adc[2] = ADC_CH(start = 64, id = 74);
    adc[2] = ADC_CH(start = 64, id = 75);
    adc[2] = ADC_CH(start = 64, id = 76);
    adc[2] = ADC_CH(start = 64, id = 77);
    adc[2] = ADC_CH(start = 64, id = 78);
    adc[2] = ADC_CH(start = 64, id = 79);
    adc[2] = ADC_CH(start = 64, id = 80);
    adc[2] = ADC_CH(start = 64, id = 81);
    adc[2] = ADC_CH(start = 64, id = 82);
    adc[2] = ADC_CH(start = 64, id = 83);
    adc[2] = ADC_CH(start = 64, id = 84);
    adc[2] = ADC_CH(start = 64, id = 85);
    adc[2] = ADC_CH(start = 64, id = 86);
    adc[2] = ADC_CH(start = 64, id = 87);
    adc[2] = ADC_CH(start = 64, id = 88);
    adc[2] = ADC_CH(start = 64, id = 89);
    adc[2] = ADC_CH(start = 64, id = 90);
    adc[2] = ADC_CH(start = 64, id = 91);
    adc[2] = ADC_CH(start = 64, id = 92);
    adc[2] = ADC_CH(start = 64, id = 93);
    adc[2] = ADC_CH(start = 64, id = 94);
    adc[2] = ADC_CH(start = 64, id = 95);
  }
  select optional {
    scaler[0] = SCALER(start = 0x100);
  }
  select several {
    tdc[0] = TDC(start = 0x200);
    tdc[1] = TDC(start = 0x202);
    tdc[2] = TDC(start = 0x204);
    tdc[3] = TDC(start = 0x206);
    tdc[4] = TDC(start = 0x208);
    tdc[5] = TDC(start = 0x20a);
    tdc[6] = TDC(start = 0x20c);
    tdc[7] = TDC(start = 0x20e);
    tdc[8] = TDC(start = 0x210);
    tdc[9] = TDC(start = 0x212);
  }
  
}

EVENT
{
 esr		= ESR(type = 10, subtype = 1);
}

#include "det_mapping.hh"
Attachment 2: det_mapping.hh  578 Bytes  Uploaded Thu Oct 1 23:23:24 2020  | Hide | Hide all
SIGNAL(	ADC1_1, esr.adc[0].data[0],
	ADC1_32, esr.adc[0].data[31], DATA12);
SIGNAL( ADC2_1, esr.adc[1].data[0],
	ADC2_32, esr.adc[1].data[31], DATA12);
SIGNAL( ADC3_1, esr.adc[2].data[0],
	ADC3_32, esr.adc[2].data[31], DATA12);
SIGNAL( SC_1, esr.scaler[0].data[0],
        SC_32, esr.scaler[0].data[31],DATA32);
SIGNAL( TDC_1, esr.tdc[0].data,
	TDC_10, esr.tdc[9].data,DATA32);
SIGNAL( TB_SI_IN, esr.tb_in[0].data[0],DATA32);
SIGNAL( TB_SI_RED, esr.tb_red[0].data[0],DATA32);
SIGNAL( TB_MWPC_IN, esr.tb_in[0].data[1],DATA32);
SIGNAL( TB_MWPC_RED, esr.tb_red[0].data[1],DATA32);
ELOG V3.1.5-fc6679b