188 std::vector<const HitDoublets *> hitDoublets;
190 const int numberOfHitsInNtuplet = 4;
191 std::vector<CACell::CAntuplet> foundQuadruplets;
196 for(
const auto& regionLayerPairs: regionDoublets) {
200 foundQuadruplets.clear();
202 createGraphStructure(layers, g);
205 clearGraphStructure(layers, g);
208 fillGraph(layers, regionLayerPairs, g, hitDoublets);
212 ca.createAndConnectCells(hitDoublets, region,
caThetaCut,
215 ca.evolve(numberOfHitsInNtuplet);
217 ca.findNtuplets(foundQuadruplets, numberOfHitsInNtuplet);
219 auto & allCells = ca.getAllCells();
224 std::array<float, 4> bc_r;
225 std::array<float, 4> bc_z;
226 std::array<float, 4> bc_errZ2;
227 std::array<GlobalPoint, 4> gps;
228 std::array<GlobalError, 4> ges;
229 std::array<bool, 4> barrels;
231 unsigned int numberOfFoundQuadruplets = foundQuadruplets.size();
234 for (
unsigned int quadId = 0; quadId < numberOfFoundQuadruplets; ++quadId)
241 for(
unsigned int i = 0;
i< 3; ++
i)
243 auto const& ahit = allCells[foundQuadruplets[quadId][
i]].getInnerHit();
244 gps[
i] = ahit->globalPosition();
245 ges[
i] = ahit->globalPositionError();
246 barrels[
i] =
isBarrel(ahit->geographicalId().subdetId());
249 auto const& ahit = allCells[foundQuadruplets[quadId][2]].getOuterHit();
250 gps[3] = ahit->globalPosition();
251 ges[3] = ahit->globalPositionError();
252 barrels[3] =
isBarrel(ahit->geographicalId().subdetId());
259 const float abscurv =
std::abs(curvature);
260 const float thisMaxChi2 = maxChi2Eval.value(abscurv);
263 SeedingHitSet tmpTriplet(allCells[foundQuadruplets[quadId][0]].getInnerHit(),
264 allCells[foundQuadruplets[quadId][2]].getInnerHit(),
265 allCells[foundQuadruplets[quadId][2]].getOuterHit());
274 float chi2 = std::numeric_limits<float>::quiet_NaN();
279 const float simpleCot = ( gps.back().z() - gps.front().z() ) / (gps.back().perp() - gps.front().perp() );
281 for (
int i=0;
i < 4; ++
i)
287 bc_z[
i] = point.
z() - region.
origin().
z();
288 bc_errZ2[
i] = (barrels[
i]) ? error.
czz() : error.
rerr(point)*
sqr(simpleCot);
291 chi2 = rzLine.chi2();
295 RZLine rzLine(gps, ges, barrels);
296 chi2 = rzLine.chi2();
311 result[
index].emplace_back(allCells[foundQuadruplets[quadId][0]].getInnerHit(),
312 allCells[foundQuadruplets[quadId][1]].getInnerHit(),
313 allCells[foundQuadruplets[quadId][2]].getInnerHit(),
314 allCells[foundQuadruplets[quadId][2]].getOuterHit());
const bool useBendingCorrection
GlobalPoint const & origin() const
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
T inversePt(T curvature, const edm::EventSetup &iSetup)
T curvature(T InversePt, const edm::EventSetup &iSetup)
Abs< T >::type abs(const T &t)
const float extraHitRPhitolerance
const bool fitFastCircleChi2Cut
const QuantityDependsPt maxChi2
T rerr(const GlobalPoint &aPoint) const
Square< F >::type sqr(const F &f)
QuantityDependsPtEval evaluator(const edm::EventSetup &es) 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