1 #ifndef HcalCondObjectContainer_h
2 #define HcalCondObjectContainer_h
28 bool addValues(
const Item& myItem,
bool h2mode_=
false);
33 virtual std::string
myname()
const {
return (std::string)
"Hcal Undefined";}
36 typedef std::pair< std::string, std::vector<Item> >
tHcalCont;
79 template<
class Item>
void
111 template<
class Item>
const Item*
119 unsigned int index1 =
abs(index);
121 const Item* cell =
NULL;
125 if (index1 < HBcontainer.size())
126 cell = &(HBcontainer.at(index1) );
129 if (index1 < HEcontainer.size())
130 cell = &(HEcontainer.at(index1) );
133 if (index1 < HOcontainer.size())
134 cell = &(HOcontainer.at(index1) );
137 if (index1 < HFcontainer.size())
138 cell = &(HFcontainer.at(index1) );
141 if (index1 < HTcontainer.size())
142 cell = &(HTcontainer.at(index1) );
145 if (index1 < ZDCcontainer.size())
146 cell = &(ZDCcontainer.at(index1) );
149 if (index1 < CASTORcontainer.size())
150 cell = &(CASTORcontainer.at(index1) );
153 if (index1 < CALIBcontainer.size())
154 cell = &(CALIBcontainer.at(index1) );
161 if ((!cell) || (cell->rawId() != fId ) )
163 <<
"Unavailable Conditions of type " << myname() <<
" for cell " << myId;
167 template<
class Item>
const bool
174 if (index < 0)
return false;
175 unsigned int index1 =
abs(index);
176 const Item* cell =
NULL;
179 if (index1 < HBcontainer.size()) cell = &(HBcontainer.at(index1) );
182 if (index1 < HEcontainer.size()) cell = &(HEcontainer.at(index1) );
185 if (index1 < HOcontainer.size()) cell = &(HOcontainer.at(index1) );
188 if (index1 < HFcontainer.size()) cell = &(HFcontainer.at(index1) );
191 if (index1 < HTcontainer.size()) cell = &(HTcontainer.at(index1) );
194 if (index1 < ZDCcontainer.size()) cell = &(ZDCcontainer.at(index1) );
197 if (index1 < CASTORcontainer.size()) cell = &(CASTORcontainer.at(index1) );
200 if (index1 < CALIBcontainer.size()) cell = &(CALIBcontainer.at(index1) );
202 default:
return false;
break;
208 if (cell->rawId() == fId )
214 template<
class Item>
bool
217 unsigned long myRawId = myItem.rawId();
221 if (index < 0) success =
false;
222 unsigned int index1 =
abs(index);
226 if (!HBcontainer.size() ) initContainer(myId.
genericSubdet() );
227 if (index1 < HBcontainer.size())
229 HBcontainer.at(index1) = myItem;
234 if (!HEcontainer.size() ) initContainer(myId.
genericSubdet(), h2mode_ );
235 if (index1 < HEcontainer.size())
237 HEcontainer.at(index1) = myItem;
242 if (!HOcontainer.size() ) initContainer(myId.
genericSubdet() );
243 if (index1 < HOcontainer.size())
245 HOcontainer.at(index1) = myItem;
250 if (!HFcontainer.size() ) initContainer(myId.
genericSubdet() );
251 if (index1 < HFcontainer.size())
253 HFcontainer.at(index1) = myItem;
258 if (!HTcontainer.size() ) initContainer(myId.
genericSubdet() );
259 if (index1 < HTcontainer.size())
261 HTcontainer.at(index1) = myItem;
266 if (!ZDCcontainer.size() ) initContainer(myId.
genericSubdet() );
267 if (index1 < ZDCcontainer.size())
269 ZDCcontainer.at(index1) = myItem;
274 if (!CASTORcontainer.size() ) initContainer(myId.
genericSubdet() );
275 if (index1 < CASTORcontainer.size())
277 CASTORcontainer.at(index1) = myItem;
282 if (!CALIBcontainer.size() ) initContainer(myId.
genericSubdet() );
283 if (index1 < CALIBcontainer.size())
285 CALIBcontainer.at(index1) = myItem;
294 <<
" no valid filling possible for Conditions of type " << myname() <<
" for DetId " << myId;
298 template<
class Item> std::vector<DetId>
301 std::vector<DetId> channels;
303 for (
unsigned int i=0;
i<HBcontainer.size();
i++)
305 if (emptyItem.rawId() != HBcontainer.at(
i).rawId() )
306 channels.push_back(
DetId(HBcontainer.at(
i).rawId()) );
308 for (
unsigned int i=0;
i<HEcontainer.size();
i++)
310 if (emptyItem.rawId() != HEcontainer.at(
i).rawId() )
311 channels.push_back(
DetId(HEcontainer.at(
i).rawId()) );
313 for (
unsigned int i=0;
i<HOcontainer.size();
i++)
315 if (emptyItem.rawId() != HOcontainer.at(
i).rawId() )
316 channels.push_back(
DetId(HOcontainer.at(
i).rawId()) );
318 for (
unsigned int i=0;
i<HFcontainer.size();
i++)
320 if (emptyItem.rawId() != HFcontainer.at(
i).rawId() )
321 channels.push_back(
DetId(HFcontainer.at(
i).rawId()) );
323 for (
unsigned int i=0;
i<HTcontainer.size();
i++)
325 if (emptyItem.rawId() != HTcontainer.at(
i).rawId() )
326 channels.push_back(
DetId(HTcontainer.at(
i).rawId()) );
328 for (
unsigned int i=0;
i<ZDCcontainer.size();
i++)
330 if (emptyItem.rawId() != ZDCcontainer.at(
i).rawId() )
331 channels.push_back(
DetId(ZDCcontainer.at(
i).rawId()) );
333 for (
unsigned int i=0;
i<CALIBcontainer.size();
i++)
335 if (emptyItem.rawId() != CALIBcontainer.at(
i).rawId() )
336 channels.push_back(
DetId(CALIBcontainer.at(
i).rawId()) );
338 for (
unsigned int i=0;
i<CASTORcontainer.size();
i++)
340 if (emptyItem.rawId() != CASTORcontainer.at(
i).rawId() )
341 channels.push_back(
DetId(CASTORcontainer.at(
i).rawId()) );
bool addValues(const Item &myItem, bool h2mode_=false)
int hashedId(bool h2mode_=false) const
std::vector< Item > HEcontainer
std::vector< Item > HBcontainer
virtual ~HcalCondObjectContainer()
std::vector< Item > CASTORcontainer
void initContainer(int container, bool h2mode_=false)
const tAllContWithNames getAllContainers() const
const bool exists(DetId fId) const
std::vector< DetId > getAllChannels() const
std::vector< Item > ZDCcontainer
virtual std::string myname() const
std::vector< Item > HTcontainer
std::vector< Item > HOcontainer
HcalCondObjectContainer()
HcalGenericSubdetector genericSubdet() const
std::vector< Item > CALIBcontainer
const Item * getValues(DetId fId) const
std::vector< Item > HFcontainer
std::pair< std::string, std::vector< Item > > tHcalCont
std::vector< tHcalCont > tAllContWithNames