|
|
Go to the documentation of this file.
14 : setup_(&
setup), sm_(sm), ttStubRef_(ttStubRef), hybrid_(iConfig.getParameter<
bool>(
"UseHybrid")),
valid_(
true) {
36 d_ = sm->
r() + y * sm->
sin();
46 const double phi0 = sm->
phi() + atan2(x0,
d_);
47 const double phi1 = sm->
phi() + atan2(
x1,
d_);
48 const double c = (phi0 + phi1) / 2.;
49 const double m = (phi1 - phi0) /
setup.dtcNumMergedRows();
62 const double zT =
setup.chosenRofZ() *
z_ /
r_;
64 const double dZT =
setup.beamWindowZ() *
abs(1. -
setup.chosenRofZ() /
r_);
65 double zTMin = zT - dZT;
66 double zTMax = zT + dZT;
67 if (zTMin >=
setup.maxZT() || zTMax < -
setup.maxZT())
79 static const double chosenRofPhi =
hybrid_ ?
setup.hybridChosenRofPhi() :
setup.chosenRofPhi();
87 const double qOverPt =
bend_ *
setup.baseBend() * qOverPtOverBend;
89 const double dQoverPt =
setup.bendCut() * qOverPtOverBend;
91 const double maxQoverPt =
setup.invPtToDphi() /
minPt -
setup.dtcBaseQoverPt() / 2.;
92 double qOverPtMin =
digi(qOverPt - dQoverPt,
setup.dtcBaseQoverPt());
93 double qOverPtMax =
digi(qOverPt + dQoverPt,
setup.dtcBaseQoverPt());
94 if (qOverPtMin >= maxQoverPt || qOverPtMax < -maxQoverPt)
98 qOverPtMin =
max(qOverPtMin, -maxQoverPt);
99 qOverPtMax =
min(qOverPtMax, maxQoverPt);
102 qOverPt_ = {qOverPtMin, qOverPtMax};
113 if (
phiT_.first < 0.)
115 if (
phiT_.second >= 0.)
134 const auto pos =
find(encodingBend.begin(), encodingBend.end(),
abs(
bend_));
135 const int uBend =
distance(encodingBend.begin(),
pos);
161 const TTBV hwValid(1, 1);
163 return TTDTC::BV(hwGap.str() + hwR.str() + hwZ.str() + hwPhi.str() + hwAlpha.str() + hwBend.str() + hwLayer.str() +
174 else if (layerM == 2)
176 else if (layerM == 6 || layerM == 11)
178 else if (layerM == 5 || layerM == 12)
180 else if (layerM == 4 || layerM == 13)
182 else if (layerM == 14)
184 else if (layerM == 3 || layerM == 15)
188 if (
phiT_.first < 0.) {
196 if (
phiT_.second >= 0.) {
208 setcorEta.first =
bin;
211 for (
int bin = setcorEta.first; bin < setup_->numSectorsEta();
bin++)
213 setcorEta.second =
bin;
219 const TTBV hwValid(1, 1);
233 return TTDTC::BV(hwGap.str() + hwValid.
str() + hwR.str() + hwPhi.str() + hwZ.str() + hwQoverPtMin.str() +
234 hwQoverPtMax.str() + hwSectorEtaMin.str() + hwSectorEtaMax.str() + hwSectorPhis.str() +
double hybridBasePhi(SensorModule::Type type) const
TTDTC::BV frame(int region) const
int htWidthQoverPt() const
TTDTC::BV formatHybrid(int region) const
int hybridNumUnusedBits(SensorModule::Type type) const
void swap(Association< C > &lhs, Association< C > &rhs)
int numOverlappingRegions() const
std::bitset< TTBV::S > BV
int numSectorsEta() const
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Class to process and provide run-time constants used by Track Trigger emulators.
double boundarieEta(int eta) const
int encodedLayerId() const
static const uint16_t valid_
std::pair< double, double > cot_
double hybridBaseR(SensorModule::Type type) const
int numSectorsPhi() const
TTDTC::BV formatTMTT(int region) const
int hybridWidthR(SensorModule::Type type) const
std::pair< double, double > qOverPt_
int hybridWidthAlpha(SensorModule::Type type) const
int widthSectorEta() const
constexpr std::array< uint8_t, layerIndexSize > layer
int hybridWidthBend(SensorModule::Type type) const
double baseRegion() const
Bit vector used by Track Trigger emulators. Mainly used to convert integers into arbitrary (within ma...
double digi(double value, double precision) const
double baseSector() const
double hybridBaseZ(SensorModule::Type type) const
int hybridWidthLayer() const
std::pair< double, double > phiT_
bool inRegion(int region) const
std::vector< int > regions_
double htBaseQoverPt() const
int hybridWidthZ(SensorModule::Type type) const
double hybridBaseAlpha(SensorModule::Type type) const
Power< A, B >::type pow(const A &a, const B &b)
Abs< T >::type abs(const T &t)
int hybridWidthPhi(SensorModule::Type type) const
TTStubRef ttStubRef() const
int dtcNumUnusedBits() const