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 "hpiontrackermomrunpar.h"
#include "hades.h"
#include "hruntimedb.h"
#include "hrun.h"
#include "hdetpario.h"
#include "hparasciifileio.h"
#include "hdetparasciifileio.h"
#include "hpiontrackerparasciifileio.h"



ClassImp(HPionTrackerMomRunPar)


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

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

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

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

void HPionTrackerMomRunPar::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,HPionTrackerMomRunPars*>::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,HPionTrackerMomRunPars*>::iterator iter = fMRunID.find(runId);
	    if(iter != fMRunID.end()){
		HPionTrackerMomRunPars* 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 HPionTrackerMomRunPar::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);

	HPionTrackerMomRunPars 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 HPionTrackerMomRunPar::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 HPionTrackerMomRunPar::putAsciiHeader(TString& b)
{
    // header information needed by HPionTrackerParAsciiFileIo::write
    b = "# PionTracker max transsmission values and mean offsets per run\n";
}

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

    //-----------------------------------------------------
    pFile<<"pionTrackerMomOffsets: Double_t \\"<<endl;
    Int_t npars = 2; // max trans + mean offset value
    if(fVRunID.size()>0){
	map<Int_t,HPionTrackerMomRunPars*>::iterator iter = fMRunID.find(fVRunID[0]);
	HPionTrackerMomRunPars* 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,HPionTrackerMomRunPars*>::iterator iter = fMRunID.find(runID);
	if(iter != fMRunID.end()) {
	    HPionTrackerMomRunPars* 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 HPionTrackerMomRunPar::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 HPionTrackerMomRunPar::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 HPionTrackerMomRunPar::printRunIDList()
{
    Info("printRunIDList()","Container: %s",GetName());
    for(UInt_t i = 0; i < fVRunID.size(); i ++ ){
	cout<<setw(5)<<i<<" = "<<fVRunID[i]<<endl;
    }
}
Bool_t HPionTrackerMomRunPar::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 HPionTrackerMomRunPar::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 HPionTrackerMomRunPar::reset(Int_t level) {

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

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

    fMIter = fMRunID.end();

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

}

Bool_t HPionTrackerMomRunPar::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,HPionTrackerMomRunPars*>::iterator iter = fMRunID.find(runID);

    if(iter != fMRunID.end())
    {
	HPionTrackerMomRunPars* 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 HPionTrackerMomRunPar::addRun(Int_t runID,HPionTrackerMomRunPars* 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);
	}

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

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

Bool_t HPionTrackerMomRunPar::getRun(Int_t runID,HPionTrackerMomRunPars* 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() )
    {
	HPionTrackerMomRunPars* ar = fMIter->second;

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