79 JParser<> zap(
"Example program to plot orientation data.");
81 zap[
'f'] =
make_field(inputFile,
"output of JBallarat[.sh]");
82 zap[
'n'] =
make_field(numberOfEvents) = JLimit::max();
90 catch(
const exception &error) {
91 FATAL(error.what() << endl);
107 FATAL(
"No detector address map for detector identier " <<
detector.getID() << endl);
115 STATUS(
"loading input from file(s) " << inputFile <<
"... " << flush);
117 dynamics.load(inputFile);
126 if (router.getModule(module->first).getFloor() != 0) {
128 STATUS(
"Creating graphics for input data " << setw(10) << module->first <<
"... " << flush);
143 z0.
put(i->getX(), (q.twist.getD() > 0.0 ? +2.0 : -2.0) * acos(q.twist.getA()));
154 STATUS(
"Creating graphics for compiled data " << setw(10) << module->first <<
"... " << flush);
156 if (router.getModule(module->first).getFloor() != 0 && !module->second.empty()) {
162 const Double_t xmin = module->second.getXmin();
163 const Double_t xmax = module->second.getXmax();
164 const Int_t nx = (Int_t) ((xmax - xmin) / Tmax_s);
166 TH1D* h0 = H0[module->first] =
new TH1D(
MAKE_CSTRING(
"H[" << module->first <<
"].twist"), NULL, nx, xmin, xmax);
168 for (Int_t i = 1; i <= h0->GetXaxis()->GetNbins(); ++i) {
170 const Double_t x = h0->GetXaxis()->GetBinCenter(i);
175 h0->SetBinContent(i, (q.twist.getD() > 0.0 ? +2.0 : -2.0) * acos(q.twist.getA()));
183 const Double_t xmin =
getUTCTimeRange(dynamics.orientation.begin(), dynamics.orientation.end()).getLowerLimit();
184 const Double_t xmax =
getUTCTimeRange(dynamics.orientation.begin(), dynamics.orientation.end()).getUpperLimit();
185 const Int_t nx = (Int_t) ((xmax - xmin) / Tmax_s);
189 for (Int_t i = 1; i <= X0->GetXaxis()->GetNbins(); ++i) {
191 STATUS(
"Creating graphics for detector data " <<
FIXED(5,1) << (
double) (i * 100) / (
double) X0->GetXaxis()->GetNbins() <<
"%... " << flush <<
'\r');
193 const Double_t x = X0->GetXaxis()->GetBinCenter(i);
194 const JDetector& buffer = dynamics.update(x);
196 for (JDetector::const_iterator module = buffer.begin(); module != buffer.end(); ++module) {
198 if (module->getFloor() != 0) {
200 TH1D* x0 = X0[module->getID()];
206 x0->SetBinContent(i, (q.twist.getD() > 0.0 ? +2.0 : -2.0) * acos(q.twist.getA()));
Utility class to parse command line options.
void put(const Double_t x, const Double_t y)
Put data.
Data structure for graph data.
Router for direct addressing of module data in detector data structure.
bool hasDetectorAddressMap(const int id)
Check if detector address map is available.
static JRotation getRotation
Function object to get rotation matrix to go from first to second module.
#define MAKE_CSTRING(A)
Make C-string.
Lookup table for PMT addresses in detector.
Auxiliary data structure for floating point format specification.
Auxiliary data structure to build TGraph.
const JQuaternion3D & getQuaternion() const
Get quaternion.
JDAQUTCTimeRange getUTCTimeRange(JTreeScanner< T, KM3NETDAQ::JDAQEvaluator > &in)
Get UTC time range.
Auxiliary class for defining the range of iterations of objects.
Auxiliary class to manage set of compatible ROOT objects (e.g. histograms) using unique keys...
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
JDetectorAddressMap & getDetectorAddressMap()
Get detector address map.
data_type::const_iterator const_iterator
Data structure for unit quaternion in three dimensions.
Dynamic detector calibration.
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
General purpose class for object reading from a list of file names.
static const JVector3D JVector3Z_t(0, 0, 1)
unit z-vector
const JLimit & getLimit() const
Get limit.
do set_variable DETECTOR_TXT $WORKDIR detector
Auxiliary data structure for decomposition of quaternion in twist and swing quaternions.
const JModule & getModule(const JDetector &detector, const JModuleLocation &location)
find module with a given string and floor number
JQuaternion3D & conjugate()
Conjugate quaternion.