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
76
77
78
79
80
81
|
#include "Geometry/GEMGeometry/interface/GEMEtaPartition.h"
#include "Geometry/GEMGeometry/interface/GEMEtaPartitionSpecs.h"
#include "Geometry/CommonTopologies/interface/GEMStripTopology.h"
GEMEtaPartition::GEMEtaPartition(GEMDetId id, const BoundPlane::BoundPlanePointer& bp, GEMEtaPartitionSpecs* rrs)
: GeomDet(bp), id_(id), specs_(rrs) {
setDetId(id);
}
GEMEtaPartition::~GEMEtaPartition() {
delete specs_; //Assume the roll owns it specs (specs are not shared)
}
const Topology& GEMEtaPartition::topology() const { return specs_->topology(); }
const StripTopology& GEMEtaPartition::specificTopology() const { return specs_->specificTopology(); }
const Topology& GEMEtaPartition::padTopology() const { return specs_->padTopology(); }
const StripTopology& GEMEtaPartition::specificPadTopology() const { return specs_->specificPadTopology(); }
const GeomDetType& GEMEtaPartition::type() const { return (*specs_); }
int GEMEtaPartition::nstrips() const { return this->specificTopology().nstrips(); }
LocalPoint GEMEtaPartition::centreOfStrip(int strip) const {
float s = static_cast<float>(strip) + 0.5f;
return this->specificTopology().localPosition(s);
}
LocalPoint GEMEtaPartition::centreOfStrip(float strip) const { return this->specificTopology().localPosition(strip); }
LocalError GEMEtaPartition::localError(float strip, float cluster_size) const {
return this->specificTopology().localError(strip, cluster_size * cluster_size / 12.);
}
float GEMEtaPartition::strip(const LocalPoint& lp) const { return this->specificTopology().strip(lp); }
float GEMEtaPartition::localPitch(const LocalPoint& lp) const { return this->specificTopology().localPitch(lp); }
float GEMEtaPartition::pitch() const { return this->specificTopology().pitch(); }
int GEMEtaPartition::npads() const { return specificPadTopology().nstrips(); }
LocalPoint GEMEtaPartition::centreOfPad(int pad) const {
float p = static_cast<float>(pad) + 0.5f;
return specificPadTopology().localPosition(p);
}
LocalPoint GEMEtaPartition::centreOfPad(float pad) const { return specificPadTopology().localPosition(pad); }
float GEMEtaPartition::pad(const LocalPoint& lp) const { return specificPadTopology().strip(lp); }
float GEMEtaPartition::localPadPitch(const LocalPoint& lp) const { return specificPadTopology().localPitch(lp); }
float GEMEtaPartition::padPitch() const { return specificPadTopology().pitch(); }
float GEMEtaPartition::padOfStrip(int strip) const {
LocalPoint c_o_s = centreOfStrip(strip);
return pad(c_o_s);
}
int GEMEtaPartition::firstStripInPad(int pad) const {
float p = static_cast<float>(pad) - 0.9999f;
LocalPoint lp = specificPadTopology().localPosition(p);
return static_cast<int>(strip(lp));
}
int GEMEtaPartition::lastStripInPad(int pad) const {
float p = static_cast<float>(pad) - 0.0001f;
LocalPoint lp = specificPadTopology().localPosition(p);
return static_cast<int>(strip(lp));
}
GEMSubDetId::Station GEMEtaPartition::subsystem() const { return id_.subsystem(); }
bool GEMEtaPartition::isGE11() const { return id_.isGE11(); }
bool GEMEtaPartition::isGE21() const { return id_.isGE21(); }
bool GEMEtaPartition::isME0() const { return id_.isME0(); }
|