84 JParser<> zap(
"Auxiliary program to print detector from database.");
90 zap[
'D'] =
make_field(
id,
"detector identifier") =
"";
92 zap[
't'] =
make_field(tcalset,
"tcal: t0 (time offsets) calibration set from DB") =
"";
93 zap[
'p'] =
make_field(pcalset,
"pcal: position (x,y,z) calibration set from DB") =
"";
94 zap[
'q'] =
make_field(rcalset,
"rcal: orientation (quaterions) calibration set from DB") =
"";
97 zap[
'W'] =
make_field(wizzard,
"-W add base modules; -WW set time offsets of acoustic sensors");
102 catch(
const exception &error) {
103 FATAL(error.what() << endl);
107 const int file = ((detectorFile !=
"" ? 1 : 0));
108 const int calset = ((tcalset.empty() ? 0 : 1) +
109 (pcalset.empty() ? 0 : 1) +
110 (rcalset.empty() ? 0 : 1));
111 const int daq = ((run != -1 ? 1 : 0));
113 if (
file != 0 && (
file != 1)) {
FATAL(
"Inconsistent specificaton of detector file."); }
114 if (calset != 0 && (calset != 3 ||
id ==
"")) {
FATAL(
"Inconsistent specificaton of detector identifier, tcal, pcal and rcal calibration sets."); }
115 if (daq != 0 && (daq != 1 ||
id ==
"")) {
FATAL(
"Inconsistent specificaton of detector identifier and run number."); }
119 if (
file == 1) { ++np; }
120 if (calset == 3) { ++np; }
121 if (daq == 1) { ++np; }
123 if (np != 1) {
FATAL(
"Specify detector file; OR detector identifier, tcal, pcal and rcal calibration set; OR detector identifier and run number."); }
129 catch(
const exception& error) {
130 FATAL(error.what() << endl);
139 else if (calset == 3)
140 *(
JDB::get()->DetX)(
id.c_str(), tcalset.c_str(), pcalset.c_str(), rcalset.c_str()) >>
detector;
144 catch(
const exception& error) {
145 FATAL(error.what() << endl);
150 if (
detector.setToLatestVersion()) {
151 NOTICE(
"Set detector version to " <<
detector.getVersion() << endl);
162 selector.
add(&JCLBMap::FLOORID, 0);
164 ResultSet& rs =
getResultSet(getTable<JCLBMap>(), selector);
170 catch(
const exception& error) {
171 FATAL(error.what() << endl);
176 for (JDetector::const_iterator module =
detector.begin(); module !=
detector.end(); ++module) {
177 zmap[module->getString()][module->getFloor()] = module->getPosition();
182 if (i->FLOORID == 0) {
190 module.setPosition(
JPosition3D(zmap[i->DUID].begin()->second.getX(),
191 zmap[i->DUID].begin()->second.getY(),
196 NOTICE(
"Adding module " << module << endl);
208 NOTICE(
"Setting time offsets of acoustic sensors... " << flush);
212 ResultSet& rs =
getResultSet(getTable<JDetectorIntegration_t>());
214 if (! (rs >> detector_t)) {
218 detector_t.
configure(getDetector<string>(
id));
228 const JLocation_t location = router.getLocation(i->first);
230 JDetector::iterator p = find_if(
detector.begin(),
237 p->setCalibration(
getAverage(
make_array(p->begin(), p->end(), &JModule::getT0), 0.0) - getDelayTime(i->first));
239 FATAL(
"No module for UPI " << i->first << endl);
245 catch(
const exception& error) {
246 FATAL(error.what() << endl);
bool isORCADetector(const JDetectorHeader &header)
Check if given detector header is compatible with that of ORCA.
Utility class to parse command line options.
JPredicate< JResult_t T::*, JComparison::eq > make_predicate(JResult_t T::*member, const JResult_t value)
Helper method to create predicate for data member.
static JGetPBSSequences getPBSSequences
Function object to get PBS sequences as a function of PBS.
Data structure for a composite optical module.
static const double ARCA_TBARZ_M
ORCA T-bar position relative to seabed [m].
then set_variable PMT_FILE set_variable DAQ_FILE set_variable OUTPUT_FILE set_variable DETECTOR else fatal Wrong number of arguments fi set_variable RUNBYRUN file
bool isARCADetector(const JDetectorHeader &header)
Check if given detector header is compatible with tat of ARCA.
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
T get(const JHead &header)
Get object from header.
std::iterator_traits< T >::value_type getAverage(T __begin, T __end)
Get average.
Auxiliary class for specifying selection of database data.
JDetectorsHelper & getDetector()
Auxiliary function for helper object initialisation.
static const JPBS_t ACOUSTIC_SENSOR(3, 4, 3, 6, 2)
PBS of piezo sensor
static const double ORCA_TBARZ_M
ORCA T-bar position relative to seabed [m].
int floor
position in string
map_type::const_iterator range_const_iterator
Logical location of module.
Auxiliary data structure for location of product in detector.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
JSelector & add(const JSelector &selection)
Add selection.
const array_type< JValue_t > & make_array(const JValue_t(&array)[N])
Method to create array of values.
void store(const std::string &file_name, const JDetector &detector)
Store detector to output file.
range_type find(const JUPI_t &upi) const
Find range of products with given UPI.
Auxiliary class to map UPI to location in detector.
z range($ZMAX-$ZMIN)< $MINIMAL_DZ." fi fi typeset -Z 4 STRING typeset -Z 2 FLOOR JPlot1D -f $
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
static const JPBS_t HYDROPHONE(4, 5)
PBS of hydrophone
ResultSet & getResultSet(const std::string &query)
Get result set.
std::vector< JServer > getServernames()
Get list of names of available database servers.
Wrapper class for server name.
Product breakdown structure (PBS).
Data structure for position in three dimensions.
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.