CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | Friends
HcalGeometry Class Reference

#include <HcalGeometry.h>

Inheritance diagram for HcalGeometry:
CaloSubdetectorGeometry

Public Types

enum  { k_NumberOfParametersPerShape = 5 }
 
typedef HcalGeometryRecord AlignedRecord
 
typedef HcalAlignmentRcd AlignmentRecord
 
typedef CaloCellGeometry::CCGFloat CCGFloat
 
typedef HcalDetId DetIdType
 
typedef std::vector< IdealObliquePrismHBCellVec
 
typedef std::vector< IdealObliquePrismHECellVec
 
typedef std::vector< IdealZPrismHFCellVec
 
typedef std::vector< IdealObliquePrismHOCellVec
 
typedef PHcalRcd PGeometryRecord
 
typedef CaloCellGeometry::Pt3D Pt3D
 
typedef CaloCellGeometry::Pt3DVec Pt3DVec
 
- Public Types inherited from CaloSubdetectorGeometry
typedef CaloCellGeometry::CCGFloat CCGFloat
 
typedef std::vector< CaloCellGeometry const * > CellSet
 
typedef std::set< DetIdDetIdSet
 
typedef std::vector< CCGFloatDimVec
 
typedef std::vector< unsigned int > IVec
 
typedef CaloCellGeometry::ParMgr ParMgr
 
typedef CaloCellGeometry::ParVec ParVec
 
typedef CaloCellGeometry::ParVecVec ParVecVec
 
typedef std::vector< CCGFloatTrVec
 

Public Member Functions

GlobalPoint getBackPosition (const DetId &id) const
 
CaloSubdetectorGeometry::DetIdSet getCells (const GlobalPoint &r, double dR) const override
 Get a list of all cells within a dR of the given cell. More...
 
DetId getClosestCell (const GlobalPoint &r) const override
 
CaloCellGeometry::CornersVec getCorners (const DetId &id) const
 
const CaloCellGeometrygetGeometry (const DetId &id) const override
 Get the cell geometry of a given detector id. Should return false if not found. More...
 
unsigned int getHxSize (const int type) const
 
GlobalPoint getPosition (const DetId &id) const
 
void getSummary (CaloSubdetectorGeometry::TrVec &trVector, CaloSubdetectorGeometry::IVec &iVector, CaloSubdetectorGeometry::DimVec &dimVector, CaloSubdetectorGeometry::IVec &dinsVector) const override
 
const std::vector< DetId > & getValidDetIds (DetId::Detector det=DetId::Detector(0), int subdet=0) const override
 Get a list of valid detector ids (for the given subdetector) More...
 
 HcalGeometry (const HcalTopology &topology)
 
void localCorners (Pt3DVec &lc, const CCGFloat *pv, unsigned int i, Pt3D &ref)
 
void newCell (const GlobalPoint &f1, const GlobalPoint &f2, const GlobalPoint &f3, const CCGFloat *parm, const DetId &detId) override
 
unsigned int numberOfParametersPerShape () const override
 
unsigned int numberOfShapes () const override
 
const HcalTopologytopology () const
 
 ~HcalGeometry () override
 The HcalGeometry will delete all its cell geometries at destruction time. More...
 
- Public Member Functions inherited from CaloSubdetectorGeometry
void allocateCorners (CaloCellGeometry::CornersVec::size_type n)
 
void allocatePar (ParVec::size_type n, unsigned int m)
 
 CaloSubdetectorGeometry ()
 
 CaloSubdetectorGeometry (const CaloSubdetectorGeometry &)=delete
 avoid copies More...
 
CaloCellGeometry::CornersMgrcornersMgr ()
 
CCGFloat deltaEta (const DetId &detId) const
 
CCGFloat deltaPhi (const DetId &detId) const
 
virtual void fillDefaultNamedParameters () const
 
virtual CellSet getCellSet (const GlobalPoint &r, double dR) const
 
virtual void initializeParms ()
 
virtual unsigned int numberOfTransformParms () const
 
CaloSubdetectorGeometryoperator= (const CaloSubdetectorGeometry &)=delete
 
ParMgrparMgr ()
 
const ParMgrparMgrConst () const
 
ParVecVecparVecVec ()
 
const ParVecVecparVecVec () const
 
virtual bool present (const DetId &id) const
 is this detid present in the geometry? More...
 
virtual ~CaloSubdetectorGeometry ()
 The base class DOES assume that it owns the CaloCellGeometry objects. More...
 

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

const CaloCellGeometrycellGeomPtr (unsigned int index) const override
 
unsigned int indexFor (const DetId &id) const override
 
unsigned int sizeForDenseIndex (const DetId &id) const override
 
- Protected Member Functions inherited from CaloSubdetectorGeometry
void addValidID (const DetId &id)
 
virtual const CaloCellGeometrycellGeomPtr (uint32_t index) const =0
 

Private Member Functions

DetId correctId (const DetId &id) const
 
int etaRing (HcalSubdetector bc, double abseta) const
 helper methods for getClosestCell More...
 
void fillDetIds () const
 
void increaseReserve (unsigned int extra)
 
void init ()
 
void newCellFast (const GlobalPoint &f1, const GlobalPoint &f2, const GlobalPoint &f3, const CCGFloat *parm, const DetId &detId)
 
unsigned int newCellImpl (const GlobalPoint &f1, const GlobalPoint &f2, const GlobalPoint &f3, const CCGFloat *parm, const DetId &detId)
 
int phiBin (HcalSubdetector bc, int etaring, double phi) const
 
void sortValidIds ()
 

Private Attributes

CaloSubdetectorGeometry::IVec m_dins
 
edm::AtomicPtrCache< std::vector< DetId > > m_emptyIds
 
HBCellVec m_hbCellVec
 
edm::AtomicPtrCache< std::vector< DetId > > m_hbIds
 
HECellVec m_heCellVec
 
edm::AtomicPtrCache< std::vector< DetId > > m_heIds
 
HFCellVec m_hfCellVec
 
edm::AtomicPtrCache< std::vector< DetId > > m_hfIds
 
HOCellVec m_hoCellVec
 
edm::AtomicPtrCache< std::vector< DetId > > m_hoIds
 
bool m_mergePosition
 
const HcalTopologym_topology
 

Friends

class HcalFlexiHardcodeGeometryLoader
 
class HcalHardcodeGeometryLoader
 

Additional Inherited Members

- Static Protected Member Functions inherited from CaloSubdetectorGeometry
static CCGFloat deltaR (const GlobalPoint &p1, const GlobalPoint &p2)
 
- Protected Attributes inherited from CaloSubdetectorGeometry
ParVecVec m_parVecVec
 
std::vector< DetIdm_validIds
 

Detailed Description

Definition at line 17 of file HcalGeometry.h.

Member Typedef Documentation

Definition at line 34 of file HcalGeometry.h.

Definition at line 33 of file HcalGeometry.h.

Definition at line 29 of file HcalGeometry.h.

Definition at line 36 of file HcalGeometry.h.

Definition at line 24 of file HcalGeometry.h.

Definition at line 25 of file HcalGeometry.h.

typedef std::vector<IdealZPrism> HcalGeometry::HFCellVec

Definition at line 27 of file HcalGeometry.h.

Definition at line 26 of file HcalGeometry.h.

Definition at line 35 of file HcalGeometry.h.

Definition at line 30 of file HcalGeometry.h.

Definition at line 31 of file HcalGeometry.h.

Member Enumeration Documentation

anonymous enum
Enumerator
k_NumberOfParametersPerShape 

Definition at line 39 of file HcalGeometry.h.

Constructor & Destructor Documentation

HcalGeometry::HcalGeometry ( const HcalTopology topology)
explicit

Definition at line 16 of file HcalGeometry.cc.

References init().

Referenced by numberOfParametersPerShape().

16  :
17  m_topology(topology), m_mergePosition(topology.getMergePositionFlag()) {
18  init();
19 }
const HcalTopology & m_topology
Definition: HcalGeometry.h:154
bool m_mergePosition
Definition: HcalGeometry.h:155
bool getMergePositionFlag() const
Definition: HcalTopology.h:164
HcalGeometry::~HcalGeometry ( )
override

The HcalGeometry will delete all its cell geometries at destruction time.

Definition at line 21 of file HcalGeometry.cc.

Referenced by numberOfParametersPerShape().

21 {}

Member Function Documentation

unsigned int HcalGeometry::alignmentBarEndForIndexLocal ( const DetId id,
unsigned int  nD 
)
static

Definition at line 311 of file HcalGeometry.cc.

References HcalDetId::ieta(), diffTreeTool::index, and HcalDetId::iphi().

Referenced by alignmentBarrelIndexLocal(), alignmentEndcapIndexLocal(), alignmentForwardIndexLocal(), and numberOfAlignments().

312  {
313  const HcalDetId hid ( id ) ;
314  const unsigned int iphi ( hid.iphi() ) ;
315  const int ieta ( hid.ieta() ) ;
316  const unsigned int index ( ( 0 < ieta ? nD/2 : 0 ) + ( iphi + 1 )%72/4 ) ;
317  assert( index < nD ) ;
318  return index ;
319 }
unsigned int HcalGeometry::alignmentBarrelIndexLocal ( const DetId id)
static

Definition at line 321 of file HcalGeometry.cc.

References alignmentBarEndForIndexLocal(), and numberOfBarrelAlignments().

Referenced by alignmentTransformIndexLocal(), and numberOfAlignments().

321  {
323 }
static unsigned int numberOfBarrelAlignments()
Definition: HcalGeometry.h:65
static unsigned int alignmentBarEndForIndexLocal(const DetId &id, unsigned int nD)
unsigned int HcalGeometry::alignmentEndcapIndexLocal ( const DetId id)
static

Definition at line 325 of file HcalGeometry.cc.

References alignmentBarEndForIndexLocal(), and numberOfEndcapAlignments().

Referenced by alignmentTransformIndexLocal(), and numberOfAlignments().

325  {
327 }
static unsigned int numberOfEndcapAlignments()
Definition: HcalGeometry.h:67
static unsigned int alignmentBarEndForIndexLocal(const DetId &id, unsigned int nD)
unsigned int HcalGeometry::alignmentForwardIndexLocal ( const DetId id)
static

Definition at line 329 of file HcalGeometry.cc.

References alignmentBarEndForIndexLocal(), and numberOfForwardAlignments().

Referenced by alignmentTransformIndexLocal(), and numberOfAlignments().

329  {
331 }
static unsigned int numberOfForwardAlignments()
Definition: HcalGeometry.h:69
static unsigned int alignmentBarEndForIndexLocal(const DetId &id, unsigned int nD)
unsigned int HcalGeometry::alignmentOuterIndexLocal ( const DetId id)
static

Definition at line 333 of file HcalGeometry.cc.

References HcalDetId::ieta(), diffTreeTool::index, HcalDetId::iphi(), numberOfOuterAlignments(), and relativeConstraints::ring.

Referenced by alignmentTransformIndexLocal(), and numberOfAlignments().

333  {
334  const HcalDetId hid ( id ) ;
335  const int ieta ( hid.ieta() ) ;
336  const int iphi ( hid.iphi() ) ;
337  const int ring ( ieta < -10 ? 0 :
338  ( ieta < -4 ? 1 :
339  ( ieta < 5 ? 2 :
340  ( ieta < 11 ? 3 : 4 ) ) ) ) ;
341 
342  const unsigned int index ( 12*ring + ( iphi - 1 )/6 ) ;
343  assert( index < numberOfOuterAlignments() ) ;
344  return index ;
345 }
static unsigned int numberOfOuterAlignments()
Definition: HcalGeometry.h:71
unsigned int HcalGeometry::alignmentTransformIndexGlobal ( const DetId id)
static

Definition at line 371 of file HcalGeometry.cc.

References DetId::Hcal.

Referenced by numberOfAlignments(), and CaloGeometryDBEP< T, U >::produceAligned().

371  {
372  return (unsigned int)DetId::Hcal - 1 ;
373 }
unsigned int HcalGeometry::alignmentTransformIndexLocal ( const DetId id)
static

Definition at line 347 of file HcalGeometry.cc.

References alignmentBarrelIndexLocal(), alignmentEndcapIndexLocal(), alignmentForwardIndexLocal(), alignmentOuterIndexLocal(), DetId::Hcal, HcalBarrel, HcalEndcap, HcalForward, diffTreeTool::index, HcalObjRepresent::isHB(), HcalObjRepresent::isHE(), HcalObjRepresent::isHF(), numberOfAlignments(), numberOfBarrelAlignments(), numberOfEndcapAlignments(), numberOfForwardAlignments(), and HcalDetId::subdet().

Referenced by numberOfAlignments(), and CaloGeometryDBEP< T, U >::produceAligned().

347  {
348  assert(id.det() == DetId::Hcal) ;
349 
350  const HcalDetId hid ( id ) ;
351  bool isHB = (hid.subdet() == HcalBarrel);
352  bool isHE = (hid.subdet() == HcalEndcap);
353  bool isHF = (hid.subdet() == HcalForward);
354  // bool isHO = (hid.subdet() == HcalOuter);
355 
356  const unsigned int nB ( numberOfBarrelAlignments() ) ;
357  const unsigned int nE ( numberOfEndcapAlignments() ) ;
358  const unsigned int nF ( numberOfForwardAlignments() ) ;
359  // const unsigned int nO ( numberOfOuterAlignments() ) ;
360 
361  const unsigned int index (isHB ? alignmentBarrelIndexLocal(id) :
362  isHE ? alignmentEndcapIndexLocal(id) + nB :
363  isHF ? alignmentForwardIndexLocal( id ) + nB + nE :
364  alignmentOuterIndexLocal(id) + nB + nE + nF
365  );
366 
367  assert( index < numberOfAlignments() ) ;
368  return index ;
369 }
static unsigned int numberOfBarrelAlignments()
Definition: HcalGeometry.h:65
static unsigned int alignmentEndcapIndexLocal(const DetId &id)
bool isHE(int etabin, int depth)
bool isHB(int etabin, int depth)
static unsigned int alignmentBarrelIndexLocal(const DetId &id)
static unsigned int alignmentOuterIndexLocal(const DetId &id)
static unsigned int numberOfEndcapAlignments()
Definition: HcalGeometry.h:67
bool isHF(int etabin, int depth)
static unsigned int numberOfForwardAlignments()
Definition: HcalGeometry.h:69
static unsigned int alignmentForwardIndexLocal(const DetId &id)
static unsigned int numberOfAlignments()
Definition: HcalGeometry.h:75
const CaloCellGeometry * HcalGeometry::cellGeomPtr ( unsigned int  index) const
overrideprotected

Definition at line 451 of file HcalGeometry.cc.

References cropTnPTrees::din, diffTreeTool::index, m_hbCellVec, m_heCellVec, m_hfCellVec, m_hoCellVec, and CaloCellGeometry::param().

Referenced by getGeometry(), getSummary(), and topology().

451  {
452  const CaloCellGeometry* cell ( nullptr ) ;
453  if( m_hbCellVec.size() > din ) {
454  cell = &m_hbCellVec[ din ] ;
455  } else {
456  if (m_hbCellVec.size() + m_heCellVec.size() > din) {
457  const unsigned int index (din - m_hbCellVec.size() ) ;
458  cell = &m_heCellVec[ index ] ;
459  } else if (m_hbCellVec.size()+m_heCellVec.size()+m_hoCellVec.size() > din) {
460  const unsigned int index (din - m_hbCellVec.size() - m_heCellVec.size());
461  cell = &m_hoCellVec[ index ] ;
462  } else if (m_hbCellVec.size() + m_heCellVec.size() + m_hoCellVec.size() +
463  m_hfCellVec.size() > din) {
464  const unsigned int index (din - m_hbCellVec.size() - m_heCellVec.size() -
465  m_hoCellVec.size() ) ;
466  cell = &m_hfCellVec[ index ] ;
467  }
468  }
469 
470  return (( nullptr == cell || nullptr == cell->param()) ? nullptr : cell ) ;
471 }
HBCellVec m_hbCellVec
Definition: HcalGeometry.h:164
HOCellVec m_hoCellVec
Definition: HcalGeometry.h:166
HFCellVec m_hfCellVec
Definition: HcalGeometry.h:167
HECellVec m_heCellVec
Definition: HcalGeometry.h:165
DetId HcalGeometry::correctId ( const DetId id) const
private

Definition at line 542 of file HcalGeometry.cc.

References hcalTTPDigis_cfi::id, m_mergePosition, m_topology, and HcalTopology::mergedDepthDetId().

Referenced by getClosestCell(), and sizeForDenseIndex().

542  {
543 
544  if (m_mergePosition) {
545  HcalDetId hid(id);
546  return ((DetId)(m_topology.mergedDepthDetId(hid)));
547  } else {
548  return id;
549  }
550 }
const HcalTopology & m_topology
Definition: HcalGeometry.h:154
bool m_mergePosition
Definition: HcalGeometry.h:155
HcalDetId mergedDepthDetId(const HcalDetId &id) const
Definition: HcalTopology.h:163
Definition: DetId.h:18
static std::string HcalGeometry::dbString ( )
inlinestatic

Definition at line 41 of file HcalGeometry.h.

Referenced by CaloGeometryDBEP< T, U >::produceAligned().

41 { return "PHcalRcd" ; }
DetId HcalGeometry::detIdFromBarrelAlignmentIndex ( unsigned int  i)
static

Definition at line 265 of file HcalGeometry.cc.

References HcalBarrel, and numberOfBarrelAlignments().

Referenced by detIdFromLocalAlignmentIndex(), numberOfAlignments(), FakeCaloAlignmentEP::produceHBAli(), and TestCaloAlignmentEP::produceHBAli().

265  {
266  assert( i < numberOfBarrelAlignments() ) ;
267  const int ieta ( i < numberOfBarrelAlignments()/2 ? -1 : 1 ) ;
268  const int iphi ( 1 + (4*i)%72 ) ;
269  return HcalDetId( HcalBarrel, ieta, iphi, 1 ) ;
270 }
static unsigned int numberOfBarrelAlignments()
Definition: HcalGeometry.h:65
DetId HcalGeometry::detIdFromEndcapAlignmentIndex ( unsigned int  i)
static

Definition at line 272 of file HcalGeometry.cc.

References HcalEndcap, and numberOfEndcapAlignments().

Referenced by detIdFromLocalAlignmentIndex(), numberOfAlignments(), FakeCaloAlignmentEP::produceHEAli(), and TestCaloAlignmentEP::produceHEAli().

272  {
273  assert( i < numberOfEndcapAlignments() ) ;
274  const int ieta ( i < numberOfEndcapAlignments()/2 ? -16 : 16 ) ;
275  const int iphi ( 1 + (4*i)%72 ) ;
276  return HcalDetId( HcalEndcap, ieta, iphi, 1 ) ;
277 }
static unsigned int numberOfEndcapAlignments()
Definition: HcalGeometry.h:67
DetId HcalGeometry::detIdFromForwardAlignmentIndex ( unsigned int  i)
static

Definition at line 279 of file HcalGeometry.cc.

References HcalForward, and numberOfForwardAlignments().

Referenced by detIdFromLocalAlignmentIndex(), numberOfAlignments(), FakeCaloAlignmentEP::produceHFAli(), and TestCaloAlignmentEP::produceHFAli().

279  {
280  assert( i < numberOfForwardAlignments() ) ;
281  const int ieta ( i < numberOfForwardAlignments()/2 ? -29 : 29 ) ;
282  const int iphi ( 1 + (4*i)%72 ) ;
283  return HcalDetId( HcalForward, ieta, iphi, 1 ) ;
284 }
static unsigned int numberOfForwardAlignments()
Definition: HcalGeometry.h:69
DetId HcalGeometry::detIdFromLocalAlignmentIndex ( unsigned int  i)
static

Definition at line 297 of file HcalGeometry.cc.

References detIdFromBarrelAlignmentIndex(), detIdFromEndcapAlignmentIndex(), detIdFromForwardAlignmentIndex(), detIdFromOuterAlignmentIndex(), numberOfAlignments(), numberOfBarrelAlignments(), numberOfEndcapAlignments(), and numberOfForwardAlignments().

Referenced by numberOfAlignments().

297  {
298  assert( i < numberOfAlignments() ) ;
299 
300  const unsigned int nB ( numberOfBarrelAlignments() ) ;
301  const unsigned int nE ( numberOfEndcapAlignments() ) ;
302  const unsigned int nF ( numberOfForwardAlignments() ) ;
303 // const unsigned int nO ( numberOfOuterAlignments() ) ;
304 
305  return ( i < nB ? detIdFromBarrelAlignmentIndex( i ) :
306  i < nB+nE ? detIdFromEndcapAlignmentIndex( i - nB ) :
307  i < nB+nE+nF ? detIdFromForwardAlignmentIndex( i - nB - nE ) :
308  detIdFromOuterAlignmentIndex( i - nB - nE - nF ) ) ;
309 }
static unsigned int numberOfBarrelAlignments()
Definition: HcalGeometry.h:65
static DetId detIdFromOuterAlignmentIndex(unsigned int i)
static DetId detIdFromForwardAlignmentIndex(unsigned int i)
static DetId detIdFromBarrelAlignmentIndex(unsigned int i)
static unsigned int numberOfEndcapAlignments()
Definition: HcalGeometry.h:67
static unsigned int numberOfForwardAlignments()
Definition: HcalGeometry.h:69
static DetId detIdFromEndcapAlignmentIndex(unsigned int i)
static unsigned int numberOfAlignments()
Definition: HcalGeometry.h:75
DetId HcalGeometry::detIdFromOuterAlignmentIndex ( unsigned int  i)
static

Definition at line 286 of file HcalGeometry.cc.

References HcalOuter, numberOfOuterAlignments(), and relativeConstraints::ring.

Referenced by detIdFromLocalAlignmentIndex(), numberOfAlignments(), FakeCaloAlignmentEP::produceHOAli(), and TestCaloAlignmentEP::produceHOAli().

286  {
287  assert( i < numberOfOuterAlignments() ) ;
288  const int ring ( i/12 ) ;
289  const int ieta ( 0 == ring ? -11 :
290  1 == ring ? -5 :
291  2 == ring ? 1 :
292  3 == ring ? 5 : 11 ) ;
293  const int iphi ( 1 + ( i - ring*12 )*6 ) ;
294  return HcalDetId( HcalOuter, ieta, iphi, 4 ) ;
295 }
static unsigned int numberOfOuterAlignments()
Definition: HcalGeometry.h:71
int HcalGeometry::etaRing ( HcalSubdetector  bc,
double  abseta 
) const
private

helper methods for getClosestCell

Definition at line 186 of file HcalGeometry.cc.

References HcalTopology::etaRing(), and m_topology.

Referenced by getCells(), getClosestCell(), and sizeForDenseIndex().

186  {
187  return m_topology.etaRing(bc, abseta);
188 }
const HcalTopology & m_topology
Definition: HcalGeometry.h:154
int etaRing(HcalSubdetector subdet, double eta) const
eta and phi index from eta, phi values
void HcalGeometry::fillDetIds ( ) const
private

Definition at line 39 of file HcalGeometry.cc.

References CaloSubdetectorGeometry::getValidDetIds(), HcalBarrel, HcalEndcap, HcalForward, HcalOuter, mps_fire::i, hcalTTPDigis_cfi::id, edm::AtomicPtrCache< T >::isSet(), m_emptyIds, m_hbIds, m_heIds, m_hfIds, m_hoIds, eostools::move(), and edm::AtomicPtrCache< T >::set().

Referenced by getHxSize(), getValidDetIds(), and sizeForDenseIndex().

39  {
40  // this must test the last record filled to avoid a race condition
41  if(!m_emptyIds.isSet()) {
42  std::unique_ptr<std::vector<DetId>> p_hbIds{new std::vector<DetId>};
43  std::unique_ptr<std::vector<DetId>> p_heIds{new std::vector<DetId>};
44  std::unique_ptr<std::vector<DetId>> p_hoIds{new std::vector<DetId>};
45  std::unique_ptr<std::vector<DetId>> p_hfIds{new std::vector<DetId>};
46  std::unique_ptr<std::vector<DetId>> p_emptyIds{new std::vector<DetId>};
47 
48  const std::vector<DetId>& baseIds (CaloSubdetectorGeometry::getValidDetIds());
49  for (unsigned int i ( 0 ) ; i != baseIds.size() ; ++i) {
50  const DetId id ( baseIds[i] );
51  if (id.subdetId() == HcalBarrel) {
52  p_hbIds->emplace_back( id ) ;
53  } else if (id.subdetId() == HcalEndcap) {
54  p_heIds->emplace_back( id ) ;
55  } else if (id.subdetId() == HcalOuter) {
56  p_hoIds->emplace_back( id ) ;
57  } else if (id.subdetId() == HcalForward) {
58  p_hfIds->emplace_back( id ) ;
59  }
60  }
61  std::sort( p_hbIds->begin(), p_hbIds->end() ) ;
62  std::sort( p_heIds->begin(), p_heIds->end() ) ;
63  std::sort( p_hoIds->begin(), p_hoIds->end() ) ;
64  std::sort( p_hfIds->begin(), p_hfIds->end() ) ;
65  p_emptyIds->resize( 0 ) ;
66 
67  m_hbIds.set(std::move(p_hbIds));
68  m_heIds.set(std::move(p_heIds));
69  m_hoIds.set(std::move(p_hoIds));
70  m_hfIds.set(std::move(p_hfIds));
71  m_emptyIds.set(std::move(p_emptyIds));
72  }
73 }
edm::AtomicPtrCache< std::vector< DetId > > m_heIds
Definition: HcalGeometry.h:158
edm::AtomicPtrCache< std::vector< DetId > > m_emptyIds
Definition: HcalGeometry.h:161
bool isSet() const
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)
Definition: DetId.h:18
bool set(std::unique_ptr< T > iNewValue) const
edm::AtomicPtrCache< std::vector< DetId > > m_hfIds
Definition: HcalGeometry.h:160
edm::AtomicPtrCache< std::vector< DetId > > m_hoIds
Definition: HcalGeometry.h:159
edm::AtomicPtrCache< std::vector< DetId > > m_hbIds
Definition: HcalGeometry.h:157
def move(src, dest)
Definition: eostools.py:510
GlobalPoint HcalGeometry::getBackPosition ( const DetId id) const

Definition at line 159 of file HcalGeometry.cc.

References getGeometry(), m_mergePosition, m_topology, and HcalTopology::unmergeDepthDetId().

Referenced by numberOfParametersPerShape().

159  {
160  if (!m_mergePosition) {
161  return (getGeometry(id)->getBackPoint());
162  } else {
163  std::vector<HcalDetId> ids;
165  return (getGeometry(ids.back())->getBackPoint());
166  }
167 }
const HcalTopology & m_topology
Definition: HcalGeometry.h:154
bool m_mergePosition
Definition: HcalGeometry.h:155
void unmergeDepthDetId(const HcalDetId &id, std::vector< HcalDetId > &ids) const
Definition: HcalTopology.h:165
const CaloCellGeometry * getGeometry(const DetId &id) const override
Get the cell geometry of a given detector id. Should return false if not found.
Definition: HcalGeometry.h:108
CaloSubdetectorGeometry::DetIdSet HcalGeometry::getCells ( const GlobalPoint r,
double  dR 
) const
overridevirtual

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 194 of file HcalGeometry.cc.

References reco::deltaR2(), PVValHelper::eta, PV3DBase< T, PVType, FrameType >::eta(), HcalTopology::etaMax(), etaRing(), CaloSubdetectorGeometry::getCells(), getGeometry(), CaloCellGeometry::getPosition(), HcalBarrel, HcalEndcap, HcalForward, HcalOuter, M_PI, m_topology, HcalTopology::maxDepth(), AlCaHLTBitMon_ParallelJobs::p, phi, PV3DBase< T, PVType, FrameType >::phi(), phiBin(), Validation_hcalonly_cfi::sign, and HcalTopology::valid().

Referenced by numberOfParametersPerShape().

195  {
196  CaloSubdetectorGeometry::DetIdSet dis; // this is the return object
197 
198  if (0.000001 < dR) {
199  if (dR > M_PI/2.) {// this version needs "small" dR
200  dis = CaloSubdetectorGeometry::getCells(r, dR); // base class version
201  } else {
202  const double dR2 ( dR*dR ) ;
203  const double reta ( r.eta() ) ;
204  const double rphi ( r.phi() ) ;
205  const double lowEta ( reta - dR ) ;
206  const double highEta ( reta + dR ) ;
207  const double lowPhi ( rphi - dR ) ;
208  const double highPhi ( rphi + dR ) ;
209 
210  const double hfEtaHi (m_topology.etaMax(HcalForward));
211 
212  if (highEta > -hfEtaHi &&
213  lowEta < hfEtaHi ) { // in hcal
215 
216  for (unsigned int is ( 0 ) ; is != 4 ; ++is ) {
217  const int sign ( reta>0 ? 1 : -1 ) ;
218  const int ieta_center ( sign*etaRing( hs[is], fabs( reta ) ) ) ;
219  const int ieta_lo ( ( 0 < lowEta*sign ? sign : -sign )*etaRing( hs[is], fabs( lowEta ) ) ) ;
220  const int ieta_hi ( ( 0 < highEta*sign ? sign : -sign )*etaRing( hs[is], fabs( highEta ) ) ) ;
221  const int iphi_lo ( phiBin( hs[is], ieta_center, lowPhi ) ) ;
222  const int iphi_hi ( phiBin( hs[is], ieta_center, highPhi ) ) ;
223  const int jphi_lo ( iphi_lo>iphi_hi ? iphi_lo - 72 : iphi_lo ) ;
224  const int jphi_hi ( iphi_hi ) ;
225 
226  const int idep_lo ( 1 == is ? 4 : 1 ) ;
227  const int idep_hi ( m_topology.maxDepth(hs[is]) );
228  for (int ieta ( ieta_lo ) ; ieta <= ieta_hi ; ++ieta) {// over eta limits
229  if (ieta != 0) {
230  for (int jphi ( jphi_lo ) ; jphi <= jphi_hi ; ++jphi) { // over phi limits
231  const int iphi ( 1 > jphi ? jphi+72 : jphi ) ;
232  for (int idep ( idep_lo ) ; idep <= idep_hi ; ++idep ) {
233  const HcalDetId did ( hs[is], ieta, iphi, idep ) ;
234  if (m_topology.valid(did)) {
235  const CaloCellGeometry* cell ( getGeometry( did ) );
236  if (nullptr != cell ) {
237  const GlobalPoint& p ( cell->getPosition() ) ;
238  const double eta ( p.eta() ) ;
239  const double phi ( p.phi() ) ;
240  if (reco::deltaR2(eta, phi, reta, rphi ) < dR2) dis.insert( did ) ;
241  }
242  }
243  }
244  }
245  }
246  }
247  }
248  }
249  }
250  }
251  return dis;
252 }
bool valid(const DetId &id) const override
Geom::Phi< T > phi() const
Definition: PV3DBase.h:69
const HcalTopology & m_topology
Definition: HcalGeometry.h:154
virtual DetIdSet getCells(const GlobalPoint &r, double dR) const
Get a list of all cells within a dR of the given cell.
int maxDepth(HcalSubdetector subdet) const
HcalSubdetector
Definition: HcalAssistant.h:31
int phiBin(HcalSubdetector bc, int etaring, double phi) const
int etaRing(HcalSubdetector bc, double abseta) const
helper methods for getClosestCell
#define M_PI
const CaloCellGeometry * getGeometry(const DetId &id) const override
Get the cell geometry of a given detector id. Should return false if not found.
Definition: HcalGeometry.h:108
T1 deltaR2(T1 eta1, T2 phi1, T3 eta2, T4 phi2)
Definition: deltaR.h:36
T eta() const
Definition: PV3DBase.h:76
double etaMax(HcalSubdetector subdet) const
DetId HcalGeometry::getClosestCell ( const GlobalPoint r) const
overridevirtual

Reimplemented from CaloSubdetectorGeometry.

Definition at line 86 of file HcalGeometry.cc.

References funct::abs(), correctId(), HcalTopology::dddConstants(), PV3DBase< T, PVType, FrameType >::eta(), HcalTopology::etaMax(), etaRing(), getGeometry(), HcalDDDRecConstants::getMinDepth(), CaloCellGeometry::getPosition(), HcalBarrel, HcalEmpty, HcalEndcap, HcalForward, HcalTopology::incrementDepth(), m_topology, PV3DBase< T, PVType, FrameType >::mag(), PV3DBase< T, PVType, FrameType >::phi(), phiBin(), PV3DBase< T, PVType, FrameType >::z(), and HcalDigiParam_cfi::zside.

Referenced by ValidIsoTrkCalib::analyze(), and numberOfParametersPerShape().

86  {
87 
88  // Now find the closest eta_bin, eta value of a bin i is average
89  // of eta[i] and eta[i-1]
90  static const double z_long=1100.0;
91  double abseta = fabs(r.eta());
92  double absz = fabs(r.z());
93 
94  // figure out subdetector, giving preference to HE in HE/HF overlap region
96  if (abseta <= m_topology.etaMax(HcalBarrel) ) {
97  bc = HcalBarrel;
98  } else if (absz >= z_long) {
99  bc = HcalForward;
100  } else if (abseta <= m_topology.etaMax(HcalEndcap) ) {
101  bc = HcalEndcap;
102  } else {
103  bc = HcalForward;
104  }
105 
106  // find eta bin
107  int etaring = etaRing(bc, abseta);
108 
109  int phibin = phiBin(bc, etaring, r.phi());
110 
111  // add a sign to the etaring
112  int etabin = (r.z() > 0) ? etaring : -etaring;
113 
114  if (bc == HcalForward) {
115  static const double z_short=1137.0;
116  // Next line is premature depth 1 and 2 can coexist for large z-extent
117  // HcalDetId bestId(bc,etabin,phibin,((fabs(r.z())>=z_short)?(2):(1)));
118  // above line is no good with finite precision
119  HcalDetId bestId(bc,etabin,phibin,((fabs(r.z()) - z_short >-0.1)?(2):(1)));
120  return correctId(bestId);
121  } else {
122 
123  //Now do depth if required
124  int zside = (r.z() > 0) ? 1 : -1;
125  int dbin = m_topology.dddConstants()->getMinDepth(((int)(bc)-1),etaring,phibin,zside);
126  double pointrz(0), drz(99999.);
127  HcalDetId currentId(bc, etabin, phibin, dbin);
128  if (bc == HcalBarrel) pointrz = r.mag();
129  else pointrz = std::abs(r.z());
130  HcalDetId bestId;
131  for ( ; currentId != HcalDetId(); m_topology.incrementDepth(currentId)) {
132  const CaloCellGeometry * cell = getGeometry(currentId);
133  if (cell == nullptr) {
134  assert (bestId != HcalDetId());
135  break;
136  } else {
137  double rz;
138  if (bc == HcalEndcap) rz = std::abs(cell->getPosition().z());
139  else rz = cell->getPosition().mag();
140  if (std::abs(pointrz-rz)<drz) {
141  bestId = currentId;
142  drz = std::abs(pointrz-rz);
143  }
144  }
145  }
146 
147  return correctId(bestId);
148  }
149 }
const HcalDDDRecConstants * dddConstants() const
Definition: HcalTopology.h:161
virtual const GlobalPoint & getPosition() const
Returns the position of reference for this cell.
Geom::Phi< T > phi() const
Definition: PV3DBase.h:69
const HcalTopology & m_topology
Definition: HcalGeometry.h:154
T mag() const
Definition: PV3DBase.h:67
int getMinDepth(const int &itype, const int &ieta, const int &iphi, const int &zside) const
DetId correctId(const DetId &id) const
T z() const
Definition: PV3DBase.h:64
HcalSubdetector
Definition: HcalAssistant.h:31
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
int phiBin(HcalSubdetector bc, int etaring, double phi) const
int etaRing(HcalSubdetector bc, double abseta) const
helper methods for getClosestCell
bool incrementDepth(HcalDetId &id) const
const CaloCellGeometry * getGeometry(const DetId &id) const override
Get the cell geometry of a given detector id. Should return false if not found.
Definition: HcalGeometry.h:108
T eta() const
Definition: PV3DBase.h:76
double etaMax(HcalSubdetector subdet) const
CaloCellGeometry::CornersVec HcalGeometry::getCorners ( const DetId id) const

Definition at line 169 of file HcalGeometry.cc.

References getGeometry(), gen::k, m_mergePosition, m_topology, and HcalTopology::unmergeDepthDetId().

Referenced by numberOfParametersPerShape().

169  {
170  if (!m_mergePosition) {
171  return (getGeometry(id)->getCorners());
172  } else {
173  std::vector<HcalDetId> ids;
178  for (unsigned int k=0; k<4; ++k) {
179  mcorners[k] = mcf[k];
180  mcorners[k+4] = mcb[k+4];
181  }
182  return mcorners;
183  }
184 }
const HcalTopology & m_topology
Definition: HcalGeometry.h:154
bool m_mergePosition
Definition: HcalGeometry.h:155
void unmergeDepthDetId(const HcalDetId &id, std::vector< HcalDetId > &ids) const
Definition: HcalTopology.h:165
int k[5][pyjets_maxn]
const CaloCellGeometry * getGeometry(const DetId &id) const override
Get the cell geometry of a given detector id. Should return false if not found.
Definition: HcalGeometry.h:108
CaloCellGeometry::CornersVec getCorners(const DetId &id) const
const CaloCellGeometry* HcalGeometry::getGeometry ( const DetId id) const
inlineoverridevirtual

Get the cell geometry of a given detector id. Should return false if not found.

Reimplemented from CaloSubdetectorGeometry.

Definition at line 108 of file HcalGeometry.h.

References cellGeomPtr(), HcalTopology::detId2denseId(), getSummary(), and m_topology.

Referenced by getBackPosition(), getCells(), getClosestCell(), getCorners(), and getPosition().

108  {
109  return cellGeomPtr( m_topology.detId2denseId( id ) ) ;
110  }
unsigned int detId2denseId(const DetId &id) const override
return a linear packed id
const HcalTopology & m_topology
Definition: HcalGeometry.h:154
const CaloCellGeometry * cellGeomPtr(unsigned int index) const override
unsigned int HcalGeometry::getHxSize ( const int  type) const

Definition at line 254 of file HcalGeometry.cc.

References fillDetIds(), edm::AtomicPtrCache< T >::isSet(), m_emptyIds, m_hbIds, m_heIds, m_hfIds, and m_hoIds.

Referenced by HcalRecHitsAnalyzer::dqmBeginRun(), HcalDigisValidation::dqmBeginRun(), and numberOfOuterAlignments().

254  {
255  unsigned int hxsize(0);
256  if (!m_hbIds.isSet()) fillDetIds();
257  if (type == 1) hxsize = (m_hbIds.isSet()) ? m_hbIds->size() : 0;
258  else if (type == 2) hxsize = (m_heIds.isSet()) ? m_heIds->size() : 0;
259  else if (type == 3) hxsize = (m_hoIds.isSet()) ? m_hoIds->size() : 0;
260  else if (type == 4) hxsize = (m_hfIds.isSet()) ? m_hfIds->size() : 0;
261  else if (type == 0) hxsize = (m_emptyIds.isSet()) ? m_emptyIds->size() : 0;
262  return hxsize;
263 }
type
Definition: HCALResponse.h:21
edm::AtomicPtrCache< std::vector< DetId > > m_heIds
Definition: HcalGeometry.h:158
edm::AtomicPtrCache< std::vector< DetId > > m_emptyIds
Definition: HcalGeometry.h:161
bool isSet() const
edm::AtomicPtrCache< std::vector< DetId > > m_hfIds
Definition: HcalGeometry.h:160
void fillDetIds() const
Definition: HcalGeometry.cc:39
edm::AtomicPtrCache< std::vector< DetId > > m_hoIds
Definition: HcalGeometry.h:159
edm::AtomicPtrCache< std::vector< DetId > > m_hbIds
Definition: HcalGeometry.h:157
GlobalPoint HcalGeometry::getPosition ( const DetId id) const

Definition at line 151 of file HcalGeometry.cc.

References getGeometry(), HcalTopology::idFront(), m_mergePosition, and m_topology.

Referenced by HcalRecHitsValidation::analyze(), HGCalTriggerNtupleHGCDigis::fill(), HCALRecHitAnalyzer::FillGeometry(), GlobalRecHitsAnalyzer::fillHCal(), GlobalRecHitsProducer::fillHCal(), HGCalTriggerGeometryHexLayerBasedImp1::getModulePosition(), HcalHaloAlgo::getPosition(), HGCalTriggerGeometryHexLayerBasedImp1::getTriggerCellPosition(), and numberOfParametersPerShape().

151  {
152  if (!m_mergePosition) {
153  return (getGeometry(id)->getPosition());
154  } else {
155  return (getGeometry(m_topology.idFront(id))->getPosition());
156  }
157 }
const HcalTopology & m_topology
Definition: HcalGeometry.h:154
bool m_mergePosition
Definition: HcalGeometry.h:155
GlobalPoint getPosition(const DetId &id) const
const CaloCellGeometry * getGeometry(const DetId &id) const override
Get the cell geometry of a given detector id. Should return false if not found.
Definition: HcalGeometry.h:108
HcalDetId idFront(const HcalDetId &id) const
Definition: HcalTopology.h:170
void HcalGeometry::getSummary ( CaloSubdetectorGeometry::TrVec trVector,
CaloSubdetectorGeometry::IVec iVector,
CaloSubdetectorGeometry::DimVec dimVector,
CaloSubdetectorGeometry::IVec dinsVector 
) const
overridevirtual

Reimplemented from CaloSubdetectorGeometry.

Definition at line 473 of file HcalGeometry.cc.

References begin, cellGeomPtr(), CaloCellGeometry::getPosition(), CaloCellGeometry::getTransform(), runTauDisplay::gp, mps_fire::i, gen::k, m_dins, m_topology, HcalTopology::ncells(), groupFilesInBlocks::nn, numberOfParametersPerShape(), numberOfShapes(), CaloSubdetectorGeometry::numberOfTransformParms(), convertSQLiteXML::ok, CaloCellGeometry::param(), CaloSubdetectorGeometry::parVecVec(), MetAnalyzer::pv(), findQualityFiles::rr, and groupFilesInBlocks::tt.

Referenced by getGeometry().

476  {
477 
478  tVec.reserve( m_topology.ncells()*numberOfTransformParms());
479  iVec.reserve( numberOfShapes()==1 ? 1 : m_topology.ncells());
480  dVec.reserve( numberOfShapes()*numberOfParametersPerShape());
481  dinsVec.reserve( m_topology.ncells());
482 
483  for (const auto & pv : parVecVec()) {
484  for (float iv : pv) {
485  dVec.emplace_back( iv ) ;
486  }
487  }
488 
489  for( auto i : m_dins ) {
490  Tr3D tr ;
491  const CaloCellGeometry* ptr ( cellGeomPtr( i ) ) ;
492 
493  if (nullptr != ptr) {
494  dinsVec.emplace_back( i );
495 
496  const CCGFloat* par ( ptr->param() ) ;
497 
498  unsigned int ishape ( 9999 ) ;
499 
500  for( unsigned int ivv ( 0 ) ; ivv != parVecVec().size() ; ++ivv ) {
501  bool ok ( true ) ;
502  const CCGFloat* pv ( &(*parVecVec()[ivv].begin() ) ) ;
503  for( unsigned int k ( 0 ) ; k != numberOfParametersPerShape() ; ++k ) {
504  ok = ok && ( fabs( par[k] - pv[k] ) < 1.e-6 ) ;
505  }
506  if( ok ) {
507  ishape = ivv;
508  break ;
509  }
510  }
511  assert( 9999 != ishape ) ;
512 
513  const unsigned int nn (( numberOfShapes()==1) ? (unsigned int)1 : m_dins.size() ) ;
514  if( iVec.size() < nn ) iVec.emplace_back( ishape ) ;
515 
516  ptr->getTransform( tr, ( Pt3DVec* ) nullptr ) ;
517 
518  if( Tr3D() == tr ) { // for preshower there is no rotation
519  const GlobalPoint& gp ( ptr->getPosition() ) ;
520  tr = HepGeom::Translate3D( gp.x(), gp.y(), gp.z() ) ;
521  }
522 
523  const CLHEP::Hep3Vector tt ( tr.getTranslation() ) ;
524  tVec.emplace_back( tt.x() ) ;
525  tVec.emplace_back( tt.y() ) ;
526  tVec.emplace_back( tt.z() ) ;
527  if (6 == numberOfTransformParms()) {
528  const CLHEP::HepRotation rr ( tr.getRotation() ) ;
529  const ROOT::Math::Transform3D rtr (rr.xx(), rr.xy(), rr.xz(), tt.x(),
530  rr.yx(), rr.yy(), rr.yz(), tt.y(),
531  rr.zx(), rr.zy(), rr.zz(), tt.z());
533  rtr.GetRotation( ea ) ;
534  tVec.emplace_back( ea.Phi() ) ;
535  tVec.emplace_back( ea.Theta() ) ;
536  tVec.emplace_back( ea.Psi() ) ;
537  }
538  }
539  }
540 }
unsigned int numberOfShapes() const override
Definition: HcalGeometry.h:43
const HcalTopology & m_topology
Definition: HcalGeometry.h:154
CaloCellGeometry::Tr3D Tr3D
Definition: HcalGeometry.cc:12
unsigned int numberOfParametersPerShape() const override
Definition: HcalGeometry.h:44
def pv(vc)
Definition: MetAnalyzer.py:6
CaloCellGeometry::CCGFloat CCGFloat
const CaloCellGeometry * cellGeomPtr(unsigned int index) const override
CaloSubdetectorGeometry::IVec m_dins
Definition: HcalGeometry.h:162
int k[5][pyjets_maxn]
AlgebraicVector EulerAngles
Definition: Definitions.h:36
CaloCellGeometry::Pt3DVec Pt3DVec
CaloCellGeometry::Tr3D Tr3D
#define begin
Definition: vmac.h:30
unsigned int ncells() const override
return a count of valid cells (for dense indexing use)
virtual unsigned int numberOfTransformParms() const
const std::vector< DetId > & HcalGeometry::getValidDetIds ( DetId::Detector  det = DetId::Detector ( 0 ),
int  subdet = 0 
) const
overridevirtual

Get a list of valid detector ids (for the given subdetector)

Note
The implementation in this class is relevant for SubdetectorGeometries which handle only a single subdetector at a time. It does not look at the det and subdet arguments.

Reimplemented from CaloSubdetectorGeometry.

Definition at line 76 of file HcalGeometry.cc.

References fillDetIds(), CaloSubdetectorGeometry::getValidDetIds(), HcalBarrel, HcalEndcap, HcalForward, HcalOuter, edm::AtomicPtrCache< T >::load(), m_emptyIds, m_hbIds, m_heIds, m_hfIds, and m_hoIds.

Referenced by HCALRecHitAnalyzer::FillGeometry(), and numberOfParametersPerShape().

77  {
78  if( 0 != subdet ) fillDetIds() ;
79  return ( 0 == subdet ? CaloSubdetectorGeometry::getValidDetIds() :
80  ( HcalBarrel == subdet ? *m_hbIds.load() :
81  ( HcalEndcap == subdet ? *m_heIds.load() :
82  ( HcalOuter == subdet ? *m_hoIds.load() :
83  ( HcalForward == subdet ? *m_hfIds.load() : *m_emptyIds.load() ) ) ) ) ) ;
84 }
edm::AtomicPtrCache< std::vector< DetId > > m_heIds
Definition: HcalGeometry.h:158
edm::AtomicPtrCache< std::vector< DetId > > m_emptyIds
Definition: HcalGeometry.h:161
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)
edm::AtomicPtrCache< std::vector< DetId > > m_hfIds
Definition: HcalGeometry.h:160
void fillDetIds() const
Definition: HcalGeometry.cc:39
edm::AtomicPtrCache< std::vector< DetId > > m_hoIds
Definition: HcalGeometry.h:159
T const * load() const
edm::AtomicPtrCache< std::vector< DetId > > m_hbIds
Definition: HcalGeometry.h:157
void HcalGeometry::increaseReserve ( unsigned int  extra)
private
unsigned int HcalGeometry::indexFor ( const DetId id) const
inlineoverrideprotectedvirtual

Reimplemented from CaloSubdetectorGeometry.

Definition at line 123 of file HcalGeometry.h.

References HcalTopology::detId2denseId(), and m_topology.

123 { return m_topology.detId2denseId(id); }
unsigned int detId2denseId(const DetId &id) const override
return a linear packed id
const HcalTopology & m_topology
Definition: HcalGeometry.h:154
void HcalGeometry::init ( void  )
private

Definition at line 23 of file HcalGeometry.cc.

References gather_cfg::cout, HcalTopology::getHBSize(), HcalTopology::getHESize(), HcalTopology::getHFSize(), HcalTopology::getHOSize(), m_hbCellVec, m_heCellVec, m_hfCellVec, m_hoCellVec, m_mergePosition, m_topology, and HcalTopology::withSpecialRBXHBHE().

Referenced by HcalGeometry(), and sizeForDenseIndex().

23  {
25 #ifdef EDM_ML_DEBUG
26  std::cout << "HcalGeometry: " << "HcalGeometry::init() "
27  << " HBSize " << m_topology.getHBSize()
28  << " HESize " << m_topology.getHESize()
29  << " HOSize " << m_topology.getHOSize()
30  << " HFSize " << m_topology.getHFSize() << std::endl;
31 #endif
32 
37 }
unsigned int getHFSize() const
Definition: HcalTopology.h:135
unsigned int getHOSize() const
Definition: HcalTopology.h:134
const HcalTopology & m_topology
Definition: HcalGeometry.h:154
std::vector< IdealObliquePrism > HECellVec
Definition: HcalGeometry.h:25
bool m_mergePosition
Definition: HcalGeometry.h:155
HBCellVec m_hbCellVec
Definition: HcalGeometry.h:164
HOCellVec m_hoCellVec
Definition: HcalGeometry.h:166
HFCellVec m_hfCellVec
Definition: HcalGeometry.h:167
std::vector< IdealObliquePrism > HOCellVec
Definition: HcalGeometry.h:26
std::vector< IdealZPrism > HFCellVec
Definition: HcalGeometry.h:27
std::vector< IdealObliquePrism > HBCellVec
Definition: HcalGeometry.h:24
unsigned int getHESize() const
Definition: HcalTopology.h:133
HECellVec m_heCellVec
Definition: HcalGeometry.h:165
bool withSpecialRBXHBHE() const
Definition: HcalTopology.h:162
unsigned int getHBSize() const
Definition: HcalTopology.h:132
void HcalGeometry::localCorners ( Pt3DVec lc,
const CCGFloat pv,
unsigned int  i,
Pt3D ref 
)

Definition at line 375 of file HcalGeometry.cc.

References HcalTopology::denseId2detId(), HcalForward, IdealObliquePrism::localCorners(), IdealZPrism::localCorners(), m_topology, and HcalDetId::subdet().

Referenced by numberOfAlignments().

378  {
380 
381  if (hid.subdet() == HcalForward ) {
382  IdealZPrism::localCorners( lc, pv, ref ) ;
383  } else {
384  IdealObliquePrism::localCorners( lc, pv, ref ) ;
385  }
386 }
DetId denseId2detId(unsigned int) const override
return a linear packed id
HcalSubdetector subdet() const
get the subdetector
Definition: HcalDetId.h:49
const HcalTopology & m_topology
Definition: HcalGeometry.h:154
static void localCorners(Pt3DVec &vec, const CCGFloat *pv, Pt3D &ref)
def pv(vc)
Definition: MetAnalyzer.py:6
static void localCorners(Pt3DVec &vec, const CCGFloat *pv, Pt3D &ref)
Definition: IdealZPrism.cc:122
void HcalGeometry::newCell ( const GlobalPoint f1,
const GlobalPoint f2,
const GlobalPoint f3,
const CCGFloat parm,
const DetId detId 
)
overridevirtual

Implements CaloSubdetectorGeometry.

Definition at line 427 of file HcalGeometry.cc.

References CaloSubdetectorGeometry::addValidID(), cropTnPTrees::din, m_dins, and newCellImpl().

Referenced by numberOfAlignments().

431  {
432 
433  unsigned int din = newCellImpl(f1,f2,f3,parm,detId);
434 
435  addValidID( detId ) ;
436  m_dins.emplace_back( din );
437 }
CaloSubdetectorGeometry::IVec m_dins
Definition: HcalGeometry.h:162
void addValidID(const DetId &id)
unsigned int newCellImpl(const GlobalPoint &f1, const GlobalPoint &f2, const GlobalPoint &f3, const CCGFloat *parm, const DetId &detId)
void HcalGeometry::newCellFast ( const GlobalPoint f1,
const GlobalPoint f2,
const GlobalPoint f3,
const CCGFloat parm,
const DetId detId 
)
private

Definition at line 439 of file HcalGeometry.cc.

References cropTnPTrees::din, m_dins, CaloSubdetectorGeometry::m_validIds, and newCellImpl().

Referenced by HcalHardcodeGeometryLoader::fillHBHO(), HcalFlexiHardcodeGeometryLoader::fillHBHO(), HcalHardcodeGeometryLoader::fillHE(), HcalFlexiHardcodeGeometryLoader::fillHE(), HcalHardcodeGeometryLoader::fillHF(), HcalFlexiHardcodeGeometryLoader::fillHF(), and sizeForDenseIndex().

443  {
444 
445  unsigned int din = newCellImpl(f1,f2,f3,parm,detId);
446 
447  m_validIds.emplace_back( detId ) ;
448  m_dins.emplace_back( din );
449 }
std::vector< DetId > m_validIds
CaloSubdetectorGeometry::IVec m_dins
Definition: HcalGeometry.h:162
unsigned int newCellImpl(const GlobalPoint &f1, const GlobalPoint &f2, const GlobalPoint &f3, const CCGFloat *parm, const DetId &detId)
unsigned int HcalGeometry::newCellImpl ( const GlobalPoint f1,
const GlobalPoint f2,
const GlobalPoint f3,
const CCGFloat parm,
const DetId detId 
)
private

Definition at line 388 of file HcalGeometry.cc.

References CaloSubdetectorGeometry::cornersMgr(), gather_cfg::cout, DetId::det(), HcalTopology::detId2denseId(), cropTnPTrees::din, IdealZPrism::EM, IdealZPrism::HADR, DetId::Hcal, HcalBarrel, HcalEndcap, HcalOuter, diffTreeTool::index, m_hbCellVec, m_heCellVec, m_hfCellVec, m_hoCellVec, m_topology, DetId::rawId(), and DetId::subdetId().

Referenced by newCell(), newCellFast(), and sizeForDenseIndex().

392  {
393 
394  assert (detId.det()==DetId::Hcal);
395 
396  const HcalDetId hid ( detId ) ;
397  unsigned int din=m_topology.detId2denseId(detId);
398 
399 #ifdef EDM_ML_DEBUG
400  std::cout << "HcalGeometry: " << " newCell subdet "
401  << detId.subdetId() << ", raw ID "
402  << detId.rawId() << ", hid " << hid << ", din "
403  << din << ", index " << std::endl;
404 #endif
405 
406  if (hid.subdet()==HcalBarrel) {
407  m_hbCellVec.at( din ) = IdealObliquePrism( f1, cornersMgr(), parm ) ;
408  } else if (hid.subdet()==HcalEndcap) {
409  const unsigned int index ( din - m_hbCellVec.size() ) ;
410  m_heCellVec.at( index ) = IdealObliquePrism( f1, cornersMgr(), parm ) ;
411  } else if (hid.subdet()==HcalOuter) {
412  const unsigned int index ( din
413  - m_hbCellVec.size()
414  - m_heCellVec.size() ) ;
415  m_hoCellVec.at( index ) = IdealObliquePrism( f1, cornersMgr(), parm ) ;
416  } else {
417  const unsigned int index ( din
418  - m_hbCellVec.size()
419  - m_heCellVec.size()
420  - m_hoCellVec.size() ) ;
421  m_hfCellVec.at( index ) = IdealZPrism( f1, cornersMgr(), parm, hid.depth()==1 ? IdealZPrism::EM : IdealZPrism::HADR ) ;
422  }
423 
424  return din;
425 }
unsigned int detId2denseId(const DetId &id) const override
return a linear packed id
const HcalTopology & m_topology
Definition: HcalGeometry.h:154
uint32_t rawId() const
get the raw id
Definition: DetId.h:43
HBCellVec m_hbCellVec
Definition: HcalGeometry.h:164
HOCellVec m_hoCellVec
Definition: HcalGeometry.h:166
HFCellVec m_hfCellVec
Definition: HcalGeometry.h:167
int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:37
CaloCellGeometry::CornersMgr * cornersMgr()
HECellVec m_heCellVec
Definition: HcalGeometry.h:165
Detector det() const
get the detector field from this detid
Definition: DetId.h:35
static unsigned int HcalGeometry::numberOfAlignments ( )
inlinestatic
static unsigned int HcalGeometry::numberOfBarrelAlignments ( )
inlinestatic
static unsigned int HcalGeometry::numberOfEndcapAlignments ( )
inlinestatic
static unsigned int HcalGeometry::numberOfForwardAlignments ( )
inlinestatic
static unsigned int HcalGeometry::numberOfOuterAlignments ( )
inlinestatic
unsigned int HcalGeometry::numberOfParametersPerShape ( ) const
inlineoverridevirtual
unsigned int HcalGeometry::numberOfShapes ( ) const
inlineoverridevirtual

Reimplemented from CaloSubdetectorGeometry.

Definition at line 43 of file HcalGeometry.h.

References HcalTopology::getNumberOfShapes(), and m_topology.

Referenced by getSummary(), HcalHardcodeGeometryLoader::load(), and HcalFlexiHardcodeGeometryLoader::load().

43 { return m_topology.getNumberOfShapes() ; }
const HcalTopology & m_topology
Definition: HcalGeometry.h:154
unsigned int getNumberOfShapes() const
Definition: HcalTopology.h:158
int HcalGeometry::phiBin ( HcalSubdetector  bc,
int  etaring,
double  phi 
) const
private

Definition at line 190 of file HcalGeometry.cc.

References m_topology, and HcalTopology::phiBin().

Referenced by getCells(), getClosestCell(), and sizeForDenseIndex().

190  {
191  return m_topology.phiBin(bc, etaring, phi);
192 }
int phiBin(HcalSubdetector subdet, int etaRing, double phi) const
const HcalTopology & m_topology
Definition: HcalGeometry.h:154
static std::string HcalGeometry::producerTag ( )
inlinestatic
unsigned int HcalGeometry::sizeForDenseIndex ( const DetId id) const
inlineoverrideprotectedvirtual

Reimplemented from CaloSubdetectorGeometry.

Definition at line 124 of file HcalGeometry.h.

References correctId(), etaRing(), fillDetIds(), increaseReserve(), init(), m_topology, HcalTopology::ncells(), newCellFast(), newCellImpl(), phi, phiBin(), and sortValidIds().

124 { return m_topology.ncells(); }
const HcalTopology & m_topology
Definition: HcalGeometry.h:154
unsigned int ncells() const override
return a count of valid cells (for dense indexing use)
void HcalGeometry::sortValidIds ( )
private

Definition at line 556 of file HcalGeometry.cc.

References CaloSubdetectorGeometry::m_validIds.

Referenced by HcalHardcodeGeometryLoader::load(), HcalFlexiHardcodeGeometryLoader::load(), and sizeForDenseIndex().

556  {
557  std::sort(m_validIds.begin(),m_validIds.end());
558 }
std::vector< DetId > m_validIds
const HcalTopology& HcalGeometry::topology ( ) const
inline

Friends And Related Function Documentation

friend class HcalFlexiHardcodeGeometryLoader
friend

Definition at line 21 of file HcalGeometry.h.

friend class HcalHardcodeGeometryLoader
friend

Definition at line 22 of file HcalGeometry.h.

Member Data Documentation

CaloSubdetectorGeometry::IVec HcalGeometry::m_dins
private

Definition at line 162 of file HcalGeometry.h.

Referenced by getSummary(), newCell(), and newCellFast().

edm::AtomicPtrCache<std::vector<DetId> > HcalGeometry::m_emptyIds
mutableprivate

Definition at line 161 of file HcalGeometry.h.

Referenced by fillDetIds(), getHxSize(), and getValidDetIds().

HBCellVec HcalGeometry::m_hbCellVec
private

Definition at line 164 of file HcalGeometry.h.

Referenced by cellGeomPtr(), init(), and newCellImpl().

edm::AtomicPtrCache<std::vector<DetId> > HcalGeometry::m_hbIds
mutableprivate

Definition at line 157 of file HcalGeometry.h.

Referenced by fillDetIds(), getHxSize(), and getValidDetIds().

HECellVec HcalGeometry::m_heCellVec
private

Definition at line 165 of file HcalGeometry.h.

Referenced by cellGeomPtr(), init(), and newCellImpl().

edm::AtomicPtrCache<std::vector<DetId> > HcalGeometry::m_heIds
mutableprivate

Definition at line 158 of file HcalGeometry.h.

Referenced by fillDetIds(), getHxSize(), and getValidDetIds().

HFCellVec HcalGeometry::m_hfCellVec
private

Definition at line 167 of file HcalGeometry.h.

Referenced by cellGeomPtr(), init(), and newCellImpl().

edm::AtomicPtrCache<std::vector<DetId> > HcalGeometry::m_hfIds
mutableprivate

Definition at line 160 of file HcalGeometry.h.

Referenced by fillDetIds(), getHxSize(), and getValidDetIds().

HOCellVec HcalGeometry::m_hoCellVec
private

Definition at line 166 of file HcalGeometry.h.

Referenced by cellGeomPtr(), init(), and newCellImpl().

edm::AtomicPtrCache<std::vector<DetId> > HcalGeometry::m_hoIds
mutableprivate

Definition at line 159 of file HcalGeometry.h.

Referenced by fillDetIds(), getHxSize(), and getValidDetIds().

bool HcalGeometry::m_mergePosition
private

Definition at line 155 of file HcalGeometry.h.

Referenced by correctId(), getBackPosition(), getCorners(), getPosition(), and init().

const HcalTopology& HcalGeometry::m_topology
private