ATLAS Offline Software
DumpLArDigits.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
9 //#include "testpack/compdigit.h"
10 #include <stdlib.h>
11 
12 #include <vector>
13 
14 DumpLArDigits::DumpLArDigits(const std::string& name, ISvcLocator* pSvcLocator)
15  : AthAlgorithm(name, pSvcLocator),
16  m_chan(0),
17  m_onlineHelper(0),
18  m_emId(0)
19 {m_count=0;
20  declareProperty("LArDigitContainerName",m_key="");
21  declareProperty("OutputFileName",m_FileName="LArDigits.txt");
22 }
23 
25 {//empty
26 }
27 
29 {
30  ATH_MSG_INFO ( "======== initialize DumpLArDigits ========" );
31  ATH_CHECK( detStore()->retrieve(m_onlineHelper, "LArOnlineID") );
32  ATH_MSG_DEBUG ( " Found the LArOnlineID helper. " );
33 
34  const CaloCell_ID* idHelper = nullptr;
35  ATH_CHECK( detStore()->retrieve (idHelper, "CaloCell_ID") );
36  m_emId=idHelper->em_idHelper();
37  if (!m_emId) {
38  ATH_MSG_ERROR ( "Unable to get EM_ID" );
39  return StatusCode::FAILURE;
40  }
41 
43 
44  m_outfile.open(m_FileName.c_str(),std::ios::out);
45 
46  ATH_MSG_INFO ( "======== test-stuff initialize successfully ========" );
47  return StatusCode::SUCCESS;
48 }
49 
50 
52 {
53  m_count++;
54  ATH_MSG_INFO ( "======== executing event "<< m_count << " ========" );
55  const xAOD::EventInfo* thisEventInfo;
56  StatusCode sc=evtStore()->retrieve(thisEventInfo);
57  if (sc!=StatusCode::SUCCESS)
58  ATH_MSG_WARNING ( "No EventInfo object found!" );
59  else
60  {
61  std::cout << "*** Event #" << std::dec << thisEventInfo->runNumber() << "/" << thisEventInfo->eventNumber() << std::endl;
62  }
63 
64  const LArDigitContainer* digit_cont;
65 
66  if (m_key.size())
67  ATH_CHECK( evtStore()->retrieve(digit_cont,m_key) );
68  else
69  ATH_CHECK( evtStore()->retrieve(digit_cont) );
70  ATH_MSG_INFO ( "Retrieved LArDigitContainer from StoreGate! key=" << m_key );
72  const LArOnOffIdMapping* cabling{*cablingHdl};
73  if(!cabling){
74  ATH_MSG_ERROR("Do not have mapping object " << m_cablingKey.key() );
75  return StatusCode::FAILURE;
76  }
77  //int nColl=0;
78  short layer,eta,phi;
79  m_chan=0;
80  //int Nchan=0;
81  typedef std::vector< const LArDigit* > LArDigitVector;
82  //std::vector< const LArDigit* > digitVector;
83  LArDigitVector digitVector;
85  LArDigitContainer::const_iterator it_e = digit_cont->end();
86  //Nchan=0;
87  for(; it!=it_e; ++it){
88  m_chan++;
89  digitVector.push_back(*it);
90  }
91  //std::cout << "End of outer loop" <<std::endl;
92 
93  m_outfile << "Event " << m_count << " contains " << m_chan << " digits\n";
94  std::cout << "Event " << m_count << " contains " << m_chan << " digits\n";
95 
96  mySort aSort;
97  std::sort(digitVector.begin(),digitVector.end(),aSort);
98  for (const LArDigit* digit : digitVector)
99  {
100  //if (digit->energy()==0)
101  //continue;
102  const HWIdentifier chid=digit->channelID();//hardwareID();
103  const HWIdentifier febid=m_onlineHelper->feb_Id(chid);
104  std::cout << "FEB_ID: 0x" << std::hex << febid.get_identifier32().get_compact()
105  << " channel: " << std::dec << m_onlineHelper->channel(chid)
106  << " (" << m_onlineHelper->channelInSlotMax(febid) << "/FEB), ";
107  m_outfile << "FEB_ID: 0x" << std::hex << febid.get_compact()
108  << " channel: " << std::dec << m_onlineHelper->channel(chid)
109  << " (" << m_onlineHelper->channelInSlotMax(febid) << "/FEB), ";
110  if (!cabling->isOnlineConnected(chid))
111  {std::cout << "disconnected: \n";
112  m_outfile << "disconnected: \n";
113  continue;
114  }
115  const Identifier id=cabling->cnvToIdentifier(chid);
116  //std::cout << "Compact onlineid=" << id.get_compact() << std::endl;
117  eta=m_emId->eta(id);
118  phi=m_emId->phi(id);
119  layer=m_emId->sampling(id);
120  //std::cout << "LArDigit #" << chid.get_compact();
121  if(!m_emId->is_lar_em(id))
122  {std::cout << "Is not EM! \n" << std::endl;
123  m_outfile << "Is not EM! \n" << std::endl;
124  continue;
125  }
126  if (m_onlineHelper->isEmEndcapOnline(chid))
127  {std::cout << "Endcap ";
128  m_outfile << "Endcap ";
129  }
130  if (m_onlineHelper->isEmBarrelOnline(chid))
131  {std::cout << "Barrel ";
132  m_outfile << "Barrel ";
133  }
134  std::cout << " l/e/p= " << layer << "/" << eta << "/" << phi << ":";
135  for(unsigned int i=0;i<digit->samples().size();i++)
136  std::cout << " " << digit->samples()[i];
137  std::cout << " G=" << digit->gain() << std::endl;
138 
139  m_outfile << "l/e/p= " << layer << "/" << eta << "/" << phi << ":";
140  for(unsigned int i=0;i<digit->samples().size();i++)
141  m_outfile << " " << digit->samples()[i];
142  m_outfile << " G=" << digit->gain() << std::endl;
143  }
144  //std::cout << "Collection #" << ++nColl << " contains " << chan_coll->size() << " elementes." << std::endl;
145  std::cout << "Event " << m_count << " contains " << m_chan << " (" <<digitVector.size() <<") channels\n";
146  return StatusCode::SUCCESS;
147 }
148 
150 {
151  m_outfile.close();
152  ATH_MSG_INFO ( "======== finalize DumpLArDigit ========" );
153  return StatusCode::SUCCESS;
154 }
155 
157 {return a->channelID() < b->channelID();}
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
DumpLArDigits::mySort::operator()
bool operator()(const LArDigit *a, const LArDigit *b)
Definition: DumpLArDigits.cxx:156
LArEM_Base_ID::phi
int phi(const Identifier id) const
return phi according to :
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
xAOD::EventInfo_v1::eventNumber
uint64_t eventNumber() const
The current event's event number.
CaloCell_ID::em_idHelper
const LArEM_ID * em_idHelper() const
access to EM idHelper
Definition: CaloCell_ID.h:63
DumpLArDigits::m_chan
int m_chan
Definition: DumpLArDigits.h:30
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
ReadCellNoiseFromCool.cabling
cabling
Definition: ReadCellNoiseFromCool.py:154
skel.it
it
Definition: skel.GENtoEVGEN.py:423
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
LArEM_Base_ID::sampling
int sampling(const Identifier id) const
return sampling according to :
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
checkRpcDigits.digit
digit
Definition: checkRpcDigits.py:186
HWIdentifier
Definition: HWIdentifier.h:13
DumpLArDigits::m_key
std::string m_key
Definition: DumpLArDigits.h:35
xAOD::EventInfo_v1::runNumber
uint32_t runNumber() const
The current event's run number.
LArEM_Base_ID::eta
int eta(const Identifier id) const
return eta according to :
DumpLArDigits::m_emId
const LArEM_ID * m_emId
Definition: DumpLArDigits.h:33
DumpLArDigits.h
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
CaloCell_ID.h
AthCommonDataStore< AthCommonMsg< Algorithm > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
LArOnlineID_Base::channel
int channel(const HWIdentifier id) const
Return the channel number of a hardware cell identifier channel = [0,127] in all FEB.
Definition: LArOnlineID_Base.cxx:1967
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
Identifier32::get_compact
value_type get_compact(void) const
Get the compact id.
Definition: Identifier32.h:171
LArDigit
Liquid Argon digit base class.
Definition: LArDigit.h:25
lumiFormat.i
int i
Definition: lumiFormat.py:92
LArOnlineID_Base::channelInSlotMax
int channelInSlotMax(const HWIdentifier Id) const
Return the Maximum channel number of a given feb slot.
Definition: LArOnlineID_Base.cxx:286
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
DumpLArDigits::mySort
Definition: DumpLArDigits.h:37
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
DumpLArDigits::m_onlineHelper
const LArOnlineID * m_onlineHelper
Definition: DumpLArDigits.h:32
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
CaloCell_ID
Helper class for offline cell identifiers.
Definition: CaloCell_ID.h:34
DumpLArDigits::finalize
StatusCode finalize()
Definition: DumpLArDigits.cxx:149
AthAlgorithm
Definition: AthAlgorithm.h:47
LArOnlineID_Base::feb_Id
HWIdentifier feb_Id(int barrel_ec, int pos_neg, int feedthrough, int slot) const
Create feb_Id from fields.
Definition: LArOnlineID_Base.cxx:1483
DumpLArDigits::m_cablingKey
SG::ReadCondHandleKey< LArOnOffIdMapping > m_cablingKey
Definition: DumpLArDigits.h:29
DumpLArDigits::execute
StatusCode execute()
Definition: DumpLArDigits.cxx:51
DumpLArDigits::m_outfile
std::ofstream m_outfile
Definition: DumpLArDigits.h:34
DumpLArDigits::m_FileName
std::string m_FileName
Definition: DumpLArDigits.h:35
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
LArDigitContainer.h
EventInfo.h
xAOD::EventInfo_v1
Class describing the basic event information.
Definition: EventInfo_v1.h:43
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
a
TList * a
Definition: liststreamerinfos.cxx:10
Identifier::get_compact
value_type get_compact(void) const
Get the compact id.
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
LArDigitContainer
Container class for LArDigit.
Definition: LArDigitContainer.h:24
LArOnlineID_Base::isEmEndcapOnline
bool isEmEndcapOnline(const HWIdentifier id) const
Definition: LArOnlineID_Base.cxx:1737
Identifier::get_identifier32
Identifier32 get_identifier32(void) const
Get the 32-bit version Identifier, will be invalid if >32 bits needed.
DumpLArDigits::~DumpLArDigits
~DumpLArDigits()
Definition: DumpLArDigits.cxx:24
AtlasDetectorID::is_lar_em
bool is_lar_em(Identifier id) const
Definition: AtlasDetectorID.h:818
DumpLArDigits::initialize
StatusCode initialize()
Definition: DumpLArDigits.cxx:28
DumpLArDigits::m_count
int m_count
Definition: DumpLArDigits.h:30
LArOnlineID_Base::isEmBarrelOnline
bool isEmBarrelOnline(const HWIdentifier id) const
Definition: LArOnlineID_Base.cxx:1720
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
DumpLArDigits::DumpLArDigits
DumpLArDigits(const std::string &name, ISvcLocator *pSvcLocator)
Definition: DumpLArDigits.cxx:14
LArOnOffIdMapping
Definition: LArOnOffIdMapping.h:20