ROOT logo
#ifndef HPIONTRACKERMOMRUNPAR_H_
#define HPIONTRACKERMOMRUNPAR_H_

#include "TArrayD.h"
#include "TArrayF.h"
#include "TArrayI.h"

#include "hparcond.h"
#include "hpario.h"
#include <map>
#include <vector>
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <fstream>

using namespace std;

class HParamList;

class HDetParAsciiFileIo;

class HPionTrackerMomRunPars : public TObject {

protected:
    Int_t   npars; // ???????
    TArrayD offsets; // ???

public:

    HPionTrackerMomRunPars(Int_t size=2) { offsets.Set(size); clear();} // size 2: max trans. value + offset
    ~HPionTrackerMomRunPars(){;}
    inline Int_t getNVals() { return offsets.GetSize(); }

    void setSize(Int_t size) { offsets.Set(size); clear(); }
    void setVal(Int_t i,Float_t val) {
	if( i >= 0 && i < getNVals()){
	    offsets[i] = val;
	} else { Error("setVal()","Index i=%i out of bounds",i);}
    }
    Float_t getVal(Int_t i) {
	if( i >= 0 && i < getNVals()){
	    return offsets[i];
	} else {
	    Error("setVal()","Index i=%i out of bounds",i);
            return 0;
	}
    }

    void copyVals(HPionTrackerMomRunPars* data){ for(Int_t i = 0; i < getNVals(); i ++) setVal(i,data->getVal(i)); }
    void getVals(HPionTrackerMomRunPars* data) { for(Int_t i = 0; i < getNVals(); i ++) data->setVal(i,offsets[i]);   }
    void print(Int_t runID = -1){

	if(runID != -1) cout<<"RunID "<<setw(10)<<runID <<" = "<<flush;
        else            cout<<" = "<<flush;

	for(Int_t i = 0; i < getNVals() ; i ++){
	    if(i == 0) cout<<setw(8)<<offsets[i]<<flush;
	    else       cout<<", "<<setw(8)<<offsets[i]<<flush;
	}
        cout<<endl;
    }
    Double_t* data()     { return &offsets[0]; }
    void      clear()    { for(Int_t i=0;i < getNVals();i++) offsets[i] = 0; }

    ClassDef(HPionTrackerMomRunPars,1)
};




class HPionTrackerMomRunPar : public HParCond {

protected:

    map<Int_t, HPionTrackerMomRunPars* > fMRunID;
    vector<Int_t>                        fVRunID;           // list of runIDs
    map<Int_t, HPionTrackerMomRunPars* >::iterator  fMIter; //! remember the current runMap

public:

    HPionTrackerMomRunPar(const Char_t* name    = "PionTrackerMomRunPar",
			  const Char_t* title   = "PionTracker Mom Parameters per run",
			  const Char_t* context = "PionTrackerMomRunParProduction");
    ~HPionTrackerMomRunPar();

    Bool_t        findRunID(Int_t runID);
    Bool_t        removeRun(Int_t runID,Int_t level=1);
    Bool_t        addRun   (Int_t runID,HPionTrackerMomRunPars* data,Bool_t overwrite=kFALSE);
    Bool_t        getRun   (Int_t runID,HPionTrackerMomRunPars* data);
    void          finishRunList();
    Bool_t        getRangeRunID(Int_t& first,Int_t& last);
    Int_t         getNRunIDs() { return fVRunID.size();}
    void          getRunIDList(TArrayI* ar=0);
    void          printRunIDList();
    void          printRun(Int_t runID);

    void          reset(Int_t level = 0);

    Bool_t        init(HParIo*, Int_t*);
    void          clear();
    void          printParams();
    void          putParams(HParamList* l);
    Bool_t        getParams(HParamList* l);
    virtual Int_t write(HParIo*);
    virtual Int_t write(fstream& pFile);
    virtual void  putAsciiHeader(TString& b);

    ClassDef(HPionTrackerMomRunPar, 1) // Container for the PionTracker momentum parameters per run
};


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