|
int | areAlignedRZ (float r1, float z1, float ro, float zo, const float ptmin, const float thetaCut) const |
|
| CACell (const HitDoublets *doublets, int doubletId, const int innerHitId, const int outerHitId) |
|
void | checkAlignmentAndAct (CAColl &allCells, CAntuple &innerCells, const float ptmin, const float region_origin_x, const float region_origin_y, const float region_origin_radius, const CACut::CAValuesByInnerLayerIds &thetaCutByInnerLayer, const CACut::CAValuesByInnerLayerIds &phiCutByInnerLayer, const float hardPtCut, std::vector< CACell::CAntuplet > *foundTriplets) |
|
void | checkAlignmentAndPushTriplet (CAColl &allCells, CAntuple &innerCells, std::vector< CACell::CAntuplet > &foundTriplets, const float ptmin, const float region_origin_x, const float region_origin_y, const float region_origin_radius, const CACut::CAValuesByInnerLayerIds &thetaCutByInnerLayer, const CACut::CAValuesByInnerLayerIds &phiCutByInnerLayer, const float hardPtCut) |
|
void | checkAlignmentAndTag (CAColl &allCells, CAntuple &innerCells, const float ptmin, const float region_origin_x, const float region_origin_y, const float region_origin_radius, const CACut::CAValuesByInnerLayerIds &thetaCutByInnerLayer, const CACut::CAValuesByInnerLayerIds &phiCutByInnerLayer, const float hardPtCut) |
|
void | evolve (unsigned int me, CAStatusColl &allStatus) |
|
void | findNtuplets (CAColl &allCells, std::vector< CAntuplet > &foundNtuplets, CAntuplet &tmpNtuplet, const unsigned int minHitsPerNtuplet) const |
|
Hit const & | getInnerHit () const |
|
int | getInnerLayer () const |
|
float | getInnerPhi () const |
|
float | getInnerR () const |
|
float | getInnerX () const |
|
float | getInnerY () const |
|
float | getInnerZ () const |
|
Hit const & | getOuterHit () const |
|
int | getOuterLayer () const |
|
float | getOuterPhi () const |
|
float | getOuterR () const |
|
float | getOuterX () const |
|
float | getOuterY () const |
|
float | getOuterZ () const |
|
bool | haveSimilarCurvature (const CACell &otherCell, const float ptmin, const float region_origin_x, const float region_origin_y, const float region_origin_radius, const float phiCut, const float hardPtCut) const |
|
void | tagAsOuterNeighbor (unsigned int otherCell) |
|
Definition at line 27 of file CACell.h.
Definition at line 82 of file CACell.h.
References areAlignedRZ(), CACut::CAValuesByInnerLayerIds::at(), getOuterR(), getOuterZ(), gpuPixelDoublets::hardPtCut, haveSimilarCurvature(), mps_fire::i, dqmiolumiharvest::j, heppy_loop::loop, convertSQLiteXML::ok, ptmin, and diffTwoXMLs::r1.
Referenced by checkAlignmentAndPushTriplet(), and checkAlignmentAndTag().
92 int ncells = innerCells.size();
93 int constexpr VSIZE = 16;
97 float thetaCut[VSIZE];
101 unsigned int cellId =
this - &allCells.front();
102 auto loop = [&](
int i,
int vs) {
103 for (
int j = 0;
j < vs; ++
j) {
104 auto koc = innerCells[
i +
j];
105 auto& oc = allCells[koc];
106 r1[
j] = oc.getInnerR();
107 z1[
j] = oc.getInnerZ();
108 thetaCut[
j] = thetaCutByInnerLayer.
at(oc.getInnerLayer());
109 phiCut[
j] = phiCutByInnerLayer.
at(oc.getInnerLayer());
112 for (
int j = 0;
j < vs; ++
j)
114 for (
int j = 0;
j < vs; ++
j) {
115 auto koc = innerCells[
i +
j];
116 auto& oc = allCells[koc];
118 oc,
ptmin, region_origin_x, region_origin_y, region_origin_radius, phiCut[
j],
hardPtCut)) {
122 oc.tagAsOuterNeighbor(cellId);
127 auto lim = VSIZE * (ncells / VSIZE);
128 for (
int i = 0;
i < lim;
i += VSIZE)
130 loop(lim, ncells - lim);
int areAlignedRZ(float r1, float z1, float ro, float zo, const float ptmin, const float thetaCut) const
std::vector< unsigned int > CAntuplet
bool haveSimilarCurvature(const CACell &otherCell, const float ptmin, const float region_origin_x, const float region_origin_y, const float region_origin_radius, const float phiCut, const float hardPtCut) const
float at(int layerId) const
bool CACell::haveSimilarCurvature |
( |
const CACell & |
otherCell, |
|
|
const float |
ptmin, |
|
|
const float |
region_origin_x, |
|
|
const float |
region_origin_y, |
|
|
const float |
region_origin_radius, |
|
|
const float |
phiCut, |
|
|
const float |
hardPtCut |
|
) |
| const |
|
inline |
Definition at line 188 of file CACell.h.
References funct::abs(), hippyaddtobaddatafiles::cd(), MillePedeFileConverter_cfg::e, f, getInnerX(), getInnerY(), getOuterX(), getOuterY(), gpuPixelDoublets::hardPtCut, DisplacedRegionalStep_cff::minRadius, hltrates_dqm_sourceclient-live_cfg::offset, ptmin, CosmicsPD_Skims::radius, mathSSE::sqrt(), testProducerWithPsetDescEmpty_cfi::x1, testProducerWithPsetDescEmpty_cfi::x2, testProducerWithPsetDescEmpty_cfi::y1, and testProducerWithPsetDescEmpty_cfi::y2.
Referenced by checkAlignmentAndAct().
204 float distance_13_squared = (
x1 -
x3) * (
x1 - x3) + (
y1 - y3) * (
y1 - y3);
205 float tan_12_13_half_mul_distance_13_squared =
std::abs(
y1 * (
x2 - x3) +
y2 * (x3 -
x1) + y3 * (
x1 -
x2));
207 if (tan_12_13_half_mul_distance_13_squared *
ptmin <= 1.0
e-4
f * distance_13_squared) {
208 float distance_3_beamspot_squared =
209 (
x3 - region_origin_x) * (x3 - region_origin_x) + (y3 - region_origin_y) * (y3 - region_origin_y);
211 float dot_bs3_13 = ((
x1 -
x3) * (region_origin_x - x3) + (
y1 - y3) * (region_origin_y - y3));
212 float proj_bs3_on_13_squared = dot_bs3_13 * dot_bs3_13 / distance_13_squared;
214 float distance_13_beamspot_squared = distance_3_beamspot_squared - proj_bs3_on_13_squared;
216 return distance_13_beamspot_squared < (region_origin_radius + phiCut) * (region_origin_radius + phiCut);
232 auto idet = 1.f / det;
234 auto x_center = (bc * (
y2 - y3) -
cd * (
y1 -
y2)) * idet;
235 auto y_center = (
cd * (
x1 -
x2) - bc * (
x2 - x3)) * idet;
242 auto centers_distance_squared = (x_center - region_origin_x) * (x_center - region_origin_x) +
243 (y_center - region_origin_y) * (y_center - region_origin_y);
244 auto region_origin_radius_plus_tolerance = region_origin_radius + phiCut;
245 auto minimumOfIntersectionRange =
246 (
radius - region_origin_radius_plus_tolerance) * (
radius - region_origin_radius_plus_tolerance);
248 if (centers_distance_squared >= minimumOfIntersectionRange) {
249 auto maximumOfIntersectionRange =
250 (
radius + region_origin_radius_plus_tolerance) * (
radius + region_origin_radius_plus_tolerance);
251 return centers_distance_squared <= maximumOfIntersectionRange;
Abs< T >::type abs(const T &t)