Updates to RAW package. Used during the Computing DC.
authorcvetan <cvetan@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 13 Jun 2005 08:04:22 +0000 (08:04 +0000)
committercvetan <cvetan@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 13 Jun 2005 08:04:22 +0000 (08:04 +0000)
16 files changed:
RAW/AliMDC.cxx
RAW/AliMDC.h
RAW/AliRawCastorDB.cxx
RAW/AliRawCastorDB.h
RAW/AliRawDB.cxx
RAW/AliRawDB.h
RAW/AliRawNullDB.cxx
RAW/AliRawNullDB.h
RAW/AliRawRFIODB.cxx
RAW/AliRawRFIODB.h
RAW/AliRawRootdDB.cxx
RAW/AliRawRootdDB.h
RAW/AliRunDB.cxx
RAW/AliTagDB.cxx
RAW/alimdc_main.cxx
RAW/mdc.cxx

index d1c94af..19a6d5e 100644 (file)
@@ -77,7 +77,6 @@
 
 #include "AliMDC.h"
 
-
 ClassImp(AliMDC)
 
 
@@ -208,7 +207,7 @@ Int_t AliMDC::Open(EWriteMode mode, const char* fileName)
   if (fRawDB->IsZombie()) {
     delete fRawDB;
     fRawDB = NULL;
-    return 1;
+    return -1;
   }
   Info("Open", "Filling raw DB %s\n", fRawDB->GetDBName());
 
@@ -378,7 +377,10 @@ Int_t AliMDC::ProcessEvent(void* event, Bool_t isIovecArray)
   // Clean up HLT ESD for the next event
   if (fESD) fESD->Reset();
 
-  return nBytes;
+  if(nBytes >= 0)
+    return nBytes;
+  else
+    return kErrWriting;
 }
 
 //______________________________________________________________________________
@@ -396,15 +398,16 @@ Int_t AliMDC::Close()
 {
 // close the current raw DB file
 
-  if (!fRawDB) return 1;
+  if (!fRawDB) return -1;
 
   fRawDB->WriteStats(fStats);
   fRunDB->Update(fStats);
+  Int_t filesize = fRawDB->Close();
   delete fRawDB;
   fRawDB = NULL;
   delete fStats;
   fStats = NULL;
-  return 0;
+  return filesize;
 }
 
 //______________________________________________________________________________
@@ -545,6 +548,8 @@ Int_t AliMDC::Run(const char* inputFile, Bool_t loop,
     }
 
     Int_t result = ProcessEvent(event, !inputFile);
+    if(result < -1)
+      Error("Run", "error writing data. Error code: %d",result);
 
     if (result >= 0) {
       numEvents++;
index 2e238e0..eecf241 100644 (file)
@@ -40,15 +40,16 @@ class AliMDC : public TObject {
 public:
    enum EWriteMode { kLOCAL, kRFIO, kROOTD, kCASTOR, kDEVNULL };
    enum EFilterMode { kFilterOff, kFilterTransparent, kFilterOn };
-   enum EErrorCode { kFilterReject = 0, 
-                    kErrStartEndRun = -1, 
+   enum EErrorCode { kErrStartEndRun = -1, 
                     kErrHeader = -2, 
                     kErrHeaderSize = -3, 
                     kErrSubHeader = -4, 
                     kErrDataSize = -5, 
                     kErrEquipmentHeader = -6, 
                     kErrEquipment = -7,
-                     kErrFileSize = -8 };
+                     kErrFileSize = -8,
+                    kFilterReject = -9,
+                     kErrWriting = -10 };
 
    AliMDC(Int_t compress, Bool_t deleteFiles, 
          EFilterMode filterMode = kFilterTransparent, 
index f57921b..9f81676 100644 (file)
@@ -103,21 +103,29 @@ const char *AliRawCastorDB::GetFileName() const
 }
 
 //______________________________________________________________________________
-void AliRawCastorDB::Close()
+Int_t AliRawCastorDB::Close()
 {
    // Close raw CASTOR/rootd DB.
 
-   if (!fRawDB) return;
+   if (!fRawDB) return 0;
+
+   if (!fRawDB->IsOpen()) return 0;
 
    fRawDB->cd();
 
    // Write the tree.
-   fTree->Write();
-   if (fESDTree) fESDTree->Write();
+   Bool_t error = kFALSE;
+   if (fTree->Write() == 0)
+     error = kTRUE;
+   if (fESDTree)
+     if (fESDTree->Write() == 0)
+       error = kTRUE;
 
    // Close DB, this also deletes the fTree
    fRawDB->Close();
 
+   Int_t filesize = fRawDB->GetEND();
+
    if (fDeleteFiles) {
       TUrl u(fRawDB->GetName());
       gSystem->Exec(Form("rfrm %s", u.GetFile()));
@@ -125,4 +133,9 @@ void AliRawCastorDB::Close()
 
    delete fRawDB;
    fRawDB = 0;
+
+   if(!error)
+     return filesize;
+   else
+     return -1;
 }
index 88766bf..e744bab 100644 (file)
@@ -26,7 +26,7 @@ public:
 
    const char *GetOpenOption() const { return "-RECREATE"; }
    Int_t       GetNetopt() const { return 0; }
-   void        Close();
+   Int_t       Close();
 
 private:
    const char *GetFileName() const;
index 1810a69..1bf1e61 100644 (file)
@@ -185,7 +185,7 @@ Bool_t AliRawDB::Create(const char* fileName)
 {
    // Create a new raw DB.
 
-   const Int_t kMaxRetry = 200;
+   const Int_t kMaxRetry = 1;
    const Int_t kMaxSleep = 1;      // seconds
    const Int_t kMaxSleepLong = 10; // seconds
    Int_t retry = 0;
@@ -203,8 +203,8 @@ again:
    retry++;
 
    fRawDB = TFile::Open(fname, GetOpenOption(),
-                        Form("ALICE MDC%d raw DB", kMDC), fCompress,
-                        GetNetopt());
+                       Form("ALICE MDC%d raw DB", kMDC), fCompress,
+                       GetNetopt());
    if (!fRawDB) {
       if (retry < kMaxRetry) {
          Warning("Create", "failure to open file, sleeping %d %s before retrying...",
@@ -275,26 +275,36 @@ void AliRawDB::MakeTree()
 }
 
 //______________________________________________________________________________
-void AliRawDB::Close()
+Int_t AliRawDB::Close()
 {
    // Close raw DB.
+   if (!fRawDB) return 0;
 
-   if (!fRawDB) return;
+   if (!fRawDB->IsOpen()) return 0;
 
    fRawDB->cd();
 
    // Write the tree.
-   fTree->Write();
-   if (fESDTree) fESDTree->Write();
+   Bool_t error = kFALSE;
+   if (fTree->Write() == 0)
+     error = kTRUE;
+   if (fESDTree)
+     if (fESDTree->Write() == 0)
+       error = kTRUE;
 
    // Close DB, this also deletes the fTree
    fRawDB->Close();
 
+   Int_t filesize = fRawDB->GetEND();
+
    if (fDeleteFiles) {
       gSystem->Unlink(fRawDB->GetName());
       delete fRawDB;
       fRawDB = 0;
-      return;
+      if(!error)
+       return filesize;
+      else
+       return -1;
    }
 
    // Create semaphore to say this file is finished
@@ -303,6 +313,10 @@ void AliRawDB::Close()
 
    delete fRawDB;
    fRawDB = 0;
+   if(!error)
+     return filesize;
+   else
+     return -1;
 }
 
 //______________________________________________________________________________
@@ -311,9 +325,16 @@ Int_t AliRawDB::Fill()
    // Fill the trees and return the number of written bytes
 
    Double_t bytes = fRawDB->GetBytesWritten();
-   fTree->Fill();
-   if (fESDTree) fESDTree->Fill();
-   return Int_t(fRawDB->GetBytesWritten() - bytes);
+   Bool_t error = kFALSE;
+   if (fTree->Fill() == -1)
+     error = kTRUE;
+   if (fESDTree) 
+     if (fESDTree->Fill() == -1)
+       error = kTRUE;
+   if(!error)
+     return Int_t(fRawDB->GetBytesWritten() - bytes);
+   else
+     return -1;
 }
 
 //______________________________________________________________________________
index bd178fe..e509896 100644 (file)
@@ -42,12 +42,12 @@ public:
            AliESD *esd,
            Int_t compress,
             const char* fileName = NULL);
-   virtual ~AliRawDB() { Close(); }
+   virtual ~AliRawDB() { if(Close()==-1) Error("~AliRawDB", "cannot close output file!"); }
 
    virtual const char *GetOpenOption() const { return "RECREATE"; }
    virtual Int_t       GetNetopt() const { return 0; }
    virtual Bool_t      Create(const char* fileName = NULL);
-   virtual void        Close();
+   virtual Int_t       Close();
    Int_t               Fill();
    Int_t               GetTotalSize();
 
index 7455f9d..eefde1c 100644 (file)
@@ -48,21 +48,33 @@ const char *AliRawNullDB::GetFileName() const
 }
 
 //______________________________________________________________________________
-void AliRawNullDB::Close()
+Int_t AliRawNullDB::Close()
 {
    // Close raw RFIO DB.
 
-   if (!fRawDB) return;
+   if (!fRawDB) return 0;
+
+   if (!fRawDB->IsOpen()) return 0;
 
    fRawDB->cd();
 
    // Write the tree.
-   fTree->Write();
-   if (fESDTree) fESDTree->Write();
+   Bool_t error = kFALSE;
+   if (fTree->Write() == 0)
+     error = kTRUE;
+   if (fESDTree)
+     if (fESDTree->Write() == 0)
+       error = kTRUE;
 
    // Close DB, this also deletes the fTree
    fRawDB->Close();
 
+   Int_t filesize = fRawDB->GetEND();
+
    delete fRawDB;
    fRawDB = 0;
+   if(!error)
+     return filesize;
+   else
+     return -1;
 }
index 4f462ad..0d0ffb5 100644 (file)
@@ -24,7 +24,7 @@ public:
                const char* fileName);
    ~AliRawNullDB() { Close(); }
 
-   void Close();
+   Int_t Close();
 
 private:
    const char *GetFileName() const;
index 899eb33..8b8dac2 100644 (file)
@@ -103,21 +103,29 @@ const char *AliRawRFIODB::GetFileName() const
 }
 
 //______________________________________________________________________________
-void AliRawRFIODB::Close()
+Int_t AliRawRFIODB::Close()
 {
    // Close raw RFIO DB.
 
-   if (!fRawDB) return;
+   if (!fRawDB) return 0;
+
+   if (!fRawDB->IsOpen()) return 0;
 
    fRawDB->cd();
 
    // Write the tree.
-   fTree->Write();
-   if (fESDTree) fESDTree->Write();
+   Bool_t error = kFALSE;
+   if (fTree->Write() == 0)
+     error = kTRUE;
+   if (fESDTree)
+     if (fESDTree->Write() == 0)
+       error = kTRUE;
 
    // Close DB, this also deletes the fTree
    fRawDB->Close();
 
+   Int_t filesize = fRawDB->GetEND();
+
    if (fDeleteFiles) {
       TUrl u(fRawDB->GetName());
       gSystem->Exec(Form("rfrm %s", u.GetFile()));
@@ -125,4 +133,9 @@ void AliRawRFIODB::Close()
 
    delete fRawDB;
    fRawDB = 0;
+
+   if(!error)
+     return filesize;
+   else
+     return -1;
 }
index 529cfe1..436d56d 100644 (file)
@@ -24,7 +24,7 @@ public:
                const char* fileName = NULL);
    ~AliRawRFIODB() { Close(); }
 
-   void Close();
+   Int_t Close();
 
 private:
    const char *GetFileName() const;
index 1de0c9a..542e3de 100644 (file)
@@ -87,21 +87,29 @@ const char *AliRawRootdDB::GetFileName() const
 }
 
 //______________________________________________________________________________
-void AliRawRootdDB::Close()
+Int_t AliRawRootdDB::Close()
 {
    // Close raw rootd DB.
 
-   if (!fRawDB) return;
+   if (!fRawDB) return 0;
+
+   if (!fRawDB->IsOpen()) return 0;
 
    fRawDB->cd();
 
    // Write the tree.
-   fTree->Write();
-   if (fESDTree) fESDTree->Write();
+   Bool_t error = kFALSE;
+   if (fTree->Write() == 0)
+     error = kTRUE;
+   if (fESDTree)
+     if (fESDTree->Write() == 0)
+       error = kTRUE;
 
    // Close DB, this also deletes the fTree
    fRawDB->Close();
 
+   Int_t filesize = fRawDB->GetEND();
+
 #if 0
    // can use services of TFTP
    if (fDeleteFiles)
@@ -110,4 +118,8 @@ void AliRawRootdDB::Close()
 
    delete fRawDB;
    fRawDB = 0;
+   if(!error)
+     return filesize;
+   else
+     return -1;
 }
index d226c4b..43532f3 100644 (file)
@@ -24,7 +24,7 @@ public:
                 const char* fileName = NULL);
    ~AliRawRootdDB() { Close(); }
 
-   void Close();
+   Int_t Close();
 
 private:
    const char *GetFileName() const;
index e89333f..90fc4be 100644 (file)
@@ -57,6 +57,12 @@ AliRunDB::AliRunDB(const char* localFS, Bool_t rdbms,
    // check that fs exists (crude check fails if fs is a file)
    gSystem->MakeDirectory(localFS);
 
+   // Put wide read-write permissions
+   if(gSystem->Chmod(localFS,1023)) {
+     Error("AliRunDB","can't set permissions for run DB directory");
+     return;
+   }
+
    strcpy(hostname, gSystem->HostName());
 
    char *s;
@@ -69,6 +75,12 @@ AliRunDB::AliRunDB(const char* localFS, Bool_t rdbms,
       fRunDB = new TFile(filename, "UPDATE");
    else
       fRunDB = new TFile(filename, "CREATE", Form("ALICE MDC%d Run DB", AliRawDB::kMDC));
+
+   // Put wide read-write permissions
+   if(gSystem->Chmod(filename,438)) {
+     Error("AliRunDB","can't set permissions for run DB file");
+     return;
+   }
 }
 
 //______________________________________________________________________________
index b77044d..1fa4218 100644 (file)
@@ -84,6 +84,12 @@ Bool_t AliTagDB::Create(const char* fileName)
       fTagDB = 0;
       return kFALSE;
    }
+   // Put wide read-write permissions
+   if(gSystem->Chmod(name,438)) {
+     Error("Create", "can't set permissions for tag DB file");
+     fTagDB = 0;
+     return kFALSE;
+   }
 
    // Create ROOT Tree object container
    fTree = new TTree("TAG", Form("ALICE MDC%d header data tree", AliRawDB::kMDC));
index 44f41e8..61b19dd 100644 (file)
@@ -160,7 +160,8 @@ int main(int argc, char **argv)
    const char* castorFS   = castorStr.Data();
 #endif
    const char* rootdFS    = "root://localhost//tmp/mdc1";
-   const char* alienHost  = "alien://aliens7.cern.ch:15000/?direct";
+   //   const char* alienHost  = "alien://aliens7.cern.ch:15000/?direct";
+   const char* alienHost  = NULL;
    const char* alienDir   = "/alice_mdc/DC";
 
    // User defined file system locations
index d142c45..67a32b8 100644 (file)
@@ -81,4 +81,5 @@ void  alimdcEnableDebug()
   AliLog::SetGlobalLogLevel(AliLog::kMaxType);
   AliLog::SetGlobalDebugLevel(AliLog::kMaxType);
   AliLog::SetPrintRepetitions(kFALSE);
+  AliLog::SetHandleRootMessages(kTRUE);
 }