]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSOnlineSPDscan.cxx
fix warnings
[u/mrichter/AliRoot.git] / ITS / AliITSOnlineSPDscan.cxx
index ecb2c66f7d3e183893e70e04dc771c5658176a78..8542593be1428952a794cc885a5fa0afcf9ead37 100644 (file)
 #include "AliITSOnlineSPDHitArray.h"
 #include "AliITSOnlineSPDHitEvent.h"
 
-ClassImp(AliITSOnlineSPDscan)
-
-AliITSOnlineSPDscan::AliITSOnlineSPDscan(Char_t *fileName) :
+AliITSOnlineSPDscan::AliITSOnlineSPDscan(const Char_t *fileName, Bool_t readFromGridFile) :
   fFile(NULL),
   fWrite(kFALSE),
   fCurrentStep(-1),
   fModified(kFALSE),
   fInfoModified(kFALSE),
-  fScanInfo(NULL)
+  fScanInfo(NULL),
+  fFileName(fileName)
 {
   // constructor, open file for reading or writing
-  sprintf(fFileName,"%s",fileName);
   // look for a previously saved info object 
   // (if file not found create a new one and return, else read)
-  FILE* fp0 = fopen(fFileName, "r");
-  if (fp0 == NULL) {
+
+  Bool_t bRead = readFromGridFile;
+
+  if (!bRead) {
+    FILE* fp0 = fopen(fFileName.Data(), "r");
+    if (fp0 != NULL) {
+      bRead=kTRUE;
+      fclose(fp0);
+    }
+  }
+
+  if (bRead) { // open file for reading
+    fFile = TFile::Open(fFileName.Data(), "READ");
+    if (fFile==NULL) { // grid file not found, create new local default file
+      printf("ERROR: AliITSOnlineSPDscan: File %s not found! Creating 'test999.root' file instead\n",fFileName.Data());
+      // create default empty file:
+      fFileName = "test999.root";
+      fScanInfo = new AliITSOnlineSPDscanInfo();
+      fInfoModified=kTRUE;
+      fFile = new TFile(fFileName.Data(), "RECREATE");
+      fWrite=kTRUE;
+    }
+    else { // read from file (grid or local)
+      fWrite=kFALSE;
+      fFile->GetObject("AliITSOnlineSPDscanInfo", fScanInfo);
+    }
+  }
+  else { // create new local file
     fScanInfo = new AliITSOnlineSPDscanInfo();
-    fFile = new TFile(fFileName, "RECREATE");
+    fInfoModified=kTRUE;
+    fFile = new TFile(fFileName.Data(), "RECREATE");
     fWrite=kTRUE;
   }
-  else {
-    fclose(fp0);
-    fFile = new TFile(fFileName, "READ");
-    fWrite=kFALSE;
-    fFile->GetObject("AliITSOnlineSPDscanInfo", fScanInfo);
-  }
+
   Init();
 }
 
@@ -56,7 +76,8 @@ AliITSOnlineSPDscan::AliITSOnlineSPDscan(const AliITSOnlineSPDscan& /*scan*/) :
   fCurrentStep(-1),
   fModified(kFALSE),
   fInfoModified(kFALSE),
-  fScanInfo(NULL)
+  fScanInfo(NULL),
+  fFileName(".")
 {
   printf("This object should not be copied!");
 }
@@ -80,12 +101,13 @@ AliITSOnlineSPDscan::~AliITSOnlineSPDscan() {
     if (!fWrite) {
       fFile->Close();
       delete fFile;
-      fFile = new TFile(fFileName, "UPDATE");
+      fFile = new TFile(fFileName.Data(), "UPDATE");
       fWrite=kTRUE;
     }
     fFile->Delete("AliITSOnlineSPDscanInfo;*");
     fFile->WriteTObject(fScanInfo, "AliITSOnlineSPDscanInfo");
-    fFile->Close();
+  }
+  if (fFile!=NULL) {
     delete fFile;
   }
 }
@@ -99,49 +121,6 @@ AliITSOnlineSPDscan& AliITSOnlineSPDscan::operator=(const AliITSOnlineSPDscan& s
   return *this;
 }
 
-
-//TObjArray* AliITSOnlineSPDscan::GetAsTObjArray() {
-//  TObjArray *arr = new TObjArray();
-//  arr->Add(fScanInfo);
-//  for (UInt_t step=0; step<GetNSteps(); step++) {
-//    SwitchToStep(step);
-//    for (UInt_t hs=0; hs<6; hs++) {
-//      arr->Add(fCurrentHitArray[hs]->CloneThis());
-//      arr->Add(fCurrentHitEvent[hs]->CloneThis());
-//    }
-//  }
-//  return arr;
-//}
-//
-//void AliITSOnlineSPDscan::ReadFromTObjArray(TObjArray *arr) {
-//  ClearThis();
-//  Int_t nrEntries = arr->GetEntriesFast();
-//  if (nrEntries>0 && nrEntries%2==1) {
-//    fScanInfo = (AliITSOnlineSPDscanInfo*) arr->At(0);
-//    fInfoModified=kTRUE;
-//    FillFromTObjArray(arr,nrEntries);
-//  }
-//}
-//
-//void AliITSOnlineSPDscan::FillFromTObjArray(TObjArray *arr, UInt_t nrEntries) {
-//  UInt_t index=1;
-//  UInt_t hs=0;
-//  while (index<nrEntries) {
-//    UInt_t step=(index-1)/12;
-//    SwitchToStep(step);
-//    if (index%2==1) {
-//      fCurrentHitArray[hs] = (AliITSOnlineSPDHitArray*) arr->At(index);
-//    }
-//    else {
-//      fCurrentHitEvent[hs] = (AliITSOnlineSPDHitEvent*) arr->At(index);
-//      hs++;
-//      if (hs>5) hs=0;
-//    }
-//    fModified=kTRUE;
-//    index++;
-//  }
-//}
-
 void AliITSOnlineSPDscan::ClearThis() {
   // clear this scan, close file and open new
   for (UInt_t hs=0; hs<6; hs++) {
@@ -157,7 +136,7 @@ void AliITSOnlineSPDscan::ClearThis() {
   fScanInfo->ClearThis();
   fFile->Close();
   delete fFile;
-  fFile = new TFile(fFileName, "RECREATE");
+  fFile = new TFile(fFileName.Data(), "RECREATE");
   fWrite=kTRUE;
   fFile->WriteTObject(fScanInfo, "AliITSOnlineSPDscanInfo");
   fInfoModified=kTRUE;
@@ -236,11 +215,9 @@ void AliITSOnlineSPDscan::FillGap(UInt_t nsi) {
 void AliITSOnlineSPDscan::ReadCurrentStep() {
   // read current step index into memory
   for (UInt_t hs=0; hs<6; hs++) {
-    Char_t stepName[40];
-    sprintf(stepName,"HitArray_HS%d_Step%d",hs,fCurrentStep);
-    fFile->GetObject(stepName, fCurrentHitArray[hs]);
-    Char_t stepName2[40];
-    sprintf(stepName2,"HitEvent_HS%d_Step%d",hs,fCurrentStep);
+    TString stepName = Form("HitArray_HS%d_Step%d",hs,fCurrentStep);
+    fFile->GetObject(stepName.Data(), fCurrentHitArray[hs]);
+    TString stepName2 = Form("HitEvent_HS%d_Step%d",hs,fCurrentStep);
     fFile->GetObject(stepName2, fCurrentHitEvent[hs]);
   }
 }
@@ -250,22 +227,18 @@ void AliITSOnlineSPDscan::SaveCurrentStep() {
   if (!fWrite) {
     fFile->Close();
     delete fFile;
-    fFile = new TFile(fFileName, "UPDATE");
+    fFile = new TFile(fFileName.Data(), "UPDATE");
     fWrite=kTRUE;
   }
   for (UInt_t hs=0; hs<6; hs++) {
-    Char_t stepName[40];
-    sprintf(stepName,"HitArray_HS%d_Step%d",hs,fCurrentStep);
-    Char_t stepDelete[40];
-    sprintf(stepDelete,"%s;*",stepName);
-    fFile->Delete(stepDelete);
-    fFile->WriteTObject(fCurrentHitArray[hs], stepName);
-    Char_t stepName2[40];
-    sprintf(stepName2,"HitEvent_HS%d_Step%d",hs,fCurrentStep);
-    Char_t stepDelete2[40];
-    sprintf(stepDelete2,"%s;*",stepName2);
-    fFile->Delete(stepDelete2);
-    fFile->WriteTObject(fCurrentHitEvent[hs], stepName2);
+    TString stepName = Form("HitArray_HS%d_Step%d",hs,fCurrentStep);
+    TString stepDelete = Form("%s;*",stepName.Data());
+    fFile->Delete(stepDelete.Data());
+    fFile->WriteTObject(fCurrentHitArray[hs], stepName.Data());
+    TString stepName2 = Form("HitEvent_HS%d_Step%d",hs,fCurrentStep);
+    TString stepDelete2 = Form("%s;*",stepName2.Data());
+    fFile->Delete(stepDelete2.Data());
+    fFile->WriteTObject(fCurrentHitEvent[hs], stepName2.Data());
   }
   fModified=kFALSE;
 }
@@ -455,6 +428,11 @@ void AliITSOnlineSPDscan::SetDacStep(UInt_t val){
   fScanInfo->SetDacStep(val); 
   fInfoModified=kTRUE;
 }
+void AliITSOnlineSPDscan::SetDCSVersion(UInt_t val){
+  // set dcs db version
+  fScanInfo->SetDCSVersion(val); 
+  fInfoModified=kTRUE;
+}
 void AliITSOnlineSPDscan::IncrementTriggers(UInt_t nsi) {
   // increment nr of triggers
   SwitchToStep(nsi);
@@ -503,3 +481,6 @@ UInt_t AliITSOnlineSPDscan::GetDacEnd() const {
 UInt_t AliITSOnlineSPDscan::GetDacStep() const {
   return fScanInfo->GetDacStep();
 }
+UInt_t AliITSOnlineSPDscan::GetDCSVersion() const {
+  return fScanInfo->GetDCSVersion();
+}