/[PAMELA software]/yoda/techmodel/techmodelreader.cpp
ViewVC logotype

Diff of /yoda/techmodel/techmodelreader.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 4.0 by kusanagi, Sun Mar 6 04:33:02 2005 UTC revision 6.1 by kusanagi, Wed Mar 8 13:51:45 2006 UTC
# Line 1  Line 1 
1    
2  #include <log4cxx/logger.h>  #include <log4cxx/logger.h>
 #include <log4cxx/basicconfigurator.h>  
 #include <log4cxx/fileappender.h>  
 #include <log4cxx/patternlayout.h>  
3  #include <log4cxx/propertyconfigurator.h>  #include <log4cxx/propertyconfigurator.h>
 #include <log4cxx/helpers/exception.h>  
   
 #include "TROOT.h"  
   
 #include "TechmodelPamelaRun.h"  
4  #include "EventReader.h"  #include "EventReader.h"
   
 #include <cstdlib>  
 #include <iostream>  
5  #include <time.h>  #include <time.h>
 #include "Exception.h"  
6    
7  extern "C" {  extern "C" {
8  //#include "DirectoryStructure.h"      #include <dirent.h>
 #include <dirent.h>  
9  }  }
10    
11    
# Line 34  int main(int argc, char* argv[]) { Line 21  int main(int argc, char* argv[]) {
21            
22      stringstream oss;      stringstream oss;
23      int maxPackets = 0;      int maxPackets = 0;
24        bool multiFile = 0;
25        short compression = 3;
26      char nomeFileLog[L_tmpnam];      char nomeFileLog[L_tmpnam];
27      tmpnam(nomeFileLog);      tmpnam(nomeFileLog);
28      DIR *dirp;      DIR *dirp;
29        char *outDir = "";
30      // check if yoda_DATA exist!!!!      
     char *outDir;  
     try {  
     outDir = getenv("YODA_DATA");  
     if (getenv("YODA_DATA") == NULL) throw NotFoundEnvironmentVarException("The variable YODA_DATA has not been found.");  
     } catch (NotFoundEnvironmentVarException exc) {  
      cout << "The variable YODA_DATA has not been found. \n";  
      cout << "Please check your environment variables \n";  
      oss.str("");  
      oss << exc.print();  
      logger->fatal(oss.str().c_str());  
      exit(1);  
     }  
   
     string pathDir(outDir);  
   
     string pathLog = nomeFileLog;  
     bool ANALIZE = false;  
31      //---------------- Log4cxx configuration-----------------------------------------------      //---------------- Log4cxx configuration-----------------------------------------------
     //Define the configuration file to be used on log4cxx  
     PropertyConfigurator::configure(pathDir + "/log4cxx.conf");  
32      //BasicConfigurator::configure();      //BasicConfigurator::configure();
33      //Retrieve the rootLogger and append to it a default FileAppender.      //Retrieve the rootLogger and append to it a default FileAppender.
34      //Note that the priority level of the rootLogger (defined in log4cxx.conf) is unmodified      //Note that the priority level of the rootLogger (defined in log4cxx.conf) is unmodified
# Line 76  int main(int argc, char* argv[]) { Line 46  int main(int argc, char* argv[]) {
46      //rootLogger->addAppender(fileAppender);      //rootLogger->addAppender(fileAppender);
47      //rootLogger->removeAppender('A1');      //rootLogger->removeAppender('A1');
48      //---------------- Log4cxx configuration-----------------------------------------------      //---------------- Log4cxx configuration-----------------------------------------------
49        
50    // Check file name    // Check file name
51        
52    if (argc < 2){    if (argc < 2){
# Line 90  int main(int argc, char* argv[]) { Line 60  int main(int argc, char* argv[]) {
60          cout << "Usage: yoda FILE [OPTION] \n";          cout << "Usage: yoda FILE [OPTION] \n";
61          cout << "\t --help              print this help and exit \n";          cout << "\t --help              print this help and exit \n";
62          cout << "\t -p                  maximum number of packets to process [default all] \n";          cout << "\t -p                  maximum number of packets to process [default all] \n";
63          cout << "\t -analize            generate pre-defined analisys files (gif/text) inside the unpacking directory\n";          cout << "\t -multi              generate multiple root files \n";
64            cout << "\t -c                  set the compression level for the generated root file(s). Values: [0,9] [default = 3]\n";
65            cout << "\t -o                  set the output directory for the generated root file(s). [default = $YODA_DATA]. Notice that in the same directory have to be prensent a log4cxx configuration file called \"log4cxx.conf\" \n";
66          exit(1);          exit(1);
67    }    }
68    
# Line 108  int main(int argc, char* argv[]) { Line 80  int main(int argc, char* argv[]) {
80              cout << "Try '--help' for more information. \n";              cout << "Try '--help' for more information. \n";
81              exit(1);              exit(1);
82          }          }
83          if (isdigit(*argv[i])) {          if (isdigit(*argv[i]) && (atoi(argv[i]) > 0)) {
84              maxPackets = atoi(argv[i]);              maxPackets = atoi(argv[i]);
85          } else {          } else {
86              //logger->info(_T("The file does not exist."));              //logger->info(_T("The file does not exist."));
# Line 116  int main(int argc, char* argv[]) { Line 88  int main(int argc, char* argv[]) {
88              cout << "Try '--help' for more information. \n";              cout << "Try '--help' for more information. \n";
89              exit(1);              exit(1);
90          }          }
91            continue;
92      }      }
93    
94      if (!maxPackets){      if (!strcmp(argv[i], "-multi")) multiFile = 1;
         cout << "Try '--help' for more information. \n";  
         exit(1);  
     }  
95    
96      if (!strcmp(argv[i], "-analize")) ANALIZE = true;      if (!strcmp(argv[i], "-c")){
97            if (++i >= argc){
98                cerr << "-c needs arguments. \n";
99                cout << "Try '--help' for more information. \n";
100                exit(1);
101            }
102            if ((isdigit(*argv[i])) && ( (atoi(argv[i]) >= 0) && (atoi(argv[i]) <= 9))) {
103                compression = atoi(argv[i]);
104            } else {
105                //logger->info(_T("The file does not exist."));
106                cerr << "-c needs a integer value beetween 0 and 9. \n";
107                cout << "Try '--help' for more information. \n";
108                exit(1);
109            }
110            continue;
111        }
112        
113        if (!strcmp(argv[i], "-o")){
114            if (++i >= argc){
115                cerr << "-o needs arguments. \n";
116                cout << "Try '--help' for more information. \n";
117                exit(1);
118            }
119            DIR* tempdir;
120            if ((tempdir = opendir(argv[i])) != 0) {
121                outDir = argv[i];
122                closedir(tempdir);
123            } else {
124                //logger->info(_T("The file does not exist."));
125                cerr << "-o needs an existing/accessable directory. \n";
126                cout << "Try '--help' for more information. \n";
127                exit(1);
128            }
129            continue;
130        }
131            
132    }    }
133    
134      if (outDir == ""){
135            try {
136                    outDir = getenv("YODA_DATA");
137                    if (getenv("YODA_DATA") == NULL) throw NotFoundEnvironmentVarException("The variable YODA_DATA has not been found.");
138            } catch (NotFoundEnvironmentVarException exc) {
139                    cout << "The variable YODA_DATA has not been found. \n";
140                    cout << "Please check your environment variables \n";
141                    oss.str("");
142                    oss << exc.print();
143                    logger->fatal(oss.str().c_str());
144                    exit(1);
145            }
146      }
147        
148          string pathDir(outDir);
149  //--------------------------------------------------      string pathLog = nomeFileLog;
150  //This is the configuration for the Yoda Logger      //Define the configuration file to be used on log4cxx
151  //The parameters in the RollingFileAppender means      PropertyConfigurator::configure(pathDir + "/log4cxx.conf");
 // default           ------------>the selected category  
 // YodaLog.txt  ------------>the LogFile name  
 // 1000              ------------>The max size (in Kb) of the LogFile  
 // 5                     ------------>How many times the file will be backup  
152    
153      time_t rawtime;      time_t rawtime;
154      struct tm * timeinfo;      struct tm * timeinfo;
# Line 151  int main(int argc, char* argv[]) { Line 165  int main(int argc, char* argv[]) {
165    EventReader *reader = new EventReader(maxPackets);    EventReader *reader = new EventReader(maxPackets);
166    
167    int num = 0;    int num = 0;
168    TechmodelPamelaRun Run(argv[1]);    TechmodelPamelaRun Run(argv[1], outDir, multiFile, compression);
169    reader->Init(&Run);    reader->Init(&Run);
170    
171     oss.str("");     oss.str("");

Legend:
Removed from v.4.0  
changed lines
  Added in v.6.1

  ViewVC Help
Powered by ViewVC 1.1.23