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

Annotation of /yoda/techmodel/techmodelreader.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2.3 - (hide annotations) (download)
Tue Feb 15 18:16:44 2005 UTC (19 years, 10 months ago) by kusanagi
Branch: MAIN
Changes since 2.2: +4 -1 lines
Bug fix: missing exit(1) into the catch. Output also to the stdout

1 kusanagi 1.1
2 kusanagi 1.7 #include <log4cxx/logger.h>
3     #include <log4cxx/basicconfigurator.h>
4     #include <log4cxx/fileappender.h>
5     #include <log4cxx/patternlayout.h>
6     #include <log4cxx/propertyconfigurator.h>
7     #include <log4cxx/helpers/exception.h>
8 kusanagi 1.1
9     #include "TROOT.h"
10    
11     #include "TechmodelPamelaRun.h"
12     #include "EventReader.h"
13 kusanagi 1.7
14 kusanagi 1.1 #include <cstdlib>
15 kusanagi 1.7 #include <iostream>
16 kusanagi 1.1 #include <time.h>
17 kusanagi 2.2 #include "Exception.h"
18    
19 kusanagi 1.1 extern "C" {
20     //#include "DirectoryStructure.h"
21     #include <dirent.h>
22     }
23    
24    
25 kusanagi 2.1
26 kusanagi 1.1 using namespace pamela;
27 kusanagi 1.7 using namespace log4cxx;
28     using namespace std;
29 kusanagi 1.1 using namespace pamela::techmodel;
30    
31 kusanagi 1.7 static LoggerPtr logger = Logger::getLogger(_T("pamela.techmodel.TechmodelReader"));
32 kusanagi 1.1
33     int main(int argc, char* argv[]) {
34 kusanagi 1.7
35     stringstream oss;
36     int maxPackets = 0;
37     char nomeFileLog[L_tmpnam];
38     tmpnam(nomeFileLog);
39     DIR *dirp;
40 kusanagi 2.2
41     // check if yoda_DATA exist!!!!
42     char *outDir;
43     try {
44     outDir = getenv("YODA_DATA");
45 kusanagi 2.3 if (getenv("YODA_DATA") == NULL) throw NotFoundEnvironmentVarException("The variable YODA_DATA has not been found.");
46 kusanagi 2.2 } catch (NotFoundEnvironmentVarException exc) {
47     oss.str("");
48     oss << exc.print();
49     logger->fatal(oss.str().c_str());
50 kusanagi 2.3 cout << "The variable YODA_DATA has not been found. \n";
51     cout << "Please check your environment variables \n";
52     exit(1);
53 kusanagi 2.2 }
54    
55     string pathDir(outDir);
56    
57 kusanagi 1.7 string pathLog = nomeFileLog;
58 kusanagi 2.1 bool ANALIZE = false;
59 kusanagi 1.7 //---------------- Log4cxx configuration-----------------------------------------------
60     //Define the configuration file to be used on log4cxx
61     PropertyConfigurator::configure(pathDir + "/log4cxx.conf");
62     //BasicConfigurator::configure();
63     //Retrieve the rootLogger and append to it a default FileAppender.
64     //Note that the priority level of the rootLogger (defined in log4cxx.conf) is unmodified
65     //LoggerPtr rootLogger = Logger::getRootLogger();
66    
67     //FileAppender *fileAppender = new FileAppender();
68     //fileAppender->setFile(pathLog);
69     //fileAppender->setAppend(false);
70     //fileAppender->setBufferedIO(true); //the default size is 8k
71     //fileAppender->setBufferSize(1000000);
72     //fileAppender->activateOptions();
73     //fileAppender->setLayout(new PatternLayout());
74    
75     //FileAppender *fileAppender = new FileAppender(new PatternLayout(), pathLog, false, true, 10000);
76     //rootLogger->addAppender(fileAppender);
77     //rootLogger->removeAppender('A1');
78     //---------------- Log4cxx configuration-----------------------------------------------
79    
80 kusanagi 1.1 // Check file name
81 kusanagi 1.7
82     if (argc < 2){
83     //logger->info(_T("You have forgotten the file name."));
84     cout << "You have forgotten the file name. \n";
85     cout << "Try '--help' for more information. \n";
86     exit(1);
87     }
88    
89     if (!strcmp(argv[1], "--help")){
90     cout << "Usage: yoda FILE [OPTION] \n";
91     cout << "\t --help print this help and exit \n";
92     cout << "\t -p maximum number of packets to process [default all] \n";
93 kusanagi 2.1 cout << "\t -analize generate pre-defined analisys files (gif/text) inside the unpacking directory\n";
94 kusanagi 1.7 exit(1);
95     }
96    
97     ifstream from (argv[1]);
98     if (!from) {
99     //logger->info(_T("The file does not exist."));
100     cout << "The file does not exist. \n";
101 kusanagi 1.1 exit(1);
102     }
103    
104 kusanagi 1.7 for (int i = 2; i < argc; i++){
105     if (!strcmp(argv[i], "-p")){
106     if (++i >= argc){
107     cerr << "-p needs arguments. \n";
108     cout << "Try '--help' for more information. \n";
109     exit(1);
110     }
111     if (isdigit(*argv[i])) {
112     maxPackets = atoi(argv[i]);
113     } else {
114     //logger->info(_T("The file does not exist."));
115     cerr << "-p needs a integer value. \n";
116     cout << "Try '--help' for more information. \n";
117     exit(1);
118     }
119     }
120    
121     if (!maxPackets){
122     cout << "Try '--help' for more information. \n";
123     exit(1);
124     }
125 kusanagi 2.1
126     if (!strcmp(argv[i], "-analize")) ANALIZE = true;
127    
128 kusanagi 1.7 }
129    
130 kusanagi 1.1
131     //--------------------------------------------------
132     //This is the configuration for the Yoda Logger
133     //The parameters in the RollingFileAppender means
134     // default ------------>the selected category
135     // YodaLog.txt ------------>the LogFile name
136     // 1000 ------------>The max size (in Kb) of the LogFile
137     // 5 ------------>How many times the file will be backup
138 kusanagi 1.6
139 kusanagi 1.1 time_t rawtime;
140     struct tm * timeinfo;
141     time ( &rawtime );
142     timeinfo = localtime ( &rawtime );
143 kusanagi 1.7
144 kusanagi 2.1 oss.str("");
145 kusanagi 1.7 oss << "<-------------------------------START UNPACKING------------------------------->\n"
146     << " Starting the program at: " << asctime (timeinfo) << " Opening file: " << argv[1];
147     logger->info(oss.str().c_str());
148    
149    
150 kusanagi 1.1 gROOT->SetBatch(kTRUE);
151 kusanagi 1.7 EventReader *reader = new EventReader(maxPackets);
152 kusanagi 1.1
153     int num = 0;
154     TechmodelPamelaRun Run(argv[1]);
155 kusanagi 1.7 reader->Init(&Run);
156    
157 kusanagi 2.1 oss.str("");
158 kusanagi 1.7 oss << "Init successul ok" << asctime (timeinfo);
159     logger->debug(oss.str().c_str());
160    
161     reader->RunEvent(num); //TBD --- eliminate the runNumber
162     reader->Finish();
163 kusanagi 1.1 Run.WriteFiles();
164 kusanagi 1.7
165     logger->info("<-------------------------------END UNPACKING------------------------------->\n");
166    
167     //Momentarly suspended the save
168     //system(command.c_str());
169 kusanagi 1.1 }

  ViewVC Help
Powered by ViewVC 1.1.23