Skip to content

Commit 8414c82

Browse files
afursflptestfit
andauthored
FT0 calib&reco update (#10480)
* FIT: new reconstruction filtering * FIT calibration: temporary hotfix for output subspec definition * FIT reconstruction: some cosmetics and bugfix * FIT calibration: new feature for debugging - extraInfo option, applied only for FT0 time spectra calibration * FIT calibration: minor fixes FIT reco: new calib object added FIT calib&reco: new features and fixes * FT0 reco: cosmetics * FIT calib: hotfix for extra option for debugging mode * Update CollisionTimeRecoTask.cxx * Update FT0TimeOffsetSlotContainer.cxx Co-authored-by: flptestfit <flp@flptestfit.cern.ch>
1 parent 1cff141 commit 8414c82

23 files changed

Lines changed: 264 additions & 129 deletions

DataFormats/Detectors/FIT/FT0/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ o2_add_library(DataFormatsFT0
1313
SOURCES src/ChannelData.cxx
1414
src/Digit.cxx
1515
src/DigitFilterParam.cxx
16+
src/CalibParam.cxx
1617
src/RecPoints.cxx
1718
src/RawEventData.cxx
1819
src/CTF.cxx
@@ -28,6 +29,7 @@ o2_target_root_dictionary(DataFormatsFT0
2829
HEADERS include/DataFormatsFT0/ChannelData.h
2930
include/DataFormatsFT0/Digit.h
3031
include/DataFormatsFT0/DigitFilterParam.h
32+
include/DataFormatsFT0/CalibParam.h
3133
include/DataFormatsFT0/MCLabel.h
3234
include/DataFormatsFT0/HitType.h
3335
include/DataFormatsFT0/RecPoints.h

Detectors/FIT/FT0/calibration/include/FT0Calibration/CalibParam.h renamed to DataFormats/Detectors/FIT/FT0/include/DataFormatsFT0/CalibParam.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,18 @@ struct CalibParam : o2::conf::ConfigurableParamHelper<CalibParam> {
2727
// Logic for obtaining bad channels and for making decision concerning slot finalization
2828
std::size_t mMinEntriesThreshold = 500; // Min number of entries
2929
std::size_t mMaxEntriesThreshold = 1000; // Max number of entries
30-
uint8_t mNExtraSlots = 1; // Number of extra slots
30+
uint8_t mNExtraSlots = 0; // Number of extra slots
3131
// Fitting ranges
3232
double mMinFitRange = -200.; // Min fit range
3333
double mMaxFitRange = 200.; // Max fit range
3434
// Conditions for checking fit quality, otherwise hist mean will be taken as offset
35-
double mMaxDiffMean = 20; // Max differnce between mean and fit result
35+
double mMaxDiffMean = 5; // Max differnce between mean and fit result
3636
double mMinRMS = 3; // Min RMS
37-
double mMaxSigma = 30; // Max fit sigma
37+
double mMaxSigma = 32; // Max fit sigma
3838
int mRebinFactorPerChID[Nchannels] = {0}; //[Nchannels]
3939
//
40-
bool mUseDynamicRange = false; // use dynamic ranges [mean-RMS*mRangeInRMS,mean+RMS*mRangeInRMS] for fitting
41-
double mRangeInRMS = 3; // Range for RMS in dynamic case
40+
bool mUseDynamicRange = true; // use dynamic ranges [mean-RMS*mRangeInRMS,mean+RMS*mRangeInRMS] for fitting
41+
double mRangeInRMS = 1.5; // Range for RMS in dynamic case
4242

4343
O2ParamDef(CalibParam, "FT0CalibParam");
4444
};

DataFormats/Detectors/FIT/FT0/include/DataFormatsFT0/DigitFilterParam.h

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,5 +33,70 @@ struct DigitFilterParam : o2::conf::ConfigurableParamHelper<DigitFilterParam> {
3333

3434
O2ParamDef(DigitFilterParam, "FT0DigitFilterParam");
3535
};
36+
37+
struct ChannelFilterParam : o2::conf::ConfigurableParamHelper<ChannelFilterParam> {
38+
int16_t mAmpUpper = 4200;
39+
int16_t mAmpLower = -4200;
40+
int16_t mTimeUpper = 2050;
41+
int16_t mTimeLower = -2050;
42+
43+
uint8_t mPMbitsGood = (1 << ChannelData::EEventDataBit::kIsCFDinADCgate); // use only in ADC gate amplitudes, for physics
44+
uint8_t mPMbitsBad = 0; // no checking for bad bits
45+
uint8_t mPMbitsToCheck = mPMbitsGood | mPMbitsBad;
46+
47+
uint8_t mTrgBitsGood = (1 << Triggers::bitDataIsValid); // only good data
48+
uint8_t mTrgBitsBad = 0; // Laser haven't been used in 2022, no check for bad bits
49+
uint8_t mTrgBitsToCheck = mTrgBitsGood | mTrgBitsBad;
50+
bool checkPMbits(uint8_t pmBits) const
51+
{
52+
return (pmBits & mPMbitsToCheck) == mPMbitsGood;
53+
}
54+
bool checkTCMbits(uint8_t tcmBits) const
55+
{
56+
return (tcmBits & mTrgBitsToCheck) == mTrgBitsGood;
57+
}
58+
bool checkTimeWindow(int16_t time) const
59+
{
60+
return time >= mTimeLower && time <= mTimeUpper;
61+
}
62+
bool checkAmpWindow(int16_t amp) const
63+
{
64+
return amp >= mAmpLower && amp <= mAmpUpper;
65+
}
66+
bool checkAll(const o2::ft0::ChannelData& channelData) const
67+
{
68+
return checkPMbits(channelData.ChainQTC) && checkAmpWindow(channelData.QTCAmpl) && checkTimeWindow(channelData.CFDTime);
69+
}
70+
O2ParamDef(ChannelFilterParam, "FT0ChannelFilterParam");
71+
};
72+
73+
struct TimeFilterParam : o2::conf::ConfigurableParamHelper<TimeFilterParam> {
74+
int16_t mAmpUpper = 4200;
75+
int16_t mAmpLower = -4200;
76+
int16_t mTimeUpper = 2050;
77+
int16_t mTimeLower = -2050;
78+
79+
uint8_t mPMbitsGood = 0; // No need in checking good PM bits
80+
uint8_t mPMbitsBad = (1 << ChannelData::EEventDataBit::kIsTimeInfoNOTvalid) | (1 << ChannelData::EEventDataBit::kIsTimeInfoLost); // Check only two bad PM bits
81+
uint8_t mPMbitsToCheck = mPMbitsGood | mPMbitsBad;
82+
bool checkPMbits(uint8_t pmBits) const
83+
{
84+
return (pmBits & mPMbitsToCheck) == mPMbitsGood;
85+
}
86+
bool checkTimeWindow(int16_t time) const
87+
{
88+
return time >= mTimeLower && time <= mTimeUpper;
89+
}
90+
bool checkAmpWindow(int16_t amp) const
91+
{
92+
return amp >= mAmpLower && amp <= mAmpUpper;
93+
}
94+
bool checkAll(const o2::ft0::ChannelData& channelData) const
95+
{
96+
return checkPMbits(channelData.ChainQTC) && checkAmpWindow(channelData.QTCAmpl) && checkTimeWindow(channelData.CFDTime);
97+
}
98+
O2ParamDef(TimeFilterParam, "FT0TimeFilterParam");
99+
};
100+
36101
} // namespace o2::ft0
37102
#endif

Detectors/FIT/FT0/calibration/src/CalibParam.cxx renamed to DataFormats/Detectors/FIT/FT0/src/CalibParam.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
// granted to it by virtue of its status as an Intergovernmental Organization
1010
// or submit itself to any jurisdiction.
1111

12-
#include "FT0Calibration/CalibParam.h"
12+
#include "DataFormatsFT0/CalibParam.h"
1313

1414
using namespace o2::ft0;
1515
O2ParamImpl(CalibParam);

DataFormats/Detectors/FIT/FT0/src/DataFormatsFT0LinkDef.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717

1818
#pragma link C++ class o2::ft0::Digit + ;
1919
#pragma link C++ class o2::ft0::DigitFilterParam + ;
20+
#pragma link C++ class o2::ft0::ChannelFilterParam + ;
21+
#pragma link C++ class o2::ft0::TimeFilterParam + ;
22+
#pragma link C++ class o2::ft0::CalibParam + ;
2023
#pragma link C++ class o2::ft0::ChannelData + ;
2124
#pragma link C++ class o2::ft0::DetTrigInput + ;
2225
#pragma link C++ class o2::ft0::TriggersExt + ;

DataFormats/Detectors/FIT/FT0/src/DigitFilterParam.cxx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,6 @@
1212
#include "DataFormatsFT0/DigitFilterParam.h"
1313

1414
using namespace o2::ft0;
15-
O2ParamImpl(DigitFilterParam);
15+
O2ParamImpl(DigitFilterParam);
16+
O2ParamImpl(ChannelFilterParam);
17+
O2ParamImpl(TimeFilterParam);

Detectors/FIT/FT0/calibration/CMakeLists.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111

1212
o2_add_library(FT0Calibration
1313
SOURCES
14-
src/CalibParam.cxx
1514
src/FT0TimeOffsetSlotContainer.cxx
1615
src/GlobalOffsetsContainer.cxx
1716
src/FT0CalibTimeSlewing.cxx
@@ -28,7 +27,6 @@ o2_add_library(FT0Calibration
2827
)
2928
o2_target_root_dictionary(FT0Calibration
3029
HEADERS
31-
include/FT0Calibration/CalibParam.h
3230
include/FT0Calibration/FT0TimeOffsetSlotContainer.h
3331
include/FT0Calibration/GlobalOffsetsContainer.h
3432
include/FT0Calibration/FT0CalibTimeSlewing.h

Detectors/FIT/FT0/calibration/include/FT0Calibration/FT0TimeOffsetSlotContainer.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
#include "CommonDataFormat/FlatHisto2D.h"
1919
#include "DataFormatsFT0/SpectraInfoObject.h"
2020

21+
#include "TList.h"
22+
2123
#include "Rtypes.h"
2224
namespace o2::ft0
2325
{
@@ -34,10 +36,10 @@ class FT0TimeOffsetSlotContainer final
3436
FT0TimeOffsetSlotContainer& operator=(FT0TimeOffsetSlotContainer&&) = default;
3537
bool hasEnoughEntries() const;
3638
void fill(const gsl::span<const float>& data);
37-
SpectraInfoObject getSpectraInfoObject(std::size_t channelID) const;
39+
SpectraInfoObject getSpectraInfoObject(std::size_t channelID, TList* listHists) const;
3840
void merge(FT0TimeOffsetSlotContainer* prev);
3941
void print() const;
40-
TimeSpectraInfoObject generateCalibrationObject() const;
42+
TimeSpectraInfoObject generateCalibrationObject(long tsStartMS, long tsEndMS, const std::string& pathToHists) const;
4143
typedef float FlatHistoValue_t;
4244
typedef o2::dataformats::FlatHisto2D<FlatHistoValue_t> FlatHisto2D_t;
4345

Detectors/FIT/FT0/calibration/include/FT0Calibration/GlobalOffsetsContainer.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class GlobalOffsetsContainer final
3838
int getMeanGaussianFitValue() const;
3939
void merge(GlobalOffsetsContainer* prev);
4040
void print() const;
41-
GlobalOffsetsCalibrationObject generateCalibrationObject() const;
41+
GlobalOffsetsCalibrationObject generateCalibrationObject(long, long, const std::string&) const;
4242
void updateFirstCreation(std::uint64_t creation)
4343
{
4444
if (creation < mFirstCreation) {

Detectors/FIT/FT0/calibration/src/FT0CalibrationLinkDef.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
#pragma link off all classes;
1616
#pragma link off all functions;
1717

18-
#pragma link C++ class o2::ft0::CalibParam + ;
1918
#pragma link C++ class o2::ft0::FT0TimeOffsetSlotContainer + ;
2019
#pragma link C++ class o2::ft0::GlobalOffsetsContainer + ;
2120
#pragma link C++ class o2::ft0::FT0CalibTimeSlewing + ;

0 commit comments

Comments
 (0)