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
 
virtual CaloSubdetectorGeometry::DetIdSet getCells (const GlobalPoint &r, double dR) const
 Get a list of all cells within a dR of the given cell. More...
 
virtual DetId getClosestCell (const GlobalPoint &r) const
 
CaloCellGeometry::CornersVec getCorners (const DetId &id) const
 
virtual const CaloCellGeometrygetGeometry (const DetId &id) const
 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
 
virtual void getSummary (CaloSubdetectorGeometry::TrVec &trVector, CaloSubdetectorGeometry::IVec &iVector, CaloSubdetectorGeometry::DimVec &dimVector, CaloSubdetectorGeometry::IVec &dinsVector) 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) More...
 
 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
 
const HcalTopologytopology () const
 
virtual ~HcalGeometry ()
 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 ()
 
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
 
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

virtual const CaloCellGeometrycellGeomPtr (unsigned int index) const
 
virtual unsigned int indexFor (const DetId &id) const
 
virtual unsigned int sizeForDenseIndex (const DetId &id) const
 
- 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 ( )
virtual

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

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

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

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

Definition at line 320 of file HcalGeometry.cc.

References alignmentBarEndForIndexLocal(), and numberOfBarrelAlignments().

Referenced by alignmentTransformIndexLocal(), and numberOfAlignments().

320  {
322 }
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 324 of file HcalGeometry.cc.

References alignmentBarEndForIndexLocal(), and numberOfEndcapAlignments().

Referenced by alignmentTransformIndexLocal(), and numberOfAlignments().

324  {
326 }
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 328 of file HcalGeometry.cc.

References alignmentBarEndForIndexLocal(), and numberOfForwardAlignments().

Referenced by alignmentTransformIndexLocal(), and numberOfAlignments().

328  {
330 }
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 332 of file HcalGeometry.cc.

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

Referenced by alignmentTransformIndexLocal(), and numberOfAlignments().

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

Definition at line 370 of file HcalGeometry.cc.

References DetId::Hcal.

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

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

Definition at line 346 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().

346  {
347  assert(id.det() == DetId::Hcal) ;
348 
349  const HcalDetId hid ( id ) ;
350  bool isHB = (hid.subdet() == HcalBarrel);
351  bool isHE = (hid.subdet() == HcalEndcap);
352  bool isHF = (hid.subdet() == HcalForward);
353  // bool isHO = (hid.subdet() == HcalOuter);
354 
355  const unsigned int nB ( numberOfBarrelAlignments() ) ;
356  const unsigned int nE ( numberOfEndcapAlignments() ) ;
357  const unsigned int nF ( numberOfForwardAlignments() ) ;
358  // const unsigned int nO ( numberOfOuterAlignments() ) ;
359 
360  const unsigned int index (isHB ? alignmentBarrelIndexLocal(id) :
361  isHE ? alignmentEndcapIndexLocal(id) + nB :
362  isHF ? alignmentForwardIndexLocal( id ) + nB + nE :
363  alignmentOuterIndexLocal(id) + nB + nE + nF
364  );
365 
366  assert( index < numberOfAlignments() ) ;
367  return index ;
368 }
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
protectedvirtual

Definition at line 450 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().

450  {
451  const CaloCellGeometry* cell ( 0 ) ;
452  if( m_hbCellVec.size() > din ) {
453  cell = &m_hbCellVec[ din ] ;
454  } else {
455  if (m_hbCellVec.size() + m_heCellVec.size() > din) {
456  const unsigned int index (din - m_hbCellVec.size() ) ;
457  cell = &m_heCellVec[ index ] ;
458  } else if (m_hbCellVec.size()+m_heCellVec.size()+m_hoCellVec.size() > din) {
459  const unsigned int index (din - m_hbCellVec.size() - m_heCellVec.size());
460  cell = &m_hoCellVec[ index ] ;
461  } else if (m_hbCellVec.size() + m_heCellVec.size() + m_hoCellVec.size() +
462  m_hfCellVec.size() > din) {
463  const unsigned int index (din - m_hbCellVec.size() - m_heCellVec.size() -
464  m_hoCellVec.size() ) ;
465  cell = &m_hfCellVec[ index ] ;
466  }
467  }
468 
469  return (( 0 == cell || 0 == cell->param()) ? 0 : cell ) ;
470 }
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 543 of file HcalGeometry.cc.

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

Referenced by getClosestCell(), and sizeForDenseIndex().

543  {
544 
545  if (m_mergePosition) {
546  HcalDetId hid(id);
547  return ((DetId)(m_topology.mergedDepthDetId(hid)));
548  } else {
549  return id;
550  }
551 }
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 264 of file HcalGeometry.cc.

References HcalBarrel, and numberOfBarrelAlignments().

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

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

Definition at line 271 of file HcalGeometry.cc.

References HcalEndcap, and numberOfEndcapAlignments().

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

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

Definition at line 278 of file HcalGeometry.cc.

References HcalForward, and numberOfForwardAlignments().

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

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

Definition at line 296 of file HcalGeometry.cc.

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

Referenced by numberOfAlignments().

296  {
297  assert( i < numberOfAlignments() ) ;
298 
299  const unsigned int nB ( numberOfBarrelAlignments() ) ;
300  const unsigned int nE ( numberOfEndcapAlignments() ) ;
301  const unsigned int nF ( numberOfForwardAlignments() ) ;
302 // const unsigned int nO ( numberOfOuterAlignments() ) ;
303 
304  return ( i < nB ? detIdFromBarrelAlignmentIndex( i ) :
305  i < nB+nE ? detIdFromEndcapAlignmentIndex( i - nB ) :
306  i < nB+nE+nF ? detIdFromForwardAlignmentIndex( i - nB - nE ) :
307  detIdFromOuterAlignmentIndex( i - nB - nE - nF ) ) ;
308 }
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 285 of file HcalGeometry.cc.

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

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

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

helper methods for getClosestCell

Definition at line 185 of file HcalGeometry.cc.

References HcalTopology::etaRing(), and m_topology.

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

185  {
186  return m_topology.etaRing(bc, abseta);
187 }
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  if(!m_emptyIds.isSet()) {
41  std::unique_ptr<std::vector<DetId>> p_hbIds{new std::vector<DetId>};
42  std::unique_ptr<std::vector<DetId>> p_heIds{new std::vector<DetId>};
43  std::unique_ptr<std::vector<DetId>> p_hoIds{new std::vector<DetId>};
44  std::unique_ptr<std::vector<DetId>> p_hfIds{new std::vector<DetId>};
45  std::unique_ptr<std::vector<DetId>> p_emptyIds{new std::vector<DetId>};
46 
47  const std::vector<DetId>& baseIds (CaloSubdetectorGeometry::getValidDetIds());
48  for (unsigned int i ( 0 ) ; i != baseIds.size() ; ++i) {
49  const DetId id ( baseIds[i] );
50  if (id.subdetId() == HcalBarrel) {
51  p_hbIds->push_back( id ) ;
52  } else if (id.subdetId() == HcalEndcap) {
53  p_heIds->push_back( id ) ;
54  } else if (id.subdetId() == HcalOuter) {
55  p_hoIds->push_back( id ) ;
56  } else if (id.subdetId() == HcalForward) {
57  p_hfIds->push_back( id ) ;
58  }
59  }
60  std::sort( p_hbIds->begin(), p_hbIds->end() ) ;
61  std::sort( p_heIds->begin(), p_heIds->end() ) ;
62  std::sort( p_hoIds->begin(), p_hoIds->end() ) ;
63  std::sort( p_hfIds->begin(), p_hfIds->end() ) ;
64  p_emptyIds->resize( 0 ) ;
65 
66  m_hbIds.set(std::move(p_hbIds));
67  m_heIds.set(std::move(p_heIds));
68  m_hoIds.set(std::move(p_hoIds));
69  m_hfIds.set(std::move(p_hfIds));
70  m_emptyIds.set(std::move(p_emptyIds));
71  }
72 }
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 158 of file HcalGeometry.cc.

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

Referenced by numberOfParametersPerShape().

158  {
159  if (!m_mergePosition) {
160  return (getGeometry(id)->getBackPoint());
161  } else {
162  std::vector<HcalDetId> ids;
164  return (getGeometry(ids.back())->getBackPoint());
165  }
166 }
const HcalTopology & m_topology
Definition: HcalGeometry.h:154
virtual const CaloCellGeometry * getGeometry(const DetId &id) const
Get the cell geometry of a given detector id. Should return false if not found.
Definition: HcalGeometry.h:108
bool m_mergePosition
Definition: HcalGeometry.h:155
void unmergeDepthDetId(const HcalDetId &id, std::vector< HcalDetId > &ids) const
Definition: HcalTopology.h:165
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 193 of file HcalGeometry.cc.

References reco::deltaR2(), stringResolutionProvider_cfi::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().

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

Reimplemented from CaloSubdetectorGeometry.

Definition at line 85 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 numberOfParametersPerShape().

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

Definition at line 168 of file HcalGeometry.cc.

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

Referenced by numberOfParametersPerShape().

168  {
169  if (!m_mergePosition) {
170  return (getGeometry(id)->getCorners());
171  } else {
172  std::vector<HcalDetId> ids;
177  for (unsigned int k=0; k<4; ++k) {
178  mcorners[k] = mcf[k];
179  mcorners[k+4] = mcb[k+4];
180  }
181  return mcorners;
182  }
183 }
const HcalTopology & m_topology
Definition: HcalGeometry.h:154
virtual const CaloCellGeometry * getGeometry(const DetId &id) const
Get the cell geometry of a given detector id. Should return false if not found.
Definition: HcalGeometry.h:108
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]
CaloCellGeometry::CornersVec getCorners(const DetId &id) const
virtual const CaloCellGeometry* HcalGeometry::getGeometry ( const DetId id) const
inlinevirtual

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  }
virtual unsigned int detId2denseId(const DetId &id) const
return a linear packed id
const HcalTopology & m_topology
Definition: HcalGeometry.h:154
virtual const CaloCellGeometry * cellGeomPtr(unsigned int index) const
unsigned int HcalGeometry::getHxSize ( const int  type) const

Definition at line 253 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().

253  {
254  unsigned int hxsize(0);
255  if (!m_hbIds.isSet()) fillDetIds();
256  if (type == 1) hxsize = (m_hbIds.isSet()) ? m_hbIds->size() : 0;
257  else if (type == 2) hxsize = (m_heIds.isSet()) ? m_heIds->size() : 0;
258  else if (type == 3) hxsize = (m_hoIds.isSet()) ? m_hoIds->size() : 0;
259  else if (type == 4) hxsize = (m_hfIds.isSet()) ? m_hfIds->size() : 0;
260  else if (type == 0) hxsize = (m_emptyIds.isSet()) ? m_emptyIds->size() : 0;
261  return hxsize;
262 }
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 150 of file HcalGeometry.cc.

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

Referenced by HcalRecHitsValidation::analyze(), HCALRecHitAnalyzer::FillGeometry(), GlobalRecHitsAnalyzer::fillHCal(), GlobalRecHitsProducer::fillHCal(), and numberOfParametersPerShape().

150  {
151  if (!m_mergePosition) {
152  return (getGeometry(id)->getPosition());
153  } else {
154  return (getGeometry(m_topology.idFront(id))->getPosition());
155  }
156 }
const HcalTopology & m_topology
Definition: HcalGeometry.h:154
virtual const CaloCellGeometry * getGeometry(const DetId &id) const
Get the cell geometry of a given detector id. Should return false if not found.
Definition: HcalGeometry.h:108
bool m_mergePosition
Definition: HcalGeometry.h:155
GlobalPoint getPosition(const DetId &id) const
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
virtual

Reimplemented from CaloSubdetectorGeometry.

Definition at line 472 of file HcalGeometry.cc.

References begin, EZArrayFL< T >::begin(), cellGeomPtr(), EZArrayFL< T >::end(), 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().

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

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

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

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

76  {
77  if( 0 != subdet && !m_hbIds.isSet() ) fillDetIds() ;
78  return ( 0 == subdet ? CaloSubdetectorGeometry::getValidDetIds() :
79  ( HcalBarrel == subdet ? *m_hbIds.load() :
80  ( HcalEndcap == subdet ? *m_heIds.load() :
81  ( HcalOuter == subdet ? *m_hoIds.load() :
82  ( HcalForward == subdet ? *m_hfIds.load() : *m_emptyIds.load() ) ) ) ) ) ;
83 }
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)
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
virtual unsigned int HcalGeometry::indexFor ( const DetId id) const
inlineprotectedvirtual

Reimplemented from CaloSubdetectorGeometry.

Definition at line 123 of file HcalGeometry.h.

References HcalTopology::detId2denseId(), and m_topology.

123 { return m_topology.detId2denseId(id); }
virtual unsigned int detId2denseId(const DetId &id) const
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 374 of file HcalGeometry.cc.

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

Referenced by numberOfAlignments().

377  {
379 
380  if (hid.subdet() == HcalForward ) {
381  IdealZPrism::localCorners( lc, pv, ref ) ;
382  } else {
383  IdealObliquePrism::localCorners( lc, pv, ref ) ;
384  }
385 }
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
virtual DetId denseId2detId(unsigned int) const
return a linear packed id
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 
)
virtual

Implements CaloSubdetectorGeometry.

Definition at line 426 of file HcalGeometry.cc.

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

Referenced by numberOfAlignments().

430  {
431 
432  unsigned int din = newCellImpl(f1,f2,f3,parm,detId);
433 
434  addValidID( detId ) ;
435  m_dins.push_back( din );
436 }
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 438 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().

442  {
443 
444  unsigned int din = newCellImpl(f1,f2,f3,parm,detId);
445 
446  m_validIds.push_back( detId ) ;
447  m_dins.push_back( din );
448 }
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 387 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().

391  {
392 
393  assert (detId.det()==DetId::Hcal);
394 
395  const HcalDetId hid ( detId ) ;
396  unsigned int din=m_topology.detId2denseId(detId);
397 
398 #ifdef EDM_ML_DEBUG
399  std::cout << "HcalGeometry: " << " newCell subdet "
400  << detId.subdetId() << ", raw ID "
401  << detId.rawId() << ", hid " << hid << ", din "
402  << din << ", index " << std::endl;
403 #endif
404 
405  if (hid.subdet()==HcalBarrel) {
406  m_hbCellVec.at( din ) = IdealObliquePrism( f1, cornersMgr(), parm ) ;
407  } else if (hid.subdet()==HcalEndcap) {
408  const unsigned int index ( din - m_hbCellVec.size() ) ;
409  m_heCellVec.at( index ) = IdealObliquePrism( f1, cornersMgr(), parm ) ;
410  } else if (hid.subdet()==HcalOuter) {
411  const unsigned int index ( din
412  - m_hbCellVec.size()
413  - m_heCellVec.size() ) ;
414  m_hoCellVec.at( index ) = IdealObliquePrism( f1, cornersMgr(), parm ) ;
415  } else {
416  const unsigned int index ( din
417  - m_hbCellVec.size()
418  - m_heCellVec.size()
419  - m_hoCellVec.size() ) ;
420  m_hfCellVec.at( index ) = IdealZPrism( f1, cornersMgr(), parm, hid.depth()==1 ? IdealZPrism::EM : IdealZPrism::HADR ) ;
421  }
422 
423  return din;
424 }
virtual unsigned int detId2denseId(const DetId &id) const
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
virtual unsigned int HcalGeometry::numberOfParametersPerShape ( ) const
inlinevirtual
virtual unsigned int HcalGeometry::numberOfShapes ( ) const
inlinevirtual

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

References m_topology, and HcalTopology::phiBin().

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

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

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
virtual unsigned int ncells() const
return a count of valid cells (for dense indexing use)
void HcalGeometry::sortValidIds ( )
private

Definition at line 557 of file HcalGeometry.cc.

References CaloSubdetectorGeometry::m_validIds.

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

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

Definition at line 117 of file HcalGeometry.h.

References cellGeomPtr(), diffTreeTool::index, and m_topology.

Referenced by CaloTruthAccumulator::beginLuminosityBlock(), and numberOfParametersPerShape().

117 { return m_topology; }
const HcalTopology & m_topology
Definition: HcalGeometry.h:154

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