CMS 3D CMS Logo

DDTECModuleAlgo.h
Go to the documentation of this file.
1 
2 #ifndef DD_TECModuleAlgo_h
3 #define DD_TECModuleAlgo_h
4 
5 #include <map>
6 #include <string>
7 #include <vector>
10 
11 class DDTECModuleAlgo : public DDAlgorithm {
12  public:
13  //Constructor and Destructor
14  DDTECModuleAlgo();
15  ~DDTECModuleAlgo() override;
16 
17  void initialize(const DDNumericArguments & nArgs,
18  const DDVectorArguments & vArgs,
19  const DDMapArguments & mArgs,
20  const DDStringArguments & sArgs,
21  const DDStringVectorArguments & vsArgs) override;
22 
23  void execute(DDCompactView& cpv) override;
24 
25 private:
26  //this positions toPos in mother
27  void doPos( const DDLogicalPart& toPos, const DDLogicalPart& mother, int copyNr,
28  double x, double y, double z,
29  const std::string& rotName, DDCompactView& cpv);
30  void doPos( DDLogicalPart toPos,
31  double x, double y, double z,
32  std::string rotName, DDCompactView& cpv);
33  //variables:
35  int ringNo;
36  bool isStereo;
37  bool isRing6;
38  double rPos; //Position in R relativ to the center of the TEC ( this is the coord-sys of Tubs)
39  double posCorrectionPhi; // the Phi position of the stereo Modules has to be corrected
40  std::string standardRot; //Rotation that aligns the mother(Tub ) coordinate System with the components
41  std::string idNameSpace; //Namespace of this and ALL parts
42  std::string genMat; //General material name
43  double moduleThick; //Module thickness
44  double detTilt; //Tilt of stereo detector
45  double fullHeight; //Height
46  double dlTop; //Width at top of wafer
47  double dlBottom; //Width at bottom of wafer
48  double dlHybrid; //Width at the hybrid end
49  double frameWidth; //Frame width
50  double frameThick; // thickness
51  double frameOver; // overlap (on sides)
52  std::string topFrameMat; //Top frame material
53  double topFrameHeight; // height
54  double topFrameThick; // thickness
55  double topFrameTopWidth;// Width at the top
56  double topFrameBotWidth;// Width at the bottom
57  double topFrame2Width; // Stereo:2ndPart Width
58  double topFrame2LHeight;// left height
59  double topFrame2RHeight;// right height
60  double topFrameZ; // z-positions
61  std::string sideFrameMat; //Side frame material
62  double sideFrameThick; // thickness
63  double sideFrameLWidth; // Left Width (for stereo modules upper one)
64  double sideFrameLWidthLow;// Width (only for stereo modules: lower Width)
65  double sideFrameLHeight;// Height
66  double sideFrameLtheta;// angle of the trapezoid shift
67  double sideFrameRWidth; // Right Width (for stereo modules upper one)
68  double sideFrameRWidthLow;// Width (only for stereo modules: lower Width)
69  double sideFrameRHeight;// Height
70  double sideFrameRtheta;// angle of the trapezoid shift
71  std::vector<double> siFrSuppBoxWidth;// Supp.Box Width
72  std::vector<double> siFrSuppBoxHeight;// Height
73  std::vector<double> siFrSuppBoxYPos;// y-position of the supplies box (with HV an thermal sensor...)
74  double sideFrameZ; // z-positions
75  double siFrSuppBoxThick;// thickness
77  std::string waferMat; //Wafer material
78  double waferPosition; // position of the wafer (was formaly done by adjusting topFrameHeigt)
79  double sideWidthTop; // widths on the side Top
80  double sideWidthBottom;// Bottom
81  std::string waferRot; // rotation matrix
82  std::string activeMat; //Sensitive material
83  double activeHeight; // height
84  double waferThick; // wafer thickness (active = wafer - backplane)
85  std::string activeRot; // Rotation matrix
86  double activeZ; // z-positions
87  double backplaneThick; // thickness
88  double inactiveDy; //InactiveStrip Hight of ( rings > 3)
89  double inactivePos; // y-Position
90  std::string inactiveMat; // material
91  std::string hybridMat; //Hybrid material
92  double hybridHeight; // height
93  double hybridWidth; // width
94  double hybridThick; // thickness
95  double hybridZ; // z-positions
96  std::string pitchMat; //Pitch adapter material
97  double pitchWidth; // width
98  double pitchHeight; // height
99  double pitchThick; // thickness
100  double pitchZ; // z-positions
101  std::string pitchRot; // rotation matrix
102  std::string bridgeMat; //Bridge material
103  double bridgeWidth; // width
104  double bridgeThick; // thickness
105  double bridgeHeight; // height
106  double bridgeSep; // separation
107  std::vector<double> siReenforceHeight;// SiReenforcement Height
108  std::vector<double> siReenforceWidth;// Width
109  std::vector<double> siReenforceYPos;// Y - Position
110  // double siReenforceZPos;// Z - Position done by the side frames Z Position an t
111  double siReenforceThick;// Thick
113  //double posCorrectionR; // Correct Positions of the Stereo Modules radial coordinate
114 };
115 
116 #endif
std::string waferRot
std::vector< double > siFrSuppBoxHeight
double sideFrameLWidthLow
std::vector< double > siFrSuppBoxWidth
std::string pitchMat
Compact representation of the geometrical detector hierarchy.
Definition: DDCompactView.h:83
void initialize(const DDNumericArguments &nArgs, const DDVectorArguments &vArgs, const DDMapArguments &mArgs, const DDStringArguments &sArgs, const DDStringVectorArguments &vsArgs) override
std::string bridgeMat
std::string activeMat
std::string siReenforceMat
std::string hybridMat
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
Definition: DDLogicalPart.h:92
std::string siFrSuppBoxMat
std::vector< double > siReenforceYPos
std::string pitchRot
~DDTECModuleAlgo() override
void execute(DDCompactView &cpv) override
double sideFrameRWidthLow
std::vector< double > siReenforceWidth
std::string waferMat
std::string idNameSpace
std::vector< double > siFrSuppBoxYPos
void doPos(const DDLogicalPart &toPos, const DDLogicalPart &mother, int copyNr, double x, double y, double z, const std::string &rotName, DDCompactView &cpv)
std::string activeRot
std::string genMat
std::string standardRot
std::vector< double > siReenforceHeight
std::string sideFrameMat
std::string topFrameMat
std::string inactiveMat