34 Road temp_all_hits_2PlanePot[4];
39 for (
const auto& it_rh : ds_rh2.data) {
43 localError[0][0] = it_rh.error().xx();
44 localError[0][1] = it_rh.error().xy();
45 localError[0][2] = 0.;
46 localError[1][0] = it_rh.error().xy();
47 localError[1][1] = it_rh.error().yy();
48 localError[1][2] = 0.;
49 localError[2][0] = 0.;
50 localError[2][1] = 0.;
51 localError[2][2] = 0.;
53 edm::LogInfo(
"RPixRoadFinder") <<
"Hits = " << ds_rh2.data.size();
57 theRotationMatrix.GetComponents(theRotationTMatrix(0, 0),
58 theRotationTMatrix(0, 1),
59 theRotationTMatrix(0, 2),
60 theRotationTMatrix(1, 0),
61 theRotationTMatrix(1, 1),
62 theRotationTMatrix(1, 2),
63 theRotationTMatrix(2, 0),
64 theRotationTMatrix(2, 1),
65 theRotationTMatrix(2, 2));
71 if (is2PlanePot[0] ==
true && myid.arm() == 0 && myid.station() == 2) {
72 temp_all_hits_2PlanePot[0].emplace_back(
PointInPlane{globalV, globalError, it_rh, myid});
73 }
else if (is2PlanePot[1] ==
true && myid.arm() == 0 && myid.station() == 0) {
74 temp_all_hits_2PlanePot[1].emplace_back(
PointInPlane{globalV, globalError, it_rh, myid});
75 }
else if (is2PlanePot[2] ==
true && myid.arm() == 1 && myid.station() == 0) {
76 temp_all_hits_2PlanePot[2].emplace_back(
PointInPlane{globalV, globalError, it_rh, myid});
77 }
else if (is2PlanePot[3] ==
true && myid.arm() == 1 && myid.station() == 2) {
78 temp_all_hits_2PlanePot[3].emplace_back(
PointInPlane{globalV, globalError, it_rh, myid});
80 temp_all_hits.emplace_back(
PointInPlane{globalV, globalError, it_rh, myid});
85 Road::iterator it_gh1 = temp_all_hits.begin();
86 Road::iterator it_gh2;
92 while (it_gh1 != temp_all_hits.end() && temp_all_hits.size() >=
minRoadSize_) {
97 const auto currPoint = it_gh1->globalPoint;
100 while (it_gh2 != temp_all_hits.end()) {
101 bool same_pot =
false;
103 if (currDet.
rpId() == tmpGh2Id.
rpId())
105 const auto subtraction = currPoint - it_gh2->globalPoint;
108 temp_road.push_back(*it_gh2);
109 temp_all_hits.erase(it_gh2);
122 for (
unsigned int i = 0;
i < 4;
i++) {
123 if (is2PlanePot[
i]) {
124 Road::iterator it_gh1_bP = temp_all_hits_2PlanePot[
i].begin();
125 Road::iterator it_gh2_bP;
127 while (it_gh1_bP != temp_all_hits_2PlanePot[
i].
end() && temp_all_hits_2PlanePot[
i].
size() >= 2) {
130 it_gh2_bP = it_gh1_bP;
132 const auto currPoint = it_gh1_bP->globalPoint;
134 while (it_gh2_bP != temp_all_hits_2PlanePot[
i].
end()) {
135 const auto subtraction = currPoint - it_gh2_bP->globalPoint;
138 temp_road.push_back(*it_gh2_bP);
139 temp_all_hits_2PlanePot[
i].erase(it_gh2_bP);
145 if (temp_road.size() == 2) {
T getParameter(std::string const &) const
ROOT::Math::SMatrix< double, 3, 3, ROOT::Math::MatRepStd< double, 3, 3 > > AlgebraicMatrix33
unsigned int maxRoadSize_
std::vector< PointInPlane > Road
Vector localToGlobal(const DetGeomDesc *, const Vector &) const
ParameterSet const & parameterSet(StableProvenance const &provenance, ProcessHistory const &history)
DetGeomDesc::Translation Vector
T getUntrackedParameter(std::string const &, T const &) const
const CTPPSGeometry * geometry_
const edm::DetSetVector< CTPPSPixelRecHit > * hitVector_
RPixRoadFinder(const edm::ParameterSet ¶m)
const DetGeomDesc * sensor(unsigned int id) const
returns geometry of a detector performs necessary checks, returns NULL if fails
std::vector< Road > patternVector_
Log< level::Info, false > LogInfo
const RotationMatrix & rotation() const
unsigned int minRoadSize_
void findPattern(bool *is2planepot) override
~RPixRoadFinder() override
ROOT::Math::Rotation3D RotationMatrix