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