7 const std::vector<double>& planeShift,
8 const std::vector<double>& zPosition)
9 : fitMethod_(fitMethod), planeShift_(planeShift), zPosition_(zPosition) {
14 float&
x,
float& xQuality,
const int& ipl,
const int& xclus,
const int& width)
const {
19 }
else if (width == 2) {
35 const std::vector<int>& xclus,
36 const std::vector<int>& wclus)
const {
41 clusterPos(x, xQuality, ipl, xclus[0], wclus[0]);
43 xQuality = -10 - nclus;
52 const std::vector<int>& xclus1,
53 const std::vector<int>& wclus1,
56 const std::vector<int>& xclus2,
57 const std::vector<int>& wclus2)
const {
59 fitHodo(x, xQuality, ipl2, nclus2, xclus2, wclus2);
64 fitHodo(x, xQuality, ipl1, nclus1, xclus1, wclus1);
71 float x1, x2, xQ1, xQ2;
74 std::list<BeamTrack>
tracks;
76 for (
int i1 = 0; i1 < nclus1; i1++) {
77 for (
int i2 = 0; i2 < nclus2; i2++) {
78 clusterPos(x1, xQ1, ipl1, xclus1[i1], wclus1[i1]);
79 clusterPos(x2, xQ2, ipl2, xclus2[i2], wclus2[i2]);
83 xq = (xQ1 + xQ2) / 2.0;
92 x = tracks.begin()->x;
93 xSlope = tracks.begin()->xS;
94 xQuality = tracks.begin()->xQ;
100 float xSlope, ySlope = 0.0;
101 float xQuality, yQuality = -100.0;
104 std::vector<int> xclus[4];
105 std::vector<int> wclus[4];
108 int nhits = hodoscopeRawInfo[ipl].numberOfFiredHits();
116 while (hodoscopeRawInfo[ipl][first] == 0)
121 while (last < myGeometry_->getNFibres() && hodoscopeRawInfo[ipl][last]) {
132 }
while (nh > 0 && last < myGeometry_->getNFibres());
133 wclus[ipl].push_back(last - first);
134 xclus[ipl].push_back(first);
171 fitHodo(x, xQuality, 0, nclus[0], xclus[0], wclus[0]);
176 fitHodo(y, yQuality, 1, nclus[1], xclus[1], wclus[1]);
184 fitHodo(x, xQuality, 2, nclus[2], xclus[2], wclus[2]);
189 fitHodo(y, yQuality, 3, nclus[3], xclus[3], wclus[3]);
Class to hold track information.
void fitHodo(float &x, float &xQuality, const int &ipl, const int &nclus, const std::vector< int > &xclus, const std::vector< int > &wclus) const
EcalTBHodoscopeRecInfo reconstruct(const EcalTBHodoscopeRawInfo &hodoscopeRawInfo) const
void fitLine(float &x, float &xSlope, float &xQuality, const int &ipl1, const int &nclus1, const std::vector< int > &xclus1, const std::vector< int > &wclus1, const int &ipl2, const int &nclus2, const std::vector< int > &xclus2, const std::vector< int > &wclus2) const
auto const & tracks
cannot be loose
static float getFibreLp(int plane, int fibre)
EcalTBHodoscopeRecInfoAlgo()
std::vector< double > planeShift_
uint16_t const *__restrict__ x
void clusterPos(float &x, float &xQuality, const int &ipl, const int &xclus, const int &wclus) const
static float getFibreRp(int plane, int fibre)
std::vector< double > zPosition_
EcalTBHodoscopeGeometry * myGeometry_