167 std::vector<const HitDoublets*> hitDoublets;
169 const int numberOfHitsInNtuplet = 4;
170 std::vector<CACell::CAntuplet> foundQuadruplets;
173 for (
const auto& regionLayerPairs : regionDoublets) {
176 foundQuadruplets.clear();
178 createGraphStructure(layers, g);
182 clearGraphStructure(layers, g);
185 fillGraph(layers, regionLayerPairs, g, hitDoublets);
191 ca.evolve(numberOfHitsInNtuplet);
193 ca.findNtuplets(foundQuadruplets, numberOfHitsInNtuplet);
195 auto& allCells = ca.getAllCells();
200 std::array<float, 4> bc_r;
201 std::array<float, 4> bc_z;
202 std::array<float, 4> bc_errZ2;
203 std::array<GlobalPoint, 4> gps;
204 std::array<GlobalError, 4> ges;
205 std::array<bool, 4> barrels;
207 unsigned int numberOfFoundQuadruplets = foundQuadruplets.size();
210 for (
unsigned int quadId = 0; quadId < numberOfFoundQuadruplets; ++quadId) {
212 for (
unsigned int i = 0;
i < 3; ++
i) {
213 auto const& ahit = allCells[foundQuadruplets[quadId][
i]].getInnerHit();
214 gps[
i] = ahit->globalPosition();
215 ges[
i] = ahit->globalPositionError();
216 barrels[
i] =
isBarrel(ahit->geographicalId().subdetId());
219 auto const& ahit = allCells[foundQuadruplets[quadId][2]].getOuterHit();
220 gps[3] = ahit->globalPosition();
221 ges[3] = ahit->globalPositionError();
222 barrels[3] =
isBarrel(ahit->geographicalId().subdetId());
229 const float abscurv =
std::abs(curvature);
230 const float thisMaxChi2 = maxChi2Eval.value(abscurv);
232 SeedingHitSet tmpTriplet(allCells[foundQuadruplets[quadId][0]].getInnerHit(),
233 allCells[foundQuadruplets[quadId][2]].getInnerHit(),
234 allCells[foundQuadruplets[quadId][2]].getOuterHit());
241 float chi2 = std::numeric_limits<float>::quiet_NaN();
245 const float simpleCot = (gps.back().z() - gps.front().z()) / (gps.back().perp() - gps.front().perp());
247 for (
int i = 0;
i < 4; ++
i) {
252 bc_z[
i] = point.
z() - region.
origin().
z();
253 bc_errZ2[
i] = (barrels[
i]) ? error.
czz() : error.
rerr(point) *
sqr(simpleCot);
256 chi2 = rzLine.chi2();
258 RZLine rzLine(gps, ges, barrels);
259 chi2 = rzLine.chi2();
274 result[
index].emplace_back(allCells[foundQuadruplets[quadId][0]].getInnerHit(),
275 allCells[foundQuadruplets[quadId][1]].getInnerHit(),
276 allCells[foundQuadruplets[quadId][2]].getInnerHit(),
277 allCells[foundQuadruplets[quadId][2]].getOuterHit());
const edm::EventSetup & c
void setCutValuesByLayerIds(CAGraph &caLayers)
const bool useBendingCorrection
GlobalPoint const & origin() const
uint16_t *__restrict__ id
constexpr bool isNotFinite(T x)
std::unique_ptr< SeedComparitor > theComparitor
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
QuantityDependsPtEval evaluator(const MagneticField &field) const
T curvature(T InversePt, const MagneticField &field)
Abs< T >::type abs(const T &t)
const float extraHitRPhitolerance
const MagneticField * theField
T inversePt(T curvature, const MagneticField &field)
const bool fitFastCircleChi2Cut
const QuantityDependsPt maxChi2
T rerr(const GlobalPoint &aPoint) const
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point