+//______________________________________________________________________________
+Bool_t AliITSHandleDaSSD::ReadStaticBadChannelsMap(const Char_t *filename)
+{
+// Reads Static Bad Channels Map from the file
+ TFile *bcfile;
+ if (!filename) {
+ AliWarning("No file name is specified for Static Bad Channels Map!");
+ return kFALSE;
+ }
+ bcfile = new TFile(filename, "READ");
+ if (bcfile->IsZombie()) {
+ AliWarning(Form("Error reading file %s with Static Bad Channels Map!", filename));
+ return kFALSE;
+ }
+ bcfile->GetObject("BadChannels;1", fStaticBadChannelsMap);
+ if (!fStaticBadChannelsMap) {
+ AliWarning("Error fStaticBadChannelsMap == NULL!");
+ bcfile->Close();
+ delete bcfile;
+ return kFALSE;
+ }
+ bcfile->Close();
+ delete bcfile;
+ return kTRUE;
+}
+
+
+
+Bool_t AliITSHandleDaSSD::ReadDDLModuleMap(const Char_t *filename)
+{
+// Reads the SSD DDL Map from the file
+ ifstream ddlmfile;
+ AliRawReaderDate *rwr = NULL;
+ AliITSRawStreamSSD *rsm = NULL;
+ void *event = NULL;
+ if (fDDLModuleMap) { delete [] fDDLModuleMap; fDDLModuleMap = NULL;}
+ fDDLModuleMap = new (nothrow) Int_t [fgkNumberOfSSDDDLs * fgkNumberOfSSDModulesPerDdl];
+ if (!fDDLModuleMap) {
+ AliWarning("Error allocation memory for DDL Map!");
+ return kFALSE;
+ }
+ if (!filename) {
+ AliWarning("No file name is specified for SSD DDL Map, using the one from AliITSRawStreamSSD!");
+ rwr = new AliRawReaderDate(event);
+ rsm = new AliITSRawStreamSSD(rwr);
+ rsm->Setv11HybridDDLMapping();
+ for (Int_t ddli = 0; ddli < fgkNumberOfSSDDDLs; ddli++)
+ for (Int_t mi = 0; mi < fgkNumberOfSSDModulesPerDdl; mi++)
+ fDDLModuleMap[(ddli * fgkNumberOfSSDModulesPerDdl + mi)] = rsm->GetModuleNumber(ddli, mi);
+ if (rsm) delete rsm;
+ if (rwr) delete rwr;
+ return kTRUE;
+ }
+ ddlmfile.open(filename, ios::in);
+ if (!ddlmfile.is_open()) {
+ AliWarning(Form("Error reading file %s with SSD DDL Map!", filename));
+ if (fDDLModuleMap) { delete [] fDDLModuleMap; fDDLModuleMap = NULL;}
+ return kFALSE;
+ }
+ Int_t ind = 0;
+ while((!ddlmfile.eof()) && (ind < (fgkNumberOfSSDDDLs * fgkNumberOfSSDModulesPerDdl))) {
+ ddlmfile >> fDDLModuleMap[ind++];
+ }
+ if (ind != (fgkNumberOfSSDDDLs * fgkNumberOfSSDModulesPerDdl))
+ AliWarning(Form("Only %i (< %i) entries were read from DDL Map!", ind, (fgkNumberOfSSDDDLs * fgkNumberOfSSDModulesPerDdl)));
+ ddlmfile.close();
+ return kTRUE;
+}
+
+
+