2 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
5 // implementation of TileRawDataContainer
7 #include "GaudiKernel/Bootstrap.h"
8 #include "GaudiKernel/ISvcLocator.h"
9 #include "Identifier/IdentifierHash.h"
10 #include "TileConditions/TileCablingService.h"
16 template <typename TCOLLECTION>
17 void TileRawDataContainer<TCOLLECTION>::initialize(bool createColl, TYPE type,
18 SG::OwnershipPolicy ownPolicy)
20 // initialize HashFunc
21 this->m_hashFunc.initialize(TileCablingService::getInstance()->getTileHWID(),type);
24 int ncoll = this->m_hashFunc.max();
25 for(int i=0; i<ncoll;++i){
26 TileFragHash::ID frag = this->m_hashFunc.identifier(i);
27 TCOLLECTION * coll = new TCOLLECTION(frag,ownPolicy) ;
28 StatusCode sc = this->addCollection(coll,static_cast<IdentifierHash>(i));
29 if (sc.isFailure() ) {
30 ISvcLocator* svcLoc = Gaudi::svcLocator( );
32 sc = svcLoc->service( "MessageSvc", msgSvc );
33 if ( sc.isFailure() ) {
34 std::cout << "TileRawDataContainer ERROR Can not retrieve MessageSvc" << std::endl;
35 std::cout << "TileRawDataContainer ERROR Can not create collection for frag 0x" << std::hex << frag
36 << " in container with CLID " << std::dec << this->clID() << std::endl;
38 MsgStream log(msgSvc, "TileRawDataContainer");
39 log << MSG::ERROR <<" Can not create collection for frag 0x" << MSG::hex << frag
40 << " in container with CLID " << MSG::dec << this->clID() << endmsg;
49 template <typename TCOLLECTION>
50 TileRawDataContainer<TCOLLECTION>::TileRawDataContainer(bool createColl,
53 SG::OwnershipPolicy ownPolicy)
54 : MyBase(TileCablingService::getInstance()->getTileHWID()->drawer_hash_max())
59 // initialize all the rest
60 initialize(createColl,m_type,ownPolicy);
64 template <typename TCOLLECTION>
65 TileRawDataContainer<TCOLLECTION>::TileRawDataContainer(bool createColl,
66 SG::OwnershipPolicy ownPolicy)
67 : MyBase(TileCablingService::getInstance()->getTileHWID()->drawer_hash_max())
68 , m_unit(TileRawChannelUnit::ADCcounts)
69 , m_type(TileFragHash::Digitizer)
72 // initialize all the rest
73 initialize(createColl,m_type,ownPolicy);
78 template <typename TCOLLECTION>
79 void TileRawDataContainer<TCOLLECTION>::print() const
81 std::cout << (std::string) (*this) << std::endl;
84 template <typename TCOLLECTION>
85 TileRawDataContainer<TCOLLECTION>::operator std::string() const
87 std::ostringstream text(std::ostringstream::out);
90 text << " size = " << this->size() << std::endl;
92 std::string result(text.str());
93 std::string newline("\n");
95 TContainer_const_iterator it1 = this->begin();
96 TContainer_const_iterator it2 = this->end();
98 const TCOLLECTION * coll;
100 for(;it1!=it2;++it1){
102 result += (std::string) (*coll) + newline;