X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=RAW%2FAliMDC.cxx;h=724c235e63a394c891f70bda83c29e1e2cfd23a8;hb=5679400a3032f8a4cc7baca15d3e4ebb215e543b;hp=2a7ae0e7b2a3b284c0e7737ed1108fff23edc6fe;hpb=d04aea321b4646bfd1143ff57d597ea77537e760;p=u%2Fmrichter%2FAliRoot.git diff --git a/RAW/AliMDC.cxx b/RAW/AliMDC.cxx index 2a7ae0e7b2a..724c235e63a 100644 --- a/RAW/AliMDC.cxx +++ b/RAW/AliMDC.cxx @@ -1,4 +1,4 @@ -// @(#) $Id$ +// @(#)alimdc:$Name: $:$Id$ // Author: Fons Rademakers 26/11/99 // Updated: Dario Favretto 15/04/2003 @@ -87,7 +87,8 @@ const char* const AliMDC::fgkFilterName[kNFilters] = {"AliHoughFilter"}; //______________________________________________________________________________ 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), @@ -95,6 +96,7 @@ AliMDC::AliMDC(Int_t compress, Bool_t deleteFiles, EFilterMode filterMode, fTagDB(NULL), fEventTag(new AliRawEventTag), fCompress(compress), + fBasketSize(basketsize), fDeleteFiles(deleteFiles), fFilterMode(filterMode), fFilters(), @@ -119,6 +121,10 @@ AliMDC::AliMDC(Int_t compress, Bool_t deleteFiles, EFilterMode filterMode, // 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 @@ -184,15 +190,15 @@ Int_t AliMDC::Open(EWriteMode mode, const char* fileName, // 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()) { @@ -234,11 +240,12 @@ Int_t AliMDC::ProcessEvent(void* event, Bool_t isIovecArray) // 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; } @@ -415,7 +422,7 @@ Int_t AliMDC::ProcessEvent(void* event, Bool_t isIovecArray) } //______________________________________________________________________________ -Int_t AliMDC::GetTotalSize() +Long64_t AliMDC::GetTotalSize() { // return the total current raw DB file size @@ -425,14 +432,14 @@ Int_t AliMDC::GetTotalSize() } //______________________________________________________________________________ -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; @@ -440,6 +447,17 @@ Int_t AliMDC::Close() 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,