ROOT logo
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

// $Id$
// $MpId: AliMpTriggerReader.h,v 1.5 2006/05/24 13:58:27 ivana Exp $

/// \ingroup mptrigger
/// \class AliMpTriggerReader
/// \brief Read trigger slat ASCII files
///
//  Author: Laurent Aphecetche

#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);
  
  // AliMpPCB* PCB(const char* pcbType); 
  
  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:
  /// Not implemented
  AliMpTriggerReader(const AliMpTriggerReader& rhs);
  /// Not implemented
  AliMpTriggerReader& operator=(const AliMpTriggerReader& rhs);
    
  // static methods
  static const TString& GetKeywordLayer();
  static const TString& GetKeywordScale();
  static const TString& GetKeywordPcb();
  static const TString& GetKeywordFlipX();
  static const TString& GetKeywordFlipY();
  
  // data members
  AliMpSlatMotifMap* fMotifMap; //!< storage for motifTypes and motifs...
  
  TMap fLocalBoardMap; //!< map of TObjString to TObjString

  ClassDef(AliMpTriggerReader,0) // Reader for trigger slats mapping files 
};

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