180 std::vector<const HitDoublets *> hitDoublets;
182 std::vector<CACell::CAntuplet> foundTriplets;
185 for(
const auto& regionLayerPairs: regionDoublets) {
189 foundTriplets.clear();
192 createGraphStructure(layers, g);
195 clearGraphStructure(layers, g);
197 fillGraph(layers, regionLayerPairs, g, hitDoublets);
202 auto & allCells = ca.getAllCells();
207 std::array<float, 3> bc_r;
208 std::array<float, 3> bc_z;
209 std::array<float, 3> bc_errZ2;
210 std::array<GlobalPoint, 3> gps;
211 std::array<GlobalError, 3> ges;
212 std::array<bool, 3> barrels;
214 unsigned int numberOfFoundTriplets = foundTriplets.size();
215 for (
unsigned int tripletId = 0; tripletId < numberOfFoundTriplets;
219 OrderedHitTriplet tmpTriplet(allCells[foundTriplets[tripletId][0]].getInnerHit(),
220 allCells[foundTriplets[tripletId][0]].getOuterHit(),
221 allCells[foundTriplets[tripletId][1]].getOuterHit());
227 for (
unsigned int i = 0;
i < 2; ++
i)
229 auto const& ahit = allCells[foundTriplets[tripletId][
i]].getInnerHit();
230 gps[
i] = ahit->globalPosition();
231 ges[
i] = ahit->globalPositionError();
232 barrels[
i] =
isBarrel(ahit->geographicalId().subdetId());
235 auto const& ahit = allCells[foundTriplets[tripletId][1]].getOuterHit();
236 gps[2] = ahit->globalPosition();
237 ges[2] = ahit->globalPositionError();
238 barrels[2] =
isBarrel(ahit->geographicalId().subdetId());
243 const float curvature = predictionRPhi.curvature(
245 const float abscurv =
std::abs(curvature);
246 const float thisMaxChi2 = maxChi2Eval.value(abscurv);
247 float chi2 = std::numeric_limits<float>::quiet_NaN();
253 const float simpleCot = (gps.back().z() - gps.front().z())
254 / (gps.back().perp() - gps.front().perp());
256 for (
int i = 0;
i < 3; ++
i)
265 bc_z[
i] = point.
z() - region.
origin().
z();
269 error.
rerr(point) *
sqr(simpleCot);
272 chi2 = rzLine.chi2();
276 RZLine rzLine(gps, ges, barrels);
277 chi2 = rzLine.chi2();
const QuantityDependsPt maxChi2
GlobalPoint const & origin() const
constexpr bool isNotFinite(T x)
bool isBarrel(GeomDetEnumerators::SubDetector m)
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
const bool useBendingCorrection
T inversePt(T curvature, const edm::EventSetup &iSetup)
QuantityDependsPtEval evaluator(const edm::EventSetup &es) const
T curvature(T InversePt, const edm::EventSetup &iSetup)
Abs< T >::type abs(const T &t)
T rerr(const GlobalPoint &aPoint) const
Square< F >::type sqr(const F &f)
const float extraHitRPhitolerance
std::unique_ptr< SeedComparitor > theComparitor
*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