#ifndef ALI_MP_TRIGGER_READER_H
#define ALI_MP_TRIGGER_READER_H
#ifndef ROOT_TObject
# include "TObject.h"
#endif
#ifndef ROOT_TMap
# include "TMap.h"
#endif
#ifndef ROOT_TString
# include "TString.h"
#endif
#ifndef ALI_MP_PLANE_TYPE_H
# include "AliMpPlaneType.h"
#endif
class AliMpSlatMotifMap;
class AliMpSlat;
class AliMpTrigger;
class AliMpPCB;
class AliMpDataStreams;
class TList;
class AliMpTriggerReader : public TObject
{
public:
AliMpTriggerReader(AliMpSlatMotifMap* motifMap);
virtual ~AliMpTriggerReader();
AliMpTrigger* ReadSlat(const AliMpDataStreams& dataStreams,
const char* slatType, AliMp::PlaneType planeType);
AliMpPCB* ReadPCB(const AliMpDataStreams& dataStreams, const char* pcbType);
private:
AliMpSlat* BuildSlat(const AliMpDataStreams& dataStreams,
const char* slatName,
AliMp::PlaneType planeType,
const TList& descriptionLines,
Double_t scale=1.0);
Int_t DecodeFlipLine(const TString& sline,
TString& slatType2,
Bool_t& flipX, Bool_t& flipY);
Int_t DecodeScaleLine(const TString& sline,
Double_t& scale, TString& slatType);
void FlipLines(const AliMpDataStreams& dataStreams,
TList& lines, Bool_t flipX, Bool_t flipY,
Int_t srcLine, Int_t destLine);
TString GetBoardNameFromPCBLine(const TString& sline);
Int_t GetLine(const TString& slatType);
Int_t IsLayerLine(const TString& sline) const;
int LocalBoardNumber(const AliMpDataStreams& dataStreams,
const char* localBoardName);
void ReadLines(const AliMpDataStreams& dataStreams,
const char* slatType,
AliMp::PlaneType planeType,
TList& lines,
Double_t& scale, Bool_t& flipX, Bool_t& flipY,
Int_t& srcLine, Int_t& destLine);
void ReadLocalBoardMapping(const AliMpDataStreams& dataStreams);
private:
AliMpTriggerReader(const AliMpTriggerReader& rhs);
AliMpTriggerReader& operator=(const AliMpTriggerReader& rhs);
static const TString& GetKeywordLayer();
static const TString& GetKeywordScale();
static const TString& GetKeywordPcb();
static const TString& GetKeywordFlipX();
static const TString& GetKeywordFlipY();
AliMpSlatMotifMap* fMotifMap;
TMap fLocalBoardMap;
ClassDef(AliMpTriggerReader,0)
};
#endif