85 fill(
"TileRawChanTimeMonExecuteTime", timer);
86 return StatusCode::SUCCESS;
89 unsigned int lumiBlock = eventInfo->
lumiBlock();
92 std::vector<int> drawers[Tile::MAX_ROS - 1];
93 std::vector<int> channels[Tile::MAX_ROS - 1];
94 std::vector<double> channelTimes[Tile::MAX_ROS - 1];
95 std::vector<double> channelUncorrectedTimes[Tile::MAX_ROS - 1];
96 std::vector<double> channelAmplitudes[Tile::MAX_ROS - 1];
107 ATH_CHECK( rawChannelContainer.isValid() );
111 static const int channel2digitizer[48] = {7, 7, 7, 7, 7, 7,
123 if (rawChannelCollection->empty() )
continue;
125 HWIdentifier adc_id = rawChannelCollection->front()->adc_HWID();
129 int partition = ros - 1;
134 adc_id = rawChannel->adc_HWID();
138 if (
m_cabling->isDisconnected(ros, drawer, channel)) {
143 if (!(dqStatus->
isAdcDQgood(ros, drawer, channel, adc))) {
154 if (status.isBad() || status.isBadTiming()) {
159 if (signalState[partition][drawer][channel2digitizer[channel]] !=
SIGNAL_PRESENT) {
160 signalState[partition][drawer][channel2digitizer[channel]] =
SIGNAL_EXPECTED;
168 signalState[partition][drawer][channel2digitizer[channel]] =
SIGNAL_PRESENT;
170 drawers[partition].push_back(drawer);
171 channels[partition].push_back(channel);
172 channelTimes[partition].push_back(rawChannel->time());
173 channelUncorrectedTimes[partition].push_back(rawChannel->uncorrTime());
175 float amplitude = rawChannel->amplitude();
177 channelAmplitudes[partition].push_back(amplitude);
186 float partitionTime[4] = {0};
188 for (
unsigned int partition = 0; partition < Tile::MAX_ROS - 1; ++partition) {
190 double averagePartitionTime = 0.0;
191 std::vector<double>& times = channelTimes[partition];
193 for (
unsigned int channelIdx = 0; channelIdx < channels[partition].size(); ++ channelIdx) {
194 int channel = channels[partition][channelIdx];
196 && (channel < 6 || channel == 12 || channel == 13 || channel == 18 || channel == 19) )
continue;
198 averagePartitionTime += times[channelIdx];
203 averagePartitionTime /= nChannels;
206 std::transform(times.begin(), times.end(), times.begin(),
207 [averagePartitionTime] (
double time) {return time - averagePartitionTime;});
212 for (
unsigned int partition = 0; partition < Tile::MAX_ROS - 1; ++partition) {
213 if (!channelTimes[partition].
empty()) {
228 for (
unsigned int channelIdx = 0; channelIdx < channels[partition].size(); ++ channelIdx) {
229 int drawer = drawers[partition][channelIdx];
230 int digitizer = channel2digitizer[ channels[partition][channelIdx] ];
236 for (
unsigned int drawer = 0; drawer < Tile::MAX_DRAWER; ++drawer) {
237 for (
unsigned int digitizer = 0; digitizer <
s_nDigitizers; ++digitizer) {
250 int partition1 = partitionPair.first;
251 int partition2 = partitionPair.second;
256 fill(
"TileRawChanTimeMonExecuteTime", timer);
258 return StatusCode::SUCCESS;