 |
ATLAS Offline Software
|
Go to the documentation of this file.
8 #include "GaudiKernel/MsgStream.h"
24 const std::string&
group) :
26 , m_jgtower_region_index(0)
28 , m_DETZSIDE_INDEX(999)
29 , m_SAMPLING_INDEX(999)
35 , m_calo_region_hash_max(0)
63 std::stringstream strm;
82 strg =
" hash_id out of range "+strm.str();
89 std::cout << strg << std::endl;
101 strg =
" hash_id out of range "+strm.str();
108 std::cout << strg << std::endl;
145 std::string errorMessage =
146 "Error in JGTowerBase_ID::get_hash, invalid context ";
159 int sc =
get_hash(regId, regHash, ®ionContext);
168 std::string strg =
"initialize_from_dictionary";
173 std::cout << strg << std::endl;
185 std::stringstream strm;
186 std::stringstream strm1;
187 std::stringstream strm2;
200 strg=
" initialize_from_dict - cannot access Calorimeter dictionary ";
206 std::cout << strg << std::endl;
219 strg=
"Could not get value for label 'Calorimeter' of field 'subdet' in dictionary "+strm.str();
226 std::cout << strg << std::endl;
231 int jgtowerCaloValue = -1;
239 strg =
" Could not get value for label positive_lvl1_side of field 'DetZside in dictionary"+strm.str();
246 std::cout << strg << std::endl;
257 reg_id.
add(caloValue);
258 reg_id.
add(jgtowerCaloValue);
273 strg =
" JGTowerBase_ID::initialize_from_dict : ";
274 strg1 =
" tower range -> "+strm1.str();
283 std::cout << strg << std::endl;
284 std::cout << strg1 << std::endl;
285 std::cout << strg2 << std::endl;
319 int size = (1 << bits);
357 strg =
"Min > "+strm.str();
358 strg1=
" "+strm1.str();
359 strg2=
" "+strm2.str();
368 std::cout << strg << std::endl;
369 std::cout << strg1 << std::endl;
370 std::cout << strg2 << std::endl;
388 strg =
" ***** Error tower ranges, id, hash, i = "+strm.str();
389 strg1=
" , "+strm1.str();
390 strg2=
" , "+strm2.str();
399 std::cout << strg << std::endl;
400 std::cout << strg1 << std::endl;
401 std::cout << strg2 << std::endl;
427 if (
range.match(expId)) {
429 if (not eta_field.
empty()) {
453 if (
range.match(expId)) {
455 if (not eta_field.
empty()) {
474 if (
range.match(expId)) {
476 if (not phi_field.
empty()) {
589 std::string errorMessage =
"JGTowerBase_ID::tower_id() result is not OK: ID, range = "
603 std::string errorMessage =
"JGTowerBase_ID::tower_id(regionId) result is not OK: ID= "
611 std::string errorMessage =
"JGTowerBase_ID::tower_id(regionId,field values) result is not OK: ID, range = "
624 std::string errorMessage =
"JGTowerBase_ID::region_id() result is not OK: ID, range = "
633 std::stringstream strm;
634 std::stringstream strm1;
635 std::stringstream strm2;
636 std::stringstream strm3;
637 std::stringstream strm4;
638 std::stringstream strm5;
639 std::stringstream strm6;
640 std::stringstream strm7;
651 strg=
"initLevelsFromDict - dictionary NOT initialized ";
657 std::cout << strg << std::endl;
679 strg =
"initLevelsFromDict - unable to find jgtower region ";
685 std::cout << strg << std::endl;
697 strg=
"initLevelsFromDict - unable to find 'subdet' field ";
704 std::cout << strg << std::endl;
715 strg=
"initLevelsFromDict - unable to find 'DetZside' field ";
722 std::cout << strg << std::endl;
734 strg=
"initLevelsFromDict - unable to find '"+t_pre+
"sampling' field ";
741 std::cout << strg << std::endl;
753 strg=
"initLevelsFromDict - unable to find 'region' field ";
760 std::cout << strg << std::endl;
773 strg=
"initLevelsFromDict - unable to find 'eta' field ";
780 std::cout << strg << std::endl;
792 strg=
"initLevelsFromDict - unable to find 'phi' field ";
799 std::cout << strg << std::endl;
820 strg =
"decode index and bit fields for each level: ";
821 strg1=
"calo "+strm1.str();
822 strg2=
"detzside "+strm2.str();
823 strg3=
"sampling "+strm3.str();
824 strg4=
"reg "+strm4.str();
825 strg5=
"eta "+strm5.str();
826 strg6=
"phi "+strm6.str();
839 std::cout << strg << std::endl;
840 std::cout << strg1 << std::endl;
841 std::cout << strg2 << std::endl;
842 std::cout << strg3 << std::endl;
843 std::cout << strg4 << std::endl;
844 std::cout << strg5 << std::endl;
845 std::cout << strg6 << std::endl;
855 std::stringstream strm;
856 std::stringstream strm1;
857 std::stringstream strm2;
864 unsigned int nids = 0;
865 std::set<Identifier>
ids;
870 auto last = rit.
end();
878 if(!(
ids.insert(tow_id)).second)
882 log << MSG::ERROR <<
" init_hashes "
883 <<
" duplicated id for J/GTower id. nids= " << nids
884 <<
" compact Id " <<
endmsg;
888 std::cout <<
" JGTowerBase_ID::init_hashes "
889 <<
" Error: duplicated id for J/GTower id. nids= " << nids
902 log << MSG::ERROR <<
" init_hashes "
903 <<
" set size NOT EQUAL to hash max. size " <<
ids.size()
909 std::cout <<
" JGTowerBase_ID::init_hashes "
910 <<
" Error: set size NOT EQUAL to hash max. size " <<
ids.size()
918 std::set<Identifier>::const_iterator
first =
ids.begin();
919 std::set<Identifier>::const_iterator last =
ids.end();
933 auto last = rit.
end();
939 if(!(
ids.insert(reg_id)).second)
943 log << MSG::ERROR <<
" JGTowerBase_ID::init_hashes "
944 <<
" duplicated id for region id. nids= " << nids
945 <<
" compact Id " <<
endmsg;
949 std::cout <<
" JGTowerBase_ID::init_hashes "
950 <<
" Error: duplicated id for region id. nids= " << nids
954 std::cout << std::endl;
964 log << MSG::ERROR <<
" JGTowerBase_ID::init_hashes "
965 <<
" set size NOT EQUAL to region hash max. size " <<
ids.size()
971 std::cout <<
" JGTowerBase_ID::init_hashes "
972 <<
" Error: set size NOT EQUAL to region hash max. size " <<
ids.size()
1007 auto last = rit.
end();
1031 if (
get_hash(
id, hash_id,&tcontext))
1035 log << MSG::ERROR <<
" init_neighbors - unable to get hash, compact = " <<
endmsg;
1039 std::cout <<
" JGTowerBase_ID::init_neighbors - unable to get hash, compact = ";
1041 std::cout << std::endl;
1047 unsigned short index = hash_id;
1059 if (
get_hash(
id, hash_id,&tcontext))
1063 log << MSG::ERROR <<
" init_neighbors - unable to get previous phi hash, exp/compact " <<
endmsg;
1067 std::cout <<
" JGTowerBase_ID::init_neighbors - unable to get previous phi hash, exp/compact ";
1083 if (
get_hash(
id, hash_id,&tcontext))
1087 log << MSG::ERROR <<
" init_neighbors - unable to get next phi hash, exp/compact "<<
endmsg;
1091 std::cout <<
" JGTowerBase_ID::init_neighbors - unable to get next phi hash, exp/compact ";
1106 if (
get_hash(
id, hash_id,&tcontext))
1110 log << MSG::ERROR <<
" init_neighbors - unable to get previous eta hash, exp/compact "<<
endmsg;
1114 std::cout <<
" JGTowerBase_ID::init_neighbors - unable to get previous eta hash, exp/compact ";
1130 if (
get_hash(
id, hash_id,&tcontext))
1134 log << MSG::ERROR <<
" init_neighbors - unable to get next eta hash, exp/compact ";
1138 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