Skip to content

Commit 1d4bf48

Browse files
authored
ALICE3-TRK: adapting to recent changes in the ML/OT geometry and to the new type definition o2::trk::Hit (AliceO2Group#14831)
* ALICE3-TRK: adapting to new segmentation in chips in ML/OT and using o2::trk::Hit instead of o2::itsmft::Hit * ALICE3-TRK: using o2::trk::Hit instead of o2::itsmft::Hit * ALICE3-TRK: correct shift of VD chips to match the APTS response coordinate system + fix comment
1 parent ea4bdbd commit 1d4bf48

File tree

5 files changed

+57
-100
lines changed

5 files changed

+57
-100
lines changed

Detectors/Upgrades/ALICE3/TRK/base/include/TRKBase/SegmentationChip.h

Lines changed: 23 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ class SegmentationChip
8888
/// \param int disk Disk number (0 to 5 for VD)
8989
static bool localToDetector(float xRow, float zCol, int& iRow, int& iCol, int subDetID, int layer, int disk) noexcept
9090
{
91-
if (!isValidGlob(xRow, zCol, subDetID, layer)) {
91+
if (!isValidLoc(xRow, zCol, subDetID, layer)) {
9292
LOGP(debug, "Local coordinates not valid: row = {} cm, col = {} cm", xRow, zCol);
9393
return false;
9494
}
@@ -116,68 +116,46 @@ class SegmentationChip
116116
maxWidth = constants::VD::petal::layer::width[layer];
117117
maxLength = constants::VD::petal::layer::length;
118118
// TODO: change this to use the layer and disk
119-
} else if (subDetID == 1 && layer <= 3) { // ML
119+
} else if (subDetID == 1) {
120120
pitchRow = PitchRowMLOT;
121121
pitchCol = PitchColMLOT;
122-
maxWidth = constants::ML::width;
123-
maxLength = constants::ML::length;
124-
} else if (subDetID == 1 && layer == 4) { // ML/OT (mixed layer, length = ML but staggered as OT)
125-
pitchRow = PitchRowMLOT;
126-
pitchCol = PitchColMLOT;
127-
maxWidth = constants::OT::halfstave::width;
128-
maxLength = constants::ML::length;
129-
} else if (subDetID == 1 && layer > 4) { // OT
130-
pitchRow = PitchRowMLOT;
131-
pitchCol = PitchColMLOT;
132-
maxWidth = constants::OT::halfstave::width;
133-
maxLength = constants::OT::halfstave::length;
122+
maxWidth = constants::moduleMLOT::chip::width - constants::moduleMLOT::chip::passiveEdgeReadOut;
123+
maxLength = constants::moduleMLOT::chip::length;
134124
}
135125
// convert to row/col
136-
iRow = static_cast<int>(((maxWidth / 2 - xRow) / pitchRow));
137-
iCol = static_cast<int>(((zCol + maxLength / 2) / pitchCol));
126+
iRow = static_cast<int>(std::floor((maxWidth / 2 - xRow) / pitchRow));
127+
iCol = static_cast<int>(std::floor((zCol + maxLength / 2) / pitchCol));
138128
};
139129

140130
// Check local coordinates (cm) validity.
141-
static constexpr bool isValidGlob(float x, float z, int subDetID, int layer) noexcept
131+
static constexpr bool isValidLoc(float x, float z, int subDetID, int layer) noexcept
142132
{
143133
float maxWidth(0), maxLength(0);
144134
if (subDetID == 0) {
145135
maxWidth = constants::VD::petal::layer::width[layer];
146136
maxLength = constants::VD::petal::layer::length;
147137
// TODO: change this to use the layer and disk
148-
} else if (subDetID == 1 && layer <= 3) { // ML
149-
maxWidth = constants::ML::width;
150-
maxLength = constants::ML::length;
151-
} else if (subDetID == 1 && layer == 4) { // ML/OT (mixed layer, length = ML but staggered as OT)
152-
maxWidth = constants::OT::halfstave::width;
153-
maxLength = constants::ML::length;
154-
} else if (subDetID == 1 && layer > 4) { // OT
155-
maxWidth = constants::OT::halfstave::width;
156-
maxLength = constants::OT::halfstave::length;
138+
} else if (subDetID == 1) { // ML/OT
139+
maxWidth = constants::moduleMLOT::chip::width - constants::moduleMLOT::chip::passiveEdgeReadOut;
140+
maxLength = constants::moduleMLOT::chip::length;
157141
}
158142
return (-maxWidth / 2 < x && x < maxWidth / 2 && -maxLength / 2 < z && z < maxLength / 2);
159143
}
160144

161145
// Check detector coordinates validity.
162-
static constexpr bool isValidDet(float row, float col, int subDetID, int layer) noexcept
146+
static constexpr bool isValidDet(int row, int col, int subDetID, int layer) noexcept
163147
{
164148
// Check if the row and column are within the valid range
165149
int nRows(0), nCols(0);
166150
if (subDetID == 0) {
167151
nRows = constants::VD::petal::layer::nRows[layer];
168152
nCols = constants::VD::petal::layer::nCols;
169153
// TODO: change this to use the layer and disk
170-
} else if (subDetID == 1 && layer <= 3) { // ML
171-
nRows = constants::ML::nRows;
172-
nCols = constants::ML::nCols;
173-
} else if (subDetID == 1 && layer == 4) { // ML/OT (mixed layer, length = ML but staggered as OT)
174-
nRows = constants::OT::halfstave::nRows;
175-
nCols = constants::ML::nCols;
176-
} else if (subDetID == 1 && layer > 4) { // OT
177-
nRows = constants::OT::halfstave::nRows;
178-
nCols = constants::OT::halfstave::nCols;
154+
} else if (subDetID == 1) {
155+
nRows = constants::moduleMLOT::chip::nRows;
156+
nCols = constants::moduleMLOT::chip::nCols;
179157
}
180-
return (row >= 0 && row < static_cast<float>(nRows) && col >= 0 && col < static_cast<float>(nCols));
158+
return (row >= 0 && row < nRows && col >= 0 && col < nCols);
181159
}
182160

183161
/// Transformation from Detector cell coordinates to Geant detector centered
@@ -202,7 +180,7 @@ class SegmentationChip
202180
detectorToLocalUnchecked(iRow, iCol, xRow, zCol, subDetID, layer, disk);
203181
LOG(debug) << "Result from detectorToLocalUnchecked: iRow " << iRow << " -> xRow " << xRow << ", iCol " << iCol << " -> zCol " << zCol << " on subDetID, layer, disk: " << subDetID << " " << layer << " " << disk;
204182

205-
if (!isValidGlob(xRow, zCol, subDetID, layer)) {
183+
if (!isValidLoc(xRow, zCol, subDetID, layer)) {
206184
LOGP(debug, "Local coordinates not valid: row = {} cm, col = {} cm", xRow, zCol);
207185
return false;
208186
}
@@ -218,15 +196,9 @@ class SegmentationChip
218196
if (subDetID == 0) {
219197
xRow = 0.5 * (constants::VD::petal::layer::width[layer] - PitchRowVD) - (row * PitchRowVD);
220198
zCol = col * PitchColVD + 0.5 * (PitchColVD - constants::VD::petal::layer::length);
221-
} else if (subDetID == 1 && layer <= 3) { // ML
222-
xRow = 0.5 * (constants::ML::width - PitchRowMLOT) - (row * PitchRowMLOT);
223-
zCol = col * PitchRowMLOT + 0.5 * (PitchRowMLOT - constants::ML::length);
224-
} else if (subDetID == 1 && layer == 4) { // ML/OT (mixed layer, length = ML but staggered as OT)
225-
xRow = 0.5 * (constants::OT::halfstave::width - PitchRowMLOT) - (row * PitchRowMLOT);
226-
zCol = col * PitchRowMLOT + 0.5 * (PitchRowMLOT - constants::ML::length);
227-
} else if (subDetID == 1 && layer > 4) { // OT
228-
xRow = 0.5 * (constants::OT::halfstave::width - PitchRowMLOT) - (row * PitchRowMLOT);
229-
zCol = col * PitchColMLOT + 0.5 * (PitchColMLOT - constants::OT::halfstave::length);
199+
} else if (subDetID == 1) { // ML/OT
200+
xRow = 0.5 * (constants::moduleMLOT::chip::width - constants::moduleMLOT::chip::passiveEdgeReadOut - PitchRowMLOT) - (row * PitchRowMLOT);
201+
zCol = col * PitchRowMLOT + 0.5 * (PitchRowMLOT - constants::moduleMLOT::chip::length);
230202
}
231203
}
232204

@@ -282,20 +254,13 @@ class SegmentationChip
282254
LOG(info) << "Number of rows:\nVD L0: " << constants::VD::petal::layer::nRows[0]
283255
<< "\nVD L1: " << constants::VD::petal::layer::nRows[1]
284256
<< "\nVD L2: " << constants::VD::petal::layer::nRows[2]
285-
<< "\nML stave: " << constants::ML::nRows
286-
<< "\nOT half stave: " << constants::OT::halfstave::nRows;
257+
<< "\nML/OT chip: " << constants::moduleMLOT::chip::nRows;
287258

288259
LOG(info) << "Number of cols:\nVD: " << constants::VD::petal::layer::nCols
289-
<< "\nML stave: " << constants::ML::nCols
290-
<< "\nOT half stave: " << constants::OT::halfstave::nCols;
291-
292-
LOG(info) << "Pitch rows [cm]:\nVD: " << PitchRowVD
293-
<< "\nML stave: " << PitchRowMLOT
294-
<< "\nOT stave: " << PitchRowMLOT;
260+
<< "\nML/OT chip: " << constants::moduleMLOT::chip::nCols;
295261

296-
LOG(info) << "Pitch cols [cm]:\nVD: " << PitchColVD
297-
<< "\nML stave: " << PitchColMLOT
298-
<< "\nOT stave: " << PitchColMLOT;
262+
LOG(info) << "Pitch rows x cols [um]:\nVD: " << PitchRowVD * 1e4 << "x" << PitchColVD * 1e4
263+
<< "\nML/OT chip: " << PitchRowMLOT * 1e4 << "x" << PitchColMLOT * 1e4;
299264
}
300265
};
301266

Detectors/Upgrades/ALICE3/TRK/base/include/TRKBase/Specs.h

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -76,15 +76,14 @@ constexpr double thickness{0 * mu}; // thickness of the copper metal stack - for
7676
} // namespace metalstack
7777
namespace chip
7878
{
79-
constexpr double width{25 * mm}; // width of the chip
80-
constexpr double length{32 * mm}; // length of the chip
81-
constexpr double pitchX{50 * mu}; // pitch of the row
82-
constexpr double pitchZ{50 * mu}; // pitch of the column
83-
constexpr int nRows{static_cast<int>(width / pitchX)}; // number of columns in the chip
84-
constexpr int nCols{static_cast<int>(length / pitchZ)}; // number of rows in the chip
85-
constexpr double totalThickness{silicon::thickness + metalstack::thickness}; // total thickness of the chip
86-
/// Set to 0 for the moment, to be adjusted with the actual design of the chip if needed
87-
static constexpr float passiveEdgeReadOut{1.5 * mm}; // width of the readout edge
79+
constexpr double width{25 * mm}; // width of the chip
80+
constexpr double length{32 * mm}; // length of the chip
81+
constexpr double pitchX{50 * mu}; // pitch of the row
82+
constexpr double pitchZ{50 * mu}; // pitch of the column
83+
constexpr double totalThickness{silicon::thickness + metalstack::thickness}; // total thickness of the chip
84+
static constexpr double passiveEdgeReadOut{1.5 * mm}; // width of the readout edge -> dead zone
85+
constexpr int nRows{static_cast<int>((width - passiveEdgeReadOut) / pitchX)}; // number of rows in the chip
86+
constexpr int nCols{static_cast<int>(length / pitchZ)}; // number of columns in the chip
8887
} // namespace chip
8988
namespace gaps
9089
{

Detectors/Upgrades/ALICE3/TRK/simulation/include/TRKSimulation/Digitizer.h

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
#include "TRKSimulation/ChipDigitsContainer.h"
2626

2727
#include "TRKSimulation/DigiParams.h"
28-
#include "ITSMFTSimulation/Hit.h"
28+
#include "TRKSimulation/Hit.h"
2929
#include "TRKBase/GeometryTGeo.h"
3030
#include "DataFormatsITSMFT/Digit.h"
3131
#include "DataFormatsITSMFT/ROFRecord.h"
@@ -54,7 +54,7 @@ class Digitizer
5454
o2::trk::ChipSimResponse* getChipResponse(int chipID);
5555

5656
/// Steer conversion of hits to digits
57-
void process(const std::vector<itsmft::Hit>* hits, int evID, int srcID);
57+
void process(const std::vector<o2::trk::Hit>* hits, int evID, int srcID);
5858
void setEventTime(const o2::InteractionTimeRecord& irt);
5959
double getEndTimeOfROFMax() const
6060
{
@@ -83,7 +83,7 @@ class Digitizer
8383
void setDeadChannelsMap(const o2::itsmft::NoiseMap* mp) { mDeadChanMap = mp; }
8484

8585
private:
86-
void processHit(const o2::itsmft::Hit& hit, uint32_t& maxFr, int evID, int srcID);
86+
void processHit(const o2::trk::Hit& hit, uint32_t& maxFr, int evID, int srcID);
8787
void registerDigits(o2::trk::ChipDigitsContainer& chip, uint32_t roFrame, float tInROF, int nROF,
8888
uint16_t row, uint16_t col, int nEle, o2::MCCompLabel& lbl);
8989

@@ -102,31 +102,27 @@ class Digitizer
102102
/// Get the number of columns according to the subdetector
103103
/// \param subDetID 0 for VD, 1 for ML/OT
104104
/// \param layer 0 to 2 for VD, 0 to 7 for ML/OT
105-
/// \return Number of columns (for the moment, in the entire layer(VD) or stave (ML/OT)
105+
/// \return Number of columns (In the entire layer(VD) or chip (ML/OT)
106106
int getNCols(int subDetID, int layer)
107107
{
108108
if (subDetID == 0) { // VD
109109
return constants::VD::petal::layer::nCols;
110-
} else if (subDetID == 1 && layer <= 3) { // ML
111-
return constants::ML::nCols;
112-
} else if (subDetID == 1 && layer >= 4) { // OT
113-
return constants::OT::nCols;
110+
} else if (subDetID == 1) { // ML/OT: the smallest element is a chip of 470 rows and 640 cols
111+
return constants::moduleMLOT::chip::nCols;
114112
}
115113
return 0;
116114
}
117115

118116
/// Get the number of rows according to the subdetector
119117
/// \param subDetID 0 for VD, 1 for ML/OT
120118
/// \param layer 0 to 2 for VD, 0 to 7 for ML/OT
121-
/// \return Number of rows (for the moment, in the entire layer(VD) or stave (ML/OT)
119+
/// \return Number of rows (In the entire layer(VD) or chip (ML/OT)
122120
int getNRows(int subDetID, int layer)
123121
{
124122
if (subDetID == 0) { // VD
125123
return constants::VD::petal::layer::nRows[layer];
126-
} else if (subDetID == 1 && layer <= 3) { // ML
127-
return constants::ML::nRows;
128-
} else if (subDetID == 1 && layer >= 4) { // OT
129-
return constants::OT::nRows;
124+
} else if (subDetID == 1) { // ML/OT
125+
return constants::moduleMLOT::chip::nRows;
130126
}
131127
return 0;
132128
}

Detectors/Upgrades/ALICE3/TRK/simulation/src/Digitizer.cxx

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
#include <fairlogger/Logger.h> // for LOG
2727

2828
using o2::itsmft::Digit;
29-
using o2::itsmft::Hit;
29+
using o2::trk::Hit;
3030
using Segmentation = o2::trk::SegmentationChip;
3131

3232
using namespace o2::trk;
@@ -68,12 +68,12 @@ void Digitizer::init()
6868
LOG(info) << " Depth max MLOT: " << mChipSimRespMLOT->getDepthMax();
6969
LOG(info) << " Depth min MLOT: " << mChipSimRespMLOT->getDepthMin();
7070

71-
float thicknessVD = 0.0095; // cm --- hardcoded based on geometry currently present
72-
float thicknessMLOT = 0.1; // cm --- hardcoded based on geometry currently present
71+
float thicknessVD = 0.0095; // cm --- hardcoded based on geometry currently present
72+
float thicknessMLOT = o2::trk::SegmentationChip::SiliconThicknessMLOT; // 0.01 cm = 100 um --- based on geometry currently present
7373

7474
mSimRespVDScaleX = o2::trk::constants::apts::pitchX / o2::trk::SegmentationChip::PitchRowVD;
7575
mSimRespVDScaleZ = o2::trk::constants::apts::pitchZ / o2::trk::SegmentationChip::PitchColVD;
76-
mSimRespVDShift = -mChipSimRespVD->getDepthMax(); // the curved, rescaled, sensors have a width from 0 to -45. Must add 10 um (= max depth) to match the APTS response.
76+
mSimRespVDShift = mChipSimRespVD->getDepthMax(); // the curved, rescaled, sensors have a width from 0 to -45. Must add 10 um (= max depth) to match the APTS response.
7777
mSimRespMLOTScaleX = o2::trk::constants::apts::pitchX / o2::trk::SegmentationChip::PitchRowMLOT;
7878
mSimRespMLOTScaleZ = o2::trk::constants::apts::pitchZ / o2::trk::SegmentationChip::PitchColMLOT;
7979
mSimRespMLOTShift = mChipSimRespMLOT->getDepthMax() - thicknessMLOT / 2.f; // the shift should be done considering the rescaling done to adapt to the wrong silicon thickness. TODO: remove the scaling factor for the depth when the silicon thickness match the simulated response
@@ -115,8 +115,8 @@ void Digitizer::process(const std::vector<Hit>* hits, int evID, int srcID)
115115
<< " cont.mode: " << isContinuous()
116116
<< " Min/Max ROFrames " << mROFrameMin << "/" << mROFrameMax;
117117

118-
// std::cout << "Printing segmentation info: " << std::endl;
119-
// SegmentationChip::Print();
118+
std::cout << "Printing segmentation info: " << std::endl;
119+
SegmentationChip::Print();
120120

121121
// // is there something to flush ?
122122
if (mNewROFrame > mROFrameMin) {
@@ -252,7 +252,7 @@ void Digitizer::fillOutputContainer(uint32_t frameLast)
252252
}
253253

254254
//_______________________________________________________________________
255-
void Digitizer::processHit(const o2::itsmft::Hit& hit, uint32_t& maxFr, int evID, int srcID)
255+
void Digitizer::processHit(const o2::trk::Hit& hit, uint32_t& maxFr, int evID, int srcID)
256256
{
257257
int chipID = hit.GetDetectorID(); //// the chip ID at the moment is not referred to the chip but to a wider detector element (e.g. quarter of layer or disk in VD, stave in ML, half stave in OT)
258258
int subDetID = mGeometry->getSubDetID(chipID);
@@ -333,13 +333,6 @@ void Digitizer::processHit(const o2::itsmft::Hit& hit, uint32_t& maxFr, int evID
333333
// std::cout<< "Example hit in local frame: " << exampleLoc << std::endl;
334334
// std::cout<<"Going back to glob coordinates: " << (matrix * exampleLoc) << std::endl;
335335

336-
//// adapting the depth (Y) of the chip to the APTS response maximum depth
337-
LOG(debug) << "local original: startPos = " << xyzLocS << ", endPos = " << xyzLocE << std::endl;
338-
xyzLocS.SetY(xyzLocS.Y());
339-
xyzLocE.SetY(xyzLocE.Y());
340-
341-
LOG(debug) << "rescaled Y: startPos = " << xyzLocS << ", endPos = " << xyzLocE << std::endl;
342-
343336
math_utils::Vector3D<float> step(xyzLocE);
344337
step -= xyzLocS;
345338
step *= nStepsInv; // position increment at each step
@@ -418,7 +411,10 @@ void Digitizer::processHit(const o2::itsmft::Hit& hit, uint32_t& maxFr, int evID
418411
// take into account that the ChipSimResponse depth defintion has different min/max boundaries
419412
// although the max should coincide with the surface of the epitaxial layer, which in the chip
420413
// local coordinates has Y = +SensorLayerThickness/2
414+
// LOG(info)<<"SubdetID = " << subDetID<< " shift: "<<mSimRespVDShift<<" or "<<mSimRespMLOTShift;
415+
// LOG(info)<< " Before shift: S = " << xyzLocS.Y()*1e4 << " E = " << xyzLocE.Y()*1e4;
421416
xyzLocS.SetY(xyzLocS.Y() + ((subDetID == 0) ? mSimRespVDShift : mSimRespMLOTShift));
417+
// LOG(info)<< " After shift: S = " << xyzLocS.Y()*1e4 << " E = " << xyzLocE.Y()*1e4;
422418

423419
// collect charge in every pixel which might be affected by the hit
424420
for (int iStep = nSteps; iStep--;) {
@@ -451,7 +447,8 @@ void Digitizer::processHit(const o2::itsmft::Hit& hit, uint32_t& maxFr, int evID
451447
LOG(debug) << "Error in rspmat for step " << iStep << " / " << nSteps;
452448
continue;
453449
}
454-
LOG(debug) << "rspmat valid! for step " << iStep << " / " << nSteps << ", (row,col) = (" << row << "," << col << ")";
450+
// LOG(info) << "rspmat valid! for step " << iStep << " / " << nSteps << ", (row,col) = (" << row << "," << col << ")";
451+
// LOG(info) << "rspmat valid! for step " << iStep << " / " << nSteps << " Y= " << xyzLocS.Y()*1e4 << " , (row,col) = (" << row << "," << col << ")";
455452
// rspmat->print(); // print the response matrix for debugging
456453

457454
for (int irow = AlpideRespSimMat::NPix; irow--;) {
@@ -472,17 +469,17 @@ void Digitizer::processHit(const o2::itsmft::Hit& hit, uint32_t& maxFr, int evID
472469
// fire the pixels assuming Poisson(n_response_electrons)
473470
o2::MCCompLabel lbl(hit.GetTrackID(), evID, srcID, false);
474471
auto roFrameAbs = mNewROFrame + roFrameRel;
475-
LOG(debug) << "Spanning through rows and columns; rowspan = " << rowSpan << " colspan = " << colSpan << " = " << colE << " - " << colS << " +1 " << std::endl;
472+
LOG(debug) << "\nSpanning through rows and columns; rowspan = " << rowSpan << " colspan = " << colSpan << " = " << colE << " - " << colS << " +1 ";
476473
for (int irow = rowSpan; irow--;) { // irow ranging from 4 to 0
477474
uint16_t rowIS = irow + rowS; // row distant irow from the row of the hit start
478475
for (int icol = colSpan; icol--;) { // icol ranging from 4 to 0
479476
float nEleResp = respMatrix[irow][icol]; // value of the probability of the response in this pixel
480477
if (nEleResp <= 1.e-36) {
481478
continue;
482479
}
483-
LOG(debug) << "nEleResp: value " << nEleResp << " for pixel " << irow << " " << icol << std::endl;
480+
LOG(debug) << "nEleResp: value " << nEleResp << " for pixel " << irow << " " << icol;
484481
int nEle = gRandom->Poisson(nElectrons * nEleResp); // total charge in given pixel = number of electrons generated in the hit multiplied by the probability of being detected in their position
485-
LOG(debug) << "Charge detected in the pixel: " << nEle << " for pixel " << irow << " " << icol << std::endl;
482+
LOG(debug) << "Charge detected in the pixel: " << nEle << " for pixel " << irow << " " << icol;
486483
// ignore charge which have no chance to fire the pixel
487484
if (nEle < mParams.getMinChargeToAccount()) { /// TODO: substitute with the threshold?
488485
LOG(debug) << "Ignoring pixel with nEle = " << nEle << " < min charge to account "

Steer/DigitizerWorkflow/src/TRKDigitizerSpec.cxx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -276,8 +276,8 @@ class TRKDPLDigitizerTask : BaseDPLDigitizer
276276
std::vector<o2::itsmft::Digit> mDigits{};
277277
std::vector<o2::itsmft::ROFRecord> mROFRecords{};
278278
std::vector<o2::itsmft::ROFRecord> mROFRecordsAccum{};
279-
std::vector<o2::itsmft::Hit> mHits{};
280-
std::vector<o2::itsmft::Hit>* mHitsP{&mHits};
279+
std::vector<o2::trk::Hit> mHits{};
280+
std::vector<o2::trk::Hit>* mHitsP{&mHits};
281281
o2::dataformats::MCTruthContainer<o2::MCCompLabel> mLabels{};
282282
o2::dataformats::MCTruthContainer<o2::MCCompLabel> mLabelsAccum{};
283283
std::vector<o2::itsmft::MC2ROFRecord> mMC2ROFRecordsAccum{};

0 commit comments

Comments
 (0)