ROOT logo
//_HADES_CLASS_DESCRIPTION
//////////////////////////////////////////////////////////////////
//
//  HPionTrackerDetector
//
//  Class for detector "PionTracker"
//  stores the setup in a linear array (size: maximum number
//  of modules defined in the hdef.h definition file)
//
//  Always two modules belong to the same detector
//  (even module number: front side, odd module number: back side)
//
//////////////////////////////////////////////////////////////////

#include "hpiontrackerdetector.h"
#include "hpiontrackerdef.h"
#include "hades.h"
#include "hcategory.h"
#include "hevent.h"
#include "hlinearcategory.h"
#include "hmatrixcategory.h"
#include "hpario.h"
#include "hdetpario.h"
#include "hparrootfileio.h"
#include "hpiontrackerparrootfileio.h"
#include "hparasciifileio.h"
#include "hpiontrackerparasciifileio.h"
#include "TClass.h"

using namespace std;

ClassImp (HPionTrackerDetector)

HPionTrackerDetector::HPionTrackerDetector()
{
	// constructor
	fName         = "PionTracker";
	maxModules    = PIONTRACKER_MAX_MODULES;
	maxComponents = PIONTRACKER_MAX_COMPONENTS;
	modules       = new TArrayI (maxModules);

	for (Int_t i = 0; i < maxModules; i++)
	{
		modules->AddAt (0, i);
	}
}

HPionTrackerDetector::~HPionTrackerDetector()
{
	// destructor
	if (NULL != modules)
	{
		delete modules;
		modules = NULL;
	}
}

Bool_t HPionTrackerDetector::init (void)
{
	// nothing to be done
	return kTRUE;
}

void HPionTrackerDetector::activateParIo (HParIo * io)
{
	// activates the input/output class for the parameters
	// needed by the PionTracker
	if (strcmp (io->IsA()->GetName(), "HParOraIo") == 0)
	{
		io->setDetParIo ("HPionTrackerParIo");
		return;
	}

	if (strcmp (io->IsA()->GetName(), "HParRootFileIo") == 0)
	{
		HPionTrackerParRootFileIo * p = new HPionTrackerParRootFileIo ( ( (HParRootFileIo *) io)->getParRootFile());
		io->setDetParIo (p);
	}

	if (strcmp (io->IsA()->GetName(), "HParAsciiFileIo") == 0)
	{
		HPionTrackerParAsciiFileIo * p = new HPionTrackerParAsciiFileIo ( ( (HParAsciiFileIo *) io)->getFile());
		io->setDetParIo (p);
	}
}


Bool_t HPionTrackerDetector::write (HParIo * output)
{
	// writes the PionTracker setup to output
	HDetParIo * out = output->getDetParIo ("HPionTrackerParIo");

	if (out) return out->write (this);

	return kFALSE;
}


HCategory * HPionTrackerDetector::buildMatrixCategory (const Text_t * className, Float_t fillRate)
{
	Int_t maxMod = getMaxModInSetup();

	if (maxMod == 0) return 0;

	Int_t * sizes = new Int_t[2]; // 2 levels
	sizes[0] = maxMod;
	sizes[1] = maxComponents;
	HMatrixCategory * category = new HMatrixCategory (className, 2, sizes, fillRate);
	delete [] sizes;
	return category;
}

HCategory * HPionTrackerDetector::buildLinearCategory (const Text_t * className)
{
	Int_t size = getMaxModInSetup() * maxComponents;

	if (size)
	{
		HLinearCategory * category = new HLinearCategory (className, size);
		return category;
	}

	return 0;
}

HCategory * HPionTrackerDetector::buildCategory (Cat_t cat)
{
	// gets the category if existing
	// builts and adds if not existing
	// returns the pointer to the category or zero
	HCategory * pcat;
	pcat = gHades->getCurrentEvent()->getCategory (cat);

	if (pcat) return (pcat); // already existing

	switch (cat)
	{
		case catPionTrackerRaw:
			pcat = buildMatrixCategory("HPionTrackerRaw", 0.5);
			break;

		case catPionTrackerCal:
			pcat = buildMatrixCategory("HPionTrackerCal", 0.5);
			break;

		case catPionTrackerHit:
			pcat = buildMatrixCategory("HPionTrackerHit", 0.5);
			break;

		case catPionTrackerTrack:
			pcat = buildLinearCategory("HPionTrackerTrack");
			break;

		default:
			return NULL;
	}

	if (pcat) gHades->getCurrentEvent()->addCategory (cat, pcat, "PionTracker");

	return (pcat);
}

Int_t HPionTrackerDetector::getMaxModInSetup (void)
{
	// returns the maximum number of modules in the actual setup
	Int_t maxMod = -1;

	for (Int_t i = 0; i < maxModules; i++)
	{
		if (modules->At (i)) maxMod = (i > maxMod) ? i : maxMod;
	}

	maxMod++;
	return maxMod;
}
 hpiontrackerdetector.cc:1
 hpiontrackerdetector.cc:2
 hpiontrackerdetector.cc:3
 hpiontrackerdetector.cc:4
 hpiontrackerdetector.cc:5
 hpiontrackerdetector.cc:6
 hpiontrackerdetector.cc:7
 hpiontrackerdetector.cc:8
 hpiontrackerdetector.cc:9
 hpiontrackerdetector.cc:10
 hpiontrackerdetector.cc:11
 hpiontrackerdetector.cc:12
 hpiontrackerdetector.cc:13
 hpiontrackerdetector.cc:14
 hpiontrackerdetector.cc:15
 hpiontrackerdetector.cc:16
 hpiontrackerdetector.cc:17
 hpiontrackerdetector.cc:18
 hpiontrackerdetector.cc:19
 hpiontrackerdetector.cc:20
 hpiontrackerdetector.cc:21
 hpiontrackerdetector.cc:22
 hpiontrackerdetector.cc:23
 hpiontrackerdetector.cc:24
 hpiontrackerdetector.cc:25
 hpiontrackerdetector.cc:26
 hpiontrackerdetector.cc:27
 hpiontrackerdetector.cc:28
 hpiontrackerdetector.cc:29
 hpiontrackerdetector.cc:30
 hpiontrackerdetector.cc:31
 hpiontrackerdetector.cc:32
 hpiontrackerdetector.cc:33
 hpiontrackerdetector.cc:34
 hpiontrackerdetector.cc:35
 hpiontrackerdetector.cc:36
 hpiontrackerdetector.cc:37
 hpiontrackerdetector.cc:38
 hpiontrackerdetector.cc:39
 hpiontrackerdetector.cc:40
 hpiontrackerdetector.cc:41
 hpiontrackerdetector.cc:42
 hpiontrackerdetector.cc:43
 hpiontrackerdetector.cc:44
 hpiontrackerdetector.cc:45
 hpiontrackerdetector.cc:46
 hpiontrackerdetector.cc:47
 hpiontrackerdetector.cc:48
 hpiontrackerdetector.cc:49
 hpiontrackerdetector.cc:50
 hpiontrackerdetector.cc:51
 hpiontrackerdetector.cc:52
 hpiontrackerdetector.cc:53
 hpiontrackerdetector.cc:54
 hpiontrackerdetector.cc:55
 hpiontrackerdetector.cc:56
 hpiontrackerdetector.cc:57
 hpiontrackerdetector.cc:58
 hpiontrackerdetector.cc:59
 hpiontrackerdetector.cc:60
 hpiontrackerdetector.cc:61
 hpiontrackerdetector.cc:62
 hpiontrackerdetector.cc:63
 hpiontrackerdetector.cc:64
 hpiontrackerdetector.cc:65
 hpiontrackerdetector.cc:66
 hpiontrackerdetector.cc:67
 hpiontrackerdetector.cc:68
 hpiontrackerdetector.cc:69
 hpiontrackerdetector.cc:70
 hpiontrackerdetector.cc:71
 hpiontrackerdetector.cc:72
 hpiontrackerdetector.cc:73
 hpiontrackerdetector.cc:74
 hpiontrackerdetector.cc:75
 hpiontrackerdetector.cc:76
 hpiontrackerdetector.cc:77
 hpiontrackerdetector.cc:78
 hpiontrackerdetector.cc:79
 hpiontrackerdetector.cc:80
 hpiontrackerdetector.cc:81
 hpiontrackerdetector.cc:82
 hpiontrackerdetector.cc:83
 hpiontrackerdetector.cc:84
 hpiontrackerdetector.cc:85
 hpiontrackerdetector.cc:86
 hpiontrackerdetector.cc:87
 hpiontrackerdetector.cc:88
 hpiontrackerdetector.cc:89
 hpiontrackerdetector.cc:90
 hpiontrackerdetector.cc:91
 hpiontrackerdetector.cc:92
 hpiontrackerdetector.cc:93
 hpiontrackerdetector.cc:94
 hpiontrackerdetector.cc:95
 hpiontrackerdetector.cc:96
 hpiontrackerdetector.cc:97
 hpiontrackerdetector.cc:98
 hpiontrackerdetector.cc:99
 hpiontrackerdetector.cc:100
 hpiontrackerdetector.cc:101
 hpiontrackerdetector.cc:102
 hpiontrackerdetector.cc:103
 hpiontrackerdetector.cc:104
 hpiontrackerdetector.cc:105
 hpiontrackerdetector.cc:106
 hpiontrackerdetector.cc:107
 hpiontrackerdetector.cc:108
 hpiontrackerdetector.cc:109
 hpiontrackerdetector.cc:110
 hpiontrackerdetector.cc:111
 hpiontrackerdetector.cc:112
 hpiontrackerdetector.cc:113
 hpiontrackerdetector.cc:114
 hpiontrackerdetector.cc:115
 hpiontrackerdetector.cc:116
 hpiontrackerdetector.cc:117
 hpiontrackerdetector.cc:118
 hpiontrackerdetector.cc:119
 hpiontrackerdetector.cc:120
 hpiontrackerdetector.cc:121
 hpiontrackerdetector.cc:122
 hpiontrackerdetector.cc:123
 hpiontrackerdetector.cc:124
 hpiontrackerdetector.cc:125
 hpiontrackerdetector.cc:126
 hpiontrackerdetector.cc:127
 hpiontrackerdetector.cc:128
 hpiontrackerdetector.cc:129
 hpiontrackerdetector.cc:130
 hpiontrackerdetector.cc:131
 hpiontrackerdetector.cc:132
 hpiontrackerdetector.cc:133
 hpiontrackerdetector.cc:134
 hpiontrackerdetector.cc:135
 hpiontrackerdetector.cc:136
 hpiontrackerdetector.cc:137
 hpiontrackerdetector.cc:138
 hpiontrackerdetector.cc:139
 hpiontrackerdetector.cc:140
 hpiontrackerdetector.cc:141
 hpiontrackerdetector.cc:142
 hpiontrackerdetector.cc:143
 hpiontrackerdetector.cc:144
 hpiontrackerdetector.cc:145
 hpiontrackerdetector.cc:146
 hpiontrackerdetector.cc:147
 hpiontrackerdetector.cc:148
 hpiontrackerdetector.cc:149
 hpiontrackerdetector.cc:150
 hpiontrackerdetector.cc:151
 hpiontrackerdetector.cc:152
 hpiontrackerdetector.cc:153
 hpiontrackerdetector.cc:154
 hpiontrackerdetector.cc:155
 hpiontrackerdetector.cc:156
 hpiontrackerdetector.cc:157
 hpiontrackerdetector.cc:158
 hpiontrackerdetector.cc:159
 hpiontrackerdetector.cc:160
 hpiontrackerdetector.cc:161
 hpiontrackerdetector.cc:162
 hpiontrackerdetector.cc:163
 hpiontrackerdetector.cc:164
 hpiontrackerdetector.cc:165
 hpiontrackerdetector.cc:166
 hpiontrackerdetector.cc:167
 hpiontrackerdetector.cc:168
 hpiontrackerdetector.cc:169
 hpiontrackerdetector.cc:170
 hpiontrackerdetector.cc:171
 hpiontrackerdetector.cc:172
 hpiontrackerdetector.cc:173
 hpiontrackerdetector.cc:174
 hpiontrackerdetector.cc:175