39 const char FILTER =
'!';
49 int main(
int argc,
char **argv)
61 JRange_t runs = JRange_t::DEFAULT_RANGE;
62 long long int numberOfRows;
70 locate.insert(
"pmt_id");
71 locate.insert(
"pmt_threshold");
72 locate.insert(
"pmt_threshold@");
73 locate.insert(
"pmt_highvolt");
74 locate.insert(
"pmt_highvolt@");
78 JParser<> zap(
"Auxiliary program to convert slow control data from the database to ROOT TTree.");
84 zap[
'D'] =
make_field(detid,
"Detector identifier");
86 zap[
'n'] =
make_field(numberOfRows,
"Maximal number of rows") = numeric_limits<long long int>::max();
89 zap[
'P'] =
make_field(prescale,
"Prescale sampling of data") = 1;
90 zap[
'G'] =
make_field(graph,
"Write TGraph instead of TTree");
96 catch(
const exception &error) {
97 FATAL(error.what() << endl);
100 filter.push_back(
MAKE_STRING(FILTER <<
"CLBControlTimeoutMS"));
102 if (runs.getUpperLimit() < runs.getLowerLimit()) {
103 runs.setUpperLimit(runs.getLowerLimit());
107 WARNING(
"Setting prescale to one." << endl);
144 DEBUG(
"Reading database table " << getTable<JDetectorIntegration_t>() << endl);
146 ResultSet& rs =
getResultSet(getTable<JDetectorIntegration_t>());
148 if (! (rs >> detector)) {
153 DEBUG(
"Number of integrated products (before) " << right << detector.size() << endl);
157 DEBUG(
"Number of integrated products (after) " << right << detector.size() << endl);
162 DEBUG(
"Reading database table " << getTable<JAllParams>() << endl);
173 if (
to_upper(parameters.TYPE) ==
"INTEGER" && parameters.INTEGER_UNIT_SCALE > 0.0) {
174 unit[
to_upper(parameters.NAME)] = parameters.INTEGER_UNIT_SCALE;
182 DEBUG(
"Reading database table " << getTable<JDatalogNumbers>() << endl);
185 runs.getLowerLimit(),
186 runs.getUpperLimit());
188 ResultSet& rs =
getResultSet(getTable<JDatalogNumbers>(), selection);
190 long long int counter = 0;
197 const JLocation_t& location = router.getLocation(upi);
201 strings.insert(location.
string);
202 floors .insert(location.
floor);
210 bool nos = (*i)[0] == FILTER;
211 TRegexp regexp = (nos ? i->substr(1).c_str() : i->c_str());
213 if (TString(
parameters.PARAMETER_NAME).Contains(regexp)) {
221 if (location.
string >= (
int) data.size()) {
222 data.resize(location.
string + 1);
225 if (location.
floor >= (
int) data[location.
string].size()) {
231 if (locate.count(buffer) != 0) {
247 if ((counts[location.
string][location.
floor][buffer]++)%prescale == 0) {
274 catch(
const exception& error) {
275 ERROR(error.what() << endl);
280 cout << endl <<
"Parameters without location in detector." << endl;
283 cout << left << setw(48) << i->first <<
' ' << setw(6) << i->second << endl;
287 if (!errors.empty()) {
289 cout << endl <<
"Parameters without scale." << endl;
292 cout << left << setw(48) << i->first <<
' ' << setw(6) << i->second << endl;
298 for (
size_t string = 0;
string != data.size(); ++string) {
299 for (
size_t floor = 0; floor != data[string].size(); ++floor) {
300 for (map_type::iterator i = data[
string][floor].begin(); i != data[string][floor].end(); ++i) {
306 g1.SetMinimum(
range.getLowerLimit());
307 g1.SetMaximum(
range.getUpperLimit());
316 os <<
"set_variable NUMBER_OF_STRINGS " << setw(4) << strings.size() <<
";" << endl;
317 os <<
"set_variable NUMBER_OF_FLOORS " << setw(4) << floors. size() <<
";" << endl;
318 if (!strings.empty()) {
319 os <<
"set_variable FIRST_STRING " << setw(4) << *strings. begin() <<
";" << endl;
320 os <<
"set_variable LAST_STRING " << setw(4) << *strings.rbegin() <<
";" << endl;
322 if (!floors.empty()) {
323 os <<
"set_variable FIRST_FLOOR " << setw(4) << *floors. begin() <<
";" << endl;
324 os <<
"set_variable LAST_FLOOR " << setw(4) << *floors. rbegin() <<
";" << endl;
326 os <<
"set_array STRINGS ";
327 copy(strings.begin(), strings.end(), ostream_iterator<int>(os,
" "));
330 outputFile.put(TNamed(
"TUNA", os.str().c_str()));
Utility class to parse command line options.
int main(int argc, char *argv[])
void put(const Double_t x, const Double_t y)
Put data.
Data structure for graph data.
Recording of objects on file according a format that follows from the file name extension.
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
*fatal Wrong number of arguments esac JCookie sh typeset Z DETECTOR typeset Z SOURCE_RUN typeset Z TARGET_RUN set_variable PARAMETERS_FILE $WORKDIR parameters
#define MAKE_CSTRING(A)
Make C-string.
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Universal product identifier (UPI).
Auxiliary class for specifying selection of database data.
Auxiliary data structure to build TGraph.
#define MAKE_STRING(A)
Make string.
JDetectorsHelper getDetector
Function object for mapping serial number to object identifier of detector and vice versa...
int floor
position in string
I/O formatting auxiliaries.
Auxiliary data structure for location of product in detector.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
bool is_integer(const std::string &buffer)
Check if string is an integer.
std::string to_upper(const std::string &value)
Convert all character to upper case.
ROOT TTree parameter settings.
Auxiliary data structure for streaming of STL containers.
static const JPBSSequences CLB_SEQUENCES
PBS sequences for central-logic board.
Auxiliary class to map UPI to location in detector.
General purpose messaging.
Auxiliary data structure for sequence of same character.
z range($ZMAX-$ZMIN)< $MINIMAL_DZ." fi fi mv $WORKDIR/fit.root $MODULE_ROOT typeset -Z 4 STRING typeset -Z 2 FLOOR JPlot1D -f $
int position
position in floor
Auxiliary class to define a range between two values.
Utility class to parse command line options.
ResultSet & getResultSet(const std::string &query)
Get result set.
void copy(const Head &from, JHead &to)
Copy header from from to to.
do set_variable DETECTOR_TXT $WORKDIR detector
int string
position in detector
void configure(const std::string &detid)
Configure detector integration for given detector identifier.
Template definition for getting table specific selector.
do if[[!-f $ACOUSTICS_WORKDIR/${KEY}.txt]]
#define DEBUG(A)
Message macros.
Double_t g1(const Double_t x)
Function.