1 #ifndef HcalCondObjectContainer_h
2 #define HcalCondObjectContainer_h
73 typedef std::pair< std::string, std::vector<Item> >
tHcalCont;
111 template<
class Item>
void
118 case(
HcalBarrel) :
for (
unsigned int i=0;
i<sizeFor(fId);
i++) HBcontainer.push_back(emptyItem);
break;
119 case(
HcalEndcap) :
for (
unsigned int i=0;
i<sizeFor(fId);
i++) HEcontainer.push_back(emptyItem);
break;
120 case(
HcalOuter) :
for (
unsigned int i=0;
i<sizeFor(fId);
i++) HOcontainer.push_back(emptyItem);
break;
121 case(
HcalForward) :
for (
unsigned int i=0;
i<sizeFor(fId);
i++) HFcontainer.push_back(emptyItem);
break;
122 case(
HcalTriggerTower) :
for (
unsigned int i=0;
i<sizeFor(fId);
i++) HTcontainer.push_back(emptyItem);
break;
124 for (
unsigned int i=0;
i<sizeFor(fId);
i++) CALIBcontainer.push_back(emptyItem);
break;
130 for (
unsigned int i=0;
i<sizeFor(fId);
i++) CASTORcontainer.push_back(emptyItem);
132 for (
unsigned int i=0;
i<sizeFor(fId);
i++) ZDCcontainer.push_back(emptyItem);
138 template<
class Item>
const Item*
141 unsigned int index=indexFor(fId);
145 if (index<0xFFFFFFFu) {
148 case(
HcalBarrel) :
if (index < HBcontainer.size()) cell = &(HBcontainer.at(index) );
break;
149 case(
HcalEndcap) :
if (index < HEcontainer.size()) cell = &(HEcontainer.at(index) );
break;
150 case(
HcalForward) :
if (index < HFcontainer.size()) cell = &(HFcontainer.at(index) );
break;
151 case(
HcalOuter) :
if (index < HOcontainer.size()) cell = &(HOcontainer.at(index) );
break;
152 case(
HcalTriggerTower) :
if (index < HTcontainer.size()) cell = &(HTcontainer.at(index) );
break;
154 if (index < CALIBcontainer.size()) cell = &(CALIBcontainer.at(index) );
160 if (index < CASTORcontainer.size()) cell = &(CASTORcontainer.at(index) );
162 if (index < ZDCcontainer.size()) cell = &(ZDCcontainer.at(index) );
172 <<
"Unavailable Conditions of type " << myname() <<
" for cell " << textForId(fId);
174 }
else if (cell->rawId() != fId) {
177 <<
"Requested conditions of type " << myname() <<
" for cell " << textForId(fId) <<
" got conditions for cell " << textForId(
DetId(cell->rawId()));
185 template<
class Item>
const bool
188 const Item* cell = getValues(fId,
false);
191 if (cell->rawId() == fId )
197 template<
class Item>
bool
201 DetId fId(myItem.rawId());
202 unsigned int index=indexFor(fId);
206 if (index<0xFFFFFFFu) {
209 case(
HcalBarrel) :
if (!HBcontainer.size() ) initContainer(fId);
210 if (index < HBcontainer.size()) cell = &(HBcontainer.at(index) );
break;
211 case(
HcalEndcap) :
if (!HEcontainer.size() ) initContainer(fId);
212 if (index < HEcontainer.size()) cell = &(HEcontainer.at(index) );
break;
213 case(
HcalForward) :
if (!HFcontainer.size() ) initContainer(fId);
214 if (index < HFcontainer.size()) cell = &(HFcontainer.at(index) );
break;
215 case(
HcalOuter) :
if (!HOcontainer.size() ) initContainer(fId);
216 if (index < HOcontainer.size()) cell = &(HOcontainer.at(index) );
break;
218 if (index < HTcontainer.size()) cell = &(HTcontainer.at(index) );
break;
220 if (!CALIBcontainer.size() ) initContainer(fId);
221 if (index < CALIBcontainer.size()) cell = &(CALIBcontainer.at(index) );
228 if (!CASTORcontainer.size() ) initContainer(fId);
229 if (index < CASTORcontainer.size()) cell = &(CASTORcontainer.at(index) );
231 if (!ZDCcontainer.size() ) initContainer(fId);
232 if (index < ZDCcontainer.size()) cell = &(ZDCcontainer.at(index) );
244 <<
" no valid filling possible for Conditions of type " << myname() <<
" for DetId " << textForId(fId);
248 template<
class Item> std::vector<DetId>
251 std::vector<DetId> channels;
253 for (
unsigned int i=0;
i<HBcontainer.size();
i++)
255 if (emptyItem.rawId() != HBcontainer.at(
i).rawId() )
256 channels.push_back(
DetId(HBcontainer.at(
i).rawId()) );
258 for (
unsigned int i=0;
i<HEcontainer.size();
i++)
260 if (emptyItem.rawId() != HEcontainer.at(
i).rawId() )
261 channels.push_back(
DetId(HEcontainer.at(
i).rawId()) );
263 for (
unsigned int i=0;
i<HOcontainer.size();
i++)
265 if (emptyItem.rawId() != HOcontainer.at(
i).rawId() )
266 channels.push_back(
DetId(HOcontainer.at(
i).rawId()) );
268 for (
unsigned int i=0;
i<HFcontainer.size();
i++)
270 if (emptyItem.rawId() != HFcontainer.at(
i).rawId() )
271 channels.push_back(
DetId(HFcontainer.at(
i).rawId()) );
273 for (
unsigned int i=0;
i<HTcontainer.size();
i++)
275 if (emptyItem.rawId() != HTcontainer.at(
i).rawId() )
276 channels.push_back(
DetId(HTcontainer.at(
i).rawId()) );
278 for (
unsigned int i=0;
i<ZDCcontainer.size();
i++)
280 if (emptyItem.rawId() != ZDCcontainer.at(
i).rawId() )
281 channels.push_back(
DetId(ZDCcontainer.at(
i).rawId()) );
283 for (
unsigned int i=0;
i<CALIBcontainer.size();
i++)
285 if (emptyItem.rawId() != CALIBcontainer.at(
i).rawId() )
286 channels.push_back(
DetId(CALIBcontainer.at(
i).rawId()) );
288 for (
unsigned int i=0;
i<CASTORcontainer.size();
i++)
290 if (emptyItem.rawId() != CASTORcontainer.at(
i).rawId() )
291 channels.push_back(
DetId(CASTORcontainer.at(
i).rawId()) );
std::atomic< const HcalTopology * > topo_ COND_TRANSIENT
HcalCondObjectContainerBase(HcalCondObjectContainerBase const &o)
unsigned int indexFor(DetId) const
std::vector< Item > HEcontainer
std::vector< Item > HBcontainer
void setTopo(const HcalTopology *topo) const
virtual ~HcalCondObjectContainer()
std::vector< Item > CASTORcontainer
const Item * getValues(DetId fId, bool throwOnFail=true) const
HcalOtherSubdetector extractOther(const DetId &id) const
int getCreatorPackedIndexVersion() const
unsigned int sizeFor(DetId) const
const tAllContWithNames getAllContainers() const
HcalCondObjectContainerBase & operator=(HcalCondObjectContainerBase const &o)
const bool exists(DetId fId) const
std::vector< DetId > getAllChannels() const
std::vector< Item > ZDCcontainer
int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
static const int SubdetectorId
HcalCondObjectContainer(const HcalTopology *topo)
static const int SubdetectorId
virtual std::string myname() const
std::string textForId(const DetId &id) const
std::vector< Item > HTcontainer
std::vector< Item > HOcontainer
std::vector< Item > CALIBcontainer
void initContainer(DetId container)
int packedIndexVersion_ COND_TRANSIENT
bool addValues(const Item &myItem)
Detector det() const
get the detector field from this detid
std::vector< Item > HFcontainer
std::pair< std::string, std::vector< Item > > tHcalCont
std::vector< tHcalCont > tAllContWithNames
const HcalTopology * topo() const