ROOT logo
#ifndef HSLOWPAR_H
#define HSLOWPAR_H

#include "hparset.h"
#include <stdio.h>
#include <map>
#include <vector>
#include <iostream>
#include <fstream>


#include "TString.h"
#include "TNamed.h"
#include "TList.h"
#include "TArrayI.h"

using namespace std;

#define NVALS 4

class HSlowChan : public TNamed {
public:
    HSlowChan(){ clear();}
    ~HSlowChan(){;}

    Double_t mean;
    Double_t rms;
    Double_t min;
    Double_t max;

    void clear(){

	mean = -1;
	rms  = -1;
	min  = -1;
	max  = -1;
    }

    void copyValues(HSlowChan* chan){
        // copy values, but not name !
	if(chan){
	    mean = chan->mean;
	    rms  = chan->rms;
	    min  = chan->min;
            max  = chan->max;
	}
    }

    void set(Double_t vals[]){

       mean = vals[0];
       rms  = vals[1];
       min  = vals[2];
       max  = vals[3];
    }
    void get(Double_t vals[]){

       vals[0] = mean;
       vals[1] = rms;
       vals[2] = min;
       vals[3] = max;
    }

    void set(Double_t Mean, Double_t Rms,Double_t Min,Double_t Max){

       mean = Mean;
       rms  = Rms;
       min  = Min;
       max  = Max;
    }

    Int_t getNValues() { return NVALS; }

    void  print(Int_t runID = -1)
    {
	if(runID !=-1) {
	    cout<< "runID "<<runID
		<<" name "<<GetName()
		<<" mean "<<mean
		<<" rms " <<rms
		<<" min " <<min
		<<" max " <<max
		<<endl;
	} else {
	    cout<<" name "<<GetName()
		<<" mean "<<mean
		<<" rms " <<rms
		<<" min " <<min
		<<" max " <<max
		<<endl;
	}
    }

    ClassDef(HSlowChan,1)
};

class HSlowPar : public HParSet {


protected:
    map<Int_t, map<TString, HSlowChan*>* > fMRunID;
    vector<Int_t>                          fVRunID;   // list of runIDs
    TList fListChannels;                              // list of channels
    map<TString, HSlowChan* >* findRunIDMap(Int_t runId);
    HSlowChan*                 findChannel (map<TString, HSlowChan* >* m ,TString name);
    TString fPartition;                                 // Name ORACLE SLOW CONTROL PARTION, to be set by user!!!

    Int_t fCurrentRunID;                                     //! remember the current runID
    map<Int_t,map<TString, HSlowChan* >* >::iterator fMIter; //! remember the current ChannelMap


public:
    HSlowPar(const Char_t* name   ="SlowPar",
	     const Char_t* title  ="Slow Control Summary container",
	     const Char_t* context="SlowParProduction");
    ~HSlowPar(void) {};


    //-----------------------------------------------------------------------
    Bool_t   setChannel    (Int_t runID,TString name, Double_t ar[],Bool_t overwrite=kFALSE);
    Bool_t   getChannel    (Int_t runID,TString name, Double_t ar[]);
    Bool_t   setChannel    (Int_t runID,TString name, HSlowChan* chan,Bool_t overwrite=kFALSE);
    Bool_t   setChannelMap (Int_t runID);
    Bool_t   getChannel    (Int_t runID,TString name, HSlowChan* chan);
    void     setPartition  (TString name) { fPartition = name; }
    TString  getPartition() { return fPartition; }

    Bool_t   findRunID    (Int_t runId);
    void     removeRun    (Int_t runID);
    Bool_t   getRangeRunID(Int_t& first,Int_t& last);
    Int_t    getNRunIDs() { return fVRunID.size();}
    void     clear(void);
    void     reset(Int_t level = 0);
    void     printParam(void);
    void     printChannel(Int_t runID,TString name);
    void         addToChannelList(TString name, Bool_t sort=kFALSE);
    const TList* getChannelList() { return &fListChannels;}
    void         makeChannelList(Bool_t sort=kTRUE);
    void         printChannelList();
    void         getRunIDList(TArrayI* ar=0);
    void         printRunIDList();
    //-----------------------------------------------------------------------


    //-----------------------------------------------------------------------
    Bool_t   init(HParIo* input,Int_t* set);
    Int_t    write(HParIo* output) ;
    Bool_t   readline(const Char_t* buf) ;
    void     putAsciiHeader(TString&);
    Bool_t   write(fstream& out);
    //-----------------------------------------------------------------------


    ClassDef(HSlowPar,1)
};

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