Project
Loading...
Searching...
No Matches
CalibPadGainTracksBase.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
16
17#ifndef ALICEO2_TPC_CALIBPADGAINTRACKSBASE_H
18#define ALICEO2_TPC_CALIBPADGAINTRACKSBASE_H
19
20// o2 includes
21#include "TPCBase/CalDet.h"
23
24#include <gsl/span>
25
26class TCanvas;
27
28namespace o2
29{
30namespace tpc
31{
32
38{
39 public:
41 enum NormType : unsigned char {
44 region
45 };
46
49
52 CalibPadGainTracksBase(const bool initCalPad = true);
53
55 void initCalPadMemory() { mGainMap = std::make_unique<CalPad>("GainMap"); }
56
58 void initCalPadStdDevMemory() { mSigmaMap = std::make_unique<CalPad>("SigmaMap"); }
59
61 void initCalPadStat() { mNClMap = std::make_unique<CalPad>("NClustersMap"); }
62
64 CalibPadGainTracksBase(const CalibPadGainTracksBase& other) : mPadHistosDet(std::make_unique<DataTHistos>(*other.mPadHistosDet)), mGainMap(std::make_unique<CalPad>(*other.mGainMap)) {}
65
68 void fill(const gsl::span<const DataTHistos>& caldets);
69
72 void fill(const DataTHistos& caldet) { *mPadHistosDet.get() += caldet; }
73
75 void print() const;
76
78 void merge(const CalibPadGainTracksBase* other) { *mPadHistosDet.get() += *(other->mPadHistosDet).get(); }
79
82 bool hasEnoughData(const int minEntries) const;
83
91 void finalize(const int minEntries = 10, const float minRelgain = 0.1f, const float maxRelgain = 2.f, const float low = 0.05f, const float high = 0.6f, const float minStDev = 0.01);
92
94 const auto& getHistos() const { return mPadHistosDet; }
95
97 const CalPad& getPadGainMap() const { return *mGainMap; }
98
100 CalPad& getPadGainMap() { return *mGainMap; }
101
103 const CalPad& getSigmaMap() const { return *mSigmaMap; }
104
106 const CalPad& getNTracksMap() const { return *mNClMap; }
107
113 DataTHisto getHistogram(const int sector, const int region, const int lrow, const int pad) const;
114
119 DataTHisto getHistogram(const int sector, const int grow, const int pad) const;
120
126 void drawExtractedGainMapSector(const int sector, const std::string filename = "GainMapSector.pdf", const float minZ = 0, const float maxZ = -1) const { drawExtractedGainMapHelper(false, 0, sector, filename, minZ, maxZ); }
127
133 void drawExtractedGainMapSide(const o2::tpc::Side side, const std::string filename = "GainMapSide.pdf", const float minZ = 0, const float maxZ = -1) const { drawExtractedGainMapHelper(true, 0, side == Side::A ? Sector(0) : Sector(Sector::MAXSECTOR - 1), filename, minZ, maxZ); }
134
140 void drawNClustersMapSide(const o2::tpc::Side side, const std::string filename = "NClustersMapSide.pdf", const float minZ = 0, const float maxZ = -1) const { drawExtractedGainMapHelper(true, 2, side == Side::A ? Sector(0) : Sector(Sector::MAXSECTOR - 1), filename, minZ, maxZ); }
141
148 void drawExtractedSigmaMapSector(const int sector, const bool norm = false, const std::string filename = "StdDevMapSector.pdf", const float minZ = 0, const float maxZ = -1) const { drawExtractedGainMapHelper(false, 1, sector, filename, minZ, maxZ, norm); }
149
156 void drawExtractedSigmaMapSide(const o2::tpc::Side side, const bool norm = false, const std::string filename = "StdDevMapSide.pdf", const float minZ = 0, const float maxZ = -1) const { drawExtractedGainMapHelper(true, 1, side == Side::A ? Sector(0) : Sector(Sector::MAXSECTOR - 1), filename, minZ, maxZ, norm); }
157
163 void drawNClustersMapSector(const int sector, const std::string filename = "NClustersMapSector.pdf", const float minZ = 0, const float maxZ = -1) const { drawExtractedGainMapHelper(false, 2, sector, filename, minZ, maxZ, false); }
164
166 TCanvas* drawExtractedGainMapPainter() const;
167
171 void divideGainMap(const char* inpFile, const char* mapName);
172
175 void dumpGainMap(const char* fileName = "GainMap.root") const;
176
180 void dumpToFile(const char* outFileName = "calPadGainTracksBase.root", const char* outName = "calPadGain") const;
181
184 void dumpToTree(const std::string filename = "map_debug.root") const;
185
189 void setGainMap(const char* inpFile, const char* mapName);
190
192 void setGainMap(const CalPad& gainmap) { mGainMap = std::make_unique<CalPad>(gainmap); }
193
195 void setRMSMap(const CalPad& rmsMap) { mSigmaMap = std::make_unique<CalPad>(rmsMap); }
196
198 void setNClMap(const CalPad& nclMap) { mNClMap = std::make_unique<CalPad>(nclMap); }
199
201 void setNormalizationType(const NormType type) { mNormType = type; }
202
204 auto getNormalizationType() const { return mNormType; }
205
207 bool setLogTransformQ(const bool logTransformQ) { return mLogTransformQ = logTransformQ; }
208
210 bool getLogTransformQ() const { return mLogTransformQ; }
211
213 void resetHistos();
214
221 void init(const unsigned int nBins, const float xmin, const float xmax, const bool useUnderflow, const bool useOverflow);
222
226 void fillPadByPadHistogram(const size_t roc, const size_t padInROC, const float val) { mPadHistosDet->getCalArray(roc).getData()[padInROC].fill(val); }
227
228 private:
229 std::unique_ptr<DataTHistos> mPadHistosDet;
230 std::unique_ptr<CalPad> mGainMap;
231 std::unique_ptr<CalPad> mSigmaMap;
232 std::unique_ptr<CalPad> mNClMap;
233 NormType mNormType = region;
234 bool mLogTransformQ{true};
235
237 void drawExtractedGainMapHelper(const bool type, const int typeMap, const Sector sector, const std::string filename, const float minZ, const float maxZ, const bool norm = false) const;
238
242 void normalize(std::vector<float>& data, const std::vector<int>& nPads);
243
246 void normalizeGain(CalPad& calPad);
247
249 std::vector<int> getNPadsForNormalization(const bool iroc) const;
250
252 void normalizeGainMap() { normalizeGain(*mGainMap.get()); }
253};
254
255} // namespace tpc
256} // namespace o2
257
258#endif
uint32_t roc
Definition RawData.h:3
uint32_t side
Definition RawData.h:0
base class for the pad-by-pad residual gain calibration this class can be used to store for each pad ...
void initCalPadMemory()
initializing CalPad object for gainmap
void resetHistos()
resetting the histograms which are used for extraction of the gain map
void dumpGainMap(const char *fileName="GainMap.root") const
void setNClMap(const CalPad &nclMap)
setting number of clusters map
void dumpToFile(const char *outFileName="calPadGainTracksBase.root", const char *outName="calPadGain") const
TCanvas * drawExtractedGainMapPainter() const
draw gain map using painter functionality
void divideGainMap(const char *inpFile, const char *mapName)
void initCalPadStdDevMemory()
initializing CalPad object for std dev map
void setGainMap(const CalPad &gainmap)
setting the gain map
void setNormalizationType(const NormType type)
set how the extracted gain map is normalized
FastHisto< unsigned int > DataTHisto
void fill(const DataTHistos &caldet)
bool setLogTransformQ(const bool logTransformQ)
set if the cluster charge is transformed using log(1+Q)
const auto & getHistos() const
returns calpad containing pad-by-pad histograms
void fill(const gsl::span< const DataTHistos > &caldets)
void initCalPadStat()
initializing CalPad object for std dev map
void drawNClustersMapSector(const int sector, const std::string filename="NClustersMapSector.pdf", const float minZ=0, const float maxZ=-1) const
NormType
normalization type of the extracted gain map
@ stack
normalization per GEM stack
void dumpToTree(const std::string filename="map_debug.root") const
void print() const
Print the total number of entries and minimum number of entries (ToDo add some more informations whic...
void fillPadByPadHistogram(const size_t roc, const size_t padInROC, const float val)
void finalize(const int minEntries=10, const float minRelgain=0.1f, const float maxRelgain=2.f, const float low=0.05f, const float high=0.6f, const float minStDev=0.01)
bool hasEnoughData(const int minEntries) const
void setGainMap(const char *inpFile, const char *mapName)
CalibPadGainTracksBase(const CalibPadGainTracksBase &other)
copy constructor
void drawExtractedGainMapSector(const int sector, const std::string filename="GainMapSector.pdf", const float minZ=0, const float maxZ=-1) const
void init(const unsigned int nBins, const float xmin, const float xmax, const bool useUnderflow, const bool useOverflow)
void setRMSMap(const CalPad &rmsMap)
setting the RMS map
void drawExtractedGainMapSide(const o2::tpc::Side side, const std::string filename="GainMapSide.pdf", const float minZ=0, const float maxZ=-1) const
void drawNClustersMapSide(const o2::tpc::Side side, const std::string filename="NClustersMapSide.pdf", const float minZ=0, const float maxZ=-1) const
void merge(const CalibPadGainTracksBase *other)
Add histograms from other container.
void drawExtractedSigmaMapSector(const int sector, const bool norm=false, const std::string filename="StdDevMapSector.pdf", const float minZ=0, const float maxZ=-1) const
void drawExtractedSigmaMapSide(const o2::tpc::Side side, const bool norm=false, const std::string filename="StdDevMapSide.pdf", const float minZ=0, const float maxZ=-1) const
DataTHisto getHistogram(const int sector, const int region, const int lrow, const int pad) const
templated 1D-histogram class.
Definition FastHisto.h:52
static constexpr int MAXSECTOR
Definition Sector.h:44
GLint GLint GLsizei GLint GLenum GLenum type
Definition glcorearb.h:275
GLboolean * data
Definition glcorearb.h:298
GLuint GLfloat * val
Definition glcorearb.h:1582
GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat maxZ
Definition glcorearb.h:2910
GLfloat GLfloat minZ
Definition glcorearb.h:2910
Side
TPC readout sidE.
Definition Defs.h:35
@ A
Definition Defs.h:35
CalDet< float > CalPad
Definition CalDet.h:492
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
Defining DataPointCompositeObject explicitly as copiable.
std::string filename()
VectorOfTObjectPtrs other