120 static constexpr int usedMSBpitchOverRaddr = 1;
121 static const double baseRlut =
126 static const double basePhi =
128 static const double baseInvR =
134 static constexpr int usedMSBCotLutaddr = 3;
136 static const double baseCot =
dataFormats_->
base(Variable::cot, Process::kfin);
145 const bool tilt =
barrel ? (ps && !stub->psTilt_) :
false;
150 const double sumdz =
track.zT_ + stub->z_;
154 double lengthZ = length;
157 lengthZ = length *
cot;
164 stub->dZ_ = lengthZ + baseZ;
165 stub->dPhi_ = (scat +
digi(lengthR, baseR)) * inv2R + pitchOverR;
166 stub->dPhi_ =
digi(stub->dPhi_, basePhi) + basePhi;
188 const int offset = nodeKF * nMux;
189 deque<Track*> accepted;
191 vector<deque<Track*>> stacks(nMux);
192 vector<deque<Track*>>
inputs(nMux);
193 for (
int channel = 0; channel < nMux; channel++) {
199 !all_of(stacks.begin(), stacks.end(), [](
const deque<Track*>&
tracks) {
return tracks.empty(); })) {
201 for (
int channel = 0; channel < nMux; channel++) {
202 deque<Track*>&
stack = stacks[channel];
208 bool nothingToRoute(
true);
209 for (
int channel = nMux - 1; channel >= 0; channel--) {
212 nothingToRoute =
false;
213 accepted.push_back(
track);
218 accepted.push_back(
nullptr);
224 accepted.erase(
limit, accepted.end());
227 for (
auto it = accepted.end();
it != accepted.begin();)
228 it = (*--
it) ? accepted.begin() : accepted.erase(
it);
230 const int channelTrack = offsetTrack + nodeKF;
233 lostTracks[channelTrack].reserve(lost.size());
235 lostStubs[offsetStub +
layer].reserve(lost.size());
242 acceptedTracks[channelTrack].reserve(accepted.size());
244 accpetedStubs[offsetStub +
layer].reserve(accepted.size());
247 acceptedTracks[channelTrack].emplace_back(
FrameTrack());
252 acceptedTracks[channelTrack].emplace_back(frameTrack(
track));
254 accpetedStubs[offsetStub +
layer].emplace_back(frameStub(
track,
layer));
constexpr int32_t ceil(float num)
std::bitset< TTBV::S_ > Frame
double chosenRofZ() const
Bit vector used by Track Trigger emulators. Mainly used to convert integers into arbitrary (within ma...
std::pair< TTStubRef, Frame > FrameStub
double digi(double val, double base) const
const ChannelAssignment * channelAssignment_
bool equal(const T &first, const T &second)
static std::string const input
std::pair< TTTrackRef, Frame > FrameTrack
double beamWindowZ() const
double tiltUncertaintyR() const
T * pop_front(std::deque< T *> &ts) const
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< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
std::vector< Track > tracks_
Abs< T >::type abs(const T &t)
std::vector< std::vector< Track * > > input_
double tiltApproxSlope() const
int widthAddrBRAM18() const
bool psModule(int dtcId) const
double tbInnerRadius() const
double scattering() const
double tiltApproxIntercept() const
double sectorCot(int eta) const
const trackerTFP::DataFormats * dataFormats_
bool barrel(const TTStubRef &ttStubRef) const
Power< A, B >::type pow(const A &a, const B &b)