CMS 3D CMS Logo

DTLVStatus.cc
Go to the documentation of this file.
1 /*
2  * See header file for a description of this class.
3  *
4  * \author Paolo Ronchese INFN Padova
5  *
6  */
7 
8 //----------------------
9 // This Class' Header --
10 //----------------------
12 
13 //-------------------------------
14 // Collaborating Class Headers --
15 //-------------------------------
18 
19 //---------------
20 // C++ Headers --
21 //---------------
22 #include <iostream>
23 #include <sstream>
24 
25 //-------------------
26 // Initializations --
27 //-------------------
28 
29 //----------------
30 // Constructors --
31 //----------------
32 DTLVStatus::DTLVStatus() : dataVersion(" "), dBuf(new DTBufferTree<int, int>) { dataList.reserve(10); }
33 
35  dataList.reserve(10);
36 }
37 
38 DTLVStatusId::DTLVStatusId() : wheelId(0), stationId(0), sectorId(0) {}
39 
40 DTLVStatusData::DTLVStatusData() : flagCFE(0), flagDFE(0), flagCMC(0), flagDMC(0) {}
41 
42 //--------------
43 // Destructor --
44 //--------------
46 
48 
50 
51 //--------------
52 // Operations --
53 //--------------
55  int wheelId, int stationId, int sectorId, int& flagCFE, int& flagDFE, int& flagCMC, int& flagDMC) const {
56  flagCFE = 0;
57  flagDFE = 0;
58  flagCMC = 0;
59  flagDMC = 0;
60 
61  std::vector<int> chanKey;
62  chanKey.reserve(3);
63  chanKey.push_back(wheelId);
64  chanKey.push_back(stationId);
65  chanKey.push_back(sectorId);
66  int ientry;
67  int searchStatus = dBuf->find(chanKey.begin(), chanKey.end(), ientry);
68  if (!searchStatus) {
69  const DTLVStatusData& data(dataList[ientry].second);
70  flagCFE = data.flagCFE;
71  flagDFE = data.flagDFE;
72  flagCMC = data.flagCMC;
73  flagDMC = data.flagDMC;
74  }
75 
76  return searchStatus;
77 }
78 
79 int DTLVStatus::get(const DTChamberId& id, int& flagCFE, int& flagDFE, int& flagCMC, int& flagDMC) const {
80  return get(id.wheel(), id.station(), id.sector(), flagCFE, flagDFE, flagCMC, flagDMC);
81 }
82 
83 const std::string& DTLVStatus::version() const { return dataVersion; }
84 
85 std::string& DTLVStatus::version() { return dataVersion; }
86 
88  dataList.clear();
89  initialize();
90  return;
91 }
92 
93 int DTLVStatus::set(int wheelId, int stationId, int sectorId, int flagCFE, int flagDFE, int flagCMC, int flagDMC) {
94  std::vector<int> chanKey;
95  chanKey.reserve(3);
96  chanKey.push_back(wheelId);
97  chanKey.push_back(stationId);
98  chanKey.push_back(sectorId);
99  int ientry;
100  int searchStatus = dBuf->find(chanKey.begin(), chanKey.end(), ientry);
101 
102  if (!searchStatus) {
103  DTLVStatusData& data(dataList[ientry].second);
104  data.flagCFE = flagCFE;
105  data.flagDFE = flagDFE;
106  data.flagCMC = flagCMC;
107  data.flagDMC = flagDMC;
108  return -1;
109  } else {
111  key.wheelId = wheelId;
112  key.stationId = stationId;
113  key.sectorId = sectorId;
115  data.flagCFE = flagCFE;
116  data.flagDFE = flagDFE;
117  data.flagCMC = flagCMC;
118  data.flagDMC = flagDMC;
119  ientry = dataList.size();
120  dataList.push_back(std::pair<DTLVStatusId, DTLVStatusData>(key, data));
121  dBuf->insert(chanKey.begin(), chanKey.end(), ientry);
122  return 0;
123  }
124 
125  return 99;
126 }
127 
128 int DTLVStatus::set(const DTChamberId& id, int flagCFE, int flagDFE, int flagCMC, int flagDMC) {
129  return set(id.wheel(), id.station(), id.sector(), flagCFE, flagDFE, flagCMC, flagDMC);
130 }
131 
132 int DTLVStatus::setFlagCFE(int wheelId, int stationId, int sectorId, int flag) {
133  int flagCFE;
134  int flagDFE;
135  int flagCMC;
136  int flagDMC;
137  get(wheelId, stationId, sectorId, flagCFE, flagDFE, flagCMC, flagDMC);
138  return set(wheelId, stationId, sectorId, flag, flagDFE, flagCMC, flagDMC);
139 }
140 
142  return setFlagCFE(id.wheel(), id.station(), id.sector(), flag);
143 }
144 
145 int DTLVStatus::setFlagDFE(int wheelId, int stationId, int sectorId, int flag) {
146  int flagCFE;
147  int flagDFE;
148  int flagCMC;
149  int flagDMC;
150  get(wheelId, stationId, sectorId, flagCFE, flagDFE, flagCMC, flagDMC);
151  return set(wheelId, stationId, sectorId, flagCFE, flag, flagCMC, flagDMC);
152 }
153 
155  return setFlagDFE(id.wheel(), id.station(), id.sector(), flag);
156 }
157 
158 int DTLVStatus::setFlagCMC(int wheelId, int stationId, int sectorId, int flag) {
159  int flagCFE;
160  int flagDFE;
161  int flagCMC;
162  int flagDMC;
163  get(wheelId, stationId, sectorId, flagCFE, flagDFE, flagCMC, flagDMC);
164  return set(wheelId, stationId, sectorId, flagCFE, flagDFE, flag, flagDMC);
165 }
166 
168  return setFlagCMC(id.wheel(), id.station(), id.sector(), flag);
169 }
170 
171 int DTLVStatus::setFlagDMC(int wheelId, int stationId, int sectorId, int flag) {
172  int flagCFE;
173  int flagDFE;
174  int flagCMC;
175  int flagDMC;
176  get(wheelId, stationId, sectorId, flagCFE, flagDFE, flagCMC, flagDMC);
177  return set(wheelId, stationId, sectorId, flagCFE, flagDFE, flagCMC, flag);
178 }
179 
181  return setFlagDMC(id.wheel(), id.station(), id.sector(), flag);
182 }
183 
184 DTLVStatus::const_iterator DTLVStatus::begin() const { return dataList.begin(); }
185 
186 DTLVStatus::const_iterator DTLVStatus::end() const { return dataList.end(); }
187 
189  std::stringstream name;
190  name << dataVersion << "_map_Mtime" << this;
191  return name.str();
192 }
193 
195  dBuf->clear();
196 
197  int entryNum = 0;
198  int entryMax = dataList.size();
199  std::vector<int> chanKey;
200  chanKey.reserve(3);
201  while (entryNum < entryMax) {
202  const DTLVStatusId& chan = dataList[entryNum].first;
203 
204  chanKey.clear();
205  chanKey.push_back(chan.wheelId);
206  chanKey.push_back(chan.stationId);
207  chanKey.push_back(chan.sectorId);
208  dBuf->insert(chanKey.begin(), chanKey.end(), entryNum++);
209  }
210 
211  return;
212 }
static AlgebraicMatrix initialize()
int get(int wheelId, int stationId, int sectorId, int &flagCFE, int &flagDFE, int &flagCMC, int &flagDMC) const
get content
Definition: DTLVStatus.cc:54
int set(int wheelId, int stationId, int sectorId, int flagCFE, int flagDFE, int flagCMC, int flagDMC)
Definition: DTLVStatus.cc:93
const std::string & version() const
access version
Definition: DTLVStatus.cc:83
std::string dataVersion
Definition: DTLVStatus.h:108
void clear()
reset content
Definition: DTLVStatus.cc:87
edm::ConstRespectingPtr< DTBufferTree< int, int > > dBuf
Definition: DTLVStatus.h:112
void initialize()
Definition: DTLVStatus.cc:194
int setFlagDMC(int wheelId, int stationId, int sectorId, int flag)
Definition: DTLVStatus.cc:171
const_iterator end() const
Definition: DTLVStatus.cc:186
std::string mapName() const
read and store full content
Definition: DTLVStatus.cc:188
U second(std::pair< T, U > const &p)
std::vector< std::pair< DTLVStatusId, DTLVStatusData > > dataList
Definition: DTLVStatus.h:110
int setFlagCFE(int wheelId, int stationId, int sectorId, int flag)
Definition: DTLVStatus.cc:132
const_iterator begin() const
Definition: DTLVStatus.cc:184
std::vector< std::pair< DTLVStatusId, DTLVStatusData > >::const_iterator const_iterator
Access methods to data.
Definition: DTLVStatus.h:98
chan
lumi = TPaveText(lowX+0.38, lowY+0.061, lowX+0.45, lowY+0.161, "NDC") lumi.SetBorderSize( 0 ) lumi...
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
int setFlagDFE(int wheelId, int stationId, int sectorId, int flag)
Definition: DTLVStatus.cc:145
int setFlagCMC(int wheelId, int stationId, int sectorId, int flag)
Definition: DTLVStatus.cc:158