using namespace std;
#include "hpiontrackerhitfpar.h"
#include "hades.h"
#include "hspectrometer.h"
#include "hpiontrackerdetector.h"
#include "hparamlist.h"
#include <iostream>
ClassImp (HPionTrackerHitFPar)
HPionTrackerHitFPar::HPionTrackerHitFPar (const Char_t * name, const Char_t * title, const Char_t * context)
	: HParCond (name, title, context)
{
	clear();
}
void HPionTrackerHitFPar::clear()
{
	
	numModules = 0;
	fTimeWindowOffset.Reset();
	fTimeWindowWidth.Reset();
	fChargeThresh.Reset();
	fClusterDistX.Reset();
	fClusterDistT.Reset();
	fClusterThresh.Reset();
	numPlanes = 0;
	fPlanePair.Reset();
	fHitMatchTimeC.Reset();
	fHitMatchTimeW.Reset();
	fHitMatchChargeC.Reset();
	fHitMatchChargeW.Reset();
}
void HPionTrackerHitFPar::putParams (HParamList * l)
{
	
	if (!l) return;
	l->add ("numModules",      numModules);
	l->add ("fTimeWindowOffset", fTimeWindowOffset);
	l->add ("fTimeWindowWidth", fTimeWindowWidth);
	l->add ("fChargeThresh", fChargeThresh);
	l->add ("fClusterDistX", fClusterDistX);
	l->add ("fClusterDistT", fClusterDistT);
	l->add ("fClusterThresh", fClusterThresh);
	l->add ("numPlanes", numPlanes);
	l->add ("fPlanePair", fPlanePair);
	l->add ("fHitMatchTimeC", fHitMatchTimeC);
	l->add ("fHitMatchTimeW", fHitMatchTimeW);
	l->add ("fHitMatchChargeC", fHitMatchChargeC);
	l->add ("fHitMatchChargeW", fHitMatchChargeW);
}
Bool_t HPionTrackerHitFPar::getParams (HParamList * l)
{
	
	if (!l) return kFALSE;
	Int_t n = 0;
	if (!l->fill ("numModules", &n)) return kFALSE;
	setNumModules (n);
	if (!getParam(l, "fTimeWindowOffset", &fTimeWindowOffset, numModules)) return kFALSE;
	if (!getParam(l, "fTimeWindowWidth", &fTimeWindowWidth, numModules)) return kFALSE;
	if (!getParam(l, "fChargeThresh", &fChargeThresh, numModules)) return kFALSE;
	if (!getParam(l, "fClusterDistX", &fClusterDistX, numModules)) return kFALSE;
	if (!getParam(l, "fClusterDistT", &fClusterDistT, numModules)) return kFALSE;
	if (!getParam(l, "fClusterThresh", &fClusterThresh, numModules)) return kFALSE;
	if (!l->fill ("numPlanes", &n)) return kFALSE;
	setNumPlanes (n);
	if (!getParam(l, "fPlanePair", &fPlanePair, numPlanes*2)) return kFALSE;
	if (!getParam(l, "fHitMatchTimeC", &fHitMatchTimeC, numPlanes)) return kFALSE;
	if (!getParam(l, "fHitMatchTimeW", &fHitMatchTimeW, numPlanes)) return kFALSE;
	if (!getParam(l, "fHitMatchChargeC", &fHitMatchChargeC, numPlanes)) return kFALSE;
	if (!getParam(l, "fHitMatchChargeW", &fHitMatchChargeW, numPlanes)) return kFALSE;
	return kTRUE;
}
Bool_t HPionTrackerHitFPar::getParam(HParamList * l, const char* name, TArrayI* arr, Int_t size)
{
	if (!l->fill (name, arr)) return kFALSE;
	if (size != arr->GetSize())
	{
		Error ("HPionTrackerHitFPar::getParam(HParamList *, const char *, TArray *)",
			   "Number of modules does not match array size of %s", name);
		return kFALSE;
	}
	return kTRUE;
}
Bool_t HPionTrackerHitFPar::getParam(HParamList * l, const char* name, TArrayF* arr, Int_t size)
{
	if (!l->fill (name, arr)) return kFALSE;
	if (size != arr->GetSize())
	{
		Error ("HPionTrackerHitFPar::getParam(HParamList *, const char *, TArray *)",
			   "Number of modules does not match array size of %s", name);
		return kFALSE;
	}
	return kTRUE;
}
Float_t HPionTrackerHitFPar::getTimeWindowOffset (const Int_t m) const
{
	if (m >= 0 && m < numModules) return fTimeWindowOffset.At (m);
	else return 0;
}
Float_t HPionTrackerHitFPar::getTimeWindowWidth (const Int_t m) const
{
	if (m >= 0 && m < numModules) return fTimeWindowWidth.At (m);
	else return 0;
}
Float_t HPionTrackerHitFPar::getChargeThresh(const Int_t m) const
{
	if (m >= 0 && m < numModules) return fChargeThresh.At (m);
	else return 0;
}
Float_t HPionTrackerHitFPar::getClusterDistX(const Int_t m) const
{
	if (m >= 0 && m < numModules) return fClusterDistX.At (m);
	else return 0;
}
Float_t HPionTrackerHitFPar::getClusterDistT(const Int_t m) const
{
	if (m >= 0 && m < numModules) return fClusterDistT.At (m);
	else return 0;
}
Float_t HPionTrackerHitFPar::getClusterThresh(const Int_t m) const
{
	if (m >= 0 && m < numModules) return fClusterThresh.At (m);
	else return 0;
}
void HPionTrackerHitFPar::getPlanePair (const Int_t m, Int_t & x, Int_t & y) const
{
	if (m >= 0 && m < numPlanes)
	{
		x = fPlanePair.At (m*2);
		y = fPlanePair.At (m*2+1);
	}
	else
	{
		x = 0;
		y = 0;
	}
}
Int_t HPionTrackerHitFPar::getPlaneX(const Int_t m) const
{
	if (m >= 0 && m < numPlanes) return fPlanePair.At (m*2);
	else return 0;
}
Int_t HPionTrackerHitFPar::getPlaneY(const Int_t m) const
{
	if (m >= 0 && m < numPlanes) return fPlanePair.At (m*2+1);
	else return 0;
}
Float_t HPionTrackerHitFPar::getHitMatchTimeC(const Int_t m) const
{
	if (m >= 0 && m < numPlanes) return fHitMatchTimeC.At (m);
	else return 0;
}
Float_t HPionTrackerHitFPar::getHitMatchTimeW(const Int_t m) const
{
	if (m >= 0 && m < numPlanes) return fHitMatchTimeW.At (m);
	else return 0;
}
Float_t HPionTrackerHitFPar::getHitMatchChargeC(const Int_t m) const
{
	if (m >= 0 && m < numPlanes) return fHitMatchChargeC.At (m);
	else return 0;
}
Float_t HPionTrackerHitFPar::getHitMatchChargeW(const Int_t m) const
{
	if (m >= 0 && m < numPlanes) return fHitMatchChargeW.At (m);
	else return 0;
}
Bool_t HPionTrackerHitFPar::setNumModules (const Int_t nMod)
{
	if (nMod > 0)
	{
		Int_t maxModules = 0;
		HPionTrackerDetector * pDet = (HPionTrackerDetector *) gHades->getSetup()->getDetector ("PionTracker");
		if (pDet) maxModules = pDet->getMaxModInSetup();
		if (nMod >= maxModules)
		{
			numModules = nMod;
			return kTRUE;
		}
		else
		{
			Error ("HPionTrackerHitFPar::setNumModules(const Int_t nMod)",
				   "Number of modules smaller than number of active modules in the setup");
			return kFALSE;
		}
	}
	Error ("HPionTrackerHitFPar::setNumModules(const Int_t nMod)", "nMod must be larger than 0");
	return kFALSE;
}
void HPionTrackerHitFPar::setNumPlanes (const Int_t nPlanes)
{
	numPlanes = nPlanes;
}
void HPionTrackerHitFPar::setTimeWindowOffset (const Int_t m, const Float_t v)
{
	if (numModules > 0 && fTimeWindowOffset.GetSize() == 0)
	{
		fTimeWindowOffset.Set (numModules);
	}
	fTimeWindowOffset.SetAt (v, m);
}
void HPionTrackerHitFPar::setTimeWindowWidth (const Int_t m, const Float_t v)
{
	if (numModules > 0 && fTimeWindowWidth.GetSize() == 0)
	{
		fTimeWindowWidth.Set (numModules);
	}
	fTimeWindowWidth.SetAt (v, m);
}
void HPionTrackerHitFPar::setChargeThresh (const Int_t m, const Float_t v)
{
	if (numModules > 0 && fChargeThresh.GetSize() == 0)
	{
		fChargeThresh.Set (numModules);
	}
	fChargeThresh.SetAt (v, m);
}
void HPionTrackerHitFPar::setClusterDistX(const Int_t m, const Float_t v)
{
	if (numModules > 0 && fClusterDistX.GetSize() == 0)
	{
		fClusterDistX.Set (numModules);
	}
	fClusterDistX.SetAt (v, m);
}
void HPionTrackerHitFPar::setClusterDistT(const Int_t m, const Float_t v)
{
	if (numModules > 0 && fClusterDistT.GetSize() == 0)
	{
		fClusterDistT.Set (numModules);
	}
	fClusterDistT.SetAt (v, m);
}
void HPionTrackerHitFPar::setClusterThresh(const Int_t m, const Float_t v)
{
	if (numModules > 0 && fClusterThresh.GetSize() == 0)
	{
		fClusterThresh.Set (numModules);
	}
	fClusterThresh.SetAt (v, m);
}
void HPionTrackerHitFPar::setPlanePair (const Int_t m, const Int_t x, Int_t y)
{
	if (numPlanes > 0 && fPlanePair.GetSize() == 0)
	{
		fPlanePair.Set (numPlanes);
	}
	fPlanePair.SetAt (x, m*2);
	fPlanePair.SetAt (y, m*2+1);
}
void HPionTrackerHitFPar::setHitMatchTime(const Int_t m , const Float_t c, const Float_t w)
{
	if (numModules > 0 && fHitMatchTimeC.GetSize() == 0)
	{
		fHitMatchTimeC.Set (numPlanes);
		fHitMatchTimeW.Set (numPlanes);
	}
	fHitMatchTimeC.SetAt (c, m);
	fHitMatchTimeW.SetAt (w, m);
}
void HPionTrackerHitFPar::setHitMatchCharge(const Int_t m, const Float_t c, const Float_t w)
{
	if (numModules > 0 && fHitMatchChargeC.GetSize() == 0)
	{
		fHitMatchChargeC.Set (numPlanes);
		fHitMatchChargeW.Set (numPlanes);
	}
	fHitMatchChargeC.SetAt (c, m);
	fHitMatchChargeW.SetAt (w, m);
}
 hpiontrackerhitfpar.cc:10  hpiontrackerhitfpar.cc:11  hpiontrackerhitfpar.cc:12  hpiontrackerhitfpar.cc:13  hpiontrackerhitfpar.cc:14  hpiontrackerhitfpar.cc:15  hpiontrackerhitfpar.cc:16  hpiontrackerhitfpar.cc:17  hpiontrackerhitfpar.cc:18  hpiontrackerhitfpar.cc:19  hpiontrackerhitfpar.cc:20  hpiontrackerhitfpar.cc:21  hpiontrackerhitfpar.cc:22  hpiontrackerhitfpar.cc:23  hpiontrackerhitfpar.cc:24  hpiontrackerhitfpar.cc:25  hpiontrackerhitfpar.cc:26  hpiontrackerhitfpar.cc:27  hpiontrackerhitfpar.cc:28  hpiontrackerhitfpar.cc:29  hpiontrackerhitfpar.cc:30  hpiontrackerhitfpar.cc:31  hpiontrackerhitfpar.cc:32  hpiontrackerhitfpar.cc:33  hpiontrackerhitfpar.cc:34  hpiontrackerhitfpar.cc:35  hpiontrackerhitfpar.cc:36  hpiontrackerhitfpar.cc:37  hpiontrackerhitfpar.cc:38  hpiontrackerhitfpar.cc:39  hpiontrackerhitfpar.cc:40  hpiontrackerhitfpar.cc:41  hpiontrackerhitfpar.cc:42  hpiontrackerhitfpar.cc:43  hpiontrackerhitfpar.cc:44  hpiontrackerhitfpar.cc:45  hpiontrackerhitfpar.cc:46  hpiontrackerhitfpar.cc:47  hpiontrackerhitfpar.cc:48  hpiontrackerhitfpar.cc:49  hpiontrackerhitfpar.cc:50  hpiontrackerhitfpar.cc:51  hpiontrackerhitfpar.cc:52  hpiontrackerhitfpar.cc:53  hpiontrackerhitfpar.cc:54  hpiontrackerhitfpar.cc:55  hpiontrackerhitfpar.cc:56  hpiontrackerhitfpar.cc:57  hpiontrackerhitfpar.cc:58  hpiontrackerhitfpar.cc:59  hpiontrackerhitfpar.cc:60  hpiontrackerhitfpar.cc:61  hpiontrackerhitfpar.cc:62  hpiontrackerhitfpar.cc:63  hpiontrackerhitfpar.cc:64  hpiontrackerhitfpar.cc:65  hpiontrackerhitfpar.cc:66  hpiontrackerhitfpar.cc:67  hpiontrackerhitfpar.cc:68  hpiontrackerhitfpar.cc:69  hpiontrackerhitfpar.cc:70  hpiontrackerhitfpar.cc:71  hpiontrackerhitfpar.cc:72  hpiontrackerhitfpar.cc:73  hpiontrackerhitfpar.cc:74  hpiontrackerhitfpar.cc:75  hpiontrackerhitfpar.cc:76  hpiontrackerhitfpar.cc:77  hpiontrackerhitfpar.cc:78  hpiontrackerhitfpar.cc:79  hpiontrackerhitfpar.cc:80  hpiontrackerhitfpar.cc:81  hpiontrackerhitfpar.cc:82  hpiontrackerhitfpar.cc:83  hpiontrackerhitfpar.cc:84  hpiontrackerhitfpar.cc:85  hpiontrackerhitfpar.cc:86  hpiontrackerhitfpar.cc:87  hpiontrackerhitfpar.cc:88  hpiontrackerhitfpar.cc:89  hpiontrackerhitfpar.cc:90  hpiontrackerhitfpar.cc:91  hpiontrackerhitfpar.cc:92  hpiontrackerhitfpar.cc:93  hpiontrackerhitfpar.cc:94  hpiontrackerhitfpar.cc:95  hpiontrackerhitfpar.cc:96  hpiontrackerhitfpar.cc:97  hpiontrackerhitfpar.cc:98  hpiontrackerhitfpar.cc:99  hpiontrackerhitfpar.cc:100  hpiontrackerhitfpar.cc:101  hpiontrackerhitfpar.cc:102  hpiontrackerhitfpar.cc:103  hpiontrackerhitfpar.cc:104  hpiontrackerhitfpar.cc:105  hpiontrackerhitfpar.cc:106  hpiontrackerhitfpar.cc:107  hpiontrackerhitfpar.cc:108  hpiontrackerhitfpar.cc:109  hpiontrackerhitfpar.cc:110  hpiontrackerhitfpar.cc:111  hpiontrackerhitfpar.cc:112  hpiontrackerhitfpar.cc:113  hpiontrackerhitfpar.cc:114  hpiontrackerhitfpar.cc:115  hpiontrackerhitfpar.cc:116  hpiontrackerhitfpar.cc:117  hpiontrackerhitfpar.cc:118  hpiontrackerhitfpar.cc:119  hpiontrackerhitfpar.cc:120  hpiontrackerhitfpar.cc:121  hpiontrackerhitfpar.cc:122  hpiontrackerhitfpar.cc:123  hpiontrackerhitfpar.cc:124  hpiontrackerhitfpar.cc:125  hpiontrackerhitfpar.cc:126  hpiontrackerhitfpar.cc:127  hpiontrackerhitfpar.cc:128  hpiontrackerhitfpar.cc:129  hpiontrackerhitfpar.cc:130  hpiontrackerhitfpar.cc:131  hpiontrackerhitfpar.cc:132  hpiontrackerhitfpar.cc:133  hpiontrackerhitfpar.cc:134  hpiontrackerhitfpar.cc:135  hpiontrackerhitfpar.cc:136  hpiontrackerhitfpar.cc:137  hpiontrackerhitfpar.cc:138  hpiontrackerhitfpar.cc:139  hpiontrackerhitfpar.cc:140  hpiontrackerhitfpar.cc:141  hpiontrackerhitfpar.cc:142  hpiontrackerhitfpar.cc:143  hpiontrackerhitfpar.cc:144  hpiontrackerhitfpar.cc:145  hpiontrackerhitfpar.cc:146  hpiontrackerhitfpar.cc:147  hpiontrackerhitfpar.cc:148  hpiontrackerhitfpar.cc:149  hpiontrackerhitfpar.cc:150  hpiontrackerhitfpar.cc:151  hpiontrackerhitfpar.cc:152  hpiontrackerhitfpar.cc:153  hpiontrackerhitfpar.cc:154  hpiontrackerhitfpar.cc:155  hpiontrackerhitfpar.cc:156  hpiontrackerhitfpar.cc:157  hpiontrackerhitfpar.cc:158  hpiontrackerhitfpar.cc:159  hpiontrackerhitfpar.cc:160  hpiontrackerhitfpar.cc:161  hpiontrackerhitfpar.cc:162  hpiontrackerhitfpar.cc:163  hpiontrackerhitfpar.cc:164  hpiontrackerhitfpar.cc:165  hpiontrackerhitfpar.cc:166  hpiontrackerhitfpar.cc:167  hpiontrackerhitfpar.cc:168  hpiontrackerhitfpar.cc:169  hpiontrackerhitfpar.cc:170  hpiontrackerhitfpar.cc:171  hpiontrackerhitfpar.cc:172  hpiontrackerhitfpar.cc:173  hpiontrackerhitfpar.cc:174  hpiontrackerhitfpar.cc:175  hpiontrackerhitfpar.cc:176  hpiontrackerhitfpar.cc:177  hpiontrackerhitfpar.cc:178  hpiontrackerhitfpar.cc:179  hpiontrackerhitfpar.cc:180  hpiontrackerhitfpar.cc:181  hpiontrackerhitfpar.cc:182  hpiontrackerhitfpar.cc:183  hpiontrackerhitfpar.cc:184  hpiontrackerhitfpar.cc:185  hpiontrackerhitfpar.cc:186  hpiontrackerhitfpar.cc:187  hpiontrackerhitfpar.cc:188  hpiontrackerhitfpar.cc:189  hpiontrackerhitfpar.cc:190  hpiontrackerhitfpar.cc:191  hpiontrackerhitfpar.cc:192  hpiontrackerhitfpar.cc:193  hpiontrackerhitfpar.cc:194  hpiontrackerhitfpar.cc:195  hpiontrackerhitfpar.cc:196  hpiontrackerhitfpar.cc:197  hpiontrackerhitfpar.cc:198  hpiontrackerhitfpar.cc:199  hpiontrackerhitfpar.cc:200  hpiontrackerhitfpar.cc:201  hpiontrackerhitfpar.cc:202  hpiontrackerhitfpar.cc:203  hpiontrackerhitfpar.cc:204  hpiontrackerhitfpar.cc:205  hpiontrackerhitfpar.cc:206  hpiontrackerhitfpar.cc:207  hpiontrackerhitfpar.cc:208  hpiontrackerhitfpar.cc:209  hpiontrackerhitfpar.cc:210  hpiontrackerhitfpar.cc:211  hpiontrackerhitfpar.cc:212  hpiontrackerhitfpar.cc:213  hpiontrackerhitfpar.cc:214  hpiontrackerhitfpar.cc:215  hpiontrackerhitfpar.cc:216  hpiontrackerhitfpar.cc:217  hpiontrackerhitfpar.cc:218  hpiontrackerhitfpar.cc:219  hpiontrackerhitfpar.cc:220  hpiontrackerhitfpar.cc:221  hpiontrackerhitfpar.cc:222  hpiontrackerhitfpar.cc:223  hpiontrackerhitfpar.cc:224  hpiontrackerhitfpar.cc:225  hpiontrackerhitfpar.cc:226  hpiontrackerhitfpar.cc:227  hpiontrackerhitfpar.cc:228  hpiontrackerhitfpar.cc:229  hpiontrackerhitfpar.cc:230  hpiontrackerhitfpar.cc:231  hpiontrackerhitfpar.cc:232  hpiontrackerhitfpar.cc:233  hpiontrackerhitfpar.cc:234  hpiontrackerhitfpar.cc:235  hpiontrackerhitfpar.cc:236  hpiontrackerhitfpar.cc:237  hpiontrackerhitfpar.cc:238  hpiontrackerhitfpar.cc:239  hpiontrackerhitfpar.cc:240  hpiontrackerhitfpar.cc:241  hpiontrackerhitfpar.cc:242  hpiontrackerhitfpar.cc:243  hpiontrackerhitfpar.cc:244  hpiontrackerhitfpar.cc:245  hpiontrackerhitfpar.cc:246  hpiontrackerhitfpar.cc:247  hpiontrackerhitfpar.cc:248  hpiontrackerhitfpar.cc:249  hpiontrackerhitfpar.cc:250  hpiontrackerhitfpar.cc:251  hpiontrackerhitfpar.cc:252  hpiontrackerhitfpar.cc:253  hpiontrackerhitfpar.cc:254  hpiontrackerhitfpar.cc:255  hpiontrackerhitfpar.cc:256  hpiontrackerhitfpar.cc:257  hpiontrackerhitfpar.cc:258  hpiontrackerhitfpar.cc:259  hpiontrackerhitfpar.cc:260  hpiontrackerhitfpar.cc:261  hpiontrackerhitfpar.cc:262  hpiontrackerhitfpar.cc:263  hpiontrackerhitfpar.cc:264  hpiontrackerhitfpar.cc:265  hpiontrackerhitfpar.cc:266  hpiontrackerhitfpar.cc:267  hpiontrackerhitfpar.cc:268  hpiontrackerhitfpar.cc:269  hpiontrackerhitfpar.cc:270  hpiontrackerhitfpar.cc:271  hpiontrackerhitfpar.cc:272  hpiontrackerhitfpar.cc:273  hpiontrackerhitfpar.cc:274  hpiontrackerhitfpar.cc:275  hpiontrackerhitfpar.cc:276  hpiontrackerhitfpar.cc:277  hpiontrackerhitfpar.cc:278  hpiontrackerhitfpar.cc:279  hpiontrackerhitfpar.cc:280  hpiontrackerhitfpar.cc:281  hpiontrackerhitfpar.cc:282  hpiontrackerhitfpar.cc:283  hpiontrackerhitfpar.cc:284  hpiontrackerhitfpar.cc:285  hpiontrackerhitfpar.cc:286  hpiontrackerhitfpar.cc:287  hpiontrackerhitfpar.cc:288  hpiontrackerhitfpar.cc:289  hpiontrackerhitfpar.cc:290  hpiontrackerhitfpar.cc:291  hpiontrackerhitfpar.cc:292  hpiontrackerhitfpar.cc:293  hpiontrackerhitfpar.cc:294  hpiontrackerhitfpar.cc:295  hpiontrackerhitfpar.cc:296  hpiontrackerhitfpar.cc:297  hpiontrackerhitfpar.cc:298  hpiontrackerhitfpar.cc:299  hpiontrackerhitfpar.cc:300  hpiontrackerhitfpar.cc:301  hpiontrackerhitfpar.cc:302  hpiontrackerhitfpar.cc:303  hpiontrackerhitfpar.cc:304  hpiontrackerhitfpar.cc:305  hpiontrackerhitfpar.cc:306  hpiontrackerhitfpar.cc:307  hpiontrackerhitfpar.cc:308  hpiontrackerhitfpar.cc:309  hpiontrackerhitfpar.cc:310  hpiontrackerhitfpar.cc:311  hpiontrackerhitfpar.cc:312  hpiontrackerhitfpar.cc:313  hpiontrackerhitfpar.cc:314  hpiontrackerhitfpar.cc:315  hpiontrackerhitfpar.cc:316  hpiontrackerhitfpar.cc:317  hpiontrackerhitfpar.cc:318  hpiontrackerhitfpar.cc:319  hpiontrackerhitfpar.cc:320  hpiontrackerhitfpar.cc:321  hpiontrackerhitfpar.cc:322  hpiontrackerhitfpar.cc:323  hpiontrackerhitfpar.cc:324  hpiontrackerhitfpar.cc:325  hpiontrackerhitfpar.cc:326  hpiontrackerhitfpar.cc:327  hpiontrackerhitfpar.cc:328