189 std::vector<const HitDoublets *> hitDoublets;
191 const int numberOfHitsInNtuplet = 4;
192 std::vector<CACell::CAntuplet> foundQuadruplets;
197 for(
const auto& regionLayerPairs: regionDoublets) {
201 foundQuadruplets.clear();
203 createGraphStructure(layers, g);
206 clearGraphStructure(layers, g);
209 fillGraph(layers, regionLayerPairs, g, hitDoublets);
213 ca.createAndConnectCells(hitDoublets, region,
caThetaCut,
216 ca.evolve(numberOfHitsInNtuplet);
218 ca.findNtuplets(foundQuadruplets, numberOfHitsInNtuplet);
220 auto & allCells = ca.getAllCells();
225 std::array<float, 4> bc_r;
226 std::array<float, 4> bc_z;
227 std::array<float, 4> bc_errZ2;
228 std::array<GlobalPoint, 4> gps;
229 std::array<GlobalError, 4> ges;
230 std::array<bool, 4> barrels;
232 unsigned int numberOfFoundQuadruplets = foundQuadruplets.size();
235 for (
unsigned int quadId = 0; quadId < numberOfFoundQuadruplets; ++quadId)
242 for(
unsigned int i = 0;
i< 3; ++
i)
244 auto const& ahit = allCells[foundQuadruplets[quadId][
i]].getInnerHit();
245 gps[
i] = ahit->globalPosition();
246 ges[
i] = ahit->globalPositionError();
247 barrels[
i] =
isBarrel(ahit->geographicalId().subdetId());
250 auto const& ahit = allCells[foundQuadruplets[quadId][2]].getOuterHit();
251 gps[3] = ahit->globalPosition();
252 ges[3] = ahit->globalPositionError();
253 barrels[3] =
isBarrel(ahit->geographicalId().subdetId());
260 const float abscurv =
std::abs(curvature);
261 const float thisMaxChi2 = maxChi2Eval.value(abscurv);
264 SeedingHitSet tmpTriplet(allCells[foundQuadruplets[quadId][0]].getInnerHit(),
265 allCells[foundQuadruplets[quadId][2]].getInnerHit(),
266 allCells[foundQuadruplets[quadId][2]].getOuterHit());
275 float chi2 = std::numeric_limits<float>::quiet_NaN();
280 const float simpleCot = ( gps.back().z() - gps.front().z() ) / (gps.back().perp() - gps.front().perp() );
282 for (
int i=0;
i < 4; ++
i)
288 bc_z[
i] = point.
z() - region.
origin().
z();
289 bc_errZ2[
i] = (barrels[
i]) ? error.
czz() : error.
rerr(point)*
sqr(simpleCot);
292 chi2 = rzLine.chi2();
296 RZLine rzLine(gps, ges, barrels);
297 chi2 = rzLine.chi2();
312 result[
index].emplace_back(allCells[foundQuadruplets[quadId][0]].getInnerHit(),
313 allCells[foundQuadruplets[quadId][1]].getInnerHit(),
314 allCells[foundQuadruplets[quadId][2]].getInnerHit(),
315 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