File indexing completed on 2025-08-03 08:20:33
0001
0002
0003
0004
0005
0006
0007 #include "decoding_routines.h"
0008
0009 int decode_id4evt( int iarr[]
0010 ,int *SubeventData
0011 ,int dlength
0012 ,int nlen
0013 ,int *olength)
0014 {
0015
0016 if ( SubeventData == 0) return -1;
0017
0018 int i;
0019
0020
0021 if (nlen > 0)
0022 {
0023 for (i=0; i<nlen;) iarr[i++]=0;
0024 }
0025
0026 int *sptr = SubeventData;
0027
0028 int nrl = 0;
0029 for (i=0; i < dlength ; i++)
0030 {
0031
0032
0033
0034
0035 if (nlen > 0 && i >= nlen)
0036 {
0037 *olength = i+1;
0038 return -1;
0039 }
0040 iarr[i] = *sptr++;
0041 nrl = i;
0042 }
0043 *olength = nrl+1;
0044 return 0;
0045 }
0046
0047
0048
0049
0050
0051 int decode_id2evt( int iarr[]
0052 ,short *SubeventData
0053 ,int dlength
0054 ,int nlen
0055 ,int *olength)
0056 {
0057 if ( SubeventData == 0) return -1;
0058 int i;
0059
0060 if (nlen > 0)
0061 {
0062 for (i=0; i<nlen;) iarr[i++]=0;
0063 }
0064
0065 short *sptr = SubeventData;
0066
0067 int nrl=0;
0068 for (i=0; i < dlength ; i++)
0069 {
0070
0071
0072
0073
0074 if (nlen > 0 && i >= nlen)
0075 {
0076 *olength = i+1;
0077 return -1;
0078 }
0079 iarr[i] = *sptr++;
0080 nrl = i;
0081 }
0082 *olength = nrl+1;
0083 return 0;
0084 }
0085
0086
0087 int decode_idhammond( int iarr[]
0088 ,int *SubeventData
0089 ,int dlength
0090 ,int nlen
0091 ,int *olength)
0092 {
0093 if ( SubeventData == 0) return -1;
0094 int i;
0095
0096
0097
0098
0099 if (nlen > 0)
0100 {
0101 for (i=0; i<nlen;) iarr[i++]=0;
0102 }
0103
0104 int *sptr = SubeventData;
0105
0106 int out_channel = 0;
0107 int is, k, h1, h2;
0108
0109 for (i=0; i < dlength ; i+=2)
0110 {
0111
0112
0113
0114
0115
0116
0117 h1 = *sptr++;
0118 h2 = *sptr++;
0119
0120 for ( k = 0; k<30; k+=5)
0121 {
0122 if (nlen > 0 && out_channel >= nlen)
0123 {
0124 *olength = out_channel+1;
0125 return -1;
0126 }
0127 iarr[out_channel++] = ((h1>>k) & 0x1f) ;
0128 }
0129
0130 is = ((h1>>30) & 3) | ( h2 << 2);
0131
0132 for (k = 0; k<10; k+=5)
0133 {
0134 if (nlen > 0 && out_channel >= nlen)
0135 {
0136 *olength = out_channel+1;
0137 return -1;
0138 }
0139 iarr[out_channel++] = ((is>>k) & 0x1f) ;
0140 }
0141
0142
0143 }
0144 *olength = out_channel;
0145 return 0;
0146 }
0147
0148
0149 int decode_idhammondset( int iarr[]
0150 ,int *SubeventData
0151 ,int dlength
0152 ,int nlen
0153 ,int *olength)
0154 {
0155 if ( SubeventData == 0) return -1;
0156 int i;
0157
0158
0159 if (nlen > 0)
0160 {
0161 for (i=0; i<nlen;) iarr[i++]=0;
0162 }
0163
0164 int *sptr = SubeventData;
0165
0166 int nrl = 0;
0167 for (i=0; i < dlength ; i++)
0168 {
0169
0170
0171
0172
0173 if (nlen > 0 && i >= nlen)
0174 {
0175 *olength = i+1;
0176 return -1;
0177 }
0178 iarr[i] = *sptr++;
0179 nrl = i;
0180 }
0181 *olength = nrl+1;
0182 return 0;
0183 }
0184
0185 int decode_idtecfem( int iarr[]
0186 ,int *SubeventData
0187 ,int dlength
0188 ,int nlen
0189 ,int *olength)
0190 {
0191 if ( SubeventData == 0) return -1;
0192 int i, istart;
0193
0194
0195 if (nlen > 0)
0196 {
0197 for (i=0; i<nlen;) iarr[i++]=0;
0198 }
0199
0200 int *sptr = SubeventData;
0201
0202 i = 0;
0203
0204 istart = 8;
0205
0206 int j;
0207 int b20;
0208 int nrl = 0;
0209 for (i=istart; i < dlength ; i++)
0210 {
0211
0212
0213
0214
0215
0216
0217
0218
0219 if (nlen > 0 && nrl >= nlen)
0220 {
0221 *olength = nrl;
0222 return -1;
0223 }
0224
0225 b20 = sptr[i];
0226
0227
0228 j = 0;
0229 iarr[nrl++] = (b20 >>j ) & 0x1f;
0230
0231
0232 j=5;
0233 iarr[nrl++] = (b20 >>j ) & 0x1f;
0234
0235
0236 j =10;
0237 iarr[nrl++] = (b20 >>j ) & 0x1f;
0238
0239
0240 j =15;
0241 iarr[nrl++] = (b20 >>j ) & 0x1f;
0242
0243
0244 }
0245 *olength = nrl;
0246 return 0;
0247 }
0248
0249
0250 #include <mizar.h>
0251
0252 int decode_idmiznhc( int parr[]
0253 ,int *SubeventData
0254 ,int dlength
0255 ,int nlen
0256 ,int *olength)
0257 {
0258 if ( SubeventData == 0) return -1;
0259 int i;
0260
0261
0262
0263 if (nlen > 0)
0264 {
0265 for (i=0; i<nlen;) parr[i++]=0;
0266 }
0267
0268 miz_irdg iarr = ( miz_irdg ) parr;
0269
0270 int ipos,isdm,index,adr,len,len_adc;
0271 sdm_c_block sdm;
0272
0273 ipos = 2;
0274 for(isdm=0;isdm<11;isdm++)
0275 {
0276 sdm = (sdm_c_block) &SubeventData[ipos];
0277 len = (sdm->sdmlength & 0x0000ffff);
0278
0279
0280 if ((sdm->sdmlength & 0x20000000))
0281 {
0282 iarr->out[isdm].byte_err = 1;
0283 }
0284 else
0285 {
0286 iarr->out[isdm].write_cell = (sdm->conv1_info & 0xf0000000)>>28;
0287 iarr->out[isdm].c1_cell = (sdm->conv1_info & 0x0f000000)>>24;
0288 iarr->out[isdm].c2_cell = (sdm->conv2_info & 0x0f000000)>>24;
0289 iarr->out[isdm].board_adr = (sdm->conv1_info & 0x0000ff00)>>8;
0290 iarr->out[isdm].ser_ret = (sdm->conv1_info & 0x000000ff);
0291
0292
0293
0294
0295
0296 iarr->out[isdm].words = len;
0297
0298
0299 len_adc = len -6;
0300 index = 0;
0301 while (index<len_adc)
0302 {
0303 if (sdm->array[index] & 0x80000000)
0304 {
0305
0306 adr = ( (sdm->array[index]>>20) & 0x7ff ) ;
0307 iarr->out[isdm].conv1_high[adr] = (sdm->array[index] & 0x3ff);
0308 iarr->out[isdm].conv1_low[adr] = ((sdm->array[index]>>10) & 0x3ff);
0309 iarr->out[isdm].conv2_high[adr] = (sdm->array[index+1] & 0x3ff);
0310 iarr->out[isdm].conv2_low[adr] = ((sdm->array[index+1]>>10) & 0x3ff);
0311 iarr->out[isdm].tac[adr] = ((sdm->array[index+1]>>20) & 0x3ff);
0312 index += 2;
0313 }
0314
0315 }
0316 }
0317 ipos += len;
0318 }
0319
0320 *olength = sizeof(*iarr)/4;
0321 return 0;
0322 }
0323
0324
0325 int decode_idsam( int iarr[]
0326 ,int *SubeventData
0327 ,int dlength
0328 ,int nlen
0329 ,int *olength)
0330 {
0331 if ( SubeventData == 0) return -1;
0332 int i, istat;
0333
0334
0335
0336
0337
0338 istat = decode_id4evt(iarr, SubeventData, dlength, nlen, olength);
0339
0340
0341 for (i=0; i < *olength ; i++)
0342 {
0343 iarr[i] /= 20;
0344 }
0345
0346
0347 return istat;
0348 }
0349
0350 int decode_iddcfem( int iarr[]
0351 ,int *SubeventData
0352 ,int dlength
0353 ,int nlen
0354 ,int *olength)
0355 {
0356 int i, istart;
0357
0358
0359 if (nlen > 0)
0360 {
0361 for (i=0; i<nlen;) iarr[i++]=0;
0362 }
0363
0364 int *sptr = SubeventData;
0365
0366 i = 0;
0367 while (sptr[i] != 0xdc111 && i++ < dlength ){}
0368
0369
0370
0371 istart = i + 5;
0372
0373 int j;
0374 int b20;
0375 int nrl = 0;
0376 for (i=istart; i < dlength ; i++)
0377 {
0378
0379
0380
0381
0382
0383
0384
0385
0386 if (nlen > 0 && nrl >= nlen)
0387 {
0388 *olength = nrl;
0389 return -1;
0390 }
0391
0392 if (sptr[i] == 0xff444)
0393 {
0394 *olength = nrl;
0395 return 0;
0396 }
0397
0398 b20 = sptr[i];
0399
0400
0401 j =10;
0402 iarr[nrl++] = (b20 >>j ) & 0x1f;
0403
0404
0405 j =15;
0406 iarr[nrl++] = (b20 >>j ) & 0x1f;
0407
0408
0409 j = 0;
0410 iarr[nrl++] = (b20 >>j ) & 0x1f;
0411
0412
0413 j=5;
0414 iarr[nrl++] = (b20 >>j ) & 0x1f;
0415
0416 }
0417
0418 *olength = nrl;
0419 return 0;
0420 }
0421
0422
0423 int decode_bbc_dcm0( int iarr[]
0424 ,int *packetData
0425 ,int dlength
0426 ,int nlen
0427 ,int *olength)
0428 {
0429 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
0430 }
0431
0432
0433 int decode_mvd_dcm0( int iarr[]
0434 ,int *packetData
0435 ,int dlength
0436 ,int nlen
0437 ,int *olength)
0438 {
0439 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
0440 }
0441
0442
0443 int decode_dch_dcm0( int iarr[]
0444 ,int *packetData
0445 ,int dlength
0446 ,int nlen
0447 ,int *olength)
0448 {
0449 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
0450 }
0451
0452
0453 int decode_pc_dcm0( int iarr[]
0454 ,int *packetData
0455 ,int dlength
0456 ,int nlen
0457 ,int *olength)
0458 {
0459 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
0460 }
0461
0462
0463 int decode_tec_dcm0( int iarr[]
0464 ,int *packetData
0465 ,int dlength
0466 ,int nlen
0467 ,int *olength)
0468 {
0469
0470 if ( packetData == 0) return -1;
0471 int i;
0472
0473
0474 if (nlen > 0)
0475 {
0476 for (i=0; i<nlen;) iarr[i++]=0;
0477 }
0478
0479 int *sptr = &packetData[5];
0480
0481
0482
0483
0484
0485
0486 int j;
0487 int b20;
0488 int nrl = 0;
0489
0490 i = 0;
0491
0492 while ( (sptr[i] & 0x80000000) == 0)
0493 {
0494
0495 if ( i > dlength -5) break;
0496
0497
0498
0499
0500
0501
0502
0503
0504 b20 = sptr[i] & 0xfffff;
0505
0506 int upperbits = (sptr[i] >> 20 ) & 0xfff;
0507 int wordnr = upperbits & 0x01f;
0508 int channel = (upperbits >> 5 ) & 0x3f;
0509
0510
0511 nrl = channel * 80 + wordnr *4;
0512
0513 j = 0;
0514 iarr[nrl++] = (b20 >>j ) & 0x1f;
0515
0516
0517
0518 j = 5;
0519 iarr[nrl++] = (b20 >>j ) & 0x1f;
0520
0521
0522
0523 j = 10;
0524 iarr[nrl++] = (b20 >>j ) & 0x1f;
0525
0526
0527
0528 j = 15;
0529 iarr[nrl++] = (b20 >>j ) & 0x1f;
0530
0531
0532 i++;
0533
0534
0535 }
0536
0537 *olength = 64 * 80 ;
0538 return 0;
0539
0540 }
0541
0542
0543 int decode_rich_dcm0( int iarr[]
0544 ,int *packetData
0545 ,int dlength
0546 ,int nlen
0547 ,int *olength)
0548 {
0549 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
0550 }
0551
0552
0553 int decode_tof_dcm0( int iarr[]
0554 ,int *packetData
0555 ,int dlength
0556 ,int nlen
0557 ,int *olength)
0558 {
0559 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
0560 }
0561
0562
0563 int decode_pbsc_dcm0( int iarr[]
0564 ,int *packetData
0565 ,int dlength
0566 ,int nlen
0567 ,int *olength)
0568 {
0569
0570 if ( packetData == 0) return -1;
0571 typedef struct {
0572 int post;
0573 int pre;
0574 int timing;
0575 } *emchannel;
0576
0577 int i;
0578
0579
0580 for (i=0; i<nlen;) iarr[i++]=0;
0581
0582 emchannel emc = (emchannel) &packetData[8];
0583
0584 int channel;
0585
0586 for (i=0; i < 144 ; i++)
0587 {
0588
0589
0590
0591
0592
0593 channel= ( emc->timing >> 20) & 0xff;
0594
0595 if (nlen > 0 && 5*channel >= nlen)
0596 {
0597 COUT << "too short" << ENDL;
0598 *olength = (channel+1)*5;
0599 return -1;
0600 }
0601
0602
0603 if ( (emc->timing & 0x90000 && emc->post &0xc0000 && emc->pre & 0xa0000 )
0604 && channel >= 0 && channel < 144 )
0605 {
0606
0607 if ( emc->post & 0x8000)
0608 {
0609 iarr[channel] = (emc->timing & 0xfff);
0610 iarr[channel+1] = 0;
0611 iarr[channel+2] = (emc->post & 0xfff);
0612 iarr[channel+3] = 0;
0613 iarr[channel+4] = (emc->pre & 0xfff);
0614 }
0615
0616 else
0617 {
0618 iarr[channel] = (emc->timing & 0xfff);
0619 iarr[channel+1] = (emc->post & 0xfff);
0620 iarr[channel+2] = 0;
0621 iarr[channel+3] = (emc->pre & 0xfff);
0622 iarr[channel+4] = 0;
0623 }
0624 }
0625
0626 emc++;
0627 }
0628 *olength = 144*5;
0629 return 0;
0630 }
0631
0632 int decode_pbsc_dcm32( int iarr[]
0633 ,int *packetData
0634 ,int dlength
0635 ,int nlen
0636 ,int *olength)
0637 {
0638 if ( packetData == 0) return -1;
0639
0640 typedef struct {
0641 int timing;
0642 int higain_post;
0643 int logain_post;
0644 int higain_pre;
0645 int logain_pre;
0646 } *emchannel;
0647
0648 int i;
0649
0650
0651 if (nlen > 0)
0652 {
0653 for (i=0; i<nlen;) iarr[i++]=0;
0654 }
0655
0656 emchannel emc = (emchannel) &packetData[9];
0657
0658 int nrl = 0;
0659 int j = 0;
0660
0661 for (i=0; i < 192 ; i++)
0662 {
0663
0664
0665
0666
0667 if (nlen > 0 && j >= nlen)
0668 {
0669 COUT << "too short" << ENDL;
0670 *olength = j+1;
0671 return -1;
0672 }
0673
0674 iarr[j++] = (emc->timing & 0xfff);
0675 iarr[j++] = (emc->higain_post & 0xfff);
0676 iarr[j++] = (emc->logain_post & 0xfff);
0677 iarr[j++] = (emc->higain_pre & 0xfff);
0678 iarr[j++] = (emc->logain_pre & 0xfff);
0679
0680 nrl = j;
0681 emc++;
0682 }
0683 *olength = nrl+1;
0684 return 0;
0685 }
0686
0687
0688
0689 int decode_pbgl_dcm0( int iarr[]
0690 ,int *packetData
0691 ,int dlength
0692 ,int nlen
0693 ,int *olength)
0694 {
0695 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
0696 }
0697
0698
0699 int decode_muta_dcm0( int iarr[]
0700 ,int *packetData
0701 ,int dlength
0702 ,int nlen
0703 ,int *olength)
0704 {
0705 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
0706 }
0707
0708
0709
0710
0711
0712 int decode_mutc_dcm0( int iarr[]
0713 ,int *packetData
0714 ,int dlength
0715 ,int nlen
0716 ,int *olength)
0717 {
0718 if ( packetData == 0) return -1;
0719
0720 int i;
0721
0722
0723 if (nlen > 0)
0724 {
0725 for (i=0; i<nlen;) iarr[i++]=0;
0726 }
0727
0728
0729 int *ic = &packetData[5];
0730
0731 int j = 0;
0732
0733
0734 if (nlen > 0 && nlen < 63*32)
0735 {
0736 COUT << "too short" << ENDL;
0737 *olength = 0;
0738 return -1;
0739 }
0740
0741
0742 for (i=0; i < 63*32 ; i++)
0743 {
0744
0745 iarr[j++] = ic[i];
0746
0747 }
0748
0749 *olength = 63*32;
0750 return 0;
0751
0752 }
0753
0754
0755
0756 int decode_muid_dcm0( int iarr[]
0757 ,int *packetData
0758 ,int dlength
0759 ,int nlen
0760 ,int *olength)
0761 {
0762 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
0763 }
0764
0765 int decode_zdc_dcm0( int iarr[]
0766 ,int *packetData
0767 ,int dlength
0768 ,int nlen
0769 ,int *olength)
0770 {
0771 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
0772 }
0773
0774
0775 int decode_rich_ll1( int iarr[]
0776 ,int *packetData
0777 ,int dlength
0778 ,int nlen
0779 ,int *olength)
0780 {
0781 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
0782 }
0783
0784 int decode_mvd_ll1( int iarr[]
0785 ,int *packetData
0786 ,int dlength
0787 ,int nlen
0788 ,int *olength)
0789 {
0790 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
0791 }
0792
0793 int decode_bbc_ll1( int iarr[]
0794 ,int *packetData
0795 ,int dlength
0796 ,int nlen
0797 ,int *olength)
0798 {
0799 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
0800 }
0801
0802 int decode_ntczdc_ll1( int iarr[]
0803 ,int *packetData
0804 ,int dlength
0805 ,int nlen
0806 ,int *olength)
0807 {
0808 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
0809 }
0810
0811 int decode_big_ll1( int iarr[]
0812 ,int *packetData
0813 ,int dlength
0814 ,int nlen
0815 ,int *olength)
0816 {
0817 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
0818 }
0819
0820 int decode_tof_ll1( int iarr[]
0821 ,int *packetData
0822 ,int dlength
0823 ,int nlen
0824 ,int *olength)
0825 {
0826 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
0827 }
0828
0829 int decode_muid_ll1( int iarr[]
0830 ,int *packetData
0831 ,int dlength
0832 ,int nlen
0833 ,int *olength)
0834 {
0835 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
0836 }
0837
0838 int decode_ert_ll1( int iarr[]
0839 ,int *packetData
0840 ,int dlength
0841 ,int nlen
0842 ,int *olength)
0843 {
0844 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
0845 }
0846
0847 int decode_pbgl_ll1( int iarr[]
0848 ,int *packetData
0849 ,int dlength
0850 ,int nlen
0851 ,int *olength)
0852 {
0853 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
0854 }
0855
0856 int decode_pbsc_ll1( int iarr[]
0857 ,int *packetData
0858 ,int dlength
0859 ,int nlen
0860 ,int *olength)
0861 {
0862 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
0863 }
0864
0865 int decode_gl1( int iarr[]
0866 ,int *packetData
0867 ,int dlength
0868 ,int nlen
0869 ,int *olength)
0870 {
0871 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
0872 }
0873
0874
0875 int decode_gl1p( int iarr[]
0876 ,int *packetData
0877 ,int dlength
0878 ,int nlen
0879 ,int *olength)
0880 {
0881 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
0882 }
0883
0884
0885 int decode_bbc_dcm1( int iarr[]
0886 ,int *packetData
0887 ,int dlength
0888 ,int nlen
0889 ,int *olength)
0890 {
0891 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
0892 }
0893
0894
0895 int decode_mvd_dcm1( int iarr[]
0896 ,int *packetData
0897 ,int dlength
0898 ,int nlen
0899 ,int *olength)
0900 {
0901 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
0902 }
0903
0904
0905 int decode_dch_dcm1( int iarr[]
0906 ,int *packetData
0907 ,int dlength
0908 ,int nlen
0909 ,int *olength)
0910 {
0911 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
0912 }
0913
0914
0915 int decode_pc_dcm1( int iarr[]
0916 ,int *packetData
0917 ,int dlength
0918 ,int nlen
0919 ,int *olength)
0920 {
0921 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
0922 }
0923
0924
0925 int decode_tec_dcm1( int iarr[]
0926 ,int *packetData
0927 ,int dlength
0928 ,int nlen
0929 ,int *olength)
0930 {
0931 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
0932 }
0933
0934
0935 int decode_rich_dcm1( int iarr[]
0936 ,int *packetData
0937 ,int dlength
0938 ,int nlen
0939 ,int *olength)
0940 {
0941 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
0942 }
0943
0944
0945 int decode_tof_dcm1( int iarr[]
0946 ,int *packetData
0947 ,int dlength
0948 ,int nlen
0949 ,int *olength)
0950 {
0951 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
0952 }
0953
0954
0955 int decode_pbsc_dcm1( int iarr[]
0956 ,int *packetData
0957 ,int dlength
0958 ,int nlen
0959 ,int *olength)
0960 {
0961 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
0962 }
0963
0964
0965 int decode_pbgl_dcm1( int iarr[]
0966 ,int *packetData
0967 ,int dlength
0968 ,int nlen
0969 ,int *olength)
0970 {
0971 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
0972 }
0973
0974
0975 int decode_muta_dcm1( int iarr[]
0976 ,int *packetData
0977 ,int dlength
0978 ,int nlen
0979 ,int *olength)
0980 {
0981 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
0982 }
0983
0984
0985
0986
0987 int decode_mutc_dcm1( int iarr[]
0988 ,int *packetData
0989 ,int dlength
0990 ,int nlen
0991 ,int *olength)
0992 {
0993 if ( packetData == 0) return -1;
0994 int i;
0995
0996
0997 if (nlen > 0){
0998 for (i=0; i<nlen;) iarr[i++]=0;
0999 }
1000
1001
1002 int *ic = &packetData[10];
1003
1004 int j = 0;
1005
1006
1007
1008 if (nlen > 0 && nlen < 512){
1009
1010 COUT << "too short" << ENDL;
1011 *olength = 0;
1012 return -1;
1013 }
1014
1015
1016 for (i=0; i < 512 ; i++) {
1017 iarr[j++] = ic[i];
1018 }
1019 *olength = 512;
1020
1021 return 0;
1022 }
1023
1024 int decode_muid_dcm1( int iarr[]
1025 ,int *packetData
1026 ,int dlength
1027 ,int nlen
1028 ,int *olength)
1029 {
1030 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
1031 }
1032
1033 int decode_zdc_dcm1( int iarr[]
1034 ,int *packetData
1035 ,int dlength
1036 ,int nlen
1037 ,int *olength)
1038 {
1039 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
1040 }
1041
1042 int decode_bbc_dcm2( int iarr[]
1043 ,int *packetData
1044 ,int dlength
1045 ,int nlen
1046 ,int *olength)
1047 {
1048 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
1049 }
1050
1051
1052 int decode_mvd_dcm2( int iarr[]
1053 ,int *packetData
1054 ,int dlength
1055 ,int nlen
1056 ,int *olength)
1057 {
1058 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
1059 }
1060
1061
1062 int decode_dch_dcm2( int iarr[]
1063 ,int *packetData
1064 ,int dlength
1065 ,int nlen
1066 ,int *olength)
1067 {
1068 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
1069 }
1070
1071
1072 int decode_pc_dcm2( int iarr[]
1073 ,int *packetData
1074 ,int dlength
1075 ,int nlen
1076 ,int *olength)
1077 {
1078 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
1079 }
1080
1081 int decode_pc_dcm3( int iarr[]
1082 ,int *packetData
1083 ,int dlength
1084 ,int nlen
1085 ,int *olength)
1086 {
1087 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
1088 }
1089
1090
1091 int decode_tec_dcm2( int iarr[]
1092 ,int *packetData
1093 ,int dlength
1094 ,int nlen
1095 ,int *olength)
1096 {
1097 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
1098 }
1099
1100
1101 int decode_rich_dcm2( int iarr[]
1102 ,int *packetData
1103 ,int dlength
1104 ,int nlen
1105 ,int *olength)
1106 {
1107 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
1108 }
1109
1110
1111 int decode_tof_dcm2( int iarr[]
1112 ,int *packetData
1113 ,int dlength
1114 ,int nlen
1115 ,int *olength)
1116 {
1117 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
1118 }
1119
1120
1121 int decode_pbsc_dcm2( int iarr[]
1122 ,int *packetData
1123 ,int dlength
1124 ,int nlen
1125 ,int *olength)
1126 {
1127 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
1128 }
1129
1130
1131 int decode_pbgl_dcm2( int iarr[]
1132 ,int *packetData
1133 ,int dlength
1134 ,int nlen
1135 ,int *olength)
1136 {
1137 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
1138 }
1139
1140
1141 int decode_muta_dcm2( int iarr[]
1142 ,int *packetData
1143 ,int dlength
1144 ,int nlen
1145 ,int *olength)
1146 {
1147 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
1148 }
1149
1150
1151 int decode_mutc_dcm2( int iarr[]
1152 ,int *packetData
1153 ,int dlength
1154 ,int nlen
1155 ,int *olength)
1156 {
1157 if ( packetData == 0) return -1;
1158 int i;
1159
1160
1161 if (nlen > 0){
1162 for (i=0; i<nlen;) iarr[i++]=0;
1163 }
1164
1165
1166 int *ic = &packetData[10];
1167
1168 int j = 0;
1169
1170 if (nlen > 0 && nlen < 512){
1171 COUT << "too short" << ENDL;
1172 *olength = 0;
1173 return -1;
1174 }
1175
1176 for (i=0; i < 512 ; i++) {
1177 iarr[j++] = ic[i];
1178 }
1179
1180 *olength = 512;
1181 return 0;
1182
1183 }
1184
1185 int decode_muid_dcm2( int iarr[]
1186 ,int *packetData
1187 ,int dlength
1188 ,int nlen
1189 ,int *olength)
1190 {
1191 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
1192 }
1193
1194 int decode_zdc_dcm2( int iarr[]
1195 ,int *packetData
1196 ,int dlength
1197 ,int nlen
1198 ,int *olength)
1199 {
1200 return decode_id4evt( iarr, packetData, dlength, nlen, olength);
1201 }
1202
1203
1204 int decode_pbsc_dcms( int iarr[]
1205
1206 ,int *packetData
1207 ,int dlength
1208 ,int nlen
1209 ,int *olength)
1210 {
1211
1212 if ( packetData == 0) return -1;
1213 typedef struct
1214 {
1215 int timing;
1216 int post;
1217 int pre;
1218 } *emchannel;
1219
1220 int i;
1221
1222
1223 if (nlen > 0)
1224 {
1225 for (i=0; i<nlen;) iarr[i++]=0;
1226 }
1227
1228 emchannel emc = (emchannel) &packetData[9];
1229
1230 int nrl = 0;
1231 int j = 0;
1232
1233 for (i=0; i < 144 ; i++)
1234 {
1235
1236
1237
1238
1239 if (nlen > 0 && j >= nlen)
1240 {
1241 COUT << "too short" << ENDL;
1242 *olength = j+1;
1243 return -1;
1244 }
1245
1246 if ( emc->post & 0x1000)
1247 {
1248 iarr[j++] = (emc->timing & 0xfff);
1249 iarr[j++] = 0;
1250 iarr[j++] = (emc->post & 0xfff);
1251 iarr[j++] = 0;
1252 iarr[j++] = (emc->pre & 0xfff);
1253 }
1254
1255 else
1256 {
1257 iarr[j++] = (emc->timing & 0xfff);
1258 iarr[j++] = (emc->post & 0xfff);
1259 iarr[j++] = 0;
1260 iarr[j++] = (emc->pre & 0xfff);
1261 iarr[j++] = 0;
1262 }
1263
1264 nrl = j;
1265 emc++;
1266 }
1267 *olength = nrl+1;
1268 return 0;
1269 }
1270
1271
1272 int decode_mutc_dcm3( int iarr[]
1273 ,int *packetData
1274 ,int dlength
1275 ,int nlen
1276 ,int *olength)
1277 {
1278 if ( packetData == 0) return -1;
1279 int i;
1280
1281
1282 if (nlen > 0){
1283 for (i=0; i<nlen;) iarr[i++]=0;
1284 }
1285
1286
1287 int *ic = &packetData[10];
1288
1289 int j = 0;
1290
1291 if (nlen > 0 && nlen < 512){
1292 COUT << "too short" << ENDL;
1293 *olength = 0;
1294 return -1;
1295 }
1296
1297 for (i=0; i < 512 ; i++) {
1298 iarr[j++] = ic[i];
1299 }
1300
1301 *olength = 512;
1302 return 0;
1303
1304 }
1305
1306
1307
1308