Project
Loading...
Searching...
No Matches
InterCalib.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
12#include <mutex>
13#include <memory>
14#include <TH1.h>
15#include <TH2.h>
16#include <THnBase.h>
17#include <THnSparse.h>
18#include <TMinuit.h>
19#include "ZDCBase/Constants.h"
27#include "CCDB/CcdbObjectInfo.h"
28#ifndef ALICEO2_ZDC_INTERCALIB_H
29#define ALICEO2_ZDC_INTERCALIB_H
30namespace o2
31{
32namespace zdc
33{
35{
37
38 public:
39 InterCalib() = default;
40 int init();
41 static constexpr int HidZNA = 0;
42 static constexpr int HidZPA = 1;
43 static constexpr int HidZNC = 2;
44 static constexpr int HidZPC = 3;
45 static constexpr int HidZEM = 4;
46 static constexpr int HidZNI = 5;
47 static constexpr int HidZPI = 6;
48 static constexpr int HidZPAX = 7;
49 static constexpr int HidZPCX = 8;
50 static constexpr int NH = InterCalibData::NH;
51 static constexpr int NPAR = InterCalibData::NPAR;
52 void clear(int ih = -1);
53 int process(const gsl::span<const o2::zdc::BCRecData>& bcrec,
54 const gsl::span<const o2::zdc::ZDCEnergy>& energy,
55 const gsl::span<const o2::zdc::ZDCTDCData>& tdc,
56 const gsl::span<const uint16_t>& info); // Calibration of RUN3 data - direct
57 int process(const InterCalibData& data); // Calibration of RUN3 data - aggregator node
58 int endOfRun(); // Perform minimization
59 int process(const char* hname, int ic); // Calibration of RUN2 data
60 void replay(int ih, THnSparse* hs, int ic); // Test of calibration using RUN2 data
61 int mini(int ih);
64 int saveDebugHistos(const std::string fn = "ZDCInterCalib.root");
65 void setSaveDebugHistos() { mSaveDebugHistos = true; }
66 void setDontSaveDebugHistos() { mSaveDebugHistos = false; }
67
68 static double mAdd[NPAR][NPAR];
69 static void fcn(int& npar, double* gin, double& chi, double* par, int iflag);
70 void cumulate(int ih, double tc, double t1, double t2, double t3, double t4, double w);
71
72 const ZDCTowerParam& getTowerParamUpd() const { return mTowerParamUpd; };
73
74 CcdbObjectInfo& getCcdbObjectInfo() { return mInfo; }
75
76 void setEnergyParam(const ZDCEnergyParam* param) { mEnergyParam = param; };
77 const ZDCEnergyParam* getEnergyParam() const { return mEnergyParam; };
78 void setTowerParam(const ZDCTowerParam* param) { mTowerParam = param; };
79 const ZDCTowerParam* getTowerParam() const { return mTowerParam; };
80 void setInterCalibConfig(const InterCalibConfig* param) { mInterCalibConfig = param; };
81 const InterCalibConfig* getInterCalibConfig() const { return mInterCalibConfig; };
82
83 InterCalibData& getData() { return mData; };
84
85 void setVerbosity(int v) { mVerbosity = v; }
86 int getVerbosity() const { return mVerbosity; }
87
88 // Histograms for intercalibration of side C vs A are duplicate -> No title
89 static constexpr const char* mHUncN[2 * NH] = {"hZNAS", "hZPAS", "hZNCS", "hZPCS", "hZEM2", "", "", "hZPASX", "hZPCSX",
90 "hZNAC", "hZPAC", "hZNCC", "hZPCC", "hZEM1", "", "", "hZPACX", "hZPCCX"};
91 static constexpr const char* mHUncT[2 * NH] = {"ZNA sum", "ZPA sum", "ZNC sum", "ZPC sum", "ZEM2", "", "", "ZPA sum", "ZPC sum",
92 "ZNA TC", "ZPA TC", "ZNC TC", "ZPC TC", "ZEM1", "", "", "ZPA TC", "ZPC TC"};
93 static constexpr const char* mCUncN[NH] = {"cZNA", "cZPA", "cZNC", "cZPC", "cZEM", "cZNI", "cZPI", "cZPAX", "cZPCX"};
94 static constexpr const char* mCUncT[NH] = {"ZNA;TC;SUM", "ZPA;TC;SUM", "ZNC;TC;SUM", "ZPC;TC;SUM", "ZEM;ZEM1;ZEM2", "ZN;ZNAC;ZNCC", "ZP;ZPAC;ZPCC", "ZPA (x cut);TC;SUM", "ZPC (x cut);TC;SUM"};
95
96 private:
97 std::array<o2::dataformats::FlatHisto1D<float>*, 2 * NH> mHUnc{};
98 std::array<o2::dataformats::FlatHisto2D<float>*, NH> mCUnc{};
99 std::array<std::unique_ptr<TH1>, NH> mHCorr{};
100 std::array<std::unique_ptr<TH2>, NH> mCCorr{};
101 std::array<std::unique_ptr<TMinuit>, NH> mMn{};
102 InterCalibData mData;
103 bool mInitDone = false;
104 bool mSaveDebugHistos = false;
105 int32_t mVerbosity = DbgMinimal;
106 static std::mutex mMtx;
107 double mPar[NH][NPAR] = {0};
108 double mErr[NH][NPAR] = {0};
109 const InterCalibConfig* mInterCalibConfig = nullptr;
110 const ZDCEnergyParam* mEnergyParam = nullptr;
111 const ZDCTowerParam* mTowerParam = nullptr;
112 ZDCTowerParam mTowerParamUpd;
113 CcdbObjectInfo mInfo;
114 void assign(int ih, bool ismod);
115};
116} // namespace zdc
117} // namespace o2
118
119#endif
1D messeageable histo class
2D messeageable histo class
Configuration of ZDC Tower intercalibration procedure.
Intercalibration intermediate data.
Class to describe reconstructed ZDC event (single BC with signal in one of detectors)
ZDC Energy calibration.
ZDC Tower calibration.
int getVerbosity() const
Definition InterCalib.h:86
static constexpr int HidZEM
Definition InterCalib.h:45
void replay(int ih, THnSparse *hs, int ic)
static constexpr int HidZNA
Definition InterCalib.h:41
static double mAdd[NPAR][NPAR]
Definition InterCalib.h:68
void cumulate(int ih, double tc, double t1, double t2, double t3, double t4, double w)
static void fcn(int &npar, double *gin, double &chi, double *par, int iflag)
Temporary copy of cumulated sums.
static constexpr int NH
Definition InterCalib.h:50
static constexpr int HidZPI
Definition InterCalib.h:47
const InterCalibConfig * getInterCalibConfig() const
Definition InterCalib.h:81
void setSaveDebugHistos()
Definition InterCalib.h:65
static constexpr const char * mHUncT[2 *NH]
Definition InterCalib.h:91
const ZDCTowerParam * getTowerParam() const
Definition InterCalib.h:79
void add(int ih, o2::dataformats::FlatHisto1D< float > &h1)
CcdbObjectInfo & getCcdbObjectInfo()
Definition InterCalib.h:74
void setVerbosity(int v)
Definition InterCalib.h:85
int saveDebugHistos(const std::string fn="ZDCInterCalib.root")
static constexpr const char * mHUncN[2 *NH]
Definition InterCalib.h:89
void setInterCalibConfig(const InterCalibConfig *param)
Definition InterCalib.h:80
static constexpr int NPAR
Definition InterCalib.h:51
void setDontSaveDebugHistos()
Definition InterCalib.h:66
static constexpr int HidZPC
Definition InterCalib.h:44
void setTowerParam(const ZDCTowerParam *param)
Definition InterCalib.h:78
static constexpr int HidZNI
Definition InterCalib.h:46
static constexpr int HidZNC
Definition InterCalib.h:43
static constexpr int HidZPA
Definition InterCalib.h:42
static constexpr int HidZPAX
Definition InterCalib.h:48
static constexpr int HidZPCX
Definition InterCalib.h:49
void setEnergyParam(const ZDCEnergyParam *param)
Definition InterCalib.h:76
static constexpr const char * mCUncT[NH]
Definition InterCalib.h:94
const ZDCTowerParam & getTowerParamUpd() const
Definition InterCalib.h:72
InterCalibData & getData()
Definition InterCalib.h:83
static constexpr const char * mCUncN[NH]
Definition InterCalib.h:93
const ZDCEnergyParam * getEnergyParam() const
Definition InterCalib.h:77
const GLdouble * v
Definition glcorearb.h:832
GLboolean * data
Definition glcorearb.h:298
GLenum GLfloat param
Definition glcorearb.h:271
GLubyte GLubyte GLubyte GLubyte w
Definition glcorearb.h:852
GLuint GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat t1
Definition glcorearb.h:5034
struct o2::upgrades_utils::@463 zdc
structure to keep FT0 information
constexpr int DbgMinimal
Definition Constants.h:208
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
static constexpr int NH
Dimension of matrix (1 + 4 coefficients + offset)
static constexpr int NPAR
vec clear()