|
ATLAS Offline Software
|
Go to the documentation of this file.
17 if (!stgcContainer.isValid()) {
22 if (!MuonDetMgr) {
return false; }
23 unsigned int n_hits{0};
27 if (!stgcContainer->size())
ATH_MSG_DEBUG(
"sTGC Sim container is empty");
29 if(hit.depositEnergy()==0.)
continue;
32 int simId = hit.sTGCId();
47 int detNumber = -999, wedgeId = -999, wedgeType = -999;
48 if(stname.length()!=4) {
49 ATH_MSG_WARNING(
"sTGC validation: station Name exceeds 4 charactes, filling dummy information for detNumber, wedgeId and wedgeType");
52 detNumber =
atoi(stname.substr(2,1).c_str());
53 wedgeId = (stname.substr(1,1).compare(
"L")) ? 0 : 1;
54 wedgeType = (stname.substr(3,1).compare(
"P")) ? 0 : 1;
58 side == 1 ? steta+1 : -steta-1,
59 (stphi-1)/2+1,multilayer,
layer,1,1 );
64 int isSmall = stName[2] ==
'S';
66 if(
type == 2 && off_channel == 63) {
67 ATH_MSG_DEBUG(
"Found sTGC Wire Sim Hit with channel number 63 (dead region), skipping this hit");
73 ATH_MSG_ERROR(
"sTGCSimHitVariables::fillVariables() - Failed to retrieve sTgcReadoutElement for "<<
idHelperSvc()->stgcIdHelper().print_to_string(offId).c_str());
77 if( !
idHelperSvc()->stgcIdHelper().is_stgc(offId) ){
80 if( !
idHelperSvc()->stgcIdHelper().is_muon(offId) ){
85 <<
" " <<
idHelperSvc()->stgcIdHelper().is_tgc(offId) <<
" " <<
idHelperSvc()->stgcIdHelper().is_csc(offId) <<
" " <<
idHelperSvc()->stgcIdHelper().is_mm(offId) );
92 int barcode = hit.particleLink().barcode();
102 const Amg::Vector3D& globalDirection = hit.globalDirection();
109 const Amg::Vector3D& globalPrePosition = hit.globalPrePosition();
111 if (hit.kineticEnergy() < 0.0) {
115 ATH_MSG_DEBUG(
"sTGC geometry, retrieving detector element for: isSmall " << isSmall <<
" eta " <<
idHelperSvc()->stgcIdHelper().stationEta(offId)
116 <<
" phi " <<
idHelperSvc()->stgcIdHelper().stationPhi(offId) <<
" ml " <<
idHelperSvc()->stgcIdHelper().multilayer(offId) );
131 double scale = -rSurface_pos.z()/ldir.z();
140 int stripNumber = detEl->
stripNumber(posOnSurf,newId);
141 if( stripNumber == -1 ){
149 ATH_MSG_WARNING(
"sTGC validation: sTgc id has bad layer field(2)! " << std::endl <<
" " <<
idHelperSvc()->stgcIdHelper().print_to_string(offId) << std::endl
150 <<
" " <<
idHelperSvc()->stgcIdHelper().print_to_string(oldId) <<
" stripN " << stripNumber );
155 ATH_MSG_WARNING(
"sTGC validation: failed to obtain local position for identifier " <<
idHelperSvc()->stgcIdHelper().print_to_string(offId) );
159 ATH_MSG_DEBUG(
"sTGC Global hit: r " << hit.globalPosition().perp() <<
", phi " << hit.globalPosition().phi() <<
", z " << hit.globalPosition().z()
160 <<
"; detEl: r " << detpos.perp() <<
", phi " << detpos.phi() <<
", z " << detpos.z()
161 <<
"; surf z " << surf.
center().z() <<
", ml " << multilayer <<
", l " <<
layer );
163 ATH_MSG_DEBUG(
" detEl: x " << dSurface_pos.x() <<
" y " << dSurface_pos.y() <<
" z " << dSurface_pos.z());
164 ATH_MSG_DEBUG(
"sTGC Fast digit: x " << fastDigitPos.x() <<
" y " << fastDigitPos.y()
165 <<
", gToL: x " << rSurface_pos.x() <<
" y " << rSurface_pos.y() <<
" z " << rSurface_pos.z() );
SG::ReadHandleKey< sTGCSimHitCollection > m_key
int GetSide(const int &hid) const
virtual const sTgcIdHelper & stgcIdHelper() const =0
access to TgcIdHelper
const Amg::Transform3D & absTransform() const
VectorBranch< int > & m_NSWsTGC_trackId
VectorBranch< float > & m_NSWsTGC_FastDigitRsurfacePositionY
Eigen::Matrix< double, 2, 1 > Vector2D
Identifier channelID(int stationName, int stationEta, int stationPhi, int multilayer, int gasGap, int channelType, int channel) const
ThreeVectorBranch m_NSWsTGC_detector_globalPosition
VectorBranch< int > & m_NSWsTGC_wedgeId
static const sTgcHitIdHelper * GetHelper()
VectorBranch< int > & m_NSWsTGC_detectorNumber
const MuonGM::MuonDetectorManager * getDetMgr(const EventContext &ctx) const
void push_back(const Identifier &id) override final
VectorBranch< bool > & m_NSWsTGC_isInsideBounds
const Amg::Vector3D & center() const
Returns the center position of the Surface.
virtual const Trk::PlaneSurface & surface() const override
access to chamber surface (phi orientation), uses the first gas gap
virtual bool stripPosition(const Identifier &id, Amg::Vector2D &pos) const override final
strip position - should be renamed to channel position If the strip number is outside the range of va...
bool declare_dependency(Key &key)
Declares the ReadHandle/ ReadCondHandleKey as data dependency of the algorithm.
void push_back(const Amg::Vector3D &vec)
interface using the Amg::Vector3D
VectorBranch< float > & m_NSWsTGC_globalTime
virtual bool insideBounds(const Amg::Vector2D &locpos, double tol1=0., double tol2=0.) const override
This method calls the inside() method of the Bounds.
int GetMultiLayer(const int &hid) const
VectorBranch< float > & m_NSWsTGC_kineticEnergy
bool declare_keys() override final
int channel(const Identifier &id) const override
int GetLayer(const int &hid) const
An sTgcReadoutElement corresponds to a single STGC module; therefore typicaly a barrel muon station c...
Eigen::Affine3d Transform3D
ThreeVectorBranch m_NSWsTGC_hitGlobalDirection
VectorBranch< int > & m_NSWsTGC_wedgeType
sTGCSimHitVariables(MuonTesterTree &tree, const std::string &container_name, MSG::Level msglvl)
const Amg::Vector3D globalPosition() const
void push_back(const T &value)
Adds a new element at the end of the vector.
const std::string & stationNameString(const int &index) const
sTgcIdentifierBranch m_NSWsTGC_Id
ThreeVectorBranch m_NSWsTGC_hitGlobalPosition
ThreeVectorBranch m_NSWsTGC_hitGlobalPrePosition
std::string GetStationName(const int &hid) const
Eigen::Matrix< double, 3, 1 > Vector3D
int GetZSector(const int &hid) const
virtual int stripNumber(const Amg::Vector2D &pos, const Identifier &id) const override final
strip number corresponding to local position.
ThreeVectorBranch m_NSWsTGC_hitToRsurfacePosition
The MuonDetectorManager stores the transient representation of the Muon Spectrometer geometry and pro...
#define ATH_MSG_WARNING(x)
VectorBranch< float > & m_NSWsTGC_depositEnergy
const Muon::IMuonIdHelperSvc * idHelperSvc() const
VectorBranch< int > & m_NSWsTGC_stripNumber
int atoi(std::string_view str)
Helper functions to unpack numbers decoded in string into integers and doubles The strings are requir...
const sTgcReadoutElement * getsTgcReadoutElement(const Identifier &id) const
access via extended identifier (requires unpacking)
VectorBranch< float > & m_NSWsTGC_FastDigitRsurfacePositionX
const Amg::Transform3D & transform() const
Returns HepGeom::Transform3D by reference.
VectorBranch< int > & m_NSWsTGC_particleEncoding
bool fill(const EventContext &ctx) override final
The fill method checks if enough information is provided such that the branch is cleared from the inf...
int GetPhiSector(const int &hid) const
ScalarBranch< unsigned int > & m_NSWsTGC_nSimHits
ThreeVectorBranch m_NSWsTGC_hitToDsurfacePosition