#include "hpiontrackertrb3unpacker.h"
#include "hades.h"
#include "hcategory.h"
#include "hdebug.h"
#include "hevent.h"
#include "heventheader.h"
#include "hldsource.h"
#include "hldsubevt.h"
#include "hruntimedb.h"
#include "hspectrometer.h"
#include "hpiontrackerdetector.h"
#include "hpiontrackerraw.h"
#include "hpiontrackertrb3lookup.h"
#include "hpiontrackerdef.h"
#include <iostream>
using namespace std;
#define PR(x) std::cout << "++DEBUG: " << #x << " = |" << x << "| (" << __FILE__ << ", " << __LINE__ << ")\n";
#define PRh(x) std::cout << "++DEBUG: " << #x << " = hex |" << std::hex << x << std::dec << "| (" << __FILE__ << ", " << __LINE__ << ")\n";
ClassImp (HPionTrackerTrb3Unpacker)
HPionTrackerTrb3Unpacker::HPionTrackerTrb3Unpacker (UInt_t id)
{
	
	subEvtId       = id;
	uTrbNetAddress = 0;
	nEvt = 0;
	debugFlag      = 0;
	quietMode      = kFALSE;
	reportCritical = kFALSE;
	pRawCat = NULL;
	pLookup = NULL;
	pTrbBoard = NULL;
}
Bool_t HPionTrackerTrb3Unpacker::init (void)
{
	
	HPionTrackerDetector * det = (HPionTrackerDetector *) gHades->getSetup()->getDetector ("PionTracker");
	if (!det)
	{
		Error ("init", "No PionTracker found.");
		return kFALSE;
	}
	pRawCat = det->buildCategory (catPionTrackerRaw);
	loc.set (2, 0, 0);
	pLookup = (HPionTrackerTrb3Lookup *) (gHades->getRuntimeDb()->getContainer ("PionTrackerTrb3Lookup"));
	if (!pLookup)
	{
		Error ("init", "No Pointer to parameter container PionTrackerTrb3Lookup.");
		return kFALSE;
	}
	return kTRUE;
}
Int_t HPionTrackerTrb3Unpacker::execute (void)
{
	
	if (gHades->isCalibration())
	{
		
		return 1;
	}
	if (gHades->getCurrentEvent()->getHeader()->getId() == 0xe)
	{
		
		return 1;
	}
	nEvt = gHades->getCurrentEvent()->getHeader()->getEventSeqNumber(); 
	if (NULL == pSubEvt)
	{
#if DEBUG_LEVEL > 0
		Warning ("execute", "EvtId: 0x%x, Unpacker 0x%x ==> no data",
				 gHades->getCurrentEvent()->getHeader()->getId(), subEvtId);
#endif
		return 1;
	}
	
	if (!pSubEvt)
		return 1;
	UInt_t * databeg = pSubEvt->getData();
	UInt_t * dataend  = pSubEvt->getEnd();
	nEvt = gHades->getCurrentEvent()->getHeader()->getEventSeqNumber();
	size_t data_size = dataend - databeg;
	if (data_size == 0)	return 0;
	size_t datanum = 0;
	size_t datacnt = 0;
	ptstate sm = sm_wait_for_board;
	ptheaderset pths;
	ptdataset ptds;
	for (size_t cnt = 0; cnt < data_size; ++cnt)
	{
		UInt_t d = * (databeg + cnt);
		switch (sm)
		{
			case sm_wait_for_board:
				datanum = (d >> 16) & 0xFFFF;   
				uTrbNetAddress = d & 0xFFFF;     
				if (datanum == 0)
				{
					continue;
				}
				datacnt = 0;
				
				if (uTrbNetAddress == 0x5555)
				{
					cnt += datanum;
					continue;
				}
				pTrbBoard = pLookup->getBoard (uTrbNetAddress);
				if (!pTrbBoard)
				{
					Warning ("HPionTrackerTrb3Unpacker::execute",
							 "Evt Nr : %i  TrbNetAdress: %x (%i) unpacked but TRB Board not in lookup table",
							 nEvt, uTrbNetAddress, uTrbNetAddress);
					
					cnt += datanum;
					continue;
				}
				
				sm = sm_header;
				break;
			
			case sm_header:
				pths = decodeSubevent(d);
				++datacnt;
				sm = sm_data;
				break;
				
			case sm_data:
			{
				++datacnt;
				if (d == 0xffffffff)
				{
					if (datacnt != datanum)
					{
						Error ("execute()", "Event %d --> datanum and datacnt differs. datanum=%lu, datacnt=%lu", nEvt, datanum, datacnt);
					}
					sm = sm_wait_for_board;
					break;
				}
				else
				{
					switch (pths.design)
					{
						case des_cosy13:
							ptds = decodeData_Cosy13(d, pths);
							break;
						case des_140115:
							ptds = decodeData_140115(d, pths);
							break;
						default:
							continue;
					}
					fillRaw (ptds);
				}
			}
			break;
			default:
				datacnt = 0;
				sm = sm_wait_for_board;
				break;
		}
	}
	
	
	
	
	return 1;
}
ptheaderset HPionTrackerTrb3Unpacker::decodeSubevent(UInt_t h)
{
	ptheaderset pths;
	bool olddesign = ((h >> 30) & 0x03) == 0x00;
	if (olddesign)
	{
		pths.design = des_cosy13;
		pths.tsref = h & 0xfff;
		pths.evcnt = (h >> 12) & 0x3ff;
		pths.romode = (h >> 22) & 0x3;
		pths.version = 0;
		pths.boardid = (h >> 24) & 0xff;
	}
	else
	{
		pths.design = des_140115;
		pths.tsref = h & 0xfff;
		pths.evcnt = (h >> 12) & 0x3ff;
		pths.romode = (h >> 22) & 0x3;
		pths.version = (h >> 26) & 0xf;
		pths.boardid = (h >> 30) & 0x3;
	}
	return pths;
}
ptdataset HPionTrackerTrb3Unpacker::decodeData_Cosy13(UInt_t d, const ptheaderset & pths)
{
	ptdataset ptds;
	ptds.ts = (d >> 0) & 0xfff;
	ptds.adc = (d >> 12) & 0xfff;
	ptds.strip = (d >> 24) & 0x7f;
	ptds.pileup = (d >> 31) & 0x01;
	ptds.overflow = 0;
	return ptds;
}
ptdataset HPionTrackerTrb3Unpacker::decodeData_140115(UInt_t d, const ptheaderset& hs)
{
	ptdataset ptds;
	switch (hs.romode)
	{
		case 0x00:
			ptds.ts = d & 0x7ff;
			ptds.adc = (d >> 11) & 0xfff;
			ptds.overflow = (d >> 23) & 0x01;
			ptds.pileup = (d >> 24) & 0x01;
			ptds.strip = (d >> 25) & 0x7f;
			break;
		case 0x01:
			ptds.ts = d & 0xfff;
			ptds.adc = (d >> 11) & 0xffe; 
			ptds.overflow = (d >> 23) & 0x01;
			ptds.pileup = (d >> 24) & 0x01;
			ptds.strip = (d >> 25) & 0x7f;
			break;
		case 0x02:
			ptds.ts = d & 0x3fff;
			ptds.adc = (d >> 11) & 0xff8; 
			ptds.overflow = (d >> 23) & 0x01;
			ptds.pileup = (d >> 24) & 0x01;
			ptds.strip = (d >> 25) & 0x7f;
			break;
		case 0x03:
			ptds.ts = d & 0x3fff;
			ptds.adc = (d >> 13) & 0xffe; 
			ptds.overflow = -1;
			ptds.pileup = -1;
			ptds.strip = (d >> 25) & 0x7f;
			break;
		default:
			ptds.ts = -1;
			ptds.adc = -1;
			ptds.overflow = -1;
			ptds.pileup = -1;
			ptds.strip = 0;
			break;
	}
	return ptds;
}
Bool_t HPionTrackerTrb3Unpacker::fillRaw(const ptdataset& ptds)
{
	return fillRaw(ptds.strip, ptds.ts, ptds.adc, ptds.pileup, ptds.overflow);
}
Bool_t HPionTrackerTrb3Unpacker::fillRaw (Int_t channel, Float_t time, Float_t charge, Char_t pileup, Char_t overflow)
{
	
	if (pTrbBoard)
	{
		HPionTrackerTrb3LookupChan * ch = pTrbBoard->getChannel (channel);
		ch->getAddress (loc[0], loc[1]);
		if (loc[0] >= 0)
		{
			HPionTrackerRaw * pRaw = (HPionTrackerRaw *) pRawCat->getObject (loc);
			if (!pRaw)
			{
				pRaw = (HPionTrackerRaw *) pRawCat->getSlot (loc);
				if (pRaw)
				{
					pRaw = new (pRaw) HPionTrackerRaw;
					pRaw->setAddress (loc[0], loc[1]);
				}
				else
				{
					Warning ("HPionTrackerTrb3Unpacker::execute()",
							 "Can't get slot mod=%i, chan=%i", loc[0], loc[1]);
					return kFALSE;
				}
				
			}
			pRaw->setData (time, charge, pileup, overflow);
		}
		else
		{
			Warning ("HPionTrackerTrb3Unpacker::execute()",
					 "Not found in lookup table: TrbNetAddress=%i, channel=%i", uTrbNetAddress, channel);
		}
	}
	return kTRUE;
}
 hpiontrackertrb3unpacker.cc:1  hpiontrackertrb3unpacker.cc:2  hpiontrackertrb3unpacker.cc:3  hpiontrackertrb3unpacker.cc:4  hpiontrackertrb3unpacker.cc:5  hpiontrackertrb3unpacker.cc:6  hpiontrackertrb3unpacker.cc:7  hpiontrackertrb3unpacker.cc:8  hpiontrackertrb3unpacker.cc:9  hpiontrackertrb3unpacker.cc:10  hpiontrackertrb3unpacker.cc:11  hpiontrackertrb3unpacker.cc:12  hpiontrackertrb3unpacker.cc:13  hpiontrackertrb3unpacker.cc:14  hpiontrackertrb3unpacker.cc:15  hpiontrackertrb3unpacker.cc:16  hpiontrackertrb3unpacker.cc:17  hpiontrackertrb3unpacker.cc:18  hpiontrackertrb3unpacker.cc:19  hpiontrackertrb3unpacker.cc:20  hpiontrackertrb3unpacker.cc:21  hpiontrackertrb3unpacker.cc:22  hpiontrackertrb3unpacker.cc:23  hpiontrackertrb3unpacker.cc:24  hpiontrackertrb3unpacker.cc:25  hpiontrackertrb3unpacker.cc:26  hpiontrackertrb3unpacker.cc:27  hpiontrackertrb3unpacker.cc:28  hpiontrackertrb3unpacker.cc:29  hpiontrackertrb3unpacker.cc:30  hpiontrackertrb3unpacker.cc:31  hpiontrackertrb3unpacker.cc:32  hpiontrackertrb3unpacker.cc:33  hpiontrackertrb3unpacker.cc:34  hpiontrackertrb3unpacker.cc:35  hpiontrackertrb3unpacker.cc:36  hpiontrackertrb3unpacker.cc:37  hpiontrackertrb3unpacker.cc:38  hpiontrackertrb3unpacker.cc:39  hpiontrackertrb3unpacker.cc:40  hpiontrackertrb3unpacker.cc:41  hpiontrackertrb3unpacker.cc:42  hpiontrackertrb3unpacker.cc:43  hpiontrackertrb3unpacker.cc:44  hpiontrackertrb3unpacker.cc:45  hpiontrackertrb3unpacker.cc:46  hpiontrackertrb3unpacker.cc:47  hpiontrackertrb3unpacker.cc:48  hpiontrackertrb3unpacker.cc:49  hpiontrackertrb3unpacker.cc:50  hpiontrackertrb3unpacker.cc:51  hpiontrackertrb3unpacker.cc:52  hpiontrackertrb3unpacker.cc:53  hpiontrackertrb3unpacker.cc:54  hpiontrackertrb3unpacker.cc:55  hpiontrackertrb3unpacker.cc:56  hpiontrackertrb3unpacker.cc:57  hpiontrackertrb3unpacker.cc:58  hpiontrackertrb3unpacker.cc:59  hpiontrackertrb3unpacker.cc:60  hpiontrackertrb3unpacker.cc:61  hpiontrackertrb3unpacker.cc:62  hpiontrackertrb3unpacker.cc:63  hpiontrackertrb3unpacker.cc:64  hpiontrackertrb3unpacker.cc:65  hpiontrackertrb3unpacker.cc:66  hpiontrackertrb3unpacker.cc:67  hpiontrackertrb3unpacker.cc:68  hpiontrackertrb3unpacker.cc:69  hpiontrackertrb3unpacker.cc:70  hpiontrackertrb3unpacker.cc:71  hpiontrackertrb3unpacker.cc:72  hpiontrackertrb3unpacker.cc:73  hpiontrackertrb3unpacker.cc:74  hpiontrackertrb3unpacker.cc:75  hpiontrackertrb3unpacker.cc:76  hpiontrackertrb3unpacker.cc:77  hpiontrackertrb3unpacker.cc:78  hpiontrackertrb3unpacker.cc:79  hpiontrackertrb3unpacker.cc:80  hpiontrackertrb3unpacker.cc:81  hpiontrackertrb3unpacker.cc:82  hpiontrackertrb3unpacker.cc:83  hpiontrackertrb3unpacker.cc:84  hpiontrackertrb3unpacker.cc:85  hpiontrackertrb3unpacker.cc:86  hpiontrackertrb3unpacker.cc:87  hpiontrackertrb3unpacker.cc:88  hpiontrackertrb3unpacker.cc:89  hpiontrackertrb3unpacker.cc:90  hpiontrackertrb3unpacker.cc:91  hpiontrackertrb3unpacker.cc:92  hpiontrackertrb3unpacker.cc:93  hpiontrackertrb3unpacker.cc:94  hpiontrackertrb3unpacker.cc:95  hpiontrackertrb3unpacker.cc:96  hpiontrackertrb3unpacker.cc:97  hpiontrackertrb3unpacker.cc:98  hpiontrackertrb3unpacker.cc:99  hpiontrackertrb3unpacker.cc:100  hpiontrackertrb3unpacker.cc:101  hpiontrackertrb3unpacker.cc:102  hpiontrackertrb3unpacker.cc:103  hpiontrackertrb3unpacker.cc:104  hpiontrackertrb3unpacker.cc:105  hpiontrackertrb3unpacker.cc:106  hpiontrackertrb3unpacker.cc:107  hpiontrackertrb3unpacker.cc:108  hpiontrackertrb3unpacker.cc:109  hpiontrackertrb3unpacker.cc:110  hpiontrackertrb3unpacker.cc:111  hpiontrackertrb3unpacker.cc:112  hpiontrackertrb3unpacker.cc:113  hpiontrackertrb3unpacker.cc:114  hpiontrackertrb3unpacker.cc:115  hpiontrackertrb3unpacker.cc:116  hpiontrackertrb3unpacker.cc:117  hpiontrackertrb3unpacker.cc:118  hpiontrackertrb3unpacker.cc:119  hpiontrackertrb3unpacker.cc:120  hpiontrackertrb3unpacker.cc:121  hpiontrackertrb3unpacker.cc:122  hpiontrackertrb3unpacker.cc:123  hpiontrackertrb3unpacker.cc:124  hpiontrackertrb3unpacker.cc:125  hpiontrackertrb3unpacker.cc:126  hpiontrackertrb3unpacker.cc:127  hpiontrackertrb3unpacker.cc:128  hpiontrackertrb3unpacker.cc:129  hpiontrackertrb3unpacker.cc:130  hpiontrackertrb3unpacker.cc:131  hpiontrackertrb3unpacker.cc:132  hpiontrackertrb3unpacker.cc:133  hpiontrackertrb3unpacker.cc:134  hpiontrackertrb3unpacker.cc:135  hpiontrackertrb3unpacker.cc:136  hpiontrackertrb3unpacker.cc:137  hpiontrackertrb3unpacker.cc:138  hpiontrackertrb3unpacker.cc:139  hpiontrackertrb3unpacker.cc:140  hpiontrackertrb3unpacker.cc:141  hpiontrackertrb3unpacker.cc:142  hpiontrackertrb3unpacker.cc:143  hpiontrackertrb3unpacker.cc:144  hpiontrackertrb3unpacker.cc:145  hpiontrackertrb3unpacker.cc:146  hpiontrackertrb3unpacker.cc:147  hpiontrackertrb3unpacker.cc:148  hpiontrackertrb3unpacker.cc:149  hpiontrackertrb3unpacker.cc:150  hpiontrackertrb3unpacker.cc:151  hpiontrackertrb3unpacker.cc:152  hpiontrackertrb3unpacker.cc:153  hpiontrackertrb3unpacker.cc:154  hpiontrackertrb3unpacker.cc:155  hpiontrackertrb3unpacker.cc:156  hpiontrackertrb3unpacker.cc:157  hpiontrackertrb3unpacker.cc:158  hpiontrackertrb3unpacker.cc:159  hpiontrackertrb3unpacker.cc:160  hpiontrackertrb3unpacker.cc:161  hpiontrackertrb3unpacker.cc:162  hpiontrackertrb3unpacker.cc:163  hpiontrackertrb3unpacker.cc:164  hpiontrackertrb3unpacker.cc:165  hpiontrackertrb3unpacker.cc:166  hpiontrackertrb3unpacker.cc:167  hpiontrackertrb3unpacker.cc:168  hpiontrackertrb3unpacker.cc:169  hpiontrackertrb3unpacker.cc:170  hpiontrackertrb3unpacker.cc:171  hpiontrackertrb3unpacker.cc:172  hpiontrackertrb3unpacker.cc:173  hpiontrackertrb3unpacker.cc:174  hpiontrackertrb3unpacker.cc:175  hpiontrackertrb3unpacker.cc:176  hpiontrackertrb3unpacker.cc:177  hpiontrackertrb3unpacker.cc:178  hpiontrackertrb3unpacker.cc:179  hpiontrackertrb3unpacker.cc:180  hpiontrackertrb3unpacker.cc:181  hpiontrackertrb3unpacker.cc:182  hpiontrackertrb3unpacker.cc:183  hpiontrackertrb3unpacker.cc:184  hpiontrackertrb3unpacker.cc:185  hpiontrackertrb3unpacker.cc:186  hpiontrackertrb3unpacker.cc:187  hpiontrackertrb3unpacker.cc:188  hpiontrackertrb3unpacker.cc:189  hpiontrackertrb3unpacker.cc:190  hpiontrackertrb3unpacker.cc:191  hpiontrackertrb3unpacker.cc:192  hpiontrackertrb3unpacker.cc:193  hpiontrackertrb3unpacker.cc:194  hpiontrackertrb3unpacker.cc:195  hpiontrackertrb3unpacker.cc:196  hpiontrackertrb3unpacker.cc:197  hpiontrackertrb3unpacker.cc:198  hpiontrackertrb3unpacker.cc:199  hpiontrackertrb3unpacker.cc:200  hpiontrackertrb3unpacker.cc:201  hpiontrackertrb3unpacker.cc:202  hpiontrackertrb3unpacker.cc:203  hpiontrackertrb3unpacker.cc:204  hpiontrackertrb3unpacker.cc:205  hpiontrackertrb3unpacker.cc:206  hpiontrackertrb3unpacker.cc:207  hpiontrackertrb3unpacker.cc:208  hpiontrackertrb3unpacker.cc:209  hpiontrackertrb3unpacker.cc:210  hpiontrackertrb3unpacker.cc:211  hpiontrackertrb3unpacker.cc:212  hpiontrackertrb3unpacker.cc:213  hpiontrackertrb3unpacker.cc:214  hpiontrackertrb3unpacker.cc:215  hpiontrackertrb3unpacker.cc:216  hpiontrackertrb3unpacker.cc:217  hpiontrackertrb3unpacker.cc:218  hpiontrackertrb3unpacker.cc:219  hpiontrackertrb3unpacker.cc:220  hpiontrackertrb3unpacker.cc:221  hpiontrackertrb3unpacker.cc:222  hpiontrackertrb3unpacker.cc:223  hpiontrackertrb3unpacker.cc:224  hpiontrackertrb3unpacker.cc:225  hpiontrackertrb3unpacker.cc:226  hpiontrackertrb3unpacker.cc:227  hpiontrackertrb3unpacker.cc:228  hpiontrackertrb3unpacker.cc:229  hpiontrackertrb3unpacker.cc:230  hpiontrackertrb3unpacker.cc:231  hpiontrackertrb3unpacker.cc:232  hpiontrackertrb3unpacker.cc:233  hpiontrackertrb3unpacker.cc:234  hpiontrackertrb3unpacker.cc:235  hpiontrackertrb3unpacker.cc:236  hpiontrackertrb3unpacker.cc:237  hpiontrackertrb3unpacker.cc:238  hpiontrackertrb3unpacker.cc:239  hpiontrackertrb3unpacker.cc:240  hpiontrackertrb3unpacker.cc:241  hpiontrackertrb3unpacker.cc:242  hpiontrackertrb3unpacker.cc:243  hpiontrackertrb3unpacker.cc:244  hpiontrackertrb3unpacker.cc:245  hpiontrackertrb3unpacker.cc:246  hpiontrackertrb3unpacker.cc:247  hpiontrackertrb3unpacker.cc:248  hpiontrackertrb3unpacker.cc:249  hpiontrackertrb3unpacker.cc:250  hpiontrackertrb3unpacker.cc:251  hpiontrackertrb3unpacker.cc:252  hpiontrackertrb3unpacker.cc:253  hpiontrackertrb3unpacker.cc:254  hpiontrackertrb3unpacker.cc:255  hpiontrackertrb3unpacker.cc:256  hpiontrackertrb3unpacker.cc:257  hpiontrackertrb3unpacker.cc:258  hpiontrackertrb3unpacker.cc:259  hpiontrackertrb3unpacker.cc:260  hpiontrackertrb3unpacker.cc:261  hpiontrackertrb3unpacker.cc:262  hpiontrackertrb3unpacker.cc:263  hpiontrackertrb3unpacker.cc:264  hpiontrackertrb3unpacker.cc:265  hpiontrackertrb3unpacker.cc:266  hpiontrackertrb3unpacker.cc:267  hpiontrackertrb3unpacker.cc:268  hpiontrackertrb3unpacker.cc:269  hpiontrackertrb3unpacker.cc:270  hpiontrackertrb3unpacker.cc:271  hpiontrackertrb3unpacker.cc:272  hpiontrackertrb3unpacker.cc:273  hpiontrackertrb3unpacker.cc:274  hpiontrackertrb3unpacker.cc:275  hpiontrackertrb3unpacker.cc:276  hpiontrackertrb3unpacker.cc:277  hpiontrackertrb3unpacker.cc:278  hpiontrackertrb3unpacker.cc:279  hpiontrackertrb3unpacker.cc:280  hpiontrackertrb3unpacker.cc:281  hpiontrackertrb3unpacker.cc:282  hpiontrackertrb3unpacker.cc:283  hpiontrackertrb3unpacker.cc:284  hpiontrackertrb3unpacker.cc:285  hpiontrackertrb3unpacker.cc:286  hpiontrackertrb3unpacker.cc:287  hpiontrackertrb3unpacker.cc:288  hpiontrackertrb3unpacker.cc:289  hpiontrackertrb3unpacker.cc:290  hpiontrackertrb3unpacker.cc:291  hpiontrackertrb3unpacker.cc:292  hpiontrackertrb3unpacker.cc:293  hpiontrackertrb3unpacker.cc:294  hpiontrackertrb3unpacker.cc:295  hpiontrackertrb3unpacker.cc:296  hpiontrackertrb3unpacker.cc:297  hpiontrackertrb3unpacker.cc:298  hpiontrackertrb3unpacker.cc:299  hpiontrackertrb3unpacker.cc:300  hpiontrackertrb3unpacker.cc:301  hpiontrackertrb3unpacker.cc:302  hpiontrackertrb3unpacker.cc:303  hpiontrackertrb3unpacker.cc:304  hpiontrackertrb3unpacker.cc:305  hpiontrackertrb3unpacker.cc:306  hpiontrackertrb3unpacker.cc:307  hpiontrackertrb3unpacker.cc:308  hpiontrackertrb3unpacker.cc:309  hpiontrackertrb3unpacker.cc:310  hpiontrackertrb3unpacker.cc:311  hpiontrackertrb3unpacker.cc:312  hpiontrackertrb3unpacker.cc:313  hpiontrackertrb3unpacker.cc:314  hpiontrackertrb3unpacker.cc:315  hpiontrackertrb3unpacker.cc:316  hpiontrackertrb3unpacker.cc:317  hpiontrackertrb3unpacker.cc:318  hpiontrackertrb3unpacker.cc:319  hpiontrackertrb3unpacker.cc:320  hpiontrackertrb3unpacker.cc:321  hpiontrackertrb3unpacker.cc:322  hpiontrackertrb3unpacker.cc:323  hpiontrackertrb3unpacker.cc:324  hpiontrackertrb3unpacker.cc:325  hpiontrackertrb3unpacker.cc:326  hpiontrackertrb3unpacker.cc:327  hpiontrackertrb3unpacker.cc:328  hpiontrackertrb3unpacker.cc:329  hpiontrackertrb3unpacker.cc:330  hpiontrackertrb3unpacker.cc:331  hpiontrackertrb3unpacker.cc:332  hpiontrackertrb3unpacker.cc:333  hpiontrackertrb3unpacker.cc:334  hpiontrackertrb3unpacker.cc:335  hpiontrackertrb3unpacker.cc:336  hpiontrackertrb3unpacker.cc:337  hpiontrackertrb3unpacker.cc:338  hpiontrackertrb3unpacker.cc:339  hpiontrackertrb3unpacker.cc:340  hpiontrackertrb3unpacker.cc:341  hpiontrackertrb3unpacker.cc:342  hpiontrackertrb3unpacker.cc:343  hpiontrackertrb3unpacker.cc:344  hpiontrackertrb3unpacker.cc:345  hpiontrackertrb3unpacker.cc:346  hpiontrackertrb3unpacker.cc:347  hpiontrackertrb3unpacker.cc:348  hpiontrackertrb3unpacker.cc:349  hpiontrackertrb3unpacker.cc:350  hpiontrackertrb3unpacker.cc:351  hpiontrackertrb3unpacker.cc:352  hpiontrackertrb3unpacker.cc:353  hpiontrackertrb3unpacker.cc:354  hpiontrackertrb3unpacker.cc:355  hpiontrackertrb3unpacker.cc:356  hpiontrackertrb3unpacker.cc:357  hpiontrackertrb3unpacker.cc:358  hpiontrackertrb3unpacker.cc:359  hpiontrackertrb3unpacker.cc:360  hpiontrackertrb3unpacker.cc:361  hpiontrackertrb3unpacker.cc:362  hpiontrackertrb3unpacker.cc:363  hpiontrackertrb3unpacker.cc:364