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 //////////////////////////////////////////////////////////////////////////
27 #include "AliRawRootdDB.h"
30 ClassImp(AliRawRootdDB)
33 //______________________________________________________________________________
34 AliRawRootdDB::AliRawRootdDB(AliRawEventV2 *event,
37 const char* fileName,Int_t basketsize)
38 : AliRawDB(event, esd, compress, fileName, basketsize)
40 // Create a new raw DB that will be accessed via rootd daemon.
42 #if ROOT_VERSION_CODE < ROOT_VERSION(5,99,0)
43 if (fRawDB) fRawDB->UseCache(50, 0x200000); //0x100000 = 1MB)
47 //______________________________________________________________________________
48 const char *AliRawRootdDB::GetFileName() const
50 // Return filename based on hostname and date and time. This will make
51 // each file unique. Also the directory will be made unique for each
52 // day by adding the date to the fs. Assumes there is always enough
53 // space on the device.
61 // make a new subdirectory for each day
65 Long_t id, size, flags, time;
66 if (gSystem->GetPathInfo(fs, &id, &size, &flags, &time) == 1) {
67 // directory does not exist, create it
68 if (gSystem->mkdir(fs, kTRUE) == -1) {
69 Error("GetFileName", "cannot create dir %s, using %s", fs.Data(),
74 // FIXME: should check if fs is a directory
77 TString hostname = gSystem->HostName();
79 if ((pos = hostname.Index(".")) != kNPOS)
82 fname = fs + "/" + hostname + "_";
83 fname += dt.GetDate();
85 fname += dt.GetTime();
91 //______________________________________________________________________________
92 Long64_t AliRawRootdDB::Close()
94 // Close raw rootd DB.
96 if (!fRawDB) return 0;
98 if (!fRawDB->IsOpen()) return 0;
103 Bool_t error = kFALSE;
105 if (fTree->Write() == 0)
108 if (fESDTree->Write() == 0)
111 // Close DB, this also deletes the fTree
116 Long64_t filesize = fRawDB->GetEND();
119 // can use services of TFTP
121 gSystem->Exec(Form("rfrm %s", fRawDB->GetName()));