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

/* $Id: AliTRDSaxHandler.h 26327 2008-06-02 15:36:18Z cblume $ */

////////////////////////////////////////////////////////////////////////////
//                                                                        //
//  The SAX XML file handler used in the preprocessor                     //
//                                                                        //
//  Author:                                                               //
//    Frederick Kramer (kramer@ikf.uni-frankfurt.de)                      //
//                                                                        //
////////////////////////////////////////////////////////////////////////////


#include <TObject.h>
#include "Cal/AliTRDCalDCSGTUCtpOpc.h"
#include "Cal/AliTRDCalDCSGTUBoardInfo.h"
#include "Cal/AliTRDCalDCSGTUSegment.h"
#include "Cal/AliTRDCalDCSGTUTmu.h" 

class TObjArray;
class AliTRDCalDCSv2;
class AliTRDCalDCSFEEv2;
class AliTRDCalDCSPTR;
class AliTRDCalDCSGTU;


class AliTRDSaxHandler : public TObject {

public:
  enum { 
    kInsideFEE = 1, 
    kInsidePTR = 2,
    kInsideGTU = 3 
  }; // System level
  enum { 
    kInsideTgu = -1,
    kInsideNone = -2,
    kInsideSegment = -3,
    kInsideGainTable = -4 
  }; // The level under system (1)
  enum { 
    kInsideTmu = 10,
    kInsideSmu = 11 
  }; // The level under that   (2)

  AliTRDSaxHandler();
  AliTRDSaxHandler(const AliTRDSaxHandler &sh);
  virtual ~AliTRDSaxHandler();
  AliTRDSaxHandler &operator=(const AliTRDSaxHandler &sh);

  TObjArray*         GetDCSFEEDataArray() const { return fFEEArr;        }
  TObjArray*         GetDCSPTRDataArray() const { return fPTRArr;        }
  AliTRDCalDCSv2*    GetCalDCSObj(); // to be called by the preprocessor
  void               ParseConfigName(TString cfgname) const;


  Int_t              GetHandlerStatus() const { return fHandlerStatus; }

  // functions for all possible events
  void               OnStartDocument() const;
  void               OnEndDocument() const;
  void               OnStartElement(const char *name, const TList *attributes);
  void               OnEndElement(const char *name);
  void               OnCharacters(const char *name);
  void               OnComment(const char *name) const;
  void               OnWarning(const char *name);
  void               OnError(const char *name);
  void               OnFatalError(const char *name);
  void               OnCdataBlock(const char *name, Int_t len) const;

 private:

  bool               CompareString(TString str, const char *str2); 

  Int_t              fHandlerStatus;      // 0: everything OK, >0: error
  Int_t              fNDCSPTR;            // number of current PTR unit (to be abandonned soon)
  Int_t              fNDCSGTU;            // number of current GTU unit (to be abandonned soon)
  TObjArray*         fFEEArr;             // array of AliTRDCalDCSFEEv2 objects
  TObjArray*         fPTRArr;             // array of AliTRDCalDCSPTR objects
  //   TObjArray*       fGTUArr;        // array of AliTRDCalDCSGTU objects
  Int_t              fSystem;             // current system (FEE/PTR/GTU) (while parsing)
  Int_t              fInsideRstate;       // if we are inside rstate (while parsing)
  Int_t              fCurrentSM;          // current supermodule (while parsing)
  Int_t              fCurrentStack;       // current stack (while parsing)
  Int_t              fCurrentROB;         // current ROB (while parsing)
  Int_t              fCurrentMCM;         // current MCM (while parsing)
  Int_t              fCurrentADC;         // current ADC (while parsing)
  TString            fContent;            // content of the xml element (text)
  AliTRDCalDCSFEEv2* fDCSFEEObj;          // the calib object for one FEE DCS board
  AliTRDCalDCSPTR*   fDCSPTRObj;          // the calib object for one PTR DCS board
  AliTRDCalDCSGTU*   fDCSGTUObj;          // the calib object for one GTU DCS board
  AliTRDCalDCSv2*    fCalDCSObj;          // the complete calib obj containing all info
  Int_t              fLevel1Tag;          // 1st level in XML (while parsing)
  Int_t              fLevel2Tag;          // 2nd level in XML (while parsing)
  Bool_t             fInsideBoardInfo;    // if we are inside BoardInfo (while parsing)

  AliTRDCalDCSGTUTmu*       fTmu;       // GTU calibration data: pattern generator
  AliTRDCalDCSGTUCtpOpc*    fCtpOpc;    // GTU calibration data: OPC
  AliTRDCalDCSGTUSegment*   fSegment;   // GTU calibration data: SMU tracklets/tracks/triggers
  AliTRDCalDCSGTUBoardInfo* fBoardInfo; // GTU calibration data: hard-/software and type

  ClassDef(AliTRDSaxHandler,3);         // The XML file handler for the preprocessor
};
#endif

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