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

Annotation of /yoda/techmodel/techmodelreader.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3.0 - (hide annotations) (download)
Fri Mar 4 15:54:11 2005 UTC (19 years, 9 months ago) by kusanagi
Branch: MAIN
Changes since 2.4: +0 -0 lines
Error proof version.
Implemented all detectors packets plus all the main telemetries packets.
Missing all the Init and Alarm packets.
Disabled CRC control on VarDump, ArrDump, TabDump for CPU debugging needs
(the data formats seems correct even if CRC get wrong)

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 kusanagi 2.4 cout << "The variable YODA_DATA has not been found. \n";
48     cout << "Please check your environment variables \n";
49 kusanagi 2.2 oss.str("");
50     oss << exc.print();
51     logger->fatal(oss.str().c_str());
52 kusanagi 2.3 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