CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Private Member Functions | Private Attributes
ZdcHardcodeGeometryLoader Class Reference

#include <ZdcHardcodeGeometryLoader.h>

Public Types

typedef CaloSubdetectorGeometryReturnType
 

Public Member Functions

virtual ReturnType load (DetId::Detector det, int subdet)
 
ReturnType load ()
 
 ZdcHardcodeGeometryLoader ()
 
 ZdcHardcodeGeometryLoader (const ZdcTopology &ht)
 
virtual ~ZdcHardcodeGeometryLoader ()
 

Private Member Functions

void fill (HcalZDCDetId::Section section, CaloSubdetectorGeometry *cg)
 
void init ()
 
void makeCell (const HcalZDCDetId &detId, CaloSubdetectorGeometry *geom) const
 

Private Attributes

const ZdcTopologyextTopology
 
float theEMSectiondX
 
float theEMSectiondY
 
float theEMSectiondZ
 
float theHADSectiondX
 
float theHADSectiondY
 
float theHADSectiondZ
 
float theLUMSectiondX
 
float theLUMSectiondY
 
float theLUMSectiondZ
 
float theRPDSectiondX
 
float theRPDSectiondY
 
float theRPDSectiondZ
 
ZdcTopologytheTopology
 

Detailed Description

Author
E. Garcia - UIC

Definition at line 16 of file ZdcHardcodeGeometryLoader.h.

Member Typedef Documentation

Definition at line 18 of file ZdcHardcodeGeometryLoader.h.

Constructor & Destructor Documentation

ZdcHardcodeGeometryLoader::ZdcHardcodeGeometryLoader ( )
ZdcHardcodeGeometryLoader::ZdcHardcodeGeometryLoader ( const ZdcTopology ht)
explicit

Definition at line 14 of file ZdcHardcodeGeometryLoader.cc.

References init().

virtual ZdcHardcodeGeometryLoader::~ZdcHardcodeGeometryLoader ( )
inlinevirtual

Member Function Documentation

void ZdcHardcodeGeometryLoader::fill ( HcalZDCDetId::Section  section,
CaloSubdetectorGeometry cg 
)
private

Definition at line 40 of file ZdcHardcodeGeometryLoader.cc.

References CaloSubdetectorGeometry::allocateCorners(), CaloSubdetectorGeometry::allocatePar(), CaloSubdetectorGeometry::cornersMgr(), extTopology, ZdcTopology::firstCell(), triggerObjects_cff::id, ZdcGeometry::k_NumberOfParametersPerShape, ZdcGeometry::k_NumberOfShapes, HcalZDCDetId::kSizeForDenseIndexing, ZdcTopology::lastCell(), makeCell(), CaloSubdetectorGeometry::parMgr(), and ZdcTopology::valid().

Referenced by load(), and ~ZdcHardcodeGeometryLoader().

40  {
41  // start by making the new HcalDetIds
42  std::vector<HcalZDCDetId> zdcIds;
44  int firstCell = extTopology->firstCell(section);
45  int lastCell = extTopology->lastCell(section);
46  for (int ichannel = firstCell; ichannel <= lastCell; ++ichannel) {
47  id = HcalZDCDetId(section, true, ichannel);
48  if (extTopology->valid(id))
49  zdcIds.emplace_back(id);
50  id = HcalZDCDetId(section, false, ichannel);
51  if (extTopology->valid(id))
52  zdcIds.emplace_back(id);
53  }
54  if (geom->cornersMgr() == nullptr)
55  geom->allocateCorners(HcalZDCDetId::kSizeForDenseIndexing);
56  if (geom->parMgr() == nullptr)
59 
60  edm::LogInfo("ZdcHardcodeGeometry") << "Number of ZDC DetIds made: " << section << " " << zdcIds.size();
61 
62  // for each new HcalZdcDetId, make a CaloCellGeometry
63 
64  for (std::vector<HcalZDCDetId>::const_iterator zdcIdItr = zdcIds.begin(); zdcIdItr != zdcIds.end(); ++zdcIdItr) {
65  makeCell(*zdcIdItr, geom);
66  }
67 }
void makeCell(const HcalZDCDetId &detId, CaloSubdetectorGeometry *geom) const
virtual bool valid(const HcalZDCDetId &id) const
Definition: ZdcTopology.cc:27
int lastCell(HcalZDCDetId::Section section) const
Definition: ZdcTopology.cc:342
int firstCell(HcalZDCDetId::Section section) const
Definition: ZdcTopology.cc:320
void ZdcHardcodeGeometryLoader::init ( void  )
private

Definition at line 18 of file ZdcHardcodeGeometryLoader.cc.

Referenced by ZdcHardcodeGeometryLoader(), and ~ZdcHardcodeGeometryLoader().

18 {}
ZdcHardcodeGeometryLoader::ReturnType ZdcHardcodeGeometryLoader::load ( DetId::Detector  det,
int  subdet 
)
virtual

Definition at line 20 of file ZdcHardcodeGeometryLoader.cc.

References HcalZDCDetId::EM, extTopology, fill(), HcalZDCDetId::HAD, HcalZDCDetId::LUM, and HcalZDCDetId::SubdetectorId.

Referenced by ZdcHardcodeGeometryEP::produce().

20  {
22  if (subdet == HcalZDCDetId::SubdetectorId) {
26  // fill(HcalZDCDetId::RPD ,hg ); // line will be needed in next version of code, but is commented out for now in order to ensure run1 compatability.
27  }
28  return hg;
29 }
void fill(HcalZDCDetId::Section section, CaloSubdetectorGeometry *cg)
static const int SubdetectorId
Definition: HcalZDCDetId.h:25
CaloSubdetectorGeometry * ReturnType
ZdcHardcodeGeometryLoader::ReturnType ZdcHardcodeGeometryLoader::load ( )

Definition at line 31 of file ZdcHardcodeGeometryLoader.cc.

References HcalZDCDetId::EM, extTopology, fill(), HcalZDCDetId::HAD, and HcalZDCDetId::LUM.

Referenced by ~ZdcHardcodeGeometryLoader().

31  {
36  // fill(HcalZDCDetId::RPD ,hg );
37  return hg;
38 }
void fill(HcalZDCDetId::Section section, CaloSubdetectorGeometry *cg)
CaloSubdetectorGeometry * ReturnType
void ZdcHardcodeGeometryLoader::makeCell ( const HcalZDCDetId detId,
CaloSubdetectorGeometry geom 
) const
private

Definition at line 69 of file ZdcHardcodeGeometryLoader.cc.

References HcalZDCDetId::channel(), funct::cos(), cuy::dh, PVValHelper::dx, PVValHelper::dy, PVValHelper::dz, HcalZDCDetId::EM, benchmark_cfg::fc, CaloCellGeometry::getParmPtr(), HcalZDCDetId::HAD, ZdcGeometry::k_NumberOfParametersPerShape, HcalZDCDetId::LUM, CaloSubdetectorGeometry::newCell(), CaloSubdetectorGeometry::parMgr(), CaloSubdetectorGeometry::parVecVec(), HcalZDCDetId::RPD, HcalZDCDetId::section(), trackingPlots::section, x, y, z, HLTMuonOfflineAnalyzer_cfi::z0, HcalZDCDetId::zside(), ecaldqm::zside(), and geometryCSVtoXML::zz.

Referenced by fill(), and ~ZdcHardcodeGeometryLoader().

69  {
70  double zside(detId.zside());
71 
72  const HcalZDCDetId::Section section(detId.section());
73 
74  const int channel(detId.channel());
75 
76  //********* Here are all the hardcoded numbers you need to know, in **cm**
77  //********* Most are from the zdc.xml and zdclum.xml files ******
78 
79  static const double x0(0); // these 3 are for the "mother" volume
80  static const double y0(0);
81  static const double z0(14000);
82 
83  static const double angEM(0); // the angles of front face wrt vertical
84  static const double angLUM(0);
85  static const double angRPD(0);
86  static const double angHAD(atan(1.)); // this is 45 deg
87 
88  // these dimensions are **half**-sizes
89 
90  static const double dxHAD(4.8);
91  static const double dxEM(dxHAD / 5.);
92  static const double dxLUM(4.8); // to be updated when known
93  static const double dxRPD(4.8); // to be updated when known
94 
95  static const double dhEM(6.25);
96  static const double dhLUM(6.25); // to be updated when known
97  static const double dhHAD(6.25);
98  static const double dhRPD(6.25); // to be updated when known
99 
100  static const double dzEM(33. * 0.15);
101  static const double dzLUM(23.5); // to be updated when known
102  static const double dzHAD(0.82 * 6. / cos(angHAD));
103  static const double dzRPD(23.5); // to be updated when known
104 
105  // these are not half-dimensions, they are offsets from nominal
106  // for the center-of-front-face points
107 
108  static const double xOffEM(-4. * dxEM);
109  static const double xOffLUM(0);
110  static const double xOffHAD(0);
111  static const double xOffRPD(0);
112 
113  static const double yOffEM(0);
114  static const double yOffLUM(0);
115  static const double yOffHAD(0);
116  static const double yOffRPD(0);
117 
118  static const double zOffEM(-49.85 - 0.15);
119  static const double zOffLUM(-39.555);
120  static const double zOffHAD(-29.00);
121  static const double zOffRPD(-39.555);
122 
123  //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
124 
125  double dx, dh, dz, x, y, z, an;
126 
127  if (section == HcalZDCDetId::EM) {
128  dx = dxEM;
129  dh = dhEM;
130  dz = dzEM;
131  an = angEM;
132  x = zside * (x0 + xOffEM + (channel - 1.0) * dxEM * 2.);
133  y = y0 + yOffEM;
134  z = zside * (z0 + zOffEM);
135  } else if (section == HcalZDCDetId::LUM) {
136  dx = dxLUM;
137  dh = dhLUM;
138  dz = dzLUM;
139  an = angLUM;
140  x = zside * (x0 + xOffLUM);
141  y = y0 + yOffLUM;
142  z = zside * (z0 + zOffLUM + (channel - 1.0) * dzLUM * 2.);
143  } else if (section == HcalZDCDetId::RPD) {
144  dx = dxRPD;
145  dh = dhRPD;
146  dz = dzRPD;
147  an = angRPD;
148  x = zside * (x0 + xOffRPD);
149  y = y0 + yOffRPD;
150  z = zside * (z0 + zOffRPD + (channel - 1.0) * dzRPD * 2.);
151  } else {
152  assert(section == HcalZDCDetId::HAD);
153  dx = dxHAD;
154  dh = dhHAD;
155  dz = dzHAD;
156  an = angHAD;
157  x = zside * (x0 + xOffHAD);
158  y = y0 + yOffHAD;
159  z = zside * (z0 + zOffHAD + (channel - 1.0) * dzHAD * 2.);
160  }
161 
162  const GlobalPoint fc(x, y, z);
163 
164  const double dy(dh * cos(an));
165 
166  std::vector<CCGFloat> zz;
168  zz.emplace_back(an);
169  zz.emplace_back(dx);
170  zz.emplace_back(dy);
171  zz.emplace_back(dz);
172 
173  geom->newCell(fc, fc, fc, CaloCellGeometry::getParmPtr(zz, geom->parMgr(), geom->parVecVec()), detId);
174 }
virtual void newCell(const GlobalPoint &f1, const GlobalPoint &f2, const GlobalPoint &f3, const CCGFloat *parm, const DetId &detId)=0
int zside() const
get the z-side of the cell (1/-1)
Definition: HcalZDCDetId.h:39
int zside(DetId const &)
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
static const CCGFloat * getParmPtr(const std::vector< CCGFloat > &vd, ParMgr *mgr, ParVecVec &pvv)
int channel() const
get the channel
Definition: HcalZDCDetId.cc:63
Section section() const
get the section
Definition: HcalZDCDetId.cc:44
dh
Definition: cuy.py:355

Member Data Documentation

const ZdcTopology* ZdcHardcodeGeometryLoader::extTopology
private

Definition at line 33 of file ZdcHardcodeGeometryLoader.h.

Referenced by fill(), and load().

float ZdcHardcodeGeometryLoader::theEMSectiondX
private

Definition at line 35 of file ZdcHardcodeGeometryLoader.h.

float ZdcHardcodeGeometryLoader::theEMSectiondY
private

Definition at line 36 of file ZdcHardcodeGeometryLoader.h.

float ZdcHardcodeGeometryLoader::theEMSectiondZ
private

Definition at line 37 of file ZdcHardcodeGeometryLoader.h.

float ZdcHardcodeGeometryLoader::theHADSectiondX
private

Definition at line 41 of file ZdcHardcodeGeometryLoader.h.

float ZdcHardcodeGeometryLoader::theHADSectiondY
private

Definition at line 42 of file ZdcHardcodeGeometryLoader.h.

float ZdcHardcodeGeometryLoader::theHADSectiondZ
private

Definition at line 43 of file ZdcHardcodeGeometryLoader.h.

float ZdcHardcodeGeometryLoader::theLUMSectiondX
private

Definition at line 38 of file ZdcHardcodeGeometryLoader.h.

float ZdcHardcodeGeometryLoader::theLUMSectiondY
private

Definition at line 39 of file ZdcHardcodeGeometryLoader.h.

float ZdcHardcodeGeometryLoader::theLUMSectiondZ
private

Definition at line 40 of file ZdcHardcodeGeometryLoader.h.

float ZdcHardcodeGeometryLoader::theRPDSectiondX
private

Definition at line 44 of file ZdcHardcodeGeometryLoader.h.

float ZdcHardcodeGeometryLoader::theRPDSectiondY
private

Definition at line 45 of file ZdcHardcodeGeometryLoader.h.

float ZdcHardcodeGeometryLoader::theRPDSectiondZ
private

Definition at line 46 of file ZdcHardcodeGeometryLoader.h.

ZdcTopology* ZdcHardcodeGeometryLoader::theTopology
private

Definition at line 32 of file ZdcHardcodeGeometryLoader.h.

Referenced by ~ZdcHardcodeGeometryLoader().