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

Contents of /yoda/techmodel/techmodelreader.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2.3 - (show annotations) (download)
Tue Feb 15 18:16:44 2005 UTC (19 years, 9 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
2 #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
9 #include "TROOT.h"
10
11 #include "TechmodelPamelaRun.h"
12 #include "EventReader.h"
13
14 #include <cstdlib>
15 #include <iostream>
16 #include <time.h>
17 #include "Exception.h"
18
19 extern "C" {
20 //#include "DirectoryStructure.h"
21 #include <dirent.h>
22 }
23
24
25
26 using namespace pamela;
27 using namespace log4cxx;
28 using namespace std;
29 using namespace pamela::techmodel;
30
31 static LoggerPtr logger = Logger::getLogger(_T("pamela.techmodel.TechmodelReader"));
32
33 int main(int argc, char* argv[]) {
34
35 stringstream oss;
36 int maxPackets = 0;
37 char nomeFileLog[L_tmpnam];
38 tmpnam(nomeFileLog);
39 DIR *dirp;
40
41 // check if yoda_DATA exist!!!!
42 char *outDir;
43 try {
44 outDir = getenv("YODA_DATA");
45 if (getenv("YODA_DATA") == NULL) throw NotFoundEnvironmentVarException("The variable YODA_DATA has not been found.");
46 } catch (NotFoundEnvironmentVarException exc) {
47 oss.str("");
48 oss << exc.print();
49 logger->fatal(oss.str().c_str());
50 cout << "The variable YODA_DATA has not been found. \n";
51 cout << "Please check your environment variables \n";
52 exit(1);
53 }
54
55 string pathDir(outDir);
56
57 string pathLog = nomeFileLog;
58 bool ANALIZE = false;
59 //---------------- 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 // Check file name
81
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 cout << "\t -analize generate pre-defined analisys files (gif/text) inside the unpacking directory\n";
94 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 exit(1);
102 }
103
104 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
126 if (!strcmp(argv[i], "-analize")) ANALIZE = true;
127
128 }
129
130
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
139 time_t rawtime;
140 struct tm * timeinfo;
141 time ( &rawtime );
142 timeinfo = localtime ( &rawtime );
143
144 oss.str("");
145 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 gROOT->SetBatch(kTRUE);
151 EventReader *reader = new EventReader(maxPackets);
152
153 int num = 0;
154 TechmodelPamelaRun Run(argv[1]);
155 reader->Init(&Run);
156
157 oss.str("");
158 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 Run.WriteFiles();
164
165 logger->info("<-------------------------------END UNPACKING------------------------------->\n");
166
167 //Momentarly suspended the save
168 //system(command.c_str());
169 }

  ViewVC Help
Powered by ViewVC 1.1.23