 |
ATLAS Offline Software
|
Go to the documentation of this file.
12 #include "GaudiKernel/MsgStream.h"
27 const std::string&
group) :
29 , m_jgtower_region_index(0)
31 , m_DETZSIDE_INDEX(999)
32 , m_SAMPLING_INDEX(999)
38 , m_calo_region_hash_max(0)
66 std::stringstream strm;
85 strg =
" hash_id out of range "+strm.str();
92 std::cout << strg << std::endl;
104 strg =
" hash_id out of range "+strm.str();
111 std::cout << strg << std::endl;
148 std::string errorMessage =
149 "Error in JGTowerBase_ID::get_hash, invalid context ";
162 int sc =
get_hash(regId, regHash, ®ionContext);
171 std::string strg =
"initialize_from_dictionary";
176 std::cout << strg << std::endl;
188 std::stringstream strm;
189 std::stringstream strm1;
190 std::stringstream strm2;
203 strg=
" initialize_from_dict - cannot access Calorimeter dictionary ";
209 std::cout << strg << std::endl;
222 strg=
"Could not get value for label 'Calorimeter' of field 'subdet' in dictionary "+strm.str();
229 std::cout << strg << std::endl;
234 int jgtowerCaloValue = -1;
242 strg =
" Could not get value for label positive_lvl1_side of field 'DetZside in dictionary"+strm.str();
249 std::cout << strg << std::endl;
260 reg_id.
add(caloValue);
261 reg_id.
add(jgtowerCaloValue);
276 strg =
" JGTowerBase_ID::initialize_from_dict : ";
277 strg1 =
" tower range -> "+strm1.str();
286 std::cout << strg << std::endl;
287 std::cout << strg1 << std::endl;
288 std::cout << strg2 << std::endl;
322 int size = (1 << bits);
360 strg =
"Min > "+strm.str();
361 strg1=
" "+strm1.str();
362 strg2=
" "+strm2.str();
371 std::cout << strg << std::endl;
372 std::cout << strg1 << std::endl;
373 std::cout << strg2 << std::endl;
391 strg =
" ***** Error tower ranges, id, hash, i = "+strm.str();
392 strg1=
" , "+strm1.str();
393 strg2=
" , "+strm2.str();
402 std::cout << strg << std::endl;
403 std::cout << strg1 << std::endl;
404 std::cout << strg2 << std::endl;
430 if (
range.match(expId)) {
432 if (not eta_field.
empty()) {
456 if (
range.match(expId)) {
458 if (not eta_field.
empty()) {
477 if (
range.match(expId)) {
479 if (not phi_field.
empty()) {
592 std::string errorMessage =
"JGTowerBase_ID::tower_id() result is not OK: ID, range = "
606 std::string errorMessage =
"JGTowerBase_ID::tower_id(regionId) result is not OK: ID= "
614 std::string errorMessage =
"JGTowerBase_ID::tower_id(regionId,field values) result is not OK: ID, range = "
627 std::string errorMessage =
"JGTowerBase_ID::region_id() result is not OK: ID, range = "
636 std::stringstream strm;
637 std::stringstream strm1;
638 std::stringstream strm2;
639 std::stringstream strm3;
640 std::stringstream strm4;
641 std::stringstream strm5;
642 std::stringstream strm6;
643 std::stringstream strm7;
654 strg=
"initLevelsFromDict - dictionary NOT initialized ";
660 std::cout << strg << std::endl;
682 strg =
"initLevelsFromDict - unable to find jgtower region ";
688 std::cout << strg << std::endl;
700 strg=
"initLevelsFromDict - unable to find 'subdet' field ";
707 std::cout << strg << std::endl;
718 strg=
"initLevelsFromDict - unable to find 'DetZside' field ";
725 std::cout << strg << std::endl;
737 strg=
"initLevelsFromDict - unable to find '"+t_pre+
"sampling' field ";
744 std::cout << strg << std::endl;
756 strg=
"initLevelsFromDict - unable to find 'region' field ";
763 std::cout << strg << std::endl;
776 strg=
"initLevelsFromDict - unable to find 'eta' field ";
783 std::cout << strg << std::endl;
795 strg=
"initLevelsFromDict - unable to find 'phi' field ";
802 std::cout << strg << std::endl;
823 strg =
"decode index and bit fields for each level: ";
824 strg1=
"calo "+strm1.str();
825 strg2=
"detzside "+strm2.str();
826 strg3=
"sampling "+strm3.str();
827 strg4=
"reg "+strm4.str();
828 strg5=
"eta "+strm5.str();
829 strg6=
"phi "+strm6.str();
842 std::cout << strg << std::endl;
843 std::cout << strg1 << std::endl;
844 std::cout << strg2 << std::endl;
845 std::cout << strg3 << std::endl;
846 std::cout << strg4 << std::endl;
847 std::cout << strg5 << std::endl;
848 std::cout << strg6 << std::endl;
858 std::stringstream strm;
859 std::stringstream strm1;
860 std::stringstream strm2;
867 unsigned int nids = 0;
868 std::set<Identifier>
ids;
873 auto last = rit.
end();
881 if(!(
ids.insert(tow_id)).second)
885 log << MSG::ERROR <<
" init_hashes "
886 <<
" duplicated id for J/GTower id. nids= " << nids
887 <<
" compact Id " <<
endmsg;
891 std::cout <<
" JGTowerBase_ID::init_hashes "
892 <<
" Error: duplicated id for J/GTower id. nids= " << nids
905 log << MSG::ERROR <<
" init_hashes "
906 <<
" set size NOT EQUAL to hash max. size " <<
ids.size()
912 std::cout <<
" JGTowerBase_ID::init_hashes "
913 <<
" Error: set size NOT EQUAL to hash max. size " <<
ids.size()
921 std::set<Identifier>::const_iterator
first =
ids.begin();
922 std::set<Identifier>::const_iterator last =
ids.end();
936 auto last = rit.
end();
942 if(!(
ids.insert(reg_id)).second)
946 log << MSG::ERROR <<
" JGTowerBase_ID::init_hashes "
947 <<
" duplicated id for region id. nids= " << nids
948 <<
" compact Id " <<
endmsg;
952 std::cout <<
" JGTowerBase_ID::init_hashes "
953 <<
" Error: duplicated id for region id. nids= " << nids
957 std::cout << std::endl;
967 log << MSG::ERROR <<
" JGTowerBase_ID::init_hashes "
968 <<
" set size NOT EQUAL to region hash max. size " <<
ids.size()
974 std::cout <<
" JGTowerBase_ID::init_hashes "
975 <<
" Error: set size NOT EQUAL to region hash max. size " <<
ids.size()
1010 auto last = rit.
end();
1034 if (
get_hash(
id, hash_id,&tcontext))
1038 log << MSG::ERROR <<
" init_neighbors - unable to get hash, compact = " <<
endmsg;
1042 std::cout <<
" JGTowerBase_ID::init_neighbors - unable to get hash, compact = ";
1044 std::cout << std::endl;
1050 unsigned short index = hash_id;
1062 if (
get_hash(
id, hash_id,&tcontext))
1066 log << MSG::ERROR <<
" init_neighbors - unable to get previous phi hash, exp/compact " <<
endmsg;
1070 std::cout <<
" JGTowerBase_ID::init_neighbors - unable to get previous phi hash, exp/compact ";
1086 if (
get_hash(
id, hash_id,&tcontext))
1090 log << MSG::ERROR <<
" init_neighbors - unable to get next phi hash, exp/compact "<<
endmsg;
1094 std::cout <<
" JGTowerBase_ID::init_neighbors - unable to get next phi hash, exp/compact ";
1109 if (
get_hash(
id, hash_id,&tcontext))
1113 log << MSG::ERROR <<
" init_neighbors - unable to get previous eta hash, exp/compact "<<
endmsg;
1117 std::cout <<
" JGTowerBase_ID::init_neighbors - unable to get previous eta hash, exp/compact ";
1133 if (
get_hash(
id, hash_id,&tcontext))
1137 log << MSG::ERROR <<
" init_neighbors - unable to get next eta hash, exp/compact ";
1141 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
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 :
int region(const Identifier id) const
return region according to :
void show() const
Send to std::cout.
IdContext tower_context() const
access to IdContext's which define which levels of fields are contained in the id
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
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
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)
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.
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