QwGeant4
QweakSimVDCRotator.hh
Go to the documentation of this file.
1 
2 //=============================================================================
3 //
4 // ---------------------------
5 // | Doxygen File Information |
6 // ---------------------------
7 /**
8 
9  \file QweakSimVDCRotator.hh
10  $Revision: 1.2 $
11  $Date: 2006/05/05 21:18:13 $
12  \author Klaus Hans Grimm
13 
14 */
15 //=============================================================================
16 //
17 //=============================================================================
18 //
19 // ---------------------------
20 // | Doxygen Class Information |
21 // ---------------------------
22 /**
23  \class QweakSimVDCRotator
24 
25  \brief Definition of the Support/Shielding of the Collimators
26 
27  Placeholder for a long explaination
28 
29  */
30 //=============================================================================
31 //
32 //=============================================================================
33 // -----------------------
34 // | CVS File Information |
35 // -----------------------
36 //
37 // Last Update: $Author: grimm $
38 // Update Date: $Date: 2006/05/05 21:18:13 $
39 // CVS/RCS Revision: $Revision: 1.2 $
40 // Status: $State: Exp $
41 //
42 // ===================================
43 // CVS Revision Log at end of file !!
44 // ===================================
45 //
46 //=============================================================================
47 
48 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
49 
50 #ifndef QweakSimVDCRotator_h
51 #define QweakSimVDCRotator_h 1
52 
53 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
54 
55 // system includes
56 #include <vector>
57 
58 // geant4 includes
59 #include "G4Types.hh"
60 #include "G4ThreeVector.hh"
61 #include "G4RotationMatrix.hh"
62 #include <TString.h>
63 
64 // geant4 classes
65 class G4VPhysicalVolume;
66 class G4LogicalVolume;
67 class G4SubtractionSolid;
68 
69 // user classes
70 class QweakSimMaterial;
71 class QweakSimVDC;
73 
74 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
76 {
77 
78 private:
79 
81 
83 
85 
86  G4VPhysicalVolume* theMotherVolume;
87 
88  G4VPhysicalVolume* RotatorMasterContainer_Physical;
89 
90  G4double kRing_RadiusMin;
91  G4double kRing_RadiusMax;
95 
96  // Upstream Ring
97  G4LogicalVolume* UpstreamRing_Logical;
98  G4VPhysicalVolume* UpstreamRing_Physical;
99 
103 
104  // Downstream Ring
105  G4LogicalVolume* DownstreamRing_Logical;
106  G4VPhysicalVolume* DownstreamRing_Physical;
107 
111 
112 
113  // Rails
119 
120  G4ThreeVector Translation_LeftRail;
121  G4ThreeVector Translation_RightRail;
122  G4RotationMatrix* Rotation_Rail;
123 
124  G4LogicalVolume* Rail_Logical;
125  G4VPhysicalVolume* LeftRail_Physical;
126  G4VPhysicalVolume* RightRail_Physical;
127 
128  //-----------------
129  // Rods: Left/Right
130  //-----------------
136 
139 
141 
142  std::vector< G4double > kRod_LR_CenterPositionInX;
143  std::vector< G4double > kRod_LR_CenterPositionInY;
144  std::vector< G4double > kRod_LR_CenterPositionInZ;
145 
146  G4LogicalVolume* Rod_LeftRight_Logical;
147 
148  std::vector< G4VPhysicalVolume* > Rod_LeftRight_Physical;
149 
154 
155  G4RotationMatrix* Rotation_Rod_LR;
156 
157 
158  //-----------------
159  // Slider Support
160  //-----------------
164 
168 
171 
172  G4RotationMatrix* Rotation_SliderSupportLeft;
173  G4RotationMatrix* Rotation_SliderSupportRight;
174 
175  G4LogicalVolume* SliderSupportLeft_Logical;
176  std::vector <G4VPhysicalVolume*> SliderSupportLeft_Physical;
177 
178  G4LogicalVolume* SliderSupportRight_Logical;
179  std::vector <G4VPhysicalVolume*> SliderSupportRight_Physical;
180 
181  // needed for shaping
182  std::vector< G4SubtractionSolid* > SliderSupportSubtraction_TempSolid;
183 
184 
185  public:
186  //!Constructor
187  //QweakSimVDCRotator(QweakSimVDC*);
189 
190  //!Destructor
192 
193  void SetMotherVolume(G4VPhysicalVolume* mv) { theMotherVolume = mv;}
195  void ConstructRings();
196  void ConstructRails();
197  void ConstructMount();
198  void ConstructSliderSupport();
199 
200  void PlacePVSliderSupport(int pkg);
201  void PlacePVRails();
202  void PlacePVMount();
203 
204  void SetRingMaterial(G4String);
205  void SetRotationAngleInPhi(G4double vdc_phiangle);
206 
209 
210 };
211 
212 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
213 
214 #endif
215 
216 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
217 
218 //=======================================================================================
219 // -----------------------
220 // | CVS File Information |
221 // -----------------------
222 //
223 // $Revisions$
224 // $Log: QweakSimVDCRotator.hh,v $
225 // Revision 1.2 2006/05/05 21:18:13 grimm
226 // - The orientation of the rod for Left/Right alignment works now for all Phi angles
227 // - More realistic G0 slider : subtraction of solids for building slider profile
228 //
229 // Revision 1.1 2006/05/02 00:52:33 grimm
230 // Initial Implementation of the VDC Rotator based on the design of Paulo Medeiros.
231 //
232 
233 
G4LogicalVolume * GetUpstreamRing_LogicalVolume()
G4RotationMatrix * Rotation_Rail
void PlacePVSliderSupport(int pkg)
QweakSimMaterial * pMaterial
G4VPhysicalVolume * LeftRail_Physical
G4RotationMatrix * Rotation_SliderSupportLeft
G4RotationMatrix * Rotation_SliderSupportRight
G4LogicalVolume * DownstreamRing_Logical
Region 3 Vertical Drift Chamber.
Definition: QweakSimVDC.hh:67
G4ThreeVector Translation_LeftSliderSupport
G4double kSliderSupport_CenterPositionInX
G4VPhysicalVolume * GetUpstreamRing_PhysicalVolume()
void SetRotationAngleInPhi(G4double vdc_phiangle)
std::vector< G4SubtractionSolid * > SliderSupportSubtraction_TempSolid
G4LogicalVolume * Rail_Logical
G4double kSliderSupport_CenterPositionInY
~QweakSimVDCRotator()
Destructor.
G4double UpstreamRing_CenterZPosition
G4ThreeVector Translation_RodLeftUpstream
Definition of the Support/Shielding of the Collimators.
G4double kSliderSupport_FullLength_Z
void SetMotherVolume(G4VPhysicalVolume *mv)
G4ThreeVector Translation_LeftRail
Definition of elements and materials.
std::vector< G4double > kRod_LR_CenterPositionInX
G4double DownstreamRing_CenterXPosition
G4VPhysicalVolume * theMotherVolume
G4LogicalVolume * Rod_LeftRight_Logical
std::vector< G4VPhysicalVolume * > SliderSupportRight_Physical
std::vector< G4double > kRod_LR_CenterPositionInZ
G4double kSliderSupport_FullLength_X
G4LogicalVolume * SliderSupportRight_Logical
std::vector< G4VPhysicalVolume * > SliderSupportLeft_Physical
G4VPhysicalVolume * RotatorMasterContainer_Physical
G4ThreeVector Translation_RodRightDownstream
G4ThreeVector Translation_RodLeftDownstream
G4double UpstreamRing_CenterXPosition
std::vector< G4double > kRod_LR_CenterPositionInY
Scans the input file for /VDC/xyz commands.
G4VPhysicalVolume * DownstreamRing_Physical
G4LogicalVolume * UpstreamRing_Logical
G4double DownstreamRing_CenterZPosition
G4ThreeVector Translation_RightSliderSupport
G4RotationMatrix * Rotation_Rod_LR
void SetRingMaterial(G4String)
G4VPhysicalVolume * RightRail_Physical
G4double DownstreamRing_CenterYPosition
G4double kSliderSupport_FullLength_Y
std::vector< G4VPhysicalVolume * > Rod_LeftRight_Physical
QweakSimVDCRotator()
Constructor.
G4double kSliderSupport_CenterPositionInZ
G4VPhysicalVolume * UpstreamRing_Physical
G4double UpstreamRing_CenterYPosition
G4LogicalVolume * SliderSupportLeft_Logical
G4ThreeVector Translation_RightRail
G4ThreeVector Translation_RodRightUpstream