#ifndef HORASLOWCHANNEL_H
#define HORASLOWCHANNEL_H
using namespace std;
#include "TNamed.h"
#include "TObjArray.h"
#include <iostream>
#include <iomanip>
#include <fstream>
class HOraSlowPartition;
class TGraph;
class TGraphErrors;
class TGraphAsymmErrors;
class HOraSlowChannel : public TNamed {
private:
  Int_t              channelId;      
  TString            channelType;    
  Int_t              maxPrecision;   
  TObjArray*         pRunSumData;    
  TObjArray*         pMetaData;      
  TIterator*         runSumDataIter; 
  TGraph*            pGraph;         
  TGraph*            pRawGraph;      
  HOraSlowPartition* partition;      
  TObjArray*         pRawData;       
  TString            rawStart;       
  TString            rawEnd;         
  TIterator*         rawIter;        
public:
  HOraSlowChannel(const Char_t* name="");
  ~HOraSlowChannel();
  void setChannelId(Int_t n) {channelId=n;}
  void setChannelType(const Char_t* s) {channelType=s;}
  void setMaxPrecision(Int_t n) {maxPrecision=n;}
  void setPartition(HOraSlowPartition*);
  void setRunSumData(TObjArray*);
  void setRawData(TObjArray*,const Char_t*,const Char_t*);
  void setMetaData(TObjArray*);
  Int_t getChannelId() {return channelId;}
  const Char_t* getChannelType() {return channelType.Data();}
  Int_t getMaxPrecision() {return maxPrecision;}
  TObjArray* getRunSumData() {return pRunSumData;}
  TObjArray* getMetaData() {return pMetaData;}
  TObjArray* getRawData() {return pRawData;}
  Bool_t readRawData(Int_t);
  Bool_t readRawData(const Char_t*,const Char_t*);
  void printRunSumData(Int_t opt=0);  
  void printMetaData();  
  void printRawData();  
  void writeRunSumData(fstream&,Int_t opt=0);
  void writeMetaData(fstream&);  
  void writeRawData(fstream&);  
  TGraphErrors* getRunSumMeanSigmaGraph(Int_t opt=0,
					Int_t mStyle=7,Int_t mColor=4);
  TGraphAsymmErrors* getRunSumMeanMinMaxGraph(Int_t opt=0,
					      Int_t mStyle=7,Int_t mColor=2);
  TGraph* getRawDataGraph(Int_t mStyle=7,Int_t mColor=4);
private:
  void clearRunSumData();
  void clearRawData();
  void deleteGraph();
  void deleteRawGraph();
  ClassDef(HOraSlowChannel,0) 
};
#endif  /* !HORASLOWCHANNEL */