ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
MuonSpectrometer
MuonCnv
MuonJiveXML
src
MMPrepDataRetriever.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
MMPrepDataRetriever.h
"
6
7
#include "
MuonFullIDHelper.h
"
8
#include "
MuonReadoutGeometry/MMReadoutElement.h
"
9
#include "
MuonPrepRawData/MuonPrepDataContainer.h
"
10
#include "
MuonReadoutGeometry/MuonChannelDesign.h
"
11
#include "
MuonReadoutGeometry/MuonPadDesign.h
"
12
#include "
GeoPrimitives/GeoPrimitives.h
"
13
14
#include <vector>
15
16
namespace
JiveXML
{
17
18
//--------------------------------------------------------------------------
19
20
MMPrepDataRetriever::MMPrepDataRetriever
(
const
std::string&
type
,
const
std::string& name,
const
IInterface* parent):
21
AthAlgTool
(
type
, name, parent)
22
{
23
24
declareInterface<IDataRetriever>(
this
);
25
26
}
27
28
//--------------------------------------------------------------------------
29
30
StatusCode
MMPrepDataRetriever::initialize
(){
31
32
ATH_MSG_DEBUG
(
"Initializing retriever for "
<<
dataTypeName
());
33
ATH_CHECK
(
m_sgKey
.initialize());
34
35
ATH_CHECK
(
m_idHelperSvc
.retrieve() );
36
37
return
StatusCode::SUCCESS;
38
}
39
40
//--------------------------------------------------------------------------
41
42
StatusCode
MMPrepDataRetriever::retrieve
(ToolHandle<IFormatTool> &FormatTool) {
43
44
//be verbose
45
ATH_MSG_VERBOSE
(
"Retrieving "
<<
dataTypeName
());
46
47
SG::ReadHandle<Muon::MMPrepDataContainer>
mmContainer(
m_sgKey
);
48
49
int
ndata = 0;
50
for
(
const
auto
mmCollection : *mmContainer){
51
ndata += mmCollection->size();
52
}
53
//Make the vectors to contain the information and reserve space accordingly
54
DataVect
x
;
x
.reserve(ndata);
55
DataVect
y
;
y
.reserve(ndata);
56
DataVect
z
;
z
.reserve(ndata);
57
DataVect
lengthVec; lengthVec.reserve(ndata);
58
DataVect
angleVec; angleVec.reserve(ndata);
59
DataVect
idVec; idVec.reserve(ndata);
60
DataVect
identifierVec; identifierVec.reserve(ndata);
61
DataVect
barcode; barcode.reserve(ndata);
62
63
for
(
const
auto
mmCollection : *mmContainer){
64
for
(
const
auto
data : *mmCollection){
65
66
const
MuonGM::MMReadoutElement
*element = data->detectorElement();
67
Identifier
id
= data->identify();
68
69
if
(!element) {
70
ATH_MSG_WARNING
(
"No MuonGM::MMReadoutElement for hit "
<<
id
);
71
continue
;
72
}
73
74
Amg::Vector3D
globalPos;
75
double
length
=0,
angle
=0;
76
int
channel =
m_idHelperSvc
->mmIdHelper().channel(
id
);
77
const
MuonGM::MuonChannelDesign
* design = element->
getDesign
(
id
);
78
element->
stripGlobalPosition
(
id
, globalPos);
79
length
= design->
channelLength
(channel);
80
angle
= design->
stereoAngle
();
81
82
x
.push_back(
DataType
(globalPos.x()/CLHEP::cm));
83
y
.push_back(
DataType
(globalPos.y()/CLHEP::cm));
84
z
.push_back(
DataType
(globalPos.z()/CLHEP::cm));
85
lengthVec.push_back(
DataType
(
length
/CLHEP::cm));
86
angleVec.push_back(
DataType
(
angle
));
87
identifierVec.push_back(
DataType
(
MuonFullIDHelper::getFullID
(
id
,
m_idHelperSvc
->mmIdHelper())));
88
idVec.push_back(
DataType
(
id
.get_compact() ));
89
barcode.push_back(
DataType
(0));
90
91
}
92
}
93
94
DataMap
myDataMap;
95
myDataMap[
"x"
] =
x
;
96
myDataMap[
"y"
] =
y
;
97
myDataMap[
"z"
] =
z
;
98
myDataMap[
"length"
] = lengthVec;
99
myDataMap[
"angle"
] = angleVec;
100
myDataMap[
"identifier"
] = identifierVec;
101
myDataMap[
"id"
] = idVec;
102
myDataMap[
"barcode"
] = barcode;
103
104
//Be verbose
105
ATH_MSG_DEBUG
(
dataTypeName
() <<
": "
<<
x
.size());
106
107
//forward data to formating tool
108
// Atlantis can't deal with SGkey in xml output in CSCD (freezes)
109
// So not output SGKey for now. jpt 20Aug09
110
std::string emptyStr=
""
;
111
return
FormatTool->AddToEvent(
dataTypeName
(),
m_sgKey
.key(), &myDataMap);
112
}
113
}
ATH_CHECK
#define ATH_CHECK
Evaluate an expression and check for errors.
Definition
AthCheckMacros.h:40
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition
AthMsgStreamMacros.h:28
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition
AthMsgStreamMacros.h:32
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition
AthMsgStreamMacros.h:29
DataType
OFFLINE_FRAGMENTS_NAMESPACE::PointerType DataType
Definition
CTPResultByteStreamTool.cxx:22
length
double length(const pvec &v)
Definition
FPGATrackSimLLPDoubletHoughTransformTool.cxx:26
GeoPrimitives.h
MMPrepDataRetriever.h
MMReadoutElement.h
MuonChannelDesign.h
MuonFullIDHelper.h
MuonPadDesign.h
MuonPrepDataContainer.h
angle
double angle(const GeoTrf::Vector2D &a, const GeoTrf::Vector2D &b)
Definition
TRTDetectorFactory_Full.cxx:71
y
#define y
x
#define x
z
#define z
AthAlgTool::AthAlgTool
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
Definition
AthAlgTool.cxx:16
JiveXML::MMPrepDataRetriever::dataTypeName
virtual std::string dataTypeName() const
Return the name of the data type.
Definition
MMPrepDataRetriever.h:32
JiveXML::MMPrepDataRetriever::m_sgKey
SG::ReadHandleKey< Muon::MMPrepDataContainer > m_sgKey
The storegate key for the MM collection.
Definition
MMPrepDataRetriever.h:40
JiveXML::MMPrepDataRetriever::retrieve
virtual StatusCode retrieve(ToolHandle< IFormatTool > &FormatTool)
Retrieve all the data.
Definition
MMPrepDataRetriever.cxx:42
JiveXML::MMPrepDataRetriever::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition
MMPrepDataRetriever.h:42
JiveXML::MMPrepDataRetriever::MMPrepDataRetriever
MMPrepDataRetriever(const std::string &type, const std::string &name, const IInterface *parent)
Standard Constructor.
Definition
MMPrepDataRetriever.cxx:20
JiveXML::MMPrepDataRetriever::initialize
StatusCode initialize()
Default AthAlgTool methods.
Definition
MMPrepDataRetriever.cxx:30
MuonGM::MMReadoutElement
An MMReadoutElement corresponds to a single STGC module; therefore typicaly a barrel muon station con...
Definition
MMReadoutElement.h:25
MuonGM::MMReadoutElement::getDesign
const MuonChannelDesign * getDesign(const Identifier &id) const
returns the MuonChannelDesign class for the given identifier
Definition
MMReadoutElement.h:190
MuonGM::MMReadoutElement::stripGlobalPosition
bool stripGlobalPosition(const Identifier &id, Amg::Vector3D &gpos) const
Definition
MMReadoutElement.h:277
SG::ReadHandle
Definition
StoreGate/StoreGate/ReadHandle.h:67
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition
GeoPrimitives.h:47
Identifier
Definition
IdentifierFieldParser.cxx:14
JiveXML::MuonFullIDHelper::getFullID
std::string getFullID(Identifier id, const MdtIdHelper &mdtHelper)
Get the identifier string for an MDT ID with the sequence: Detector/StationName/StationEta/StationPhi...
Definition
MuonFullIDHelper.cxx:26
JiveXML
This header is shared inbetween the C-style server thread and the C++ Athena ServerSvc.
Definition
BadLArRetriever.cxx:22
JiveXML::DataMap
std::map< std::string, DataVect > DataMap
Definition
DataType.h:59
JiveXML::DataVect
std::vector< DataType > DataVect
Defines a map with a key and a vector of DataType objects e.g.
Definition
DataType.h:58
type
MuonGM::MuonChannelDesign
Definition
MuonChannelDesign.h:21
MuonGM::MuonChannelDesign::stereoAngle
double stereoAngle() const
returns the stereo angle
Definition
MuonChannelDesign.h:67
MuonGM::MuonChannelDesign::channelLength
double channelLength(int channel) const
STRIPS ONLY: calculate channel length for a given strip number.
Definition
MuonChannelDesign.h:383
Generated on
for ATLAS Offline Software by
1.17.0