293   string             detectorFile_a;
 
  294   string             detectorFile_b;
 
  295   bool               overwriteDetector;
 
  304     JParser<> zap(
"Auxiliary program to align two detectors.");
 
  306     zap[
'a'] = 
make_field(detectorFile_a,      
"detector - subject to alignment (option -A)");
 
  307     zap[
'b'] = 
make_field(detectorFile_b,      
"detector - reference for alignment");
 
  308     zap[
'A'] = 
make_field(overwriteDetector,   
"overwrite detector file provided through '-a' with modified positions.");
 
  309     zap[
'T'] = 
make_field(tripodFile,          
"tripods")                               = 
"";
 
  311     zap[
'O'] = 
make_field(option,              
"keep strings vertical");
 
  312     zap[
'r'] = 
make_field(
range,               
"range of floors used in fit")           = JRange_t();
 
  317   catch(
const exception &error) {
 
  318     FATAL(error.what() << endl);
 
  322   if (overwriteDetector) {
 
  323     if (tripodFile == 
"") {
 
  324       FATAL(
"No tripod file.");
 
  333     load(detectorFile_a, detector_a);
 
  340     load(detectorFile_b, detector_b);
 
  347   const JFit_t fit(detector_b, sigma_m, option, 
range);
 
  351   for (JDetector::const_iterator module = detector_a.begin(); module != detector_a.end(); ++module) {
 
  352     if (fit.hasModule(module->getID()) && module->getFloor() != 0) {
 
  353       data.push_back(*module);
 
  365   simplex.step.resize(6);
 
  367   simplex.step[0] = 
JModel_t(0.01, 0.00, 0.00, 0.0,    0.0, 0.0);
 
  368   simplex.step[1] = 
JModel_t(0.00, 0.01, 0.00, 0.0,    0.0, 0.0);
 
  369   simplex.step[2] = 
JModel_t(0.00, 0.00, 0.01, 0.0,    0.0, 0.0);
 
  370   simplex.step[3] = 
JModel_t(0.00, 0.00, 0.00, 5.0e-4, 0.0, 0.0);
 
  371   simplex.step[4] = 
JModel_t(0.00, 0.00, 0.00, 0.0, 1.0e-4, 0.0);
 
  372   simplex.step[5] = 
JModel_t(0.00, 0.00, 0.00, 0.0, 0.0, 1.0e-4);
 
  374   const double chi2 = simplex(fit, data.begin(), data.end());
 
  376   cout << 
"Number of iterations " << simplex.numberOfIterations << endl;
 
  377   cout << 
"chi2/NDF " << 
FIXED(7,3) << chi2 << 
'/' << (detector_a.size() - simplex.step.size()) << endl;
 
  379   cout << 
"model:" << endl;
 
  381   cout << 
"x    " << 
FIXED(7,3) << simplex.value.x   << endl;
 
  382   cout << 
"y    " << 
FIXED(7,3) << simplex.value.y   << endl;
 
  383   cout << 
"z    " << 
FIXED(7,3) << simplex.value.z   << endl;
 
  384   cout << 
"phi  " << 
FIXED(9,5) << simplex.value.phi << endl;
 
  385   cout << 
"Tx   " << 
FIXED(9,5) << simplex.value.tx  << endl;
 
  386   cout << 
"Ty   " << 
FIXED(9,5) << simplex.value.ty  << endl;
 
  389   if (overwriteDetector) {
 
  391     NOTICE(
"Store alignment data on files " << detectorFile_a << 
" and " << tripodFile << endl);
 
  393     detector_a.comment.add(
JMeta(argc,argv));
 
  395     for (JDetector::iterator module = detector_a.begin(); module != detector_a.end(); ++module) {
 
  400       module->add(p2 - p1);
 
  404       store(detectorFile_a, detector_a);
 
  412     tripods.
load(tripodFile.c_str());
 
  418       const JPosition3D p1 = tripod->getUTMPosition() - detector_a.getUTMPosition();
 
  421       tripod->
add(p2 - p1);
 
  424     tripods.
store(tripodFile.c_str());
 
Utility class to parse command line options. 
 
JFit_t
Enumeration for fit algorithms. 
 
Auxiliary data structure for floating point format specification. 
 
Auxiliary wrapper for I/O of container with optional comment (see JComment). 
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object 
 
void store(const std::string &file_name, const JDetector &detector)
Store detector to output file. 
 
const JPosition3D & getPosition() const 
Get position. 
 
void load(const char *file_name)
Load from input file. 
 
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. 
 
Simple fit method based on Powell's algorithm, see reference: Numerical Recipes in C++...
 
void store(const char *file_name) const 
Store to output file. 
 
Data structure for position in three dimensions. 
 
JVector3D & add(const JVector3D &vector)
Add vector.