/[PAMELA software]/DarthVader/S4Level2/src/S4_LEVEL2.cpp
ViewVC logotype

Contents of /DarthVader/S4Level2/src/S4_LEVEL2.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (show annotations) (download)
Fri May 19 13:15:26 2006 UTC (18 years, 6 months ago) by mocchiut
Branch: MAIN
Branch point for: DarthVader
Initial revision

1 //
2 // L2S4.cc -- standalone program to call the l2S4core subroutine.
3 //
4 //
5 // Version 3.00 16/05/2006: working.
6 //
7 // Changelog:
8 //
9 // Input parameters must be now introduced by an identifier (-id run_id -file filename). Order does not matter.
10 // Added verbose/not verbose option.
11 //
12 //
13 // C/C++ headers
14 //
15 #include <iostream>
16 #include <sstream>
17 #include <TSystem.h>
18 //
19 // ROOT headers
20 //
21 #include <TString.h>
22 #include <TSQLServer.h>
23 //
24 // This package headers
25 //
26 #include <S4Core.h>
27 #include <S4Verl2.h>
28 //
29 using namespace std;
30 //
31 // Usage subroutine
32 //
33 void usage(){
34 printf("\nUsage:\n");
35 printf("\n S4Level2 [-v] [-h] [--version] -idRun ID_RUN [-processFile filename] [-outDir outDir] [-processFolder folder]\n");
36 printf("\n [-host host] [-user username] [-psw password]\n");
37 printf("\n --version print informations about compilation and exit\n");
38 printf("\n -h | --help print this help and exit \n");
39 printf("\n -v | --verbose be verbose [default: print nothing on STDOUT]\n");
40 printf("\n -idRun ID_RUN: ID number of the run to be processed \n");
41 printf("\n -outDir Path where to put the output [default ./] \n");
42 printf("\n -processFile output filename [default ID_RUN.Level2.root]\n");
43 printf("\n -processFolder folder for output data but the processFile [default \"S4Folder\"]\n");
44 printf("\n -host name for the host [default = mysql://localhost/pamelaprod]\n");
45 printf("\n -user username for the DB [default = anonymous] \n");
46 printf("\n -psw password for the DB [default = \"\"]\n");
47 printf("\n Notice that parameter order does not matter. \n");
48 printf("\nExample: \n\nS4Level2 -idRun 1085 -processFile nomefile.root\n\n");
49 };
50 //
51 Bool_t debug = false;
52 //
53 // Here the main
54 //
55 int main(int numinp, char *inps[]){
56 //
57 // Variables booking
58 //
59 TFile *processFile =0;
60 int nul = 0;
61 int error = 0;
62 Bool_t beverbose = false;
63 ULong64_t run = 0;
64 TString filename="";
65 TString processFolder;
66 TString outDir = "./";
67 TSQLServer *dbc = 0;
68 Bool_t givenid = false;
69 processFolder = "S4Folder";
70 //
71 TString host = "mysql://localhost/pamelaprod";
72 TString user = "anonymous";
73 TString psw = "";
74 //
75 // Checking input parameters
76 //
77 if ( numinp > 1 ){
78 for ( int i = 0; i < numinp; i++ ){
79 if ( !strcmp(inps[i],"--version") ){
80 S4Info(true);
81 exit(0);
82 };
83 if ( !strcmp(inps[i],"-h") || !strcmp(inps[i],"--help") ){
84 usage();
85 exit(0);
86 };
87 if ( !strcmp(inps[i],"-idRun") ) {
88 if ( numinp-1 < i+1 ) {
89 usage();
90 exit(-3);
91 };
92 givenid = true;
93 char *pEnd;
94 run = strtoull(inps[i+1],&pEnd,0);
95 };
96 if ( !strcmp(inps[i],"-outDir") ) {
97 if ( numinp-1 < i+1 ){
98 usage();
99 exit(-3);
100 };
101 outDir = (TString)inps[i+1];
102 };
103 if ( !strcmp(inps[i],"-processFile") ) {
104 if ( numinp-1 < i+1 ){
105 usage();
106 exit(-3);
107 };
108 filename = (TString)inps[i+1];
109 };
110 if ( !strcmp(inps[i],"-processFolder") ) {
111 if ( numinp-1 < i+1 ){
112 usage();
113 exit(-3);
114 };
115 processFolder = (TString)inps[i+1];
116 };
117 if ( !strcmp(inps[i],"-host") ) {
118 if ( numinp-1 < i+1 ){
119 usage();
120 exit(-3);
121 };
122 host = (TString)inps[i+1];
123 };
124 if ( !strcmp(inps[i],"-user") ) {
125 if ( numinp-1 < i+1 ){
126 usage();
127 exit(-3);
128 };
129 user = (TString)inps[i+1];
130 };
131 if ( !strcmp(inps[i],"-psw") ) {
132 if ( numinp-1 < i+1 ){
133 usage();
134 exit(-3);
135 };
136 psw = (TString)inps[i+1];
137 };
138 if ( !strcmp(inps[i],"-v") || !strcmp(inps[i],"--verbose") ) beverbose = true;
139 };
140 } else {
141 //
142 // no input parameters exit with error, we need at least the run id.
143 //
144 printf("\n S4 - ERROR: you must provide a run number (at least 0)\n\n");
145 exit(-1);
146 };
147 //
148 // If not in verbose mode redirect to /dev/null the stdout and stderr
149 //
150 if ( !beverbose ){
151 nul = open("/dev/null", O_CREAT | O_RDWR,S_IREAD | S_IWRITE);
152 dup2(nul,1);
153 dup2(nul,2);
154 };
155
156 //
157 // Check that an input run number has been given
158 //
159 if ( !givenid ) {
160 printf("\n S4 - ERROR: you must provide a run number (at least 0)\n\n");
161 exit(-1);
162 };
163 //
164 char *version = S4Info(false);
165 //
166 // Start:
167 //
168 printf("\n Welcome to the S4 LEVEL2 flight software, version %s \n",version);
169 //
170 // Connect to the DB
171 //
172 printf("\nConnecting to database... \n");
173 //
174 dbc = TSQLServer::Connect(host.Data(),user.Data(),psw.Data());
175 if( !dbc ) {
176 printf(" S4 - ERROR: problems connecting to the DB (check username and passwd), exiting...\n\n");
177 exit(-2);
178 };
179 bool connect = dbc->IsConnected();
180 //
181 if( !connect ) {
182 printf(" S4 - ERROR: problems connecting to the DB (check username and passwd), exiting...\n\n");
183 exit(-2);
184 };
185 printf("...connected! \n\n");
186 //
187 if ( filename.IsNull() ){
188 stringstream strun;
189 strun.str("");
190 strun << run;
191 filename += strun.str();
192 filename += ".Level2.root";
193 };
194 filename = outDir + "/" + filename;
195 processFile = new TFile(filename.Data(),"UPDATE");
196 //
197 // Run the core program, put any output error in the "error" variable
198 //
199 error = S4Core(run, processFile ,dbc, numinp, inps);
200 //
201 // Close the DB connection
202 //
203 printf("\nClose the connection to the database... \n");
204 dbc->Close();
205 printf("...connection terminated!\n\n");
206 //
207 // Close redirection if the case.
208 //
209 if ( !beverbose ) close(nul);
210 //
211 // Return "error"
212 //
213 if ( error > 0 ) printf(" S4 - WARNING: exiting with signal %i \n\n",error);
214 if ( error < 0 ) printf(" S4 - ERROR: exiting with signal %i \n\n",error);
215 processFile->Close();
216 exit(error);
217 }

  ViewVC Help
Powered by ViewVC 1.1.23