-// @(#) $Id$
+// @(#)alimdc:$Name: $:$Id$
// Author: Fons Rademakers 26/11/99
// Updated: Dario Favretto 15/04/2003
//______________________________________________________________________________
AliMDC::AliMDC(Int_t compress, Bool_t deleteFiles, EFilterMode filterMode,
Double_t maxSizeTagDB, const char* fileNameTagDB,
- const char *guidFileFolder) :
+ const char *guidFileFolder,
+ Int_t basketsize) :
fEvent(new AliRawEvent),
fESD(NULL),
fStats(NULL),
fTagDB(NULL),
fEventTag(new AliRawEventTag),
fCompress(compress),
+ fBasketSize(basketsize),
fDeleteFiles(deleteFiles),
fFilterMode(filterMode),
fFilters(),
// Optional 'guidFileFolder' specifies the folder in which *.guid files
// will be stored. In case this option is not given, the *.guid files
// will be written to the same folder as the raw-data files.
+
+ // Set the maximum tree size to 19GB
+ // in order to allow big raw data files
+ TTree::SetMaxTreeSize(20000000000LL);
// This line is needed in case of a stand-alone application w/o
// $ROOTSYS/etc/system.rootrc file
// open a new raw DB file
if (mode == kRFIO)
- fRawDB = new AliRawRFIODB(fEvent, fESD, fCompress, fileName);
+ fRawDB = new AliRawRFIODB(fEvent, fESD, fCompress, fileName, fBasketSize);
else if (mode == kROOTD)
- fRawDB = new AliRawRootdDB(fEvent, fESD, fCompress, fileName);
+ fRawDB = new AliRawRootdDB(fEvent, fESD, fCompress, fileName, fBasketSize);
else if (mode == kCASTOR)
- fRawDB = new AliRawCastorDB(fEvent, fESD, fCompress, fileName);
+ fRawDB = new AliRawCastorDB(fEvent, fESD, fCompress, fileName, fBasketSize);
else if (mode == kDEVNULL)
- fRawDB = new AliRawNullDB(fEvent, fESD, fCompress, fileName);
+ fRawDB = new AliRawNullDB(fEvent, fESD, fCompress, fileName, fBasketSize);
else
- fRawDB = new AliRawDB(fEvent, fESD, fCompress, fileName);
+ fRawDB = new AliRawDB(fEvent, fESD, fCompress, fileName, fBasketSize);
fRawDB->SetDeleteFiles(fDeleteFiles);
if (fRawDB->IsZombie()) {
// or, if isIovecArray is kTRUE, a pointer to an array of iovecs with one
// iovec per subevent (used by the event builder).
// The return value is the number of written bytes or an error code
- const UInt_t kFileSizeErrorLevel = 1900000000;
+ const Long64_t kFileSizeErrorLevel = 19000000000LL;
- UInt_t currentFileSize = GetTotalSize();
+ Long64_t currentFileSize = GetTotalSize();
+ AliDebug(1,Form("current file size is %lld bytes",currentFileSize));
if(currentFileSize > kFileSizeErrorLevel) {
- Error("ProcessEvent", "file size (%u) exceeds the limit "
+ Error("ProcessEvent", "file size (%lu) exceeds the limit "
, currentFileSize);
return kErrFileSize;
}
}
//______________________________________________________________________________
-Int_t AliMDC::GetTotalSize()
+Long64_t AliMDC::GetTotalSize()
{
// return the total current raw DB file size
}
//______________________________________________________________________________
-Int_t AliMDC::Close()
+Long64_t AliMDC::Close()
{
// close the current raw DB file
if (!fRawDB) return -1;
fRawDB->WriteStats(fStats);
- Int_t filesize = fRawDB->Close();
+ Long64_t filesize = fRawDB->Close();
delete fRawDB;
fRawDB = NULL;
delete fStats;
return filesize;
}
+//______________________________________________________________________________
+Long64_t AliMDC::AutoSave()
+{
+ // Auto-save the raw-data
+ // and esd (if any) trees
+
+ if (!fRawDB) return -1;
+
+ return fRawDB->AutoSave();
+}
+
//______________________________________________________________________________
Int_t AliMDC::Run(const char* inputFile, Bool_t loop,
EWriteMode mode, Double_t maxFileSize,