100 JParser<> zap(
"Example program to plot orientation data.");
102 zap[
'f'] =
make_field(inputFile,
"output of JBallarat[.sh]");
103 zap[
'n'] =
make_field(numberOfEvents) = JLimit::max();
111 catch(
const exception &error) {
112 FATAL(error.what() << endl);
128 FATAL(
"No detector address map for detector identier " <<
detector.getID() << endl);
136 STATUS(
"loading input from file(s) " << inputFile <<
"... " << flush);
138 dynamics.load(inputFile);
147 if (router.getModule(module->first).getFloor() != 0) {
149 STATUS(
"Creating graphics for input data " << setw(10) << module->first << flush <<
'\r');
161 z0.
put(i->getX(), getTwist(Q1 * Q0));
171 if (router.getModule(module->first).getFloor() != 0 && module->second.size() > 1
u) {
173 STATUS(
"Creating graphics for input data " << setw(10) << module->first << flush <<
'\r');
175 TH1D*
h1 = H1[module->first] =
new TH1D(
MAKE_CSTRING(
"U[" << module->first <<
"].twist"), NULL, 500, -180.0, +180.0);
182 h1->Fill(getTwist(Q1 * Q0.
conjugate()) * 180.0 /
PI);
192 STATUS(
"Creating graphics for compiled data " << setw(10) << module->first << flush <<
'\r');
194 if (router.getModule(module->first).getFloor() != 0 && !module->second.empty()) {
200 const Double_t
xmin = module->second.getXmin();
201 const Double_t
xmax = module->second.getXmax();
202 const Int_t nx = (Int_t) ((xmax - xmin) / Tmax_s);
204 TH1D* h0 = H0[module->first] =
new TH1D(
MAKE_CSTRING(
"H[" << module->first <<
"].twist"), NULL, nx, xmin, xmax);
206 for (Int_t i = 1; i <= h0->GetXaxis()->GetNbins(); ++i) {
208 const Double_t
x = h0->GetXaxis()->GetBinCenter(i);
211 h0->SetBinContent(i, getTwist(Q));
217 const Double_t xmin =
getUTCTimeRange(dynamics.orientation.begin(), dynamics.orientation.end()).getLowerLimit();
218 const Double_t xmax =
getUTCTimeRange(dynamics.orientation.begin(), dynamics.orientation.end()).getUpperLimit();
219 const Int_t nx = (Int_t) ((xmax - xmin) / Tmax_s);
223 for (Int_t i = 1; i <= X0->GetXaxis()->GetNbins(); ++i) {
225 STATUS(
"Creating graphics for detector data " <<
FIXED(5,1) << (
double) (i * 100) / (
double) X0->GetXaxis()->GetNbins() <<
"%" << flush <<
'\r');
227 dynamics.update(X0->GetXaxis()->GetBinCenter(i));
229 for (JDetector::const_iterator module = dynamics.begin(); module != dynamics.end(); ++module) {
231 if (module->getFloor() != 0) {
233 TH1D* x0 = X0[module->getID()];
237 x0->SetBinContent(i, getTwist(Q));
Utility class to parse command line options.
JDAQUTCTimeRange getUTCTimeRange()
Get UTC time range.
Q(UTCMax_s-UTCMin_s)-livetime_s
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.
then for HISTOGRAM in h0 h1
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.
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
static const double PI
Mathematical constants.
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.
const JLimit & getLimit() const
Get limit.
do set_variable DETECTOR_TXT $WORKDIR detector
const JModule & getModule(const JDetector &detector, const JModuleLocation &location)
find module with a given string and floor number
JQuaternion3D & conjugate()
Conjugate quaternion.