ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
graphics
VP1
VP1Systems
VP1RawDataSystems
src
VP1RawDataHandle_SCT_RDO.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3
*/
4
6
// //
7
// Implementation of class VP1RawDataHandle_SCT_RDO //
8
// //
9
// Author: Thomas H. Kittelmann (Thomas.Kittelmann@cern.ch) //
10
// Initial version: April 2008 (rewritten January 2009) //
11
// //
13
14
#include "
VP1RawDataSystems/VP1RawDataHandle_SCT_RDO.h
"
15
#include "
VP1RawDataSystems/VP1RawDataCommonData.h
"
16
#include "
VP1Utils/HitsSoNodeManager.h
"
17
#include "
VP1Utils/VP1DetInfo.h
"
18
#include "
VP1Utils/VP1LinAlgUtils.h
"
19
20
#include <Inventor/nodes/SoLineSet.h>
21
#include <Inventor/nodes/SoVertexProperty.h>
22
23
#include "
SCT_ReadoutGeometry/SCT_DetectorManager.h
"
24
#include "
InDetReadoutGeometry/SiDetectorElement.h
"
25
26
//#include "InDetReadoutGeometry/SCT_ReadoutGeometry/SCT_ModuleSideDesign.h" // old CMT
27
#include "
SCT_ReadoutGeometry/SCT_ModuleSideDesign.h
"
// new CMake
28
29
#include "
InDetRawData/SCT_RDORawData.h
"
30
#include "
InDetIdentifier/SCT_ID.h
"
31
32
#include "
GeoPrimitives/GeoPrimitives.h
"
33
34
35
//____________________________________________________________________
36
VP1RawDataHandle_SCT_RDO::VP1RawDataHandle_SCT_RDO
(
VP1RawDataCollBase
*
coll
,
const
SCT_RDORawData
*data)
37
:
VP1RawDataHandleBase
(
coll
),
m_data
(data)
38
{
39
}
40
41
//____________________________________________________________________
42
VP1RawDataHandle_SCT_RDO::~VP1RawDataHandle_SCT_RDO
()
43
{
44
}
45
46
//____________________________________________________________________
47
QStringList
VP1RawDataHandle_SCT_RDO::clicked
(
bool
verbose
)
const
48
{
49
static
const
SCT_ID
* idhelper =
VP1DetInfo::sctIDHelper
();
50
QStringList l;
51
l <<
" ===> SCT_RDORawData"
;
52
l <<
" Data word: "
+
unsignedToHex
(
m_data
->getWord());
53
if
(
verbose
) {
54
if
(idhelper) {
55
Identifier
id(
m_data
->identify());
56
bool
barrel
(
false
);
57
if
(idhelper->
barrel_ec
(
id
)==-2) l <<
" Part: End Cap C"
;
58
else
if
(idhelper->
barrel_ec
(
id
)==2) l <<
" Part: End Cap A"
;
59
else
{ l <<
" Part: Barrel"
;
barrel
=
true
; }
60
l <<
" "
+QString(
barrel
?
"Layer"
:
"Disk"
)+
": "
+QString::number(idhelper->
layer_disk
(
id
));
61
l <<
" Phi module: "
+QString::number(idhelper->
phi_module
(
id
));
62
l <<
" Eta module: "
+QString::number(idhelper->
eta_module
(
id
));
63
l <<
" Side: "
+QString(idhelper->
side
(
id
)==0 ?
"Inner"
:
"Outer"
);
64
l <<
" Group Size: "
+QString::number(
m_data
->getGroupSize());
65
if
(
m_data
->getGroupSize()>1)
66
l <<
" Strips: "
+QString::number(idhelper->
strip
(
id
))+
".."
+QString::number(idhelper->
strip
(
id
)+
m_data
->getGroupSize()-1);
67
else
68
l <<
" Strip: "
+QString::number(idhelper->
strip
(
id
));
69
}
70
//Fixme: Try dynamic cast to SCT3_RawData, and print more information if it succeeds.
71
}
72
return
l;
73
}
74
75
//____________________________________________________________________
76
SoNode *
VP1RawDataHandle_SCT_RDO::buildShape
()
77
{
78
static
const
SCT_ID
* idhelper =
VP1DetInfo::sctIDHelper
();
79
const
InDetDD::SiDetectorElement
* elem =
element
();
80
const
int
ngroup =
m_data
->getGroupSize();
81
if
(!elem||ngroup<1)
82
return
common
()->
nodeManager
()->
getShapeNode_Point
();
//fixme: warn
83
84
const
InDetDD::SCT_ModuleSideDesign
& design =
dynamic_cast<
const
InDetDD::SCT_ModuleSideDesign
&
>
(elem->design());
85
86
SoLineSet * line =
new
SoLineSet;
87
SoVertexProperty * vertices =
new
SoVertexProperty;
88
line->vertexProperty = vertices;
89
90
Amg::Transform3D
invTransform(elem->transform().inverse());
91
const
int
ifirststrip(idhelper ? idhelper->
strip
(
m_data
->identify()) : 0);
92
int
iver(0);
93
std::pair<InDetDD::SiLocalPosition,InDetDD::SiLocalPosition> localEnds;
94
for
(
int
i=0;i<ngroup;++i) {
95
std::pair< Amg::Vector3D, Amg::Vector3D > globalEnds = elem->endsOfStrip(design.
positionFromStrip
(ifirststrip+i));
96
Amg::Vector3D
localA(invTransform*globalEnds.first);
97
Amg::Vector3D
localB(invTransform*globalEnds.second);
98
localEnds = design.
endsOfStrip
(design.
positionFromStrip
(ifirststrip+i));
99
vertices->vertex.set1Value(iver++,localA.x(),localA.y(),0);
100
vertices->vertex.set1Value(iver++,localB.x(),localB.y(),0);
101
line->numVertices.set1Value(i,2);
102
}
103
return
line;
104
}
105
106
//____________________________________________________________________
107
SoTransform *
VP1RawDataHandle_SCT_RDO::buildTransform
()
108
{
109
const
InDetDD::SiDetectorElement
* elem =
element
();
110
if
(!elem)
111
return
common
()->
nodeManager
()->
getUnitTransform
();
//fixme: warn
112
return
VP1LinAlgUtils::toSoTransform
(elem->transform());
113
}
114
115
//____________________________________________________________________
116
const
InDetDD::SiDetectorElement
*
VP1RawDataHandle_SCT_RDO::element
()
const
117
{
118
const
InDetDD::SCT_DetectorManager
* detmgr =
VP1DetInfo::sctDetMgr
();
119
if
(!detmgr)
120
return
0;
121
return
detmgr->
getDetectorElement
(
m_data
->identify());
122
}
123
124
// //____________________________________________________________________
125
// SoMaterial * VP1RawDataHandle_SCT_RDO::determineMaterial() const
126
// {
127
// return common()->sctMaterial();
128
// }
129
130
//____________________________________________________________________
131
VP1RawDataFlags::InDetPartsFlags
VP1RawDataHandle_SCT_RDO::inInDetParts
()
const
132
{
133
const
InDetDD::SiDetectorElement
* elem =
element
();
134
if
(!elem)
135
return
VP1RawDataFlags::All
;
136
if
(elem->center().z()>=0)
137
return
elem->isBarrel() ?
VP1RawDataFlags::BarrelPositive
:
VP1RawDataFlags::EndCapPositive
;
138
else
139
return
elem->isBarrel() ?
VP1RawDataFlags::BarrelNegative
:
VP1RawDataFlags::EndCapNegative
;
140
141
}
DetectorZone::barrel
@ barrel
Definition
FPGATrackSimTypes.h:28
GeoPrimitives.h
HitsSoNodeManager.h
SCT_DetectorManager.h
SCT_ID.h
This is an Identifier helper class for the SCT subdetector.
SCT_ModuleSideDesign.h
SCT_RDORawData.h
SiDetectorElement.h
VP1DetInfo.h
VP1LinAlgUtils.h
VP1RawDataCommonData.h
VP1RawDataHandle_SCT_RDO.h
HitsSoNodeManager::getShapeNode_Point
SoNode * getShapeNode_Point()
Definition
HitsSoNodeManager.cxx:412
HitsSoNodeManager::getUnitTransform
SoTransform * getUnitTransform()
Definition
HitsSoNodeManager.cxx:456
InDetDD::SCT_DetectorManager
Dedicated detector manager extending the functionality of the SiDetectorManager with dedicated SCT in...
Definition
SCT_DetectorManager.h:49
InDetDD::SCT_DetectorManager::getDetectorElement
virtual const SiDetectorElement * getDetectorElement(const Identifier &id) const override
access to individual elements via Identifier
Definition
SCT_DetectorManager.cxx:66
InDetDD::SCT_ModuleSideDesign
Base class for the SCT module side design, extended by the Forward and Barrel module design.
Definition
SCT_ModuleSideDesign.h:40
InDetDD::SCT_ModuleSideDesign::positionFromStrip
virtual SiLocalPosition positionFromStrip(const int stripNumber) const
gives position of strip center ALTERNATIVE/PREFERED way is to use localPositionOfCell(const SiCellId ...
Definition
SCT_ModuleSideDesign.cxx:95
InDetDD::SCT_ModuleSideDesign::endsOfStrip
virtual std::pair< SiLocalPosition, SiLocalPosition > endsOfStrip(const SiLocalPosition &position) const override=0
give the ends of strips
InDetDD::SiDetectorElement
Class to hold geometrical description of a silicon detector element.
Definition
SiDetectorElement.h:109
SCT_ID
This is an Identifier helper class for the SCT subdetector.
Definition
SCT_ID.h:68
SCT_ID::layer_disk
int layer_disk(const Identifier &id) const
Definition
SCT_ID.h:687
SCT_ID::side
int side(const Identifier &id) const
Definition
SCT_ID.h:705
SCT_ID::phi_module
int phi_module(const Identifier &id) const
Definition
SCT_ID.h:693
SCT_ID::strip
int strip(const Identifier &id) const
Definition
SCT_ID.h:717
SCT_ID::barrel_ec
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0).
Definition
SCT_ID.h:681
SCT_ID::eta_module
int eta_module(const Identifier &id) const
Definition
SCT_ID.h:699
SCT_RDORawData
Definition
SCT_RDORawData.h:24
VP1DetInfo::sctDetMgr
static const InDetDD::SCT_DetectorManager * sctDetMgr()
Definition
VP1DetInfo.cxx:146
VP1DetInfo::sctIDHelper
static const SCT_ID * sctIDHelper()
Definition
VP1DetInfo.cxx:165
VP1LinAlgUtils::toSoTransform
static SoTransform * toSoTransform(const HepGeom::Transform3D &, SoTransform *t=0)
Definition
VP1LinAlgUtils.cxx:40
VP1RawDataCollBase
Definition
VP1RawDataCollBase.h:29
VP1RawDataCommonData::nodeManager
HitsSoNodeManager * nodeManager() const
Definition
VP1RawDataCommonData.h:42
VP1RawDataFlags::EndCapPositive
@ EndCapPositive
Definition
VP1RawDataFlags.h:27
VP1RawDataFlags::EndCapNegative
@ EndCapNegative
Definition
VP1RawDataFlags.h:28
VP1RawDataFlags::All
@ All
Definition
VP1RawDataFlags.h:31
VP1RawDataFlags::BarrelPositive
@ BarrelPositive
Definition
VP1RawDataFlags.h:25
VP1RawDataFlags::BarrelNegative
@ BarrelNegative
Definition
VP1RawDataFlags.h:26
VP1RawDataHandleBase::common
VP1RawDataCommonData * common() const
Definition
VP1RawDataHandleBase.h:41
VP1RawDataHandleBase::VP1RawDataHandleBase
VP1RawDataHandleBase(VP1RawDataCollBase *)
Definition
VP1RawDataHandleBase.cxx:50
VP1RawDataHandleBase::unsignedToHex
static QString unsignedToHex(unsigned)
Definition
VP1RawDataHandleBase.cxx:158
VP1RawDataHandleBase::coll
VP1RawDataCollBase * coll() const
Definition
VP1RawDataHandleBase.h:40
VP1RawDataHandle_SCT_RDO::buildTransform
SoTransform * buildTransform()
Definition
VP1RawDataHandle_SCT_RDO.cxx:107
VP1RawDataHandle_SCT_RDO::clicked
QStringList clicked(bool verbose) const
Definition
VP1RawDataHandle_SCT_RDO.cxx:47
VP1RawDataHandle_SCT_RDO::inInDetParts
VP1RawDataFlags::InDetPartsFlags inInDetParts() const
Definition
VP1RawDataHandle_SCT_RDO.cxx:131
VP1RawDataHandle_SCT_RDO::~VP1RawDataHandle_SCT_RDO
virtual ~VP1RawDataHandle_SCT_RDO()
Definition
VP1RawDataHandle_SCT_RDO.cxx:42
VP1RawDataHandle_SCT_RDO::element
const InDetDD::SiDetectorElement * element() const
Definition
VP1RawDataHandle_SCT_RDO.cxx:116
VP1RawDataHandle_SCT_RDO::m_data
const SCT_RDORawData * m_data
Definition
VP1RawDataHandle_SCT_RDO.h:37
VP1RawDataHandle_SCT_RDO::VP1RawDataHandle_SCT_RDO
VP1RawDataHandle_SCT_RDO(VP1RawDataCollBase *, const SCT_RDORawData *)
Definition
VP1RawDataHandle_SCT_RDO.cxx:36
VP1RawDataHandle_SCT_RDO::buildShape
SoNode * buildShape()
Definition
VP1RawDataHandle_SCT_RDO.cxx:76
verbose
bool verbose
Definition
hcg.cxx:75
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition
GeoPrimitives.h:46
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition
GeoPrimitives.h:47
Identifier
Definition
IdentifierFieldParser.cxx:14
Generated on
for ATLAS Offline Software by
1.17.0