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