38 int main(
int argc,
char **argv)
52 JParser<> zap(
"Example program to plot orientation data.");
54 zap[
'f'] =
make_field(inputFile,
"output of JBallarat[.sh]");
55 zap[
'n'] =
make_field(numberOfEvents) = JLimit::max();
63 catch(
const exception &error) {
64 FATAL(error.what() << endl);
80 FATAL(
"No detector address map for detector identier " <<
detector.getID() << endl);
88 STATUS(
"loading input from file(s) " << inputFile <<
"... " << flush);
90 dynamics.load(inputFile);
101 STATUS(
"Creating graphics for input data " << setw(10) << module->first <<
"... " << flush);
127 STATUS(
"Creating graphics for compiled data " << setw(10) << module->first <<
"... " << flush);
129 if (router.
getModule(module->first).
getFloor() != 0 && !module->second.empty()) {
135 const Double_t xmin = module->second.getXmin();
136 const Double_t xmax = module->second.getXmax();
137 const Int_t nx = (Int_t) ((xmax - xmin) / Tmax_s);
139 TH1D* h0 = H0[module->first] =
new TH1D(
MAKE_CSTRING(
"H[" << module->first <<
"].twist"), NULL, nx, xmin, xmax);
141 for (Int_t i = 1; i <= h0->GetXaxis()->GetNbins(); ++i) {
143 const Double_t x = h0->GetXaxis()->GetBinCenter(i);
156 const Double_t xmin = dynamics.orientation.getXmin();
157 const Double_t xmax = dynamics.orientation.getXmax();
158 const Int_t nx = (Int_t) ((xmax - xmin) / Tmax_s);
162 for (Int_t i = 1; i <= X0->GetXaxis()->GetNbins(); ++i) {
164 STATUS(
"Creating graphics for detector data " <<
FIXED(5,1) << (
double) (i * 100) / (
double) X0->GetXaxis()->GetNbins() <<
"%... " << flush <<
'\r');
166 const Double_t x = X0->GetXaxis()->GetBinCenter(i);
169 for (JDetector::const_iterator module = buffer.begin(); module != buffer.end(); ++module) {
171 if (module->getFloor() != 0) {
173 TH1D* x0 = X0[module->getID()];
Utility class to parse command line options.
void put(const Double_t x, const Double_t y)
Put data.
int getFloor() const
Get floor number.
const JModule & getModule(const JObjectID &id) const
Get module parameters.
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.
Dynamic ROOT object management.
Auxiliary data structure for floating point format specification.
Auxiliary data structure to build TGraph.
Data structure for detector geometry and calibration.
ROOT TTree parameter settings.
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...
I/O formatting auxiliaries.
JQuaternion3D twist
rotation around parallel axis
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Dynamic detector calibration.
JDetectorAddressMap & getDetectorAddressMap()
Get detector address map.
General purpose messaging.
data_type::const_iterator const_iterator
Scanning of objects from multiple files according a format that follows from the extension of each fi...
double getD() const
Get d value.
Data structure for unit quaternion in three dimensions.
Direct access to module in detector data structure.
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.
Utility class to parse command line options.
static const JVector3D JVector3Z_t(0, 0, 1)
unit z-vector
double getA() const
Get a value.
const JLimit & getLimit() const
Get limit.
Compass event data types.
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.
int main(int argc, char *argv[])