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 d1c94afabbc735be2a6d8c9e790f6d8ef8a59e3b..19a6d5e8e22f032c44af51aa41f871174d81fa3a 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 2e238e010709ab5168b2cf39f60e2ec10ff9694b..eecf2417b3396ac76c037c24856df1df0927d2dd 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 f57921b0f8592d8d6486e37b9629e09771197578..9f81676af90608664ecacba40608b230d4ae92bc 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 88766bf6d19c5505784f75eddc77269ca7a0c0f6..e744bab35b5fbde2dee99aa06bd4dd56edcb512b 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 1810a69b595f8ad38477951d1b7c8248a38f9b17..1bf1e618d5976b3e91c3ba8db8402351d4cbd20a 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 bd178fe36604dc8d17a405e1797fdc11c09317e2..e5098964a38e84de720f598c1032d5b5bd93b7e2 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 7455f9d84215418dd6f7df67d9520dd0a979172a..eefde1cf9c45692675c39319cced5f6b8bc4d126 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 4f462adafd1564357d2e07095be50fc9dfe2d74e..0d0ffb5a623b1e1159a8a536106d1b9ab5622805 100644 (file)
@@ -24,7 +24,7 @@ public:
                const char* fileName);
    ~AliRawNullDB() { Close(); }
 
-   void Close();
+   Int_t Close();
 
 private:
    const char *GetFileName() const;
index 899eb3346f61c1f674834ee7b4975c622e1e218d..8b8dac2785cb927bab35ce1e5198bb36266bcbc7 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 529cfe177c8c60c19d679aed38077ef27c958045..436d56ddb260de1742dd1cdc3851c743b256e247 100644 (file)
@@ -24,7 +24,7 @@ public:
                const char* fileName = NULL);
    ~AliRawRFIODB() { Close(); }
 
-   void Close();
+   Int_t Close();
 
 private:
    const char *GetFileName() const;
index 1de0c9a30bd5db16cc57526b4b3de7c877949a66..542e3de5d00e43345717e679884efadd5d411d87 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 d226c4bb89012d433a3586297b594210536a8fed..43532f3b9612dca9a5d482a048c6a9fda5276f8c 100644 (file)
@@ -24,7 +24,7 @@ public:
                 const char* fileName = NULL);
    ~AliRawRootdDB() { Close(); }
 
-   void Close();
+   Int_t Close();
 
 private:
    const char *GetFileName() const;
index e89333f6857413c38af216129c3b491c2ffbda37..90fc4be54d383adcfaa02c9f0ee60994452c3415 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 b77044d7ba11747069185ace37e3d429893f78ef..1fa421887316b6992ebade38d6119ae770ef0d32 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 44f41e810ebbc52c9b77cd0ceae447d4f308cf67..61b19dd7b60e13e7c5c20de37e946b1b1369300e 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 d142c454524027b9a18f8a1b05fed3f4fc675ef8..67a32b81d2c06e57529f6267bb7de216a1e682e9 100644 (file)
@@ -81,4 +81,5 @@ void  alimdcEnableDebug()
   AliLog::SetGlobalLogLevel(AliLog::kMaxType);
   AliLog::SetGlobalDebugLevel(AliLog::kMaxType);
   AliLog::SetPrintRepetitions(kFALSE);
+  AliLog::SetHandleRootMessages(kTRUE);
 }