#ifndef ALI_MP_SECTOR_READER_H
#define ALI_MP_SECTOR_READER_H
#include <TObject.h>
#include "AliMpStation12Type.h"
#include "AliMpPlaneType.h"
#include "AliMpXDirection.h"
#include <TString.h>
#include <fstream>
class AliMpSector;
class AliMpZone;
class AliMpSubZone;
class AliMpRow;
class AliMpVRowSegmentSpecial;
class AliMpMotifReader;
class AliMpVMotif;
class AliMpMotifSpecial;
class AliMpMotifType;
class AliMpDataStreams;
using std::istream;
class AliMpSectorReader : public TObject
{
public:
AliMpSectorReader(AliMq::Station12Type station, AliMp::PlaneType plane);
virtual ~AliMpSectorReader();
AliMpSector* BuildSector(const AliMpDataStreams& dataStreams);
private:
AliMpSectorReader();
AliMpSectorReader(const AliMpSectorReader& right);
AliMpSectorReader& operator = (const AliMpSectorReader& right);
static const TString& GetSectorKeyword();
static const TString& GetZoneKeyword();
static const TString& GetSubZoneKeyword();
static const TString& GetRowKeyword();
static const TString& GetSectorSpecialKeyword();
static const TString& GetMotifKeyword();
static const TString& GetRowSpecialKeyword();
static const TString& GetPadRowsKeyword();
static const TString& GetPadRowSegmentKeyword();
void ReadSectorData(const AliMpDataStreams& dataStreams,
istream& in);
void ReadZoneData(const AliMpDataStreams& dataStreams,
istream& in);
void ReadSubZoneData(const AliMpDataStreams& dataStreams,
istream& in, AliMpZone* zone);
void ReadRowSegmentsData(const AliMpDataStreams& dataStreams,
istream& in,
AliMpZone* zone, AliMpSubZone* subZone);
AliMpVMotif* ReadMotifData(const AliMpDataStreams& dataStreams,
istream& in, AliMpZone* zone);
void ReadSectorSpecialData(const AliMpDataStreams& dataStreams,
istream& in, AliMp::XDirection direction);
void ReadMotifsSpecialData(const AliMpDataStreams& dataStreams,
istream& in);
void ReadRowSpecialData(const AliMpDataStreams& dataStreams,
istream& in, AliMp::XDirection direction);
void ReadRowSegmentSpecialData(const AliMpDataStreams& dataStreams,
istream& in,
AliMpVRowSegmentSpecial* segment,
AliMp::XDirection direction);
AliMq::Station12Type fStationType;
AliMp::PlaneType fPlaneType;
AliMpSector* fSector;
AliMpMotifReader* fMotifReader;
ClassDef(AliMpSectorReader,0)
};
#endif //ALI_MP_READER_H