CMS 3D CMS Logo

DDHGCalTBModuleX.h
Go to the documentation of this file.
1 #ifndef HGCalCommonData_DDHGCalTBModuleX_h
2 #define HGCalCommonData_DDHGCalTBModuleX_h
3 
4 #include <string>
5 #include <unordered_set>
6 #include <vector>
11 
12 class DDHGCalTBModuleX : public DDAlgorithm {
13  public:
14  // Constructor and Destructor
15  DDHGCalTBModuleX(); //
16  ~DDHGCalTBModuleX() override;
17 
18  void initialize(const DDNumericArguments& nArgs,
19  const DDVectorArguments& vArgs, const DDMapArguments& mArgs,
20  const DDStringArguments& sArgs,
21  const DDStringVectorArguments& vsArgs) override;
22  void execute(DDCompactView& cpv) override;
23 
24  protected:
25  void constructBlocks(const DDLogicalPart&, DDCompactView& cpv);
26  void constructLayers(int block, int layerFront, int layerBack, double zFront,
27  double thick, bool ignore, const DDLogicalPart&,
28  DDCompactView&);
29  void positionSensitive(double zpos, int copyIn, int type, double rmax,
30  int ncrMax, bool ignoreCenter, const std::string&,
31  const DDMaterial&, const DDLogicalPart&,
32  DDCompactView& cpv);
33 
34  private:
35  static constexpr double tolerance_ = 0.00001;
36  const double factor_, tan30deg_;
37 
38  std::vector<std::string> wafer_; // Wafers
39  std::vector<std::string> covers_; // Insensitive layers of hexagonal size
40  std::string genMat_; // General material used for blocks
41  std::vector<std::string> materials_; // Material names in each layer
42  std::vector<std::string> names_; // Names of each layer
43  std::vector<double> layerThick_; // Thickness of the material
44  std::vector<int> copyNumber_; // Copy numbers (initiated to 1)
45  std::vector<double> blockThick_; // Thickness of each section
46  int inOut_; // Number of inner+outer parts
47  std::vector<int> layerFrontIn_; // First layer index (inner) in block
48  std::vector<int> layerBackIn_; // Last layer index (inner) in block
49  std::vector<int> layerFrontOut_; // First layer index (outner) in block
50  std::vector<int> layerBackOut_; // Last layer index (outner) in block
51  std::vector<int> layerType_; // Type of the layer
52  std::vector<int> layerSense_; // Content of a layer
53  std::vector<int> maxModule_; // Maximum # of row/column
54  double zMinBlock_; // Starting z-value of the block
55  double rMaxFine_; // Maximum r-value for fine wafer
56  double waferW_; // Width of the wafer
57  double waferGap_; // Gap between 2 wafers
58  double absorbW_; // Width of the absorber
59  double absorbH_; // Height of the absorber
60  double rMax_; // Maximum radial extent
61  double rMaxB_; // Maximum radial extent of a block
62  std::string idName_; // Name of the "parent" volume.
63  std::string idNameSpace_; // Namespace of this and ALL sub-parts
64  std::unordered_set<int> copies_; // List of copy #'s
65 };
66 
67 #endif
type
Definition: HCALResponse.h:21
std::vector< std::string > wafer_
std::vector< int > layerFrontOut_
DDMaterial is used to define and access material information.
Definition: DDMaterial.h:43
void initialize(const DDNumericArguments &nArgs, const DDVectorArguments &vArgs, const DDMapArguments &mArgs, const DDStringArguments &sArgs, const DDStringVectorArguments &vsArgs) override
std::vector< std::string > names_
std::vector< std::string > materials_
std::vector< int > layerFrontIn_
const double factor_
std::unordered_set< int > copies_
std::vector< int > layerBackIn_
void constructLayers(int block, int layerFront, int layerBack, double zFront, double thick, bool ignore, const DDLogicalPart &, DDCompactView &)
Compact representation of the geometrical detector hierarchy.
Definition: DDCompactView.h:80
void constructBlocks(const DDLogicalPart &, DDCompactView &cpv)
const double tan30deg_
std::string idName_
std::vector< double > blockThick_
std::vector< int > layerType_
std::vector< std::string > covers_
std::vector< int > layerSense_
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
Definition: DDLogicalPart.h:93
std::vector< int > copyNumber_
def ignore(seq)
void execute(DDCompactView &cpv) override
static double tolerance_
std::vector< int > layerBackOut_
~DDHGCalTBModuleX() override
void positionSensitive(double zpos, int copyIn, int type, double rmax, int ncrMax, bool ignoreCenter, const std::string &, const DDMaterial &, const DDLogicalPart &, DDCompactView &cpv)
std::string idNameSpace_
std::vector< int > maxModule_
std::string genMat_
std::vector< double > layerThick_
#define constexpr