1 // Author: Filimon Roukoutakis 02/08/2006
3 /******************************************************************************
4 MOOD - Monitor Of On-line Data and Detector Debugger for ALICE Experiment
5 ******************************************************************************/
10 #include <TSysEvtHandler.h>
17 int deroot(const char *rootFileName, const char *dateFileName, const char *ddlFilesFolder);
19 int deroot(const char *rootFileName, const char *dateFileName, const char *ddlFilesFolder) {
21 TString str = rootFileName;
22 if (str.BeginsWith("alien://"))
23 TGrid::Connect("alien://");
25 TFile *rootFile = TFile::Open(rootFileName,"READ");
27 cerr << "Raw data file can not be opened" << endl;
31 TTree *t=(TTree *)rootFile->Get("RAW");
33 cerr << "Error getting RAW tree" << endl;
36 AliRawVEvent *rootEvent=NULL;
38 t->SetBranchAddress("rawevent", &rootEvent);
41 #if defined(R__SEEK64)
42 if(!(dateFile=fopen64(dateFileName, "wb"))) {
44 if(!(dateFile=fopen(dateFileName, "wb"))) {
46 cerr << "Error opening DATE file" << endl;
50 UInt_t eventSize = 10000000; // 10MB by default
51 unsigned char *dateEvent = new unsigned char[eventSize];
52 for(Long_t gdcCounter=0; gdcCounter<t->GetEntries(); gdcCounter++) {
54 t->GetEntry(gdcCounter);
55 if (rootEvent->GetHeader()->GetEventSize() > eventSize) {
57 eventSize = (UInt_t)(1.05*rootEvent->GetHeader()->GetEventSize());
58 dateEvent = new unsigned char[eventSize];
64 snprintf(command, sizeof(command), "rm -rf %s/raw%ld", ddlFilesFolder, gdcCounter);
65 gSystem->Exec(command);
66 snprintf(command, sizeof(command), "%s/raw%ld", ddlFilesFolder, gdcCounter);
67 if (gSystem->MakeDirectory(command) < 0) {
68 cerr << "Can not create directory " << command << endl;
73 gdcSize=Root2Date(rootEvent, dateEvent, command);
76 gdcSize=Root2Date(rootEvent, dateEvent, NULL);
79 cerr << "\r \r" << int(100*(float)(gdcCounter+1)/t->GetEntries()) << "% ";
80 fwrite(dateEvent, gdcSize, 1, dateFile);
96 int main(int argc, char **argv) {
98 if (argc != 3 && argc != 4) {
99 cerr << "Usage: deroot <input_root_file> <output_date_file> [<optional_folder_for_ddl_files>]" << endl;
104 deroot(argv[1], argv[2], NULL);
106 deroot(argv[1], argv[2], argv[3]);