#include <TObjArray.h>\r
#include "AliTRDSaxHandler.h"\r
#include "AliTRDgeometry.h"\r
-#include "Cal/AliTRDCalDCS.h"\r
-#include "Cal/AliTRDCalDCSFEE.h"\r
+#include "AliTRDcalibDB.h"\r
+#include "Cal/AliTRDCalDCSv2.h"\r
+#include "Cal/AliTRDCalDCSFEEv2.h"\r
#include "Cal/AliTRDCalDCSGTU.h"\r
\r
ClassImp(AliTRDSaxHandler)\r
,fDCSFEEObj(0)\r
,fDCSPTRObj(0)\r
,fDCSGTUObj(0)\r
- ,fCalDCSObj(new AliTRDCalDCS())\r
+ ,fCalDCSObj(new AliTRDCalDCSv2())\r
,fLevel1Tag(-2)\r
,fLevel2Tag(-2)\r
,fInsideBoardInfo(false)\r
}\r
\r
//_____________________________________________________________________________\r
-AliTRDCalDCS* AliTRDSaxHandler::GetCalDCSObj()\r
+AliTRDCalDCSv2* AliTRDSaxHandler::GetCalDCSObj()\r
{\r
// put the arrays in the global calibration object and return this\r
+\r
fCalDCSObj->SetFEEArr(fFEEArr);\r
fCalDCSObj->SetPTRArr(fPTRArr);\r
fCalDCSObj->SetGTUObj(fDCSGTUObj);\r
return fCalDCSObj;\r
}\r
\r
+//_____________________________________________________________________________\r
+void AliTRDSaxHandler::ParseConfigName(TString cfgname) const\r
+{\r
+ // Evaluate the config name and set the individual parameters\r
+\r
+ // protect\r
+ if (!AliTRDcalibDB::Instance()) {\r
+ AliError("Could not create an instance of AliTRDcalibDB!");\r
+ return;\r
+ }\r
+\r
+ TString cfg = "", par = "", pars = "";\r
+ Int_t nPar = AliTRDcalibDB::Instance()->GetNumberOfParsDCS(cfgname);\r
+ if (nPar == 0) return;\r
+\r
+ for (Int_t i=1; i<=nPar; i++) {\r
+ // Get the configuration parameter\r
+ AliTRDcalibDB::Instance()->GetDCSConfigParOption(cfgname, i, 0, cfg);\r
+\r
+ // Set Parameters accordingly\r
+ if (i == AliTRDcalibDB::kFltrSet) fDCSFEEObj->SetFilterType(cfg);\r
+ if (i == AliTRDcalibDB::kTrigSet) fDCSFEEObj->SetTriggerSetup(cfg);\r
+ if (i == AliTRDcalibDB::kAddOpti) fDCSFEEObj->SetAddOptions(cfg);\r
+ if (i == AliTRDcalibDB::kTimebin) fDCSFEEObj->SetNumberOfTimeBins(AliTRDcalibDB::Instance()->ExtractTimeBinsFromString(cfg));\r
+ if (i == AliTRDcalibDB::kReadout) fDCSFEEObj->SetReadoutParam(cfg);\r
+ if (i == AliTRDcalibDB::kTrkMode) fDCSFEEObj->SetTrackletMode(cfg);\r
+\r
+ // Set options of parameters accordingly\r
+ Int_t nOpt = AliTRDcalibDB::Instance()->GetNumberOfOptsDCS(cfgname, i);\r
+ if (nOpt == 0) continue;\r
+\r
+ for (Int_t j=1; j<=nOpt; j++) {\r
+ // Get the parameter option\r
+ AliTRDcalibDB::Instance()->GetDCSConfigParOption(cfgname, i, j, par);\r
+\r
+ if (i == AliTRDcalibDB::kReadout) {\r
+ if (par.EqualTo("stat")) fDCSFEEObj->SetFastStatNoise(1);\r
+ }\r
+ if (i == AliTRDcalibDB::kTrkMode) {\r
+ if ((j > 1) && (par.Length() != 0)) pars += "-";\r
+ pars += par;\r
+ }\r
+ // SetTCFilterWeight, SetTCFilterShortDecPar, SetTCFilterLongDecPar might be filled here, too\r
+ // SetSingleHitThres, SetThreePadClustThres, SetSelectiveNoZS, SetTestPattern might be filled here, too\r
+ }\r
+\r
+ fDCSFEEObj->SetTrackletDef(pars);\r
+ }\r
+}\r
+\r
//_____________________________________________________________________________\r
void AliTRDSaxHandler::OnStartDocument() const\r
{\r
// if there is a new DCS element put it in the correct array\r
if (CompareString(tagName, "DCS")) {\r
if (fSystem == kInsideFEE) {\r
- fDCSFEEObj = new AliTRDCalDCSFEE(name,dcsTitle);\r
+ fDCSFEEObj = new AliTRDCalDCSFEEv2();\r
fDCSFEEObj->SetDCSid(dcsId);\r
}\r
if (fSystem == kInsidePTR) {\r
// store informations of the FEE DCS-Board\r
if (fSystem == kInsideFEE) {\r
if (CompareString(tagName, "DNR")) fDCSFEEObj->SetStatusBit(fContent.Atoi());\r
- if (CompareString(tagName, "CFGNME")) fDCSFEEObj->SetConfigName(fContent);\r
if (CompareString(tagName, "CFGTAG")) fDCSFEEObj->SetConfigTag(fContent.Atoi());\r
if (CompareString(tagName, "CFGVRSN")) fDCSFEEObj->SetConfigVersion(fContent);\r
- if (CompareString(tagName, "NTB")) fDCSFEEObj->SetNumberOfTimeBins(fContent.Atoi());\r
if (CompareString(tagName, "SM-ID")) fDCSFEEObj->SetSM(fContent.Atoi());\r
if (CompareString(tagName, "STACK-ID")) fDCSFEEObj->SetStack(fContent.Atoi());\r
if (CompareString(tagName, "LAYER-ID")) fDCSFEEObj->SetLayer(fContent.Atoi());\r
- if (CompareString(tagName, "SINGLEHITTHRES")) fDCSFEEObj->SetSingleHitThres(fContent.Atoi());\r
- if (CompareString(tagName, "THRPADCLSTHRS")) fDCSFEEObj->SetThreePadClustThres(fContent.Atoi());\r
- if (CompareString(tagName, "SELNOZS")) fDCSFEEObj->SetSelectiveNoZS(fContent.Atoi());\r
- if (CompareString(tagName, "FASTSTATNOISE")) fDCSFEEObj->SetFastStatNoise(fContent.Atoi());\r
- if (CompareString(tagName, "FILTWEIGHT")) fDCSFEEObj->SetTCFilterWeight(fContent.Atoi());\r
- if (CompareString(tagName, "FILTSHRTDCYPRM")) fDCSFEEObj->SetTCFilterShortDecPar(fContent.Atoi());\r
- if (CompareString(tagName, "FILTLNGDCYPRM")) fDCSFEEObj->SetTCFilterLongDecPar(fContent.Atoi());\r
- if (CompareString(tagName, "FLTR")) fDCSFEEObj->SetFilterType(fContent);\r
- if (CompareString(tagName, "READOUTPAR")) fDCSFEEObj->SetReadoutParam(fContent);\r
- if (CompareString(tagName, "TESTPATTERN")) fDCSFEEObj->SetTestPattern(fContent);\r
- if (CompareString(tagName, "TRCKLTMODE")) fDCSFEEObj->SetTrackletMode(fContent);\r
- if (CompareString(tagName, "TRCKLTDEF")) fDCSFEEObj->SetTrackletDef(fContent);\r
- if (CompareString(tagName, "TRIGGERSETUP")) fDCSFEEObj->SetTriggerSetup(fContent);\r
- if (CompareString(tagName, "ADDOPTIONS")) fDCSFEEObj->SetAddOptions(fContent);\r
+ if (CompareString(tagName, "CFGNME")) {\r
+ fDCSFEEObj->SetConfigName(fContent);\r
+ ParseConfigName(fContent);\r
+ }\r
if (CompareString(tagName, "gaintbl")) {\r
fLevel1Tag = kInsideNone;\r
fCurrentROB = -1;\r
if (fLevel1Tag == kInsideGainTable) {\r
if (CompareString(tagName, "name")) fDCSFEEObj->SetGainTableName(fContent);\r
if (CompareString(tagName, "desc")) fDCSFEEObj->SetGainTableDesc(fContent);\r
- if (CompareString(tagName, "adcdac")) fDCSFEEObj->SetGainTableAdcdac(fCurrentROB, fCurrentMCM, fContent.Atoi());\r
- if (CompareString(tagName, "fgfn")) fDCSFEEObj->SetGainTableFgfn(fCurrentROB, fCurrentMCM, fCurrentADC, fContent.Atoi());\r
- if (CompareString(tagName, "fgan")) fDCSFEEObj->SetGainTableFgan(fCurrentROB, fCurrentMCM, fCurrentADC, fContent.Atoi());\r
+ if (fCurrentROB>=0 && fCurrentMCM>=0) {\r
+ if (CompareString(tagName, "adcdac")) fDCSFEEObj->SetGainTableAdcdac(fCurrentROB, fCurrentMCM, fContent.Atoi());\r
+ if (fCurrentADC>=0) {\r
+ if (CompareString(tagName, "fgfn")) fDCSFEEObj->SetGainTableFgfn(fCurrentROB, fCurrentMCM, fCurrentADC, fContent.Atoi());\r
+ if (CompareString(tagName, "fgan")) fDCSFEEObj->SetGainTableFgan(fCurrentROB, fCurrentMCM, fCurrentADC, fContent.Atoi());\r
+ }\r
+ }\r
}\r
if (fInsideRstate == 1) {\r
if (fCurrentROB>=0 && fCurrentMCM>=0) {\r