]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TRD/AliTRDcalibDB.cxx
modify objects by default (setting links tracks to clusters of original objects)
[u/mrichter/AliRoot.git] / TRD / AliTRDcalibDB.cxx
index aba9909ca8621f7d93a2524b520fe72d9566393b..3ea1e829ce890096b17b21d86365e272f7d6b22a 100644 (file)
@@ -1180,14 +1180,15 @@ void AliTRDcalibDB::GetGlobalConfigurationVersion(TString &version)
 }
 
 //_____________________________________________________________________________
-Int_t AliTRDcalibDB::GetNumberOfParsDCS(TString cname)
+Int_t AliTRDcalibDB::GetNumberOfParsDCS(TString cname, Char_t delimiter)
 {
   // Get the number of configuration parameters from the DCS config
 
-  TString cdelim = "_";
-  TObjArray *carr = cname.Tokenize(cdelim);
-  return carr->GetEntries() - 1; // -1 for the "cf"
-
+  //AliInfo(Form("\"%s\" tokenized by \"%c\"", cname.Data(), delimiter));
+  if(!cname.Length()) return -1;  // -1 for the "cf"
+  Int_t nconf(0);
+  for(Int_t ich(1); ich<cname.Length()-1; ich++){ if(cname[ich]==delimiter) nconf++;}
+  return nconf;
 }
 
 //_____________________________________________________________________________
@@ -1195,22 +1196,20 @@ Int_t AliTRDcalibDB::GetNumberOfOptsDCS(TString cname, Int_t cfgType)
 {
   // Get the number of options of a given configuration parameter from DCS
 
-  TString cdelim = "_";
-  TString odelim = "-";
-
-  TObjArray *carr = cname.Tokenize(cdelim);
-  Int_t nconfig = carr->GetEntries();
+  Char_t cdelim = '_', // define the delimiters
+         odelim = '-';
+  Int_t nconfig = GetNumberOfParsDCS(cname, cdelim);
 
   // protect
-  if ((nconfig == 0) || ((nconfig-1) < cfgType)) {
+  if ((nconfig == -1) || (nconfig < cfgType)) {
     AliError("Not enough parameters in DCS configuration name!");
     return 0;
   }
 
-  TString fullcfg = ((TObjString*)carr->At(cfgType))->GetString();
-  TObjArray *oarr = fullcfg.Tokenize(odelim);
-  return oarr->GetEntries() -1; // -1 for the parameter name
-
+  TObjArray *carr = cname.Tokenize(cdelim);
+  Int_t nopt = GetNumberOfParsDCS(((TObjString*)carr->At(cfgType))->GetString(), odelim);
+  carr->Delete(); delete carr;
+  return nopt;
 }
 
 //_____________________________________________________________________________
@@ -1222,36 +1221,35 @@ void AliTRDcalibDB::GetDCSConfigParOption(TString cname, Int_t cfgType, Int_t op
   // option >  0 returns the optional parameter Nr. (option) of the configuration (cfgType)
   //
 
-  // define the delimiters
-  TString cdelim = "_";
-  TString odelim = "-";
-
-  TObjArray *carr = cname.Tokenize(cdelim);
-  Int_t nconfig = carr->GetEntries();
+  Char_t cdelim = '_', // define the delimiters
+         odelim = '-';
 
+  Int_t nconfig = GetNumberOfParsDCS(cname, cdelim);
   // protect
-  if (nconfig == 0) {
+  if (nconfig == -1) {
     AliError("DCS configuration name empty!");
     cfgo = "";
     return;
-  } else if ((nconfig-1) < cfgType) {
+  } else if (nconfig < cfgType) {
     AliError("Not enough parameters in DCS configuration name!");
     cfgo = "";
     return;
   }
 
-  TString fullcfg = ((TObjString*)carr->At(cfgType))->GetString();
-  TObjArray *oarr = fullcfg.Tokenize(odelim);
-  Int_t noptions = oarr->GetEntries();
-
+  TObjArray *carr = cname.Tokenize(cdelim);
+  TString cfgString(((TObjString*)carr->At(cfgType))->GetString());
+  Int_t noptions = GetNumberOfParsDCS(cfgString, odelim);
   // protect
-  if ((noptions-1) < option) {
+  if (noptions < option) {
     AliError("Not enough options in DCS configuration name!");
     cfgo = "";
+    carr->Delete(); delete carr;
     return;
   }
-
+  TObjArray *oarr = cfgString.Tokenize(odelim);
   cfgo = ((TObjString*)oarr->At(option))->GetString();
+  carr->Delete(); delete carr;
+  oarr->Delete(); delete oarr;
   return;
 
 }
@@ -1513,6 +1511,23 @@ Bool_t AliTRDcalibDB::IsChamberBadCalibrated(Int_t det)
 
 }
 
+//_____________________________________________________________________________
+Bool_t AliTRDcalibDB::IsChamberNotCalibrated(Int_t det)
+{
+  //
+  // Returns status, see name of functions for details ;-)
+  //
+
+  const AliTRDCalChamberStatus     * cal = dynamic_cast<const AliTRDCalChamberStatus *> 
+                                           (GetCachedCDBObject(kIDChamberStatus));
+  if (!cal) {
+    return -1;
+  }
+
+  return cal->IsNotCalibrated(det);
+
+}
+
 //_____________________________________________________________________________
 const AliTRDCalPID *AliTRDcalibDB::GetPIDObject(AliTRDpidUtil::ETRDPIDMethod method)
 {
@@ -1547,7 +1562,7 @@ AliTRDPIDResponse *AliTRDcalibDB::GetPIDResponse(AliTRDPIDResponse::ETRDPIDMetho
 
     // Load Reference Histos from OCDB
 //    if(method == AliTRDPIDResponse::kLQ1D){
-    fPIDResponse->SetPIDmethod(AliTRDPIDResponse::kLQ1D);
+    //fPIDResponse->SetPIDmethod(AliTRDPIDResponse::kLQ1D);
     const TObjArray *references = dynamic_cast<const TObjArray *>(GetCachedCDBObject(kIDPIDLQ1D));
 
     TIter refs(references);
@@ -1811,10 +1826,8 @@ AliTRDtrapConfig* AliTRDcalibDB::GetTrapConfig()
   else {
     if ((fTrapConfigName.Length() <= 0) || (fTrapConfigVersion.Length() <= 0)) {
       // query the configuration to be used
-      TString configName;
-      this->GetGlobalConfiguration(configName);
-      TString configVersion;
-      this->GetGlobalConfigurationVersion(configVersion);
+      this->GetGlobalConfiguration(fTrapConfigName);
+      this->GetGlobalConfigurationVersion(fTrapConfigVersion);
     }
 
     // try to load the requested configuration
@@ -1823,7 +1836,8 @@ AliTRDtrapConfig* AliTRDcalibDB::GetTrapConfig()
     // if we still don't have a valid TRAPconfig, create a default one
     if (!fTrapConfig) {
       AliWarning("Falling back to default configuration");
-      fTrapConfig = new AliTRDtrapConfig("default", "default TRAP configuration");
+      static AliTRDtrapConfig trapConfigDefault("default", "default TRAP configuration");
+      fTrapConfig = &trapConfigDefault;
       AliTRDtrapConfigHandler cfgHandler(fTrapConfig);
       cfgHandler.Init();
       cfgHandler.LoadConfig();