ROOT logo
//_HADES_CLASS_DESCRIPTION
///////////////////////////////////////////////////////////////////////////////
//
//  HPionTrackerRaw
//
//  Unpacked TRB raw data of the PionTracker detector using the TRB for readout
//
//  The class accepts up to 4 hits per channel, each with time and charge.
//  If the number of hits exceeds 4, the hit counter will be incremented, but
//  no data are stored for these hits.
//
///////////////////////////////////////////////////////////////////////////////

#include "hpiontrackerraw.h"

ClassImp (HPionTrackerRaw)

// Int_t HPionTrackerRaw::cnt = 0;

HPionTrackerRaw::HPionTrackerRaw() : fMultiplicity (0), fModule (-1), fStrip(-1)
{
	for (Int_t h = 0; h < fMaxMultiplicity; ++h)
	{
		fTime[h] = -1000;
		fCharge[h] = -1000;
		fPileUp[h] = -10;
		fOverflow[h] = -10;
	}
}

HPionTrackerRaw::~HPionTrackerRaw() { }

Float_t HPionTrackerRaw::getTime (const Int_t n) const
{
	if (n > (fMultiplicity+1))
	{
		Error ("getTime()", "hit number: %i out of range [0,%d]", n, fMultiplicity-1);
		return -1.F;
	}
	else
		return fTime[n];
}

Float_t HPionTrackerRaw::getCharge (const Int_t n) const
{
	if (n > (fMultiplicity+1))
	{
		Error ("getCharge()", "hit number: %i out of range [0,%d]", n, fMultiplicity-1);
		return -1.F;
	}
	else
		return fCharge[n];

}

void HPionTrackerRaw::getTimeAndCharge (const Int_t n, Float_t & time, Float_t & charge)
{
	if (n > (fMultiplicity+1))
	{
		Error ("getTimeAndCharge()", "hit number: %i out of range [0,%d]", n, fMultiplicity-1);
		time = -1.F;
		charge = -1.F;
	}
	else
	{
		time = fTime[n];
		charge = fCharge[n];
	}
}

Char_t HPionTrackerRaw::getPileup(const Int_t n) const
{
	if (n > (fMultiplicity+1))
	{
		Error ("getPileup()", "hit number: %i out of range [0,%d]", n, fMultiplicity-1);
		return -1;
	}
	else
		return fPileUp[n];
}

Char_t HPionTrackerRaw::getOverflow(const Int_t n) const
{
	if (n > (fMultiplicity+1))
	{
		Error ("getOverflow()", "hit number: %i out of range [0,%d]", n, fMultiplicity-1);
		return -1;
	}
	else
		return fOverflow[n];
}


void HPionTrackerRaw::getErrors (const Int_t n, Char_t & pileup, Char_t & overflow)
{
	if (n > (fMultiplicity+1))
	{
		Error ("getErrors()", "hit number: %i out of range [0,%d]", n, fMultiplicity-1);
		pileup = -1;
		overflow = -1;
	}
	else
	{
		pileup = fPileUp[n];
		overflow = fOverflow[n];
	}
}

Bool_t HPionTrackerRaw::setData (const Float_t time, const Float_t charge, const Char_t pileup, const Char_t overflow)
{
	if (fMultiplicity == fMaxMultiplicity)
	{
		Error ("setData()", "hit number: %i out of range [0,%d] for m=%d, s=%d", fMultiplicity+1, fMaxMultiplicity-1, fModule, fStrip);
		return kFALSE;
	}

	fTime[fMultiplicity] = time;
	fCharge[fMultiplicity] = charge;
	fPileUp[fMultiplicity] = pileup;
	fOverflow[fMultiplicity] = overflow;

	++fMultiplicity;

	return kTRUE;
}
 hpiontrackerraw.cc:1
 hpiontrackerraw.cc:2
 hpiontrackerraw.cc:3
 hpiontrackerraw.cc:4
 hpiontrackerraw.cc:5
 hpiontrackerraw.cc:6
 hpiontrackerraw.cc:7
 hpiontrackerraw.cc:8
 hpiontrackerraw.cc:9
 hpiontrackerraw.cc:10
 hpiontrackerraw.cc:11
 hpiontrackerraw.cc:12
 hpiontrackerraw.cc:13
 hpiontrackerraw.cc:14
 hpiontrackerraw.cc:15
 hpiontrackerraw.cc:16
 hpiontrackerraw.cc:17
 hpiontrackerraw.cc:18
 hpiontrackerraw.cc:19
 hpiontrackerraw.cc:20
 hpiontrackerraw.cc:21
 hpiontrackerraw.cc:22
 hpiontrackerraw.cc:23
 hpiontrackerraw.cc:24
 hpiontrackerraw.cc:25
 hpiontrackerraw.cc:26
 hpiontrackerraw.cc:27
 hpiontrackerraw.cc:28
 hpiontrackerraw.cc:29
 hpiontrackerraw.cc:30
 hpiontrackerraw.cc:31
 hpiontrackerraw.cc:32
 hpiontrackerraw.cc:33
 hpiontrackerraw.cc:34
 hpiontrackerraw.cc:35
 hpiontrackerraw.cc:36
 hpiontrackerraw.cc:37
 hpiontrackerraw.cc:38
 hpiontrackerraw.cc:39
 hpiontrackerraw.cc:40
 hpiontrackerraw.cc:41
 hpiontrackerraw.cc:42
 hpiontrackerraw.cc:43
 hpiontrackerraw.cc:44
 hpiontrackerraw.cc:45
 hpiontrackerraw.cc:46
 hpiontrackerraw.cc:47
 hpiontrackerraw.cc:48
 hpiontrackerraw.cc:49
 hpiontrackerraw.cc:50
 hpiontrackerraw.cc:51
 hpiontrackerraw.cc:52
 hpiontrackerraw.cc:53
 hpiontrackerraw.cc:54
 hpiontrackerraw.cc:55
 hpiontrackerraw.cc:56
 hpiontrackerraw.cc:57
 hpiontrackerraw.cc:58
 hpiontrackerraw.cc:59
 hpiontrackerraw.cc:60
 hpiontrackerraw.cc:61
 hpiontrackerraw.cc:62
 hpiontrackerraw.cc:63
 hpiontrackerraw.cc:64
 hpiontrackerraw.cc:65
 hpiontrackerraw.cc:66
 hpiontrackerraw.cc:67
 hpiontrackerraw.cc:68
 hpiontrackerraw.cc:69
 hpiontrackerraw.cc:70
 hpiontrackerraw.cc:71
 hpiontrackerraw.cc:72
 hpiontrackerraw.cc:73
 hpiontrackerraw.cc:74
 hpiontrackerraw.cc:75
 hpiontrackerraw.cc:76
 hpiontrackerraw.cc:77
 hpiontrackerraw.cc:78
 hpiontrackerraw.cc:79
 hpiontrackerraw.cc:80
 hpiontrackerraw.cc:81
 hpiontrackerraw.cc:82
 hpiontrackerraw.cc:83
 hpiontrackerraw.cc:84
 hpiontrackerraw.cc:85
 hpiontrackerraw.cc:86
 hpiontrackerraw.cc:87
 hpiontrackerraw.cc:88
 hpiontrackerraw.cc:89
 hpiontrackerraw.cc:90
 hpiontrackerraw.cc:91
 hpiontrackerraw.cc:92
 hpiontrackerraw.cc:93
 hpiontrackerraw.cc:94
 hpiontrackerraw.cc:95
 hpiontrackerraw.cc:96
 hpiontrackerraw.cc:97
 hpiontrackerraw.cc:98
 hpiontrackerraw.cc:99
 hpiontrackerraw.cc:100
 hpiontrackerraw.cc:101
 hpiontrackerraw.cc:102
 hpiontrackerraw.cc:103
 hpiontrackerraw.cc:104
 hpiontrackerraw.cc:105
 hpiontrackerraw.cc:106
 hpiontrackerraw.cc:107
 hpiontrackerraw.cc:108
 hpiontrackerraw.cc:109
 hpiontrackerraw.cc:110
 hpiontrackerraw.cc:111
 hpiontrackerraw.cc:112
 hpiontrackerraw.cc:113
 hpiontrackerraw.cc:114
 hpiontrackerraw.cc:115
 hpiontrackerraw.cc:116
 hpiontrackerraw.cc:117
 hpiontrackerraw.cc:118
 hpiontrackerraw.cc:119
 hpiontrackerraw.cc:120
 hpiontrackerraw.cc:121
 hpiontrackerraw.cc:122
 hpiontrackerraw.cc:123
 hpiontrackerraw.cc:124
 hpiontrackerraw.cc:125