Project
Loading...
Searching...
No Matches
ColumnData.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 O2_MID_COLUMNDATA_H
18#define O2_MID_COLUMNDATA_H
19
20#include <cstdint>
21#include <iostream>
22#include <array>
23
24namespace o2
25{
26namespace mid
27{
29struct ColumnData {
30 uint8_t deId = 0;
31 uint8_t columnId = 0;
32 std::array<uint16_t, 5> patterns{};
33
35 void setBendPattern(uint16_t pattern, int line) { patterns[line] = pattern; }
37 uint16_t getBendPattern(int line) const { return patterns[line]; }
38
40 void setNonBendPattern(uint16_t pattern) { patterns[4] = pattern; }
42 uint16_t getNonBendPattern() const { return patterns[4]; }
43
44 void setPattern(uint16_t pattern, int cathode, int line);
45 uint16_t getPattern(int cathode, int line) const;
46
47 void addStrip(int strip, int cathode, int line);
48
50 bool isNBPStripFired(int istrip) const { return patterns[4] & (1 << istrip); }
52 bool isBPStripFired(int istrip, int line) const { return patterns[line] & (1 << istrip); }
53
54 bool isStripFired(int istrip, int cathode, int line) const;
55
56 bool operator==(const ColumnData& right) const;
57
58 bool isEmpty() const;
59};
60
61ColumnData operator|(const ColumnData& col1, const ColumnData& col2);
62ColumnData& operator|=(ColumnData& col1, const ColumnData& col2);
63std::ostream& operator<<(std::ostream& os, const ColumnData& col);
64
66inline uint16_t getColumnDataUniqueId(uint8_t deId, uint8_t columnId) { return (static_cast<uint16_t>(deId) << 4) | columnId; }
67} // namespace mid
68} // namespace o2
69
70#endif /* O2_MID_COLUMNDATA_H */
uint32_t col
Definition RawData.h:4
GLdouble GLdouble right
Definition glcorearb.h:4077
ColumnData & operator|=(ColumnData &col1, const ColumnData &col2)
std::ostream & operator<<(std::ostream &os, const Cluster &data)
Definition Cluster.cxx:27
uint16_t getColumnDataUniqueId(uint8_t deId, uint8_t columnId)
Gets an unique ID for the ColumnData.
Definition ColumnData.h:66
ColumnData operator|(const ColumnData &col1, const ColumnData &col2)
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
Column data structure for MID.
Definition ColumnData.h:29
bool isNBPStripFired(int istrip) const
Checks if strip is fired in the non-bending plane.
Definition ColumnData.h:50
uint8_t columnId
Column in DE.
Definition ColumnData.h:31
uint16_t getBendPattern(int line) const
Gets the bending plane pattern.
Definition ColumnData.h:37
void setPattern(uint16_t pattern, int cathode, int line)
void addStrip(int strip, int cathode, int line)
bool isStripFired(int istrip, int cathode, int line) const
bool isBPStripFired(int istrip, int line) const
Checks if strip is fired in the bending plane.
Definition ColumnData.h:52
uint8_t deId
Index of the detection element.
Definition ColumnData.h:30
bool isEmpty() const
std::array< uint16_t, 5 > patterns
Strip patterns.
Definition ColumnData.h:32
bool operator==(const ColumnData &right) const
void setNonBendPattern(uint16_t pattern)
Sets the non-bending plane pattern.
Definition ColumnData.h:40
void setBendPattern(uint16_t pattern, int line)
Sets the bending plane pattern.
Definition ColumnData.h:35
uint16_t getNonBendPattern() const
Gets the non-bending plane pattern.
Definition ColumnData.h:42
uint16_t getPattern(int cathode, int line) const
std::array< uint16_t, 5 > pattern