ATLAS Offline Software
Loading...
Searching...
No Matches
TgcRdoToPrepDataToolMT.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef MUONTGC_CNVTOOLS_TGCRDOTOPREPDATATOOLMT_H
6#define MUONTGC_CNVTOOLS_TGCRDOTOPREPDATATOOLMT_H
7
10#include "GaudiKernel/ServiceHandle.h"
11
13#include "MuonRDO/TgcRdo.h"
27
28#include <string>
29#include <vector>
30#include <atomic>
31
32namespace MuonGM
33{
34 class TgcReadoutElement;
35}
36
37namespace Muon
38{
39 // Typedef the two update handle arrays that can be used to match handle key functionality
40 // Requested to not use StoreGate template for UpdateHandleKeyArray
43
52
53 class TgcRdoToPrepDataToolMT : public extends<AthAlgTool, IMuonRdoToPrepDataTool>
54 {
55 public:
57 using base_class::base_class;
58
60 virtual ~TgcRdoToPrepDataToolMT()=default;
61
63 virtual StatusCode initialize() override;
65 virtual StatusCode finalize() override;
66
72 virtual StatusCode decode(const EventContext& ctx,
73 const std::vector<IdentifierHash>& idVect) const override;
74
75 virtual StatusCode provideEmptyContainer(const EventContext& ctx) const override;
76 private:
78 static constexpr int NBC_HIT = 3;
79 /* Run1,2: The number of recorded Bunch Crossings (BCs) FOR TRIGGER (HPT/SL) is 3 (Previous, Current, Next BCs) */
80 /* Run3: The number of recorded Bunch Crossings (BCs) FOR TRIGGER (HPT/SL) is 4 (Previous, Current, Next, and Next-to-Next BCs) */
81 static constexpr int NBC_TRIG = 4;
82
83 struct State {
85 std::array<TgcPrepDataContainer*, NBC_HIT +1> tgcPrepDataContainer{}; // +1 for AllBCs
86
87 using TempPrepDataContainer = std::vector<std::unique_ptr<TgcPrepDataCollection>>;
88 std::array<TempPrepDataContainer, NBC_HIT +1> tgcPrepDataCollections{};
90 std::array<TgcCoinDataContainer*, NBC_TRIG> tgcCoinDataContainer{};
91
92 using TempCoinDataContainer = std::vector<std::unique_ptr<TgcCoinDataCollection>>;
93 std::array<TempCoinDataContainer, NBC_TRIG> tgcCoinDataCollections{};
94
97
99 };
100 template<class ContType, class CollType> StatusCode transferData(ContType& container,
101 std::vector<std::unique_ptr<CollType>>&& coll) const;
102
103 StatusCode setupState(const EventContext& ctx, State& state) const;
104
105 struct CablingInfo {
106 ServiceHandle<MuonTGC_CablingSvc> m_tgcCabling{"MuonTGC_CablingSvc", "TgcRdoToPrepDataToolMT"};
108 std::vector<uint16_t> m_hashToOnlineId;
109 int m_MAX_N_ROD = 0;
110 };
112
115 ASIDE = 103,
116 CSIDE = 104
117 };
118
143 enum BIT_POS {
153
154 /* CHannel starts from 00 at the small R side (the same as ASD). */
163
167
172
173 /* CHannel starts from 00
174 at the small phi side for A side forward chambers and C side backward chambers and
175 at the large phi side for A side backward chambers and C side forward chambers (the same as ASD). */
184
189 };
190
198
199
201 void selectDecoder(State& state, const TgcRawData& rd, const TgcRdo* rdoColl) const;
202
204 StatusCode decodeHits(State& state, const TgcRawData& rd) const;
206 StatusCode decodeTracklet(State& state, const TgcRawData& rd) const;
208 StatusCode decodeTrackletEIFI(State& state, const TgcRawData& rd) const;
210 StatusCode decodeHiPt(State& state, const TgcRawData& rd) const;
212 StatusCode decodeInner(State& state, const TgcRawData& rd) const;
214 StatusCode decodeSL(State& state, const TgcRawData& rd, const TgcRdo* rdoColl) const;
215
217 static int getbitpos(int channel, TgcRawData::SlbType slbType) ;
219 static int getchannel(int bitpos, TgcRawData::SlbType slbType) ;
220
222 static bool getRfromEtaZ(const double eta, const double z, double& r) ;
224 static bool getEtafromRZ(const double r, const double z, double& eta) ;
225
227 static bool isAlreadyConverted(const std::vector<const TgcRdo*>& decodedRdoCollVec,
228 const std::vector<const TgcRdo*>& rdoCollVec,
229 const TgcRdo* rdoColl) ;
230
232 static bool isRequested(const std::vector<IdentifierHash>& requestedIdHashVect,
233 IdentifierHash tgcHashId) ;
234
236 bool isOfflineIdOKForTgcReadoutElement(const MuonGM::TgcReadoutElement* descriptor, const Identifier channelId) const;
237
239 bool getTrackletInfo(const TgcRawData& rd,
240 int& tmp_slbId, int& tmp_subMatrix, int& tmp_position) const;
241
243 static int getRoiRow(const TgcRawData& rd) ;
245 bool isIncludedInChamberBoundary(const TgcRawData& rd) const;
246
248 static void getBitPosOutWire(const TgcRawData& rd, int& slbsubMatrix, std::array<int, 2>& bitpos_o) ;
250 void getBitPosInWire(const TgcRawData& rd,
251 const int DeltaBeforeConvert,
252 std::array<int, 4>& bitpos_i,
253 std::array<int, 4>& slbchannel_i,
254 std::array<int, 4>& slbId_in,
255 std::array<int, 4>& sbLoc_in,
256 int& sswId_i,
257 const std::array<int, 2>& bitpos_o,
258 std::array<int, 2>& slbchannel_o,
259 const int slbId_o) const;
261 static void getBitPosOutStrip(const TgcRawData& rd, int& slbsubMatrix, std::array<int, 2>& bitpos_o) ;
263 void getBitPosInStrip(const TgcRawData& rd,
264 const int DeltaBeforeConvert,
265 std::array<int, 4>& bitpos_i,
266 std::array<int, 4>& slbchannel_i,
267 int& sbLoc_i,
268 int& sswId_i,
269 const std::array<int, 2>& bitpos_o,
270 std::array<int, 2>& slbchannel_o) const;
272 void getBitPosWire(const TgcRawData& rd,
273 const int hitId_w,
274 const int sub_w,
275 int& subMatrix_w,
276 std::array<int, 3>& bitpos_w) const;
278 static void getBitPosStrip(const int hitId_s,
279 const int sub_s,
280 int& subMatrix_s,
281 std::array<int, 3>& bitpos_s) ;
282
284 static int getDeltaBeforeConvert(const TgcRawData& rd) ;
285
287 static bool isBackwardBW(const TgcRawData& rd) ;
288
290 bool getSLWireGeometry(const std::array<Identifier, 3>& channelId_wire,
291 double& width_wire,
292 double& r_wire,
293 double& z_wire) const;
295 bool getSLStripGeometry(const std::array<Identifier, 3>& channelId_strip,
296 const bool isBackWard,
297 const bool isAside,
298 double& width_strip,
299 double& theta_strip) const;
301 bool getPosAndIdWireOut(const std::array<const MuonGM::TgcReadoutElement*, 2>& descriptor_o,
302 const std::array<Identifier, 2>& channelIdOut,
303 const std::array<int, 2>& gasGap_o,
304 const std::array<int, 2>& channel_o,
305 double& width_o,
306 double& hit_position_o,
307 Amg::Vector2D& tmp_hitPos_o,
308 Identifier& channelIdOut_tmp) const;
310 bool getPosAndIdStripOut(const std::array<const MuonGM::TgcReadoutElement*, 2>& descriptor_o,
311 const std::array<Identifier,2 >& channelIdOut,
312 const std::array<int, 2>& gasGap_o,
313 const std::array<int, 2>& channel_o,
314 double& width_o,
315 double& hit_position_o,
316 Amg::Vector2D& tmp_hitPos_o,
317 Identifier& channelIdOut_tmp,
318 const bool isBackward, const bool isAside) const;
319
321 bool getPosAndIdWireIn(const std::array<const MuonGM::TgcReadoutElement*, 4>& descriptor_i,
322 const std::array<Identifier,4 >& channelIdIn,
323 const std::array<int, 4>& gasGap_i,
324 const std::array<int, 4>& channel_i,
325 double& width_i, double& hit_position_i,
326 Amg::Vector2D& tmp_hitPos_i,
327 Identifier& channelIdIn_tmp) const;
329 bool getPosAndIdStripIn(const std::array<const MuonGM::TgcReadoutElement*, 4>& descriptor_i,
330 const std::array<Identifier, 4>& channelIdIn,
331 const std::array<int, 4>& gasGap_i,
332 const std::array<int, 4>& channel_i,
333 double& width_i, double& hit_position_i,
334 Amg::Vector2D& tmp_hitPos_i,
335 Identifier& channelIdIn_tmp,
336 const bool isBackward, const bool isAside) const;
337
339 bool getHiPtIds(const TgcRawData& rd, int& sswId_o, int& sbLoc_o, int& slbId_o) const;
340
342 bool getSLIds(const bool isStrip,
343 const TgcRawData& rd,
344 std::array<Identifier, 3>& channelId,
345 int& index, int& chip, int& hitId, int& sub, int& sswId, int& sbLoc, int& subMatrix,
346 std::array<int, 3>& bitpos,
347 const bool isBoundary=false, const TgcRdo* rdoColl=0,
348 const int index_w=-1, const int chip_w=-1, const int hitId_w=-1, const int sub_w=-1) const;
351 int& sbLoc,
352 const TgcRdo* rdoColl,
353 const int index_w, const int chip_w, const int hitId_w, const int sub_w) const;
356 int& sbLoc,
357 const TgcRdo* rdoColl,
358 const int index_w, const int chip_w, const int hitId_w, const int sub_w) const;
360 static void getEndcapStripCandidateTrackletIds(const int roi, int &trackletIdStripFirst,
361 int &trackletIdStripSecond, int &trackletIdStripThird) ;
362
363 const CablingInfo* getCabling() const;
364
366 static const Amg::Vector2D* getSLLocalPosition(const MuonGM::TgcReadoutElement* readout, const Identifier, const double eta, const double phi) ;
367
368 SG::ReadCondHandleKey<MuonGM::MuonDetectorManager> m_muDetMgrKey {this, "DetectorManagerKey", "MuonDetectorManager", "Key of input MuonDetectorManager condition data"};
369
370 ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
371
373 Gaudi::Property<std::string> m_outputCollectionLocation{this, "OutputCollection", "TGC_Measurements"};
374
376 Gaudi::Property<std::string> m_outputCoinCollectionLocation{this, "OutputCoinCollection", "TrigT1CoinDataCollection"};
377
379 Gaudi::Property<int> m_tgcOffset{this, "TGCHashIdOffset", 26000};
380
382 Gaudi::Property<bool> m_decodeData{this, "DecodeData", true};
384 Gaudi::Property<bool> m_fillCoinData{this, "FillCoinData", true};
385
391 Gaudi::Property<bool> m_show_warning_level_invalid_A09_SSW6_hit{this, "show_warning_level_invalid_A09_SSW6_hit", false};
392
394 Gaudi::Property<bool> m_dropPrdsWithZeroWidth{this, "dropPrdsWithZeroWidth", true};
396 const static double s_cutDropPrdsWithZeroWidth; // 0.1 mm
397
399 mutable std::atomic<long> m_nHitRDOs{0};
400 mutable std::atomic<long> m_nHitPRDs{0};
401 mutable std::atomic<long> m_nTrackletRDOs{0};
402 mutable std::atomic<long> m_nTrackletPRDs{0};
403 mutable std::atomic<long> m_nTrackletEIFIRDOs{0};
404 mutable std::atomic<long> m_nTrackletEIFIPRDs{0};
405 mutable std::atomic<long> m_nHiPtRDOs{0};
406 mutable std::atomic<long> m_nHiPtPRDs{0};
407 mutable std::atomic<long> m_nSLRDOs{0};
408 mutable std::atomic<long> m_nSLPRDs{0};
409
410 SG::ReadHandleKey<TgcRdoContainer> m_rdoContainerKey{this, "RDOContainer", "TGCRDO" ,"TgcRdoContainer to retrieve"};
411
412 // Write handle keys for CoinDataContainers, need 3, for current, previous and next BC
414 // Write handle keys for PrepDataContainers, need 4, for current, previous, next and all BC
416
417 SG::WriteHandleKey<xAOD::TgcStripContainer> m_xAODKey {this, "xAODKey", "", "If empty, do not produce xAOD, otherwise this is the key of the output xAOD MDT PRD container"};
418
419
424
425 // TgcPrepRawData container cache key prefix (code automatically creates three keys with from this string if it is non-empty)
426 Gaudi::Property<std::string> m_prdContainerCacheKeyStr{this, "PrdCacheString", "", "Prefix for names of PRD cache collections"};
427 // TgcCoinData container cache key prefix (code automatically creates three keys with from this string if it is non-empty)
428 Gaudi::Property<std::string> m_coinContainerCacheKeyStr{this, "CoinCacheString", "", "Prefix for names of Coin cache collections"};
429
431 StatusCode decode(const EventContext& ctx, const std::vector<uint32_t>& robIds) const override;
432 // Run3->Run2 conversion of rodId and sector
433 void convertToRun2(const TgcRawData* rd, uint16_t& newrodId, uint16_t& newsector) const {
434 newrodId = rd->rodId();
435 newsector = rd->sector();
436 if (rd->rodId()>12){ // Run3 rodID is 17..19 while Run2 rodId is 1..12
437 if(rd->isForward()){
438 newrodId = rd->sector() / 2 + 1 + (rd->rodId()-17) * 4;
439 newsector = (rd->sector() + (rd->rodId()-17)*8) % 2;
440 }else{
441 newrodId = rd->sector() / 4 + 1 + (rd->rodId()-17) * 4;
442 newsector = (rd->sector() + (rd->rodId()-17)*16) % 4;
443 }
444 }
445 }
446 void convertToRun2(const TgcRawData& rd, uint16_t& newrodId, uint16_t& newsector) const {
447 convertToRun2(&rd,newrodId,newsector);
448 }
449
450 };
451} // end of namespace
452
453#endif // MUONTGC_CNVTOOLS_TGCRDOTOPREPDATATOOLMT_H
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
Cached value with atomic update.
Property holding a SG store/key/clid from which an UpdateHandle is made.
Handle class for modifying an existing object in StoreGate.
#define z
Cached value with atomic update.
Definition CachedValue.h:55
This is a "hash" representation of an Identifier.
The MuonDetectorManager stores the transient representation of the Muon Spectrometer geometry and pro...
A TgcReadoutElement corresponds to a single TGC chamber; therefore typically a TGC station contains s...
This is the algorithm that convert TGCRdo To TGCPrepdata as a tool.
SG::WriteHandleKeyArray< Muon::TgcPrepDataContainer > m_outputprepdataKeys
static bool isAlreadyConverted(const std::vector< const TgcRdo * > &decodedRdoCollVec, const std::vector< const TgcRdo * > &rdoCollVec, const TgcRdo *rdoColl)
Check the rdo is already converted or not.
void convertToRun2(const TgcRawData *rd, uint16_t &newrodId, uint16_t &newsector) const
static void getEndcapStripCandidateTrackletIds(const int roi, int &trackletIdStripFirst, int &trackletIdStripSecond, int &trackletIdStripThird)
Get trackletIds of three Tracklet Strip candidates in the Endcap boudary.
Gaudi::Property< std::string > m_outputCoinCollectionLocation
TgcCoinData container key for current BC.
bool getHiPtIds(const TgcRawData &rd, int &sswId_o, int &sbLoc_o, int &slbId_o) const
Get ReadoutID of HiPt from RDOHighPtID.
StatusCode decodeSL(State &state, const TgcRawData &rd, const TgcRdo *rdoColl) const
Decode RDO's of SectorLogic.
bool getPosAndIdWireIn(const std::array< const MuonGM::TgcReadoutElement *, 4 > &descriptor_i, const std::array< Identifier, 4 > &channelIdIn, const std::array< int, 4 > &gasGap_i, const std::array< int, 4 > &channel_i, double &width_i, double &hit_position_i, Amg::Vector2D &tmp_hitPos_i, Identifier &channelIdIn_tmp) const
Get position and offline ID of TGC1 wire for HiPt.
static int getDeltaBeforeConvert(const TgcRawData &rd)
Get delta (sagitta) before converion for HiPt.
StatusCode transferData(ContType &container, std::vector< std::unique_ptr< CollType > > &&coll) const
CxxUtils::CachedValue< CablingInfo > m_cablingInfo
virtual StatusCode finalize() override
Standard AthAlgTool finalize method.
Gaudi::Property< std::string > m_outputCollectionLocation
TgcPrepRawData container key for current BC.
static bool isBackwardBW(const TgcRawData &rd)
Check if a chamber in BigWheel is a backward chamber or a forward chamber.
bool isIncludedInChamberBoundary(const TgcRawData &rd) const
Check SL RDO is at the chamber boundary.
BIT_POS
SLB bit position /code Large R <--> Small R Large phi <--> Small phi for A side forward chambers and ...
static void getBitPosOutWire(const TgcRawData &rd, int &slbsubMatrix, std::array< int, 2 > &bitpos_o)
Get bitPos etc of TGC3 wire for HiPt.
void getBitPosWire(const TgcRawData &rd, const int hitId_w, const int sub_w, int &subMatrix_w, std::array< int, 3 > &bitpos_w) const
Get bitPos etc of wire for SL.
SG::WriteHandleKeyArray< Muon::TgcCoinDataContainer > m_outputCoinKeys
Gaudi::Property< std::string > m_prdContainerCacheKeyStr
SG::ReadHandleKey< TgcRdoContainer > m_rdoContainerKey
SG::WriteHandleKey< xAOD::TgcStripContainer > m_xAODKey
bool getPosAndIdStripIn(const std::array< const MuonGM::TgcReadoutElement *, 4 > &descriptor_i, const std::array< Identifier, 4 > &channelIdIn, const std::array< int, 4 > &gasGap_i, const std::array< int, 4 > &channel_i, double &width_i, double &hit_position_i, Amg::Vector2D &tmp_hitPos_i, Identifier &channelIdIn_tmp, const bool isBackward, const bool isAside) const
Get position and offline ID of TGC1 strip for HiPt.
static int getRoiRow(const TgcRawData &rd)
Get ROI row from RDO.
StatusCode decodeInner(State &state, const TgcRawData &rd) const
Decode RDO's of Inner.
static bool isRequested(const std::vector< IdentifierHash > &requestedIdHashVect, IdentifierHash tgcHashId)
Check the IdHash is already requested or not.
Gaudi::Property< bool > m_fillCoinData
Switch for the coincince decoding.
void getBitPosInStrip(const TgcRawData &rd, const int DeltaBeforeConvert, std::array< int, 4 > &bitpos_i, std::array< int, 4 > &slbchannel_i, int &sbLoc_i, int &sswId_i, const std::array< int, 2 > &bitpos_o, std::array< int, 2 > &slbchannel_o) const
Get bitPos etc of TGC1 strip for HiPt.
StatusCode setupState(const EventContext &ctx, State &state) const
SUB_DETCTOR_ID
Sub detector IDs are 103 and 104 for TGC A side and C side, respectively.
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
StatusCode decodeTrackletEIFI(State &state, const TgcRawData &rd) const
Decode RDO's of Tracklet EIFI.
bool getSLStripGeometry(const std::array< Identifier, 3 > &channelId_strip, const bool isBackWard, const bool isAside, double &width_strip, double &theta_strip) const
Get strip geometry (width, theta) for SL.
bool isOfflineIdOKForTgcReadoutElement(const MuonGM::TgcReadoutElement *descriptor, const Identifier channelId) const
Check offline ID is OK for TgcReadoutElement.
Gaudi::Property< bool > m_dropPrdsWithZeroWidth
Flag for dropping PRD's with zero widths.
const CablingInfo * getCabling() const
static const Amg::Vector2D * getSLLocalPosition(const MuonGM::TgcReadoutElement *readout, const Identifier, const double eta, const double phi)
Get SL local position.
static bool getRfromEtaZ(const double eta, const double z, double &r)
Get r from eta and z.
bool getSbLocOfEndcapStripBoundaryFromTracklet(const TgcRawData &rd, int &sbLoc, const TgcRdo *rdoColl, const int index_w, const int chip_w, const int hitId_w, const int sub_w) const
Get strip sbLoc of Endcap chamber boundary from Tracklet Strip.
bool getSLWireGeometry(const std::array< Identifier, 3 > &channelId_wire, double &width_wire, double &r_wire, double &z_wire) const
Get wire geometry (width, r, z) for SL.
TgcCoinUpdateHandles m_coinContainerCacheKeys
Keys for the Coin cache containers, 3 needed for different BC.
virtual StatusCode initialize() override
Standard AthAlgTool initialize method.
Gaudi::Property< bool > m_show_warning_level_invalid_A09_SSW6_hit
Switch for error message disabling on one invalid channel in sector A09 seen in 2008 data,...
Gaudi::Property< std::string > m_coinContainerCacheKeyStr
StatusCode decodeHiPt(State &state, const TgcRawData &rd) const
Decode RDO's of HiPt.
StatusCode decodeHits(State &state, const TgcRawData &rd) const
Decode RDO's of Hit.
void convertToRun2(const TgcRawData &rd, uint16_t &newrodId, uint16_t &newsector) const
static bool getEtafromRZ(const double r, const double z, double &eta)
Get eta from r and z.
void getBitPosInWire(const TgcRawData &rd, const int DeltaBeforeConvert, std::array< int, 4 > &bitpos_i, std::array< int, 4 > &slbchannel_i, std::array< int, 4 > &slbId_in, std::array< int, 4 > &sbLoc_in, int &sswId_i, const std::array< int, 2 > &bitpos_o, std::array< int, 2 > &slbchannel_o, const int slbId_o) const
Get bitPos etc of TGC1 wire for HiPt.
virtual StatusCode decode(const EventContext &ctx, const std::vector< IdentifierHash > &idVect) const override
Decode RDO to PRD A vector of IdentifierHash are passed in, and the data corresponding to this list...
virtual ~TgcRdoToPrepDataToolMT()=default
Destructor.
bool getPosAndIdWireOut(const std::array< const MuonGM::TgcReadoutElement *, 2 > &descriptor_o, const std::array< Identifier, 2 > &channelIdOut, const std::array< int, 2 > &gasGap_o, const std::array< int, 2 > &channel_o, double &width_o, double &hit_position_o, Amg::Vector2D &tmp_hitPos_o, Identifier &channelIdOut_tmp) const
Get position and offline ID of TGC3 wire for HiPt.
TgcPrdUpdateHandles m_prdContainerCacheKeys
Keys for the PRD cache containers, 4 needed for different BC.
Gaudi::Property< bool > m_decodeData
Switch for the decoding of TGC RDO into TgcPrepData.
SG::ReadCondHandleKey< MuonGM::MuonDetectorManager > m_muDetMgrKey
void selectDecoder(State &state, const TgcRawData &rd, const TgcRdo *rdoColl) const
Select decoder based on RDO type (Hit or Coincidence (Tracklet, HiPt and SL))
std::atomic< long > m_nHitRDOs
long to count the numbers of RDOs and PRDs
StatusCode decodeTracklet(State &state, const TgcRawData &rd) const
Decode RDO's of Tracklet.
static int getbitpos(int channel, TgcRawData::SlbType slbType)
Get bitpos from channel and SlbType.
Gaudi::Property< int > m_tgcOffset
Identifier hash offset.
bool getSbLocOfEndcapStripBoundaryFromHiPt(const TgcRawData &rd, int &sbLoc, const TgcRdo *rdoColl, const int index_w, const int chip_w, const int hitId_w, const int sub_w) const
Get strip sbLoc of Endcap chamber boundary from HiPt Strip.
static int getchannel(int bitpos, TgcRawData::SlbType slbType)
Get channel from bitpos and SlbType.
bool getTrackletInfo(const TgcRawData &rd, int &tmp_slbId, int &tmp_subMatrix, int &tmp_position) const
Retrieve slbId, subMatrix and position from Tracklet RDO.
static void getBitPosStrip(const int hitId_s, const int sub_s, int &subMatrix_s, std::array< int, 3 > &bitpos_s)
Get bitPos etc of strip for SL.
virtual StatusCode provideEmptyContainer(const EventContext &ctx) const override
static constexpr int NBC_HIT
The number of recorded Bunch Crossings (BCs) FOR HITS is 3 (Previous, Current, and Next BCs)
static const double s_cutDropPrdsWithZeroWidth
Cut value for zero widths.
bool getSLIds(const bool isStrip, const TgcRawData &rd, std::array< Identifier, 3 > &channelId, int &index, int &chip, int &hitId, int &sub, int &sswId, int &sbLoc, int &subMatrix, std::array< int, 3 > &bitpos, const bool isBoundary=false, const TgcRdo *rdoColl=0, const int index_w=-1, const int chip_w=-1, const int hitId_w=-1, const int sub_w=-1) const
Get ReadoutID of SL from RDO.
static void getBitPosOutStrip(const TgcRawData &rd, int &slbsubMatrix, std::array< int, 2 > &bitpos_o)
Get bitPos etc of TGC3 strip for HiPt.
bool getPosAndIdStripOut(const std::array< const MuonGM::TgcReadoutElement *, 2 > &descriptor_o, const std::array< Identifier, 2 > &channelIdOut, const std::array< int, 2 > &gasGap_o, const std::array< int, 2 > &channel_o, double &width_o, double &hit_position_o, Amg::Vector2D &tmp_hitPos_o, Identifier &channelIdOut_tmp, const bool isBackward, const bool isAside) const
Get position and offline ID of TGC3 strip for HiPt.
Property holding a SG store/key/clid from which a ReadHandle is made.
Property holding a SG store/key/clid from which an UpdateHandle is made.
Property holding a SG store/key/clid from which a WriteHandle is made.
An unit object of TGC ROD output.
Definition TgcRawData.h:23
uint16_t rodId() const
Definition TgcRawData.h:268
uint16_t sector() const
Definition TgcRawData.h:333
bool isForward() const
Definition TgcRawData.h:289
int r
Definition globals.cxx:22
Eigen::Matrix< double, 2, 1 > Vector2D
Ensure that the Athena extensions are properly loaded.
Definition GeoMuonHits.h:27
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
SG::HandleKeyArray< SG::UpdateHandle< TgcCoinDataCollection_Cache >, SG::UpdateHandleKey< TgcCoinDataCollection_Cache >, Gaudi::DataHandle::Reader > TgcCoinUpdateHandles
SG::HandleKeyArray< SG::UpdateHandle< TgcPrepDataCollection_Cache >, SG::UpdateHandleKey< TgcPrepDataCollection_Cache >, Gaudi::DataHandle::Reader > TgcPrdUpdateHandles
HandleKeyArray< WriteHandle< T >, WriteHandleKey< T >, Gaudi::DataHandle::Writer > WriteHandleKeyArray
Definition index.py:1
ServiceHandle< MuonTGC_CablingSvc > m_tgcCabling
std::vector< uint16_t > m_hashToOnlineId
Conversion from hash to onlineId.
std::array< TgcCoinDataContainer *, NBC_TRIG > tgcCoinDataContainer
TgcCoinData (coincidence PRD) containers.
std::array< TempCoinDataContainer, NBC_TRIG > tgcCoinDataCollections
const MuonGM::MuonDetectorManager * muDetMgr
std::vector< std::unique_ptr< TgcCoinDataCollection > > TempCoinDataContainer
std::vector< std::unique_ptr< TgcPrepDataCollection > > TempPrepDataContainer
SG::WriteHandle< xAOD::TgcStripContainer > m_xaodHandle
Handle for the xAOD container.
std::array< TempPrepDataContainer, NBC_HIT+1 > tgcPrepDataCollections
std::array< TgcPrepDataContainer *, NBC_HIT+1 > tgcPrepDataContainer
TgcPrepRawData (hit PRD) containers.