ATLAS Offline Software
Loading...
Searching...
No Matches
CaloCondUtils.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3*/
4
6#include "GaudiKernel/MsgStream.h"
9#include <iomanip>
10
11//
12//___________________________________________________________
13//std::map<CaloCondUtils::SYSTEM,unsigned int> CaloCondUtils::m_nCells;
14
15//
16//___________________________________________________________
17unsigned int
19{
20 return static_cast<unsigned int>(sys);
21}
22
23//
24//___________________________________________________________
25unsigned int
27{
28 /*
29 //=== initialize on first usage
30 if(!m_nCells.size()){
31 m_nCells[EMECZNEG] = 31872;
32 m_nCells[EMBZNEG ] = 54784;
33 m_nCells[EMBZPOS ] = 54784;
34 m_nCells[EMECZPOS] = 31872;
35 m_nCells[HEC ] = 5632;
36 m_nCells[FCAL ] = 3524;
37 m_nCells[TILE ] = 5184;
38 }
39 */
40
41 switch (sys) {
42 case EMBZNEG:
43 return 54784;
44 break;
45 case EMBZPOS:
46 return 54784;
47 break;
48 case EMECZNEG:
49 return 31872;
50 break;
51 case EMECZPOS:
52 return 31872;
53 break;
54 case HEC:
55 return 5632;
56 break;
57 case TILE:
58 return 5184;
59 break;
60 case FCAL:
61 return 3524;
62 break;
63 }
64
65 return 0;
66}
67
68//
69//_____________________________________________________________________________
70std::string
71CaloCondUtils::getFullTag(const std::string& folder, const std::string& tag)
72{
73 std::string folderTag("");
74 //Copy folder name, ommiting slashes
75 for (const char i : folder) {
76 if (i!='/') {
77 folderTag+=i;
78 }
79 }
80 return (folderTag+"-"+tag);
81}
82
83//
84//_____________________________________________________________________________
85unsigned int
87 // enum CaloGain {
88 // TILELOWLOW =-16 ,
89 // TILELOWHIGH =-15 ,
90 // TILEHIGHLOW = -12,
91 // TILEHIGHHIGH = -11,
92 // TILEONELOW =-4,
93 // TILEONEHIGH =-3,
94 // INVALIDGAIN = -1, LARHIGHGAIN = 0, LARMEDIUMGAIN = 1, LARLOWGAIN = 2,
95 // LARNGAIN =3,
96 // UNKNOWNGAIN=4};
97{
98
99 //=== do nothing for LAr gains
100 if(caloGain>=0 && caloGain<=2) return static_cast<unsigned int>(caloGain);
101
102 //=== translate tile gains
103 if(caloGain==-16) return 0; //LOWLOW
104 if(caloGain==-15) return 1; //LOWHIGH
105 if(caloGain==-12) return 2; //HIGHLOW
106 if(caloGain==-11) return 3; //HIGHHIGH
107 if(caloGain== -4) return 0; //ONELOW
108 if(caloGain== -3) return 3; //ONEHIGH
109
110 //=== invalid gain
111 {
112 MsgStream log(Athena::getMessageSvc(), "CaloCondUtils::getDbCaloGain");
113 log << MSG::WARNING << "invalid gain found... probably corrupted data /badly decoded ? returns DbCaloGain 0" << endmsg;
114 return 0;
115 }
116 //throw CaloCond::InvalidCaloGain("CaloCondUtils::getDbCaloGain()", caloGain);
117}
118
119
120
#define endmsg
static std::string getFullTag(const std::string &folder, const std::string &tag)
Returns the full tag string, composed of camelized folder name and tag part.
static unsigned int getCoolChannelId(const SYSTEM sys)
Returns the cool channel id associated with a given system.
static unsigned int getDbCaloGain(int caloGain)
Returns the non-negative gainId to be used with the COOL DB.
static unsigned int getNCells(const SYSTEM sys)
Returns the number of cells for a given system.
singleton-like access to IMessageSvc via open function and helper
IMessageSvc * getMessageSvc(bool quiet=false)