]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TRD/AliTRDSaxHandler.cxx
Extension to L0 and L1 trigger classes
[u/mrichter/AliRoot.git] / TRD / AliTRDSaxHandler.cxx
index 4420778a441d6140efa2f6f79df92177d8a417a3..859663be195742f0481bcbed659f66c10d919973 100644 (file)
-/*************************************************************************
- * * Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
- * *                                                                        *
- * * Author: The ALICE Off-line Project.                                    *
- * * Contributors are mentioned in the code where appropriate.              *
- * *                                                                        *
- * * Permission to use, copy, modify and distribute this software and its   *
- * * documentation strictly for non-commercial purposes is hereby granted   *
- * * without fee, provided that the above copyright notice appears in all   *
- * * copies and that both the copyright notice and this permission notice   *
- * * appear in the supporting documentation. The authors make no claims     *
- * * about the suitability of this software for any purpose. It is          *
- * * provided "as is" without express or implied warranty.                  *
- * **************************************************************************/
-
-/* $Id: AliTRDSaxHandler.cxx 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 <cstdlib>
-#include <Riostream.h>
-#include <TList.h>
-#include <TXMLAttr.h>
-#include <TSAXParser.h>
-#include <TObjArray.h>
-
-#include "AliLog.h"
-
-#include "AliTRDSaxHandler.h"
-#include "AliTRDgeometry.h"
-
-#include "Cal/AliTRDCalDCS.h"
-#include "Cal/AliTRDCalDCSFEE.h"
-#include "Cal/AliTRDCalDCSPTR.h"
-#include "Cal/AliTRDCalDCSGTU.h"
-
-ClassImp(AliTRDSaxHandler)
-
-//_____________________________________________________________________________
-AliTRDSaxHandler::AliTRDSaxHandler()
-  :TObject()
-  ,fHandlerStatus(0)
-  ,fNDCSPTR(0)
-  ,fNDCSGTU(0)
-  ,fFEEArr(new TObjArray(540))
-  ,fPTRArr(new TObjArray(6))
-  ,fGTUArr(new TObjArray(19))
-  ,fSystem(0)
-  ,fCurrentSM(0)
-  ,fCurrentStack(0)
-  ,fContent(0)
-  ,fDCSFEEObj(0)
-  ,fDCSPTRObj(0)
-  ,fDCSGTUObj(0)
-  ,fCalDCSObj(new AliTRDCalDCS())
-{
-  //
-  // AliTRDSaxHandler default constructor
-  //
-  fFEEArr->SetOwner();
-  fPTRArr->SetOwner();
-  fGTUArr->SetOwner();
-}
-
-//_____________________________________________________________________________
-AliTRDSaxHandler::AliTRDSaxHandler(const AliTRDSaxHandler &sh)
-  :TObject(sh)
-  ,fHandlerStatus(0)
-  ,fNDCSPTR(0)
-  ,fNDCSGTU(0)
-  ,fFEEArr(0)
-  ,fPTRArr(0)
-  ,fGTUArr(0)
-  ,fSystem(0)
-  ,fCurrentSM(0)
-  ,fCurrentStack(0)
-  ,fContent(0)
-  ,fDCSFEEObj(0)
-  ,fDCSPTRObj(0)
-  ,fDCSGTUObj(0)
-  ,fCalDCSObj(0)
-{
-  //
-  // AliTRDSaxHandler copy constructor
-  //
-}
-
-//_____________________________________________________________________________
-AliTRDSaxHandler &AliTRDSaxHandler::operator=(const AliTRDSaxHandler &sh)
-{
-  //
-  // Assignment operator
-  //
-  if (&sh == this) return *this;
-
-  new (this) AliTRDSaxHandler(sh);
-  return *this;
-}
-
-//_____________________________________________________________________________
-AliTRDSaxHandler::~AliTRDSaxHandler()
-{
-  //
-  // AliTRDSaxHandler destructor
-  //
-
-  if (fFEEArr) {
-    delete fFEEArr;
-    fFEEArr    = 0x0;
-  }
-  if (fPTRArr) {
-    delete fPTRArr;
-    fPTRArr    = 0x0;
-  }
-  if (fGTUArr) {
-    delete fGTUArr;
-    fGTUArr    = 0x0;
-  }
-  if (fCalDCSObj) {
-    delete fCalDCSObj;
-    fCalDCSObj = 0x0;
-  }
-
-}
-
-//_____________________________________________________________________________
-AliTRDCalDCS* AliTRDSaxHandler::GetCalDCSObj()
-{
-  // put the arrays in the global calibration object and return this
-  fCalDCSObj->SetNumberOfTimeBins(22); //test test test
-  fCalDCSObj->SetFEEArr(fFEEArr);
-  fCalDCSObj->SetPTRArr(fPTRArr);
-  fCalDCSObj->SetGTUArr(fGTUArr);
-  return fCalDCSObj;
-}
-
-//_____________________________________________________________________________
-void AliTRDSaxHandler::OnStartDocument()
-{
-  // if something should happen right at the beginning of the
-  // XML document, this must happen here
-}
-
-//_____________________________________________________________________________
-void AliTRDSaxHandler::OnEndDocument()
-{
-  // if something should happen at the end of the XML document
-  // this must be done here
-}
-
-//_____________________________________________________________________________
-void AliTRDSaxHandler::OnStartElement(const char *name, const TList *attributes)
-{
-  // when a new XML element is found, it is processed here
-  fContent    = "";
-  Int_t dcsId = 0;
-  TString strName  = name;
-  TString dcsTitle = "";
-
-  // set the current system if necessary
-  if (strName.Contains("FEE")) fSystem = kInsideFEE;
-  if (strName.Contains("PTR")) fSystem = kInsidePTR;
-  if (strName.Contains("GTU")) fSystem = kInsideGTU;
-
-  // get the attributes of the element
-  TXMLAttr *attr;
-  TIter next(attributes);
-  while ((attr = (TXMLAttr*) next())) {
-    TString attribName = attr->GetName();
-    if (attribName.Contains("id") && strName.Contains("DCS")) {
-      dcsTitle = name;
-      dcsId = atoi(attr->GetValue());
-    }
-    if (attribName.Contains("sm") && strName.Contains("DCS")) {
-      fCurrentSM = atoi(attr->GetValue());
-    }
-    if (attribName.Contains("id") && strName.Contains("STACK")) {
-      fCurrentStack = atoi(attr->GetValue());
-    }
-  }
-
-  // if there is a new DCS element put it in the correct array
-  if (strName.Contains("DCS")) {
-    if (fSystem == kInsideFEE) {
-      fDCSFEEObj = new AliTRDCalDCSFEE(name,dcsTitle);
-      fDCSFEEObj->SetDCSid(dcsId);
-    }
-    if (fSystem == kInsidePTR) {
-      fDCSPTRObj = new AliTRDCalDCSPTR(name,dcsTitle);
-      fDCSPTRObj->SetDCSid(dcsId);
-    }
-    if (fSystem == kInsideGTU) {
-      fDCSGTUObj = new AliTRDCalDCSGTU(name,dcsTitle);
-      fDCSGTUObj->SetDCSid(dcsId);
-    }
-  }
-}
-
-//_____________________________________________________________________________
-void AliTRDSaxHandler::OnEndElement(const char *name)
-{
-  // do everything that needs to be done when an end tag of an element is found
-  TString strName = name;
-  
-  // if done with this DCS board, put it in the correct array
-  if (strName.Contains("DCS")) {
-    if (fSystem == kInsideFEE) {
-      AliTRDgeometry aliGeo;
-      Int_t detID = aliGeo.GetDetector(fDCSFEEObj->GetLayer(),
-                                       fDCSFEEObj->GetStack(),
-                                       fDCSFEEObj->GetSM());
-      fFEEArr->AddAt(fDCSFEEObj,detID);
-    }
-    if (fSystem == kInsidePTR) {
-      fPTRArr->AddAt(fDCSPTRObj,fNDCSPTR);
-      fNDCSPTR++;
-    }
-    if (fSystem == kInsideGTU) {
-      fGTUArr->AddAt(fDCSGTUObj,fNDCSGTU);
-      fNDCSGTU++;
-    }
-    fCurrentSM = 99; // 99 for no SM set
-    fDCSFEEObj = 0;  // just to be sure
-    return;
-  }
-
-  // done with this stack?
-  if (strName.Contains("STACK")) {
-    fCurrentStack = 99; // 99 for no stack set
-  }
-
-  // store informations of the FEE DCS-Board
-  if (fSystem == kInsideFEE) {
-    if (strName.Contains("CONFIG-ID"))
-      fDCSFEEObj->SetConfigID(fContent);
-    if (strName.Contains("NTBIN"))
-      fDCSFEEObj->SetNumberOfTimeBins(fContent.Atoi());
-    if (strName.Contains("SM-ID"))
-      fDCSFEEObj->SetSM(fContent.Atoi());
-    if (strName.Contains("STACK-ID"))
-      fDCSFEEObj->SetStack(fContent.Atoi());
-    if (strName.Contains("LAYER-ID"))
-      fDCSFEEObj->SetLayer(fContent.Atoi());
-  }
-
-  // store pretrigger informations
-  if (fSystem == kInsidePTR) {
-    // no informations available yet
-  }
-  // store GTU informations
-  if (fSystem == kInsideGTU) {
-    if (strName.Contains("SMMASK"))
-      fHandlerStatus = fDCSGTUObj->SetSMMask(fContent);
-    if (strName.Contains("LINKMASK")) 
-      fHandlerStatus = fDCSGTUObj->SetLinkMask(fCurrentSM, fCurrentStack, fContent);
-    if (strName.Contains("STMASK"))
-      fDCSGTUObj->SetStackMaskBit(fCurrentSM, fCurrentStack, fContent.Atoi());
-  }
-
-
-}
-
-//_____________________________________________________________________________
-void AliTRDSaxHandler::OnCharacters(const char *characters)
-{
-  // copy the the text content of an XML element
-  fContent = characters;
-}
-
-//_____________________________________________________________________________
-void AliTRDSaxHandler::OnComment(const char* /*text*/)
-{
-  // comments within the XML file are ignored
-}
-
-//_____________________________________________________________________________
-void AliTRDSaxHandler::OnWarning(const char *text)
-{
-  // process warnings here
-  AliInfo(Form("Warning: %s",text));
-}
-
-//_____________________________________________________________________________
-void AliTRDSaxHandler::OnError(const char *text)
-{
-  // process errors here
-  AliError(Form("Error: %s",text));
-}
-
-//_____________________________________________________________________________
-void AliTRDSaxHandler::OnFatalError(const char *text)
-{
-  // process fatal errors here
-  AliError(Form("Fatal error: %s",text)); // use AliFatal?
-}
-
-//_____________________________________________________________________________
-void AliTRDSaxHandler::OnCdataBlock(const char* /*text*/, Int_t /*len*/)
-{
-  // process character data blocks here
-  // not implemented and should not be used here
-}
-
+/*************************************************************************\r
+ * * Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *\r
+ * *                                                                        *\r
+ * * Author: The ALICE Off-line Project.                                    *\r
+ * * Contributors are mentioned in the code where appropriate.              *\r
+ * *                                                                        *\r
+ * * Permission to use, copy, modify and distribute this software and its   *\r
+ * * documentation strictly for non-commercial purposes is hereby granted   *\r
+ * * without fee, provided that the above copyright notice appears in all   *\r
+ * * copies and that both the copyright notice and this permission notice   *\r
+ * * appear in the supporting documentation. The authors make no claims     *\r
+ * * about the suitability of this software for any purpose. It is          *\r
+ * * provided "as is" without express or implied warranty.                  *\r
+ * **************************************************************************/\r
+\r
+/* $Id: AliTRDSaxHandler.cxx 26327 2008-06-02 15:36:18Z cblume $ */\r
+\r
+////////////////////////////////////////////////////////////////////////////\r
+//                                                                        //\r
+//  The SAX XML file handler used in the preprocessor                     //\r
+//                                                                        //\r
+//  Author:                                                               //\r
+//    Frederick Kramer (kramer@ikf.uni-frankfurt.de)                      //\r
+//                                                                        //\r
+////////////////////////////////////////////////////////////////////////////\r
+\r
+#include <cstdlib>\r
+#include <Riostream.h>\r
+#include <TList.h>\r
+#include <TXMLAttr.h>\r
+#include <TSAXParser.h>\r
+#include <TObjArray.h>\r
+\r
+#include "AliLog.h"\r
+\r
+#include "AliTRDSaxHandler.h"\r
+#include "AliTRDgeometry.h"\r
+\r
+#include "Cal/AliTRDCalDCS.h"\r
+#include "Cal/AliTRDCalDCSFEE.h"\r
+#include "Cal/AliTRDCalDCSPTR.h"\r
+#include "Cal/AliTRDCalDCSGTU.h"\r
+\r
+ClassImp(AliTRDSaxHandler)\r
+\r
+  \r
+//_____________________________________________________________________________\r
+AliTRDSaxHandler::AliTRDSaxHandler()\r
+  :TObject()\r
+  ,fHandlerStatus(0)\r
+  ,fNDCSPTR(0)\r
+  ,fNDCSGTU(0)\r
+  ,fFEEArr(new TObjArray(540))\r
+  ,fPTRArr(new TObjArray(6))\r
+  ,fGTUArr(new TObjArray(19))\r
+  ,fSystem(0)\r
+  ,fInsideRstate(0)\r
+  ,fCurrentSM(0)\r
+  ,fCurrentStack(0)\r
+  ,fCurrentROB(-1)\r
+  ,fCurrentMCM(-1)\r
+  ,fContent(0)\r
+  ,fDCSFEEObj(0)\r
+  ,fDCSPTRObj(0)\r
+  ,fDCSGTUObj(0)\r
+  ,fCalDCSObj(new AliTRDCalDCS())\r
+{\r
+  //\r
+  // AliTRDSaxHandler default constructor\r
+  //\r
+  fFEEArr->SetOwner();\r
+  fPTRArr->SetOwner();\r
+  fGTUArr->SetOwner();\r
+}\r
+\r
+//_____________________________________________________________________________\r
+AliTRDSaxHandler::AliTRDSaxHandler(const AliTRDSaxHandler &sh)\r
+  :TObject(sh)\r
+  ,fHandlerStatus(0)\r
+  ,fNDCSPTR(0)\r
+  ,fNDCSGTU(0)\r
+  ,fFEEArr(0)\r
+  ,fPTRArr(0)\r
+  ,fGTUArr(0)\r
+  ,fSystem(0)\r
+  ,fInsideRstate(0)\r
+  ,fCurrentSM(0)\r
+  ,fCurrentStack(0)\r
+  ,fCurrentROB(-1)\r
+  ,fCurrentMCM(-1)\r
+  ,fContent(0)\r
+  ,fDCSFEEObj(0)\r
+  ,fDCSPTRObj(0)\r
+  ,fDCSGTUObj(0)\r
+  ,fCalDCSObj(0)\r
+{\r
+  //\r
+  // AliTRDSaxHandler copy constructor\r
+  //\r
+}\r
+\r
+//_____________________________________________________________________________\r
+AliTRDSaxHandler &AliTRDSaxHandler::operator=(const AliTRDSaxHandler &sh)\r
+{\r
+  //\r
+  // Assignment operator\r
+  //\r
+  if (&sh == this) return *this;\r
+\r
+  new (this) AliTRDSaxHandler(sh);\r
+  return *this;\r
+}\r
+\r
+//_____________________________________________________________________________\r
+AliTRDSaxHandler::~AliTRDSaxHandler()\r
+{\r
+  //\r
+  // AliTRDSaxHandler destructor\r
+  //\r
+\r
+  if (fFEEArr) {\r
+    delete fFEEArr;\r
+    fFEEArr    = 0x0;\r
+  }\r
+  if (fPTRArr) {\r
+    delete fPTRArr;\r
+    fPTRArr    = 0x0;\r
+  }\r
+  if (fGTUArr) {\r
+    delete fGTUArr;\r
+    fGTUArr    = 0x0;\r
+  }\r
+  if (fCalDCSObj) {\r
+    delete fCalDCSObj;\r
+    fCalDCSObj = 0x0;\r
+  }\r
+\r
+}\r
+\r
+//_____________________________________________________________________________\r
+AliTRDCalDCS* AliTRDSaxHandler::GetCalDCSObj()\r
+{\r
+  // put the arrays in the global calibration object and return this\r
+  fCalDCSObj->SetFEEArr(fFEEArr);\r
+  fCalDCSObj->SetPTRArr(fPTRArr);\r
+  fCalDCSObj->SetGTUArr(fGTUArr);\r
+  return fCalDCSObj;\r
+}\r
+\r
+//_____________________________________________________________________________\r
+void AliTRDSaxHandler::OnStartDocument()\r
+{\r
+  // if something should happen right at the beginning of the\r
+  // XML document, this must happen here\r
+}\r
+\r
+//_____________________________________________________________________________\r
+void AliTRDSaxHandler::OnEndDocument()\r
+{\r
+  // if something should happen at the end of the XML document\r
+  // this must be done here\r
+}\r
+\r
+//_____________________________________________________________________________\r
+void AliTRDSaxHandler::OnStartElement(const char *name, const TList *attributes)\r
+{\r
+  // when a new XML element is found, it is processed here\r
+  fContent    = "";\r
+  Int_t dcsId = 0;\r
+  TString strName  = name;\r
+  TString dcsTitle = "";\r
+\r
+  // set the current system if necessary\r
+  if (strName.Contains("FEE")) fSystem = kInsideFEE;\r
+  if (strName.Contains("PTR")) fSystem = kInsidePTR;\r
+  if (strName.Contains("GTU")) fSystem = kInsideGTU;\r
+\r
+  // set if we are inside rstate \r
+  // (in principle not necessary - just to be more safe against stupid tags)\r
+  if (strName.Contains("rstate")) fInsideRstate = 1;\r
+\r
+  // get the attributes of the element\r
+  TXMLAttr *attr;\r
+  TIter next(attributes);\r
+  while ((attr = (TXMLAttr*) next())) {\r
+    TString attribName = attr->GetName();\r
+    if (attribName.Contains("id") && strName.Contains("DCS")) {\r
+      dcsTitle = name;\r
+      dcsId = atoi(attr->GetValue());\r
+    }\r
+    if (attribName.Contains("roc") && strName.Contains("ack")) {\r
+      if (atoi(attr->GetValue()) != fDCSFEEObj->GetDCSid())\r
+       fDCSFEEObj->SetStatusBit(3); // consistence check\r
+    }\r
+    if (attribName.Contains("rob") && (fInsideRstate == 1)) {\r
+      fCurrentROB = atoi(attr->GetValue());\r
+    }\r
+    if (attribName.Contains("mcm") && (fInsideRstate == 1)) {\r
+      fCurrentMCM = atoi(attr->GetValue());\r
+    }\r
+    if (attribName.Contains("sm") && strName.Contains("DCS")) {\r
+      fCurrentSM = atoi(attr->GetValue()); // only for GTU/PTR\r
+    }\r
+    if (attribName.Contains("id") && strName.Contains("STACK")) {\r
+      fCurrentStack = atoi(attr->GetValue()); // only for GTU/PTR\r
+    }\r
+  }\r
+\r
+  // if there is a new DCS element put it in the correct array\r
+  if (strName.Contains("DCS")) {\r
+    if (fSystem == kInsideFEE) {\r
+      fDCSFEEObj = new AliTRDCalDCSFEE(name,dcsTitle);\r
+      fDCSFEEObj->SetDCSid(dcsId);\r
+    }\r
+    if (fSystem == kInsidePTR) {\r
+      fDCSPTRObj = new AliTRDCalDCSPTR(name,dcsTitle);\r
+      fDCSPTRObj->SetDCSid(dcsId);\r
+    }\r
+    if (fSystem == kInsideGTU) {\r
+      fDCSGTUObj = new AliTRDCalDCSGTU(name,dcsTitle);\r
+      fDCSGTUObj->SetDCSid(dcsId);\r
+    }\r
+  }\r
+}\r
+\r
+//_____________________________________________________________________________\r
+void AliTRDSaxHandler::OnEndElement(const char *name)\r
+{\r
+  // do everything that needs to be done when an end tag of an element is found\r
+  TString strName = name;\r
+  \r
+  // if done with this DCS board, put it in the correct array\r
+  // no check for </ack> necessary since this check is done during XML validation\r
+  if (strName.Contains("DCS")) {\r
+    if (fSystem == kInsideFEE) {\r
+      Int_t detID = 0;\r
+      if (fDCSFEEObj->GetStatusBit() == 0) {\r
+       // if there were no errors (StatusBit==0) the following should match\r
+        detID = fDCSFEEObj->GetDCSid();\r
+        AliTRDgeometry aliGeo;\r
+        Int_t calDetID = aliGeo.GetDetector(fDCSFEEObj->GetLayer(),\r
+                                           fDCSFEEObj->GetStack(),\r
+                                           fDCSFEEObj->GetSM());\r
+       if (detID != calDetID) fDCSFEEObj->SetStatusBit(4);\r
+      } else {\r
+       // if the dcs board didn't properly respond, don't compare\r
+        detID = fDCSFEEObj->GetDCSid();\r
+      }\r
+      fFEEArr->AddAt(fDCSFEEObj,detID);\r
+    }\r
+    if (fSystem == kInsidePTR) {\r
+      fPTRArr->AddAt(fDCSPTRObj,fNDCSPTR);\r
+      fNDCSPTR++;\r
+    }\r
+    if (fSystem == kInsideGTU) {\r
+      fGTUArr->AddAt(fDCSGTUObj,fNDCSGTU);\r
+      fNDCSGTU++;\r
+    }\r
+    fCurrentSM = 99; // 99 for no SM set\r
+    fDCSFEEObj = 0;  // just to be sure\r
+    return;\r
+  }\r
+\r
+  // done with this stack?\r
+  if (strName.Contains("STACK")) {\r
+    fCurrentStack = 99; // 99 for no stack set\r
+  }\r
+\r
+  // outside of rstate again?\r
+  if (strName.Contains("rstate")) {\r
+    fInsideRstate = 0;\r
+    fCurrentROB   = -1;\r
+    fCurrentMCM   = -1;\r
+  }\r
+  if (strName.Contains("ro-board")) fCurrentROB = -1;\r
+  \r
+  // store informations of the FEE DCS-Board\r
+  if (fSystem == kInsideFEE) {\r
+    if (strName.Contains("DNR"))            fDCSFEEObj->SetStatusBit(fContent.Atoi());\r
+    if (strName.Contains("CFGNME"))         fDCSFEEObj->SetConfigName(fContent);\r
+    if (strName.Contains("CFGTAG"))         fDCSFEEObj->SetConfigTag(fContent.Atoi());\r
+    if (strName.Contains("CFGVRSN"))        fDCSFEEObj->SetConfigVersion(fContent);\r
+    if (strName.Contains("NTB"))            fDCSFEEObj->SetNumberOfTimeBins(fContent.Atoi());\r
+    if (strName.Contains("SM-ID"))          fDCSFEEObj->SetSM(fContent.Atoi());\r
+    if (strName.Contains("STACK-ID"))       fDCSFEEObj->SetStack(fContent.Atoi());\r
+    if (strName.Contains("LAYER-ID"))       fDCSFEEObj->SetLayer(fContent.Atoi());\r
+    if (strName.Contains("SINGLEHITTHRES")) fDCSFEEObj->SetSingleHitThres(fContent.Atoi());\r
+    if (strName.Contains("THRPADCLSTHRS"))  fDCSFEEObj->SetThreePadClustThres(fContent.Atoi());\r
+    if (strName.Contains("SELNOZS"))        fDCSFEEObj->SetSelectiveNoZS(fContent.Atoi());\r
+    if (strName.Contains("FASTSTATNOISE"))  fDCSFEEObj->SetFastStatNoise(fContent.Atoi());\r
+    if (strName.Contains("FILTWEIGHT"))     fDCSFEEObj->SetTCFilterWeight(fContent.Atoi());\r
+    if (strName.Contains("FILTSHRTDCYPRM")) fDCSFEEObj->SetTCFilterShortDecPar(fContent.Atoi());\r
+    if (strName.Contains("FILTLNGDCYPRM"))  fDCSFEEObj->SetTCFilterLongDecPar(fContent.Atoi());\r
+    if (strName.Contains("FLTR"))           fDCSFEEObj->SetFilterType(fContent);\r
+    if (strName.Contains("READOUTPAR"))     fDCSFEEObj->SetReadoutParam(fContent);\r
+    if (strName.Contains("TESTPATTERN"))    fDCSFEEObj->SetTestPattern(fContent);\r
+    if (strName.Contains("TRCKLTMODE"))     fDCSFEEObj->SetTrackletMode(fContent);\r
+    if (strName.Contains("TRCKLTDEF"))      fDCSFEEObj->SetTrackletDef(fContent);\r
+    if (strName.Contains("TRIGGERSETUP"))   fDCSFEEObj->SetTriggerSetup(fContent);\r
+    if (strName.Contains("ADDOPTIONS"))     fDCSFEEObj->SetAddOptions(fContent);\r
+    if (fInsideRstate == 1) {\r
+      if (fCurrentROB>=0 && fCurrentMCM>=0) {\r
+       if (strName.Contains("gsm")) fDCSFEEObj->SetMCMGlobalState(fCurrentROB, fCurrentMCM, fContent.Atoi());\r
+       if (strName.Contains("ni")) fDCSFEEObj->SetMCMStateNI(fCurrentROB, fCurrentMCM, fContent.Atoi());\r
+       if (strName.Contains("ev")) fDCSFEEObj->SetMCMEventCnt(fCurrentROB, fCurrentMCM, fContent.Atoi());\r
+       if (strName.Contains("ptrg")) fDCSFEEObj->SetMCMPtCnt(fCurrentROB, fCurrentMCM, fContent.Atoi());\r
+      }\r
+    }\r
+  }\r
+\r
+  \r
+  // store pretrigger informations\r
+  if (fSystem == kInsidePTR) {\r
+    // no informations available yet\r
+  }\r
+  // store GTU informations\r
+  if (fSystem == kInsideGTU) {\r
+    if (strName.Contains("SMMASK"))\r
+      fHandlerStatus = fDCSGTUObj->SetSMMask(fContent);\r
+    if (strName.Contains("LINKMASK")) \r
+      fHandlerStatus = fDCSGTUObj->SetLinkMask(fCurrentSM, fCurrentStack, fContent);\r
+    if (strName.Contains("STMASK"))\r
+      fDCSGTUObj->SetStackMaskBit(fCurrentSM, fCurrentStack, fContent.Atoi());\r
+  }\r
+}\r
+\r
+//_____________________________________________________________________________\r
+void AliTRDSaxHandler::OnCharacters(const char *characters)\r
+{\r
+  // copy the the text content of an XML element\r
+  fContent = characters;\r
+}\r
+\r
+//_____________________________________________________________________________\r
+void AliTRDSaxHandler::OnComment(const char* /*text*/)\r
+{\r
+  // comments within the XML file are ignored\r
+}\r
+\r
+//_____________________________________________________________________________\r
+void AliTRDSaxHandler::OnWarning(const char *text)\r
+{\r
+  // process warnings here\r
+  AliInfo(Form("Warning: %s",text));\r
+}\r
+\r
+//_____________________________________________________________________________\r
+void AliTRDSaxHandler::OnError(const char *text)\r
+{\r
+  // process errors here\r
+  AliError(Form("Error: %s",text));\r
+}\r
+\r
+//_____________________________________________________________________________\r
+void AliTRDSaxHandler::OnFatalError(const char *text)\r
+{\r
+  // process fatal errors here\r
+  AliError(Form("Fatal error: %s",text)); // use AliFatal?\r
+}\r
+\r
+//_____________________________________________________________________________\r
+void AliTRDSaxHandler::OnCdataBlock(const char* /*text*/, Int_t /*len*/)\r
+{\r
+  // process character data blocks here\r
+  // not implemented and should not be used here\r
+}\r
+\r