 |
ATLAS Offline Software
|
Go to the documentation of this file.
8 #include "GaudiKernel/MsgStream.h"
24 m_jgtower_region_index(0)
26 , m_DETZSIDE_INDEX(999)
27 , m_SAMPLING_INDEX(999)
33 , m_calo_region_hash_max(0)
61 std::stringstream strm;
80 strg =
" hash_id out of range "+strm.str();
87 std::cout << strg << std::endl;
99 strg =
" hash_id out of range "+strm.str();
106 std::cout << strg << std::endl;
143 std::string errorMessage =
144 "Error in JGTowerBase_ID::get_hash, invalid context ";
157 int sc =
get_hash(regId, regHash, ®ionContext);
166 std::string strg =
"initialize_from_dictionary";
171 std::cout << strg << std::endl;
183 std::stringstream strm;
184 std::stringstream strm1;
185 std::stringstream strm2;
198 strg=
" initialize_from_dict - cannot access Calorimeter dictionary ";
204 std::cout << strg << std::endl;
217 strg=
"Could not get value for label 'Calorimeter' of field 'subdet' in dictionary "+strm.str();
224 std::cout << strg << std::endl;
229 int jgtowerCaloValue = -1;
237 strg =
" Could not get value for label positive_lvl1_side of field 'DetZside in dictionary"+strm.str();
244 std::cout << strg << std::endl;
255 reg_id.
add(caloValue);
256 reg_id.
add(jgtowerCaloValue);
271 strg =
" JGTowerBase_ID::initialize_from_dict : ";
272 strg1 =
" tower range -> "+strm1.str();
281 std::cout << strg << std::endl;
282 std::cout << strg1 << std::endl;
283 std::cout << strg2 << std::endl;
317 int size = (1 << bits);
355 strg =
"Min > "+strm.str();
356 strg1=
" "+strm1.str();
357 strg2=
" "+strm2.str();
366 std::cout << strg << std::endl;
367 std::cout << strg1 << std::endl;
368 std::cout << strg2 << std::endl;
386 strg =
" ***** Error tower ranges, id, hash, i = "+strm.str();
387 strg1=
" , "+strm1.str();
388 strg2=
" , "+strm2.str();
397 std::cout << strg << std::endl;
398 std::cout << strg1 << std::endl;
399 std::cout << strg2 << std::endl;
425 if (
range.match(expId)) {
427 if (not eta_field.
empty()) {
451 if (
range.match(expId)) {
453 if (not eta_field.
empty()) {
472 if (
range.match(expId)) {
474 if (not phi_field.
empty()) {
587 std::string errorMessage =
"JGTowerBase_ID::tower_id() result is not OK: ID, range = "
601 std::string errorMessage =
"JGTowerBase_ID::tower_id(regionId) result is not OK: ID= "
609 std::string errorMessage =
"JGTowerBase_ID::tower_id(regionId,field values) result is not OK: ID, range = "
622 std::string errorMessage =
"JGTowerBase_ID::region_id() result is not OK: ID, range = "
631 std::stringstream strm;
632 std::stringstream strm1;
633 std::stringstream strm2;
634 std::stringstream strm3;
635 std::stringstream strm4;
636 std::stringstream strm5;
637 std::stringstream strm6;
638 std::stringstream strm7;
649 strg=
"initLevelsFromDict - dictionary NOT initialized ";
655 std::cout << strg << std::endl;
677 strg =
"initLevelsFromDict - unable to find jgtower region ";
683 std::cout << strg << std::endl;
695 strg=
"initLevelsFromDict - unable to find 'subdet' field ";
702 std::cout << strg << std::endl;
713 strg=
"initLevelsFromDict - unable to find 'DetZside' field ";
720 std::cout << strg << std::endl;
732 strg=
"initLevelsFromDict - unable to find '"+t_pre+
"sampling' field ";
739 std::cout << strg << std::endl;
751 strg=
"initLevelsFromDict - unable to find 'region' field ";
758 std::cout << strg << std::endl;
771 strg=
"initLevelsFromDict - unable to find 'eta' field ";
778 std::cout << strg << std::endl;
790 strg=
"initLevelsFromDict - unable to find 'phi' field ";
797 std::cout << strg << std::endl;
818 strg =
"decode index and bit fields for each level: ";
819 strg1=
"calo "+strm1.str();
820 strg2=
"detzside "+strm2.str();
821 strg3=
"sampling "+strm3.str();
822 strg4=
"reg "+strm4.str();
823 strg5=
"eta "+strm5.str();
824 strg6=
"phi "+strm6.str();
837 std::cout << strg << std::endl;
838 std::cout << strg1 << std::endl;
839 std::cout << strg2 << std::endl;
840 std::cout << strg3 << std::endl;
841 std::cout << strg4 << std::endl;
842 std::cout << strg5 << std::endl;
843 std::cout << strg6 << std::endl;
853 std::stringstream strm;
854 std::stringstream strm1;
855 std::stringstream strm2;
862 unsigned int nids = 0;
863 std::set<Identifier>
ids;
868 auto last = rit.
end();
876 if(!(
ids.insert(tow_id)).second)
880 log << MSG::ERROR <<
" init_hashes "
881 <<
" duplicated id for J/GTower id. nids= " << nids
882 <<
" compact Id " <<
endmsg;
886 std::cout <<
" JGTowerBase_ID::init_hashes "
887 <<
" Error: duplicated id for J/GTower id. nids= " << nids
900 log << MSG::ERROR <<
" init_hashes "
901 <<
" set size NOT EQUAL to hash max. size " <<
ids.size()
907 std::cout <<
" JGTowerBase_ID::init_hashes "
908 <<
" Error: set size NOT EQUAL to hash max. size " <<
ids.size()
916 std::set<Identifier>::const_iterator
first =
ids.begin();
917 std::set<Identifier>::const_iterator last =
ids.end();
931 auto last = rit.
end();
937 if(!(
ids.insert(reg_id)).second)
941 log << MSG::ERROR <<
" JGTowerBase_ID::init_hashes "
942 <<
" duplicated id for region id. nids= " << nids
943 <<
" compact Id " <<
endmsg;
947 std::cout <<
" JGTowerBase_ID::init_hashes "
948 <<
" Error: duplicated id for region id. nids= " << nids
952 std::cout << std::endl;
962 log << MSG::ERROR <<
" JGTowerBase_ID::init_hashes "
963 <<
" set size NOT EQUAL to region hash max. size " <<
ids.size()
969 std::cout <<
" JGTowerBase_ID::init_hashes "
970 <<
" Error: set size NOT EQUAL to region hash max. size " <<
ids.size()
1005 auto last = rit.
end();
1029 if (
get_hash(
id, hash_id,&tcontext))
1033 log << MSG::ERROR <<
" init_neighbors - unable to get hash, compact = " <<
endmsg;
1037 std::cout <<
" JGTowerBase_ID::init_neighbors - unable to get hash, compact = ";
1039 std::cout << std::endl;
1045 unsigned short index = hash_id;
1057 if (
get_hash(
id, hash_id,&tcontext))
1061 log << MSG::ERROR <<
" init_neighbors - unable to get previous phi hash, exp/compact " <<
endmsg;
1065 std::cout <<
" JGTowerBase_ID::init_neighbors - unable to get previous phi hash, exp/compact ";
1081 if (
get_hash(
id, hash_id,&tcontext))
1085 log << MSG::ERROR <<
" init_neighbors - unable to get next phi hash, exp/compact "<<
endmsg;
1089 std::cout <<
" JGTowerBase_ID::init_neighbors - unable to get next phi hash, exp/compact ";
1104 if (
get_hash(
id, hash_id,&tcontext))
1108 log << MSG::ERROR <<
" init_neighbors - unable to get previous eta hash, exp/compact "<<
endmsg;
1112 std::cout <<
" JGTowerBase_ID::init_neighbors - unable to get previous eta hash, exp/compact ";
1128 if (
get_hash(
id, hash_id,&tcontext))
1132 log << MSG::ERROR <<
" init_neighbors - unable to get next eta hash, exp/compact ";
1136 std::cout <<
" JGTowerBase_ID::init_neighbors - unable to get next eta hash, exp/compact ";
IdDictRegion * find_region(const std::string ®ion_name) const
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
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.
IdContext tower_context(void) const
access to IdContext's which define which levels of fields are contained in the id
std::vector< unsigned short > m_next_eta_vec
int sampling(const Identifier id) const
return sampling according to :
int region(const Identifier id) const
return region according to :
void show() const
Send to std::cout.
IMessageSvc * m_msgSvc
pointer to the message service
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
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
IdDictField * find_field(const std::string &name) const
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
This class provides an interface to generate or decode an identifier for the upper levels of the dete...
size_type begin_index() const
IdDictDictionary * find_dictionary(const std::string &name) const
Access dictionary by name.
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)
size_type bits_offset() const
std::vector< IdDictRegion * > m_regions
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)
IdContext region_context(void) const
access to IdContext's which define which levels of fields are contained in the id
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.
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.
Identifier::size_type size_type
IdDictFieldImplementation m_eta_impl