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
|
#ifndef Geometry_MTDNumberingBuilder_CmsMTDConstruction_H
#define Geometry_MTDNumberingBuilder_CmsMTDConstruction_H
#include <string>
#include <vector>
#include "Geometry/MTDNumberingBuilder/interface/GeometricTimingDet.h"
#include "Geometry/MTDNumberingBuilder/interface/CmsMTDStringToEnum.h"
#include "Geometry/MTDCommonData/interface/BTLNumberingScheme.h"
#include "Geometry/MTDCommonData/interface/ETLNumberingScheme.h"
#include "DataFormats/Math/interface/deltaPhi.h"
namespace {
template <class valType>
inline constexpr valType makempiToppi(valType angle) {
constexpr valType twoPi = 2. * M_PI;
constexpr valType epsilon = 1.e-13;
auto tmpphi = angle0to2pi::make0To2pi(angle);
return (tmpphi - M_PI > epsilon) ? tmpphi - twoPi : tmpphi;
}
} // namespace
/**
* Adds GeometricTimingDets representing final modules to the previous level
*/
template <class FilteredView>
class CmsMTDConstruction {
public:
CmsMTDConstruction();
~CmsMTDConstruction() = default;
static bool mtdOrderZ(const GeometricTimingDet* a, const GeometricTimingDet* b);
static bool mtdOrderRR(const GeometricTimingDet* a, const GeometricTimingDet* b);
static bool mtdOrderPhi(const GeometricTimingDet* a, const GeometricTimingDet* b);
static bool btlOrderPhi(const GeometricTimingDet* a, const GeometricTimingDet* b);
static bool btlOrderZ(const GeometricTimingDet* a, const GeometricTimingDet* b);
void buildBTLModule(FilteredView&, GeometricTimingDet*);
void buildETLModule(FilteredView&, GeometricTimingDet*);
GeometricTimingDet* buildSubdet(FilteredView&);
GeometricTimingDet* buildLayer(FilteredView&);
void baseNumberFromHistory(const DDGeoHistory& gh);
bool isETLpreV8(FilteredView&);
protected:
CmsMTDStringToEnum theCmsMTDStringToEnum;
BTLNumberingScheme btlScheme_;
ETLNumberingScheme etlScheme_;
MTDBaseNumber baseNumber_;
};
#endif // Geometry_MTDNumberingBuilder_CmsMTDConstruction_H
|