CMS 3D CMS Logo

DDHGCalEEAlgo.h
Go to the documentation of this file.
1 #ifndef HGCalCommonData_DDHGCalEEAlgo_h
2 #define HGCalCommonData_DDHGCalEEAlgo_h
3 
4 #include <cmath>
5 #include <memory>
6 #include <string>
7 #include <unordered_set>
8 #include <vector>
9 
14 
15 class DDHGCalEEAlgo : public DDAlgorithm {
16 
17 public:
18  //Constructor and Destructor
19  DDHGCalEEAlgo(); //const std::string & name);
20  ~DDHGCalEEAlgo() override;
21 
22  void initialize(const DDNumericArguments & nArgs,
23  const DDVectorArguments & vArgs,
24  const DDMapArguments & mArgs,
25  const DDStringArguments & sArgs,
26  const DDStringVectorArguments & vsArgs) override;
27  void execute(DDCompactView& cpv) override;
28 
29 protected:
30 
31  void constructLayers (const DDLogicalPart&, DDCompactView& cpv);
32  void positionSensitive(const DDLogicalPart& glog, double rin,
33  double rout, double zpos, int layertype,
34  DDCompactView& cpv);
35 
36 private:
37 
38  std::unique_ptr<HGCalWaferType> waferType_;
39 
40  std::vector<std::string> wafers_; //Wafers
41  std::vector<std::string> materials_; //Materials
42  std::vector<std::string> names_; //Names
43  std::vector<double> thick_; //Thickness of the material
44  std::vector<int> copyNumber_; //Initial copy numbers
45  std::vector<int> layers_; //Number of layers in a section
46  std::vector<double> layerThick_; //Thickness of each section
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  double zMinBlock_; //Starting z-value of the block
51  std::vector<double> rad100to200_; //Parameters for 120-200mum trans.
52  std::vector<double> rad200to300_; //Parameters for 200-300mum trans.
53  double zMinRadPar_; //Minimum z for radius parametriz.
54  int choiceType_; //Type of parametrization to be used
55  int nCutRadPar_; //Cut off threshold for corners
56  double fracAreaMin_; //Minimum fractional conatined area
57  double waferSize_; //Width of the wafer
58  double waferSepar_; //Sensor separation
59  int sectors_; //Sectors
60  std::vector<double> slopeB_; //Slope at the lower R
61  std::vector<double> zFrontB_; //Starting Z values for the slopes
62  std::vector<double> rMinFront_; //Corresponding rMin's
63  std::vector<double> slopeT_; //Slopes at the larger R
64  std::vector<double> zFrontT_; //Starting Z values for the slopes
65  std::vector<double> rMaxFront_; //Corresponding rMax's
66  std::string nameSpace_; //Namespace of this and ALL sub-parts
67  std::unordered_set<int> copies_; //List of copy #'s
68 };
69 
70 #endif
std::vector< double > slopeB_
Definition: DDHGCalEEAlgo.h:60
void execute(DDCompactView &cpv) override
~DDHGCalEEAlgo() override
std::unordered_set< int > copies_
Definition: DDHGCalEEAlgo.h:67
std::vector< double > zFrontT_
Definition: DDHGCalEEAlgo.h:64
std::vector< double > thick_
Definition: DDHGCalEEAlgo.h:43
std::vector< double > layerThick_
Definition: DDHGCalEEAlgo.h:46
double fracAreaMin_
Definition: DDHGCalEEAlgo.h:56
std::vector< int > copyNumber_
Definition: DDHGCalEEAlgo.h:44
std::vector< double > zFrontB_
Definition: DDHGCalEEAlgo.h:61
std::vector< std::string > wafers_
Definition: DDHGCalEEAlgo.h:40
std::string nameSpace_
Definition: DDHGCalEEAlgo.h:66
double waferSepar_
Definition: DDHGCalEEAlgo.h:58
Compact representation of the geometrical detector hierarchy.
Definition: DDCompactView.h:80
std::vector< double > slopeT_
Definition: DDHGCalEEAlgo.h:63
std::vector< int > layerSense_
Definition: DDHGCalEEAlgo.h:48
double zMinRadPar_
Definition: DDHGCalEEAlgo.h:53
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
Definition: DDLogicalPart.h:93
std::vector< int > layerType_
Definition: DDHGCalEEAlgo.h:47
std::vector< double > rad100to200_
Definition: DDHGCalEEAlgo.h:51
double zMinBlock_
Definition: DDHGCalEEAlgo.h:50
std::unique_ptr< HGCalWaferType > waferType_
Definition: DDHGCalEEAlgo.h:38
std::vector< int > layers_
Definition: DDHGCalEEAlgo.h:45
std::vector< std::string > names_
Definition: DDHGCalEEAlgo.h:42
std::vector< double > rMinFront_
Definition: DDHGCalEEAlgo.h:62
void positionSensitive(const DDLogicalPart &glog, double rin, double rout, double zpos, int layertype, DDCompactView &cpv)
void initialize(const DDNumericArguments &nArgs, const DDVectorArguments &vArgs, const DDMapArguments &mArgs, const DDStringArguments &sArgs, const DDStringVectorArguments &vsArgs) override
std::vector< std::string > materials_
Definition: DDHGCalEEAlgo.h:41
std::vector< double > rMaxFront_
Definition: DDHGCalEEAlgo.h:65
std::vector< double > rad200to300_
Definition: DDHGCalEEAlgo.h:52
double waferSize_
Definition: DDHGCalEEAlgo.h:57
void constructLayers(const DDLogicalPart &, DDCompactView &cpv)