ATLAS Offline Software
Loading...
Searching...
No Matches
VP1GeometrySystem.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 VP1GEOMETRYSYSTEM_H
6#define VP1GEOMETRYSYSTEM_H
7
9// //
10// Header file for class VP1GeometrySystem //
11// //
12// Author: Thomas Kittelmann <Thomas.Kittelmann@cern.ch> //
13// //
14// Derived from V-atlas geometry system by Joe Boudreau. //
15// Origins of initial version dates back to ~1996, initial VP1 //
16// version by TK (May 2007) and almost entirely rewritten Oct 2007 //
17// //
19
20// GeoModel
22//
23#include "GeoModelKernel/GeoVPhysVol.h"
24
28#include <set>
29#include <map>
30#include <QStack>
31#include <QString>
32
34
35 Q_OBJECT
36
37public:
38
39
40 VP1GeometrySystem( const VP1GeoFlags::SubSystemFlags& SubSystemsTurnedOn = VP1GeoFlags::None,
41 const QString& name = "Geo" );
42 virtual ~VP1GeometrySystem();
43
44 //Method that channel can use to override defaults:
45 void setGeometrySelectable(bool);
46 void setZoomToVolumeOnClick(bool);
49
50
51 QWidget * buildController();
52
53 void systemcreate(StoreGateSvc*detstore);
54 void buildPermanentSceneGraph(StoreGateSvc* detstore, SoSeparator *root);
55 void buildEventSceneGraph(StoreGateSvc*, SoSeparator *) {}
56 void userPickedNode(SoNode* pickedNode, SoPath *pickedPath);
57 void systemuncreate();
58
59 QByteArray saveState();
60 void restoreFromState(QByteArray);
61 void enableMuonChamberLabels(bool, bool);
62
63signals:
64 void appropriateMDTProjectionsChanged(int);//To give hints to prd/track/segment systems about
65 //0: No projections, 1: Project to end of tubes, 2: Project to end of chamber volume.
66 void plotSpectrum(QStack<QString>&, int copyNumber=-1); // Send information about selected volume to the VP1UtilitySystems::PartSpectSystem
67 //The stack represents the path to the selected volume. The entries of this patch have form Volname::CopyNo
68 //The Volname is either physical volume name, or, in case the former is absent, the logical volume name
69 //The ::CopyNo suffix is added only when CopyNo is applicable
70
71public Q_SLOTS:
72
73 void reiconizeToShowSpecificMuonChambers(const std::set<GeoPVConstLink>&);
74 void orientViewToMuonChamber(const GeoPVConstLink& chamberPV);//Zooms/rotates to obtain orthogonal endview of to muon chamber
75 void setCurvedSurfaceRealism(int);//Accepts values in the range 0..100.
76 void muonChamberT0sChanged(const std::map<GeoPVConstLink, float>&,int);
77protected Q_SLOTS:
78 void checkboxChanged();
79 void updateTransparency();
83
84 void autoAdaptPixelsOrSCT(bool,bool,bool,bool,bool,bool);//pixel,brl,ecA,ecC,bcmA,bcmC
85 void autoAdaptMuonNSW(bool reset, bool stgc, bool mm, bool passiveSpacer, bool passiveStructure,bool passiveAPlate); // select NSW geo: sTGC, MicroMegas, Spacer, Structure, APlate
86 void resetSubSystems(VP1GeoFlags::SubSystemFlags);
87 void autoExpandByVolumeOrMaterialName(bool,const QString&);//volname: (false,namestr), matname: (true,namestr)
88 void autoIconifyByVolumeOrMaterialName(bool,const QString&);//volname: (false,namestr), matname: (true,namestr)
89 void actionOnAllNonStandardVolumes(bool);//true: zap, false: expand.
90
93
94 void setShowVolumeOutLines(bool);
95
96 void saveMaterialsToFile(const QString&,bool);//(filename,onlyChangedMaterials)
97 void loadMaterialsFromFile(const QString&);//filename
98
99 void setLabels(int);
100 void setLabelPosOffsets(const QList<int>&);
101
102protected:
103 class Imp;
105};
106
107#endif
IVP13DSystemSimple(const QString &name, const QString &information, const QString &contact_info)
const QString & name() const
The Athena Transient Store API.
void buildPermanentSceneGraph(StoreGateSvc *detstore, SoSeparator *root)
void loadMaterialsFromFile(const QString &)
void muonChamberT0sChanged(const std::map< GeoPVConstLink, float > &, int)
The map is the dt0 per chamber, plus a label identifier, which by convention (!) is 0=Moore,...
void userPickedNode(SoNode *pickedNode, SoPath *pickedPath)
void setOrientViewToMuonChambersOnClick(bool)
void autoAdaptMuonNSW(bool reset, bool stgc, bool mm, bool passiveSpacer, bool passiveStructure, bool passiveAPlate)
void setZoomToVolumeOnClick(bool)
void emit_appropriateMDTProjectionsChanged()
void enableMuonChamberLabels(bool, bool)
first is t0s, 2nd is hits
VP1GeometrySystem(const VP1GeoFlags::SubSystemFlags &SubSystemsTurnedOn=VP1GeoFlags::None, const QString &name="Geo")
void orientViewToMuonChamber(const GeoPVConstLink &chamberPV)
void resetSubSystems(VP1GeoFlags::SubSystemFlags)
void autoIconifyByVolumeOrMaterialName(bool, const QString &)
void volumeResetRequested(VolumeHandle *)
void plotSpectrum(QStack< QString > &, int copyNumber=-1)
void autoAdaptPixelsOrSCT(bool, bool, bool, bool, bool, bool)
void volumeStateChangeRequested(VolumeHandle *, VP1GeoFlags::VOLSTATE)
void setLabelPosOffsets(const QList< int > &)
void systemcreate(StoreGateSvc *detstore)
void autoExpandByVolumeOrMaterialName(bool, const QString &)
void appropriateMDTProjectionsChanged(int)
void actionOnAllNonStandardVolumes(bool)
void setAutoAdaptMuonChambersToEventData(bool)
void reiconizeToShowSpecificMuonChambers(const std::set< GeoPVConstLink > &)
void saveMaterialsToFile(const QString &, bool)
void buildEventSceneGraph(StoreGateSvc *, SoSeparator *)
void restoreFromState(QByteArray)