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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide 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 mocchiut 1.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