ATLAS Offline Software
Loading...
Searching...
No Matches
VP1TrackingGeometrySystem.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
6// //
7// Implementation of class VP1TrackingGeometrySystem //
8// //
9// Author: Andreas Salzburger <Andreas.Salzburger@cern.ch> (primary) //
10// Thomas Kittelmann <Thomas.Kittelmann@cern.ch> //
11// //
12// Initial version: June 2007 //
13// //
15
20#include "ui_trackinggeometrycontrollerform.h"
21
23
24#include <Inventor/nodes/SoRotationXYZ.h>
25#include <Inventor/nodes/SoSeparator.h>
26#include <Inventor/nodes/SoMaterial.h>
27#include <Inventor/nodes/SoSwitch.h>
28#include <Inventor/nodes/SoClipPlane.h>
29
34#include "GaudiKernel/ISvcLocator.h"
36
37#include <vector>
38#include <map>
39#include <string>
40
41// Qt
42#include <QInputDialog>
43#include <QLineEdit>
44#include <QCheckBox>
45#include <QString>
46#include <QBuffer>
47
49{
50 bool retrieveSuccess = false;
51
52 // for signal handling
53 bool senderMapFilled = false;
54 std::map<QObject*,std::pair<SoSwitch*,bool> > checkBoxSwitchMap;
55 std::vector<VP1ExtraSepLayerHelper*> sepHelperContainer;
56
57 // Tracking volumes
58 SoSwitch* volswitch = nullptr;
60
61 // Beam pipe
62 SoSwitch* beamPipeSwitch = nullptr;
64
65 // Pixel section
66 SoSwitch* pixSurfBarrelSwitch = nullptr;
67 SoSwitch* pixSurfECASwitch = nullptr;
68 SoSwitch* pixSurfECCSwitch = nullptr;
72
73 SoSwitch* pixLayBarrelSwitch = nullptr;
74 SoSwitch* pixLayECASwitch = nullptr;
75 SoSwitch* pixLayECCSwitch = nullptr;
79
80 // SCT section
81 SoSwitch* sctSurfBarrelSwitch = nullptr;
82 SoSwitch* sctSurfECASwitch = nullptr;
83 SoSwitch* sctSurfECCSwitch = nullptr;
87
88 SoSwitch* sctLayBarrelSwitch = nullptr;
89 SoSwitch* sctLayECASwitch = nullptr;
90 SoSwitch* sctLayECCSwitch = nullptr;
94
95 // TRT section
96 SoSwitch* trtSurfBarrelSwitch = nullptr;
97 SoSwitch* trtSurfECASwitch = nullptr;
98 SoSwitch* trtSurfECCSwitch = nullptr;
102
103 SoSwitch* trtLayBarrelSwitch = nullptr;
104 SoSwitch* trtLayECASwitch = nullptr;
105 SoSwitch* trtLayECCSwitch = nullptr;
109
110 // Passive layers
111 SoSwitch* passiveLayBarrelSwitch = nullptr;
112 SoSwitch* passiveLayECASwitch = nullptr;
113 SoSwitch* passiveLayECCSwitch = nullptr;
117
118
119 SoSwitch* clipswitch = nullptr;
120 SoSwitch* msBswitch = nullptr;
121 SoSwitch* msIswitch = nullptr;
122 SoSwitch* msOswitch = nullptr;
123 SoSwitch* msBIswitch = nullptr;
124 SoSwitch* msBMswitch = nullptr;
125 SoSwitch* msBOswitch = nullptr;
126 SoSwitch* msEIswitch = nullptr;
127 SoSwitch* msEMswitch = nullptr;
128 SoSwitch* msEOswitch = nullptr;
129 SoSwitch* msCSswitch = nullptr;
130 SoSwitch* msTGswitch = nullptr;
131 SoSwitch* msBIlayswitch = nullptr;
132 SoSwitch* msBMlayswitch = nullptr;
133 SoSwitch* msBOlayswitch = nullptr;
134 SoSwitch* msEIlayswitch = nullptr;
135 SoSwitch* msEMlayswitch = nullptr;
136 SoSwitch* msEOlayswitch = nullptr;
137 SoSwitch* msCSlayswitch = nullptr;
138 SoSwitch* msTGlayswitch = nullptr;
139 SoSwitch* msBTenvswitch = nullptr;
140 SoSwitch* msETenvswitch = nullptr;
141 SoSwitch* msShenvswitch = nullptr;
142 SoSwitch* msFeenvswitch = nullptr;
143 SoSwitch* msRaenvswitch = nullptr;
144 SoSwitch* msBTdlswitch = nullptr;
145 SoSwitch* msETdlswitch = nullptr;
146 SoSwitch* msShdlswitch = nullptr;
147 SoSwitch* msFedlswitch = nullptr;
148 SoSwitch* msRadlswitch = nullptr;
149
150
180
183
184 // widgets for the sidepane
186 QLineEdit* lineEdit_TrackingGeometryName = nullptr;
187
188 QPushButton* pushButton_Retrieve = nullptr;
189 QCheckBox* checkBox_TrackingVolumes = nullptr;
190
191 QCheckBox* checkBox_pixSurfBarrel = nullptr;
192 QCheckBox* checkBox_pixSurfECA = nullptr;
193 QCheckBox* checkBox_pixSurfECC = nullptr;
194 QCheckBox* checkBox_sctSurfBarrel = nullptr;
195 QCheckBox* checkBox_sctSurfECA = nullptr;
196 QCheckBox* checkBox_sctSurfECC = nullptr;
197 QCheckBox* checkBox_trtSurfBarrel = nullptr;
198 QCheckBox* checkBox_trtSurfECA = nullptr;
199 QCheckBox* checkBox_trtSurfECC = nullptr;
200
201 QCheckBox* checkBox_beamPipe = nullptr;
202 QCheckBox* checkBox_pixLayBarrel = nullptr;
203 QCheckBox* checkBox_pixLayECA = nullptr;
204 QCheckBox* checkBox_pixLayECC = nullptr;
205 QCheckBox* checkBox_sctLayBarrel = nullptr;
206 QCheckBox* checkBox_sctLayECA = nullptr;
207 QCheckBox* checkBox_sctLayECC = nullptr;
208 QCheckBox* checkBox_trtLayBarrel = nullptr;
209 QCheckBox* checkBox_trtLayECA = nullptr;
210 QCheckBox* checkBox_trtLayECC = nullptr;
211 QCheckBox* checkBox_passiveLayBarrel = nullptr;
212 QCheckBox* checkBox_passiveLayECA = nullptr;
213 QCheckBox* checkBox_passiveLayECC = nullptr;
214
215 std::vector<std::string> surfacesNames;
216
217 QCheckBox* checkBox_ClipPlane = nullptr;
218 QCheckBox* checkBox_MuonStaticFrameB = nullptr;
219 QCheckBox* checkBox_MuonStaticFrameI = nullptr;
220 QCheckBox* checkBox_MuonStaticFrameO = nullptr;
221 QCheckBox* checkBox_msBIvol = nullptr;
222 QCheckBox* checkBox_msBIlay = nullptr;
223 QCheckBox* checkBox_msBMvol = nullptr;
224 QCheckBox* checkBox_msBMlay = nullptr;
225 QCheckBox* checkBox_msBOvol = nullptr;
226 QCheckBox* checkBox_msBOlay = nullptr;
227 QCheckBox* checkBox_msEIvol = nullptr;
228 QCheckBox* checkBox_msEIlay = nullptr;
229 QCheckBox* checkBox_msEMvol = nullptr;
230 QCheckBox* checkBox_msEMlay = nullptr;
231 QCheckBox* checkBox_msEOvol = nullptr;
232 QCheckBox* checkBox_msEOlay = nullptr;
233 QCheckBox* checkBox_msCSvol = nullptr;
234 QCheckBox* checkBox_msCSlay = nullptr;
235 QCheckBox* checkBox_msTGvol = nullptr;
236 QCheckBox* checkBox_msTGlay = nullptr;
237 QCheckBox* checkBox_msBTenv = nullptr;
238 QCheckBox* checkBox_msETenv = nullptr;
239 QCheckBox* checkBox_msShenv = nullptr;
240 QCheckBox* checkBox_msFeenv = nullptr;
241 QCheckBox* checkBox_msRaenv = nullptr;
242 QCheckBox* checkBox_msBTdl = nullptr;
243 QCheckBox* checkBox_msETdl = nullptr;
244 QCheckBox* checkBox_msShdl = nullptr;
245 QCheckBox* checkBox_msFedl = nullptr;
246 QCheckBox* checkBox_msRadl = nullptr;
247
248 // variables keeping some defaults
251
252 // global stuff
254 SoSeparator* root = nullptr;
255
257};
258
259//_____________________________________________________________________________________
261 : IVP13DSystemSimple("TrkGeo",
262 "This system displays the tracking geometry.",
263 "Andreas.Salzburger@cern.ch"),
264 m_d( new Imp)
265{
266 m_d->retrieveSuccess = false;
267 m_d->senderMapFilled = false;
268 m_d->volswitch = nullptr;
269
270 // beam pipe
271 m_d->beamPipeSwitch = nullptr;
272 m_d->sephelper_beamPipe = nullptr;
273
274 // Pixel section
275 m_d->pixSurfBarrelSwitch = nullptr;
276 m_d->pixSurfECASwitch = nullptr;
277 m_d->pixSurfECCSwitch = nullptr;
278 m_d->sephelper_pixSurfBarrel = nullptr;
279 m_d->sephelper_pixSurfECA = nullptr;
280 m_d->sephelper_pixSurfECC = nullptr;
281
282 m_d->pixLayBarrelSwitch = nullptr;
283 m_d->pixLayECASwitch = nullptr;
284 m_d->pixLayECCSwitch = nullptr;
285 m_d->sephelper_pixLayBarrel = nullptr;
286 m_d->sephelper_pixLayECA = nullptr;
287 m_d->sephelper_pixLayECC = nullptr;
288
289 // SCT section
290 m_d->sctSurfBarrelSwitch = nullptr;
291 m_d->sctSurfECASwitch = nullptr;
292 m_d->sctSurfECCSwitch = nullptr;
293 m_d->sephelper_sctSurfBarrel = nullptr;
294 m_d->sephelper_sctSurfECA = nullptr;
295 m_d->sephelper_sctSurfECC = nullptr;
296
297 m_d->sctLayBarrelSwitch = nullptr;
298 m_d->sctLayECASwitch = nullptr;
299 m_d->sctLayECCSwitch = nullptr;
300 m_d->sephelper_sctLayBarrel = nullptr;
301 m_d->sephelper_sctLayECA = nullptr;
302 m_d->sephelper_sctLayECC = nullptr;
303
304 // TRT section
305 m_d->trtSurfBarrelSwitch = nullptr;
306 m_d->trtSurfECASwitch = nullptr;
307 m_d->trtSurfECCSwitch = nullptr;
308 m_d->sephelper_trtSurfBarrel = nullptr;
309 m_d->sephelper_trtSurfECA = nullptr;
310 m_d->sephelper_trtSurfECC = nullptr;
311
312 m_d->trtLayBarrelSwitch = nullptr;
313 m_d->trtLayECASwitch = nullptr;
314 m_d->trtLayECCSwitch = nullptr;
315 m_d->sephelper_trtLayBarrel = nullptr;
316 m_d->sephelper_trtLayECA = nullptr;
317 m_d->sephelper_trtLayECC = nullptr;
318
319 // passive layers
320 m_d->passiveLayBarrelSwitch = nullptr;
321 m_d->passiveLayECASwitch = nullptr;
322 m_d->passiveLayECCSwitch = nullptr;
323 m_d->sephelper_passiveLayBarrel = nullptr;
324 m_d->sephelper_passiveLayECA = nullptr;
325 m_d->sephelper_passiveLayECC = nullptr;
326
327 m_d->clipswitch = nullptr;
328 m_d->msBswitch = nullptr;
329 m_d->msIswitch = nullptr;
330 m_d->msOswitch = nullptr;
331 m_d->msBIswitch = nullptr;
332 m_d->msBMswitch = nullptr;
333 m_d->msBOswitch = nullptr;
334 m_d->msEIswitch = nullptr;
335 m_d->msEMswitch = nullptr;
336 m_d->msEOswitch = nullptr;
337 m_d->msCSswitch = nullptr;
338 m_d->msTGswitch = nullptr;
339 m_d->msBIlayswitch = nullptr;
340 m_d->msBMlayswitch = nullptr;
341 m_d->msBOlayswitch = nullptr;
342 m_d->msEIlayswitch = nullptr;
343 m_d->msEMlayswitch = nullptr;
344 m_d->msEOlayswitch = nullptr;
345 m_d->msCSlayswitch = nullptr;
346 m_d->msTGlayswitch = nullptr;
347 m_d->msBTenvswitch = nullptr;
348 m_d->msETenvswitch = nullptr;
349 m_d->msShenvswitch = nullptr;
350 m_d->msFeenvswitch = nullptr;
351 m_d->msRaenvswitch = nullptr;
352 m_d->msBTdlswitch = nullptr;
353 m_d->msETdlswitch = nullptr;
354 m_d->msShdlswitch = nullptr;
355 m_d->msFedlswitch = nullptr;
356 m_d->msRadlswitch = nullptr;
357
358 m_d->sephelper_vol = nullptr;
359 m_d->sephelper_msB = nullptr;
360 m_d->sephelper_msI = nullptr;
361 m_d->sephelper_msO = nullptr;
362 m_d->sephelper_msBI = nullptr;
363 m_d->sephelper_msBM = nullptr;
364 m_d->sephelper_msBO = nullptr;
365 m_d->sephelper_msEI = nullptr;
366 m_d->sephelper_msEM = nullptr;
367 m_d->sephelper_msEO = nullptr;
368 m_d->sephelper_msCS = nullptr;
369 m_d->sephelper_msTG = nullptr;
370 m_d->sephelper_msBIlay = nullptr;
371 m_d->sephelper_msBMlay = nullptr;
372 m_d->sephelper_msBOlay = nullptr;
373 m_d->sephelper_msEIlay = nullptr;
374 m_d->sephelper_msEMlay = nullptr;
375 m_d->sephelper_msEOlay = nullptr;
376 m_d->sephelper_msCSlay = nullptr;
377 m_d->sephelper_msTGlay = nullptr;
378 m_d->sephelper_msBTenv = nullptr;
379 m_d->sephelper_msETenv = nullptr;
380 m_d->sephelper_msShenv = nullptr;
381 m_d->sephelper_msFeenv = nullptr;
382 m_d->sephelper_msRaenv = nullptr;
383 m_d->sephelper_msBTdl = nullptr;
384 m_d->sephelper_msETdl = nullptr;
385 m_d->sephelper_msShdl = nullptr;
386 m_d->sephelper_msFedl = nullptr;
387 m_d->sephelper_msRadl = nullptr;
388
389 m_d->trackvol2sonode = nullptr;
390 m_d->surface2sonode = nullptr;
391
392 m_d->lineEdit_TrackingGeometrySvcName = nullptr;
393 m_d->lineEdit_TrackingGeometryName = nullptr;
394 m_d->pushButton_Retrieve = nullptr;
395
396 m_d->checkBox_pixSurfBarrel = nullptr;
397 m_d->checkBox_pixSurfECA = nullptr;
398 m_d->checkBox_pixSurfECC = nullptr;
399 m_d->checkBox_sctSurfBarrel = nullptr;
400 m_d->checkBox_sctSurfECA = nullptr;
401 m_d->checkBox_sctSurfECC = nullptr;
402 m_d->checkBox_trtSurfBarrel = nullptr;
403 m_d->checkBox_trtSurfECA = nullptr;
404 m_d->checkBox_trtSurfECC = nullptr;
405
406 m_d->checkBox_beamPipe = nullptr;
407 m_d->checkBox_pixLayBarrel = nullptr;
408 m_d->checkBox_pixLayECA = nullptr;
409 m_d->checkBox_pixLayECC = nullptr;
410 m_d->checkBox_sctLayBarrel = nullptr;
411 m_d->checkBox_sctLayECA = nullptr;
412 m_d->checkBox_sctLayECC = nullptr;
413 m_d->checkBox_trtLayBarrel = nullptr;
414 m_d->checkBox_trtLayECA = nullptr;
415 m_d->checkBox_trtLayECC = nullptr;
416 m_d->checkBox_passiveLayBarrel = nullptr;
417 m_d->checkBox_passiveLayECA = nullptr;
418 m_d->checkBox_passiveLayECC = nullptr;
419
420 m_d->checkBox_TrackingVolumes = nullptr;
421 m_d->checkBox_ClipPlane = nullptr;
422 m_d->checkBox_MuonStaticFrameB = nullptr;
423 m_d->checkBox_MuonStaticFrameI = nullptr;
424 m_d->checkBox_MuonStaticFrameO = nullptr;
425 m_d->checkBox_msBIvol = nullptr;
426 m_d->checkBox_msBMvol = nullptr;
427 m_d->checkBox_msBOvol = nullptr;
428 m_d->checkBox_msEIvol = nullptr;
429 m_d->checkBox_msEMvol = nullptr;
430 m_d->checkBox_msEOvol = nullptr;
431 m_d->checkBox_msCSvol = nullptr;
432 m_d->checkBox_msTGvol = nullptr;
433 m_d->checkBox_msBIlay = nullptr;
434 m_d->checkBox_msBMlay = nullptr;
435 m_d->checkBox_msBOlay = nullptr;
436 m_d->checkBox_msEIlay = nullptr;
437 m_d->checkBox_msEMlay = nullptr;
438 m_d->checkBox_msEOlay = nullptr;
439 m_d->checkBox_msCSlay = nullptr;
440 m_d->checkBox_msTGlay = nullptr;
441 m_d->checkBox_msBTenv = nullptr;
442 m_d->checkBox_msETenv = nullptr;
443 m_d->checkBox_msShenv = nullptr;
444 m_d->checkBox_msFeenv = nullptr;
445 m_d->checkBox_msRaenv = nullptr;
446 m_d->checkBox_msBTdl = nullptr;
447 m_d->checkBox_msETdl = nullptr;
448 m_d->checkBox_msShdl = nullptr;
449 m_d->checkBox_msFedl = nullptr;
450 m_d->checkBox_msRadl = nullptr;
451
452 m_d->initialTrackingGeometrySvcName = "AtlasTrackingGeometrySvc";
453 m_d->initialTrackingGeometryName = "";
454
455 m_d->detStore = nullptr;
456 m_d->root = nullptr;
457}
458
459//_____________________________________________________________________________________
461{
462
463 std::vector<VP1ExtraSepLayerHelper*>::iterator sepHelperIter = m_d->sepHelperContainer.begin();
464 std::vector<VP1ExtraSepLayerHelper*>::iterator sepHelperIterEnd = m_d->sepHelperContainer.end();
465 for ( ; sepHelperIter != sepHelperIterEnd; ++sepHelperIter){
466 if ((*sepHelperIter)) {
467 SoSeparator * sep = (*sepHelperIter)->topSeparator();
468 delete (*sepHelperIter);
469 sep->unref();
470 }
471 }
472
473 delete m_d->trackvol2sonode;
474 delete m_d->surface2sonode;
475 delete m_d;
476}
477
478//_____________________________________________________________________________________
480{
481 m_d->detStore = detstore;
482 m_d->root = root;
483}
484
485//_____________________________________________________________________________________
487{
488 if( m_d->retrieveSuccess)
489 {
490 message( "TrackingGeometry has already been successfully retrieved");
491 return;
492 }
493
501 {
502 message("Error: Geometry not configured!");
503 return;
504 }
505
506 if (!m_d->lineEdit_TrackingGeometrySvcName) {
507 message("Error: retrieveTrackingGeometry() invoked before controller built!");
508 return;
509 }
510
511
512 /*-----------------------------------------------------------------------
513 * Retrieving service locator
514 *-----------------------------------------------------------------------*/
515 ISvcLocator* svcLoc = serviceLocator();
516
517 if( !svcLoc)
518 {
519 message("Error: Got NULL pointer to the service locator!");
520 return;
521 }
522
523 /*-----------------------------------------------------------------------
524 * Retrieving TrackingGeometrySvc
525 *-----------------------------------------------------------------------*/
526 message( "Trying to retrieve TrackingGeometrySvc '" +
527 m_d->lineEdit_TrackingGeometrySvcName->text().trimmed() + "'");
528
529 auto trackingGeometrySvc =
530 svcLoc->service<Trk::ITrackingGeometrySvc>( m_d->lineEdit_TrackingGeometrySvcName->text().trimmed().toStdString() );
531
532 if( !trackingGeometrySvc )
533 {
534 message("Error: Could not retrieve TrackingGeometrySvc '" +
535 m_d->lineEdit_TrackingGeometrySvcName->text().trimmed() + "'\n"
536 "Check spelling and if you have added the correct jobOptions fragment");
537 return;
538 }
539
540 message( "Successfully retrieved TrackingGeometrySvc '" +
541 m_d->lineEdit_TrackingGeometrySvcName->text().trimmed() + "'");
542
543 /*-----------------------------------------------------------------------
544 * Retrieving TrackingGeometry
545 *-----------------------------------------------------------------------*/
546 const Trk::TrackingGeometry * trackingGeometry;
547 if( m_d->lineEdit_TrackingGeometryName->text().trimmed() == "")
548 {
549 message( "Trying to retrieve default TrackingGeometry");
550 trackingGeometry = trackingGeometrySvc->trackingGeometry();
551
552 if( !trackingGeometry)
553 {
554 message("Error: Could not retrieve default TrackingGeometry");
555 return;
556 }
557 else
558 {
559 message( "Successfully retrieved default TrackingGeometry");
560 }
561 }
562 else
563 {
564 message( "Trying to retrieve TrackingGeometry '" +
565 m_d->lineEdit_TrackingGeometryName->text().trimmed() +
566 "' from DetectorStore");
567 if (!m_d->detStore)
568 {
569 message("Error: Got NULL detectorstore.");
570 return;
571 }
572
573 if (m_d->detStore->retrieve(trackingGeometry, m_d->lineEdit_TrackingGeometryName->text().trimmed().toStdString()).isFailure()||!trackingGeometry)
574 {
575 message("Error: Could not retrieve TrackingGeometry '" +
576 m_d->lineEdit_TrackingGeometryName->text().trimmed() +
577 "' from DetectorStore.");
578 return;
579 }
580 else
581 {
582 message( "Successfully retrieved TrackingGeometry '" +
583 m_d->lineEdit_TrackingGeometryName->text().trimmed() + "'");
584 }
585 }
586
587 /*-----------------------------------------------------------------------
588 * Setup scene if retrieval was successful
589 *-----------------------------------------------------------------------*/
590 m_d->lineEdit_TrackingGeometrySvcName->setReadOnly( true);
591 m_d->lineEdit_TrackingGeometryName->setReadOnly( true);
592 m_d->pushButton_Retrieve->setEnabled( false);
593
594 // Pixel section
595 m_d->beamPipeSwitch = new SoSwitch();
596 m_d->pixSurfBarrelSwitch = new SoSwitch();
597 m_d->pixSurfECASwitch = new SoSwitch();
598 m_d->pixSurfECCSwitch = new SoSwitch();
599 m_d->pixLayBarrelSwitch = new SoSwitch();
600 m_d->pixLayECASwitch = new SoSwitch();
601 m_d->pixLayECCSwitch = new SoSwitch();
602 m_d->sctSurfBarrelSwitch = new SoSwitch();
603 m_d->sctSurfECASwitch = new SoSwitch();
604 m_d->sctSurfECCSwitch = new SoSwitch();
605 m_d->sctLayBarrelSwitch = new SoSwitch();
606 m_d->sctLayECASwitch = new SoSwitch();
607 m_d->sctLayECCSwitch = new SoSwitch();
608 m_d->trtSurfBarrelSwitch = new SoSwitch();
609 m_d->trtSurfECASwitch = new SoSwitch();
610 m_d->trtSurfECCSwitch = new SoSwitch();
611 m_d->trtLayBarrelSwitch = new SoSwitch();
612 m_d->trtLayECASwitch = new SoSwitch();
613 m_d->trtLayECCSwitch = new SoSwitch();
614 m_d->passiveLayBarrelSwitch = new SoSwitch();
615 m_d->passiveLayECASwitch = new SoSwitch();
616 m_d->passiveLayECCSwitch = new SoSwitch();
617
618 m_d->beamPipeSwitch->whichChild = SO_SWITCH_NONE;
619 m_d->pixSurfBarrelSwitch->whichChild = SO_SWITCH_NONE;
620 m_d->pixSurfECASwitch->whichChild = SO_SWITCH_NONE;
621 m_d->pixSurfECCSwitch->whichChild = SO_SWITCH_NONE;
622 m_d->pixLayBarrelSwitch->whichChild = SO_SWITCH_NONE;
623 m_d->pixLayECASwitch->whichChild = SO_SWITCH_NONE;
624 m_d->pixLayECCSwitch->whichChild = SO_SWITCH_NONE;
625 m_d->sctSurfBarrelSwitch->whichChild = SO_SWITCH_NONE;
626 m_d->sctSurfECASwitch->whichChild = SO_SWITCH_NONE;
627 m_d->sctSurfECCSwitch->whichChild = SO_SWITCH_NONE;
628 m_d->sctLayBarrelSwitch->whichChild = SO_SWITCH_NONE;
629 m_d->sctLayECASwitch->whichChild = SO_SWITCH_NONE;
630 m_d->sctLayECCSwitch->whichChild = SO_SWITCH_NONE;
631 m_d->trtSurfBarrelSwitch->whichChild = SO_SWITCH_NONE;
632 m_d->trtSurfECASwitch->whichChild = SO_SWITCH_NONE;
633 m_d->trtSurfECCSwitch->whichChild = SO_SWITCH_NONE;
634 m_d->trtLayBarrelSwitch->whichChild = SO_SWITCH_NONE;
635 m_d->trtLayECASwitch->whichChild = SO_SWITCH_NONE;
636 m_d->trtLayECCSwitch->whichChild = SO_SWITCH_NONE;
637 m_d->passiveLayBarrelSwitch->whichChild = SO_SWITCH_NONE;
638 m_d->passiveLayECASwitch->whichChild = SO_SWITCH_NONE;
639 m_d->passiveLayECCSwitch->whichChild = SO_SWITCH_NONE;
640
641 SoSeparator* sep_beamPipe = new SoSeparator(); sep_beamPipe->ref();
642 SoSeparator* sep_pixSurfBarrel = new SoSeparator(); sep_pixSurfBarrel->ref();
643 SoSeparator* sep_pixSurfECA = new SoSeparator(); sep_pixSurfECA->ref();
644 SoSeparator* sep_pixSurfECC = new SoSeparator(); sep_pixSurfECC->ref();
645 SoSeparator* sep_pixLayBarrel = new SoSeparator(); sep_pixLayBarrel->ref();
646 SoSeparator* sep_pixLayECA = new SoSeparator(); sep_pixLayECA->ref();
647 SoSeparator* sep_pixLayECC = new SoSeparator(); sep_pixLayECC->ref();
648 SoSeparator* sep_sctSurfBarrel = new SoSeparator(); sep_sctSurfBarrel->ref();
649 SoSeparator* sep_sctSurfECA = new SoSeparator(); sep_sctSurfECA->ref();
650 SoSeparator* sep_sctSurfECC = new SoSeparator(); sep_sctSurfECC->ref();
651 SoSeparator* sep_sctLayBarrel = new SoSeparator(); sep_sctLayBarrel->ref();
652 SoSeparator* sep_sctLayECA = new SoSeparator(); sep_sctLayECA->ref();
653 SoSeparator* sep_sctLayECC = new SoSeparator(); sep_sctLayECC->ref();
654 SoSeparator* sep_trtSurfBarrel = new SoSeparator(); sep_trtSurfBarrel->ref();
655 SoSeparator* sep_trtSurfECA = new SoSeparator(); sep_trtSurfECA->ref();
656 SoSeparator* sep_trtSurfECC = new SoSeparator(); sep_trtSurfECC->ref();
657 SoSeparator* sep_trtLayBarrel = new SoSeparator(); sep_trtLayBarrel->ref();
658 SoSeparator* sep_trtLayECA = new SoSeparator(); sep_trtLayECA->ref();
659 SoSeparator* sep_trtLayECC = new SoSeparator(); sep_trtLayECC->ref();
660 SoSeparator* sep_passiveLayBarrel = new SoSeparator(); sep_passiveLayBarrel->ref();
661 SoSeparator* sep_passiveLayECA = new SoSeparator(); sep_passiveLayECA->ref();
662 SoSeparator* sep_passiveLayECC = new SoSeparator(); sep_passiveLayECC->ref();
663
664 m_d->sephelper_beamPipe = new VP1ExtraSepLayerHelper(sep_beamPipe);
665 m_d->sephelper_pixSurfBarrel = new VP1ExtraSepLayerHelper(sep_pixSurfBarrel);
666 m_d->sephelper_pixSurfECA = new VP1ExtraSepLayerHelper(sep_pixSurfECA);
667 m_d->sephelper_pixSurfECC = new VP1ExtraSepLayerHelper(sep_pixSurfECC);
668 m_d->sephelper_pixLayBarrel = new VP1ExtraSepLayerHelper(sep_pixLayBarrel);
669 m_d->sephelper_pixLayECA = new VP1ExtraSepLayerHelper(sep_pixLayECA);
670 m_d->sephelper_pixLayECC = new VP1ExtraSepLayerHelper(sep_pixLayECC);
671 m_d->sephelper_sctSurfBarrel = new VP1ExtraSepLayerHelper(sep_sctSurfBarrel);
672 m_d->sephelper_sctSurfECA = new VP1ExtraSepLayerHelper(sep_sctSurfECA);
673 m_d->sephelper_sctSurfECC = new VP1ExtraSepLayerHelper(sep_sctSurfECC);
674 m_d->sephelper_sctLayBarrel = new VP1ExtraSepLayerHelper(sep_sctLayBarrel);
675 m_d->sephelper_sctLayECA = new VP1ExtraSepLayerHelper(sep_sctLayECA);
676 m_d->sephelper_sctLayECC = new VP1ExtraSepLayerHelper(sep_sctLayECC);
677 m_d->sephelper_trtSurfBarrel = new VP1ExtraSepLayerHelper(sep_trtSurfBarrel);
678 m_d->sephelper_trtSurfECA = new VP1ExtraSepLayerHelper(sep_trtSurfECA);
679 m_d->sephelper_trtSurfECC = new VP1ExtraSepLayerHelper(sep_trtSurfECC);
680 m_d->sephelper_trtLayBarrel = new VP1ExtraSepLayerHelper(sep_trtLayBarrel);
681 m_d->sephelper_trtLayECA = new VP1ExtraSepLayerHelper(sep_trtLayECA);
682 m_d->sephelper_trtLayECC = new VP1ExtraSepLayerHelper(sep_trtLayECC);
683 m_d->sephelper_passiveLayBarrel = new VP1ExtraSepLayerHelper(sep_passiveLayBarrel);
684 m_d->sephelper_passiveLayECA = new VP1ExtraSepLayerHelper(sep_passiveLayECA );
685 m_d->sephelper_passiveLayECC = new VP1ExtraSepLayerHelper(sep_passiveLayECC );
686
687 m_d->volswitch = new SoSwitch();
688 m_d->clipswitch = new SoSwitch();
689 m_d->msBswitch = new SoSwitch();
690 m_d->msIswitch = new SoSwitch();
691 m_d->msOswitch = new SoSwitch();
692 m_d->msBIswitch = new SoSwitch();
693 m_d->msBMswitch = new SoSwitch();
694 m_d->msBOswitch = new SoSwitch();
695 m_d->msEIswitch = new SoSwitch();
696 m_d->msEMswitch = new SoSwitch();
697 m_d->msEOswitch = new SoSwitch();
698 m_d->msCSswitch = new SoSwitch();
699 m_d->msTGswitch = new SoSwitch();
700 m_d->msBIlayswitch = new SoSwitch();
701 m_d->msBMlayswitch = new SoSwitch();
702 m_d->msBOlayswitch = new SoSwitch();
703 m_d->msEIlayswitch = new SoSwitch();
704 m_d->msEMlayswitch = new SoSwitch();
705 m_d->msEOlayswitch = new SoSwitch();
706 m_d->msCSlayswitch = new SoSwitch();
707 m_d->msTGlayswitch = new SoSwitch();
708 m_d->msBTenvswitch = new SoSwitch();
709 m_d->msETenvswitch = new SoSwitch();
710 m_d->msShenvswitch = new SoSwitch();
711 m_d->msFeenvswitch = new SoSwitch();
712 m_d->msRaenvswitch = new SoSwitch();
713 m_d->msBTdlswitch = new SoSwitch();
714 m_d->msETdlswitch = new SoSwitch();
715 m_d->msShdlswitch = new SoSwitch();
716 m_d->msFedlswitch = new SoSwitch();
717 m_d->msRadlswitch = new SoSwitch();
718
719 m_d->volswitch->whichChild = SO_SWITCH_NONE;
720 m_d->clipswitch->whichChild = SO_SWITCH_NONE;
721 m_d->msBswitch->whichChild = SO_SWITCH_NONE;
722 m_d->msIswitch->whichChild = SO_SWITCH_NONE;
723 m_d->msOswitch->whichChild = SO_SWITCH_NONE;
724 m_d->msBIswitch->whichChild = SO_SWITCH_NONE;
725 m_d->msBMswitch->whichChild = SO_SWITCH_NONE;
726 m_d->msBOswitch->whichChild = SO_SWITCH_NONE;
727 m_d->msEIswitch->whichChild = SO_SWITCH_NONE;
728 m_d->msEMswitch->whichChild = SO_SWITCH_NONE;
729 m_d->msEOswitch->whichChild = SO_SWITCH_NONE;
730 m_d->msCSswitch->whichChild = SO_SWITCH_NONE;
731 m_d->msTGswitch->whichChild = SO_SWITCH_NONE;
732 m_d->msBIlayswitch->whichChild = SO_SWITCH_NONE;
733 m_d->msBMlayswitch->whichChild = SO_SWITCH_NONE;
734 m_d->msBOlayswitch->whichChild = SO_SWITCH_NONE;
735 m_d->msEIlayswitch->whichChild = SO_SWITCH_NONE;
736 m_d->msEMlayswitch->whichChild = SO_SWITCH_NONE;
737 m_d->msEOlayswitch->whichChild = SO_SWITCH_NONE;
738 m_d->msCSlayswitch->whichChild = SO_SWITCH_NONE;
739 m_d->msTGlayswitch->whichChild = SO_SWITCH_NONE;
740 m_d->msBTenvswitch->whichChild = SO_SWITCH_NONE;
741 m_d->msETenvswitch->whichChild = SO_SWITCH_NONE;
742 m_d->msShenvswitch->whichChild = SO_SWITCH_NONE;
743 m_d->msFeenvswitch->whichChild = SO_SWITCH_NONE;
744 m_d->msRaenvswitch->whichChild = SO_SWITCH_NONE;
745 m_d->msBTdlswitch->whichChild = SO_SWITCH_NONE;
746 m_d->msETdlswitch->whichChild = SO_SWITCH_NONE;
747 m_d->msShdlswitch->whichChild = SO_SWITCH_NONE;
748 m_d->msFedlswitch->whichChild = SO_SWITCH_NONE;
749 m_d->msRadlswitch->whichChild = SO_SWITCH_NONE;
750
751 SoSeparator * sep_vol = new SoSeparator; sep_vol->ref();
752 SoSeparator * sep_msB = new SoSeparator; sep_msB->ref();
753 SoSeparator * sep_msI = new SoSeparator; sep_msI->ref();
754 SoSeparator * sep_msO = new SoSeparator; sep_msO->ref();
755 SoSeparator * sep_msBI = new SoSeparator; sep_msBI->ref();
756 SoSeparator * sep_msBM = new SoSeparator; sep_msBM->ref();
757 SoSeparator * sep_msBO = new SoSeparator; sep_msBO->ref();
758 SoSeparator * sep_msEI = new SoSeparator; sep_msEI->ref();
759 SoSeparator * sep_msEM = new SoSeparator; sep_msEM->ref();
760 SoSeparator * sep_msEO = new SoSeparator; sep_msEO->ref();
761 SoSeparator * sep_msCS = new SoSeparator; sep_msCS->ref();
762 SoSeparator * sep_msTG = new SoSeparator; sep_msTG->ref();
763 SoSeparator * sep_msBIlay = new SoSeparator; sep_msBIlay->ref();
764 SoSeparator * sep_msBMlay = new SoSeparator; sep_msBMlay->ref();
765 SoSeparator * sep_msBOlay = new SoSeparator; sep_msBOlay->ref();
766 SoSeparator * sep_msEIlay = new SoSeparator; sep_msEIlay->ref();
767 SoSeparator * sep_msEMlay = new SoSeparator; sep_msEMlay->ref();
768 SoSeparator * sep_msEOlay = new SoSeparator; sep_msEOlay->ref();
769 SoSeparator * sep_msCSlay = new SoSeparator; sep_msCSlay->ref();
770 SoSeparator * sep_msTGlay = new SoSeparator; sep_msTGlay->ref();
771 SoSeparator * sep_msBTenv = new SoSeparator; sep_msBTenv->ref();
772 SoSeparator * sep_msETenv = new SoSeparator; sep_msETenv->ref();
773 SoSeparator * sep_msShenv = new SoSeparator; sep_msShenv->ref();
774 SoSeparator * sep_msFeenv = new SoSeparator; sep_msFeenv->ref();
775 SoSeparator * sep_msRaenv = new SoSeparator; sep_msRaenv->ref();
776 SoSeparator * sep_msBTdl = new SoSeparator; sep_msBTdl->ref();
777 SoSeparator * sep_msETdl = new SoSeparator; sep_msETdl->ref();
778 SoSeparator * sep_msShdl = new SoSeparator; sep_msShdl->ref();
779 SoSeparator * sep_msFedl = new SoSeparator; sep_msFedl->ref();
780 SoSeparator * sep_msRadl = new SoSeparator; sep_msRadl->ref();
781
782 m_d->sephelper_vol = new VP1ExtraSepLayerHelper(sep_vol);
783 m_d->sephelper_msB = new VP1ExtraSepLayerHelper(sep_msB);
784 m_d->sephelper_msI = new VP1ExtraSepLayerHelper(sep_msI);
785 m_d->sephelper_msO = new VP1ExtraSepLayerHelper(sep_msO);
786 m_d->sephelper_msBI = new VP1ExtraSepLayerHelper(sep_msBI);
787 m_d->sephelper_msBM = new VP1ExtraSepLayerHelper(sep_msBM);
788 m_d->sephelper_msBO = new VP1ExtraSepLayerHelper(sep_msBO);
789 m_d->sephelper_msEI = new VP1ExtraSepLayerHelper(sep_msEI);
790 m_d->sephelper_msEM = new VP1ExtraSepLayerHelper(sep_msEM);
791 m_d->sephelper_msEO = new VP1ExtraSepLayerHelper(sep_msEO);
792 m_d->sephelper_msCS = new VP1ExtraSepLayerHelper(sep_msCS);
793 m_d->sephelper_msTG = new VP1ExtraSepLayerHelper(sep_msTG);
794 m_d->sephelper_msBIlay = new VP1ExtraSepLayerHelper(sep_msBIlay);
795 m_d->sephelper_msBMlay = new VP1ExtraSepLayerHelper(sep_msBMlay);
796 m_d->sephelper_msBOlay = new VP1ExtraSepLayerHelper(sep_msBOlay);
797 m_d->sephelper_msEIlay = new VP1ExtraSepLayerHelper(sep_msEIlay);
798 m_d->sephelper_msEMlay = new VP1ExtraSepLayerHelper(sep_msEMlay);
799 m_d->sephelper_msEOlay = new VP1ExtraSepLayerHelper(sep_msEOlay);
800 m_d->sephelper_msCSlay = new VP1ExtraSepLayerHelper(sep_msCSlay);
801 m_d->sephelper_msTGlay = new VP1ExtraSepLayerHelper(sep_msTGlay);
802 m_d->sephelper_msBTenv = new VP1ExtraSepLayerHelper(sep_msBTenv);
803 m_d->sephelper_msETenv = new VP1ExtraSepLayerHelper(sep_msETenv);
804 m_d->sephelper_msShenv = new VP1ExtraSepLayerHelper(sep_msShenv);
805 m_d->sephelper_msFeenv = new VP1ExtraSepLayerHelper(sep_msFeenv);
806 m_d->sephelper_msRaenv = new VP1ExtraSepLayerHelper(sep_msRaenv);
807 m_d->sephelper_msBTdl = new VP1ExtraSepLayerHelper(sep_msBTdl);
808 m_d->sephelper_msETdl = new VP1ExtraSepLayerHelper(sep_msETdl);
809 m_d->sephelper_msShdl = new VP1ExtraSepLayerHelper(sep_msShdl);
810 m_d->sephelper_msFedl = new VP1ExtraSepLayerHelper(sep_msFedl);
811 m_d->sephelper_msRadl = new VP1ExtraSepLayerHelper(sep_msRadl);
812
813 m_d->sepHelperContainer.reserve(100);
814 m_d->sepHelperContainer.push_back(m_d->sephelper_vol);
815 m_d->sepHelperContainer.push_back(m_d->sephelper_beamPipe);
816 m_d->sepHelperContainer.push_back(m_d->sephelper_pixSurfBarrel);
817 m_d->sepHelperContainer.push_back(m_d->sephelper_pixSurfECA);
818 m_d->sepHelperContainer.push_back(m_d->sephelper_pixSurfECC);
819 m_d->sepHelperContainer.push_back(m_d->sephelper_pixLayBarrel);
820 m_d->sepHelperContainer.push_back(m_d->sephelper_pixLayECA);
821 m_d->sepHelperContainer.push_back(m_d->sephelper_pixLayECC);
822 m_d->sepHelperContainer.push_back(m_d->sephelper_sctSurfBarrel);
823 m_d->sepHelperContainer.push_back(m_d->sephelper_sctSurfECA);
824 m_d->sepHelperContainer.push_back(m_d->sephelper_sctSurfECC);
825 m_d->sepHelperContainer.push_back(m_d->sephelper_sctLayBarrel);
826 m_d->sepHelperContainer.push_back(m_d->sephelper_sctLayECA);
827 m_d->sepHelperContainer.push_back(m_d->sephelper_sctLayECC);
828 m_d->sepHelperContainer.push_back(m_d->sephelper_trtSurfBarrel);
829 m_d->sepHelperContainer.push_back(m_d->sephelper_trtSurfECA);
830 m_d->sepHelperContainer.push_back(m_d->sephelper_trtSurfECC);
831 m_d->sepHelperContainer.push_back(m_d->sephelper_trtLayBarrel);
832 m_d->sepHelperContainer.push_back(m_d->sephelper_trtLayECA);
833 m_d->sepHelperContainer.push_back(m_d->sephelper_trtLayECC);
834 m_d->sepHelperContainer.push_back(m_d->sephelper_passiveLayBarrel);
835 m_d->sepHelperContainer.push_back(m_d->sephelper_passiveLayECA);
836 m_d->sepHelperContainer.push_back(m_d->sephelper_passiveLayECC);
837 m_d->sepHelperContainer.push_back(m_d->sephelper_msB);
838 m_d->sepHelperContainer.push_back(m_d->sephelper_msI);
839 m_d->sepHelperContainer.push_back(m_d->sephelper_msO);
840 m_d->sepHelperContainer.push_back(m_d->sephelper_msBI);
841 m_d->sepHelperContainer.push_back(m_d->sephelper_msBM);
842 m_d->sepHelperContainer.push_back(m_d->sephelper_msBO);
843 m_d->sepHelperContainer.push_back(m_d->sephelper_msEI);
844 m_d->sepHelperContainer.push_back(m_d->sephelper_msEM);
845 m_d->sepHelperContainer.push_back(m_d->sephelper_msEO);
846 m_d->sepHelperContainer.push_back(m_d->sephelper_msCS);
847 m_d->sepHelperContainer.push_back(m_d->sephelper_msTG);
848 m_d->sepHelperContainer.push_back(m_d->sephelper_msBIlay);
849 m_d->sepHelperContainer.push_back(m_d->sephelper_msBMlay);
850 m_d->sepHelperContainer.push_back(m_d->sephelper_msBOlay);
851 m_d->sepHelperContainer.push_back(m_d->sephelper_msEIlay);
852 m_d->sepHelperContainer.push_back(m_d->sephelper_msEMlay);
853 m_d->sepHelperContainer.push_back(m_d->sephelper_msEOlay);
854 m_d->sepHelperContainer.push_back(m_d->sephelper_msCSlay);
855 m_d->sepHelperContainer.push_back(m_d->sephelper_msTGlay);
856 m_d->sepHelperContainer.push_back(m_d->sephelper_msBTenv);
857 m_d->sepHelperContainer.push_back(m_d->sephelper_msETenv);
858 m_d->sepHelperContainer.push_back(m_d->sephelper_msShenv);
859 m_d->sepHelperContainer.push_back(m_d->sephelper_msFeenv);
860 m_d->sepHelperContainer.push_back(m_d->sephelper_msRaenv);
861 m_d->sepHelperContainer.push_back(m_d->sephelper_msBTdl);
862 m_d->sepHelperContainer.push_back(m_d->sephelper_msETdl);
863 m_d->sepHelperContainer.push_back(m_d->sephelper_msShdl);
864 m_d->sepHelperContainer.push_back(m_d->sephelper_msFedl);
865 m_d->sepHelperContainer.push_back(m_d->sephelper_msRadl);
866
867 std::cout << "To here !" << std::endl;
868
869 const Trk::TrackingVolume* highestVolume = trackingGeometry->highestTrackingVolume();
870
871 if (!highestVolume) {
872 message("Error: No highest tracking volume registered.");
873 return;
874 }
875
876 const Trk::TrackingVolume* idCalo = trackingGeometry->trackingVolume("MuonSpectrometerEntrance");
877
878 m_d->trackvol2sonode = new TrackingVolumeToSoNode();
879 m_d->surface2sonode = new SurfaceToSoNode();
880
881 if (idCalo) processTrkVolume(idCalo);
882 else processTrkVolume(highestVolume);
883
884 processMsVolume(highestVolume,nullptr,nullptr);
885
886 SoRotationXYZ* rotClip = new SoRotationXYZ;
887 rotClip->axis.setValue( SoRotationXYZ::X);
888 rotClip->angle.setValue( -M_PI/2.);
889
890 m_d->clipswitch->addChild( rotClip);
891 m_d->clipswitch->addChild( new SoClipPlane);
892 m_d->root->addChild(m_d->clipswitch);
893
894 m_d->volswitch->addChild(sep_vol);
895
896 m_d->beamPipeSwitch->addChild(sep_beamPipe);
897 m_d->pixSurfBarrelSwitch->addChild(sep_pixSurfBarrel);
898 m_d->pixSurfECASwitch->addChild(sep_pixSurfECA);
899 m_d->pixSurfECCSwitch->addChild(sep_pixSurfECC);
900 m_d->pixLayBarrelSwitch->addChild(sep_pixLayBarrel);
901 m_d->pixLayECASwitch->addChild(sep_pixLayECA);
902 m_d->pixLayECCSwitch->addChild(sep_pixLayECC);
903 m_d->sctSurfBarrelSwitch->addChild(sep_sctSurfBarrel);
904 m_d->sctSurfECASwitch->addChild(sep_sctSurfECA);
905 m_d->sctSurfECCSwitch->addChild(sep_sctSurfECC);
906 m_d->sctLayBarrelSwitch->addChild(sep_sctLayBarrel);
907 m_d->sctLayECASwitch->addChild(sep_sctLayECA);
908 m_d->sctLayECCSwitch->addChild(sep_sctLayECC);
909 m_d->trtSurfBarrelSwitch->addChild(sep_trtSurfBarrel);
910 m_d->trtSurfECASwitch->addChild(sep_trtSurfECA);
911 m_d->trtSurfECCSwitch->addChild(sep_trtSurfECC);
912 m_d->trtLayBarrelSwitch->addChild(sep_trtLayBarrel);
913 m_d->trtLayECASwitch->addChild(sep_trtLayECA);
914 m_d->trtLayECCSwitch->addChild(sep_trtLayECC);
915 m_d->passiveLayBarrelSwitch->addChild(sep_passiveLayBarrel);
916 m_d->passiveLayECASwitch->addChild(sep_passiveLayECA);
917 m_d->passiveLayECCSwitch->addChild(sep_passiveLayECC);
918
919 m_d->msBswitch->addChild(sep_msB);
920 m_d->msIswitch->addChild(sep_msI);
921 m_d->msOswitch->addChild(sep_msO);
922 m_d->msBIswitch->addChild(sep_msBI);
923 m_d->msBMswitch->addChild(sep_msBM);
924 m_d->msBOswitch->addChild(sep_msBO);
925 m_d->msEIswitch->addChild(sep_msEI);
926 m_d->msEMswitch->addChild(sep_msEM);
927 m_d->msEOswitch->addChild(sep_msEO);
928 m_d->msCSswitch->addChild(sep_msCS);
929 m_d->msTGswitch->addChild(sep_msTG);
930 m_d->msBIlayswitch->addChild(sep_msBIlay);
931 m_d->msBMlayswitch->addChild(sep_msBMlay);
932 m_d->msBOlayswitch->addChild(sep_msBOlay);
933 m_d->msEIlayswitch->addChild(sep_msEIlay);
934 m_d->msEMlayswitch->addChild(sep_msEMlay);
935 m_d->msEOlayswitch->addChild(sep_msEOlay);
936 m_d->msCSlayswitch->addChild(sep_msCSlay);
937 m_d->msTGlayswitch->addChild(sep_msTGlay);
938 m_d->msBTenvswitch->addChild(sep_msBTenv);
939 m_d->msETenvswitch->addChild(sep_msETenv);
940 m_d->msShenvswitch->addChild(sep_msShenv);
941 m_d->msFeenvswitch->addChild(sep_msFeenv);
942 m_d->msRaenvswitch->addChild(sep_msRaenv);
943 m_d->msBTdlswitch->addChild(sep_msBTdl);
944 m_d->msETdlswitch->addChild(sep_msETdl);
945 m_d->msShdlswitch->addChild(sep_msShdl);
946 m_d->msFedlswitch->addChild(sep_msFedl);
947 m_d->msRadlswitch->addChild(sep_msRadl);
948
949 m_d->root->addChild(m_d->volswitch);
950 m_d->root->addChild(m_d->beamPipeSwitch);
951 m_d->root->addChild(m_d->pixSurfBarrelSwitch);
952 m_d->root->addChild(m_d->pixSurfECASwitch);
953 m_d->root->addChild(m_d->pixSurfECCSwitch);
954 m_d->root->addChild(m_d->pixLayBarrelSwitch);
955 m_d->root->addChild(m_d->pixLayECASwitch);
956 m_d->root->addChild(m_d->pixLayECCSwitch);
957 m_d->root->addChild(m_d->sctSurfBarrelSwitch);
958 m_d->root->addChild(m_d->sctSurfECASwitch);
959 m_d->root->addChild(m_d->sctSurfECCSwitch);
960 m_d->root->addChild(m_d->sctLayBarrelSwitch);
961 m_d->root->addChild(m_d->sctLayECASwitch);
962 m_d->root->addChild(m_d->sctLayECCSwitch);
963 m_d->root->addChild(m_d->trtSurfBarrelSwitch);
964 m_d->root->addChild(m_d->trtSurfECASwitch);
965 m_d->root->addChild(m_d->trtSurfECCSwitch);
966 m_d->root->addChild(m_d->trtLayBarrelSwitch);
967 m_d->root->addChild(m_d->trtLayECASwitch);
968 m_d->root->addChild(m_d->trtLayECCSwitch);
969 m_d->root->addChild(m_d->passiveLayBarrelSwitch);
970 m_d->root->addChild(m_d->passiveLayECASwitch);
971 m_d->root->addChild(m_d->passiveLayECCSwitch);
972 m_d->root->addChild(m_d->msBswitch);
973 m_d->root->addChild(m_d->msIswitch);
974 m_d->root->addChild(m_d->msOswitch);
975 m_d->root->addChild(m_d->msBIswitch);
976 m_d->root->addChild(m_d->msBMswitch);
977 m_d->root->addChild(m_d->msBOswitch);
978 m_d->root->addChild(m_d->msEIswitch);
979 m_d->root->addChild(m_d->msEMswitch);
980 m_d->root->addChild(m_d->msEOswitch);
981 m_d->root->addChild(m_d->msCSswitch);
982 m_d->root->addChild(m_d->msTGswitch);
983 m_d->root->addChild(m_d->msBIlayswitch);
984 m_d->root->addChild(m_d->msBMlayswitch);
985 m_d->root->addChild(m_d->msBOlayswitch);
986 m_d->root->addChild(m_d->msEIlayswitch);
987 m_d->root->addChild(m_d->msEMlayswitch);
988 m_d->root->addChild(m_d->msEOlayswitch);
989 m_d->root->addChild(m_d->msCSlayswitch);
990 m_d->root->addChild(m_d->msTGlayswitch);
991 m_d->root->addChild(m_d->msBTenvswitch);
992 m_d->root->addChild(m_d->msETenvswitch);
993 m_d->root->addChild(m_d->msShenvswitch);
994 m_d->root->addChild(m_d->msFeenvswitch);
995 m_d->root->addChild(m_d->msRaenvswitch);
996 m_d->root->addChild(m_d->msBTdlswitch);
997 m_d->root->addChild(m_d->msETdlswitch);
998 m_d->root->addChild(m_d->msShdlswitch);
999 m_d->root->addChild(m_d->msFedlswitch);
1000 m_d->root->addChild(m_d->msRadlswitch);
1001
1002 m_d->retrieveSuccess = true;
1003}
1004
1005//_____________________________________________________________________________________
1007{
1008 if (!tvol)
1009 return;
1010
1011 SoNode * volnode = m_d->trackvol2sonode->translateTrackingVolume(*tvol);
1012 if (!volnode) {
1013 message("Error: Volume shape not implemented");
1014 return;
1015 }
1016
1017 QString volumeName(tvol->volumeName().c_str());
1018
1019 messageVerbose("Processing volume: "+volumeName);
1020 m_d->sephelper_vol->addNodeUnderMaterial(volnode,m_d->colorCodeConverter.getMaterialFromColorCode( tvol->colorCode()));
1021
1022 const Trk::BinnedArray< Trk::Layer >* confinedLayers = tvol->confinedLayers();
1023
1024 // loop over confined layers
1025 if (confinedLayers){
1026 std::span<Trk::Layer const * const> layerVector = confinedLayers->arrayObjects();
1027 std::span<Trk::Layer const * const>::iterator layerIter = layerVector.begin();
1028 // loop over layers
1029 for ( ; layerIter != layerVector.end(); ++layerIter){
1030 // push_back the layer
1031 if (*layerIter){
1032
1033 // get the layerIndex
1034 const Trk::LayerIndex& layIndex = (*layerIter)->layerIndex();
1035
1036 // skip navigaion layers for the moment
1037 if (!layIndex.value()) continue;
1038
1039 /* check the surface array */
1040 const Trk::SurfaceArray* layerSubSurfaces = (*layerIter)->surfaceArray();
1041
1043 VP1ExtraSepLayerHelper* layerSepHelper = nullptr;
1044 VP1ExtraSepLayerHelper* surfaceSepHelper = nullptr;
1045
1046 if ( volumeName.contains("BeamPipe") > 0 ) {
1047 layerSepHelper = m_d->sephelper_beamPipe;
1048 } else if (volumeName.contains("Pixel") > 0 ) {
1049 // Pixel sector
1050 if ( volumeName.contains("Barrel") > 0 ){
1051 // pixel barrel surfaces & layers
1052 layerSepHelper = m_d->sephelper_pixLayBarrel;
1053 surfaceSepHelper = m_d->sephelper_pixSurfBarrel;
1054 } else if ( volumeName.contains("Endcap") > 0 ){
1055 // pixel endcap surfaces & layers
1056 if ( volumeName.contains("Pos") > 0){
1057 layerSepHelper = m_d->sephelper_pixLayECA;
1058 surfaceSepHelper = m_d->sephelper_pixSurfECA;
1059 } else {
1060 layerSepHelper = m_d->sephelper_pixLayECC;
1061 surfaceSepHelper = m_d->sephelper_pixSurfECC;
1062 }
1063 }
1064 } else if ((volumeName.contains("SCT") > 0) or (volumeName.contains("Strip") > 0)) {
1065 // SCT sector
1066 if ( volumeName.contains("Barrel") > 0 ){
1067 // sct barrel surfaces & layers
1068 layerSepHelper = m_d->sephelper_sctLayBarrel;
1069 surfaceSepHelper = m_d->sephelper_sctSurfBarrel;
1070 } else if ( volumeName.contains("Endcap") > 0 ){
1071 // sct endcap surfaces & layers
1072 if ( volumeName.contains("Pos") > 0){
1073 layerSepHelper = m_d->sephelper_sctLayECA;
1074 surfaceSepHelper = m_d->sephelper_sctSurfECA;
1075 } else {
1076 layerSepHelper = m_d->sephelper_sctLayECC;
1077 surfaceSepHelper = m_d->sephelper_sctSurfECC;
1078 }
1079 }
1080 } else if (volumeName.contains("TRT") > 0) {
1081 // TRT sector
1082 if ( volumeName.contains("Barrel") > 0 ){
1083 // trt barrel surfaces & layers
1084 layerSepHelper = m_d->sephelper_trtLayBarrel;
1085 surfaceSepHelper = m_d->sephelper_trtSurfBarrel;
1086 } else if ( volumeName.contains("Endcap") > 0 ){
1087 // trt endcap surfaces & layers
1088 if ( volumeName.contains("Pos") > 0 ){
1089 layerSepHelper = m_d->sephelper_trtLayECA;
1090 surfaceSepHelper = m_d->sephelper_trtSurfECA;
1091 } else {
1092 layerSepHelper = m_d->sephelper_trtLayECC;
1093 surfaceSepHelper = m_d->sephelper_trtSurfECC;
1094 }
1095 }
1096 } else {
1097 if ( volumeName.contains("Barrel") > 0 ){
1098 // trt barrel surfaces & layers
1099 layerSepHelper = m_d->sephelper_passiveLayBarrel;
1100 } else if ( volumeName.contains("Endcap") > 0 ){
1101 // trt endcap surfaces & layers
1102 if ( volumeName.contains("Pos") > 0 ){
1103 layerSepHelper = m_d->sephelper_passiveLayECA;
1104 } else {
1105 layerSepHelper = m_d->sephelper_passiveLayECC;
1106 }
1107 }
1108 }
1109
1110 std::cout << " VolumeName " << tvol->volumeName() << " / seperators : " << layerSepHelper << " / " << surfaceSepHelper << std::endl;
1111
1112 // process the layer with the correct separator helper
1113 if (layerSepHelper) processTrkLayer(*layerIter, layerSepHelper, tvol->colorCode());
1114 // Surface
1115 if (layerSubSurfaces && surfaceSepHelper){
1116 std::span<Trk::Surface const * const> surfaceVector = layerSubSurfaces->arrayObjects();
1117 std::span<Trk::Surface const * const>::iterator surfaceIter = surfaceVector.begin();
1118 for ( ; surfaceIter != surfaceVector.end(); ++surfaceIter ){
1119 // push_back the surface
1120 if (*surfaceIter)
1121 processTrkSurface(*surfaceIter, surfaceSepHelper, tvol->colorCode());
1122 }
1123 }
1124 }
1125 }
1126 }
1127
1128 const Trk::BinnedArray<Trk::TrackingVolume >* confinedVolumes = tvol->confinedVolumes();
1129 // get the confined volumes and loop over it -> call recursively
1130 if (confinedVolumes){
1131 std::span<Trk::TrackingVolume const * const> volumes = confinedVolumes->arrayObjects();
1132 std::span<Trk::TrackingVolume const * const>::iterator volIter = volumes.begin();
1133 std::span<Trk::TrackingVolume const * const>::iterator volIterEnd = volumes.end();
1134 for ( ; volIter != volIterEnd; ++volIter)
1135 if (*volIter) processTrkVolume(*volIter);
1136 }
1137}
1138
1139//_____________________________________________________________________________________
1141{
1142 if (!tvol)
1143 return;
1144
1145 std::string name = tvol->volumeName();
1146
1147 // only lowest level volumes displayed
1148
1149 if (!tvol->confinedVolumes()) {
1150 SoNode * volnode = m_d->trackvol2sonode->translateTrackingVolume(*tvol);
1151 if (!volnode) {
1152 message("Error: Volume shape not implemented");
1153 return;
1154 }
1155
1156 if ( name.substr(0,4) == "Muon" && tvol->colorCode() > 0 ) {
1157 if ( fabs(tvol->center().z())>12900 ) m_d->sephelper_msO->addNodeUnderMaterial(volnode,m_d->colorCodeConverter.getMaterialFromColorCode( tvol->colorCode()));
1158 else if ( fabs(tvol->center().z())>6750 ) m_d->sephelper_msI->addNodeUnderMaterial(volnode,m_d->colorCodeConverter.getMaterialFromColorCode( tvol->colorCode()));
1159 else m_d->sephelper_msB->addNodeUnderMaterial(volnode,m_d->colorCodeConverter.getMaterialFromColorCode( tvol->colorCode()));
1160 }
1161
1162 // envelopes
1163 if ( sepHelper ) {
1164 unsigned int colorCode = 17;
1165 if ( name.substr(0,3)=="MDT") colorCode = 2;
1166 if ( name.substr(0,3)=="RPC") colorCode = 4;
1167 if ( name.substr(0,2)=="CS") colorCode = 5;
1168 if ( name.substr(0,1)=="T") colorCode = 6;
1169 sepHelper->addNodeUnderMaterial(volnode,m_d->colorCodeConverter.getMaterialFromColorCode(colorCode) );
1170 if (layHelper) processMsLayDense( tvol, sepHelper, layHelper, colorCode );
1171 } else if ( layHelper ) {
1172 unsigned int colorCode = 13;
1173 layHelper->addNodeUnderMaterial(volnode,m_d->colorCodeConverter.getMaterialFromColorCode(colorCode) );
1174 }
1175
1176 } else {
1177 const Trk::BinnedArray<Trk::TrackingVolume >* confinedVolumes = tvol->confinedVolumes();
1178 // get the confined volumes and loop over it -> call recursively
1179 if (confinedVolumes){
1180 std::span<Trk::TrackingVolume const * const> volumes = confinedVolumes->arrayObjects();
1181 std::span<Trk::TrackingVolume const * const>::iterator volIter = volumes.begin();
1182 std::span<Trk::TrackingVolume const * const>::iterator volIterEnd = volumes.end();
1183 for ( ; volIter != volIterEnd; ++volIter)
1184 if (*volIter) processMsVolume(*volIter,sepHelper, layHelper);
1185 }
1186 }
1187
1189 if (!detVols.empty()) {
1190 // identify separators
1191 Trk::ArraySpan<const Trk::DetachedTrackingVolume* const>::iterator dIter = detVols.begin();
1192 for ( ;dIter!=detVols.end(); ++dIter) {
1193 if ( (tvol->inside((*dIter)->trackingVolume()->center(),0.) || (*dIter)->trackingVolume()->center().perp()<0.001) ) {
1194 std::string name = (*dIter)->name();
1195 if ( name.substr(0,2) == "BI" ) { sepHelper = m_d->sephelper_msBI; layHelper = m_d->sephelper_msBIlay; }
1196 else if ( name.substr(0,2) == "BM" ) { sepHelper = m_d->sephelper_msBM; layHelper = m_d->sephelper_msBMlay; }
1197 else if ( name.substr(0,2) == "BO" ) { sepHelper = m_d->sephelper_msBO; layHelper = m_d->sephelper_msBOlay; }
1198 else if ( name.substr(0,2) == "EI" ) { sepHelper = m_d->sephelper_msEI; layHelper = m_d->sephelper_msEIlay; }
1199 else if ( name.substr(0,2) == "EM" ) { sepHelper = m_d->sephelper_msEM; layHelper = m_d->sephelper_msEMlay; }
1200 else if ( name.substr(0,2) == "EO" ) { sepHelper = m_d->sephelper_msEO; layHelper = m_d->sephelper_msEOlay; }
1201 else if ( name.substr(0,2) == "CS" ) { sepHelper = m_d->sephelper_msCS; layHelper = m_d->sephelper_msCSlay; }
1202 else if ( name.substr(0,1) == "T" ) { sepHelper = m_d->sephelper_msTG; layHelper = m_d->sephelper_msTGlay; }
1203 else if ( name.substr(0,4) == "Rail" ) { sepHelper = m_d->sephelper_msRaenv; layHelper = m_d->sephelper_msRadl; }
1204 else if ( name.substr(0,7) == "MDTRail" ) { sepHelper = m_d->sephelper_msRaenv; layHelper = m_d->sephelper_msRadl; }
1205 else if ( name.substr(0,4) == "SADL" ) { sepHelper = m_d->sephelper_msRaenv; layHelper = m_d->sephelper_msRadl; }
1206 else if ( name.substr(0,4) == "TBWH" ) { sepHelper = m_d->sephelper_msRaenv; layHelper = m_d->sephelper_msRadl; }
1207 else if ( name.substr(0,4) == "MBAP" ) { sepHelper = m_d->sephelper_msRaenv; layHelper = m_d->sephelper_msRadl; }
1208 else if ( name.substr(0,4) == "MBWH" ) { sepHelper = m_d->sephelper_msRaenv; layHelper = m_d->sephelper_msRadl; }
1209 else if ( name.substr(0,3) == "PP2" ) { sepHelper = m_d->sephelper_msRaenv; layHelper = m_d->sephelper_msRadl; }
1210 else if ( name.substr(0,3) == "ECT" ) { sepHelper = m_d->sephelper_msETenv; layHelper = m_d->sephelper_msETdl; }
1211 else if ( name.substr(0,2) == "BT" || name.substr(0,6) == "EdgeBT" || name.substr(0,6) == "HeadBT" )
1212 { sepHelper = m_d->sephelper_msBTenv; layHelper = m_d->sephelper_msBTdl; }
1213 else if ( name.substr(0,3) == "BAR" )
1214 // && ( name.substr(0,18) == "BAR_ToroidBAR_Cold" || name.substr(0,22) == "BAR_ToroidBAR_Voussoir") )
1215 { sepHelper = m_d->sephelper_msBTenv; layHelper = m_d->sephelper_msBTdl; }
1216 else if ( name.substr(0,9) == "ForwardSh" || name.substr(0,8) == "ToroidSh" || name.substr(0,6) == "DiskSh" )
1217 { sepHelper = m_d->sephelper_msShenv; layHelper = m_d->sephelper_msShdl; }
1218 else if ( name.substr(0,5) == "StdFe" || name.substr(0,6) == "ExtrFe" || name.substr(0,6) == "ConnFe" )
1219 { sepHelper = m_d->sephelper_msFeenv; layHelper = m_d->sephelper_msFedl; }
1220 else if ( name.substr(0,4) == "Feet" )
1221 { sepHelper = m_d->sephelper_msFeenv; layHelper = m_d->sephelper_msFedl; }
1222 else // display somehow
1223 { sepHelper = m_d->sephelper_msFeenv; layHelper = m_d->sephelper_msFedl; }
1224 } else {
1225 std::string name = (*dIter)->name();
1226 //std::cout << "VP1 ignores volume:"<<name<< std::endl;
1227 if ( name.substr(0,3) == "BAR" &&
1228 name.substr(0,18) == "BAR_ToroidBAR_Cold" )
1229 { sepHelper = m_d->sephelper_msBTenv; layHelper = m_d->sephelper_msBTdl; }
1230 }
1231 if (sepHelper) processMsVolume( (*dIter)->trackingVolume(), sepHelper, layHelper);
1232 sepHelper = nullptr; layHelper = nullptr;
1233 }
1234 }
1235}
1236
1237//_____________________________________________________________________________________
1239 VP1ExtraSepLayerHelper* sepLayerHelper,
1240 unsigned int colorCode)
1241{
1242 if (!tlayer) return;
1243 SoNode * node = m_d->surface2sonode->translateSurface(tlayer->surfaceRepresentation());
1244 if (node) {
1245 sepLayerHelper->addNodeUnderMaterial(node,m_d->colorCodeConverter.getMaterialFromColorCode( colorCode));
1246 std::cout << "Adding Layer to Separator helper: " << sepLayerHelper << std::endl;
1247 }
1248}
1249
1250//_____________________________________________________________________________________
1252 VP1ExtraSepLayerHelper* sepLayerHelper,
1253 unsigned int colorCode)
1254{
1255 if (!tsurf) return;
1256 SoNode * node = m_d->surface2sonode->translateSurface(*tsurf);
1257 if (node) sepLayerHelper->addNodeUnderMaterial(node,m_d->colorCodeConverter.getMaterialFromColorCode( colorCode));
1258}
1259
1260//_____________________________________________________________________________________
1262{
1263 if (!tvol) return;
1264
1265 // ordered layers
1266 const Trk::BinnedArray< Trk::Layer >* confinedLayers = tvol->confinedLayers();
1267 if (confinedLayers){
1268 std::span<Trk::Layer const * const> layerVector = confinedLayers->arrayObjects();
1269 std::span<Trk::Layer const * const>::iterator layerIter = layerVector.begin();
1270 // loop over layers
1271 for ( ; layerIter != layerVector.end(); ++layerIter){
1272 // push_back the layer
1273 if (*layerIter){
1274 SoNode * node = m_d->surface2sonode->translateSurface((*layerIter)->surfaceRepresentation());
1275 if (node && layHelper ) {
1276 if ((*layerIter)->layerType()>0)
1277 layHelper->addNodeUnderMaterial(node,m_d->colorCodeConverter.getMaterialFromColorCode( color));
1278 else
1279 layHelper->addNodeUnderMaterial(node,m_d->colorCodeConverter.getMaterialFromColorCode( 1));
1280 }
1281 }
1282 }
1283 }
1284 // unordered layers
1286 if (!confALays.empty()) {
1287 // loop over layers
1288 for (const Trk::Layer* const layerIter : confALays) {
1289 // push_back the layer
1290 if (layerIter) {
1291 SoNode* node = m_d->surface2sonode->translateSurface(
1292 layerIter->surfaceRepresentation());
1293 if (node && layHelper) {
1294 if (layerIter->layerType() > 0)
1295 layHelper->addNodeUnderMaterial(
1296 node, m_d->colorCodeConverter.getMaterialFromColorCode(color));
1297 else
1298 layHelper->addNodeUnderMaterial(
1299 node, m_d->colorCodeConverter.getMaterialFromColorCode(1));
1300 }
1301 }
1302 }
1303 }
1304 // dense volumes
1305 const auto confVols = tvol->confinedDenseVolumes();
1306 if (!confVols.empty()){
1307 auto volIter = confVols.begin();
1308 for ( ; volIter != confVols.end(); ++volIter){
1309 if (*volIter && sepHelper ) processMsVolume( *volIter, nullptr, layHelper );
1310 }
1311 }
1312}
1313
1314//_____________________________________________________________________________________
1316{
1324 {
1325 return new QLabel("Geometry not configured.");
1326 }
1327
1328 QWidget * controller = new QWidget(nullptr);
1329 Ui::TrackingGeometryControllerForm ui;
1330 ui.setupUi(controller);
1331
1337 ui.groupBox_idandcalogeometry->setVisible(false);
1338
1340 ui.groupBox_muonframe->setVisible(false);
1341 ui.groupBox_muonactivematerial->setVisible(false);
1342 ui.groupBox_muoninertmaterial->setVisible(false);
1343 }
1344
1345 connect(ui.checkBox_TrackingVolumes,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1346
1347 connect(ui.checkBox_BeamPipeLayer,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1348 connect(ui.checkBox_LayersECA,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1349 connect(ui.checkBox_LayersBarrel,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1350 connect(ui.checkBox_LayersECC,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1351 connect(ui.checkBox_PixelLayersECA,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1352 connect(ui.checkBox_PixelLayersBarrel,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1353 connect(ui.checkBox_PixelLayersECC,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1354 connect(ui.checkBox_SctLayersECA,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1355 connect(ui.checkBox_SctLayersBarrel,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1356 connect(ui.checkBox_SctLayersECC,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1357 connect(ui.checkBox_TrtLayersECA,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1358 connect(ui.checkBox_TrtLayersBarrel,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1359 connect(ui.checkBox_TrtLayersECC,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1360
1361 connect(ui.checkBox_PixelSurfacesECA,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1362 connect(ui.checkBox_PixelSurfacesBarrel,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1363 connect(ui.checkBox_PixelSurfacesECC,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1364 connect(ui.checkBox_SctSurfacesECA,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1365 connect(ui.checkBox_SctSurfacesBarrel,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1366 connect(ui.checkBox_SctSurfacesECC,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1367
1368 connect(ui.checkBox_ClipPlane,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1369 connect(ui.checkBox_MuonStaticFrameB,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1370 connect(ui.checkBox_MuonStaticFrameI,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1371 connect(ui.checkBox_MuonStaticFrameO,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1372 connect(ui.pushButton_Retrieve,SIGNAL(clicked()),this,SLOT(retrieveTrackingGeometry()));
1373 connect(ui.checkBoxBIVol,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1374 connect(ui.checkBoxBMVol,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1375 connect(ui.checkBoxBOVol,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1376 connect(ui.checkBoxEIVol,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1377 connect(ui.checkBoxEMVol,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1378 connect(ui.checkBoxEOVol,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1379 connect(ui.checkBoxCSCVol,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1380 connect(ui.checkBoxTGCVol,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1381 connect(ui.checkBoxBILay,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1382 connect(ui.checkBoxBMLay,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1383 connect(ui.checkBoxBOLay,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1384 connect(ui.checkBoxEILay,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1385 connect(ui.checkBoxEMLay,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1386 connect(ui.checkBoxEOLay,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1387 connect(ui.checkBoxCSCLay,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1388 connect(ui.checkBoxTGCLay,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1389 connect(ui.checkBoxBTEnv,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1390 connect(ui.checkBoxETEnv,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1391 connect(ui.checkBoxShEnv,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1392 connect(ui.checkBoxFeetEnv,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1393 connect(ui.checkBoxRailEnv,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1394 connect(ui.checkBoxBTDL,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1395 connect(ui.checkBoxETDL,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1396 connect(ui.checkBoxShDL,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1397 connect(ui.checkBoxFeetDL,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1398 connect(ui.checkBoxRailDL,SIGNAL(toggled(bool)),this,SLOT(changeTopLevelView()));
1399 connect( ui.lineEdit_TrackingGeometrySvcName, SIGNAL( returnPressed()),
1400 ui.pushButton_Retrieve, SIGNAL( clicked()));
1401 connect( ui.lineEdit_TrackingGeometryName, SIGNAL( returnPressed()),
1402 ui.pushButton_Retrieve, SIGNAL( clicked()));
1403
1404 m_d->lineEdit_TrackingGeometrySvcName = ui.lineEdit_TrackingGeometrySvcName;
1405 m_d->lineEdit_TrackingGeometryName = ui.lineEdit_TrackingGeometryName;
1406
1407 m_d->lineEdit_TrackingGeometrySvcName->setText( m_d->initialTrackingGeometrySvcName);
1408 m_d->lineEdit_TrackingGeometryName->setText( m_d->initialTrackingGeometryName);
1409
1410 m_d->pushButton_Retrieve = ui.pushButton_Retrieve;
1411 m_d->checkBox_TrackingVolumes = ui.checkBox_TrackingVolumes;
1412
1413 m_d->checkBox_beamPipe = ui.checkBox_BeamPipeLayer;
1414 m_d->checkBox_pixLayECA = ui.checkBox_PixelLayersECA;
1415 m_d->checkBox_pixLayBarrel = ui.checkBox_PixelLayersBarrel;
1416 m_d->checkBox_pixLayECC = ui.checkBox_PixelLayersECC;
1417 m_d->checkBox_sctLayECA = ui.checkBox_SctLayersECA;
1418 m_d->checkBox_sctLayBarrel = ui.checkBox_SctLayersBarrel;
1419 m_d->checkBox_sctLayECC = ui.checkBox_SctLayersECC;
1420 m_d->checkBox_trtLayECA = ui.checkBox_TrtLayersECA;
1421 m_d->checkBox_trtLayBarrel = ui.checkBox_TrtLayersBarrel;
1422 m_d->checkBox_trtLayECC = ui.checkBox_TrtLayersECC;
1423 m_d->checkBox_passiveLayECA = ui.checkBox_LayersECA;
1424 m_d->checkBox_passiveLayBarrel = ui.checkBox_LayersBarrel;
1425 m_d->checkBox_passiveLayECC = ui.checkBox_LayersECC;
1426
1427 m_d->checkBox_pixSurfECA = ui.checkBox_PixelSurfacesECA;
1428 m_d->surfacesNames.emplace_back("PixelECA");
1429 m_d->checkBox_pixSurfBarrel = ui.checkBox_PixelSurfacesBarrel;
1430 m_d->surfacesNames.emplace_back("PixelBarrel");
1431 m_d->checkBox_pixSurfECC = ui.checkBox_PixelSurfacesECC;
1432 m_d->surfacesNames.emplace_back("PixelECC");
1433 m_d->checkBox_sctSurfECA = ui.checkBox_SctSurfacesECA;
1434 m_d->surfacesNames.emplace_back("SCT_ECA");
1435 m_d->checkBox_sctSurfBarrel = ui.checkBox_SctSurfacesBarrel;
1436 m_d->surfacesNames.emplace_back("SCT_Barrel");
1437 m_d->checkBox_sctSurfECC = ui.checkBox_SctSurfacesECC;
1438 m_d->surfacesNames.emplace_back("SCT_ECC");
1439
1440 m_d->checkBox_ClipPlane = ui.checkBox_ClipPlane;
1441 m_d->checkBox_MuonStaticFrameB = ui.checkBox_MuonStaticFrameB;
1442 m_d->checkBox_MuonStaticFrameI = ui.checkBox_MuonStaticFrameI;
1443 m_d->checkBox_MuonStaticFrameO = ui.checkBox_MuonStaticFrameO;
1444 m_d->checkBox_msBIvol = ui.checkBoxBIVol;
1445 m_d->checkBox_msBMvol = ui.checkBoxBMVol;
1446 m_d->checkBox_msBOvol = ui.checkBoxBOVol;
1447 m_d->checkBox_msEIvol = ui.checkBoxEIVol;
1448 m_d->checkBox_msEMvol = ui.checkBoxEMVol;
1449 m_d->checkBox_msEOvol = ui.checkBoxEOVol;
1450 m_d->checkBox_msCSvol = ui.checkBoxCSCVol;
1451 m_d->checkBox_msTGvol = ui.checkBoxTGCVol;
1452 m_d->checkBox_msBIlay = ui.checkBoxBILay;
1453 m_d->checkBox_msBMlay = ui.checkBoxBMLay;
1454 m_d->checkBox_msBOlay = ui.checkBoxBOLay;
1455 m_d->checkBox_msEIlay = ui.checkBoxEILay;
1456 m_d->checkBox_msEMlay = ui.checkBoxEMLay;
1457 m_d->checkBox_msEOlay = ui.checkBoxEOLay;
1458 m_d->checkBox_msCSlay = ui.checkBoxCSCLay;
1459 m_d->checkBox_msTGlay = ui.checkBoxTGCLay;
1460 m_d->checkBox_msBTenv = ui.checkBoxBTEnv;
1461 m_d->checkBox_msBTdl = ui.checkBoxBTDL;
1462 m_d->checkBox_msETenv = ui.checkBoxETEnv;
1463 m_d->checkBox_msETdl = ui.checkBoxETDL;
1464 m_d->checkBox_msShenv = ui.checkBoxShEnv;
1465 m_d->checkBox_msShdl = ui.checkBoxShDL;
1466 m_d->checkBox_msFeenv = ui.checkBoxFeetEnv;
1467 m_d->checkBox_msFedl = ui.checkBoxFeetDL;
1468 m_d->checkBox_msRaenv = ui.checkBoxRailEnv;
1469 m_d->checkBox_msRadl = ui.checkBoxRailDL;
1470
1471
1472
1473 std::cout << " Filling map entry [ " << m_d->checkBox_pixSurfBarrel << " ] - with " << m_d->pixSurfBarrelSwitch << std::endl;
1474
1475 // loop and set initial state
1476 std::map<QObject*,std::pair<SoSwitch*,bool> >::iterator chbMapIter = m_d->checkBoxSwitchMap.begin();
1477 std::map<QObject*,std::pair<SoSwitch*,bool> >::iterator chbMapIterEnd = m_d->checkBoxSwitchMap.end();
1478
1479 for ( ; chbMapIter != chbMapIterEnd; ++chbMapIter ){
1480 QCheckBox* checkBox = dynamic_cast<QCheckBox*>((chbMapIter)->first);
1481 if (checkBox) checkBox->setChecked( ((chbMapIter)->second).second );
1482
1483 }
1484 return controller;
1485}
1486
1487
1488//_____________________________________________________________________________________
1490{
1491 if (! m_d->retrieveSuccess)
1492 return;
1493
1494
1495 if (! m_d->senderMapFilled ){
1496 // register the map for states and signal handling
1497 m_d->checkBoxSwitchMap[m_d->checkBox_TrackingVolumes] = std::make_pair(m_d->volswitch,false);
1498 m_d->checkBoxSwitchMap[m_d->checkBox_pixSurfBarrel] = std::make_pair(m_d->pixSurfBarrelSwitch,false);
1499 m_d->checkBoxSwitchMap[m_d->checkBox_pixSurfECA] = std::make_pair(m_d->pixSurfECASwitch,false);
1500 m_d->checkBoxSwitchMap[m_d->checkBox_pixSurfECC] = std::make_pair(m_d->pixSurfECCSwitch,false);
1501 m_d->checkBoxSwitchMap[m_d->checkBox_sctSurfBarrel] = std::make_pair(m_d->sctSurfBarrelSwitch,false);
1502 m_d->checkBoxSwitchMap[m_d->checkBox_sctSurfECA] = std::make_pair(m_d->sctSurfECASwitch,false);
1503 m_d->checkBoxSwitchMap[m_d->checkBox_sctSurfECC] = std::make_pair(m_d->sctSurfECCSwitch,false);
1504 m_d->checkBoxSwitchMap[m_d->checkBox_trtSurfBarrel] = std::make_pair(m_d->trtSurfBarrelSwitch,false);
1505 m_d->checkBoxSwitchMap[m_d->checkBox_trtSurfECA] = std::make_pair(m_d->trtSurfECASwitch,false);
1506 m_d->checkBoxSwitchMap[m_d->checkBox_trtSurfECC] = std::make_pair(m_d->trtSurfECCSwitch,false);
1507 m_d->checkBoxSwitchMap[m_d->checkBox_beamPipe] = std::make_pair(m_d->beamPipeSwitch,false);
1508 m_d->checkBoxSwitchMap[m_d->checkBox_pixLayBarrel] = std::make_pair(m_d->pixLayBarrelSwitch,false);
1509 m_d->checkBoxSwitchMap[m_d->checkBox_pixLayECA] = std::make_pair(m_d->pixLayECASwitch,false);
1510 m_d->checkBoxSwitchMap[m_d->checkBox_pixLayECC] = std::make_pair(m_d->pixLayECCSwitch,false);
1511 m_d->checkBoxSwitchMap[m_d->checkBox_sctLayBarrel] = std::make_pair(m_d->sctLayBarrelSwitch,false);
1512 m_d->checkBoxSwitchMap[m_d->checkBox_sctLayECA] = std::make_pair(m_d->sctLayECASwitch,false);
1513 m_d->checkBoxSwitchMap[m_d->checkBox_sctLayECC] = std::make_pair(m_d->sctLayECCSwitch,false);
1514 m_d->checkBoxSwitchMap[m_d->checkBox_trtLayBarrel] = std::make_pair(m_d->trtLayBarrelSwitch,false);
1515 m_d->checkBoxSwitchMap[m_d->checkBox_trtLayECA] = std::make_pair(m_d->trtLayECASwitch,false);
1516 m_d->checkBoxSwitchMap[m_d->checkBox_trtLayECC] = std::make_pair(m_d->trtLayECCSwitch,false);
1517 m_d->checkBoxSwitchMap[m_d->checkBox_passiveLayBarrel] = std::make_pair(m_d->passiveLayBarrelSwitch,false);
1518 m_d->checkBoxSwitchMap[m_d->checkBox_passiveLayECA] = std::make_pair(m_d->passiveLayECASwitch,false);
1519 m_d->checkBoxSwitchMap[m_d->checkBox_passiveLayECC] = std::make_pair(m_d->passiveLayECCSwitch,false);
1520 m_d->checkBoxSwitchMap[m_d->checkBox_ClipPlane] = std::make_pair(m_d->clipswitch,false);
1521 m_d->checkBoxSwitchMap[m_d->checkBox_MuonStaticFrameB] = std::make_pair(m_d->msBswitch,false);
1522 m_d->checkBoxSwitchMap[m_d->checkBox_MuonStaticFrameI] = std::make_pair(m_d->msIswitch,false);
1523 m_d->checkBoxSwitchMap[m_d->checkBox_MuonStaticFrameO] = std::make_pair(m_d->msOswitch,false);
1524 m_d->checkBoxSwitchMap[m_d->checkBox_msBIvol] = std::make_pair(m_d->msBIswitch,false);
1525 m_d->checkBoxSwitchMap[m_d->checkBox_msBIlay] = std::make_pair(m_d->msBMswitch,false);
1526 m_d->checkBoxSwitchMap[m_d->checkBox_msBMvol] = std::make_pair(m_d->msBOswitch,false);
1527 m_d->checkBoxSwitchMap[m_d->checkBox_msBMlay] = std::make_pair(m_d->msEIswitch,false);
1528 m_d->checkBoxSwitchMap[m_d->checkBox_msBOvol] = std::make_pair(m_d->msEMswitch,false);
1529 m_d->checkBoxSwitchMap[m_d->checkBox_msBOlay] = std::make_pair(m_d->msEOswitch,false);
1530 m_d->checkBoxSwitchMap[m_d->checkBox_msEIvol] = std::make_pair(m_d->msCSswitch,false);
1531 m_d->checkBoxSwitchMap[m_d->checkBox_msEIlay] = std::make_pair(m_d->msTGswitch,false);
1532 m_d->checkBoxSwitchMap[m_d->checkBox_msEMvol] = std::make_pair(m_d->msBIlayswitch,false);
1533 m_d->checkBoxSwitchMap[m_d->checkBox_msEMlay] = std::make_pair(m_d->msBMlayswitch,false);
1534 m_d->checkBoxSwitchMap[m_d->checkBox_msEOvol] = std::make_pair(m_d->msBOlayswitch,false);
1535 m_d->checkBoxSwitchMap[m_d->checkBox_msEOlay] = std::make_pair(m_d->msEIlayswitch,false);
1536 m_d->checkBoxSwitchMap[m_d->checkBox_msCSvol] = std::make_pair(m_d->msEMlayswitch,false);
1537 m_d->checkBoxSwitchMap[m_d->checkBox_msCSlay] = std::make_pair(m_d->msEOlayswitch,false);
1538 m_d->checkBoxSwitchMap[m_d->checkBox_msTGvol] = std::make_pair(m_d->msCSlayswitch,false);
1539 m_d->checkBoxSwitchMap[m_d->checkBox_msTGlay] = std::make_pair(m_d->msTGlayswitch,false);
1540 m_d->checkBoxSwitchMap[m_d->checkBox_msBTenv] = std::make_pair(m_d->msBTenvswitch,false);
1541 m_d->checkBoxSwitchMap[m_d->checkBox_msETenv] = std::make_pair(m_d->msETenvswitch,false);
1542 m_d->checkBoxSwitchMap[m_d->checkBox_msShenv] = std::make_pair(m_d->msShenvswitch,false);
1543 m_d->checkBoxSwitchMap[m_d->checkBox_msFeenv] = std::make_pair(m_d->msFeenvswitch,false);
1544 m_d->checkBoxSwitchMap[m_d->checkBox_msRaenv] = std::make_pair(m_d->msRaenvswitch,false);
1545 m_d->checkBoxSwitchMap[m_d->checkBox_msBTdl] = std::make_pair(m_d->msBTdlswitch,false);
1546 m_d->checkBoxSwitchMap[m_d->checkBox_msETdl] = std::make_pair(m_d->msETdlswitch,false);
1547 m_d->checkBoxSwitchMap[m_d->checkBox_msShdl] = std::make_pair(m_d->msShdlswitch,false);
1548 m_d->checkBoxSwitchMap[m_d->checkBox_msFedl] = std::make_pair(m_d->msFedlswitch,false);
1549 m_d->checkBoxSwitchMap[m_d->checkBox_msRadl] = std::make_pair(m_d->msRadlswitch,false);
1550 m_d->senderMapFilled = true;
1551 }
1552 // loop and set initial state
1553 std::map<QObject*,std::pair<SoSwitch*,bool> >::iterator chbMapIterEnd = m_d->checkBoxSwitchMap.end();
1554 std::map<QObject*,std::pair<SoSwitch*,bool> >::iterator chbMapIter = m_d->checkBoxSwitchMap.find(sender());
1555
1556 if ( chbMapIter != chbMapIterEnd ) {
1557 QCheckBox* checkBox = dynamic_cast<QCheckBox*>((chbMapIter)->first);
1558 SoSwitch* soswitch = ((chbMapIter)->second).first;
1559 if (checkBox && soswitch)
1560 soswitch->whichChild = checkBox->isChecked() ? SO_SWITCH_ALL : SO_SWITCH_NONE;
1561 } else {
1562 message("ERROR: Unknown checkbox");
1563 }
1564}
1565
1566QByteArray
1568{
1569 //TK: BAD!!!!
1570 messageDebug("WARNING: VP1TrackingGeometrySystem persistification disabled for now due to crashes!");
1571 return {};
1601}
1602
1603void
1604VP1TrackingGeometrySystem::restoreFromState( QByteArray /*ba*/) //unused parameter
1605{
1606 messageDebug("WARNING: VP1TrackingGeometrySystem persistification disabled for now due to crashes!");
1634}
#define M_PI
IVP13DSystemSimple(const QString &name, const QString &information, const QString &contact_info)
void messageVerbose(const QString &) const
void messageDebug(const QString &) const
const QString & name() const
void message(const QString &) const
ISvcLocator * serviceLocator() const
The Athena Transient Store API.
Binned Array for avoiding map searches/.
Definition BinnedArray.h:36
virtual std::span< T *const > arrayObjects()=0
Return all objects of the Array non-const we can still modify the T.
LayerIndex for the identification of layers in a simplified detector geometry of Cylinders and Discs.
Definition LayerIndex.h:37
int value() const
layerIndex expressed in an integer
Definition LayerIndex.h:71
Base Class for a Detector Layer in the Tracking realm.
Definition Layer.h:72
virtual const Surface & surfaceRepresentation() const =0
Transforms the layer into a Surface representation for extrapolation.
Abstract Base Class for tracking surfaces.
The TrackingGeometry class is the owner of the constructed TrackingVolumes.
const TrackingVolume * trackingVolume(const std::string &name) const
return the tracking Volume by name, 0 if it doesn't exist
const TrackingVolume * highestTrackingVolume() const
return the world
Full Volume description used in Tracking, it inherits from Volume to get the geometrical structure,...
const LayerArray * confinedLayers() const
Return the subLayer array.
const TrackingVolumeArray * confinedVolumes() const
Return the subLayer array.
const std::string & volumeName() const
Returns the VolumeName - for debug reason, might be depreciated later.
ArraySpan< DetachedTrackingVolume const *const > confinedDetachedVolumes() const
Return detached subVolumes - not the ownership.
unsigned int colorCode() const
Get the color code.
ArraySpan< Layer const *const > confinedArbitraryLayers() const
Return the confined subLayer array.
ArraySpan< TrackingVolume const *const > confinedDenseVolumes() const
Return unordered subVolumes - not the ownership.
const Amg::Vector3D & center() const
returns the center of the volume
Definition Volume.h:90
bool inside(const Amg::Vector3D &gp, double tol=0.) const
Inside() method for checks.
Definition Volume.cxx:72
void addNodeUnderMaterial(SoNode *, SoMaterial *)
static bool hasTileGeometry()
static bool hasTRTGeometry()
static bool hasLArGeometry()
static bool hasPixelGeometry()
static bool hasSCTGeometry()
static void ensureInit(IVP1System *)
static bool hasMuonGeometry()
void processMsLayDense(const Trk::TrackingVolume *tvol, VP1ExtraSepLayerHelper *sepHelper, VP1ExtraSepLayerHelper *layHelper, int color)
void processTrkSurface(const Trk::Surface *, VP1ExtraSepLayerHelper *, unsigned int colorCode)
void processMsVolume(const Trk::TrackingVolume *, VP1ExtraSepLayerHelper *, VP1ExtraSepLayerHelper *)
void processTrkLayer(const Trk::Layer *, VP1ExtraSepLayerHelper *, unsigned int colorCode)
void buildPermanentSceneGraph(StoreGateSvc *detstore, SoSeparator *root)
void processTrkVolume(const Trk::TrackingVolume *)
Definition node.h:24
std::span< T > ArraySpan
BinnedArray< Surface > SurfaceArray
Definition Layer.h:40
VP1ExtraSepLayerHelper * sephelper_sctSurfBarrel
VP1ExtraSepLayerHelper * sephelper_passiveLayBarrel
VP1ExtraSepLayerHelper * sephelper_pixSurfECA
VP1ExtraSepLayerHelper * sephelper_pixSurfECC
VP1ExtraSepLayerHelper * sephelper_sctSurfECA
VP1ExtraSepLayerHelper * sephelper_pixLayBarrel
std::map< QObject *, std::pair< SoSwitch *, bool > > checkBoxSwitchMap
VP1ExtraSepLayerHelper * sephelper_passiveLayECC
VP1ExtraSepLayerHelper * sephelper_trtLayBarrel
VP1ExtraSepLayerHelper * sephelper_sctSurfECC
std::vector< VP1ExtraSepLayerHelper * > sepHelperContainer
VP1ExtraSepLayerHelper * sephelper_passiveLayECA
VP1ExtraSepLayerHelper * sephelper_pixSurfBarrel
VP1ExtraSepLayerHelper * sephelper_trtSurfBarrel
VP1ExtraSepLayerHelper * sephelper_sctLayBarrel