Project
Loading...
Searching...
No Matches
T0Fit.h
Go to the documentation of this file.
1// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3// All rights not expressly granted are reserved.
4//
5// This software is distributed under the terms of the GNU General Public
6// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7//
8// In applying this license CERN does not waive the privileges and immunities
9// granted to it by virtue of its status as an Intergovernmental Organization
10// or submit itself to any jurisdiction.
11
15
16#ifndef O2_TRD_T0FIT_H
17#define O2_TRD_T0FIT_H
18
23#include "CCDB/CcdbObjectInfo.h"
26
27#include "Rtypes.h"
28#include "TProfile.h"
29#include "TF1.h"
30#include "Fit/Fitter.h"
31#include "TFile.h"
32#include "TTree.h"
33
34#include <array>
35#include <cstdlib>
36#include <memory>
37
38namespace o2
39{
40namespace trd
41{
42//______________________________________________________________________________________________
44 double operator()(const double* par) const;
45 std::vector<float> x;
46 std::vector<float> y;
49};
50
51//______________________________________________________________________________________________
52class T0Fit final : public o2::calibration::TimeSlotCalibration<o2::trd::T0FitHistos>
53{
55
56 public:
57 T0Fit() = default;
58 ~T0Fit() final = default;
59
60 bool hasEnoughData(const Slot& slot) const final { return slot.getContainer()->getNEntries() >= mParams.minEntriesTotalT0Fit; }
61 void initOutput() final;
62 void finalizeSlot(Slot& slot) final;
63 Slot& emplaceNewSlot(bool front, TFType tStart, TFType tEnd) final;
64
67 void createOutputFile();
68
71 void closeOutputFile();
72
73 const std::vector<o2::trd::CalT0>& getCcdbObjectVector() const { return mObjectVector; }
74 std::vector<o2::ccdb::CcdbObjectInfo>& getCcdbObjectInfoVector() { return mInfoVector; }
75
76 void initProcessing();
77
78 private:
79 bool mInitDone{false};
80 const TRDCalibParams& mParams{TRDCalibParams::Instance()};
81 bool mEnableOutput{false};
82 std::unique_ptr<TFile> mOutFile{nullptr};
83 std::unique_ptr<TTree> mOutTree{nullptr};
84 ErfLandauChi2Functor mFitFunctor;
85 ROOT::Fit::Fitter mFitter;
86 std::array<double, 4> mParamsStart;
87 std::unique_ptr<TF1> mFuncErfLandau;
88 float mDummyT0{-5};
89 std::array<float, o2::trd::constants::MAXCHAMBER> t0_chambers;
90 float t0_average{-5};
91
92 std::vector<o2::ccdb::CcdbObjectInfo> mInfoVector;
93 std::vector<o2::trd::CalT0> mObjectVector;
94
95 std::unique_ptr<TProfile> adcProfIncl;
96 std::array<std::unique_ptr<TProfile>, o2::trd::constants::MAXCHAMBER> adcProfDet;
97
98 ClassDefNV(T0Fit, 1);
99};
100
101} // namespace trd
102} // namespace o2
103
104#endif // O2_TRD_T0FIT_H
Object with T0 values per chamber to be written into the CCDB.
Global TRD definitions and constants.
uint64_t TFType
Class to store the TRD PH values for each TRD chamber.
void initProcessing()
Definition T0Fit.cxx:78
bool hasEnoughData(const Slot &slot) const final
Definition T0Fit.h:60
void finalizeSlot(Slot &slot) final
Definition T0Fit.cxx:120
T0Fit()=default
void initOutput() final
Definition T0Fit.cxx:71
const std::vector< o2::trd::CalT0 > & getCcdbObjectVector() const
Definition T0Fit.h:73
Slot & emplaceNewSlot(bool front, TFType tStart, TFType tEnd) final
Definition T0Fit.cxx:208
void createOutputFile()
Definition T0Fit.cxx:216
void closeOutputFile()
Definition T0Fit.cxx:229
std::vector< o2::ccdb::CcdbObjectInfo > & getCcdbObjectInfoVector()
Definition T0Fit.h:74
~T0Fit() final=default
constexpr int MAXCHAMBER
the maximum number of installed chambers
Definition Constants.h:30
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
Defining DataPointCompositeObject explicitly as copiable.
std::vector< float > y
y-value (av. adc) for corresp. time-bin
Definition T0Fit.h:46
float lowerBoundFit
lower bound for fit
Definition T0Fit.h:47
double operator()(const double *par) const
Definition T0Fit.cxx:42
float upperBoundFit
upper bound for fit
Definition T0Fit.h:48
std::vector< float > x
x-value (time-bin) of adc profile
Definition T0Fit.h:45
size_t minEntriesTotalT0Fit
minimum number of entries in inclusive distribution for (meaningful) t0 fit