19#ifndef BDSMULTILAYERSCREEN_H
20#define BDSMULTILAYERSCREEN_H
26#include "G4RotationMatrix.hh"
27#include "G4TwoVector.hh"
28#include "G4ThreeVector.hh"
47 const G4String& nameIn);
55 G4double grooveWidth = 0,
56 G4double grooveSpatialFrequency = 0);
78 virtual void Place(G4RotationMatrix* rot,
79 const G4ThreeVector& pos,
80 G4LogicalVolume* motherVol);
Three colours that are supplied sequentially.
An accelerator component for diagnostics screens e.g. OTR. Screen inside beam pipe.
void AddScreenLayer(G4double thickness, G4String material, G4String name, G4int isSampler=0, G4double grooveWidth=0, G4double grooveSpatialFrequency=0)
Construct and add a screen layer.
const G4ThreeVector & GetSize() const
Full size of screen in x,y,z.
std::vector< BDSScreenLayer * > screenLayers
Main storage of all layers.
void RoughSurface(G4int layer1, G4int layer2)
Construct a rough surface between two layers.
BDSMultilayerScreen & operator=(const BDSMultilayerScreen &)=delete
Private default constructor to force use of provided one.
BDSMultilayerScreen(const BDSMultilayerScreen &)=delete
Private default constructor to force use of provided one.
void SetPhys(G4PVPlacement *physIn)
Set a physical placement to member variable.
BDSMultilayerScreen()=delete
Private default constructor to force use of provided one.
G4PVPlacement * phys
Geometrical objects:
G4ThreeVector size
Extent.
G4VSolid * solid
Geometrical objects:
void BuildMotherVolume()
Build a container volume.
std::map< G4String, BDSScreenLayer * > screenLayerNames
Map of names for looking up.
std::vector< G4double > screenLayerZPos
Cache of calculated z locations for 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.
BDSScreenLayer * ScreenLayer(G4int layer)
Get a particular screen layer by index.
G4int NLayers() const
Size of the screen.
BDSColourWheel * colourWheel
void Build()
Construct container, compute dimensions then place layers.
G4LogicalVolume * log
Geometrical objects:
G4TwoVector xysize
X,Y size of multilayer screen.
void ReflectiveSurface(G4int layer1, G4int layer2)
Construct a reflective surface between two layers.
G4String name
Name of multilayer screen.
BDSScreenLayer * LastLayer() const
Get the last layer of the screen.
void PlaceLayers()
Place each layer in order in the container volume.
An individual screen layer for a multilayer screen.