|
ATLAS Offline Software
|
Go to the documentation of this file.
24 constexpr
float dx = 0.25;
25 constexpr
float dy = 0.05;
26 constexpr
float dz = 9.00;
27 constexpr
float tilt = 14. / 180. *
M_PI;
31 while (!toCluster.empty())
33 const auto *
init = *(toCluster.begin());
34 toCluster.pop_front();
43 const float charge =
h->depositedCharge();
44 const float pixX =
dx *
h->pixelColIDChip();
45 const float pixY =
dy *
h->pixelRowIDChip();
49 sumToT_temp +=
h->timeOverThreshold();
52 const float xPlane = sumX / sumCharge;
53 const float yPlane = sumY / sumCharge;
55 const int stationID =
init->stationID();
56 const int layerID =
init->pixelLayerID();
58 const float x = xPlane;
60 const float z = yPlane *
std::sin(tilt) + dz * layerID;
62 m_clusters.emplace_back(
x,
y,
z, stationID, layerID, sumToT_temp);
70 while (!toTrack.empty())
72 auto init = *(toTrack.begin());
80 std::vector<std::pair<double, double>> XZ;
81 std::vector<std::pair<double, double>> YZ;
83 for (
const auto& cluster : trackCandidate)
87 XZ.emplace_back(cluster.x, cluster.z);
88 YZ.emplace_back(cluster.y, cluster.z);
91 const auto [
x, xSlope] =
linReg(XZ);
92 const auto [
y, ySlope] =
linReg(YZ);
93 const int station = trackCandidate[0].station;
103 for (
const auto& yx : YX)
112 double numerator = 0;
113 double denumerator = 0;
114 for (
const auto& yx : YX)
116 const double dy = yx.first - meany;
117 const double dx = yx.second - meanx;
118 numerator +=
dx *
dy;
119 denumerator +=
dx *
dx;
122 if(denumerator==0.0) denumerator=1
e-6;
123 const double slope = numerator / denumerator;
124 const double position = meany - slope * meanx;
126 return {position, slope};
143 const float dx = lhs.
x - rhs.
x;
144 const float dy = lhs.
y - rhs.
y;
std::vector< T > findAround(T init, std::list< T > &toJoin) const
Finds hits/clusters around given init element.
static constexpr int s_trackSize
Minimum number of clusters in track.
std::pair< double, double > linReg(const std::vector< std::pair< double, double >> &YX) const
Returns parameters of fitted line.
int pixelLayerID() const
Index of the layer of pixels, i.e.
Class representing a hit in silicon detector.
static constexpr float s_clusterDistance
Maximum distance between cluster.
const std::vector< AFPCluster > & clusters() const
Returns vector of clusters.
bool areNeighbours(const xAOD::AFPSiHit *lhs, const xAOD::AFPSiHit *rhs) const
Checks if given hits are neighbours.
std::vector< AFPTrack > m_tracks
Vector of tracks.
int pixelColIDChip() const
Index of the pixel column in chip coordinate system.
void recoClusters()
Performs fast cluster reconstruction.
const xAOD::AFPSiHitContainer * m_hitContainer
Pointer to hit container.
void recoTracks()
Performs fast track reconstruction.
std::vector< AFPCluster > m_clusters
Vector of clusters.
double charge(const T &p)
void reco()
Performs fast reconstruction of clusters and tracks.
def init(v_theApp, v_rootStream=None)
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
int pixelRowIDChip() const
Index of the pixel row in chip coordinate system.
int stationID() const
Index of the station with pixel hit.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.