ATLAS Offline Software
Loading...
Searching...
No Matches
SCT_Chip.h
Go to the documentation of this file.
1// -*- C++ -*-
2
3/*
4 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
5*/
6
12
13#ifndef SCT_ConditionTools_SCT_Chip_h
14#define SCT_ConditionTools_SCT_Chip_h
15
16#include <bitset>
17#include <cstdint>
18#include <iomanip>
19#include <iostream>
20#include <string>
21#include <vector>
22
27class SCT_Chip {
28
30 friend std::ostream& operator<<(std::ostream& output, const SCT_Chip& chip);
31
32public:
33
35 SCT_Chip();
37 SCT_Chip(short id, short config, uint32_t mask0, uint32_t mask1, uint32_t mask2, uint32_t mask3);
39 ~SCT_Chip() = default;
40
42 inline short id() const {return m_id;}
44 inline short inPort() const {return m_in;}
46 inline short outPort() const {return m_out;}
48 inline bool isEnd() const {return m_end;}
50 inline bool isMaster() const {return m_master;}
52 inline bool canBeMaster() const {return (m_id == 0 || m_id == 6);}
53
55 inline bool slaveConfiguredAsMaster() const {return (!canBeMaster() && isMaster());}
56
58 bool initializeMaskFromInts(uint32_t mask0, uint32_t mask1, uint32_t mask2, uint32_t mask3);
60 bool initializeMaskFromString(const std::string & maskString);
62 bool channelIsMasked (const unsigned int channelNumber) const;
64 unsigned int numberOfMaskedChannels() const;
66 void appendBadStripsToVector(std::vector<int> & maskedChannelVector) const;
67
68private:
69
71 enum {nSubwords = 4, lenSubword = 32, nBitsMask = 128, nBitsConfig = 16};
72
74 enum {RO_BIT = 0, CAL_BIT = 2, TR_BIT = 4, EDGE_BIT = 6, MASK_BIT = 7,
75 ACC_BIT = 8, IN_BIT = 9, OUT_BIT = 10, MASTER_BIT = 11, END_BIT = 12,
76 FEED_BIT = 13};
77
78 short m_id;
79 std::bitset<nBitsConfig> m_config;
80 short m_in;
81 short m_out;
82 bool m_end;
83 bool m_master;
84 std::bitset<nBitsMask> m_mask;
85};
86
88inline std::ostream& operator<<(std::ostream& output, const SCT_Chip& chip) {
89 output << "Chip " << std::setw(2) << chip.m_id << ":\t"
90 << (chip.m_master ? "MASTER" : "SLAVE") << (chip.m_end ? " END" : "")
91 << ", IN PORT = " << chip.m_in << ", OUT PORT = " << chip.m_out << "\n"
92 << "Config = " << chip.m_config << "\n"
93 << "Mask = " << chip.m_mask;
94 return output;
95}
96
97#endif // SCT_ConditionTools_SCT_Chip_h
std::ostream & operator<<(std::ostream &output, const SCT_Chip &chip)
Output stream for printing chip information.
Definition SCT_Chip.h:88
short m_id
Chip Id.
Definition SCT_Chip.h:78
std::bitset< nBitsMask > m_mask
Chip strip mask.
Definition SCT_Chip.h:84
unsigned int numberOfMaskedChannels() const
Number of masked channels.
Definition SCT_Chip.cxx:75
short inPort() const
Active input port.
Definition SCT_Chip.h:44
short m_in
Active input port.
Definition SCT_Chip.h:80
bool m_master
Is chip a master.
Definition SCT_Chip.h:83
bool isMaster() const
Is chip a master.
Definition SCT_Chip.h:50
short outPort() const
Active output port.
Definition SCT_Chip.h:46
bool channelIsMasked(const unsigned int channelNumber) const
Gives status of channel at channelNumber.
Definition SCT_Chip.cxx:70
bool initializeMaskFromString(const std::string &maskString)
Initialize channel mask from a string.
Definition SCT_Chip.cxx:45
SCT_Chip()
Default constructor.
Definition SCT_Chip.cxx:10
bool initializeMaskFromInts(uint32_t mask0, uint32_t mask1, uint32_t mask2, uint32_t mask3)
Initialize channel mask from four ins (as in DB)
Definition SCT_Chip.cxx:28
bool isEnd() const
Is chip an end.
Definition SCT_Chip.h:48
bool canBeMaster() const
Can chip be a master (i.e position 0 or 6)
Definition SCT_Chip.h:52
std::bitset< nBitsConfig > m_config
Chip configuration mask.
Definition SCT_Chip.h:79
@ MASK_BIT
Definition SCT_Chip.h:74
@ ACC_BIT
Definition SCT_Chip.h:75
@ EDGE_BIT
Definition SCT_Chip.h:74
@ OUT_BIT
Definition SCT_Chip.h:75
@ FEED_BIT
Definition SCT_Chip.h:76
@ END_BIT
Definition SCT_Chip.h:75
@ CAL_BIT
Definition SCT_Chip.h:74
@ MASTER_BIT
Definition SCT_Chip.h:75
~SCT_Chip()=default
Default destructor.
@ nBitsConfig
Definition SCT_Chip.h:71
@ lenSubword
Definition SCT_Chip.h:71
@ nSubwords
Definition SCT_Chip.h:71
@ nBitsMask
Definition SCT_Chip.h:71
short id() const
Chip Id.
Definition SCT_Chip.h:42
short m_out
Active output port.
Definition SCT_Chip.h:81
bool m_end
Is chip an end.
Definition SCT_Chip.h:82
void appendBadStripsToVector(std::vector< int > &maskedChannelVector) const
Append masked channels' numbers to a user-supplied vector.
Definition SCT_Chip.cxx:80
bool slaveConfiguredAsMaster() const
Is this a slave chip mistakenly configured as a master.
Definition SCT_Chip.h:55
friend std::ostream & operator<<(std::ostream &output, const SCT_Chip &chip)
Outputstream operator for chip.
Definition SCT_Chip.h:88