118     JParser<> zap(
"Auxiliary program to draw a given module in 3D.");
 
  126   catch(
const exception &error) {
 
  127     FATAL(error.what() << endl);
 
  144     FATAL(
"Empty detector.");
 
  150   if (moduleID == -1) {
 
  158     if (!router.hasModule(moduleID)) {
 
  159       FATAL(
"Missing module " << moduleID << endl);
 
  161       module = router.getModule(moduleID);
 
  172   TApplication* app = 
new TApplication(
"user", NULL, NULL);
 
  174   c1 = 
new TCanvas(
"module", detectorFile.c_str(), 600, 600);
 
  175   p1 = 
new TPaveText(0.7, 0.9, 1.0, 1.0, 
"NB");
 
  180   p1->SetBorderSize(0);
 
  181   p1->SetTextSize(0.03);
 
  183   TGeoManager*  gGeoManager = 
new TGeoManager(
"geometry", 
"");
 
  185   TGeoMaterial* mat = 
new TGeoMaterial(
"vacuum", 0, 0, 0);
 
  186   TGeoMedium*   med = 
new TGeoMedium  (
"vacuum", 1, mat);
 
  187   TGeoVolume*   top = gGeoManager->MakeBox(
"top", med, 30.0, 30.0, 30.0);
 
  199   const double dz   =  3.0;  
 
  200   const double R1   =  2.0;  
 
  201   const double R2   =  4.0;  
 
  204   const Int_t color[] = { kRed, kOrange, kYellow, kGreen, kBlue, kMagenta };
 
  206   for (
unsigned int tdc = 0; tdc != module.size(); ++tdc) {
 
  209     const int                    index   = address.
ring     - 
'A';
 
  213     os[0] << 
"PMT " << setw(1) << address.
ring << setw(1) << address.
position;
 
  214     os[1] << 
"TDC " << setw(2) << tdc;
 
  216     TGeoVolumeAssembly* pPMT = 
new TGeoVolumeAssembly(
"PMT");
 
  221     for (
int i = 0; i != 
sizeof(os)/
sizeof(os[0]); ++i) {
 
  226     pTube->SetLineColor(color[index]);
 
  227     pCone->SetLineColor(color[index]);
 
  229     pPMT->AddNode(pTube, 0, 
new TGeoTranslation(0.0, 0.0, -dz));
 
  230     pPMT->AddNode(pCone, 1, 
new TGeoTranslation(0.0, 0.0, 0.0));
 
  234     const Double_t 
x     = pmt.
getX() * 100;             
 
  235     const Double_t 
y     = pmt.
getY() * 100;             
 
  236     const Double_t z     = pmt.
getZ() * 100;             
 
  238     const Double_t theta = pmt.
getTheta() * 180.0 / 
PI;  
 
  239     const Double_t phi   = pmt.
getPhi()   * 180.0 / 
PI;  
 
  242           << setw(1) << address.
ring      
  243           << setw(1) << address.
position                  << 
" " 
  244           << setw(8) << pmt.
getID()                       << 
" " 
  246           << setw(2) << tdc                               << 
" " 
  247           << 
FIXED(3,0) << 
x     << 
" [cm] "  
  248           << 
FIXED(3,0) << 
y     << 
" [cm] "  
  249           << 
FIXED(3,0) << z     << 
" [cm] "  
  250           << 
FIXED(4,0) << theta << 
" [deg] "  
  251           << 
FIXED(4,0) << phi   << 
" [deg] "  
  254     TGeoRotation* rot = 
new TGeoRotation();
 
  259     top->AddNode(pPMT, tdc, 
new TGeoCombiTrans(
x,
y,z,rot));
 
  262   gGeoManager->SetTopVolume(top);
 
  263   gGeoManager->CloseGeometry();
 
  267   c1->GetView()->ShowAxis();
 
TCanvas * c1
Global variables to handle mouse events.
 
#define DEBUG(A)
Message macros.
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
 
Lookup table for PMT addresses in detector.
 
const JModuleAddressMap & get(const int id) const
Get module address map.
 
Lookup table for PMT addresses in optical module.
 
const JPMTAddressTranslator & getAddressTranslator(const int tdc) const
Get PMT address translator.
 
Router for direct addressing of module data in detector data structure.
 
Data structure for a composite optical module.
 
const JPMT & getPMT(const int index) const
Get PMT.
 
char ring
ring number ['A','F']
 
int position
position within ring [1,6]
 
Data structure for PMT geometry, calibration and status.
 
const JPosition3D & getPosition() const
Get position.
 
double getY() const
Get y position.
 
double getZ() const
Get z position.
 
double getX() const
Get x position.
 
double getTheta() const
Get theta angle.
 
double getPhi() const
Get phi angle.
 
void AddText(const std::string &text)
Add text to buffer.
 
int getID() const
Get identifier.
 
Utility class to parse command line options.
 
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
 
JDetectorAddressMap & getDetectorAddressMap()
Get detector address map.
 
static const double PI
Mathematical constants.
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
 
Auxiliary data structure for floating point format specification.
 
Data structure to translate PMT physical to readout address.