X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MONITOR%2Fderoot.cxx;h=e82b07c3e5196d83538495fba28ae0790acc0a48;hb=6580633f9ae3a56f0f566366883f2301c8427b01;hp=6b2fbb436c4ad6661275018d5d3a7901da712e4b;hpb=bf4e7d5bc01a63873a2f318605ed4d10f911738d;p=u%2Fmrichter%2FAliRoot.git diff --git a/MONITOR/deroot.cxx b/MONITOR/deroot.cxx index 6b2fbb436c4..e82b07c3e51 100644 --- a/MONITOR/deroot.cxx +++ b/MONITOR/deroot.cxx @@ -4,40 +4,79 @@ MOOD - Monitor Of On-line Data and Detector Debugger for ALICE Experiment ******************************************************************************/ +#include #include +#include #include -#ifdef ALI_DATE +#include #include "deroot.h" -int deroot(const char *rootFileName, const char *dateFileName); +using std::cerr; +using std::endl; -int deroot(const char *rootFileName, const char *dateFileName) { +int deroot(const char *rootFileName, const char *dateFileName, const char *ddlFilesFolder); - unsigned char *dateEvent=new unsigned char [100000000]; +int deroot(const char *rootFileName, const char *dateFileName, const char *ddlFilesFolder) { - FILE *dateFile; - size_t gdcCounter, gdcSize; - TFile rootFile(rootFileName); - TTree *t=(TTree *)rootFile.Get("RAW"); + TString str = rootFileName; + if (str.BeginsWith("alien://")) + TGrid::Connect("alien://"); + + TFile *rootFile = TFile::Open(rootFileName,"READ"); + if (!rootFile) { + cerr << "Raw data file can not be opened" << endl; + return(1); + } + + TTree *t=(TTree *)rootFile->Get("RAW"); if(!t) { cerr << "Error getting RAW tree" << endl; return(1); } - AliRawEvent *rootEvent=NULL; + AliRawVEvent *rootEvent=NULL; t->SetBranchAddress("rawevent", &rootEvent); + FILE *dateFile; +#if defined(R__SEEK64) + if(!(dateFile=fopen64(dateFileName, "wb"))) { +#else if(!(dateFile=fopen(dateFileName, "wb"))) { +#endif cerr << "Error opening DATE file" << endl; return(1); } - for(gdcCounter=0; gdcCounterGetEntries(); gdcCounter++) { - rootEvent=new AliRawEvent; + UInt_t eventSize = 10000000; // 10MB by default + unsigned char *dateEvent = new unsigned char[eventSize]; + for(Long_t gdcCounter=0; gdcCounterGetEntries(); gdcCounter++) { + rootEvent=NULL; t->GetEntry(gdcCounter); - gdcSize=Root2Date(rootEvent, dateEvent); + if (rootEvent->GetHeader()->GetEventSize() > eventSize) { + delete [] dateEvent; + eventSize = (UInt_t)(1.05*rootEvent->GetHeader()->GetEventSize()); + dateEvent = new unsigned char[eventSize]; + } + + size_t gdcSize; + if (ddlFilesFolder) { + char command[256]; + snprintf(command, sizeof(command), "rm -rf %s/raw%ld", ddlFilesFolder, gdcCounter); + gSystem->Exec(command); + snprintf(command, sizeof(command), "%s/raw%ld", ddlFilesFolder, gdcCounter); + if (gSystem->MakeDirectory(command) < 0) { + cerr << "Can not create directory " << command << endl; + fclose(dateFile); + delete [] dateEvent; + return(1); + } + gdcSize=Root2Date(rootEvent, dateEvent, command); + } + else + gdcSize=Root2Date(rootEvent, dateEvent, NULL); + delete rootEvent; - cerr << "\r \r" << setprecision(3) << 100*(float)(gdcCounter+1)/t->GetEntries() << "% "; + cerr << "\r \r" << int(100*(float)(gdcCounter+1)/t->GetEntries()) << "% "; fwrite(dateEvent, gdcSize, 1, dateFile); } @@ -46,7 +85,7 @@ int deroot(const char *rootFileName, const char *dateFileName) { cerr << "\r \r"; cerr.flush(); delete t; - rootFile.Close(); + rootFile->Close(); fclose(dateFile); delete [] dateEvent; @@ -56,22 +95,17 @@ int deroot(const char *rootFileName, const char *dateFileName) { int main(int argc, char **argv) { - if (argc != 3) { - cerr << "Usage: deroot " << endl; + if (argc != 3 && argc != 4) { + cerr << "Usage: deroot []" << endl; return 1; } - deroot(argv[1], argv[2]); + if (argc ==3) + deroot(argv[1], argv[2], NULL); + else + deroot(argv[1], argv[2], argv[3]); return(0); } -#else -int main(int /*argc*/, char** /*argv*/) -{ - ::Error("main", "this program was compiled without DATE"); - - return 1; -} -#endif