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 <map>
5 #include <string>
6 #include <vector>
9 
10 class DDHGCalEEAlgo : public DDAlgorithm {
11 
12 public:
13  //Constructor and Destructor
14  DDHGCalEEAlgo(); //const std::string & name);
15  ~DDHGCalEEAlgo() override;
16 
17  struct HGCalEEPar {
18  double yh1, bl1, tl1, yh2, bl2, tl2, alp, theta, phi, xpos, ypos, zpos;
19  HGCalEEPar(double yh1v=0, double bl1v=0, double tl1v=0, double yh2v=0,
20  double bl2v=0, double tl2v=0, double alpv=0, double thv=0,
21  double fiv=0, double x=0, double y=0, double z=0) :
22  yh1(yh1v), bl1(bl1v), tl1(tl1v), yh2(yh2v), bl2(bl2v), tl2(tl2v),
23  alp(alpv), theta(thv), phi(fiv), xpos(x), ypos(y), zpos(z) {}
24  };
25  void initialize(const DDNumericArguments & nArgs,
26  const DDVectorArguments & vArgs,
27  const DDMapArguments & mArgs,
28  const DDStringArguments & sArgs,
29  const DDStringVectorArguments & vsArgs) override;
30  void execute(DDCompactView& cpv) override;
31 
32 protected:
33 
34  void constructLayers (const DDLogicalPart&, DDCompactView& cpv);
35  HGCalEEPar parameterLayer(double rinF, double routF, double rinB,
36  double routB, double zi, double zo);
37  double rMax(double z);
38 
39 private:
40 
41  std::vector<std::string> materials; //Materials
42  std::vector<std::string> names; //Names
43  std::string rotstr; //Rotation matrix to place in mother
44  std::vector<int> layerType; //Type of the layer
45  std::vector<int> heightType; //Height to be evaluated from itself
46  std::vector<int> copyNumber; //Copy number offsets for a section
47  std::vector<double> thick; //Thickness of the material
48  std::vector<double> thickBlock; //Thickness of a block of materials
49  double zMinBlock; //Starting z-value of the block
50  int sectors; //Sectors
51  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 idName; //Name of the "parent" volume.
56  std::string idNameSpace; //Namespace of this and ALL sub-parts
57 };
58 
59 #endif
void execute(DDCompactView &cpv) override
std::vector< double > thick
Definition: DDHGCalEEAlgo.h:47
~DDHGCalEEAlgo() override
std::vector< std::string > names
Definition: DDHGCalEEAlgo.h:42
std::vector< std::string > materials
Definition: DDHGCalEEAlgo.h:41
type of data representation of DDCompactView
Definition: DDCompactView.h:90
double rMax(double z)
std::string idNameSpace
Definition: DDHGCalEEAlgo.h:56
double zMinBlock
Definition: DDHGCalEEAlgo.h:49
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
Definition: DDLogicalPart.h:92
std::vector< double > thickBlock
Definition: DDHGCalEEAlgo.h:48
std::vector< int > layerType
Definition: DDHGCalEEAlgo.h:44
std::vector< int > heightType
Definition: DDHGCalEEAlgo.h:45
HGCalEEPar(double yh1v=0, double bl1v=0, double tl1v=0, double yh2v=0, double bl2v=0, double tl2v=0, double alpv=0, double thv=0, double fiv=0, double x=0, double y=0, double z=0)
Definition: DDHGCalEEAlgo.h:19
std::string rotstr
Definition: DDHGCalEEAlgo.h:43
std::vector< double > rMaxFront
Definition: DDHGCalEEAlgo.h:54
void initialize(const DDNumericArguments &nArgs, const DDVectorArguments &vArgs, const DDMapArguments &mArgs, const DDStringArguments &sArgs, const DDStringVectorArguments &vsArgs) override
std::vector< double > slopeT
Definition: DDHGCalEEAlgo.h:52
HGCalEEPar parameterLayer(double rinF, double routF, double rinB, double routB, double zi, double zo)
std::vector< double > zFront
Definition: DDHGCalEEAlgo.h:53
std::string idName
Definition: DDHGCalEEAlgo.h:55
std::vector< int > copyNumber
Definition: DDHGCalEEAlgo.h:46
void constructLayers(const DDLogicalPart &, DDCompactView &cpv)