/
DDAlgo.h
75 lines (52 loc) · 1.88 KB
/
DDAlgo.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#ifndef DDAlgo_h
#define DDAlgo_h
#include <iostream>
#include "DetectorDescription/Core/interface/DDTransform.h"
#include "DetectorDescription/Base/interface/DDAlgoPar.h"
#include "DetectorDescription/Core/interface/DDName.h"
#include "DetectorDescription/Core/interface/DDBase.h"
#include "DetectorDescription/Base/interface/DDTranslation.h"
class DDAlgo;
class AlgoPos;
std::ostream & operator<<(std::ostream &, const DDAlgo &);
class DDAlgo : public DDBase<DDName,AlgoPos*>
{
friend DDAlgo DDalgo(const DDName &, AlgoPos*);
friend std::ostream & operator<<(std::ostream &, const DDAlgo &);
public:
DDAlgo();
DDAlgo(const DDName & name);
/*! sets user defined parameters */
void setParameters(int start, int end, int incr,
const parS_type &, const parE_type &);
/* completenes and consistency check for algorithm parameters */
//bool checkParameters() const;
/*! translation calculations */
DDTranslation translation();
/*! rotation calculations */
DDRotationMatrix rotation();
/*! copy-number calculation */
int copyno() const;
/*! copy-number delivered as std::string */
std::string label() const;
/*! prepare the algorithm for its next iteration or set its state to
'terminate' in case all iterations have already been done */
void next();
/*! continue calling the algorithm unless go() returns false */
bool go() const;
/*! the 'start' parameter */
int start() const;
/*! the 'end' parameter */
int end() const;
/*! the 'incr' parameter */
int incr() const;
/*! std::string valued user parameter */
const parS_type & parS() const;
/*! double valued user parameter, values already evaluated from expressions*/
const parE_type & parE() const;
private:
DDAlgo(const DDName &, AlgoPos*);
};
/*! create a DDCore compatible algorithm */
DDAlgo DDalgo(const DDName &, AlgoPos*);
#endif