186 std::vector<const HitDoublets *> hitDoublets;
188 const int numberOfHitsInNtuplet = 4;
189 std::vector<CACell::CAntuplet> foundQuadruplets;
194 for(
const auto& regionLayerPairs: regionDoublets) {
198 foundQuadruplets.clear();
200 createGraphStructure(layers, g);
203 clearGraphStructure(layers, g);
206 fillGraph(layers, regionLayerPairs, g, hitDoublets);
210 ca.createAndConnectCells(hitDoublets, region,
caThetaCut,
213 ca.evolve(numberOfHitsInNtuplet);
215 ca.findNtuplets(foundQuadruplets, numberOfHitsInNtuplet);
217 auto & allCells = ca.getAllCells();
222 std::array<float, 4> bc_r;
223 std::array<float, 4> bc_z;
224 std::array<float, 4> bc_errZ2;
225 std::array<GlobalPoint, 4> gps;
226 std::array<GlobalError, 4> ges;
227 std::array<bool, 4> barrels;
229 unsigned int numberOfFoundQuadruplets = foundQuadruplets.size();
232 for (
unsigned int quadId = 0; quadId < numberOfFoundQuadruplets; ++quadId)
239 for(
unsigned int i = 0;
i< 3; ++
i)
241 auto const& ahit = allCells[foundQuadruplets[quadId][
i]].getInnerHit();
242 gps[
i] = ahit->globalPosition();
243 ges[
i] = ahit->globalPositionError();
244 barrels[
i] =
isBarrel(ahit->geographicalId().subdetId());
247 auto const& ahit = allCells[foundQuadruplets[quadId][2]].getOuterHit();
248 gps[3] = ahit->globalPosition();
249 ges[3] = ahit->globalPositionError();
250 barrels[3] =
isBarrel(ahit->geographicalId().subdetId());
257 const float abscurv =
std::abs(curvature);
258 const float thisMaxChi2 = maxChi2Eval.value(abscurv);
261 SeedingHitSet tmpTriplet(allCells[foundQuadruplets[quadId][0]].getInnerHit(),
262 allCells[foundQuadruplets[quadId][2]].getInnerHit(),
263 allCells[foundQuadruplets[quadId][2]].getOuterHit());
272 float chi2 = std::numeric_limits<float>::quiet_NaN();
277 const float simpleCot = ( gps.back().z() - gps.front().z() ) / (gps.back().perp() - gps.front().perp() );
279 for (
int i=0;
i < 4; ++
i)
285 bc_z[
i] = point.
z() - region.
origin().
z();
286 bc_errZ2[
i] = (barrels[
i]) ? error.
czz() : error.
rerr(point)*
sqr(simpleCot);
289 chi2 = rzLine.chi2();
293 RZLine rzLine(gps, ges, barrels);
294 chi2 = rzLine.chi2();
309 result[
index].emplace_back(allCells[foundQuadruplets[quadId][0]].getInnerHit(),
310 allCells[foundQuadruplets[quadId][1]].getInnerHit(),
311 allCells[foundQuadruplets[quadId][2]].getInnerHit(),
312 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