37 : index_in_vStubs_(idStub),
44 digitalStub_(std::make_unique<
DigitalStub>(settings, r, phi, z, iPhiSec)),
47 stripPitch_(stripPitch),
48 stripLength_(stripLength),
52 tiltedBarrel_(tiltedBarrel) {}
57 unsigned int index_in_vStubs,
63 : ttStubRef_(ttStubRef),
65 index_in_vStubs_(index_in_vStubs),
68 digitizeWarningsOn_(
true),
69 trackerModule_(trackerModule),
70 degradeBend_(degradeBend),
72 layerId_(trackerModule->layerId()),
73 layerIdReduced_(trackerModule->layerIdReduced()),
74 tiltAngle_(trackerModule->tiltAngle()),
75 stripPitch_(trackerModule->stripPitch()),
76 stripLength_(trackerModule->stripLength()),
77 nStrips_(trackerModule->
nStrips()),
78 psModule_(trackerModule->psModule()),
79 barrel_(trackerModule->
barrel()),
80 tiltedBarrel_(trackerModule->tiltedBarrel()) {
96 for (
unsigned int iClus = 0; iClus <= 1; iClus++) {
113 phiRelToModule *= -1;
115 phiRelToModule *= -1;
126 if ((not
barrel()) && pos.
z() > 0)
138 bend_ = degradedBend;
141 if ((not
barrel()) && pos.
z() > 0)
156 for (
unsigned int iClus = 0; iClus <= 1; iClus++) {
167 const int min_array_bin = 0;
168 const int max_array_bin = nbinsPt - 1;
174 float qOverPtBinSize = (2. * houghMaxInvPt) / houghNbinsPt;
176 qOverPtBinSize = 2. * houghMaxInvPt / (houghNbinsPt - 1);
184 int min_bin = std::floor(-tmp + (qOverPtMin + houghMaxInvPt) / qOverPtBinSize);
185 int max_bin = std::floor(tmp + (qOverPtMax + houghMaxInvPt) / qOverPtBinSize);
188 min_bin =
max(min_bin, min_array_bin);
189 max_bin =
min(max_bin, max_array_bin);
192 if (min_bin > max_bin) {
193 min_bin = max_array_bin;
194 max_bin = min_array_bin;
212 updated = digitalStub_->changePhiSec(iPhiSec);
221 phi_ = digitalStub_->phi_GP();
223 phi_ = digitalStub_->phi_HT_TF();
226 r_ = digitalStub_->r_GP_HT();
228 r_ = digitalStub_->r_SF_TF();
230 z_ = digitalStub_->z();
231 bend_ = digitalStub_->bend();
283 "BadConfig: FE stub bend window sizes provided in cfg ES source are tighter than those to make the stubs. "
317 float dphiOverBendCorrection_approx_ =
approxB();
339 if (translateTP.find(tpPtr) != translateTP.end()) {
355 for (
unsigned int iClus = 0; iClus <= 1; iClus++) {
359 vector<edm::Ptr<TrackingParticle> > vecTpPtr = mcTruthTTClusterHandle->findTrackingParticlePtrs(ttClusterRef);
362 if (translateTP.find(tpPtr) != translateTP.end()) {
372 for (
unsigned int iClus = 0; iClus <= 1; iClus++) {
375 bool genuineCluster = mcTruthTTClusterHandle->isGenuine(ttClusterRef);
379 if (genuineCluster) {
382 if (translateTP.find(tpPtr) != translateTP.end()) {
bool enableDigitize() const
float pitchOverSep() const
Stub(const Settings *settings, unsigned int idStub, double phi, double r, double z, double bend, unsigned int iphi, double alpha, unsigned int layerId, unsigned int iPhiSec, bool psModule, bool barrel, bool tiltedBarrel, float stripPitch, float stripLength, unsigned int nStrips)
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
bool killStub(const TTStub< Ref_Phase2TrackerDigi_ > *stub) const
float bendCutInFrontend() const
unsigned int degradeBendRes() const
unsigned int min_qOverPt_bin_
double bApprox_intercept() const
unsigned int nStrips() const
virtual LocalPoint localPosition(const MeasurementPoint &) const =0
bool tiltedBarrel() const
std::unique_ptr< DigitalStub > digitalStub_
double houghMinPt() const
const Settings * settings_
double maxStubEta() const
unsigned int houghNbinsPt() const
Sin< T >::type sin(const T &t)
Geom::Phi< T > phi() const
unsigned int killScenario() const
bool killLowPtStubs() const
std::array< const TP *, 2 > assocTPofCluster_
tuple nStrips
1.2 is to make the matching window safely the two nearest strips 0.35 is the size of an ME0 chamber i...
const Plane & surface() const
The nominal surface of the GeomDet.
const DegradeBend * degradeBend_
unsigned int numMergedBend_
std::array< float, 2 > localV_cluster_
unsigned int max_qOverPt_bin_
unsigned int shape() const
Cos< T >::type cos(const T &t)
Abs< T >::type abs(const T &t)
void degradeResolution(float bend, float °radedBend, unsigned int &num) const
T const * get() const
Returns C++ pointer to the item.
const DetId & detId() const
Class to store the L1 Track Trigger stubs.
std::set< const TP * > assocTPs_
std::array< bool, 2 > genuineCluster() const
void setFrontend(const StubKiller *stubKiller)
std::array< float, 2 > localU_cluster_
const edm::Ref< edmNew::DetSetVector< TTCluster< T > >, TTCluster< T > > & clusterRef(unsigned int hitStackMember) const
Clusters composing the Stub – see https://twiki.cern.ch/twiki/bin/viewauth/CMS/SLHCTrackerTriggerSWTo...
const float rejectedStubBend_
float qOverPtOverBend() const
void degrade(float bend, bool psModule, const DetId &stDetId, float windowFEnew, float °radedBend, unsigned int &numInGroup) const
float bendInFrontend() const
double bApprox_gradient() const
const PixelTopology * specTopol() const
void fillTruth(const std::map< edm::Ptr< TrackingParticle >, const TP * > &translateTP, const edm::Handle< TTStubAssMap > &mcTruthTTStubHandle, const edm::Handle< TTClusterAssMap > &mcTruthTTClusterHandle)
bool stubMatchStrict() const
float sensorWidth() const
const TrackerModule * trackerModule_
void digitize(unsigned int iPhiSec, DigiStage digiStep)
bool stubFailedDegradeWindow_
bool outerModuleAtSmallerR() const
const PixelGeomDetUnit * specDet() const