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.
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.
transient container for single chip digits accumulation
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