Skip to content

Commit be1e493

Browse files
author
afurs
committed
FIT calibration: new feature for debugging - extraInfo option, applied only for FT0 time spectra calibration
1 parent a12ca62 commit be1e493

9 files changed

Lines changed: 47 additions & 17 deletions

File tree

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/FT0TimeOffsetSlotContainer.cxx

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#include <Framework/Logger.h>
1717

1818
#include "TH1.h"
19+
#include "TFile.h"
1920
#include "TFitResult.h"
2021

2122
using namespace o2::ft0;
@@ -107,7 +108,7 @@ void FT0TimeOffsetSlotContainer::merge(FT0TimeOffsetSlotContainer* prev)
107108
mCurrentSlot++;
108109
}
109110

110-
SpectraInfoObject FT0TimeOffsetSlotContainer::getSpectraInfoObject(std::size_t channelID) const
111+
SpectraInfoObject FT0TimeOffsetSlotContainer::getSpectraInfoObject(std::size_t channelID, TList* listHists) const
111112
{
112113
uint32_t statusBits{};
113114
double minFitRange{0};
@@ -145,19 +146,40 @@ SpectraInfoObject FT0TimeOffsetSlotContainer::getSpectraInfoObject(std::size_t c
145146
LOG(debug) << "Bad gaus fit: meanGaus " << meanGaus << " sigmaGaus " << sigmaGaus << " meanHist " << meanHist << " rmsHist " << rmsHist << "resultFit " << ((int)resultFit);
146147
}
147148
}
149+
if (listHists != nullptr) {
150+
auto histPtr = hist.release();
151+
const std::string histName = "histCh" + std::to_string(channelID);
152+
histPtr->SetName(histName.c_str());
153+
listHists->Add(histPtr);
154+
}
148155
return SpectraInfoObject{meanGaus, sigmaGaus, constantGaus, fitChi2, meanHist, rmsHist, stat, statusBits};
149156
}
150157

151-
TimeSpectraInfoObject FT0TimeOffsetSlotContainer::generateCalibrationObject() const
158+
TimeSpectraInfoObject FT0TimeOffsetSlotContainer::generateCalibrationObject(long tsStartMS, long tsEndMS, const std::string& extraInfo) const
152159
{
160+
TList* listHists = nullptr;
161+
bool storeHists{false};
162+
if (extraInfo.size() > 0) {
163+
storeHists = true;
164+
listHists = new TList();
165+
listHists->SetOwner(true);
166+
listHists->SetName("output");
167+
}
153168
TimeSpectraInfoObject calibrationObject;
154169
for (unsigned int iCh = 0; iCh < sNCHANNELS; ++iCh) {
155-
calibrationObject.mTime[iCh] = getSpectraInfoObject(iCh);
170+
calibrationObject.mTime[iCh] = getSpectraInfoObject(iCh, listHists);
171+
}
172+
calibrationObject.mTimeA = getSpectraInfoObject(sNCHANNELS, listHists);
173+
calibrationObject.mTimeC = getSpectraInfoObject(sNCHANNELS + 1, listHists);
174+
calibrationObject.mSumTimeAC = getSpectraInfoObject(sNCHANNELS + 2, listHists);
175+
calibrationObject.mDiffTimeCA = getSpectraInfoObject(sNCHANNELS + 3, listHists);
176+
if (storeHists) {
177+
const std::string filename = extraInfo + "/histsTimeSpectra" + std::to_string(tsStartMS) + "_" + std::to_string(tsEndMS) + ".root";
178+
TFile fileHists(filename.c_str(), "RECREATE");
179+
fileHists.WriteObject(listHists, listHists->GetName(), "SingleKey");
180+
fileHists.Close();
181+
delete listHists;
156182
}
157-
calibrationObject.mTimeA = getSpectraInfoObject(sNCHANNELS);
158-
calibrationObject.mTimeC = getSpectraInfoObject(sNCHANNELS + 1);
159-
calibrationObject.mSumTimeAC = getSpectraInfoObject(sNCHANNELS + 2);
160-
calibrationObject.mDiffTimeCA = getSpectraInfoObject(sNCHANNELS + 3);
161183
return calibrationObject;
162184
}
163185

Detectors/FIT/FT0/calibration/src/GlobalOffsetsContainer.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ int GlobalOffsetsContainer::getMeanGaussianFitValue() const
7575
return 0;
7676
}
7777
}
78-
GlobalOffsetsCalibrationObject GlobalOffsetsContainer::generateCalibrationObject() const
78+
GlobalOffsetsCalibrationObject GlobalOffsetsContainer::generateCalibrationObject(long, long, const std::string&) const
7979
{
8080
GlobalOffsetsCalibrationObject calibrationObject;
8181
calibrationObject.mCollisionTimeOffsets = getMeanGaussianFitValue();

Detectors/FIT/FT0/calibration/testWorkflow/FT0TimeOffsetCalibration-Workflow.cxx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@ WorkflowSpec defineDataProcessing(ConfigContext const& config)
5656
o2::framework::AlgorithmSpec{o2::framework::adaptFromTask<CalibrationDeviceType>(ccdbRequest, outputDataDescriptor)},
5757
o2::framework::Options{
5858
{"tf-per-slot", o2::framework::VariantType::UInt32, 56000u, {""}},
59-
{"max-delay", o2::framework::VariantType::UInt32, 3u, {""}}}};
59+
{"max-delay", o2::framework::VariantType::UInt32, 3u, {""}},
60+
{"extra-info-per-slot", o2::framework::VariantType::String, "", {"Extra info for time slot(usually for debugging)"}}}};
6061

6162
WorkflowSpec workflow;
6263
workflow.emplace_back(dataProcessorSpec);

Detectors/FIT/FV0/calibration/include/FV0Calibration/FV0ChannelTimeOffsetSlotContainer.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ class FV0ChannelTimeOffsetSlotContainer final
5656
{
5757
return mFirstCreation;
5858
}
59-
FV0ChannelTimeCalibrationObject generateCalibrationObject() const;
59+
FV0ChannelTimeCalibrationObject generateCalibrationObject(long, long, const std::string&) const;
6060

6161
private:
6262
std::size_t mMinEntries;

Detectors/FIT/FV0/calibration/src/FV0ChannelTimeOffsetSlotContainer.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ int16_t FV0ChannelTimeOffsetSlotContainer::getMeanGaussianFitValue(std::size_t c
103103

104104
return static_cast<int16_t>(std::round(outputGaussianFitValues[MEAN_VALUE_INDEX_IN_OUTPUT_VECTOR]));
105105
}
106-
FV0ChannelTimeCalibrationObject FV0ChannelTimeOffsetSlotContainer::generateCalibrationObject() const
106+
FV0ChannelTimeCalibrationObject FV0ChannelTimeOffsetSlotContainer::generateCalibrationObject(long, long, const std::string&) const
107107
{
108108
FV0ChannelTimeCalibrationObject calibrationObject;
109109

Detectors/FIT/common/calibration/include/FITCalibration/FITCalibrationDevice.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,12 @@ class FITCalibrationDevice : public o2::framework::Task
4646
o2::base::GRPGeomHelper::instance().setRequest(mCCDBRequest);
4747
auto slotL = context.options().get<uint32_t>("tf-per-slot");
4848
auto delay = context.options().get<uint32_t>("max-delay");
49-
49+
const std::string extraInfo = context.options().get<std::string>("extra-info-per-slot");
5050
mCalibrator = std::make_unique<CalibratorType>();
5151

5252
mCalibrator->setSlotLength(slotL);
5353
mCalibrator->setMaxSlotsDelay(delay);
54-
54+
mCalibrator->setExtraInfo(extraInfo);
5555
// o2::ccdb::BasicCCDBManager::instance().setURL(sDEFAULT_CCDB_URL);
5656
}
5757

Detectors/FIT/common/calibration/include/FITCalibration/FITCalibrator.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ class FITCalibrator final : public o2::calibration::TimeSlotCalibration<TimeSlot
6767
auto starting = slot.getStartTimeMS();
6868
auto stopping = slot.getEndTimeMS();
6969
LOGP(info, "!!!! {}({})<=TF<={}({}), starting: {} stopping {}", slot.getTFStart(), slot.getStartTimeMS(), slot.getTFEnd(), slot.getEndTimeMS(), starting, stopping);
70-
auto calibrationObject = container->generateCalibrationObject();
70+
auto calibrationObject = container->generateCalibrationObject(slot.getStartTimeMS(), slot.getEndTimeMS(), mExtraInfo);
7171
std::vector<CalibObjWithInfoType> preparedCalibObjects;
7272
preparedCalibObjects.emplace_back(doSerializationAndPrepareObjectInfo(calibrationObject, starting, stopping));
7373
mStoredCalibrationObjects.insert(mStoredCalibrationObjects.end(),
@@ -99,10 +99,15 @@ class FITCalibrator final : public o2::calibration::TimeSlotCalibration<TimeSlot
9999
<< " start " << starting << " end " << stopping;
100100
return result;
101101
}
102+
void setExtraInfo(const std::string& extraInfo)
103+
{
104+
mExtraInfo = extraInfo;
105+
}
102106

103107
private:
104108
std::vector<CalibObjWithInfoType> mStoredCalibrationObjects{};
105109
const unsigned int mMinEntries;
110+
std::string mExtraInfo;
106111
};
107112

108113
} // namespace o2::fit

0 commit comments

Comments
 (0)