![]() |
![]() |
#include <HcalGeometry.h>
Public Types | |
enum | { k_NumberOfParametersPerShape = 5 } |
typedef HcalGeometryRecord | AlignedRecord |
typedef HcalAlignmentRcd | AlignmentRecord |
typedef CaloCellGeometry::CCGFloat | CCGFloat |
typedef HcalDetId | DetIdType |
typedef std::vector < IdealObliquePrism > | HBCellVec |
typedef std::vector < IdealObliquePrism > | HECellVec |
typedef std::vector< IdealZPrism > | HFCellVec |
typedef std::vector < IdealObliquePrism > | HOCellVec |
typedef PHcalRcd | PGeometryRecord |
typedef CaloCellGeometry::Pt3D | Pt3D |
typedef CaloCellGeometry::Pt3DVec | Pt3DVec |
Public Member Functions | |
virtual CaloSubdetectorGeometry::DetIdSet | getCells (const GlobalPoint &r, double dR) const |
Get a list of all cells within a dR of the given cell. | |
virtual DetId | getClosestCell (const GlobalPoint &r) const |
virtual const CaloCellGeometry * | getGeometry (const DetId &id) const |
Get the cell geometry of a given detector id. Should return false if not found. | |
virtual const std::vector < DetId > & | getValidDetIds (DetId::Detector det=DetId::Detector(0), int subdet=0) const |
Get a list of valid detector ids (for the given subdetector) | |
HcalGeometry (const HcalTopology &topology) | |
void | localCorners (Pt3DVec &lc, const CCGFloat *pv, unsigned int i, Pt3D &ref) |
virtual void | newCell (const GlobalPoint &f1, const GlobalPoint &f2, const GlobalPoint &f3, const CCGFloat *parm, const DetId &detId) |
virtual unsigned int | numberOfParametersPerShape () const |
virtual unsigned int | numberOfShapes () const |
virtual | ~HcalGeometry () |
The HcalGeometry will delete all its cell geometries at destruction time. | |
Static Public Member Functions | |
static unsigned int | alignmentBarEndForIndexLocal (const DetId &id, unsigned int nD) |
static unsigned int | alignmentBarrelIndexLocal (const DetId &id) |
static unsigned int | alignmentEndcapIndexLocal (const DetId &id) |
static unsigned int | alignmentForwardIndexLocal (const DetId &id) |
static unsigned int | alignmentOuterIndexLocal (const DetId &id) |
static unsigned int | alignmentTransformIndexGlobal (const DetId &id) |
static unsigned int | alignmentTransformIndexLocal (const DetId &id) |
static std::string | dbString () |
static DetId | detIdFromBarrelAlignmentIndex (unsigned int i) |
static DetId | detIdFromEndcapAlignmentIndex (unsigned int i) |
static DetId | detIdFromForwardAlignmentIndex (unsigned int i) |
static DetId | detIdFromLocalAlignmentIndex (unsigned int i) |
static DetId | detIdFromOuterAlignmentIndex (unsigned int i) |
static unsigned int | numberOfAlignments () |
static unsigned int | numberOfBarrelAlignments () |
static unsigned int | numberOfEndcapAlignments () |
static unsigned int | numberOfForwardAlignments () |
static unsigned int | numberOfOuterAlignments () |
static std::string | producerTag () |
Protected Member Functions | |
virtual const CaloCellGeometry * | cellGeomPtr (uint32_t index) const |
virtual unsigned int | indexFor (const DetId &id) const |
virtual unsigned int | sizeForDenseIndex (const DetId &id) const |
Private Member Functions | |
int | etaRing (HcalSubdetector bc, double abseta) const |
helper methods for getClosestCell | |
void | fillDetIds () const |
void | init () |
int | phiBin (double phi, int etaring) const |
Private Attributes | |
std::vector< DetId > | m_emptyIds |
HBCellVec | m_hbCellVec |
std::vector< DetId > | m_hbIds |
HECellVec | m_heCellVec |
std::vector< DetId > | m_heIds |
HFCellVec | m_hfCellVec |
std::vector< DetId > | m_hfIds |
HOCellVec | m_hoCellVec |
std::vector< DetId > | m_hoIds |
const HcalTopology & | theTopology |
Definition at line 12 of file HcalGeometry.h.
Definition at line 26 of file HcalGeometry.h.
Definition at line 25 of file HcalGeometry.h.
Reimplemented from CaloSubdetectorGeometry.
Definition at line 21 of file HcalGeometry.h.
typedef HcalDetId HcalGeometry::DetIdType |
Definition at line 28 of file HcalGeometry.h.
typedef std::vector<IdealObliquePrism> HcalGeometry::HBCellVec |
Definition at line 16 of file HcalGeometry.h.
typedef std::vector<IdealObliquePrism> HcalGeometry::HECellVec |
Definition at line 17 of file HcalGeometry.h.
typedef std::vector<IdealZPrism> HcalGeometry::HFCellVec |
Definition at line 19 of file HcalGeometry.h.
typedef std::vector<IdealObliquePrism> HcalGeometry::HOCellVec |
Definition at line 18 of file HcalGeometry.h.
Definition at line 27 of file HcalGeometry.h.
Definition at line 22 of file HcalGeometry.h.
Definition at line 23 of file HcalGeometry.h.
anonymous enum |
Definition at line 31 of file HcalGeometry.h.
{ k_NumberOfParametersPerShape = 5 } ;
HcalGeometry::HcalGeometry | ( | const HcalTopology & | topology | ) | [explicit] |
Definition at line 11 of file HcalGeometry.cc.
References init().
: theTopology( topology ) { init(); }
HcalGeometry::~HcalGeometry | ( | ) | [virtual] |
The HcalGeometry will delete all its cell geometries at destruction time.
Definition at line 17 of file HcalGeometry.cc.
{}
unsigned int HcalGeometry::alignmentBarEndForIndexLocal | ( | const DetId & | id, |
unsigned int | nD | ||
) | [static] |
Definition at line 347 of file HcalGeometry.cc.
References HcalDetId::ieta(), getHLTprescales::index, and HcalDetId::iphi().
Referenced by alignmentBarrelIndexLocal(), alignmentEndcapIndexLocal(), and alignmentForwardIndexLocal().
unsigned int HcalGeometry::alignmentBarrelIndexLocal | ( | const DetId & | id | ) | [static] |
Definition at line 359 of file HcalGeometry.cc.
References alignmentBarEndForIndexLocal(), and numberOfBarrelAlignments().
Referenced by alignmentTransformIndexLocal().
{ return alignmentBarEndForIndexLocal( id, numberOfBarrelAlignments() ) ; }
unsigned int HcalGeometry::alignmentEndcapIndexLocal | ( | const DetId & | id | ) | [static] |
Definition at line 364 of file HcalGeometry.cc.
References alignmentBarEndForIndexLocal(), and numberOfEndcapAlignments().
Referenced by alignmentTransformIndexLocal().
{ return alignmentBarEndForIndexLocal( id, numberOfEndcapAlignments() ) ; }
unsigned int HcalGeometry::alignmentForwardIndexLocal | ( | const DetId & | id | ) | [static] |
Definition at line 370 of file HcalGeometry.cc.
References alignmentBarEndForIndexLocal(), and numberOfForwardAlignments().
Referenced by alignmentTransformIndexLocal().
{ return alignmentBarEndForIndexLocal( id, numberOfForwardAlignments() ) ; }
unsigned int HcalGeometry::alignmentOuterIndexLocal | ( | const DetId & | id | ) | [static] |
Definition at line 376 of file HcalGeometry.cc.
References HcalDetId::ieta(), getHLTprescales::index, HcalDetId::iphi(), numberOfOuterAlignments(), and relativeConstraints::ring.
Referenced by alignmentTransformIndexLocal().
{ const HcalDetId hid ( id ) ; const int ieta ( hid.ieta() ) ; const int iphi ( hid.iphi() ) ; const int ring ( ieta < -10 ? 0 : ( ieta < -4 ? 1 : ( ieta < 5 ? 2 : ( ieta < 11 ? 3 : 4 ) ) ) ) ; const unsigned int index ( 12*ring + ( iphi - 1 )/6 ) ; assert( index < numberOfOuterAlignments() ) ; return index ; }
unsigned int HcalGeometry::alignmentTransformIndexGlobal | ( | const DetId & | id | ) | [static] |
Definition at line 419 of file HcalGeometry.cc.
References DetId::Hcal.
Referenced by CaloGeometryDBEP< T, U >::produceAligned().
{ return (unsigned int)DetId::Hcal - 1 ; }
unsigned int HcalGeometry::alignmentTransformIndexLocal | ( | const DetId & | id | ) | [static] |
Definition at line 392 of file HcalGeometry.cc.
References alignmentBarrelIndexLocal(), alignmentEndcapIndexLocal(), alignmentForwardIndexLocal(), alignmentOuterIndexLocal(), DetId::Hcal, HcalBarrel, HcalEndcap, HcalForward, getHLTprescales::index, isHB(), isHE(), isHF(), numberOfAlignments(), numberOfBarrelAlignments(), numberOfEndcapAlignments(), numberOfForwardAlignments(), and HcalDetId::subdet().
Referenced by CaloGeometryDBEP< T, U >::produceAligned().
{ assert(id.det() == DetId::Hcal) ; const HcalDetId hid ( id ) ; bool isHB = (hid.subdet() == HcalBarrel); bool isHE = (hid.subdet() == HcalEndcap); bool isHF = (hid.subdet() == HcalForward); // bool isHO = (hid.subdet() == HcalOuter); const unsigned int nB ( numberOfBarrelAlignments() ) ; const unsigned int nE ( numberOfEndcapAlignments() ) ; const unsigned int nF ( numberOfForwardAlignments() ) ; // const unsigned int nO ( numberOfOuterAlignments() ) ; const unsigned int index ( isHB ? alignmentBarrelIndexLocal(id) : isHE ? alignmentEndcapIndexLocal(id) + nB : isHF ? alignmentForwardIndexLocal( id ) + nB + nE : alignmentOuterIndexLocal(id) + nB + nE + nF ); assert( index < numberOfAlignments() ) ; return index ; }
const CaloCellGeometry * HcalGeometry::cellGeomPtr | ( | uint32_t | index | ) | const [protected, virtual] |
Implements CaloSubdetectorGeometry.
Definition at line 483 of file HcalGeometry.cc.
References cropTnPTrees::din, getHLTprescales::index, m_hbCellVec, m_heCellVec, m_hfCellVec, m_hoCellVec, and CaloCellGeometry::param().
Referenced by getGeometry().
{ const CaloCellGeometry* cell ( 0 ) ; if( m_hbCellVec.size() > din ) { cell = &m_hbCellVec[ din ] ; } else { if( m_hbCellVec.size() + m_heCellVec.size() > din ) { const unsigned int index ( din - m_hbCellVec.size() ) ; cell = &m_heCellVec[ index ] ; } else { if( m_hbCellVec.size() + m_heCellVec.size() + m_hoCellVec.size() > din ) { const unsigned int index ( din - m_hbCellVec.size() - m_heCellVec.size() ) ; cell = &m_hoCellVec[ index ] ; } else { if( m_hbCellVec.size() + m_heCellVec.size() + m_hoCellVec.size() + m_hfCellVec.size() > din ) { const unsigned int index ( din - m_hbCellVec.size() - m_heCellVec.size() - m_hoCellVec.size() ) ; cell = &m_hfCellVec[ index ] ; } } } } return (( 0 == cell || 0 == cell->param()) ? 0 : cell ) ; }
static std::string HcalGeometry::dbString | ( | ) | [inline, static] |
Definition at line 33 of file HcalGeometry.h.
Referenced by CaloGeometryDBEP< T, U >::produceAligned().
{ return "PHcalRcd" ; }
DetId HcalGeometry::detIdFromBarrelAlignmentIndex | ( | unsigned int | i | ) | [static] |
Definition at line 291 of file HcalGeometry.cc.
References HcalBarrel, and numberOfBarrelAlignments().
Referenced by detIdFromLocalAlignmentIndex(), FakeCaloAlignmentEP::produceHBAli(), and TestCaloAlignmentEP::produceHBAli().
{ assert( i < numberOfBarrelAlignments() ) ; const int ieta ( i < numberOfBarrelAlignments()/2 ? -1 : 1 ) ; const int iphi ( 1 + (4*i)%72 ) ; return HcalDetId( HcalBarrel, ieta, iphi, 1 ) ; }
DetId HcalGeometry::detIdFromEndcapAlignmentIndex | ( | unsigned int | i | ) | [static] |
Definition at line 300 of file HcalGeometry.cc.
References HcalEndcap, and numberOfEndcapAlignments().
Referenced by detIdFromLocalAlignmentIndex(), TestCaloAlignmentEP::produceHEAli(), and FakeCaloAlignmentEP::produceHEAli().
{ assert( i < numberOfEndcapAlignments() ) ; const int ieta ( i < numberOfEndcapAlignments()/2 ? -16 : 16 ) ; const int iphi ( 1 + (4*i)%72 ) ; return HcalDetId( HcalEndcap, ieta, iphi, 1 ) ; }
DetId HcalGeometry::detIdFromForwardAlignmentIndex | ( | unsigned int | i | ) | [static] |
Definition at line 309 of file HcalGeometry.cc.
References HcalForward, and numberOfForwardAlignments().
Referenced by detIdFromLocalAlignmentIndex(), FakeCaloAlignmentEP::produceHFAli(), and TestCaloAlignmentEP::produceHFAli().
{ assert( i < numberOfForwardAlignments() ) ; const int ieta ( i < numberOfForwardAlignments()/2 ? -29 : 29 ) ; const int iphi ( 1 + (4*i)%72 ) ; return HcalDetId( HcalForward, ieta, iphi, 1 ) ; }
DetId HcalGeometry::detIdFromLocalAlignmentIndex | ( | unsigned int | i | ) | [static] |
Definition at line 331 of file HcalGeometry.cc.
References detIdFromBarrelAlignmentIndex(), detIdFromEndcapAlignmentIndex(), detIdFromForwardAlignmentIndex(), detIdFromOuterAlignmentIndex(), numberOfAlignments(), numberOfBarrelAlignments(), numberOfEndcapAlignments(), and numberOfForwardAlignments().
{ assert( i < numberOfAlignments() ) ; const unsigned int nB ( numberOfBarrelAlignments() ) ; const unsigned int nE ( numberOfEndcapAlignments() ) ; const unsigned int nF ( numberOfForwardAlignments() ) ; // const unsigned int nO ( numberOfOuterAlignments() ) ; return ( i < nB ? detIdFromBarrelAlignmentIndex( i ) : i < nB+nE ? detIdFromEndcapAlignmentIndex( i - nB ) : i < nB+nE+nF ? detIdFromForwardAlignmentIndex( i - nB - nE ) : detIdFromOuterAlignmentIndex( i - nB - nE - nF ) ) ; }
DetId HcalGeometry::detIdFromOuterAlignmentIndex | ( | unsigned int | i | ) | [static] |
Definition at line 318 of file HcalGeometry.cc.
References HcalOuter, numberOfOuterAlignments(), and relativeConstraints::ring.
Referenced by detIdFromLocalAlignmentIndex(), FakeCaloAlignmentEP::produceHOAli(), and TestCaloAlignmentEP::produceHOAli().
int HcalGeometry::etaRing | ( | HcalSubdetector | bc, |
double | abseta | ||
) | const [private] |
helper methods for getClosestCell
Definition at line 159 of file HcalGeometry.cc.
References HcalTopology::firstHFRing(), HcalForward, HcalTopology::lastHERing(), HcalTopology::lastHFRing(), theHBHEEtaBounds, theHFEtaBounds, and theTopology.
Referenced by getCells(), and getClosestCell().
{ int etaring; if( bc == HcalForward ) { for(etaring = theTopology.firstHFRing(); etaring <= theTopology.lastHFRing(); ++etaring) { if(theHFEtaBounds[etaring-theTopology.firstHFRing()+1] > abseta) break; } } else { for(etaring = 1; etaring <= theTopology.lastHERing(); ++etaring) { if(theHBHEEtaBounds[etaring] >= abseta) break; } } return etaring; }
void HcalGeometry::fillDetIds | ( | ) | const [private] |
Definition at line 34 of file HcalGeometry.cc.
References CaloSubdetectorGeometry::getValidDetIds(), HcalBarrel, HcalEndcap, HcalForward, HcalOuter, i, m_emptyIds, m_hbIds, m_heIds, m_hfIds, m_hoIds, and python::multivaluedict::sort().
Referenced by getValidDetIds().
{ const std::vector<DetId>& baseIds ( CaloSubdetectorGeometry::getValidDetIds() ) ; for( unsigned int i ( 0 ) ; i != baseIds.size() ; ++i ) { const DetId id ( baseIds[i] ); if( id.subdetId() == HcalBarrel ) { m_hbIds.push_back( id ) ; } else { if( id.subdetId() == HcalEndcap ) { m_heIds.push_back( id ) ; } else { if( id.subdetId() == HcalOuter ) { m_hoIds.push_back( id ) ; } else { if( id.subdetId() == HcalForward ) { m_hfIds.push_back( id ) ; } } } } } std::sort( m_hbIds.begin(), m_hbIds.end() ) ; std::sort( m_heIds.begin(), m_heIds.end() ) ; std::sort( m_hoIds.begin(), m_hoIds.end() ) ; std::sort( m_hfIds.begin(), m_hfIds.end() ) ; m_emptyIds.resize( 0 ) ; }
CaloSubdetectorGeometry::DetIdSet HcalGeometry::getCells | ( | const GlobalPoint & | r, |
double | dR | ||
) | const [virtual] |
Get a list of all cells within a dR of the given cell.
The default implementation makes a loop over all cell geometries. Cleverer implementations are suggested to use rough conversions between eta/phi and ieta/iphi and test on the boundaries.
Reimplemented from CaloSubdetectorGeometry.
Definition at line 211 of file HcalGeometry.cc.
References reco::deltaR2(), eta(), PV3DBase< T, PVType, FrameType >::eta(), etaRing(), HcalTopology::firstHFRing(), getGeometry(), CaloCellGeometry::getPosition(), HcalBarrel, HcalEndcap, HcalForward, HcalOuter, HcalTopology::lastHFRing(), M_PI, AlCaHLTBitMon_ParallelJobs::p, PV3DBase< T, PVType, FrameType >::phi(), phi, phiBin(), theHFEtaBounds, theTopology, and HcalTopology::valid().
{ CaloSubdetectorGeometry::DetIdSet dis; // this is the return object if( 0.000001 < dR ) { if( dR > M_PI/2. ) // this version needs "small" dR { dis = CaloSubdetectorGeometry::getCells( r, dR ) ; // base class version } else { const double dR2 ( dR*dR ) ; const double reta ( r.eta() ) ; const double rphi ( r.phi() ) ; const double lowEta ( reta - dR ) ; const double highEta ( reta + dR ) ; const double lowPhi ( rphi - dR ) ; const double highPhi ( rphi + dR ) ; const double hfEtaHi ( theHFEtaBounds[ theTopology.lastHFRing() - theTopology.firstHFRing() + 1 ] ) ; if( highEta > -hfEtaHi && lowEta < hfEtaHi ) // in hcal { const HcalSubdetector hs[] = { HcalBarrel, HcalOuter, HcalEndcap, HcalForward } ; for( unsigned int is ( 0 ) ; is != 4 ; ++is ) { const int sign ( reta>0 ? 1 : -1 ) ; const int ieta_center ( sign*etaRing( hs[is], fabs( reta ) ) ) ; const int ieta_lo ( ( 0 < lowEta*sign ? sign : -sign )*etaRing( hs[is], fabs( lowEta ) ) ) ; const int ieta_hi ( ( 0 < highEta*sign ? sign : -sign )*etaRing( hs[is], fabs( highEta ) ) ) ; const int iphi_lo ( phiBin( lowPhi , ieta_center ) ) ; const int iphi_hi ( phiBin( highPhi, ieta_center ) ) ; const int jphi_lo ( iphi_lo>iphi_hi ? iphi_lo - 72 : iphi_lo ) ; const int jphi_hi ( iphi_hi ) ; const int idep_lo ( 1 == is ? 4 : 1 ) ; const int idep_hi ( 1 == is ? 4 : ( 2 == is ? 3 : 2 ) ) ; for( int ieta ( ieta_lo ) ; ieta <= ieta_hi ; ++ieta ) // over eta limits { if( ieta != 0 ) { for( int jphi ( jphi_lo ) ; jphi <= jphi_hi ; ++jphi ) // over phi limits { const int iphi ( 1 > jphi ? jphi+72 : jphi ) ; for( int idep ( idep_lo ) ; idep <= idep_hi ; ++idep ) { const HcalDetId did ( hs[is], ieta, iphi, idep ) ; if( theTopology.valid(did) ) { const CaloCellGeometry* cell ( getGeometry( did ) ); if( 0 != cell ) { const GlobalPoint& p ( cell->getPosition() ) ; const double eta ( p.eta() ) ; const double phi ( p.phi() ) ; if( reco::deltaR2( eta, phi, reta, rphi ) < dR2 ) dis.insert( did ) ; } } } } } } } } } } return dis; }
DetId HcalGeometry::getClosestCell | ( | const GlobalPoint & | r | ) | const [virtual] |
Reimplemented from CaloSubdetectorGeometry.
Definition at line 86 of file HcalGeometry.cc.
References abs, PV3DBase< T, PVType, FrameType >::eta(), etaRing(), getGeometry(), CaloCellGeometry::getPosition(), HcalBarrel, HcalEmpty, HcalEndcap, HcalForward, HcalTopology::incrementDepth(), HcalTopology::lastHBRing(), HcalTopology::lastHERing(), HcalTopology::lastHFRing(), PV3DBase< T, PVType, FrameType >::mag(), PV3DBase< T, PVType, FrameType >::phi(), phiBin(), theHBHEEtaBounds, theTopology, and PV3DBase< T, PVType, FrameType >::z().
{ // Now find the closest eta_bin, eta value of a bin i is average // of eta[i] and eta[i-1] double abseta = fabs(r.eta()); // figure out subdetector, giving preference to HE in HE/HF overlap region HcalSubdetector bc= HcalEmpty; if (abseta <= theHBHEEtaBounds[theTopology.lastHBRing()] ) { bc = HcalBarrel; } else if (abseta <= theHBHEEtaBounds[theTopology.lastHERing()] ) { bc = HcalEndcap; } else { bc = HcalForward; } if (bc == HcalForward) { static const double z_short=1137.0; int etaring = etaRing(bc, abseta); // This is safer /* static const double z_long=1115.0; // determine front-face eta double radius=sqrt(pow(r.x(),2)+pow(r.y(),2)); double trueAeta=asinh(z_long/radius); // find eta bin int etaring = etaRing(bc, trueAeta); */ if (etaring>theTopology.lastHFRing()) etaring=theTopology.lastHFRing(); int phibin = phiBin(r.phi(), etaring); // add a sign to the etaring int etabin = (r.z() > 0) ? etaring : -etaring; // Next line is premature depth 1 and 2 can coexist for large z-extent // HcalDetId bestId(bc,etabin,phibin,((fabs(r.z())>=z_short)?(2):(1))); // above line is no good with finite precision HcalDetId bestId(bc,etabin,phibin,((fabs(r.z()) - z_short >-0.1)?(2):(1))); return bestId; } else { // find eta bin int etaring = etaRing(bc, abseta); int phibin = phiBin(r.phi(), etaring); // add a sign to the etaring int etabin = (r.z() > 0) ? etaring : -etaring; //Now do depth if required int dbin = 1; double pointrz=0, drz=99999.; HcalDetId currentId(bc, etabin, phibin, dbin); if (bc == HcalBarrel) pointrz = r.mag(); else pointrz = std::abs(r.z()); HcalDetId bestId; for ( ; currentId != HcalDetId(); theTopology.incrementDepth(currentId)) { const CaloCellGeometry * cell = getGeometry(currentId); assert(cell != 0); double rz; if (bc == HcalEndcap) rz = std::abs(cell->getPosition().z()); else rz = cell->getPosition().mag(); if (std::abs(pointrz-rz)<drz) { bestId = currentId; drz = std::abs(pointrz-rz); } } return bestId; } }
virtual const CaloCellGeometry* HcalGeometry::getGeometry | ( | const DetId & | id | ) | const [inline, virtual] |
Get the cell geometry of a given detector id. Should return false if not found.
Reimplemented from CaloSubdetectorGeometry.
Definition at line 97 of file HcalGeometry.h.
References cellGeomPtr(), HcalTopology::detId2denseId(), and theTopology.
Referenced by getCells(), and getClosestCell().
{ return cellGeomPtr( theTopology.detId2denseId( id ) ) ; }
const std::vector< DetId > & HcalGeometry::getValidDetIds | ( | DetId::Detector | det = DetId::Detector ( 0 ) , |
int | subdet = 0 |
||
) | const [virtual] |
Get a list of valid detector ids (for the given subdetector)
Reimplemented from CaloSubdetectorGeometry.
Definition at line 74 of file HcalGeometry.cc.
References fillDetIds(), CaloSubdetectorGeometry::getValidDetIds(), HcalBarrel, HcalEndcap, HcalForward, HcalOuter, m_emptyIds, m_hbIds, m_heIds, m_hfIds, and m_hoIds.
{ if( 0 != subdet && 0 == m_hbIds.size() ) fillDetIds() ; return ( 0 == subdet ? CaloSubdetectorGeometry::getValidDetIds() : ( HcalBarrel == subdet ? m_hbIds : ( HcalEndcap == subdet ? m_heIds : ( HcalOuter == subdet ? m_hoIds : ( HcalForward == subdet ? m_hfIds : m_emptyIds ) ) ) ) ) ; }
virtual unsigned int HcalGeometry::indexFor | ( | const DetId & | id | ) | const [inline, protected, virtual] |
Reimplemented from CaloSubdetectorGeometry.
Definition at line 105 of file HcalGeometry.h.
References HcalTopology::detId2denseId(), and theTopology.
{ return theTopology.detId2denseId(id); }
void HcalGeometry::init | ( | void | ) | [private] |
Definition at line 20 of file HcalGeometry.cc.
References HcalTopology::getHBSize(), HcalTopology::getHESize(), HcalTopology::getHFSize(), HcalTopology::getHOSize(), m_hbCellVec, m_heCellVec, m_hfCellVec, m_hoCellVec, and theTopology.
Referenced by HcalGeometry().
{ edm::LogInfo("HcalGeometry") << "HcalGeometry::init() " << " HBSize " << theTopology.getHBSize() << " HESize " << theTopology.getHESize() << " HOSize " << theTopology.getHOSize() << " HFSize " << theTopology.getHFSize(); m_hbCellVec = HBCellVec( theTopology.getHBSize() ) ; m_heCellVec = HECellVec( theTopology.getHESize() ) ; m_hoCellVec = HOCellVec( theTopology.getHOSize() ) ; m_hfCellVec = HFCellVec( theTopology.getHFSize() ) ; }
Definition at line 425 of file HcalGeometry.cc.
References HcalTopology::denseId2detId(), HcalForward, HcalDetId::subdet(), and theTopology.
{ HcalDetId hid=HcalDetId(theTopology.denseId2detId(i)); if( hid.subdet() == HcalForward ) { IdealZPrism::localCorners( lc, pv, ref ) ; } else { IdealObliquePrism::localCorners( lc, pv, ref ) ; } }
void HcalGeometry::newCell | ( | const GlobalPoint & | f1, |
const GlobalPoint & | f2, | ||
const GlobalPoint & | f3, | ||
const CCGFloat * | parm, | ||
const DetId & | detId | ||
) | [virtual] |
Implements CaloSubdetectorGeometry.
Definition at line 443 of file HcalGeometry.cc.
References CaloSubdetectorGeometry::cornersMgr(), DetId::det(), HcalTopology::detId2denseId(), cropTnPTrees::din, DetId::Hcal, HcalBarrel, HcalEndcap, HcalOuter, getHLTprescales::index, m_hbCellVec, m_heCellVec, m_hfCellVec, m_hoCellVec, CaloSubdetectorGeometry::m_validIds, DetId::rawId(), DetId::subdetId(), and theTopology.
{ assert (detId.det()==DetId::Hcal); const HcalDetId hid ( detId ) ; unsigned int din=theTopology.detId2denseId(detId); static int counter=0; edm::LogInfo("HcalGeometry") << counter++ << ": newCell subdet " << detId.subdetId() << ", raw ID " << detId.rawId() << ", hid " << hid << ", din " << din; if( hid.subdet()==HcalBarrel) { m_hbCellVec[ din ] = IdealObliquePrism( f1, cornersMgr(), parm ) ; } else if( hid.subdet()==HcalEndcap ) { const unsigned int index ( din - m_hbCellVec.size() ) ; m_heCellVec[ index ] = IdealObliquePrism( f1, cornersMgr(), parm ) ; } else if( hid.subdet()==HcalOuter ) { const unsigned int index ( din - m_hbCellVec.size() - m_heCellVec.size() ) ; m_hoCellVec[ index ] = IdealObliquePrism( f1, cornersMgr(), parm ) ; } else { const unsigned int index ( din - m_hbCellVec.size() - m_heCellVec.size() - m_hoCellVec.size() ) ; m_hfCellVec[ index ] = IdealZPrism( f1, cornersMgr(), parm ) ; } m_validIds.push_back( detId ) ; }
static unsigned int HcalGeometry::numberOfAlignments | ( | ) | [inline, static] |
Definition at line 64 of file HcalGeometry.h.
References numberOfBarrelAlignments(), numberOfEndcapAlignments(), numberOfForwardAlignments(), and numberOfOuterAlignments().
Referenced by alignmentTransformIndexLocal(), detIdFromLocalAlignmentIndex(), CaloGeometryDBEP< T, U >::produceAligned(), and HcalAlignmentEP::produceHcalAli().
{ return ( numberOfBarrelAlignments() + numberOfEndcapAlignments() + numberOfOuterAlignments() + numberOfForwardAlignments() ) ; }
static unsigned int HcalGeometry::numberOfBarrelAlignments | ( | ) | [inline, static] |
Definition at line 54 of file HcalGeometry.h.
Referenced by alignmentBarrelIndexLocal(), alignmentTransformIndexLocal(), detIdFromBarrelAlignmentIndex(), detIdFromLocalAlignmentIndex(), numberOfAlignments(), FakeCaloAlignmentEP::produceHBAli(), TestCaloAlignmentEP::produceHBAli(), and HcalAlignmentEP::produceHcalAli().
{ return 36 ; }
static unsigned int HcalGeometry::numberOfEndcapAlignments | ( | ) | [inline, static] |
Definition at line 56 of file HcalGeometry.h.
Referenced by alignmentEndcapIndexLocal(), alignmentTransformIndexLocal(), detIdFromEndcapAlignmentIndex(), detIdFromLocalAlignmentIndex(), numberOfAlignments(), HcalAlignmentEP::produceHcalAli(), TestCaloAlignmentEP::produceHEAli(), and FakeCaloAlignmentEP::produceHEAli().
{ return 36 ; }
static unsigned int HcalGeometry::numberOfForwardAlignments | ( | ) | [inline, static] |
Definition at line 58 of file HcalGeometry.h.
Referenced by alignmentForwardIndexLocal(), alignmentTransformIndexLocal(), detIdFromForwardAlignmentIndex(), detIdFromLocalAlignmentIndex(), numberOfAlignments(), HcalAlignmentEP::produceHcalAli(), FakeCaloAlignmentEP::produceHFAli(), and TestCaloAlignmentEP::produceHFAli().
{ return 36 ; }
static unsigned int HcalGeometry::numberOfOuterAlignments | ( | ) | [inline, static] |
Definition at line 60 of file HcalGeometry.h.
Referenced by alignmentOuterIndexLocal(), detIdFromOuterAlignmentIndex(), numberOfAlignments(), HcalAlignmentEP::produceHcalAli(), FakeCaloAlignmentEP::produceHOAli(), and TestCaloAlignmentEP::produceHOAli().
{ return 60 ; }
virtual unsigned int HcalGeometry::numberOfParametersPerShape | ( | ) | const [inline, virtual] |
Reimplemented from CaloSubdetectorGeometry.
Definition at line 36 of file HcalGeometry.h.
References k_NumberOfParametersPerShape.
{ return k_NumberOfParametersPerShape ; }
virtual unsigned int HcalGeometry::numberOfShapes | ( | ) | const [inline, virtual] |
Reimplemented from CaloSubdetectorGeometry.
Definition at line 35 of file HcalGeometry.h.
References HcalTopology::getNumberOfShapes(), and theTopology.
{ return theTopology.getNumberOfShapes() ; }
int HcalGeometry::phiBin | ( | double | phi, |
int | etaring | ||
) | const [private] |
Definition at line 182 of file HcalGeometry.cc.
References HcalTopology::firstHFQuadPhiRing(), M_PI, HcalTopology::nPhiBins(), and theTopology.
Referenced by getCells(), and getClosestCell().
{ static const double twopi = M_PI+M_PI; //put phi in correct range (0->2pi) if(phi<0.0) phi += twopi; if(phi>twopi) phi -= twopi; int nphibins = theTopology.nPhiBins(etaring); int phibin= static_cast<int>(phi/twopi*nphibins)+1; int iphi; // rings 40 and 41 are offset wrt the other phi numbering // 1 1 1 2 // ------------------------------ // 72 36 36 1 if(etaring >= theTopology.firstHFQuadPhiRing()) { phi+=(twopi/36); //shift by half tower. phibin=static_cast<int>(phi/twopi*nphibins); if (phibin==0) phibin=18; iphi=phibin*4-1; // 71,3,5, } else { // convert to the convention of numbering 1,3,5, in 36 phi bins iphi=(phibin-1)*(72/nphibins) + 1; } return iphi; }
static std::string HcalGeometry::producerTag | ( | ) | [inline, static] |
Definition at line 52 of file HcalGeometry.h.
Referenced by PCaloGeometryBuilder::beginRun(), HcalHardcodeGeometryEP::HcalHardcodeGeometryEP(), CaloGeometryBuilder::produceAligned(), and CaloGeometryDBEP< T, U >::produceAligned().
{ return "HCAL" ; }
virtual unsigned int HcalGeometry::sizeForDenseIndex | ( | const DetId & | id | ) | const [inline, protected, virtual] |
Reimplemented from CaloSubdetectorGeometry.
Definition at line 106 of file HcalGeometry.h.
References HcalTopology::ncells(), and theTopology.
{ return theTopology.ncells(); }
std::vector<DetId> HcalGeometry::m_emptyIds [mutable, private] |
Definition at line 125 of file HcalGeometry.h.
Referenced by fillDetIds(), and getValidDetIds().
HBCellVec HcalGeometry::m_hbCellVec [private] |
Definition at line 127 of file HcalGeometry.h.
Referenced by cellGeomPtr(), init(), and newCell().
std::vector<DetId> HcalGeometry::m_hbIds [mutable, private] |
Definition at line 121 of file HcalGeometry.h.
Referenced by fillDetIds(), and getValidDetIds().
HECellVec HcalGeometry::m_heCellVec [private] |
Definition at line 128 of file HcalGeometry.h.
Referenced by cellGeomPtr(), init(), and newCell().
std::vector<DetId> HcalGeometry::m_heIds [mutable, private] |
Definition at line 122 of file HcalGeometry.h.
Referenced by fillDetIds(), and getValidDetIds().
HFCellVec HcalGeometry::m_hfCellVec [private] |
Definition at line 130 of file HcalGeometry.h.
Referenced by cellGeomPtr(), init(), and newCell().
std::vector<DetId> HcalGeometry::m_hfIds [mutable, private] |
Definition at line 124 of file HcalGeometry.h.
Referenced by fillDetIds(), and getValidDetIds().
HOCellVec HcalGeometry::m_hoCellVec [private] |
Definition at line 129 of file HcalGeometry.h.
Referenced by cellGeomPtr(), init(), and newCell().
std::vector<DetId> HcalGeometry::m_hoIds [mutable, private] |
Definition at line 123 of file HcalGeometry.h.
Referenced by fillDetIds(), and getValidDetIds().
const HcalTopology& HcalGeometry::theTopology [private] |
Definition at line 119 of file HcalGeometry.h.
Referenced by etaRing(), getCells(), getClosestCell(), getGeometry(), indexFor(), init(), localCorners(), newCell(), numberOfShapes(), phiBin(), and sizeForDenseIndex().