ATLAS Offline Software
MuonSpectrometer
MuonDetDescr
MuonRegionSelector
src
sTGC_RegSelCondAlg.cxx
Go to the documentation of this file.
1
15
#include <iostream>
16
#include <fstream>
17
#include <string>
18
19
#include "CLHEP/Units/SystemOfUnits.h"
20
#include "
Identifier/IdentifierHash.h
"
21
22
#include "
RegSelLUT/RegSelModule.h
"
23
#include "
RegSelLUT/RegSelSiLUT.h
"
24
25
#include "
MuonReadoutGeometry/MuonReadoutElement.h
"
26
28
#include "
MuonReadoutGeometry/sTgcReadoutElement.h
"
29
30
#include "
MuonReadoutGeometry/MuonStation.h
"
31
#include "
MuonNSWCommonDecode/NSWOfflineHelper.h
"
32
33
#include "
sTGC_RegSelCondAlg.h
"
34
35
36
sTGC_RegSelCondAlg::sTGC_RegSelCondAlg
(
const
std::string&
name
, ISvcLocator* pSvcLocator):
37
MuonRegSelCondAlg
(
name
, pSvcLocator )
38
{
39
ATH_MSG_DEBUG
(
"sTGC_RegSelCondAlg::sTGC_RegSelCondAlg() "
<<
name
);
40
}
41
42
43
44
45
std::unique_ptr<RegSelSiLUT>
sTGC_RegSelCondAlg::createTable
(
const
EventContext& ctx, EventIDRange& id_range )
const
{
46
47
SG::ReadCondHandle<MuonGM::MuonDetectorManager>
manager
(
m_detMgrKey
, ctx );
48
49
if
( !
manager
.range( id_range ) ) {
50
ATH_MSG_ERROR
(
"Failed to retrieve validity range for "
<<
manager
.key());
51
return
{
nullptr
};
52
}
53
54
const
sTgcIdHelper
*
helper
=
manager
->stgcIdHelper();
55
56
std::vector<Identifier>::const_iterator idfirst =
helper
->module_begin();
57
std::vector<Identifier>::const_iterator idlast =
helper
->module_end();
58
60
const
IdContext
ModuleContext =
helper
->module_context();
61
62
ATH_MSG_DEBUG
(
"createTable()"
);
63
64
std::unique_ptr<RegSelSiLUT>
lut
= std::make_unique<RegSelSiLUT>(
RegSelSiLUT::sTGC
);
65
66
67
for
( std::vector<Identifier>::const_iterator
i
=idfirst ;
i
!=idlast ; ++
i
) {
68
69
Identifier
Id = *
i
;
70
IdentifierHash
hashId;
71
72
helper
->get_hash( Id, hashId, &ModuleContext );
73
74
const
MuonGM::sTgcReadoutElement
* stgc =
manager
->getsTgcReadoutElement(Id);
75
if
(!stgc)
continue
;
76
77
// std::cout << "stgc station name: " << mm->getStationName() << "\teta: " << mm->getStationEta() << "\tphi: " << mm->getStationPhi() << std::endl;
78
79
std::string
stationName
=stgc->
getStationName
();
80
int
stationEta
=stgc->
getStationEta
();
81
int
stationPhi
=stgc->
getStationPhi
();
82
int
multilayer =
helper
->multilayer(Id);
83
84
char
side
=
stationEta
< 0 ?
'C'
:
'A'
;
85
86
87
88
Amg::Vector3D
sTgcPos = stgc->
center
();
89
90
double
swidth = stgc->
getSsize
();
91
double
lwidth = stgc->
getLongSsize
();
92
93
double
ycutout = stgc->
getPadDesign
(1)->
yCutout
;
94
95
double
length
= stgc->
getRsize
();
96
double
depth
= stgc->
getZsize
();
97
98
double
moduleR = std::sqrt( sTgcPos.mag()*sTgcPos.mag() - sTgcPos.z()*sTgcPos.z());
99
100
double
zmin
= sTgcPos.z()-0.5*
depth
;
101
double
zmax
= sTgcPos.z()+0.5*
depth
;
102
103
double
rmin = moduleR-0.5*
length
;
104
double
rmax = std::sqrt( (moduleR+0.5*
length
)*(moduleR+0.5*
length
) + lwidth*lwidth/4 );
105
106
double
dphi1 =
std::atan
( (0.5*lwidth)/(moduleR+0.5*
length
) );
107
double
dphi2 =
std::atan
( (0.5*swidth)/(moduleR-0.5*
length
) );
108
109
double
dphi = ( dphi1 > dphi2 ? dphi1 : dphi2 );
110
111
if
( ycutout > 0 ) {
112
double
rcutout = moduleR+0.5*
length
- ycutout;
113
double
dphicutout =
std::atan
( (0.5*lwidth)/rcutout );
114
if
( dphi < dphicutout ) dphi = dphicutout;
115
}
116
117
double
phimin = sTgcPos.phi()-dphi;
118
double
phimax = sTgcPos.phi()+dphi;
119
120
if
( phimin >
M_PI
) phimin -= 2*
M_PI
;
121
if
( phimin < -
M_PI
) phimin += 2*
M_PI
;
122
123
int
layerid = multilayer;
124
int
detid = (
side
==
'C'
? -1 : 1 );
125
127
Muon::nsw::helper::NSWOfflineRobId
robIdHelper(
stationName
,
static_cast<
int8_t
>
(
stationEta
),
static_cast<
uint8_t
>
(
stationPhi
));
128
for
(
uint32_t
robId : robIdHelper.
get_ids
()){
129
RegSelModule
m
(
zmin
,
zmax
, rmin, rmax, phimin, phimax, layerid, detid, robId, hashId );
130
lut
->addModule(
m
);
131
}
132
133
}
134
135
lut
->initialise();
136
137
return
lut
;
138
}
MuonRegSelCondAlg
Definition:
MuonRegSelCondAlg.h:32
RegSelModule
Definition:
RegSelModule.h:38
Muon::nsw::STGTPSegments::moduleIDBits::stationPhi
constexpr uint8_t stationPhi
station Phi 1 to 8
Definition:
NSWSTGTPDecodeBitmaps.h:161
egammaParameters::depth
@ depth
pointing depth of the shower as calculated in egammaqgcld
Definition:
egammaParamDefs.h:276
python.SystemOfUnits.m
int m
Definition:
SystemOfUnits.py:91
SG::ReadCondHandle
Definition:
ReadCondHandle.h:44
sTGC_RegSelCondAlg.h
emacs: this is -*- c++ -*-
xAOD::uint8_t
uint8_t
Definition:
Muon_v1.cxx:557
MuonGM::MuonClusterReadoutElement::center
virtual const Amg::Vector3D & center() const override
Return the center of the element.
Definition:
MuonClusterReadoutElement.h:125
dumpTgcDigiDeadChambers.stationName
dictionary stationName
Definition:
dumpTgcDigiDeadChambers.py:30
xAOD::uint32_t
setEventNumber uint32_t
Definition:
EventInfo_v1.cxx:127
sTgcReadoutElement.h
PixelAthClusterMonAlgCfg.zmin
zmin
Definition:
PixelAthClusterMonAlgCfg.py:169
MuonGM::MuonReadoutElement::getZsize
double getZsize() const
Definition:
MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:198
M_PI
#define M_PI
Definition:
ActiveFraction.h:11
RegSelSiLUT.h
emacs: this is -*- c++ -*-
MuonGM::MuonReadoutElement::getLongSsize
double getLongSsize() const
Definition:
MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:199
MuonRegSelCondAlg::m_detMgrKey
SG::ReadCondHandleKey< MuonGM::MuonDetectorManager > m_detMgrKey
MuonDetectorManager from the conditions store.
Definition:
MuonRegSelCondAlg.h:46
RegSelModule.h
sTGC_RegSelCondAlg::sTGC_RegSelCondAlg
sTGC_RegSelCondAlg(const std::string &name, ISvcLocator *pSvcLocator)
sTGC naming convention headers
Definition:
sTGC_RegSelCondAlg.cxx:36
ITkPixEncoding::lut
constexpr auto lut(Generator &&f)
Definition:
ITkPixQCoreEncodingLUT.h:19
drawFromPickle.atan
atan
Definition:
drawFromPickle.py:36
TRT::Hit::side
@ side
Definition:
HitInfo.h:83
runBeamSpotCalibration.helper
helper
Definition:
runBeamSpotCalibration.py:112
MuonGM::MuonReadoutElement::getSsize
double getSsize() const
Definition:
MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:196
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition:
AthMsgStreamMacros.h:33
MuonGM::MuonReadoutElement::getStationName
const std::string & getStationName() const
Definition:
MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:190
sTGC_RegSelCondAlg::createTable
std::unique_ptr< RegSelSiLUT > createTable(const EventContext &ctx, EventIDRange &id_range) const override
Definition:
sTGC_RegSelCondAlg.cxx:45
lumiFormat.i
int i
Definition:
lumiFormat.py:85
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition:
AthMsgStreamMacros.h:29
MuonGM::sTgcReadoutElement
An sTgcReadoutElement corresponds to a single STGC module; therefore typicaly a barrel muon station c...
Definition:
MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:30
PixelAthClusterMonAlgCfg.zmax
zmax
Definition:
PixelAthClusterMonAlgCfg.py:169
MuonReadoutElement.h
Muon::nsw::helper::NSWOfflineRobId
Definition:
NSWOfflineHelper.h:49
name
std::string name
Definition:
Control/AthContainers/Root/debug.cxx:228
IdentifierHash.h
sTgcIdHelper
Definition:
sTgcIdHelper.h:55
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition:
GeoPrimitives.h:47
NSWOfflineHelper.h
Muon::nsw::helper::NSWOfflineRobId::get_ids
const std::vector< uint32_t > & get_ids() const
Definition:
NSWOfflineHelper.h:54
MuonGM::MuonReadoutElement::getRsize
double getRsize() const
Definition:
MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:197
MuonGM::MuonPadDesign::yCutout
double yCutout
Definition:
MuonPadDesign.h:67
python.Logging.manager
manager
Definition:
PhysicsAnalysis/D3PDTools/AnaAlgorithm/python/Logging.py:92
MuonGM::sTgcReadoutElement::getPadDesign
const MuonPadDesign * getPadDesign(const Identifier &id) const
returns the MuonChannelDesign class for the given identifier
Definition:
MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:285
Muon::nsw::STGTPSegments::moduleIDBits::stationEta
constexpr uint8_t stationEta
1 to 3
Definition:
NSWSTGTPDecodeBitmaps.h:159
IdentifierHash
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
Definition:
IdentifierHash.h:25
RegSelSiLUT::sTGC
@ sTGC
Definition:
RegSelSiLUT.h:45
MuonStation.h
IdContext
This class saves the "context" of an expanded identifier (ExpandedIdentifier) for compact or hash ver...
Definition:
IdContext.h:26
length
double length(const pvec &v)
Definition:
FPGATrackSimLLPDoubletHoughTransformTool.cxx:26
MuonGM::MuonReadoutElement::getStationPhi
int getStationPhi() const
Definition:
MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:194
MuonGM::MuonReadoutElement::getStationEta
int getStationEta() const
Definition:
MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:193
Identifier
Definition:
IdentifierFieldParser.cxx:14
Generated on Sun Dec 22 2024 21:18:30 for ATLAS Offline Software by
1.8.18