1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
|
#ifndef DTReadOutMapping_H
#define DTReadOutMapping_H
/** \class DTReadOutMapping
*
* Description:
* Class to map read-out channels to physical drift tubes
* Many details related to this class are described in
* internal note IN 2010_033. In particular the compact
* format is described there.
*
* \author Paolo Ronchese INFN Padova
*
*/
//----------------------
// Base Class Headers --
//----------------------
//------------------------------------
// Collaborating Class Declarations --
//------------------------------------
#include "CondFormats/Serialization/interface/Serializable.h"
#include "DataFormats/MuonDetId/interface/DTWireId.h"
#include "DataFormats/Common/interface/AtomicPtrCache.h"
#include "FWCore/Utilities/interface/ConstRespectingPtr.h"
//---------------
// C++ Headers --
//---------------
#include <vector>
#include <string>
class DTReadOutMappingCache;
template <class Key, class Content>
class DTBufferTree;
// ---------------------
// -- Class Interface --
// ---------------------
class DTReadOutGeometryLink {
public:
DTReadOutGeometryLink();
~DTReadOutGeometryLink();
int dduId;
int rosId;
int robId;
int tdcId;
int channelId;
int wheelId;
int stationId;
int sectorId;
int slId;
int layerId;
int cellId;
COND_SERIALIZABLE;
};
class DTReadOutMapping {
public:
/** Constructor
*/
DTReadOutMapping();
DTReadOutMapping(DTReadOutMapping const&) = delete;
DTReadOutMapping& operator=(DTReadOutMapping const&) = delete;
DTReadOutMapping(const std::string& cell_map_version, const std::string& rob_map_version);
/** Destructor
*/
~DTReadOutMapping();
enum type { plain, compact };
/** Operations
*/
/// transform identifiers
int readOutToGeometry(int dduId, int rosId, int robId, int tdcId, int channelId, DTWireId& wireId) const;
int readOutToGeometry(int dduId,
int rosId,
int robId,
int tdcId,
int channelId,
int& wheelId,
int& stationId,
int& sectorId,
int& slId,
int& layerId,
int& cellId) const;
int geometryToReadOut(int wheelId,
int stationId,
int sectorId,
int slId,
int layerId,
int cellId,
int& dduId,
int& rosId,
int& robId,
int& tdcId,
int& channelId) const;
int geometryToReadOut(const DTWireId& wireId, int& dduId, int& rosId, int& robId, int& tdcId, int& channelId) const;
type mapType() const;
/// access parent maps identifiers
const std::string& mapCellTdc() const;
std::string& mapCellTdc();
const std::string& mapRobRos() const;
std::string& mapRobRos();
/// clear map
void clear();
/// insert connection
int insertReadOutGeometryLink(int dduId,
int rosId,
int robId,
int tdcId,
int channelId,
int wheelId,
int stationId,
int sectorId,
int slId,
int layerId,
int cellId);
/// Access methods to the connections
typedef std::vector<DTReadOutGeometryLink>::const_iterator const_iterator;
const_iterator begin() const;
const_iterator end() const;
/// Expand to full map
const DTReadOutMapping* fullMap() const;
private:
edm::AtomicPtrCache<DTReadOutMappingCache> const& atomicCache() const { return atomicCache_; }
edm::AtomicPtrCache<DTReadOutMappingCache>& atomicCache() { return atomicCache_; }
static DTReadOutMapping* expandMap(const DTReadOutMapping& compMap);
std::string cellMapVersion;
std::string robMapVersion;
std::vector<DTReadOutGeometryLink> readOutChannelDriftTubeMap;
edm::AtomicPtrCache<DTReadOutMappingCache> atomicCache_ COND_TRANSIENT;
edm::ConstRespectingPtr<DTBufferTree<int, int> > rgBuf COND_TRANSIENT;
edm::ConstRespectingPtr<DTBufferTree<int, int> > grBuf COND_TRANSIENT;
/// read and store full content
void cacheMap() const;
std::string mapNameRG() const;
std::string mapNameGR() const;
COND_SERIALIZABLE;
};
#endif // DTReadOutMapping_H
|