|
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
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