CMS 3D CMS Logo

DDHCalEndcapModuleAlgo.h
Go to the documentation of this file.
1 #ifndef HcalAlgo_DDHCalEndcapModuleAlgo_h
2 #define HcalAlgo_DDHCalEndcapModuleAlgo_h
3 
4 #include <map>
5 #include <string>
6 #include <vector>
9 
10 class DDHCalEndcapModuleAlgo : public DDAlgorithm {
11 
12 public:
13  //Constructor and Destructor
14  DDHCalEndcapModuleAlgo(); //const std::string & name);
15  ~DDHCalEndcapModuleAlgo() override;
16 
17  struct HcalEndcapPar {
18  double yh1, bl1, tl1, yh2, bl2, tl2, alp, theta, phi, xpos, ypos, zpos;
19  HcalEndcapPar(double yh1v=0, double bl1v=0, double tl1v=0, double yh2v=0,
20  double bl2v=0, double tl2v=0, double alpv=0, double thv=0,
21  double fiv=0, double x=0, double y=0, double z=0) :
22  yh1(yh1v), bl1(bl1v), tl1(tl1v), yh2(yh2v), bl2(bl2v), tl2(tl2v),
23  alp(alpv), theta(thv), phi(fiv), xpos(x), ypos(y), zpos(z) {}
24  };
25  void initialize(const DDNumericArguments & nArgs,
26  const DDVectorArguments & vArgs,
27  const DDMapArguments & mArgs,
28  const DDStringArguments & sArgs,
29  const DDStringVectorArguments & vsArgs) override;
30  void execute(DDCompactView& cpv) override;
31 
32 protected:
33 
35  void constructInsideModule (const DDLogicalPart& module, DDCompactView& cpv);
36  HcalEndcapPar parameterLayer0(unsigned int iphi);
37  HcalEndcapPar parameterLayer(unsigned int iphi, double rinF, double routF,
38  double rinB, double routB, double zi,double zo);
39  void constructScintLayer(const DDLogicalPart& detector, double dz,
41  const std::string& nm, int id, DDCompactView& cpv);
42  double getTrim(unsigned int j) const;
43  double getRout(double z) const;
44 
45 private:
46 
47  std::string genMaterial; //General material
48  std::string absorberMat; //Absorber material
49  std::string plasticMat; //Plastic material cover
50  std::string scintMat; //Scintillator material
51  std::string rotstr; //Rotation matrix to place in mother
52  int sectors; //Number of potenital straight edges
53  double zMinBlock; //Minimum z extent of the block
54  double zMaxBlock; //Maximum
55  double z1Beam; //Position of gap end along z-axis
56  double ziDip; //Starting Z of dipped part of body
57  double dzStep; //Width in Z of a layer
58  double moduleThick; //Thickness of a layer (air/absorber)
59  double layerThick; //Thickness of a layer (plastic)
60  double scintThick; //Thickness of scinitllator
61  double rMaxBack; //Maximum R after the dip
62  double rMaxFront; //Maximum R before the dip
63  double slopeBot; //Slope of the bottom edge
64  double slopeTop; //Slope of the top edge
65  double slopeTopF; //Slope of the top front edge
66  double trimLeft; //Trim of the left edge
67  double trimRight; //Trim of the right edge
68  double tolAbs; //Tolerance for absorber
69  int modType; //Type of module
70  int modNumber; //Module number
71  int layerType; //Layer type
72  std::vector<int> layerNumber; //layer numbers
73  std::vector<std::string> phiName; //Name of Phi sections
74  std::vector<std::string> layerName; //Layer Names
75 
76  std::string idName; //Name of the "parent" volume.
77  std::string idNameSpace; //Namespace of this and ALL sub-parts
78  std::string modName; //Module Name
79  int idOffset; // Geant4 ID's... = 4000;
80 };
81 
82 #endif
HcalEndcapPar parameterLayer(unsigned int iphi, double rinF, double routF, double rinB, double routB, double zi, double zo)
void constructInsideModule0(const DDLogicalPart &module, DDCompactView &cpv)
std::vector< int > layerNumber
void initialize(const DDNumericArguments &nArgs, const DDVectorArguments &vArgs, const DDMapArguments &mArgs, const DDStringArguments &sArgs, const DDStringVectorArguments &vsArgs) override
Compact representation of the geometrical detector hierarchy.
Definition: DDCompactView.h:83
HcalEndcapPar parameterLayer0(unsigned int iphi)
std::vector< std::string > phiName
void constructInsideModule(const DDLogicalPart &module, DDCompactView &cpv)
void constructScintLayer(const DDLogicalPart &detector, double dz, DDHCalEndcapModuleAlgo::HcalEndcapPar parm, const std::string &nm, int id, DDCompactView &cpv)
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
Definition: DDLogicalPart.h:92
HcalEndcapPar(double yh1v=0, double bl1v=0, double tl1v=0, double yh2v=0, double bl2v=0, double tl2v=0, double alpv=0, double thv=0, double fiv=0, double x=0, double y=0, double z=0)
std::vector< std::string > layerName
double getTrim(unsigned int j) const
void execute(DDCompactView &cpv) override
double getRout(double z) const
Definition: vlib.h:208