ATLAS Offline Software
PhiSectorManager.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef PHISECTORMANAGER_H
6 #define PHISECTORMANAGER_H
7 
9 // //
10 // Header file for class PhiSectorManager //
11 // //
12 // Author: Thomas Kittelmann <Thomas.Kittelmann@cern.ch> //
13 // //
14 // Initial VP1 version: September 2007 //
15 // //
17 
18 #include <QObject>
20 
21 class PhiSectionWidget;
22 
23 class SoSwitch;
24 class SoSeparator;
25 class SoNode;
26 class SbMatrix;
28 class IVP1System;
29 
30 class PhiSectorManager : public QObject {
31 
32  Q_OBJECT
33 
34 public:
35 
37  virtual ~PhiSectorManager();
38 
39  //Used by the geometry system to let the manager know under separator stuff for a given subsystem goes:
40  void registerSubSystemSeparator(VP1GeoFlags::SubSystemFlag flag,SoSeparator * subsystemsep);
41 
42  //Volume handles first call this method to figure out what kind of volume they are:
43  int getVolumeType(const SbMatrix& transform, SoNode * shape) const;
44  //The return value, iphi, indicates the type:
45  // 0...(nphi-1): Volume with a bounding box not around the Z axis.
46  // -1: Volume has bounding box around Z-axis, but can not be dynamically altered (probably boolean)
47  // -2: Volume is around Z-axis AND can be dynamically subdivided (SoTubs, SoCons, SoPcons, SoLAr).
48  //if return value was >=-1, attach it via (iphi is the return value from getVolumeType):
50 
53  //if return value was -2, a call to the following is required
54  //instead (again the returned helper is to be used to attach/detach
55  //the nodesep to the scenegraph:
56  VP1ExtraSepLayerHelper * registerVolumeAroundZAxis( VP1GeoFlags::SubSystemFlag flag, SoSwitch* sw, const SbMatrix& tranformation );
57  //NB: The switch should have your regular shape as its only child (other stuff for the dynamical volumes will be added dynamically):
58  //NB: "tranformation" must be the complete transformation up to the shape.
59 
60  //For updating the phi-slicings:
62 
63  //If changing the states of a lot of volume handles, call these before and after.
64  void largeChangesBegin();
65  void largeChangesEnd();
66 
67 protected Q_SLOTS:
69  void updateEnabledPhiSections(int);
70 
71 private:
72 
73  class Imp;
74  Imp * m_d;
75 
76 };
77 
78 #endif
PhiSectorManager::m_d
Imp * m_d
Definition: PhiSectorManager.h:73
PhiSectorManager::getSepHelperForNode
VP1ExtraSepLayerHelper * getSepHelperForNode(VP1GeoFlags::SubSystemFlag flag, int iphi)
Definition: PhiSectorManager.cxx:92
PhiSectorManager::largeChangesBegin
void largeChangesBegin()
Definition: PhiSectorManager.cxx:492
PhiSectorManager::updateEnabledPhiSections
void updateEnabledPhiSections(int)
Definition: PhiSectorManager.cxx:325
PhiSectorManager::largeChangesEnd
void largeChangesEnd()
Definition: PhiSectorManager.cxx:510
PhiSectorManager::getVolumeType
int getVolumeType(const SbMatrix &transform, SoNode *shape) const
Definition: PhiSectorManager.cxx:215
PhiSectorManager::registerVolumeAroundZAxis
VP1ExtraSepLayerHelper * registerVolumeAroundZAxis(VP1GeoFlags::SubSystemFlag flag, SoSwitch *sw, const SbMatrix &tranformation)
Definition: PhiSectorManager.cxx:144
IVP1System
Definition: IVP1System.h:36
VP1ExtraSepLayerHelper
Definition: VP1ExtraSepLayerHelper.h:22
PhiSectorManager::Imp
Definition: PhiSectorManager.cxx:41
master.flag
bool flag
Definition: master.py:29
PhiSectorManager::~PhiSectorManager
virtual ~PhiSectorManager()
Definition: PhiSectorManager.cxx:278
Amg::transform
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
Definition: GeoPrimitivesHelpers.h:156
test_pyathena.parent
parent
Definition: test_pyathena.py:15
PhiSectionWidget
Definition: PhiSectionWidget.h:26
VP1GeoFlags.h
PhiSectorManager::registerSubSystemSeparator
void registerSubSystemSeparator(VP1GeoFlags::SubSystemFlag flag, SoSeparator *subsystemsep)
Definition: PhiSectorManager.cxx:78
PhiSectorManager::enabledPhiSectorsChanged
void enabledPhiSectorsChanged()
Definition: PhiSectorManager.cxx:310
PhiSectorManager::getLabelSepHelperForNode
VP1ExtraSepLayerHelper * getLabelSepHelperForNode(VP1GeoFlags::SubSystemFlag flag, int iphi)
Addition to handle label separators, in exactly the same way as getSepHelperForNode(....
Definition: PhiSectorManager.cxx:118
PhiSectorManager::updateRepresentationsOfVolsAroundZAxis
void updateRepresentationsOfVolsAroundZAxis()
Definition: PhiSectorManager.cxx:483
PhiSectorManager
Definition: PhiSectorManager.h:30
VP1GeoFlags::SubSystemFlag
SubSystemFlag
Definition: VP1GeoFlags.h:30
PhiSectorManager::PhiSectorManager
PhiSectorManager(PhiSectionWidget *, IVP1System *, QObject *parent=0)
Definition: PhiSectorManager.cxx:262