LCOV - code coverage report
Current view: top level - RAW/MDC - AliRawRFIODB.cxx (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 55 1.8 %
Date: 2016-06-14 17:26:59 Functions: 1 5 20.0 %

          Line data    Source code
       1             : // @(#) $Id$
       2             : // Author: Fons Rademakers  26/11/99
       3             : 
       4             : /**************************************************************************
       5             :  * Copyright(c) 1998-2003, ALICE Experiment at CERN, All rights reserved. *
       6             :  *                                                                        *
       7             :  * Author: The ALICE Off-line Project.                                    *
       8             :  * Contributors are mentioned in the code where appropriate.              *
       9             :  *                                                                        *
      10             :  * Permission to use, copy, modify and distribute this software and its   *
      11             :  * documentation strictly for non-commercial purposes is hereby granted   *
      12             :  * without fee, provided that the above copyright notice appears in all   *
      13             :  * copies and that both the copyright notice and this permission notice   *
      14             :  * appear in the supporting documentation. The authors make no claims     *
      15             :  * about the suitability of this software for any purpose. It is          *
      16             :  * provided "as is" without express or implied warranty.                  *
      17             :  **************************************************************************/
      18             : 
      19             : //////////////////////////////////////////////////////////////////////////
      20             : //                                                                      //
      21             : // AliRawRFIODB                                                         //
      22             : //                                                                      //
      23             : //////////////////////////////////////////////////////////////////////////
      24             : 
      25             : #include <TSystem.h>
      26             : #include <TUrl.h>
      27             : 
      28             : #include "AliRawRFIODB.h"
      29             : 
      30             : 
      31           2 : ClassImp(AliRawRFIODB)
      32             : 
      33             : 
      34             : //______________________________________________________________________________
      35             : AliRawRFIODB::AliRawRFIODB(AliRawEventV2 *event,
      36             :                            AliESDEvent *esd,
      37             :                            Int_t compress,
      38             :                            const char* fileName,Int_t basketsize, Long64_t autoflush)
      39           0 :    : AliRawDB(event, esd, compress, fileName, basketsize, autoflush)
      40           0 : {
      41             :    // Create a new raw DB that will be accessed via RFIO.
      42             : 
      43             :    static int init = 0;
      44             :    // Set STAGE_POOL environment variable to current host
      45           0 :    if (!init) {
      46             :       // THESE ENVIRONMENT SYMBOLS ARE NOW DEFINED BY THE ALICE DATE SETUP
      47             :       // THEREFORE WE SHALL NOT USE ANY HARDCODED VALUES BUT RATHER USE
      48             :       // WHATEVER HAS BEEN SET IN THE DATE SITE
      49             :       //gSystem->Setenv("STAGE_POOL", "lcg00");
      50             :       //gSystem->Setenv("STAGE_HOST", "stage013");
      51             : 
      52             :       // however for sanity we check if they are really set
      53           0 :       if (!gSystem->Getenv("STAGE_POOL"))
      54           0 :          Error("AliRawRFIODB", "STAGE_POOL not set");
      55           0 :       if (!gSystem->Getenv("STAGE_HOST"))
      56           0 :          Error("AliRawRFIODB", "STAGE_HOST not set");
      57           0 :       init = 1;
      58           0 :    }
      59             : #if ROOT_VERSION_CODE < ROOT_VERSION(5,99,0)
      60           0 :    if (fRawDB) fRawDB->UseCache(50, 0x200000);  //0x100000 = 1MB)
      61             : #endif
      62           0 : }
      63             : 
      64             : //______________________________________________________________________________
      65             : const char *AliRawRFIODB::GetFileName() const
      66             : {
      67             :    // Return filename based on hostname and date and time. This will make
      68             :    // each file unique. Also the directory will be made unique for each
      69             :    // day by adding the date to the fs. Assumes there is always enough
      70             :    // space on the device.
      71             : 
      72           0 :    static TString fname;
      73             : 
      74           0 :    TString fs = fFS1;
      75           0 :    TDatime dt;
      76             : 
      77             :    // make a new subdirectory for each day
      78           0 :    fs += "/adc-";
      79           0 :    fs += dt.GetDate();
      80             : 
      81           0 :    Long_t id, size, flags, time;
      82           0 :    if (gSystem->GetPathInfo(fs, &id, &size, &flags, &time) == 1) {
      83             :       // directory does not exist, create it
      84           0 :       if (gSystem->mkdir(fs, kTRUE) == -1) {
      85           0 :          Error("GetFileName", "cannot create dir %s, using %s", fs.Data(),
      86           0 :                fFS1.Data());
      87           0 :          fs = fFS1;
      88             :       }
      89             :    }
      90             :    // FIXME: should check if fs is a directory
      91             : 
      92           0 :    TString hostname = gSystem->HostName();
      93             :    Int_t pos;
      94           0 :    if ((pos = hostname.Index(".")) != kNPOS)
      95           0 :       hostname.Remove(pos);
      96             : 
      97           0 :    fname = fs + "/" + hostname + "_";
      98           0 :    fname += dt.GetDate();
      99           0 :    fname += "_";
     100           0 :    fname += dt.GetTime();
     101           0 :    fname += ".root";
     102             : 
     103           0 :    return fname;
     104           0 : }
     105             : 
     106             : //______________________________________________________________________________
     107             : Long64_t AliRawRFIODB::Close()
     108             : {
     109             :    // Close raw RFIO DB.
     110             : 
     111           0 :    if (!fRawDB) return 0;
     112             : 
     113           0 :    if (!fRawDB->IsOpen()) return 0;
     114             : 
     115           0 :    fRawDB->cd();
     116             : 
     117             :    // Write the tree.
     118             :    Bool_t error = kFALSE;
     119           0 :    if (fTree)
     120           0 :      if (fTree->Write() == 0)
     121           0 :        error = kTRUE;
     122           0 :    if (fESDTree)
     123           0 :      if (fESDTree->Write() == 0)
     124           0 :        error = kTRUE;
     125             : 
     126             :    // Close DB, this also deletes the fTree
     127           0 :    fRawDB->Close();
     128             : 
     129           0 :    fTree = NULL;
     130             : 
     131           0 :    Long64_t filesize = fRawDB->GetEND();
     132             : 
     133           0 :    if (fDeleteFiles) {
     134           0 :       TUrl u(fRawDB->GetName());
     135           0 :       gSystem->Exec(Form("rfrm %s", u.GetFile()));
     136           0 :    }
     137             : 
     138           0 :    delete fRawDB;
     139           0 :    fRawDB = 0;
     140             : 
     141           0 :    if(!error)
     142           0 :      return filesize;
     143             :    else
     144           0 :      return -1;
     145           0 : }

Generated by: LCOV version 1.11