Project
Loading...
Searching...
No Matches
Digitizer.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
14#ifndef ALICEO2_ITSMFT_DIGITIZER_H
15#define ALICEO2_ITSMFT_DIGITIZER_H
16
17#include <vector>
18#include <deque>
19#include <memory>
20
21#include "Rtypes.h" // for Digitizer::Class
22#include "TObject.h" // for TObject
23
34
35namespace o2
36{
37
38namespace dataformats
39{
40template <typename T>
42}
43
44namespace itsmft
45{
46class Digitizer : public TObject
47{
48 using ExtraDig = std::vector<PreDigitLabelRef>;
49
50 public:
51 Digitizer() = default;
52 ~Digitizer() override = default;
53 Digitizer(const Digitizer&) = delete;
54 Digitizer& operator=(const Digitizer&) = delete;
55
56 void setDigits(std::vector<o2::itsmft::Digit>* dig) { mDigits = dig; }
58 void setROFRecords(std::vector<o2::itsmft::ROFRecord>* rec) { mROFRecords = rec; }
60 const o2::itsmft::DigiParams& getParams() const { return mParams; }
61 void setNoiseMap(const o2::itsmft::NoiseMap* mp) { mNoiseMap = mp; }
62 void setDeadChannelsMap(const o2::itsmft::NoiseMap* mp) { mDeadChanMap = mp; }
63
64 void init();
65
66 auto getChipResponse(int chipID);
67
69 void process(const std::vector<Hit>* hits, int evID, int srcID);
71 double getEndTimeOfROFMax() const
72 {
74 return mParams.getROFrameLength() * (mROFrameMax + 1) + mParams.getTimeOffset();
75 }
76
77 void setContinuous(bool v) { mParams.setContinuous(v); }
78 bool isContinuous() const { return mParams.isContinuous(); }
79 void fillOutputContainer(uint32_t maxFrame = 0xffffffff);
80
81 void setDigiParams(const o2::itsmft::DigiParams& par) { mParams = par; }
82 const o2::itsmft::DigiParams& getDigitParams() const { return mParams; }
83
84 // provide the common itsmft::GeometryTGeo to access matrices and segmentation
85 void setGeometry(const o2::itsmft::GeometryTGeo* gm) { mGeometry = gm; }
86
87 uint32_t getEventROFrameMin() const { return mEventROFrameMin; }
88 uint32_t getEventROFrameMax() const { return mEventROFrameMax; }
90 {
91 mEventROFrameMin = 0xffffffff;
92 mEventROFrameMax = 0;
93 }
94
95 private:
96 void processHit(const o2::itsmft::Hit& hit, uint32_t& maxFr, int evID, int srcID);
97 void registerDigits(ChipDigitsContainer& chip, uint32_t roFrame, float tInROF, int nROF,
98 uint16_t row, uint16_t col, int nEle, o2::MCCompLabel& lbl);
99
100 ExtraDig* getExtraDigBuffer(uint32_t roFrame)
101 {
102 if (mROFrameMin > roFrame) {
103 return nullptr; // nothing to do
104 }
105 int ind = roFrame - mROFrameMin;
106 while (ind >= int(mExtraBuff.size())) {
107 mExtraBuff.emplace_back(std::make_unique<ExtraDig>());
108 }
109 return mExtraBuff[ind].get();
110 }
111
112 static constexpr float sec2ns = 1e9;
113
114 o2::itsmft::DigiParams mParams;
115 o2::InteractionTimeRecord mEventTime;
116 o2::InteractionRecord mIRFirstSampledTF;
117 double mCollisionTimeWrtROF;
118 uint32_t mROFrameMin = 0;
119 uint32_t mROFrameMax = 0;
120 uint32_t mNewROFrame = 0;
121 bool mIsBeforeFirstRO = false;
122
123 uint32_t mEventROFrameMin = 0xffffffff;
124 uint32_t mEventROFrameMax = 0;
125
126 int mNumberOfChips = 0;
127 o2::itsmft::AlpideSimResponse* mAlpSimRespMFT = nullptr;
128 o2::itsmft::AlpideSimResponse* mAlpSimRespIB = nullptr;
129 o2::itsmft::AlpideSimResponse* mAlpSimRespOB = nullptr;
130 o2::itsmft::AlpideSimResponse mAlpSimResp[2]; // simulated response
131 std::string mResponseFile = "$(O2_ROOT)/share/Detectors/ITSMFT/data/AlpideResponseData/AlpideResponseData.root";
132 const o2::itsmft::GeometryTGeo* mGeometry = nullptr;
133
134 std::vector<o2::itsmft::ChipDigitsContainer> mChips;
135 std::deque<std::unique_ptr<ExtraDig>> mExtraBuff;
136
137 std::vector<o2::itsmft::Digit>* mDigits = nullptr;
138 std::vector<o2::itsmft::ROFRecord>* mROFRecords = nullptr;
140 const o2::itsmft::NoiseMap* mNoiseMap = nullptr;
141 const o2::itsmft::NoiseMap* mDeadChanMap = nullptr;
142
143 ClassDefOverride(Digitizer, 2);
144};
145} // namespace itsmft
146} // namespace o2
147
148#endif /* ALICEO2_ITSMFT_DIGITIZER_H */
Definition of the ITSMFT Alpide simulated response parametrization.
transient container for single chip digits accumulation
Definition of the ITSMFT digit.
Simulation parameters for the ALIPIDE chip.
Definition of the ITSMFT Hit class.
Definition of the GeometryTGeo class : common part for ITS and MFT.
Definition of the ITSMFT ROFrame (trigger) record.
Definition of the ITSMFT NoiseMap.
uint32_t col
Definition RawData.h:4
Container for similated points connected to a given chip.
double getTimeOffset() const
Definition DigiParams.h:68
bool isContinuous() const
Definition DigiParams.h:52
float getROFrameLength() const
Definition DigiParams.h:58
void setContinuous(bool v)
Definition DigiParams.h:51
auto getChipResponse(int chipID)
double getEndTimeOfROFMax() const
Definition Digitizer.h:71
void setDeadChannelsMap(const o2::itsmft::NoiseMap *mp)
Definition Digitizer.h:62
const o2::itsmft::DigiParams & getDigitParams() const
Definition Digitizer.h:82
void setEventTime(const o2::InteractionTimeRecord &irt)
Digitizer(const Digitizer &)=delete
void setGeometry(const o2::itsmft::GeometryTGeo *gm)
Definition Digitizer.h:85
void setMCLabels(o2::dataformats::MCTruthContainer< o2::MCCompLabel > *mclb)
Definition Digitizer.h:57
void setContinuous(bool v)
Definition Digitizer.h:77
~Digitizer() override=default
Digitizer & operator=(const Digitizer &)=delete
void setNoiseMap(const o2::itsmft::NoiseMap *mp)
Definition Digitizer.h:61
void setROFRecords(std::vector< o2::itsmft::ROFRecord > *rec)
Definition Digitizer.h:58
void setDigits(std::vector< o2::itsmft::Digit > *dig)
Definition Digitizer.h:56
uint32_t getEventROFrameMax() const
Definition Digitizer.h:88
bool isContinuous() const
Definition Digitizer.h:78
const o2::itsmft::DigiParams & getParams() const
Definition Digitizer.h:60
o2::itsmft::DigiParams & getParams()
Definition Digitizer.h:59
void fillOutputContainer(uint32_t maxFrame=0xffffffff)
uint32_t getEventROFrameMin() const
Definition Digitizer.h:87
void setDigiParams(const o2::itsmft::DigiParams &par)
Definition Digitizer.h:81
NoiseMap class for the ITS and MFT.
Definition NoiseMap.h:39
const GLdouble * v
Definition glcorearb.h:832
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
GPUReconstruction * rec
std::vector< int > row