ATLAS Offline Software
CscOverlay.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 // Overlaying RDOs from two different events for InDet subdetectors.
6 //
7 // Andrei Gaponenko <agaponenko@lbl.gov>, 2006, 2007
8 //
9 // Ketevi A. Assamagan <ketevi@bnl.gov>, March 2008
10 
11 #ifndef CSCOVERLAY_CSCOVERLAY_H
12 #define CSCOVERLAY_CSCOVERLAY_H
13 
15 #include "GaudiKernel/ServiceHandle.h"
16 #include "GaudiKernel/ToolHandle.h"
17 #include "StoreGate/ReadHandleKey.h" // for ReadHandleKey
18 #include "StoreGate/WriteHandleKey.h" // for WriteHandleKey
19 
20 #include "MuonRDO/CscRawDataContainer.h" //ReadHandleKey template param
21 #include "CscCalibTools/ICscCalibTool.h" //ToolHandle template param
22 #include "MuonCSC_CnvTools/ICSC_RDO_Decoder.h" //ToolHandle template param
23 #include "AthenaKernel/IAthRNGSvc.h" //ServiceHandle template param
24 #include "MuonIdHelpers/IMuonIdHelperSvc.h" //ServiceHandle template param
25 
26 #include <cstdint> // for uint16_t, uint32_t
27 #include <vector>
28 #include <string>
29 #include <map>
30 #include <memory>
31 
32 namespace CLHEP {
33  class HepRandomEngine;
34 }
35 
36 class CscRawData;
37 class EventContext;
38 class ISvcLocator;
39 class StatusCode;
40 
42 public:
43 
44  CscOverlay(const std::string &name,ISvcLocator *pSvcLocator);
45 
46  virtual StatusCode initialize() override final;
47  virtual StatusCode execute(const EventContext& ctx) const override final;
48 
49 private:
50 
53  const CscRawDataContainer *signalContainer,
54  CscRawDataContainer *outputContainer) const;
55 
57  std::unique_ptr<CscRawDataCollection> copyCollection(const CscRawDataCollection *collection,
58  bool propertiesOnly = false) const;
59 
61  void mergeCollections(const CscRawDataCollection *bkgCollection,
62  const CscRawDataCollection *signalCollection,
64  CLHEP::HepRandomEngine *rndmEngine) const;
65 
67  void spuData( const CscRawDataCollection * coll, const uint16_t spuID, std::vector<const CscRawData*>& data) const;
68 
70  uint32_t stripData ( const std::vector<const CscRawData*>& data,
71  const unsigned int numSamples,
72  std::map< int,std::vector<uint16_t> >& samples,
73  uint32_t& hash,
74  const uint16_t spuID,
75  const int gasLayer, bool isdata) const;
76 
80  std::vector<CscRawData*> overlay( const std::map< int,std::vector<uint16_t> >& sigSamples,
81  const std::map< int,std::vector<uint16_t> >& ovlSamples,
82  const uint32_t address,
83  const uint16_t spuID,
84  const uint16_t collId,
85  const uint32_t hash,
86  CLHEP::HepRandomEngine *rndmEngine) const;
87 
88  //Whether the data needs to be fliped by 49-strip for bug#56002
89  bool needtoflip(const int address) const;
90 
91  // ----------------------------------------------------------------
92 
93  // jO controllable properties.
94  // "Main" containers are read, have data from "overlay" containers added,
95  // and written out with the original SG keys.
96  SG::ReadHandleKey<CscRawDataContainer> m_bkgInputKey{this,"BkgInputKey","Bkg_CSCRDO",""};
97  SG::ReadHandleKey<CscRawDataContainer> m_signalInputKey{this,"SignalInputKey","Sig_CSCRDO",""};
99 
100  Gaudi::Property<bool> m_isDataOverlay{this, "isDataOverlay", false, ""};
101  ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
102  ToolHandle<ICscCalibTool> m_cscCalibTool{this, "CalibTool", "CscCalibTool", ""};
103  ToolHandle<Muon::ICSC_RDO_Decoder> m_cscRdoDecoderTool{this, "CscRdoDecoderTool", "Muon::CscRDO_Decoder", ""};
104 
105  ServiceHandle <IAthRNGSvc> m_rndmSvc{this, "RndmSvc", "AthRNGSvc", "Random Number Service"}; // Random number service
106 };
107 
108 #endif/*CSCOVERLAY_CSCOVERLAY_H*/
ReadHandleKey.h
Property holding a SG store/key/clid from which a ReadHandle is made.
ICSC_RDO_Decoder.h
data
char data[hepevt_bytes_allocation_ATLAS]
Definition: HepEvt.cxx:11
CscOverlay::m_outputKey
SG::WriteHandleKey< CscRawDataContainer > m_outputKey
Definition: CscOverlay.h:98
CscOverlay::mergeCollections
void mergeCollections(const CscRawDataCollection *bkgCollection, const CscRawDataCollection *signalCollection, CscRawDataCollection *outputCollection, CLHEP::HepRandomEngine *rndmEngine) const
In case of overlap merge signal and background collections.
Definition: CscOverlay.cxx:281
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
CscRawDataContainer.h
CscOverlay::execute
virtual StatusCode execute(const EventContext &ctx) const override final
Definition: CscOverlay.cxx:54
CscOverlay::spuData
void spuData(const CscRawDataCollection *coll, const uint16_t spuID, std::vector< const CscRawData * > &data) const
get the data in one SPU of a chamber
Definition: CscOverlay.cxx:258
CscOverlay::CscOverlay
CscOverlay(const std::string &name, ISvcLocator *pSvcLocator)
Definition: CscOverlay.cxx:28
ICscCalibTool.h
CscOverlay
Definition: CscOverlay.h:41
SG::ReadHandleKey< CscRawDataContainer >
CscOverlay::m_cscRdoDecoderTool
ToolHandle< Muon::ICSC_RDO_Decoder > m_cscRdoDecoderTool
Definition: CscOverlay.h:103
AthReentrantAlgorithm
An algorithm that can be simultaneously executed in multiple threads.
Definition: AthReentrantAlgorithm.h:74
CscOverlay::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: CscOverlay.h:101
SG::WriteHandleKey< CscRawDataContainer >
xAOD::uint16_t
setWord1 uint16_t
Definition: eFexEMRoI_v1.cxx:93
CscOverlay::initialize
virtual StatusCode initialize() override final
Definition: CscOverlay.cxx:33
CscOverlay::m_signalInputKey
SG::ReadHandleKey< CscRawDataContainer > m_signalInputKey
Definition: CscOverlay.h:97
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
CLHEP
STD'S.
Definition: CaloNoiseCompCondAlg.h:58
CscOverlay::overlayContainer
StatusCode overlayContainer(const CscRawDataContainer *bkgContainer, const CscRawDataContainer *signalContainer, CscRawDataContainer *outputContainer) const
Overlay signal on the background container and record to the output one.
Definition: CscOverlay.cxx:89
CscOverlay::copyCollection
std::unique_ptr< CscRawDataCollection > copyCollection(const CscRawDataCollection *collection, bool propertiesOnly=false) const
Copy CscRawDataCollection, optionally only copy properties.
Definition: CscOverlay.cxx:226
CscRawDataCollection
Collection of CSC Raw Hits, arranged according to CSC Detector Elements Author: Ketevi A.
Definition: CscRawDataCollection.h:24
AthReentrantAlgorithm.h
WriteHandleKey.h
Property holding a SG store/key/clid from which a WriteHandle is made.
postInclude.outputCollection
outputCollection
Definition: postInclude.SortInput.py:27
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
CscOverlay::stripData
uint32_t stripData(const std::vector< const CscRawData * > &data, const unsigned int numSamples, std::map< int, std::vector< uint16_t > > &samples, uint32_t &hash, const uint16_t spuID, const int gasLayer, bool isdata) const
data in one gas lauer
Definition: CscOverlay.cxx:441
RTTAlgmain.address
address
Definition: RTTAlgmain.py:55
CscOverlay::needtoflip
bool needtoflip(const int address) const
Definition: CscOverlay.cxx:269
CscRawData
Class to hold the electronic output for a single CSC readout channel: n sampling ADC data + the addre...
Definition: CscRawData.h:21
CaloCondBlobAlgs_fillNoiseFromASCII.hash
dictionary hash
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:108
CscOverlay::m_cscCalibTool
ToolHandle< ICscCalibTool > m_cscCalibTool
Definition: CscOverlay.h:102
CscRawDataContainer
This container provides access to collections of CSC RDOs and a mechanism for recording them.
Definition: CscRawDataContainer.h:23
CscOverlay::m_bkgInputKey
SG::ReadHandleKey< CscRawDataContainer > m_bkgInputKey
Definition: CscOverlay.h:96
CscOverlay::overlay
std::vector< CscRawData * > overlay(const std::map< int, std::vector< uint16_t > > &sigSamples, const std::map< int, std::vector< uint16_t > > &ovlSamples, const uint32_t address, const uint16_t spuID, const uint16_t collId, const uint32_t hash, CLHEP::HepRandomEngine *rndmEngine) const
do the overlay - summing the ADC samples on one plane if there is overlap between zero bias data and ...
Definition: CscOverlay.cxx:538
CscOverlay::m_rndmSvc
ServiceHandle< IAthRNGSvc > m_rndmSvc
Definition: CscOverlay.h:105
CscOverlay::m_isDataOverlay
Gaudi::Property< bool > m_isDataOverlay
Definition: CscOverlay.h:100
IMuonIdHelperSvc.h
IAthRNGSvc.h
ServiceHandle< Muon::IMuonIdHelperSvc >