diff --git a/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelBuilder.h b/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelBuilder.h index e9986c2c9447152c9c6fe40aa4c3ccb2eb751c31..6e373a574ed891f1dbac9f1cd421c198c5bc4c6a 100644 --- a/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelBuilder.h +++ b/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelBuilder.h @@ -156,7 +156,8 @@ class TileRawChannelBuilder: public AthAlgTool { TileFragHash::TYPE m_rChType; TileRawChannelUnit::UNIT m_rChUnit; unsigned int m_bsflags; - + // parameter to determine which sample to start with + int m_firstSample; // Should energy be calibrated bool m_calibrateEnergy; diff --git a/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelBuilderFitFilter.h b/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelBuilderFitFilter.h index 343cb5e8967fb38cd531a84f50b11292b1c50980..fbfef1a773af298c752e0292208f36a6e1728028 100644 --- a/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelBuilderFitFilter.h +++ b/TileCalorimeter/TileRecUtils/TileRecUtils/TileRawChannelBuilderFitFilter.h @@ -91,7 +91,6 @@ class TileRawChannelBuilderFitFilter: public TileRawChannelBuilder { int m_maxIterate; int m_extraSamplesLeft; int m_extraSamplesRight; - double m_saturatedSample; // defines the saturated sample double m_saturatedSampleError; // which error in terms of RMS is assigned to the saturated sample double m_zeroSampleError; // which error in terms of RMS is assigned to the zero sample (== 0) diff --git a/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilder.cxx b/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilder.cxx index ed64393ac8e2a96369752830f29bca78dff57915..60751862223bd9c907648f2c555bd7f3441cd514 100644 --- a/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilder.cxx +++ b/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilder.cxx @@ -87,6 +87,7 @@ TileRawChannelBuilder::TileRawChannelBuilder(const std::string& type declareProperty("RunType", m_runType = 0); declareProperty("DataPoolSize", m_dataPoollSize = -1); declareProperty("UseDSPCorrection", m_useDSP = true); + declareProperty("FirstSample",m_firstSample = 0); } @@ -115,7 +116,7 @@ StatusCode TileRawChannelBuilder::initialize() { m_rawChannelCnt = nullptr; m_nChL = m_nChH = 0; m_RChSumL = m_RChSumH = 0.0; - + m_evtCounter = -1; // retrieve TileID helpers and TileIfno from det store ATH_CHECK( detStore()->retrieve(m_tileID, "TileID") ); ATH_CHECK( detStore()->retrieve(m_tileHWID, "TileHWID") ); diff --git a/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilderFitFilter.cxx b/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilderFitFilter.cxx index 0e5fa447d16ae72e9ce8a2f46e069d0aa02e09a5..a4b5837a4a43dc3bf5eca20336ada2c7491ff29d 100644 --- a/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilderFitFilter.cxx +++ b/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilderFitFilter.cxx @@ -337,6 +337,8 @@ void TileRawChannelBuilderFitFilter::pulseFit(const TileDigits *digit << " capdaq=" << m_capdaq ); std::vector<float> samples = digit->samples(); + samples.erase(samples.begin(),samples.begin()+m_firstSample); + samples.resize(m_frameLength); double maxsamp = 0.0; double minsamp = m_saturatedSample; diff --git a/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilderOpt2Filter.cxx b/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilderOpt2Filter.cxx index de98ea37203778690a83fca6d461be47e52e7c2f..0126ac85dbbbe64f5d1aa8bd7eb734bf346f3afa 100644 --- a/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilderOpt2Filter.cxx +++ b/TileCalorimeter/TileRecUtils/src/TileRawChannelBuilderOpt2Filter.cxx @@ -201,6 +201,8 @@ TileRawChannel * TileRawChannelBuilderOpt2Filter::rawChannel(const TileDigits* d double time = 0.; double chi2 = 0.; m_digits = digits->samples(); + m_digits.erase(m_digits.begin(),m_digits.begin()+m_firstSample); + m_digits.resize(m_nSamples); const HWIdentifier adcId = digits->adc_HWID(); int gain = m_tileHWID->adc(adcId); @@ -575,7 +577,6 @@ double TileRawChannelBuilderOpt2Filter::compute(int ros, int drawer, int channel amplitude = 0.; time = 0.; float ofcPhase = (float) phase; - unsigned int drawerIdx = TileCalibUtils::getDrawerIdx(ros, drawer); TileOfcWeightsStruct weights; if (m_tileCondToolOfc->getOfcWeights(drawerIdx, channel, gain, ofcPhase, m_of2, weights).isFailure()) @@ -609,7 +610,7 @@ double TileRawChannelBuilderOpt2Filter::compute(int ros, int drawer, int channel ofc2int(digits_size, b, b_int, bscale); calib = ascale + slope_scale; } - + ATH_MSG_VERBOSE( "OptFilterPha=" << phase ); if (m_of2) { @@ -711,7 +712,7 @@ double TileRawChannelBuilderOpt2Filter::compute(int ros, int drawer, int channel } chi2 = 0.0; } - + std::cout << " Hemos calculado chi2" << std::endl; return chi2; } diff --git a/TileCalorimeter/TileSvc/TileByteStream/src/TileROD_Decoder.cxx b/TileCalorimeter/TileSvc/TileByteStream/src/TileROD_Decoder.cxx index 39ca1ec0eb06d14da607a7d892f251475a4b1891..6f2df10fafd10f08c5e5cbb08383778bb3ef3d60 100644 --- a/TileCalorimeter/TileSvc/TileByteStream/src/TileROD_Decoder.cxx +++ b/TileCalorimeter/TileSvc/TileByteStream/src/TileROD_Decoder.cxx @@ -985,6 +985,8 @@ void TileROD_Decoder::unpack_frag6(uint32_t /*version*/, DigitsMetaData_t& digitsMetaData, const uint32_t* p, pDigiVec & pDigits) const { + + int size = *(p) - sizeOverhead; // second word is frag ID (0x100-0x4ff) and frag type @@ -1041,9 +1043,9 @@ void TileROD_Decoder::unpack_frag6(uint32_t /*version*/, const uint32_t* const end_data = data + size; while (data < end_data) { - if ((*data & 0x00FFFF00) == 0x00BABE00) { - unsigned int miniDrawer = *data & 0xFF; - + if ((*data & 0xFFFF0000) == 0xABCD0000) { + unsigned int miniDrawer = *(data+6) & 0xFF; + if ((++data < end_data) && (*data == 0x12345678) && (++data < end_data)) { unsigned int fragSize = *data & 0xFF; @@ -1061,10 +1063,10 @@ void TileROD_Decoder::unpack_frag6(uint32_t /*version*/, // check trailer const uint32_t* trailer = data + paramsSize + 3 + fragSize; // 2 = (BCID + L1ID) - if ((trailer + 3) <= end_data // 3 = (trailer size) + + if ((trailer + 1) <= end_data // 3 = (trailer size) && *trailer == 0x87654321 - && *(++trailer) == 0xBCBCBCDC - && *(++trailer) == (0x00DEAD00 | (miniDrawer) | (miniDrawer << 24))) { + ) { if (paramsSize == 3){ runNumber[miniDrawer] = *(++data); @@ -1088,6 +1090,8 @@ void TileROD_Decoder::unpack_frag6(uint32_t /*version*/, l1id[miniDrawer] = *(++data); + + if (msgLvl(MSG::VERBOSE)) { msg(MSG::VERBOSE) << "FRAG6: Found MD[" << miniDrawer << "] fragment" << ", Run type: " << runType[miniDrawer]