|
BDSIM
BDSIM is a Geant4 extension toolkit for simulation of particle transport in accelerator beamlines.
|
An accelerator component for diagnostics screens e.g. OTR. Screen inside beam pipe. More...
#include <BDSMultilayerScreen.hh>

Public Member Functions | |
| BDSMultilayerScreen (const G4TwoVector &xysizeIn, const G4String &nameIn) | |
| void | AddScreenLayer (G4double thickness, G4String material, G4String name, G4int isSampler=0, G4double grooveWidth=0, G4double grooveSpatialFrequency=0) |
| Construct and add a screen layer. | |
| void | AddScreenLayer (BDSScreenLayer *layer, G4int isSampler=0) |
| Add a premade screen layer - retains ownership of layer. | |
| const G4ThreeVector & | GetSize () const |
| Full size of screen in x,y,z. | |
| BDSScreenLayer * | ScreenLayer (G4int layer) |
| Get a particular screen layer by index. | |
| BDSScreenLayer * | ScreenLayer (const G4String &layerName) |
| Get a particular screen layer by name. | |
| BDSScreenLayer * | LastLayer () const |
| Get the last layer of the screen. | |
| G4int | NLayers () const |
| Size of the screen. | |
| void | SetPhys (G4PVPlacement *physIn) |
| Set a physical placement to member variable. | |
| void | Build () |
| Construct container, compute dimensions then place layers. | |
| virtual void | Place (G4RotationMatrix *rot, const G4ThreeVector &pos, G4LogicalVolume *motherVol) |
| Place the member logical volume 'log' with a given transform in a given mother volume. | |
| void | ReflectiveSurface (G4int layer1, G4int layer2) |
| Construct a reflective surface between two layers. | |
| void | RoughSurface (G4int layer1, G4int layer2) |
| Construct a rough surface between two layers. | |
Private Member Functions | |
| void | ComputeDimensions () |
| void | BuildMotherVolume () |
| Build a container volume. | |
| void | PlaceLayers () |
| Place each layer in order in the container volume. | |
| BDSMultilayerScreen (const BDSMultilayerScreen &)=delete | |
| Private default constructor to force use of provided one. | |
| BDSMultilayerScreen & | operator= (const BDSMultilayerScreen &)=delete |
| Private default constructor to force use of provided one. | |
Private Attributes | |
| G4TwoVector | xysize |
| X,Y size of multilayer screen. | |
| G4String | name |
| Name of multilayer screen. | |
| G4ThreeVector | size |
| Extent. | |
| std::vector< BDSScreenLayer * > | screenLayers |
| Main storage of all layers. | |
| std::map< G4String, BDSScreenLayer * > | screenLayerNames |
| Map of names for looking up. | |
| std::vector< G4double > | screenLayerZPos |
| Cache of calculated z locations for layers. | |
| BDSColourWheel * | colourWheel |
| G4LogicalVolume * | log |
| Geometrical objects: | |
| G4PVPlacement * | phys |
| Geometrical objects: | |
| G4VSolid * | solid |
| Geometrical objects: | |
An accelerator component for diagnostics screens e.g. OTR. Screen inside beam pipe.
Definition at line 43 of file BDSMultilayerScreen.hh.
| BDSMultilayerScreen::BDSMultilayerScreen | ( | const G4TwoVector & | xysizeIn, |
| const G4String & | nameIn | ||
| ) |
Definition at line 37 of file BDSMultilayerScreen.cc.
|
virtual |
Definition at line 51 of file BDSMultilayerScreen.cc.
| void BDSMultilayerScreen::AddScreenLayer | ( | BDSScreenLayer * | layer, |
| G4int | isSampler = 0 |
||
| ) |
Add a premade screen layer - retains ownership of layer.
Definition at line 81 of file BDSMultilayerScreen.cc.
References BDSScreenLayer::AssignSampler(), BDSColourWheel::Colour(), colourWheel, BDSScreenLayer::GetName(), screenLayerNames, screenLayers, and BDSColourWheel::Spin().

| void BDSMultilayerScreen::AddScreenLayer | ( | G4double | thickness, |
| G4String | material, | ||
| G4String | name, | ||
| G4int | isSampler = 0, |
||
| G4double | grooveWidth = 0, |
||
| G4double | grooveSpatialFrequency = 0 |
||
| ) |
Construct and add a screen layer.
Definition at line 58 of file BDSMultilayerScreen.cc.
References AddScreenLayer(), BDSSamplerRegistry::Instance(), BDSSamplerRegistry::NumberOfExistingSamplers(), and xysize.
Referenced by BDSScreen::AddScreenLayer(), and AddScreenLayer().


| void BDSMultilayerScreen::Build | ( | ) |
Construct container, compute dimensions then place layers.
Definition at line 100 of file BDSMultilayerScreen.cc.
References BuildMotherVolume(), ComputeDimensions(), and PlaceLayers().

|
private |
Build a container volume.
Definition at line 200 of file BDSMultilayerScreen.cc.
References BDSMaterials::GetMaterial(), BDSGlobalConstants::Instance(), BDSMaterials::Instance(), log, name, size, and solid.
Referenced by Build().


|
private |
Calculate the extent of the multilayer screen given all the layers.
Definition at line 178 of file BDSMultilayerScreen.cc.
References name, screenLayers, screenLayerZPos, and size.
Referenced by Build().

|
inline |
Full size of screen in x,y,z.
Definition at line 61 of file BDSMultilayerScreen.hh.
References size.
|
inline |
Get the last layer of the screen.
Definition at line 67 of file BDSMultilayerScreen.hh.
References screenLayers.
Referenced by BDSScreen::AddScreenLayer().

|
inline |
|
virtual |
Place the member logical volume 'log' with a given transform in a given mother volume.
Definition at line 107 of file BDSMultilayerScreen.cc.
References log, and SetPhys().

|
private |
Place each layer in order in the container volume.
Definition at line 220 of file BDSMultilayerScreen.cc.
References log, screenLayers, and screenLayerZPos.
Referenced by Build().

| void BDSMultilayerScreen::ReflectiveSurface | ( | G4int | layer1, |
| G4int | layer2 | ||
| ) |
Construct a reflective surface between two layers.
Definition at line 122 of file BDSMultilayerScreen.cc.
References ScreenLayer().

| void BDSMultilayerScreen::RoughSurface | ( | G4int | layer1, |
| G4int | layer2 | ||
| ) |
Construct a rough surface between two layers.
Definition at line 154 of file BDSMultilayerScreen.cc.
References ScreenLayer().

| BDSScreenLayer * BDSMultilayerScreen::ScreenLayer | ( | const G4String & | layerName | ) |
Get a particular screen layer by name.
Definition at line 91 of file BDSMultilayerScreen.cc.
References screenLayerNames.
|
inline |
Get a particular screen layer by index.
Definition at line 63 of file BDSMultilayerScreen.hh.
References screenLayers.
Referenced by ReflectiveSurface(), and RoughSurface().

|
inline |
Set a physical placement to member variable.
Definition at line 72 of file BDSMultilayerScreen.hh.
References phys.
Referenced by Place().

|
private |
Colour wheel that iterately supplies different colours - allows each layer to be clearly visualised.
Definition at line 117 of file BDSMultilayerScreen.hh.
Referenced by AddScreenLayer().
|
private |
Geometrical objects:
Definition at line 107 of file BDSMultilayerScreen.hh.
Referenced by BuildMotherVolume(), Place(), and PlaceLayers().
|
private |
Name of multilayer screen.
Definition at line 103 of file BDSMultilayerScreen.hh.
Referenced by BuildMotherVolume(), and ComputeDimensions().
|
private |
Geometrical objects:
Definition at line 108 of file BDSMultilayerScreen.hh.
Referenced by SetPhys().
|
private |
Map of names for looking up.
Definition at line 112 of file BDSMultilayerScreen.hh.
Referenced by AddScreenLayer(), and ScreenLayer().
|
private |
Main storage of all layers.
Definition at line 111 of file BDSMultilayerScreen.hh.
Referenced by AddScreenLayer(), ComputeDimensions(), LastLayer(), NLayers(), PlaceLayers(), and ScreenLayer().
|
private |
Cache of calculated z locations for layers.
Definition at line 113 of file BDSMultilayerScreen.hh.
Referenced by ComputeDimensions(), and PlaceLayers().
|
private |
Extent.
Definition at line 104 of file BDSMultilayerScreen.hh.
Referenced by BuildMotherVolume(), ComputeDimensions(), and GetSize().
|
private |
Geometrical objects:
Definition at line 109 of file BDSMultilayerScreen.hh.
Referenced by BuildMotherVolume().
|
private |
X,Y size of multilayer screen.
Definition at line 102 of file BDSMultilayerScreen.hh.
Referenced by AddScreenLayer().