ATLAS Offline Software
Loading...
Searching...
No Matches
BucketDumperAlg.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4#ifndef MUONCSVDUMP_BucketDumperAlg_H
5#define MUONCSVDUMP_BucketDumperAlg_H
6
7
9
13
19
23
25
27#include "CLHEP/Random/RandomEngine.h"
28
29
30namespace MuonR4{
32
33 public:
35 ~BucketDumperAlg() = default;
36
37 virtual StatusCode initialize() override final;
38 virtual StatusCode finalize() override final;
39 virtual StatusCode execute() override final;
40
41 private:
45 StatusCode dumpContainer(const EventContext& ctx,
46 const SG::ReadHandleKey<SpacePointContainer>& spacePointKey,
47 const SG::ReadHandleKey<xAOD::MuonSegmentContainer>& segmentKey);
48
49 SG::ReadHandleKeyArray<SpacePointContainer> m_spacePointKeys{this, "SpacePointKeys", {"MuonSpacePoints"},
50 "Key to the space point container"};
51 ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc{this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
52
53 SG::ReadHandleKeyArray<xAOD::MuonSegmentContainer> m_inSegmentKeys{this, "SegmentKey", {"MuonSegmentsFromR4"}};
54
56 SG::ReadHandleKey<ActsTrk::GeometryContext> m_geoCtxKey{this, "AlignmentKey", "ActsAlignment", "cond handle key"};
57
58 Gaudi::Property<bool> m_isMC{this, "isMC", true};
59 Gaudi::Property<double> m_fracToKeep{this,"dataFracToKeep", 1.}; // 0.055 to balanced dataset without MC
60 Gaudi::Property<std::string> m_streamName{this, "StreamName", ""};
61 ServiceHandle<IAthRNGSvc> m_rndmSvc{this, "RndmSvc", "AthRNGSvc", ""};
62
64 ToolHandle<MuonValR4::IPatternVisualizationTool> m_visionTool{this, "VisualizationTool", ""};
65 CLHEP::HepRandomEngine* getRandomEngine(const EventContext&ctx) const;
66
67 MuonVal::MuonTesterTree m_tree{"MuonBucketDump","MuonBucketDump"};
68
69 MuonVal::ScalarBranch<float>& m_bucket_min{m_tree.newScalar<float>("bucket_min", -1)};
70 MuonVal::ScalarBranch<float>& m_bucket_max{m_tree.newScalar<float>("bucket_max", -1)};
71 MuonVal::ScalarBranch<uint16_t>& m_bucket_spacePoints{m_tree.newScalar<uint16_t>("bucket_spacePoints", 0)};
72 MuonVal::ScalarBranch<uint16_t>& m_bucket_segments{m_tree.newScalar<uint16_t>("bucket_segments", 0)};
73 MuonVal::ScalarBranch<uint16_t>& m_bucket_layers{m_tree.newScalar<uint16_t>("bucket_layers", 0)};
74 MuonVal::ScalarBranch<uint8_t>& m_bucket_truthHit{m_tree.newScalar<uint8_t>("bucket_hasTruth", 0)};
75 MuonVal::ScalarBranch<float>& m_bucket_posX{m_tree.newScalar<float>("bucket_positionX")};
76 MuonVal::ScalarBranch<float>& m_bucket_posY{m_tree.newScalar<float>("bucket_positionY")};
77 MuonVal::ScalarBranch<float>& m_bucket_posZ{m_tree.newScalar<float>("bucket_positionZ")};
78
79 MuonVal::ScalarBranch<uint8_t>& m_bucket_sector{m_tree.newScalar<uint8_t>("bucket_sector")};
80 MuonVal::ScalarBranch<uint8_t>& m_bucket_chamberIdx{m_tree.newScalar<uint8_t>("bucket_chamberIndex")};
81 MuonVal::ScalarBranch<Char_t>& m_bucket_side{m_tree.newScalar<Char_t>("bucket_side")};
82
85
88 MuonVal::VectorBranch<unsigned short>& m_spoint_isStrip{m_tree.newVector<unsigned short>("isStrip", false)};
89 MuonVal::VectorBranch<unsigned short>& m_spoint_isMdt{m_tree.newVector<unsigned short>("isMdt", false)};
90
93
97
98 MuonVal::VectorBranch<unsigned short>& m_spoint_measuresEta{m_tree.newVector<unsigned short>("measuresEta")};
99 MuonVal::VectorBranch<unsigned short>& m_spoint_measuresPhi{m_tree.newVector<unsigned short>("measuresPhi")};
100 MuonVal::VectorBranch<unsigned short>& m_spoint_trueLabel{m_tree.newVector<unsigned short>("trueLabel")};
103 MuonVal::VectorBranch<unsigned int>& m_spoint_dimension{m_tree.newVector<unsigned int>("dimension")};
104
106 MuonVal::MatrixBranch<int16_t>& m_spoint_mat{m_tree.newMatrix<int16_t>("sp_seg_matching",-1)};
107 MuonVal::MatrixBranch<int16_t>& m_spoint_trueSeg{m_tree.newMatrix<int16_t>("spacePoint_truthSegLink",-1)};
108
109
110
111 MuonVal::VectorBranch<float>& m_segmentLocX{m_tree.newVector<float>("segmentLocalX")};
112 MuonVal::VectorBranch<float>& m_segmentLocY{m_tree.newVector<float>("segmentLocalY")};
113 MuonVal::VectorBranch<float>& m_segmentLocTheta{m_tree.newVector<float>("segmentLocalTheta")};
114 MuonVal::VectorBranch<float>& m_segmentLocPhi{m_tree.newVector<float>("segmentLocalPhi")};
115
116 MuonVal::VectorBranch<uint16_t>& m_segmentTruthIdx{m_tree.newVector<uint16_t>("segmentTruthPart")};
117
120 MuonVal::VectorBranch<float>& m_segment_chiSquared{m_tree.newVector<float>("segment_chiSquared")};
121 MuonVal::VectorBranch<float>& m_segment_numberDoF{m_tree.newVector<float>("segment_numberDoF")};
122
123 MuonVal::VectorBranch<float>& m_truthSegLocX{m_tree.newVector<float>("truthSegmentLocalX")};
124 MuonVal::VectorBranch<float>& m_truthSegLocY{m_tree.newVector<float>("truthSegmentLocalY")};
125 MuonVal::VectorBranch<float>& m_truthSegLocTheta{m_tree.newVector<float>("truthSegmentLocalTheta")};
126 MuonVal::VectorBranch<float>& m_truthSegLocPhi{m_tree.newVector<float>("truthSegmentLocalPhi")};
127
128
129};
130}
131#endif
AthHistogramAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor with parameters:
ToolHandle< MuonValR4::IPatternVisualizationTool > m_visionTool
Pattern visualization tool.
MuonVal::ScalarBranch< Char_t > & m_bucket_side
MuonVal::ThreeVectorBranch m_spoint_localPosition
MuonVal::VectorBranch< unsigned short > & m_spoint_measuresEta
MuonVal::ScalarBranch< uint8_t > & m_bucket_sector
MuonVal::VectorBranch< float > & m_truthSegLocTheta
MuonVal::VectorBranch< float > & m_segment_numberDoF
SG::ReadHandleKeyArray< SpacePointContainer > m_spacePointKeys
StatusCode dumpContainer(const EventContext &ctx, const SG::ReadHandleKey< SpacePointContainer > &spacePointKey, const SG::ReadHandleKey< xAOD::MuonSegmentContainer > &segmentKey)
Dumps the space point container with the associated muon segment container.
MuonVal::ScalarBranch< float > & m_bucket_min
MuonVal::VectorBranch< uint16_t > & m_spoint_layer
MuonVal::ThreeVectorBranch m_segmentPos
MuonVal::VectorBranch< float > & m_spoint_covX
MuonVal::VectorBranch< float > & m_segmentLocTheta
MuonVal::VectorBranch< float > & m_truthSegLocY
MuonVal::VectorBranch< float > & m_segment_chiSquared
CLHEP::HepRandomEngine * getRandomEngine(const EventContext &ctx) const
MuonVal::MatrixBranch< int16_t > & m_spoint_mat
MuonVal::ScalarBranch< float > & m_bucket_posZ
MuonVal::ScalarBranch< uint16_t > & m_bucket_layers
MuonVal::VectorBranch< float > & m_truthSegLocPhi
MuonVal::VectorBranch< float > & m_segmentLocY
MuonVal::VectorBranch< uint16_t > & m_segmentTruthIdx
virtual StatusCode initialize() override final
MuonVal::MuonTesterTree m_tree
MuonVal::VectorBranch< float > & m_segmentLocX
Gaudi::Property< double > m_fracToKeep
MuonVal::ScalarBranch< float > & m_bucket_max
virtual StatusCode execute() override final
MuonVal::VectorBranch< uint16_t > & m_spoint_nSegments
SG::ReadDecorHandleKeyArray< xAOD::MuonSegmentContainer > m_truthDecorKeys
Gaudi::Property< bool > m_isMC
MuonVal::VectorBranch< unsigned int > & m_spoint_nPhiInstances
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
MuonVal::ScalarBranch< uint8_t > & m_bucket_truthHit
Gaudi::Property< std::string > m_streamName
MuonVal::ThreeVectorBranch m_segmentDir
MuonVal::VectorBranch< uint16_t > & m_spoint_tdc
MuonVal::VectorBranch< float > & m_spoint_driftR
MuonVal::ScalarBranch< float > & m_bucket_posY
MuonVal::VectorBranch< float > & m_segmentLocPhi
MuonVal::ScalarBranch< float > & m_bucket_posX
MuonVal::VectorBranch< uint16_t > & m_spoint_adc
MuonVal::MuonIdentifierBranch m_spoint_id
SG::ReadHandleKey< ActsTrk::GeometryContext > m_geoCtxKey
AthHistogramAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor with parameters:
MuonVal::ScalarBranch< uint16_t > & m_bucket_segments
MuonVal::VectorBranch< unsigned int > & m_spoint_dimension
SG::ReadHandleKeyArray< xAOD::MuonSegmentContainer > m_inSegmentKeys
MuonVal::ScalarBranch< uint8_t > & m_bucket_chamberIdx
MuonVal::VectorBranch< float > & m_spoint_covY
MuonVal::MatrixBranch< int16_t > & m_spoint_trueSeg
MuonVal::VectorBranch< unsigned short > & m_spoint_isStrip
MuonVal::VectorBranch< unsigned int > & m_spoint_nEtaInstances
MuonVal::VectorBranch< float > & m_truthSegLocX
MuonVal::VectorBranch< unsigned short > & m_spoint_trueLabel
ServiceHandle< IAthRNGSvc > m_rndmSvc
MuonVal::ScalarBranch< uint16_t > & m_bucket_spacePoints
MuonVal::VectorBranch< unsigned short > & m_spoint_isMdt
virtual StatusCode finalize() override final
MuonVal::ThreeVectorBranch m_spoint_globalPosition
MuonVal::VectorBranch< unsigned short > & m_spoint_measuresPhi
Class to dump the basic properties of an Identifier into an n-tuple StationName -> BIS,...
Property holding a SG store/key/clid from which a ReadHandle is made.
This header ties the generic definitions in this package.
DataVector< SpacePointBucket > SpacePointContainer
Abrivation of the space point container type.
Forward declaration.
DecorHandleKeyArray< ReadDecorHandle< T, S >, ReadDecorHandleKey< T >, Gaudi::DataHandle::Reader > ReadDecorHandleKeyArray
HandleKeyArray< ReadHandle< T >, ReadHandleKey< T >, Gaudi::DataHandle::Reader > ReadHandleKeyArray
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
#define private