|
ATLAS Offline Software
|
Go to the documentation of this file.
16 #include "CaloDetDescr/CaloDetDescrElement.h"
22 #include "GaudiKernel/Bootstrap.h"
23 #include "GaudiKernel/ISvcLocator.h"
24 #include "GaudiKernel/IMessageSvc.h"
41 if (
i >= tile_min &&
i < tile_max)
continue;
71 for(
int i = 0;
i <
nb;
i++) {
81 std::cout <<
" CaloDetDescrManager_Base: \n";
83 std::cout <<
" Number of Calo descriptors : " <<
m_descr_vec.size() <<
"\n";
86 for(
int i=0 ;
i<ntot;
i++ )
88 std::cout <<
"\n ------ Calo descriptor number " <<
i <<
"\n";
139 int sCal = (
int)subCalo;
146 int sCal = (
int) subCalo;
153 int sCal = (
int) subCalo;
178 int sCal = (
int) subCalo;
181 else return nullptr ;
186 int sampling_or_module,
199 double deltabest=9999.;
203 while (!inCell && niter<3) {
206 if (!reg)
return nullptr;
214 if(ieta < 0)
return elt;
215 if(iphi < 0)
return elt;
224 double deta=std::fabs(
eta-elt->
eta())-0.5*elt->
deta();
226 if (deta>0. || dphi > 0.) {
230 delta = delta + deta;
234 delta = delta + dphi;
237 if (delta<deltabest) {
276 double deltabest=9999.;
278 while (!inCell && niter<3) {
281 if ( ! reg )
return elt;
288 if(ieta < 0)
return elt;
289 if(iphi < 0)
return elt;
297 double deta=std::fabs(
eta-elt->
eta())-0.5*elt->
deta();
299 if (deta>0. || dphi > 0.) {
303 delta = delta + deta;
307 delta = delta + dphi;
309 if (delta<deltabest) {
334 pt->eta()+
pt->deta()/2 >=
eta &&
335 pt->eta()-
pt->deta()/2 <=
eta &&
336 dphi <= pt->dphi()/2 )
370 double deltabest=9999.;
372 while (!inCell && niter<3) {
375 if ( ! reg )
return elt;
383 if(ieta < 0)
return elt;
384 if(iphi < 0)
return elt;
395 if (deta>0. || dphi > 0.) {
399 delta = delta + deta;
403 delta = delta + dphi;
405 if (delta<deltabest) {
431 pt->eta()+
pt->deta()/2 <=
eta &&
432 pt->eta()-
pt->deta()/2 >=
eta &&
433 pt->phi()+
pt->phi()/2 <=
phi &&
434 pt->phi()-
pt->phi()/2 >=
phi ) elt =
pt ;
450 if (
eta < (
descr->reg_min()-0.01) ||
eta > (
descr->reg_max()+0.01) )
return elt;
457 for (
int ieta=0; ieta<
descr->n_eta(); ieta++) {
458 for (
int iphi=0; iphi<
descr->n_phi(); iphi++) {
462 double deta = (
eta-elt2->
eta());
464 double dr = (deta*deta+dphi*dphi);
486 if (std::fabs(
eta) < (
descr->calo_eta_min()-0.01) || std::fabs(
eta) > (
descr->calo_eta_max()+0.01) )
return elt;
493 for (
int ieta=0; ieta<
descr->n_eta(); ieta++) {
494 for (
int iphi=0; iphi<
descr->n_phi(); iphi++) {
500 double dr = (deta*deta+dphi*dphi);
600 int sampling_or_module,
672 if(sampling_or_module == 0)
return desc0;
673 else if(sampling_or_module == 1)
return desc1;
674 else if(sampling_or_module == 2)
return desc2;
675 else if(sampling_or_module == 3)
return desc3;
681 double eta,
double phi)
const
716 double eta,
double phi)
const
740 if ( reg_sampl ==
sample ) {
794 double phi_min,
double phi_max,
795 std::vector<IdentifierHash> & cell_list )
const
798 if ( eta_min >= eta_max )
return;
799 if ( phi_min >= phi_max )
return;
801 std::vector<IdentifierHash> one_list;
807 cellsInZone(eta_min, eta_max, phi_min, phi_max, reg, one_list);
808 if (cell_list.empty())
809 cell_list.swap (one_list);
811 cell_list.insert (cell_list.end(), one_list.begin(), one_list.end());
817 cell_list.insert (cell_list.end(), one_list.begin(), one_list.end());
821 double phi_min,
double phi_max,
823 std::vector<IdentifierHash> & cell_list)
const
826 if ( eta_min >= eta_max )
return;
827 if ( phi_min >= phi_max )
return;
829 std::vector<IdentifierHash> one_list;
838 cellsInZone(eta_min, eta_max, phi_min, phi_max, reg, one_list);
839 if (cell_list.empty())
840 cell_list.swap (one_list);
842 cell_list.insert (cell_list.end(),
843 one_list.begin(), one_list.end());
856 if ( tile_elt->
eta()+tile_elt->
deta()/2. > eta_min &&
857 tile_elt->
eta()-tile_elt->
deta()/2. < eta_max) {
862 if(dphi1 >=0. && dphi2 >= 0.) {
863 if (cell_list.empty()) {
865 cell_list.reserve (
static_cast<int>(
866 ((eta_max-eta_min) / tile_elt->
deta()) *
867 ((phi_max-phi_min) / tile_elt->
dphi()) * 3));
869 cell_list.push_back(tile_elt->
calo_hash());
878 double phi_min,
double phi_max,
880 std::vector<IdentifierHash> & cell_list)
const
883 if ( eta_min >= eta_max )
return;
884 if ( phi_min >= phi_max )
return;
886 std::vector<IdentifierHash> one_list;
904 cellsInZone(eta_min, eta_max, phi_min, phi_max, reg, one_list);
905 if (cell_list.empty())
906 cell_list.swap (one_list);
908 cell_list.insert (cell_list.end(),
909 one_list.begin(), one_list.end());
924 if ( tile_elt->
eta()+tile_elt->
deta()/2. > eta_min &&
925 tile_elt->
eta()-tile_elt->
deta()/2. < eta_max) {
930 if(dphi1 >=0. && dphi2 >= 0.) {
931 if (cell_list.empty()) {
933 cell_list.reserve (
static_cast<int>(
934 ((eta_max-eta_min) / tile_elt->
deta()) *
935 ((phi_max-phi_min) / tile_elt->
dphi()) * 3));
937 cell_list.push_back(tile_elt->
calo_hash());
947 double phi_min,
double phi_max,
949 int sampling_or_module,
950 std::vector<IdentifierHash> & cell_list)
const
953 if ( eta_min >= eta_max )
return;
954 if ( phi_min >= phi_max )
return;
959 std::vector<IdentifierHash> one_list;
967 cellsInZone(eta_min, eta_max, phi_min, phi_max, reg, one_list);
968 if (cell_list.empty())
969 cell_list.swap (one_list);
971 cell_list.insert (cell_list.end(),
972 one_list.begin(), one_list.end());
981 int sampling_or_module,
983 std::vector<IdentifierHash> & cell_list)
const
987 double eta_min, eta_max, phi_min, phi_max;
988 double weta = (ncell_eta-1)/2.;
989 double wphi = (ncell_phi-1)/2.;
991 std::vector<IdentifierHash> one_list;
1005 eta_min =
eta-weta*eta_gran;
1006 eta_max =
eta+weta*eta_gran;
1007 phi_min =
phi-wphi*phi_gran;
1008 phi_max =
phi+wphi*phi_gran;
1009 cellsInZone(eta_min, eta_max, phi_min, phi_max, reg, one_list);
1010 cell_list.reserve (cell_list.size() + one_list.size());
1011 for (
unsigned int i = 0;
i<one_list.size();
i++ ){
1015 double elt_eta = elt->
eta();
1016 double elt_phi = elt->
phi();
1018 if ( std::abs(
eta - elt_eta) <= weta )
1019 if ( std::abs(
phi - elt_phi) <= wphi )
1020 cell_list.push_back(one_list[
i]);
1036 eta_min =
eta-weta*tile_elt->
deta();
1037 eta_max =
eta+weta*tile_elt->
deta();
1039 if ( tile_elt->
eta()+tile_elt->
deta()/2. > eta_min &&
1040 tile_elt->
eta()-tile_elt->
deta()/2. < eta_max) {
1041 phi_min =
phi-wphi*tile_elt->
dphi();
1042 phi_max =
phi+wphi*tile_elt->
dphi();
1046 if(dphi1 >=0. && dphi2 >= 0. ) {
1047 if (cell_list.empty()) {
1049 cell_list.reserve (
static_cast<int> (
1050 ((eta_max-eta_min) / tile_elt->
deta()) *
1051 ((phi_max-phi_min) / tile_elt->
dphi()) * 3));
1053 cell_list.push_back(tile_elt->
calo_hash());
1063 double phi_min,
double phi_max,
1065 std::vector<IdentifierHash> & cell_list)
const
1070 if ( !
descr )
return;
1071 if ( eta_min >= eta_max )
return;
1075 if (
descr->is_lar_fcal()) {
1078 if (
descr->reg_min() > eta_max ||
descr->reg_max() < eta_min)
return;
1085 for (
int ieta=0; ieta<
descr->n_eta(); ieta++) {
1086 for (
int iphi=0; iphi<
descr->n_phi(); iphi++) {
1090 if (caloCellHash != prevHash) {
1091 prevHash=caloCellHash;
1094 if ( elt->
eta()+elt->
deta()/2. > eta_min &&
1095 elt->
eta()-elt->
deta()/2. < eta_max) {
1100 if(dphi1 >=0. && dphi2 >= 0.) {
1101 cell_list.push_back(caloCellHash);
1116 if ( !
descr->is_in(eta_min,eta_max,phi_min,phi_max))
return;
1118 double zone_min = eta_min;
1119 double zone_max = eta_max;
1126 if (
descr->calo_sign() > 0 ) {
1128 if (
descr->reg_min() >= zone_min ){
1129 zone_min =
descr->reg_min();
1134 ieta_min =
descr->eta_channel(zone_min);
1139 if (
descr->reg_max() <= zone_max ) {
1140 zone_max =
descr->reg_max();
1141 ieta_max =
descr->n_eta() -1;
1145 ieta_max =
descr->eta_channel(zone_max);
1147 ieta_max =
descr->n_eta() - 1;
1153 if (
descr->reg_min() >= zone_min ){
1154 zone_min =
descr->reg_min();
1155 ieta_max =
descr->n_eta() - 1;
1159 ieta_max =
descr->eta_channel(zone_min);
1161 ieta_max =
descr->n_eta() - 1;
1164 if (
descr->reg_max() <= zone_max ) {
1165 zone_max =
descr->reg_max();
1170 ieta_min =
descr->eta_channel(zone_max - 0.0001);
1196 double margin =
descr->dphi()*0.1;
1200 if (
descr->calo_phi_min() > zone_phi_min) zone_phi_min =
descr->calo_phi_min() + margin;
1201 if (
descr->calo_phi_max() < zone_phi_max) zone_phi_max =
descr->calo_phi_max() - margin;
1204 int iphi_min =
descr->phi_channel(zone_phi_min);
1205 int iphi_max =
descr->phi_channel(zone_phi_max);
1208 int reg_sampl=
descr->getSampling(0);
1210 ieta_min = ieta_min -1;
1211 ieta_max = ieta_max +1;
1235 if (reg_PhiMin<0) reg_PhiMin=0;
1239 if ( iphi_min <= iphi_max && zone_phi_min <= zone_phi_max ) {
1243 for (
int ieta = ieta_min-1 ; ieta <= ieta_max+1; ieta++ )
1244 for (
int iphi = iphi_min-1 ; iphi <= iphi_max+1; iphi++ )
1246 if (ieta>=reg_EtaMin && ieta <=reg_EtaMax && iphi>=reg_PhiMin && iphi<=reg_PhiMax) {
1252 && ( (elt->
eta()+elt->
deta()/2.) > zone_min + 0.00001 )
1253 && ( (elt->
eta()-elt->
deta()/2.) + 0.00001 < zone_max )
1254 && ( (elt->
phi()+elt->
dphi()/2.) > zone_phi_min + 0.00001 )
1255 && ( (elt->
phi()-elt->
dphi()/2.) + 0.00001 < zone_phi_max ) )
1257 cell_list.push_back(caloCellHash);
1265 else if ( iphi_min <= iphi_max && zone_phi_min > zone_phi_max ) {
1269 for (
int ieta = ieta_min-1 ; ieta <= ieta_max+1; ieta++ )
1270 for (
int iphi = iphi_min-1 ; iphi <= iphi_max+1; iphi++ )
1272 if (ieta>=reg_EtaMin && ieta <=reg_EtaMax && iphi>=reg_PhiMin && iphi<=reg_PhiMax) {
1278 && ( (elt->
eta()+elt->
deta()/2.) > zone_min + 0.00001 )
1279 && ( (elt->
eta()-elt->
deta()/2.) + 0.00001 < zone_max )
1280 && ( ( (elt->
phi()+elt->
dphi()/2.) > zone_phi_min + 0.00001 )
1281 || ( (elt->
phi()-elt->
dphi()/2.) + 0.00001 < zone_phi_max ) )
1284 cell_list.push_back(caloCellHash);
1299 for (
int ieta = ieta_min-1 ; ieta <= ieta_max+1; ieta++ ) {
1302 for (
int iphi = iphi_min-1 ; iphi <= nchmax; iphi++ )
1304 if (ieta>=reg_EtaMin && ieta <=reg_EtaMax && iphi>=reg_PhiMin && iphi<=reg_PhiMax) {
1310 && ( (elt->
eta()+elt->
deta()/2.) > zone_min + 0.00001 )
1311 && ( (elt->
eta()-elt->
deta()/2.) + 0.00001 < zone_max )
1312 && ( (elt->
phi()+elt->
dphi()/2.) > zone_phi_min + 0.00001 )
1313 && ( (elt->
phi()-elt->
dphi()/2.) + 0.00001 < zone_phi_max ) )
1315 cell_list.push_back(caloCellHash);
1323 for (
int iphi = 0 ; iphi <= iphi_max+1; iphi++ )
1325 if (ieta>=reg_EtaMin && ieta <=reg_EtaMax && iphi>=reg_PhiMin && iphi<=reg_PhiMax) {
1331 && ( (elt->
eta()+elt->
deta()/2.) > zone_min + 0.00001 )
1332 && ( (elt->
eta()-elt->
deta()/2.) + 0.00001 < zone_max )
1333 && ( (elt->
phi()+elt->
dphi()/2.) > zone_phi_min + 0.00001 )
1334 && ( (elt->
phi()-elt->
dphi()/2.) + 0.00001 < zone_phi_max ) )
1336 cell_list.push_back(caloCellHash);
1359 double aeta = std::abs(
eta);
1375 if(aeta <= reg->calo_eta_max())
result =
true;
1396 if(edgemin < etadist) etadist = edgemin;
1397 if(edgemax < etadist) etadist = edgemax;
1400 aeta <= reg->calo_eta_max())
result =
true;
1411 double edgemin = std::abs( aeta - reg->
reg_min() );
1412 double edgemax = std::abs( aeta - reg->
reg_max() );
1413 if ( edgemin < etadist ) etadist = edgemin;
1414 if ( edgemax < etadist ) etadist = edgemax;
1420 if (
result) etadist = etadist*(-1.);
1427 const int sampling_or_module,
1470 int& sampling_or_module,
1476 sampling_or_module = 0;
1482 sampling_or_module = 1;
1488 sampling_or_module = 2;
1494 sampling_or_module = 3;
1500 sampling_or_module = 0;
1506 sampling_or_module = 1;
1512 sampling_or_module = 2;
1518 sampling_or_module = 3;
1524 sampling_or_module = 0;
1530 sampling_or_module = 1;
1536 sampling_or_module = 2;
1542 sampling_or_module = 3;
1548 sampling_or_module = 0;
1554 sampling_or_module = 1;
1560 sampling_or_module = 2;
1571 sampling_or_module = 0;
1579 sampling_or_module = 0;
1585 sampling_or_module = 0;
float deta() const
cell deta
double calo_eta_max() const
'ideal' geometry: eta maximal
calo_element_range element_range() const
Range over element vector.
std::vector< calo_element_const_iterator > m_subCalo_end
offsets for subcalo's elements
calo_descr_size tile_descriptors_size() const
number of tile descriptors
calo_descr_const_iterator calo_descriptors_begin() const
first descriptor in the vector
IdentifierHash calo_cell_hash(const Identifier cellId) const
create hash id from 'global' cell id
calo_descr_const_iterator tile_descriptors_begin() const
first tile descriptor (they are in separate vector)
void set_helper(const CaloCell_Base_ID *idHelper)
set calo Cell ID helper
CaloCell_ID::SUBCALO getSubCalo() const
get subcalo
bool is_lar_fcal() const
descriptor belongs to FCAL
double reg_min() const
eta min and max once misaligned
Scalar phi() const
phi method
int phi_min(const Identifier regId) const
min value of phi index (-999 == failure)
calo_element_const_iterator element_end() const
end of element vector
int phi_channel(double phi) const
channel number for a given eta/phi (if outside returns -1) Should not be used for FCAL
std::vector< IdentifierHash > m_subCalo_max
offsets for subcalo's elements
Scalar eta() const
pseudorapidity method
calo_nonconst_descr_range calo_descriptors_range_nonconst()
Range over descriptors, with non-const elements.
This class groups all DetDescr information related to a CaloCell. Provides a generic interface for al...
boost::iterator_range< calo_element_const_iterator > calo_element_range
calo_descr_size calo_descriptors_size() const
number of descriptors
const CaloDetDescrElement * get_element(const Identifier &cellId) const
get element by its identifier
bool is_lar_hec() const
descriptor belongs to HEC
int eta_max(const Identifier regId) const
max value of eta index (-999 == failure)
void add(CaloDetDescrElement *element)
add Calo DD element to the elements vector
int eta_channel_raw(double eta) const
channel number for a given eta/phi raw (if outside returns -1).
calo_descr_const_iterator calo_descriptors_end() const
end of descriptors vector
Definition of CaloDetDescrManager.
float eta_raw() const
cell eta_raw
static void build_sample(CaloCell_ID::SUBCALO subCalo, bool barrel, int sampling_or_module, CaloCell_ID::CaloSample &sample)
translate between the 2 ways to label a sub-detector:
calo_descr_vec m_tile_descr_vec
vector of descriptors
void print() const
print out the contents
CaloDetDescrManager_Base()
Default Constructor.
IdentifierHash calo_region_hash(const Identifier regionId) const
create hash id from 'global' region id
Definition of CaloDetDescriptor.
int phi_max(const Identifier regId) const
max value of phi index (-999 == failure)
IdentifierHash calo_hash() const
cell calo hash
std::string m_lar_geometry
LAr geometry label (full atlas/TB) for backwards compatibility.
This class initializes the Calo (LAr and Tile) offline identifiers.
boost::iterator_range< calo_nonconst_element_const_iterator > calo_nonconst_element_range
Helper class for offline supercell identifiers.
const CaloIdManager * m_calo_mgr
Calo ID Manager helper.
void calo_cell_hash_range(const Identifier id, IdentifierHash &caloCellMin, IdentifierHash &caloCellMax) const
to loop on 'global' cell hashes of one sub-calorimeter alone
void set_helper(const CaloCell_ID *idHelper)
set calo Cell ID helper
int sampling(const Identifier id) const
LAr field values (NOT_VALID == invalid request)
const CaloCell_Base_ID * getCaloCell_ID() const
get calo cell ID helper
int eta_channel(double eta) const
channel number for a given eta/phi (if outside returns -1).
SUBCALO
enumeration of sub calorimeters
calo_nonconst_element_range element_range_nonconst()
Range over element vector, with non-const elements.
Helper class for offline supercell identifiers.
CaloConstIteratorAdaptor< calo_element_vec::const_iterator > calo_element_const_iterator
bool is_lar_em() const
descriptor belongs to EM calorimeter
CaloPhiRange class declaration.
calo_descr_vec m_descr_vec
vector of descriptors
bool is_lar_em_barrel() const
descriptor belongs to EM barrel
Helper class for offline cell identifiers.
std::vector< IdentifierHash > m_subCalo_min
offsets for subcalo's elements
boost::iterator_range< calo_descr_const_iterator > calo_descr_range
void cellsInZone(double eta_min, double eta_max, double phi_min, double phi_max, std::vector< IdentifierHash > &cell_list) const
the only client is CaloCellList class
const CaloIdManager * getCalo_Mgr() const
get calo ID manager
float phiGranularity(const Identifier regId) const
LAr phi granularity (NOT_VALID == failure)
CaloCell_ID::CaloSample getSampling(IdentifierHash onecalo_hash) const
get sampling
static double fix(double phi)
void set_helper(const CaloCell_SuperCell_ID *idHelper)
set calo Cell ID helper
void add_tile(CaloDetDescriptor *descr)
add tile descriptor to the tile descriptors vector
~CaloDetDescrManager_Base()
destructor
int eta_min(const Identifier regId) const
min value of eta index (-999 == failure)
bool is_lar_em_endcap() const
descriptor belongs to EM end cap
calo_descr_const_iterator tile_descriptors_end() const
end of tile descriptors vector
double reg_max() const
eta min and max once misaligned
calo_element_const_iterator element_begin() const
first element
Identifier cell_id(const int subCalo, const int barec_or_posneg, const int sampling_or_fcalmodule, const int region_or_dummy, const int eta, const int phi) const
Make a cell (== channel) ID from constituting fields and subCalo index; for (Mini)FCAL,...
const CaloDetDescrElement * get_element_FCAL_raw(const CaloDetDescriptor *reg, double eta, double phi) const
LArFCAl private methode to get element from raw eta,phi.
bool is_in(double eta, double phi, CaloCell_ID::CaloSample sample, double &etadist) const
return true if direction eta,phi crosses ANY of the corresponding descriptors
calo_descr_range calo_descriptors_range() const
Range over descriptors.
const CaloDetDescrElement * get_element_FCAL(const CaloDetDescriptor *reg, double eta, double phi) const
LArFCAl private methode to get element.
float dphi() const
cell dphi
bool is_lar_em_barrel() const
cell belongs to EM barrel
CaloDetDescrElement * get_element_nonconst(const Identifier &cellId)
get element by its identifier, non-const version.
boost::iterator_range< calo_nonconst_descr_const_iterator > calo_nonconst_descr_range
double calo_eta_min() const
'ideal' geometry: eta minimal
This is a base class for LAr and Tile Descriptors The primary goal is to speed up loops over all the ...
CaloCell_ID::CaloSample getSampling() const
cell sampling
int phi_channel_raw(double phi) const
channel number for a given eta/phi raw (if outside returns -1) Should not be used for FCAL
std::vector< calo_element_const_iterator > m_subCalo_begin
offsets for subcalo's elements
calo_element_vec_size element_size() const
total number of elements
static void decode_sample(CaloCell_ID::SUBCALO &subCalo, bool &barrel, int &sampling_or_module, CaloCell_ID::CaloSample sample)
translate between the 2 ways to label a sub-detector:
calo_nonconst_descr_range tile_descriptors_range_nonconst()
Range over tile descriptors, with non-const elements.
calo_descr_range tile_descriptors_range() const
Range over tile descriptors.
calo_descr_vec::size_type calo_descr_size
CaloDetDescrElement * release_element(IdentifierHash hash)
const CaloCell_ID * getCaloCell_ID() const
get calo cell ID helper
float eta() const
cell eta
calo_element_vec m_element_vec
vector of Calo DD elements
float phi() const
cell phi
void initialize()
initialization of the manager, used by the Converter when it creates the Manager
const CaloCell_SuperCell_ID * getCaloCell_ID() const
get calo cell ID helper
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
virtual ~CaloSuperCellDetDescrManager()
const CaloDetDescrElement * get_element_raw(CaloCell_ID::CaloSample sample, double eta, double phi) const
Get element from raw quantities (to build real fixed size clusters)
Helper base class for offline cell identifiers.
Identifier identify() const override final
get region identifier
CaloDetDescriptor * get_descriptor_nonconst(const Identifier ®ionId)
get descriptor by region identifier, non-const version.
size_type calo_region_hash_max(void) const
cell 'global' region table max size
Tranform iterator over pointers to iterator over const pointers.
const CaloCell_Base_ID * m_cell_id
Calo Cell ID helper.
calo_element_vec::size_type calo_element_vec_size
float phi_raw() const
cell phi_raw
static double diff(double phi1, double phi2)
simple phi1 - phi2 calculation, but result is fixed to respect range.
size_type calo_cell_hash_max(void) const
cell 'global' hash table max size
const CaloDetDescriptor * get_descriptor_raw(CaloCell_ID::CaloSample sample, double eta, double phi) const
get descriptor by sample, eta and phi raw
const CaloDetDescriptor * get_descriptor(const Identifier ®ionId) const
get descriptor by region identifier
float etaGranularity(const Identifier regId) const
LAr eta granularity (NOT_VALID == failure)