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 <string>
5 #include <vector>
9 #include <unordered_set>
10 
11 class DDHGCalEEAlgo : public DDAlgorithm {
12 
13 public:
14  //Constructor and Destructor
15  DDHGCalEEAlgo(); //const std::string & name);
16  ~DDHGCalEEAlgo() override;
17 
18  void initialize(const DDNumericArguments & nArgs,
19  const DDVectorArguments & vArgs,
20  const DDMapArguments & mArgs,
21  const DDStringArguments & sArgs,
22  const DDStringVectorArguments & vsArgs) override;
23  void execute(DDCompactView& cpv) override;
24 
25 protected:
26 
27  void constructLayers (const DDLogicalPart&, DDCompactView& cpv);
28  double rMax(double z);
29  void positionSensitive(const DDLogicalPart& glog, double rin,
30  double rout, int layertype,
31  DDCompactView& cpv);
32 
33 private:
34 
35  std::vector<std::string> wafers_; //Wafers
36  std::vector<std::string> materials_; //Materials
37  std::vector<std::string> names_; //Names
38  std::vector<double> thick_; //Thickness of the material
39  std::vector<int> copyNumber_; //Initial copy numbers
40  std::vector<int> layers_; //Number of layers in a section
41  std::vector<double> layerThick_; //Thickness of each section
42  std::vector<int> layerType_; //Type of the layer
43  std::vector<int> layerSense_; //Content of a layer (sensitive?)
44  int firstLayer_; //Copy # of the first sensitive layer
45  double zMinBlock_; //Starting z-value of the block
46  double rMaxFine_; //Maximum r-value for fine wafer
47  double rMinThick_; //Transition R between 200 & 300 mum
48  double waferSize_; //Width of the wafer
49  double waferSepar_; //Sensor separation
50  int sectors_; //Sectors
51  std::vector<double> slopeB_; //Slope at the lower R
52  std::vector<double> slopeT_; //Slopes at the larger R
53  std::vector<double> zFront_; //Starting Z values for the slopes
54  std::vector<double> rMaxFront_; //Corresponding rMax's
55  std::string nameSpace_; //Namespace of this and ALL sub-parts
56  std::unordered_set<int> copies_; //List of copy #'s
57 };
58 
59 #endif
std::vector< double > slopeB_
Definition: DDHGCalEEAlgo.h:51
void execute(DDCompactView &cpv) override
~DDHGCalEEAlgo() override
std::unordered_set< int > copies_
Definition: DDHGCalEEAlgo.h:56
double rMaxFine_
Definition: DDHGCalEEAlgo.h:46
std::vector< double > thick_
Definition: DDHGCalEEAlgo.h:38
std::vector< double > layerThick_
Definition: DDHGCalEEAlgo.h:41
std::vector< int > copyNumber_
Definition: DDHGCalEEAlgo.h:39
std::vector< std::string > wafers_
Definition: DDHGCalEEAlgo.h:35
std::string nameSpace_
Definition: DDHGCalEEAlgo.h:55
double waferSepar_
Definition: DDHGCalEEAlgo.h:49
type of data representation of DDCompactView
Definition: DDCompactView.h:90
std::vector< double > slopeT_
Definition: DDHGCalEEAlgo.h:52
std::vector< int > layerSense_
Definition: DDHGCalEEAlgo.h:43
double rMax(double z)
std::vector< double > zFront_
Definition: DDHGCalEEAlgo.h:53
double rMinThick_
Definition: DDHGCalEEAlgo.h:47
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
Definition: DDLogicalPart.h:92
void positionSensitive(const DDLogicalPart &glog, double rin, double rout, int layertype, DDCompactView &cpv)
std::vector< int > layerType_
Definition: DDHGCalEEAlgo.h:42
double zMinBlock_
Definition: DDHGCalEEAlgo.h:45
std::vector< int > layers_
Definition: DDHGCalEEAlgo.h:40
std::vector< std::string > names_
Definition: DDHGCalEEAlgo.h:37
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:36
std::vector< double > rMaxFront_
Definition: DDHGCalEEAlgo.h:54
double waferSize_
Definition: DDHGCalEEAlgo.h:48
void constructLayers(const DDLogicalPart &, DDCompactView &cpv)