 |
ATLAS Offline Software
|
Go to the documentation of this file.
26 const std::string&
group) :
28 , m_jgtower_region_index(0)
30 , m_DETZSIDE_INDEX(999)
31 , m_SAMPLING_INDEX(999)
37 , m_calo_region_hash_max(0)
126 std::string errorMessage =
127 "Error in JGTowerBase_ID::get_hash, invalid context ";
140 int sc =
get_hash(regId, regHash, ®ionContext);
152 ATH_MSG_DEBUG(
"Request to reinitialize not satisfied - tags have not changed");
168 ATH_MSG_ERROR(
"initialize_from_dict - cannot access Calorimeter dictionary");
179 ATH_MSG_ERROR(
"Could not get value for label 'Calorimeter' of field 'subdet' in dictionary " <<
m_dict->
name());
183 int jgtowerCaloValue = -1;
189 ATH_MSG_ERROR(
"Could not get value for label 'positive_lvl1_side' of field 'DetZside' in dictionary " <<
m_dict->
name());
199 reg_id.
add(caloValue);
200 reg_id.
add(jgtowerCaloValue);
240 int size = (1 << bits);
293 if (
range.match(expId)) {
295 if (not eta_field.
empty()) {
319 if (
range.match(expId)) {
321 if (not eta_field.
empty()) {
340 if (
range.match(expId)) {
342 if (not phi_field.
empty()) {
455 std::string errorMessage =
"JGTowerBase_ID::tower_id() result is not OK: ID, range = "
469 std::string errorMessage =
"JGTowerBase_ID::tower_id(regionId) result is not OK: ID= "
477 std::string errorMessage =
"JGTowerBase_ID::tower_id(regionId,field values) result is not OK: ID, range = "
490 std::string errorMessage =
"JGTowerBase_ID::region_id() result is not OK: ID, range = "
500 ATH_MSG_ERROR(
"initLevelsFromDict - dictionary NOT initialized");
521 ATH_MSG_ERROR(
"initLevelsFromDict - unable to find jgtower region");
532 ATH_MSG_ERROR(
"initLevelsFromDict - unable to find 'subdet' field");
542 ATH_MSG_ERROR(
"initLevelsFromDict - unable to find 'DetZside' field");
552 ATH_MSG_ERROR(
"initLevelsFromDict - unable to find '" << t_pre <<
"sampling' field");
562 ATH_MSG_ERROR(
"initLevelsFromDict - unable to find 'region' field");
572 ATH_MSG_ERROR(
"initLevelsFromDict - unable to find 'eta' field");
582 ATH_MSG_ERROR(
"initLevelsFromDict - unable to find 'phi' field");
596 ATH_MSG_DEBUG(
"decode index and bit fields for each level:");
613 unsigned int nids = 0;
614 std::set<Identifier>
ids;
619 auto last = rit.
end();
627 if(!(
ids.insert(tow_id)).second)
641 std::set<Identifier>::const_iterator
first =
ids.begin();
642 std::set<Identifier>::const_iterator last =
ids.end();
656 auto last = rit.
end();
662 if(!(
ids.insert(reg_id)).second)
699 auto last = rit.
end();
723 if (
get_hash(
id, hash_id,&tcontext))
725 ATH_MSG_ERROR(
"init_neighbors - unable to get hash, compact");
730 unsigned short index = hash_id;
742 if (
get_hash(
id, hash_id,&tcontext))
744 ATH_MSG_ERROR(
"init_neighbors - unable to get previous phi hash, exp/compact");
756 if (
get_hash(
id, hash_id,&tcontext))
758 ATH_MSG_ERROR(
"init_neighbors - unable to get next phi hash, exp/compact");
769 if (
get_hash(
id, hash_id,&tcontext))
771 ATH_MSG_ERROR(
"init_neighbors - unable to get previous eta hash, exp/compact");
783 if (
get_hash(
id, hash_id,&tcontext))
785 ATH_MSG_ERROR(
"init_neighbors - unable to get next eta hash, exp/compact");
int get_prev_in_phi(const IdentifierHash &id, IdentifierHash &prev) const
access to hashes for neighbours in phi – towers only (no extended) return == 0 for neighbours found
std::vector< const IdDictRegion * > m_vecOfDictRegions
List of IdDictRegion objects.
int eta(const Identifier id) const
return eta according to :
MultiRange build_multirange() const
Get MultiRange for full dictionary.
int fill_vec_of_dict_regions(const std::string &group_name="")
virtual int initialize_from_dictionary(const IdDictMgr &dict_mgr) override
Initialization from the identifier dictionary.
float phi0(const Identifier regId) const
Return the minimum phi of region, or NOT_VALID.
Scalar phi() const
phi method
std::vector< unsigned short > m_prev_eta_vec
Exception class for Calo Identifiers.
std::string show_to_string(void) const
void tower_id_checks(int pos_neg, int sampling, int region, int eta, int phi) const
Scalar eta() const
pseudorapidity method
IdentifierHash calo_region_hash(const Identifier id) const
const IdDictRegion & region(size_t i) const
Region at index i.
IdentifierHash tower_hash(Identifier towerId) const
create hash id from tower id
element_type get_minimum() const
Query the values.
int phi(const Identifier id) const
return phi according to :
size_type end_index() const
int calo_field_value() const
virtual int get_hash(const Identifier &id, IdentifierHash &hash_id, const IdContext *context=0) const
create hash id from compact id (return == 0 for OK)
IdDictFieldImplementation m_sampling_impl
void add(element_type value)
Append a value into a new field.
std::vector< unsigned short > m_next_eta_vec
int sampling(const Identifier id) const
return sampling according to :
const IdDictField * find_field(const std::string &name) const
int region(const Identifier id) const
return region according to :
IdContext tower_context() const
access to IdContext's which define which levels of fields are contained in the id
int phi_max(const Identifier regId) const
min value of phi index (-999 == failure)
int get_prev_in_eta(const IdentifierHash &id, IdentifierHash &prev) const
access to hashes for neighbours in eta – towers only (no extended) return == 0 for neighbours found
element_type get_maximum() const
IdContext region_context() const
access to IdContext's which define which levels of fields are contained in the id
const std::string & name() const
Dictionary name.
IdDictFieldImplementation m_region_impl
std::vector< Identifier > m_region_vec
IdDictFieldImplementation m_pnz_reg_impl
int unpack(Identifier id) const
Identifier manipulation methods.
std::vector< unsigned short > m_prev_phi_vec
int get_next_in_eta(const IdentifierHash &id, IdentifierHash &next) const
access to hashes for neighbours in eta – towers only (no extended) return == 0 for neighbours found
MultiRange m_full_reg_range
size_type m_calo_region_hash_max
std::vector< HashCalc > m_hash_calcs
size_type m_SAMPLING_INDEX
size_type m_jgtower_region_index
virtual int initialize_base_from_dictionary(const IdDictMgr &dict_mgr, const std::string &t_pre)
initialization from the identifier dictionary
const IdDictRegion * find_region(const std::string ®ion_name) const
This class provides an interface to generate or decode an identifier for the upper levels of the dete...
size_type begin_index() const
small class holding the starting hash value, the min eta and the number of phi bins of each region
bool empty() const
If true, this field does not have any constraints, and may hold any value representable by element_ty...
void set_bits(size_type bits, size_type bits_offset)
JGTowerBase_ID(const std::string &name, const std::string &group)
size_type bits_offset() const
std::vector< Identifier > m_tower_vec
bool get_next(element_type current, element_type &next) const
ConstRangeIterator begin() const
virtual ~JGTowerBase_ID()
std::vector< unsigned short > m_next_phi_vec
float eta0(const Identifier regId) const
Return the minimum eta of region, or NOT_VALID.
const IdDictDictionary * m_dict
int register_dict_tag(const IdDictMgr &dict_mgr, const std::string &dict_name)
Register the file and tag names for a particular IdDict dictionary.
void region_id_checks(int pos_neg, int sampling, int region) const
int get_label_value(const std::string &field, const std::string &label, int &value) const
std::string strformat(const char *fmt,...)
return a std::string according to a format fmt and varargs
Identifier region_id(int pos_neg, int sampling, int region) const
build a region (of towers) identifier
IdDictFieldImplementation m_jgtower_impl
A Range describes the possible ranges for the field values of an ExpandedIdentifier.
ExpandedIdentifier calo_exp(void) const
size_type m_tower_hash_max
virtual int get_id(const IdentifierHash &hash_id, Identifier &id, const IdContext *context=0) const
create compact id from hash id (return == 0 for OK)
size_type m_DETZSIDE_INDEX
Identifier tower_id(int pos_neg, int sampling, int region, int eta, int phi) const
build a tower identifier
int match(const ExpandedIdentifier &id) const
Match an identifier.
int get_next_in_phi(const IdentifierHash &id, IdentifierHash &next) const
access to hashes for neighbours in phi – towers only (no extended) return == 0 for neighbours found
bool reinitialize(const IdDictMgr &dict_mgr)
Test whether an idhelper should be reinitialized based on the change of tags.
const IdDictDictionary * find_dictionary(const std::string &name) const
Access dictionary by name.
int pos_neg(const Identifier id) const
return pos_neg according to :
IdentifierHash tower_hash_binary_search(Identifier towerId) const
create hash id from tower id – method NOT optimised, please use tower_hash() above
std::string show_to_string(Identifier id, const IdContext *context=0, char sep='.') const
or provide the printout in string form
int eta_max(const Identifier regId) const
max value of eta index (-999 == failure)
int initLevelsFromDict(const std::string &t_pre)
int eta_min(const Identifier regId) const
min value of eta index (-999 == failure)
This is the individual specification for the range of one ExpandedIdentifier IdentifierField.
int get_expanded_id(const Identifier &id, ExpandedIdentifier &exp_id, const IdContext *context) const
create expanded Identifier from Identifier (return == 0 for OK)
void clear()
Erase all fields.
bool get_previous(element_type current, element_type &previous) const
Returns false if previous/next is at end of range, or not possible.
float phiGranularity(const Identifier regId) const
Return the phi granularity of a region, or NOT_VALID.
IdDictFieldImplementation m_phi_impl
ConstRangeIterator end() const
size_type cardinality() const
Computes a possible cardinality from all ranges.
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
MultiRange m_full_tower_range
IdDictFieldImplementation m_calo_impl
Factor out code common between JTower_ID and GTower_ID.
This class saves the "context" of an expanded identifier (ExpandedIdentifier) for compact or hash ver...
float etaGranularity(const Identifier regId) const
Return the eta granularity of a region, or NOT_VALID.
This class provides an interface to generate or decode an identifier for the upper levels of the dete...
Identifier::size_type size_type
IdDictFieldImplementation m_eta_impl