95 if (not rhsoaHandleHost
or not rhsoaHandleDevice) {
97 if (not rhsoaHandleHost) {
98 out <<
"reference (Host) rechits not found; ";
100 if (not rhsoaHandleDevice) {
101 out <<
"target (Device) rechits not found; ";
103 out <<
"the comparison will not run.";
107 auto const& rhsoaHost = *rhsoaHandleHost;
108 auto const& rhsoaDevice = *rhsoaHandleDevice;
110 auto const& soa2dHost = rhsoaHost.const_view();
111 auto const& soa2dDevice = rhsoaDevice.const_view();
113 uint32_t nHitsHost = soa2dHost.metadata().size();
114 uint32_t nHitsDevice = soa2dDevice.metadata().size();
118 for (uint32_t
i = 0;
i < nHitsHost;
i++) {
121 uint16_t indHost = soa2dHost[
i].detectorIndex();
122 float xLocalHost = soa2dHost[
i].xLocal();
123 float yLocalHost = soa2dHost[
i].yLocal();
124 for (uint32_t
j = 0;
j < nHitsDevice;
j++) {
125 if (soa2dDevice.detectorIndex(
j) == indHost) {
126 float dx = xLocalHost - soa2dDevice[
j].xLocal();
127 float dy = yLocalHost - soa2dDevice[
j].yLocal();
135 DetId id = detIds[indHost];
136 uint32_t chargeHost = soa2dHost[
i].chargeAndStatus().charge;
139 uint32_t chargeDevice = 0;
140 int16_t sizeXDevice = -99;
141 int16_t sizeYDevice = -99;
142 float xLocalDevice = -999.;
143 float yLocalDevice = -999.;
145 chargeDevice = soa2dDevice[matchedHit].chargeAndStatus().charge;
146 sizeXDevice =
std::ceil(
float(
std::abs(soa2dDevice[matchedHit].clusterSizeX()) / 8.));
147 sizeYDevice =
std::ceil(
float(
std::abs(soa2dDevice[matchedHit].clusterSizeY()) / 8.));
148 xLocalDevice = soa2dDevice[matchedHit].xLocal();
149 yLocalDevice = soa2dDevice[matchedHit].yLocal();
151 switch (
id.subdetId()) {
constexpr int32_t ceil(float num)
MonitorElement * hFposYDiff_
static constexpr float micron_
unsigned int pxbLayer(const DetId &id) const
MonitorElement * hBsizeXDiff_
MonitorElement * hFsizeXDiff_
MonitorElement * hBposXDiff_
MonitorElement * hBsizeyL_[4]
MonitorElement * hBposYDiff_
const edm::EDGetTokenT< HitsOnHost > tokenSoAHitsHost_
MonitorElement * hFchargeDiff_
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
unsigned int pxfDisk(const DetId &id) const
Abs< T >::type abs(const T &t)
MonitorElement * hBsizeYDiff_
MonitorElement * hBposxL_[4]
MonitorElement * hBsizexL_[4]
MonitorElement * hFsizeyD_[2][12]
const edm::EDGetTokenT< HitsOnHost > tokenSoAHitsDevice_
static constexpr uint32_t invalidHit_
MonitorElement * hFposXDiff_
MonitorElement * hFposxD_[2][12]
unsigned int pxfSide(const DetId &id) const
MonitorElement * hFsizexD_[2][12]
const TrackerGeometry * tkGeom_
MonitorElement * hFchargeD_[2][12]
MonitorElement * hFsizeYDiff_
MonitorElement * hFposyD_[2][12]
const TrackerTopology * tTopo_
const DetIdContainer & detUnitIds() const override
Returm a vector of all GeomDetUnit DetIds.
MonitorElement * hBposyL_[4]
MonitorElement * hBchargeDiff_
MonitorElement * hBchargeL_[4]