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

Contents of /yoda/techmodel/techmodelreader.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 4.0.8.3 - (show annotations) (download)
Tue Apr 4 13:31:55 2006 UTC (18 years, 8 months ago) by kusanagi
Branch: PreThermistores2
Changes since 4.0.8.2: +1 -1 lines
Final update for "version" option.

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 cout << "The variable YODA_DATA has not been found. \n";
48 cout << "Please check your environment variables \n";
49 oss.str("");
50 oss << exc.print();
51 logger->fatal(oss.str().c_str());
52 exit(1);
53 }
54
55 string pathDir(outDir);
56
57 string pathLog = nomeFileLog;
58 //---------------- Log4cxx configuration-----------------------------------------------
59 //Define the configuration file to be used on log4cxx
60 PropertyConfigurator::configure(pathDir + "/log4cxx.conf");
61 //BasicConfigurator::configure();
62 //Retrieve the rootLogger and append to it a default FileAppender.
63 //Note that the priority level of the rootLogger (defined in log4cxx.conf) is unmodified
64 //LoggerPtr rootLogger = Logger::getRootLogger();
65
66 //FileAppender *fileAppender = new FileAppender();
67 //fileAppender->setFile(pathLog);
68 //fileAppender->setAppend(false);
69 //fileAppender->setBufferedIO(true); //the default size is 8k
70 //fileAppender->setBufferSize(1000000);
71 //fileAppender->activateOptions();
72 //fileAppender->setLayout(new PatternLayout());
73
74 //FileAppender *fileAppender = new FileAppender(new PatternLayout(), pathLog, false, true, 10000);
75 //rootLogger->addAppender(fileAppender);
76 //rootLogger->removeAppender('A1');
77 //---------------- Log4cxx configuration-----------------------------------------------
78
79 // Check file name
80
81 if (argc < 2){
82 //logger->info(_T("You have forgotten the file name."));
83 cout << "You have forgotten the file name. \n";
84 cout << "Try '-help' for more information. \n";
85 exit(1);
86 }
87
88 if (!strcmp(argv[1], "-help")){
89 cout << "Usage: yoda FILE [OPTION] \n";
90 cout << "\t -help print this help and exit \n";
91 cout << "\t -p maximum number of packets to process [default all] \n";
92 exit(1);
93 }
94
95 if (!strcmp(argv[1], "-version")){
96 cout << GetVersionInfo() << "\n";
97 exit(1);
98 }
99
100 ifstream from (argv[1]);
101 if (!from) {
102 //logger->info(_T("The file does not exist."));
103 cout << "The file does not exist. \n";
104 exit(1);
105 }
106
107 for (int i = 2; i < argc; i++){
108 if (!strcmp(argv[i], "-p")){
109 if (++i >= argc){
110 cerr << "-p needs arguments. \n";
111 cout << "Try '-help' for more information. \n";
112 exit(1);
113 }
114 if (isdigit(*argv[i])) {
115 maxPackets = atoi(argv[i]);
116 } else {
117 //logger->info(_T("The file does not exist."));
118 cerr << "-p needs a integer value. \n";
119 cout << "Try '-help' for more information. \n";
120 exit(1);
121 }
122 }
123
124 if (!maxPackets){
125 cout << "Try '-help' for more information. \n";
126 exit(1);
127 }
128
129
130 }
131
132
133 //--------------------------------------------------
134 //This is the configuration for the Yoda Logger
135 //The parameters in the RollingFileAppender means
136 // default ------------>the selected category
137 // YodaLog.txt ------------>the LogFile name
138 // 1000 ------------>The max size (in Kb) of the LogFile
139 // 5 ------------>How many times the file will be backup
140
141 time_t rawtime;
142 struct tm * timeinfo;
143 time ( &rawtime );
144 timeinfo = localtime ( &rawtime );
145
146 oss.str("");
147 oss << "<-------------------------------START UNPACKING------------------------------->\n"
148 << " Starting the program at: " << asctime (timeinfo) << " Opening file: " << argv[1];
149 logger->info(oss.str().c_str());
150
151
152 gROOT->SetBatch(kTRUE);
153 EventReader *reader = new EventReader(maxPackets);
154
155 int num = 0;
156 TechmodelPamelaRun Run(argv[1]);
157 reader->Init(&Run);
158
159 oss.str("");
160 oss << "Init successul ok" << asctime (timeinfo);
161 logger->debug(oss.str().c_str());
162
163 reader->RunEvent(num); //TBD --- eliminate the runNumber
164 reader->Finish();
165 Run.WriteFiles();
166
167 logger->info("<-------------------------------END UNPACKING------------------------------->\n");
168
169 //Momentarly suspended the save
170 //system(command.c_str());
171 }
172
173 /**
174 * Get a string with the version info of the algorithm.
175 */
176 const char* GetVersionInfo(void) const {
177 return "$Revision$";
178 }

  ViewVC Help
Powered by ViewVC 1.1.23