ATLAS Offline Software
Loading...
Searching...
No Matches
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
22
23class SoSwitch;
24class SoSeparator;
25class SoNode;
26class SbMatrix;
28class IVP1System;
29
30class PhiSectorManager : public QObject {
31
32 Q_OBJECT
33
34public:
35
36 PhiSectorManager(PhiSectionWidget *, IVP1System *, QObject*parent=0);
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
67protected Q_SLOTS:
70
71private:
72
73 class Imp;
75
76};
77
78#endif
int getVolumeType(const SbMatrix &transform, SoNode *shape) const
PhiSectorManager(PhiSectionWidget *, IVP1System *, QObject *parent=0)
VP1ExtraSepLayerHelper * registerVolumeAroundZAxis(VP1GeoFlags::SubSystemFlag flag, SoSwitch *sw, const SbMatrix &tranformation)
void updateEnabledPhiSections(int)
VP1ExtraSepLayerHelper * getSepHelperForNode(VP1GeoFlags::SubSystemFlag flag, int iphi)
void registerSubSystemSeparator(VP1GeoFlags::SubSystemFlag flag, SoSeparator *subsystemsep)
VP1ExtraSepLayerHelper * getLabelSepHelperForNode(VP1GeoFlags::SubSystemFlag flag, int iphi)
Addition to handle label separators, in exactly the same way as getSepHelperForNode(....
void updateRepresentationsOfVolsAroundZAxis()