ROOT logo
//_HADES_CLASS_DESCRIPTION
//////////////////////////////////////////////////////////////////////////////
//
//  HPionTrackerCalRunPar
//
//   Container to keep mean offsets
//   for a list of runs. Speciality : This container is derived
//   from HParCond, but uses the ASCII IO write() from HPionTrackerParAsciiFileIo
//   due to formating problems.
//
//   //##################################################
//
//   HOWTO FILL the container in a macro:
//
//   HPionTrackerCalRunPar p("HPionTrackerCalRunPar_test","HPionTrackerCalRunPar_test");
//
//   HPionTrackerCalRunPars data;
//   data.setVal( 0 , 30.); // first strip offset
//   .... 7 more strips
//   data.print()
//
//   p.addRun(runID,&data,kFALSE); // set channel in macro to write to ROOT/ASCII
//   ..... more runIDs
//   p.finishRunList();  // sort the list of runIDs at the end
//                       // only needed when not reading from
//                       // ASCII, ROOT or ORACLE
//
//   //##################################################
//
//   HOWTO USE the container:
//
//   HPionTrackerCalRunPar* p = (HPionTrackerCalRunPar*)gHades->getRuntimeDb()->getContainer("PionTrackerCalRunPar");
//   HPionTrackerCalRunPars data;
//
//   Bool_t found = p->getRun(runid,&data);   // get params for a given runID
//
//   p->printParams();                        // print container content
//   p->printRun(runID);                      // print a single run
//   Bool_t ok = p->findRunID(runID);         // is this runID inside ?
//   Int_t first,last;
//   p->getRangeRunID(first,last);            // get first and last runID inside the container
//   Int_t n = p->getNRunIDs();               // get the number runIDs inside the container
//
//////////////////////////////////////////////////////////////
//
//
//////////////////////////////////////////////////////////////////////////////


#include "hparamlist.h"
#include "hpiontrackercalrunpar.h"
#include "hades.h"
#include "hruntimedb.h"
#include "hrun.h"
#include "hdetpario.h"
#include "hparasciifileio.h"
#include "hdetparasciifileio.h"
#include "hpiontrackerparasciifileio.h"



ClassImp(HPionTrackerCalRunPar)


HPionTrackerCalRunPar::HPionTrackerCalRunPar(const Char_t* name    ,
					     const Char_t* title   ,
					     const Char_t* context
					    ) : HParCond(name, title, context)
{
    fMIter = fMRunID.end();
}

HPionTrackerCalRunPar::~HPionTrackerCalRunPar()
{
    reset(1);
}

void HPionTrackerCalRunPar::clear()
{
    fMIter = fMRunID.end();
}

void HPionTrackerCalRunPar::printParams()
{
    // print the content of the container
    // in the order of all data per runID

    sort(fVRunID.begin(),fVRunID.end());

    Info("printParams()","Container: %s",GetName());

    for(UInt_t i = 0; i < fVRunID.size(); i ++ ){
	Int_t runId = fVRunID[i];
	printRun(runId);
    }
}

void HPionTrackerCalRunPar::printRun(Int_t runID)
{
    // print a single run
    map<Int_t,HPionTrackerCalRunPars*>::iterator iter = fMRunID.find(runID);
    if(iter != fMRunID.end()) {
	HPionTrackerCalRunPars* p = iter->second;
	if(p){
	    p->print(runID);
	}
    } else {
	Warning("printRun()","RunID = %i not found!",runID);
    }
}

void HPionTrackerCalRunPar::putParams(HParamList* l)
{
    if (!l) return;

    if(fVRunID.size() > 0)
    {
	sort(fVRunID.begin(),fVRunID.end());

	//-------------------------------------------------------
	// fill param list as linearized array
	Int_t npars = 8; //default

	if(fVRunID.size() > 0) {
	    map<Int_t,HPionTrackerCalRunPars*>::iterator iter = fMRunID.find(fVRunID[0]);
	    if(iter != fMRunID.end()){
		npars = iter->second->getNVals();
	    }
	}

	TArrayD arFull(fVRunID.size()*(npars+1)+1);
	arFull.SetAt(npars,0);

	for(UInt_t i = 0; i < fVRunID.size(); i ++ )
	{
	    Int_t runId = fVRunID[i];

	    map<Int_t,HPionTrackerCalRunPars*>::iterator iter = fMRunID.find(runId);
	    if(iter != fMRunID.end()){
		HPionTrackerCalRunPars* ar = iter->second;
		if(ar){
		    arFull.SetAt(runId, 0 + i*(npars+1) + 1);
		    for(Int_t j=0;j<npars;j++){
			arFull.SetAt(ar->getVal(j),j+1 + i*(npars+1) + 1);
		    }
		}
	    }
	}
	l->add("pionTrackerOffsets", arFull);

    } else {
	Warning("putParams()","No Runs contained in map!");
    }
}

Bool_t HPionTrackerCalRunPar::getParams(HParamList* l)
{
    if (!l) return kFALSE;

    TArrayD arFull;
    if (!l->fill("pionTrackerOffsets",  &arFull))  return kFALSE;

    Int_t npars = (Int_t) arFull.At(0);
    Int_t nRuns = (arFull.GetSize()-1)/(npars+1);

    for(Int_t i = 0; i < nRuns; i ++ )
    {
	Int_t runId = (Int_t) arFull.At(i*(npars+1) + 1);

	HPionTrackerCalRunPars p(npars);

	for(Int_t j = 0; j < npars; j ++){
	    p.setVal(j,arFull.At(j+1 + i*(npars+1) + 1));
	}
	addRun(runId,&p);
    }

    sort(fVRunID.begin(),fVRunID.end());

    return kTRUE;
}

Int_t HPionTrackerCalRunPar::write(HParIo* output) {
    // writes the parameter container to the output


    TString name = output->ClassName();

    if(name == "HParAsciiFileIo"){

	HDetParIo* out = output->getDetParIo("HPionTrackerParIo");
	if(out){
	    return out->write(this);
	} else {
	    Error("write()","HPionTrackerParIo not found, but needed for ASCII io write. You have to add the HPionTrackerDetector!");
	    return -1;
	}
    } else {
	HDetParIo* out = output->getDetParIo("HCondParIo");
	if(out){
	    return out->write(this);
	} else return -1;
    }
    return -1;
}

void HPionTrackerCalRunPar::putAsciiHeader(TString& b)
{
    // header information needed by HPionTrackerParAsciiFileIo::write
    b = "# PionTracker mean offsets per run\n";
}

Int_t HPionTrackerCalRunPar::write(fstream& pFile)
{
    // needed by HPionTrackerParAsciiFileIo::write
    sort(fVRunID.begin(),fVRunID.end());

    //-----------------------------------------------------
    pFile<<"pionTrackerOffsets: Double_t \\"<<endl;
    Int_t npars = 4;
    if(fVRunID.size()>0){
	map<Int_t,HPionTrackerCalRunPars*>::iterator iter = fMRunID.find(fVRunID[0]);
	HPionTrackerCalRunPars* p = iter->second;
	npars = p->getNVals();
    }
    pFile<<" "<<npars;
    for(UInt_t i = 0; i < fVRunID.size(); i ++ ){
	Int_t runID = fVRunID[i];
	pFile<<" "<<runID;
	map<Int_t,HPionTrackerCalRunPars*>::iterator iter = fMRunID.find(runID);
	if(iter != fMRunID.end()) {
	    HPionTrackerCalRunPars* p = iter->second;
	    if(p){
		for(Int_t j = 0; j < p->getNVals(); j ++){
		    pFile<<" "<<p->getVal(j);
		}
		if(i<fVRunID.size()-1) pFile<<" \\"<<endl;
		else                   pFile<<endl;
	    }
	}
    }
    //-----------------------------------------------------
    return 0;
}

Bool_t HPionTrackerCalRunPar::init(HParIo* inp,Int_t* set) {
    // intitializes the container from an input

    HRun* currentRun = gHades->getRuntimeDb()->getCurrentRun();
    Int_t runID      = currentRun->getRunId();

    Bool_t rc = kTRUE;

    if(!findRunID(runID))
    {
	HDetParIo* input = inp->getDetParIo("HCondParIo");

	rc = kFALSE;

	TString name = inp->ClassName();


	//--------------------------------------
	// clean up container : map + runid list
	reset(1);
	//--------------------------------------

	if (input) rc = input->init(this,set);

	if(rc && name == "HParAsciiFileIo"){
	    setStatic();
	}
    }

    return rc;
}



void HPionTrackerCalRunPar::getRunIDList(TArrayI* ar)
{
    // coppies the list of runIDs into the TArrayI.
    // The array will be rested before.
    sort(fVRunID.begin(),fVRunID.end());
    if(ar && fVRunID.size() > 0){
	ar->Reset();

	ar->Set(fVRunID.size());
	for(UInt_t i = 0; i < fVRunID.size(); i ++ ){
	    ar->SetAt(fVRunID[i],i);
	}
    }

}

void HPionTrackerCalRunPar::printRunIDList()
{
    Info("printRunIDList()","Container: %s",GetName());
    for(UInt_t i = 0; i < fVRunID.size(); i ++ ){
	cout<<setw(5)<<i<<" = "<<fVRunID[i]<<endl;
    }
}
Bool_t HPionTrackerCalRunPar::getRangeRunID(Int_t& first,Int_t& last)
{
    // returns the first and last runID in the container

    sort(fVRunID.begin(),fVRunID.end());

    first = -1;
    last  = -1;

    if(fVRunID.size() > 0) {
	first = fVRunID[0];
	last  = fVRunID[fVRunID.size()-1];
    }

    return kTRUE;
}

Bool_t HPionTrackerCalRunPar::findRunID(Int_t runId)
{
    // returns kTRUE if the runID exists
    if(find(fVRunID.begin(),fVRunID.end(),runId) != fVRunID.end()) return kTRUE;
    else return kFALSE;
}

void HPionTrackerCalRunPar::reset(Int_t level) {

    // empty all maps, vectors
    // of runIds and data
    // level  : 0 reset map
    //          1 reset map + runID list

    map<Int_t,HPionTrackerCalRunPars*>::iterator iter;
    for( iter = fMRunID.begin(); iter != fMRunID.end(); ++iter ) {
	HPionTrackerCalRunPars* ar = iter->second;
	delete ar;
    }
    fMRunID.clear();

    fMIter = fMRunID.end();

    if(level > 0) fVRunID.clear();

}

Bool_t HPionTrackerCalRunPar::removeRun(Int_t runID, Int_t level) {

    // remove all maps for this runID
    // level = 0 : remove Data for runID, but keep runID in list of runs
    //       = 1 (default): remove Data for runID, and runID in list of runs

    map<Int_t,HPionTrackerCalRunPars*>::iterator iter = fMRunID.find(runID);

    if(iter != fMRunID.end())
    {
	HPionTrackerCalRunPars* ar = iter->second;
	delete ar;

	fMRunID.erase( iter );

	if(level > 0){
	    vector<Int_t>::iterator iterv = find(fVRunID.begin(),fVRunID.end(),runID);
	    fVRunID.erase( iterv );
	}

	fMIter = fMRunID.end();  // iter could be invalid
    } else {
	Error("removeRun()","RunID = %i not found!",runID);
	return kFALSE;
    }

    return kTRUE;
}

Bool_t HPionTrackerCalRunPar::addRun(Int_t runID,HPionTrackerCalRunPars* data, Bool_t overwrite) {

    // return data for this run to data
    // if overwrite = kTRUE, an existing data will be overwritten (default=kFALSE)

    if(!data){
	Error("addRun()","Recieved NULL pointer for RunID = %i!",runID);
	return kFALSE;
    }
    fMIter = fMRunID.find(runID);

    if(fMIter == fMRunID.end() || (overwrite && fMIter != fMRunID.end() ) )
    {
	if(fMIter != fMRunID.end()) {
	    removeRun(runID,0); // keep runID
	} else {
	    fVRunID.push_back(runID);
	}

	HPionTrackerCalRunPars* ar = new HPionTrackerCalRunPars(data->getNVals());
	ar->copyVals(data);
	fMRunID[runID] = ar;

    } else {
	Error("addRun()","RunID = %i already exists !",runID);
	return kFALSE;
    }
    return kTRUE;
}

Bool_t HPionTrackerCalRunPar::getRun(Int_t runID,HPionTrackerCalRunPars* data) {

    // return data for this run to data
    // data in data will be overwritten!
    // if the size does not fit data will
    // be adapted

    if(!data) Error("addRun()","Recieved NULL pointer for RunID = %i!",runID);


    if(fMIter == fMRunID.end() || fMIter->first != runID) fMIter = fMRunID.find(runID);

    if(fMIter != fMRunID.end() )
    {
	HPionTrackerCalRunPars* ar = fMIter->second;

	if(data->getNVals() < ar->getNVals()) {
	    Warning("getData()","Size of HPionTrackerCalRunPars : in container %i vals, your input object %i vals ! ... Resize output object!",ar->getNVals(),data->getNVals());
	    data->setSize(ar->getNVals());
	}
	ar->getVals(data);

    } else {
	Error("getData()","RunID = %i not found !",runID);
	return kFALSE;
    }
    return kTRUE;
}

void HPionTrackerCalRunPar::finishRunList()
{
    // to be called after last addRun() call
    // needed to sort runIDs in the case
    // the container is filled by hand.
    // For standard IO from ASCII,ROOT or ORACLE
    // input not needed!
    sort(fVRunID.begin(),fVRunID.end());
}
 hpiontrackercalrunpar.cc:1
 hpiontrackercalrunpar.cc:2
 hpiontrackercalrunpar.cc:3
 hpiontrackercalrunpar.cc:4
 hpiontrackercalrunpar.cc:5
 hpiontrackercalrunpar.cc:6
 hpiontrackercalrunpar.cc:7
 hpiontrackercalrunpar.cc:8
 hpiontrackercalrunpar.cc:9
 hpiontrackercalrunpar.cc:10
 hpiontrackercalrunpar.cc:11
 hpiontrackercalrunpar.cc:12
 hpiontrackercalrunpar.cc:13
 hpiontrackercalrunpar.cc:14
 hpiontrackercalrunpar.cc:15
 hpiontrackercalrunpar.cc:16
 hpiontrackercalrunpar.cc:17
 hpiontrackercalrunpar.cc:18
 hpiontrackercalrunpar.cc:19
 hpiontrackercalrunpar.cc:20
 hpiontrackercalrunpar.cc:21
 hpiontrackercalrunpar.cc:22
 hpiontrackercalrunpar.cc:23
 hpiontrackercalrunpar.cc:24
 hpiontrackercalrunpar.cc:25
 hpiontrackercalrunpar.cc:26
 hpiontrackercalrunpar.cc:27
 hpiontrackercalrunpar.cc:28
 hpiontrackercalrunpar.cc:29
 hpiontrackercalrunpar.cc:30
 hpiontrackercalrunpar.cc:31
 hpiontrackercalrunpar.cc:32
 hpiontrackercalrunpar.cc:33
 hpiontrackercalrunpar.cc:34
 hpiontrackercalrunpar.cc:35
 hpiontrackercalrunpar.cc:36
 hpiontrackercalrunpar.cc:37
 hpiontrackercalrunpar.cc:38
 hpiontrackercalrunpar.cc:39
 hpiontrackercalrunpar.cc:40
 hpiontrackercalrunpar.cc:41
 hpiontrackercalrunpar.cc:42
 hpiontrackercalrunpar.cc:43
 hpiontrackercalrunpar.cc:44
 hpiontrackercalrunpar.cc:45
 hpiontrackercalrunpar.cc:46
 hpiontrackercalrunpar.cc:47
 hpiontrackercalrunpar.cc:48
 hpiontrackercalrunpar.cc:49
 hpiontrackercalrunpar.cc:50
 hpiontrackercalrunpar.cc:51
 hpiontrackercalrunpar.cc:52
 hpiontrackercalrunpar.cc:53
 hpiontrackercalrunpar.cc:54
 hpiontrackercalrunpar.cc:55
 hpiontrackercalrunpar.cc:56
 hpiontrackercalrunpar.cc:57
 hpiontrackercalrunpar.cc:58
 hpiontrackercalrunpar.cc:59
 hpiontrackercalrunpar.cc:60
 hpiontrackercalrunpar.cc:61
 hpiontrackercalrunpar.cc:62
 hpiontrackercalrunpar.cc:63
 hpiontrackercalrunpar.cc:64
 hpiontrackercalrunpar.cc:65
 hpiontrackercalrunpar.cc:66
 hpiontrackercalrunpar.cc:67
 hpiontrackercalrunpar.cc:68
 hpiontrackercalrunpar.cc:69
 hpiontrackercalrunpar.cc:70
 hpiontrackercalrunpar.cc:71
 hpiontrackercalrunpar.cc:72
 hpiontrackercalrunpar.cc:73
 hpiontrackercalrunpar.cc:74
 hpiontrackercalrunpar.cc:75
 hpiontrackercalrunpar.cc:76
 hpiontrackercalrunpar.cc:77
 hpiontrackercalrunpar.cc:78
 hpiontrackercalrunpar.cc:79
 hpiontrackercalrunpar.cc:80
 hpiontrackercalrunpar.cc:81
 hpiontrackercalrunpar.cc:82
 hpiontrackercalrunpar.cc:83
 hpiontrackercalrunpar.cc:84
 hpiontrackercalrunpar.cc:85
 hpiontrackercalrunpar.cc:86
 hpiontrackercalrunpar.cc:87
 hpiontrackercalrunpar.cc:88
 hpiontrackercalrunpar.cc:89
 hpiontrackercalrunpar.cc:90
 hpiontrackercalrunpar.cc:91
 hpiontrackercalrunpar.cc:92
 hpiontrackercalrunpar.cc:93
 hpiontrackercalrunpar.cc:94
 hpiontrackercalrunpar.cc:95
 hpiontrackercalrunpar.cc:96
 hpiontrackercalrunpar.cc:97
 hpiontrackercalrunpar.cc:98
 hpiontrackercalrunpar.cc:99
 hpiontrackercalrunpar.cc:100
 hpiontrackercalrunpar.cc:101
 hpiontrackercalrunpar.cc:102
 hpiontrackercalrunpar.cc:103
 hpiontrackercalrunpar.cc:104
 hpiontrackercalrunpar.cc:105
 hpiontrackercalrunpar.cc:106
 hpiontrackercalrunpar.cc:107
 hpiontrackercalrunpar.cc:108
 hpiontrackercalrunpar.cc:109
 hpiontrackercalrunpar.cc:110
 hpiontrackercalrunpar.cc:111
 hpiontrackercalrunpar.cc:112
 hpiontrackercalrunpar.cc:113
 hpiontrackercalrunpar.cc:114
 hpiontrackercalrunpar.cc:115
 hpiontrackercalrunpar.cc:116
 hpiontrackercalrunpar.cc:117
 hpiontrackercalrunpar.cc:118
 hpiontrackercalrunpar.cc:119
 hpiontrackercalrunpar.cc:120
 hpiontrackercalrunpar.cc:121
 hpiontrackercalrunpar.cc:122
 hpiontrackercalrunpar.cc:123
 hpiontrackercalrunpar.cc:124
 hpiontrackercalrunpar.cc:125
 hpiontrackercalrunpar.cc:126
 hpiontrackercalrunpar.cc:127
 hpiontrackercalrunpar.cc:128
 hpiontrackercalrunpar.cc:129
 hpiontrackercalrunpar.cc:130
 hpiontrackercalrunpar.cc:131
 hpiontrackercalrunpar.cc:132
 hpiontrackercalrunpar.cc:133
 hpiontrackercalrunpar.cc:134
 hpiontrackercalrunpar.cc:135
 hpiontrackercalrunpar.cc:136
 hpiontrackercalrunpar.cc:137
 hpiontrackercalrunpar.cc:138
 hpiontrackercalrunpar.cc:139
 hpiontrackercalrunpar.cc:140
 hpiontrackercalrunpar.cc:141
 hpiontrackercalrunpar.cc:142
 hpiontrackercalrunpar.cc:143
 hpiontrackercalrunpar.cc:144
 hpiontrackercalrunpar.cc:145
 hpiontrackercalrunpar.cc:146
 hpiontrackercalrunpar.cc:147
 hpiontrackercalrunpar.cc:148
 hpiontrackercalrunpar.cc:149
 hpiontrackercalrunpar.cc:150
 hpiontrackercalrunpar.cc:151
 hpiontrackercalrunpar.cc:152
 hpiontrackercalrunpar.cc:153
 hpiontrackercalrunpar.cc:154
 hpiontrackercalrunpar.cc:155
 hpiontrackercalrunpar.cc:156
 hpiontrackercalrunpar.cc:157
 hpiontrackercalrunpar.cc:158
 hpiontrackercalrunpar.cc:159
 hpiontrackercalrunpar.cc:160
 hpiontrackercalrunpar.cc:161
 hpiontrackercalrunpar.cc:162
 hpiontrackercalrunpar.cc:163
 hpiontrackercalrunpar.cc:164
 hpiontrackercalrunpar.cc:165
 hpiontrackercalrunpar.cc:166
 hpiontrackercalrunpar.cc:167
 hpiontrackercalrunpar.cc:168
 hpiontrackercalrunpar.cc:169
 hpiontrackercalrunpar.cc:170
 hpiontrackercalrunpar.cc:171
 hpiontrackercalrunpar.cc:172
 hpiontrackercalrunpar.cc:173
 hpiontrackercalrunpar.cc:174
 hpiontrackercalrunpar.cc:175
 hpiontrackercalrunpar.cc:176
 hpiontrackercalrunpar.cc:177
 hpiontrackercalrunpar.cc:178
 hpiontrackercalrunpar.cc:179
 hpiontrackercalrunpar.cc:180
 hpiontrackercalrunpar.cc:181
 hpiontrackercalrunpar.cc:182
 hpiontrackercalrunpar.cc:183
 hpiontrackercalrunpar.cc:184
 hpiontrackercalrunpar.cc:185
 hpiontrackercalrunpar.cc:186
 hpiontrackercalrunpar.cc:187
 hpiontrackercalrunpar.cc:188
 hpiontrackercalrunpar.cc:189
 hpiontrackercalrunpar.cc:190
 hpiontrackercalrunpar.cc:191
 hpiontrackercalrunpar.cc:192
 hpiontrackercalrunpar.cc:193
 hpiontrackercalrunpar.cc:194
 hpiontrackercalrunpar.cc:195
 hpiontrackercalrunpar.cc:196
 hpiontrackercalrunpar.cc:197
 hpiontrackercalrunpar.cc:198
 hpiontrackercalrunpar.cc:199
 hpiontrackercalrunpar.cc:200
 hpiontrackercalrunpar.cc:201
 hpiontrackercalrunpar.cc:202
 hpiontrackercalrunpar.cc:203
 hpiontrackercalrunpar.cc:204
 hpiontrackercalrunpar.cc:205
 hpiontrackercalrunpar.cc:206
 hpiontrackercalrunpar.cc:207
 hpiontrackercalrunpar.cc:208
 hpiontrackercalrunpar.cc:209
 hpiontrackercalrunpar.cc:210
 hpiontrackercalrunpar.cc:211
 hpiontrackercalrunpar.cc:212
 hpiontrackercalrunpar.cc:213
 hpiontrackercalrunpar.cc:214
 hpiontrackercalrunpar.cc:215
 hpiontrackercalrunpar.cc:216
 hpiontrackercalrunpar.cc:217
 hpiontrackercalrunpar.cc:218
 hpiontrackercalrunpar.cc:219
 hpiontrackercalrunpar.cc:220
 hpiontrackercalrunpar.cc:221
 hpiontrackercalrunpar.cc:222
 hpiontrackercalrunpar.cc:223
 hpiontrackercalrunpar.cc:224
 hpiontrackercalrunpar.cc:225
 hpiontrackercalrunpar.cc:226
 hpiontrackercalrunpar.cc:227
 hpiontrackercalrunpar.cc:228
 hpiontrackercalrunpar.cc:229
 hpiontrackercalrunpar.cc:230
 hpiontrackercalrunpar.cc:231
 hpiontrackercalrunpar.cc:232
 hpiontrackercalrunpar.cc:233
 hpiontrackercalrunpar.cc:234
 hpiontrackercalrunpar.cc:235
 hpiontrackercalrunpar.cc:236
 hpiontrackercalrunpar.cc:237
 hpiontrackercalrunpar.cc:238
 hpiontrackercalrunpar.cc:239
 hpiontrackercalrunpar.cc:240
 hpiontrackercalrunpar.cc:241
 hpiontrackercalrunpar.cc:242
 hpiontrackercalrunpar.cc:243
 hpiontrackercalrunpar.cc:244
 hpiontrackercalrunpar.cc:245
 hpiontrackercalrunpar.cc:246
 hpiontrackercalrunpar.cc:247
 hpiontrackercalrunpar.cc:248
 hpiontrackercalrunpar.cc:249
 hpiontrackercalrunpar.cc:250
 hpiontrackercalrunpar.cc:251
 hpiontrackercalrunpar.cc:252
 hpiontrackercalrunpar.cc:253
 hpiontrackercalrunpar.cc:254
 hpiontrackercalrunpar.cc:255
 hpiontrackercalrunpar.cc:256
 hpiontrackercalrunpar.cc:257
 hpiontrackercalrunpar.cc:258
 hpiontrackercalrunpar.cc:259
 hpiontrackercalrunpar.cc:260
 hpiontrackercalrunpar.cc:261
 hpiontrackercalrunpar.cc:262
 hpiontrackercalrunpar.cc:263
 hpiontrackercalrunpar.cc:264
 hpiontrackercalrunpar.cc:265
 hpiontrackercalrunpar.cc:266
 hpiontrackercalrunpar.cc:267
 hpiontrackercalrunpar.cc:268
 hpiontrackercalrunpar.cc:269
 hpiontrackercalrunpar.cc:270
 hpiontrackercalrunpar.cc:271
 hpiontrackercalrunpar.cc:272
 hpiontrackercalrunpar.cc:273
 hpiontrackercalrunpar.cc:274
 hpiontrackercalrunpar.cc:275
 hpiontrackercalrunpar.cc:276
 hpiontrackercalrunpar.cc:277
 hpiontrackercalrunpar.cc:278
 hpiontrackercalrunpar.cc:279
 hpiontrackercalrunpar.cc:280
 hpiontrackercalrunpar.cc:281
 hpiontrackercalrunpar.cc:282
 hpiontrackercalrunpar.cc:283
 hpiontrackercalrunpar.cc:284
 hpiontrackercalrunpar.cc:285
 hpiontrackercalrunpar.cc:286
 hpiontrackercalrunpar.cc:287
 hpiontrackercalrunpar.cc:288
 hpiontrackercalrunpar.cc:289
 hpiontrackercalrunpar.cc:290
 hpiontrackercalrunpar.cc:291
 hpiontrackercalrunpar.cc:292
 hpiontrackercalrunpar.cc:293
 hpiontrackercalrunpar.cc:294
 hpiontrackercalrunpar.cc:295
 hpiontrackercalrunpar.cc:296
 hpiontrackercalrunpar.cc:297
 hpiontrackercalrunpar.cc:298
 hpiontrackercalrunpar.cc:299
 hpiontrackercalrunpar.cc:300
 hpiontrackercalrunpar.cc:301
 hpiontrackercalrunpar.cc:302
 hpiontrackercalrunpar.cc:303
 hpiontrackercalrunpar.cc:304
 hpiontrackercalrunpar.cc:305
 hpiontrackercalrunpar.cc:306
 hpiontrackercalrunpar.cc:307
 hpiontrackercalrunpar.cc:308
 hpiontrackercalrunpar.cc:309
 hpiontrackercalrunpar.cc:310
 hpiontrackercalrunpar.cc:311
 hpiontrackercalrunpar.cc:312
 hpiontrackercalrunpar.cc:313
 hpiontrackercalrunpar.cc:314
 hpiontrackercalrunpar.cc:315
 hpiontrackercalrunpar.cc:316
 hpiontrackercalrunpar.cc:317
 hpiontrackercalrunpar.cc:318
 hpiontrackercalrunpar.cc:319
 hpiontrackercalrunpar.cc:320
 hpiontrackercalrunpar.cc:321
 hpiontrackercalrunpar.cc:322
 hpiontrackercalrunpar.cc:323
 hpiontrackercalrunpar.cc:324
 hpiontrackercalrunpar.cc:325
 hpiontrackercalrunpar.cc:326
 hpiontrackercalrunpar.cc:327
 hpiontrackercalrunpar.cc:328
 hpiontrackercalrunpar.cc:329
 hpiontrackercalrunpar.cc:330
 hpiontrackercalrunpar.cc:331
 hpiontrackercalrunpar.cc:332
 hpiontrackercalrunpar.cc:333
 hpiontrackercalrunpar.cc:334
 hpiontrackercalrunpar.cc:335
 hpiontrackercalrunpar.cc:336
 hpiontrackercalrunpar.cc:337
 hpiontrackercalrunpar.cc:338
 hpiontrackercalrunpar.cc:339
 hpiontrackercalrunpar.cc:340
 hpiontrackercalrunpar.cc:341
 hpiontrackercalrunpar.cc:342
 hpiontrackercalrunpar.cc:343
 hpiontrackercalrunpar.cc:344
 hpiontrackercalrunpar.cc:345
 hpiontrackercalrunpar.cc:346
 hpiontrackercalrunpar.cc:347
 hpiontrackercalrunpar.cc:348
 hpiontrackercalrunpar.cc:349
 hpiontrackercalrunpar.cc:350
 hpiontrackercalrunpar.cc:351
 hpiontrackercalrunpar.cc:352
 hpiontrackercalrunpar.cc:353
 hpiontrackercalrunpar.cc:354
 hpiontrackercalrunpar.cc:355
 hpiontrackercalrunpar.cc:356
 hpiontrackercalrunpar.cc:357
 hpiontrackercalrunpar.cc:358
 hpiontrackercalrunpar.cc:359
 hpiontrackercalrunpar.cc:360
 hpiontrackercalrunpar.cc:361
 hpiontrackercalrunpar.cc:362
 hpiontrackercalrunpar.cc:363
 hpiontrackercalrunpar.cc:364
 hpiontrackercalrunpar.cc:365
 hpiontrackercalrunpar.cc:366
 hpiontrackercalrunpar.cc:367
 hpiontrackercalrunpar.cc:368
 hpiontrackercalrunpar.cc:369
 hpiontrackercalrunpar.cc:370
 hpiontrackercalrunpar.cc:371
 hpiontrackercalrunpar.cc:372
 hpiontrackercalrunpar.cc:373
 hpiontrackercalrunpar.cc:374
 hpiontrackercalrunpar.cc:375
 hpiontrackercalrunpar.cc:376
 hpiontrackercalrunpar.cc:377
 hpiontrackercalrunpar.cc:378
 hpiontrackercalrunpar.cc:379
 hpiontrackercalrunpar.cc:380
 hpiontrackercalrunpar.cc:381
 hpiontrackercalrunpar.cc:382
 hpiontrackercalrunpar.cc:383
 hpiontrackercalrunpar.cc:384
 hpiontrackercalrunpar.cc:385
 hpiontrackercalrunpar.cc:386
 hpiontrackercalrunpar.cc:387
 hpiontrackercalrunpar.cc:388
 hpiontrackercalrunpar.cc:389
 hpiontrackercalrunpar.cc:390
 hpiontrackercalrunpar.cc:391
 hpiontrackercalrunpar.cc:392
 hpiontrackercalrunpar.cc:393
 hpiontrackercalrunpar.cc:394
 hpiontrackercalrunpar.cc:395
 hpiontrackercalrunpar.cc:396
 hpiontrackercalrunpar.cc:397
 hpiontrackercalrunpar.cc:398
 hpiontrackercalrunpar.cc:399
 hpiontrackercalrunpar.cc:400
 hpiontrackercalrunpar.cc:401
 hpiontrackercalrunpar.cc:402
 hpiontrackercalrunpar.cc:403
 hpiontrackercalrunpar.cc:404
 hpiontrackercalrunpar.cc:405
 hpiontrackercalrunpar.cc:406
 hpiontrackercalrunpar.cc:407
 hpiontrackercalrunpar.cc:408
 hpiontrackercalrunpar.cc:409
 hpiontrackercalrunpar.cc:410
 hpiontrackercalrunpar.cc:411
 hpiontrackercalrunpar.cc:412
 hpiontrackercalrunpar.cc:413
 hpiontrackercalrunpar.cc:414
 hpiontrackercalrunpar.cc:415
 hpiontrackercalrunpar.cc:416
 hpiontrackercalrunpar.cc:417
 hpiontrackercalrunpar.cc:418
 hpiontrackercalrunpar.cc:419
 hpiontrackercalrunpar.cc:420
 hpiontrackercalrunpar.cc:421
 hpiontrackercalrunpar.cc:422
 hpiontrackercalrunpar.cc:423
 hpiontrackercalrunpar.cc:424
 hpiontrackercalrunpar.cc:425
 hpiontrackercalrunpar.cc:426
 hpiontrackercalrunpar.cc:427
 hpiontrackercalrunpar.cc:428
 hpiontrackercalrunpar.cc:429
 hpiontrackercalrunpar.cc:430
 hpiontrackercalrunpar.cc:431
 hpiontrackercalrunpar.cc:432
 hpiontrackercalrunpar.cc:433
 hpiontrackercalrunpar.cc:434
 hpiontrackercalrunpar.cc:435
 hpiontrackercalrunpar.cc:436
 hpiontrackercalrunpar.cc:437
 hpiontrackercalrunpar.cc:438
 hpiontrackercalrunpar.cc:439
 hpiontrackercalrunpar.cc:440
 hpiontrackercalrunpar.cc:441
 hpiontrackercalrunpar.cc:442
 hpiontrackercalrunpar.cc:443