CMS 3D CMS Logo

DDHGCalHEAlgo.h
Go to the documentation of this file.
1 #ifndef HGCalCommonData_DDHGCalHEAlgo_h
2 #define HGCalCommonData_DDHGCalHEAlgo_h
3 
4 #include <cmath>
5 #include <memory>
6 #include <string>
7 #include <unordered_set>
8 #include <vector>
9 
15 
16 class DDHGCalHEAlgo : public DDAlgorithm {
17  public:
18  // Constructor and Destructor
19  DDHGCalHEAlgo(); // const std::string & name);
20  ~DDHGCalHEAlgo() override;
21 
22  void initialize(const DDNumericArguments& nArgs,
23  const DDVectorArguments& vArgs, const DDMapArguments& mArgs,
24  const DDStringArguments& sArgs,
25  const DDStringVectorArguments& vsArgs) override;
26  void execute(DDCompactView& cpv) override;
27 
28  protected:
29  void constructLayers(const DDLogicalPart&, DDCompactView& cpv);
30  void positionMix(const DDLogicalPart& glog, const std::string& name, int copy,
31  double thick, const DDMaterial& matter, double rin,
32  double rmid, double routF, double zz, DDCompactView& cpv);
33  void positionSensitive(const DDLogicalPart& glog, double rin, double rout,
34  double zpos, int layertype, DDCompactView& cpv);
35 
36  private:
37  std::unique_ptr<HGCalWaferType> waferType_;
38 
39  std::vector<std::string> wafers_; // Wafers
40  std::vector<std::string> materials_; // Materials
41  std::vector<std::string> names_; // Names
42  std::vector<double> thick_; // Thickness of the material
43  std::vector<int> copyNumber_; // Initial copy numbers
44  std::vector<int> layers_; // Number of layers in a section
45  std::vector<double> layerThick_; // Thickness of each section
46  std::vector<double> rMixLayer_; // Partition between Si/Sci part
47  std::vector<int> layerType_; // Type of the layer
48  std::vector<int> layerSense_; // Content of a layer (sensitive?)
49  int firstLayer_; // Copy # of the first sensitive layer
50  int absorbMode_; // Absorber mode
51  std::vector<std::string> materialsTop_; // Materials of top layers
52  std::vector<std::string> namesTop_; // Names of top layers
53  std::vector<double> layerThickTop_; // Thickness of the top sections
54  std::vector<int> layerTypeTop_; // Type of the Top layer
55  std::vector<int> copyNumberTop_; // Initial copy numbers (top section)
56  std::vector<std::string> materialsBot_; // Materials of bottom layers
57  std::vector<std::string> namesBot_; // Names of bottom layers
58  std::vector<double> layerThickBot_; // Thickness of the bottom sections
59  std::vector<int> layerTypeBot_; // Type of the bottom layers
60  std::vector<int> copyNumberBot_; // Initial copy numbers (bot section)
61  std::vector<int> layerSenseBot_; // Content of bottom layer (sensitive?)
62 
63  double zMinBlock_; // Starting z-value of the block
64  std::vector<double> rad100to200_; // Parameters for 120-200mum trans.
65  std::vector<double> rad200to300_; // Parameters for 200-300mum trans.
66  double zMinRadPar_; // Minimum z for radius parametriz.
67  int choiceType_; // Type of parametrization to be used
68  int nCutRadPar_; // Cut off threshold for corners
69  double fracAreaMin_; // Minimum fractional conatined area
70  double waferSize_; // Width of the wafer
71  double waferSepar_; // Sensor separation
72  int sectors_; // Sectors
73  std::vector<double> slopeB_; // Slope at the lower R
74  std::vector<double> zFrontB_; // Starting Z values for the slopes
75  std::vector<double> rMinFront_; // Corresponding rMin's
76  std::vector<double> slopeT_; // Slopes at the larger R
77  std::vector<double> zFrontT_; // Starting Z values for the slopes
78  std::vector<double> rMaxFront_; // Corresponding rMax's
79  std::string nameSpace_; // Namespace of this and ALL sub-parts
80  std::unordered_set<int> copies_; // List of copy #'s
81  double alpha_, cosAlpha_;
82 };
83 
84 #endif
std::vector< double > rMixLayer_
Definition: DDHGCalHEAlgo.h:46
std::vector< int > layerTypeTop_
Definition: DDHGCalHEAlgo.h:54
std::vector< double > layerThickBot_
Definition: DDHGCalHEAlgo.h:58
void positionMix(const DDLogicalPart &glog, const std::string &name, int copy, double thick, const DDMaterial &matter, double rin, double rmid, double routF, double zz, DDCompactView &cpv)
double zMinBlock_
Definition: DDHGCalHEAlgo.h:63
def copy(args, dbName)
std::vector< double > slopeB_
Definition: DDHGCalHEAlgo.h:73
std::vector< std::string > materials_
Definition: DDHGCalHEAlgo.h:40
DDMaterial is used to define and access material information.
Definition: DDMaterial.h:43
std::string nameSpace_
Definition: DDHGCalHEAlgo.h:79
std::vector< double > zFrontB_
Definition: DDHGCalHEAlgo.h:74
void execute(DDCompactView &cpv) override
void initialize(const DDNumericArguments &nArgs, const DDVectorArguments &vArgs, const DDMapArguments &mArgs, const DDStringArguments &sArgs, const DDStringVectorArguments &vsArgs) override
std::vector< double > thick_
Definition: DDHGCalHEAlgo.h:42
std::vector< std::string > namesTop_
Definition: DDHGCalHEAlgo.h:52
Compact representation of the geometrical detector hierarchy.
Definition: DDCompactView.h:80
double zMinRadPar_
Definition: DDHGCalHEAlgo.h:66
~DDHGCalHEAlgo() override
std::unique_ptr< HGCalWaferType > waferType_
Definition: DDHGCalHEAlgo.h:37
std::vector< int > layerSense_
Definition: DDHGCalHEAlgo.h:48
std::vector< int > copyNumberBot_
Definition: DDHGCalHEAlgo.h:60
std::vector< std::string > materialsBot_
Definition: DDHGCalHEAlgo.h:56
std::vector< double > slopeT_
Definition: DDHGCalHEAlgo.h:76
void constructLayers(const DDLogicalPart &, DDCompactView &cpv)
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
Definition: DDLogicalPart.h:93
std::vector< int > layers_
Definition: DDHGCalHEAlgo.h:44
std::vector< double > rMinFront_
Definition: DDHGCalHEAlgo.h:75
std::vector< double > rad100to200_
Definition: DDHGCalHEAlgo.h:64
std::vector< double > zFrontT_
Definition: DDHGCalHEAlgo.h:77
std::vector< double > layerThickTop_
Definition: DDHGCalHEAlgo.h:53
std::unordered_set< int > copies_
Definition: DDHGCalHEAlgo.h:80
std::vector< int > copyNumber_
Definition: DDHGCalHEAlgo.h:43
double waferSepar_
Definition: DDHGCalHEAlgo.h:71
std::vector< int > layerType_
Definition: DDHGCalHEAlgo.h:47
std::vector< std::string > materialsTop_
Definition: DDHGCalHEAlgo.h:51
double cosAlpha_
Definition: DDHGCalHEAlgo.h:81
std::vector< int > copyNumberTop_
Definition: DDHGCalHEAlgo.h:55
void positionSensitive(const DDLogicalPart &glog, double rin, double rout, double zpos, int layertype, DDCompactView &cpv)
std::vector< int > layerSenseBot_
Definition: DDHGCalHEAlgo.h:61
std::vector< std::string > wafers_
Definition: DDHGCalHEAlgo.h:39
double fracAreaMin_
Definition: DDHGCalHEAlgo.h:69
std::vector< std::string > namesBot_
Definition: DDHGCalHEAlgo.h:57
std::vector< double > layerThick_
Definition: DDHGCalHEAlgo.h:45
std::vector< std::string > names_
Definition: DDHGCalHEAlgo.h:41
std::vector< int > layerTypeBot_
Definition: DDHGCalHEAlgo.h:59
std::vector< double > rMaxFront_
Definition: DDHGCalHEAlgo.h:78
double waferSize_
Definition: DDHGCalHEAlgo.h:70
std::vector< double > rad200to300_
Definition: DDHGCalHEAlgo.h:65