1 // @(#)alimdc:$Name$:$Id$
2 // Author: Fons Rademakers 26/11/99
4 /**************************************************************************
5 * Copyright(c) 1998-2003, ALICE Experiment at CERN, All rights reserved. *
7 * Author: The ALICE Off-line Project. *
8 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
19 //////////////////////////////////////////////////////////////////////////
23 //////////////////////////////////////////////////////////////////////////
30 #include "AliRawRFIODB.h"
33 ClassImp(AliRawRFIODB)
36 //______________________________________________________________________________
37 AliRawRFIODB::AliRawRFIODB(AliRawEvent *event,
41 Double_t maxsize, Int_t compress)
46 maxsize, compress, kFALSE)
48 // Create a new raw DB that will be accessed via RFIO.
52 // Set STAGE_POOL environment variable to current host
54 // THESE ENVIRONMENT SYMBOLS ARE NOW DEFINED BY THE ALICE DATE SETUP
55 // THEREFORE WE SHALL NOT USE ANY HARDCODED VALUES BUT RATHER USE
56 // WHATEVER HAS BEEN SET IN THE DATE SITE
57 //gSystem->Setenv("STAGE_POOL", "lcg00");
58 //gSystem->Setenv("STAGE_HOST", "stage013");
60 // however for sanity we check if they are really set
61 if (!gSystem->Getenv("STAGE_POOL"))
62 Error("AliRawRFIODB", "STAGE_POOL not set");
63 if (!gSystem->Getenv("STAGE_HOST"))
64 Error("AliRawRFIODB", "STAGE_HOST not set");
72 fRawDB->UseCache(50, 0x200000); //0x100000 = 1MB)
75 //______________________________________________________________________________
76 const char *AliRawRFIODB::GetFileName() const
78 // Return filename based on hostname and date and time. This will make
79 // each file unique. Also the directory will be made unique for each
80 // day by adding the date to the fs. Assumes there is always enough
81 // space on the device.
85 TString fs = AliMDC::RFIOFS();
88 // make a new subdirectory for each day
92 Long_t id, size, flags, time;
93 if (gSystem->GetPathInfo(fs, &id, &size, &flags, &time) == 1) {
94 // directory does not exist, create it
95 if (gSystem->mkdir(fs, kTRUE) == -1) {
96 Error("GetFileName", "cannot create dir %s, using %s", fs.Data(),
98 fs = AliMDC::RFIOFS();
101 // FIXME: should check if fs is a directory
103 TString hostname = gSystem->HostName();
105 if ((pos = hostname.Index(".")) != kNPOS)
106 hostname.Remove(pos);
108 fname = fs + "/" + hostname + "_";
109 fname += dt.GetDate();
111 fname += dt.GetTime();
117 //______________________________________________________________________________
118 void AliRawRFIODB::Close()
120 // Close raw RFIO DB.
129 // Close DB, this also deletes the fTree
132 if (AliMDC::DeleteFiles()) {
133 TUrl u(fRawDB->GetName());
134 gSystem->Exec(Form("rfrm %s", u.GetFile()));