54     JParser<> zap(
"Auxiliary program to draw the footprint of detector(s).");
 
   56     zap[
'w'] = 
make_field(canvas,       
"size of canvas <nx>x<ny> [pixels]")  = 
JCanvas(500, 500);
 
   57     zap[
'a'] = 
make_field(detectorFile, 
"detector file");
 
   60     zap[
'L'] = 
make_field(legend,       
"optional legend");
 
   61     zap[
'S'] = 
make_field(markerSize,   
"marker size")                        = 1.0;
 
   62     zap[
'B'] = 
make_field(batch,        
"batch processing");
 
   67   catch(
const exception &error) {
 
   68     FATAL(error.what() << endl);
 
   72   gROOT->SetBatch(batch);
 
   74   gErrorIgnoreLevel = kWarning;
 
   76   TApplication* tp = 
new TApplication(
"user", NULL, NULL);
 
   77   TCanvas*      cv = 
new TCanvas(
"detector", 
"", canvas.x, canvas.y);
 
   81   gROOT->SetStyle(
"gplot");
 
   84   cv->SetFillStyle(4000);
 
   85   cv->SetFillColor(kWhite);
 
   92   int number_of_positions = 0;
 
  104       load(*file_name, detector);
 
  110     if (detector.empty()) {
 
  111       ERROR(
"Empty detector." << endl);
 
  114     circle   = 
JCircle2D(detector.begin(), detector.end());
 
  117     TGraph* graph = 
new TGraph(detector.size());
 
  123     for (JDetector::const_iterator i = detector.begin(); i != detector.end(); ++i, ++
n) {      
 
  125       number_of_positions += 1;
 
  127       graph->GetX()[
n] = i->getX();
 
  128       graph->GetY()[
n] = i->getY();
 
  133     buffer.push_back(graph);
 
  136   if (!tripods.empty()) {
 
  138     if (number_of_positions == 0) {
 
  144       position /= tripods.size();
 
  150       zbuf.push_back(*i - position);
 
  153     circle   = 
JCircle2D(zbuf.begin(), zbuf.end());
 
  155     TGraph* graph = 
new TGraph(zbuf.size());
 
  157     graph->SetTitle(
"tripod");
 
  159     for (
size_t i = 0; i != zbuf.size(); ++i) {
 
  160       graph->GetX()[i] = zbuf[i].getPosition().getX();
 
  161       graph->GetY()[i] = zbuf[i].getPosition().getY();
 
  166     buffer.push_back(graph);
 
  169   if (number_of_positions == 0 && tripods.empty()) {
 
  170     FATAL(
"No detector elements." << endl);
 
  174   DEBUG(
"Detector (x,y,R): " << circle.getX() << 
' ' << circle.getY() << 
' ' << circle.getRadius() << endl);
 
  177     for (
int i = 0; i != (*graph)->GetN(); ++i) {
 
  178       (*graph)->GetX()[i] -= circle.getX();
 
  179       (*graph)->GetY()[i] -= circle.getY();
 
  183   circle.sub(circle.getPosition());
 
  185   Double_t 
R    = circle.getRadius();
 
  191   Double_t xmin = circle.getX() - 
R;
 
  192   Double_t xmax = circle.getX() + 
R;
 
  193   Double_t ymin = circle.getY() - 
R;
 
  194   Double_t ymax = circle.getY() + 
R;
 
  197   const Double_t dx = (xmax - xmin);
 
  198   const Double_t dy = (ymax - ymin);
 
  208   TH2D h2(
"h2", 
"", 1, xmin, xmax, 1, ymin, ymax);
 
  210   h2.GetXaxis()->SetTitle(
"x [m]");
 
  211   h2.GetYaxis()->SetTitle(
"y [m]");
 
  213   h2.GetXaxis()->CenterTitle(
true);
 
  214   h2.GetYaxis()->CenterTitle(
true);
 
  220   TEllipse ellipse(circle.getX(), circle.getY(), circle.getRadius());
 
  231     const Double_t x2  = gPad->GetX2() - gStyle->GetPadRightMargin();
 
  232     const Double_t y2  = gPad->GetY2() - gStyle->GetPadTopMargin();
 
  235     Double_t font_size = 0.03; 
 
  238       length = max(length, strlen((*graph)->GetTitle()));
 
  241     TLegend* legend = 
new TLegend(x2 - length        * font_size * 0.65 - 0.02, 
 
  242                                   y2 - buffer.size() * font_size, 
 
  247     legend->SetFillColor(0);
 
  248     legend->SetBorderSize(0);
 
  249     legend->SetTextSize(font_size);
 
  252       legend->AddEntry(*graph, (*graph)->GetTitle(), 
"P"); 
 
Utility class to parse command line options. 
 
virtual const pointer_type & next()
Get next element. 
 
Data structure for size of TCanvas. 
 
const JUTMPosition & getUTMPosition() const 
Get UTM position. 
 
Data structure for circle in two dimensions. 
 
std::vector< T >::const_iterator const_iterator
 
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
 
Data structure for UTM position. 
 
The template JSinglePointer class can be used to hold a pointer to an object. 
 
T & getInstance(const T &object)
Get static instance from temporary object. 
 
Auxiliary container for detector elements. 
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object 
 
void load(const JString &file_name, JDetector &detector)
Load detector from input file. 
 
then usage $script[distance] fi case set_variable R
 
Wrapper class around ROOT TStyle. 
 
alias put_queue eval echo n
 
std::string getFilename(const std::string &file_name)
Get file name part, i.e. part after last JEEP::PATHNAME_SEPARATOR if any. 
 
std::vector< T >::iterator iterator
 
#define DEBUG(A)
Message macros. 
 
static JMarkerAttributes & getInstance()
Get reference to unique instance of this class object.