CMS 3D CMS Logo

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

#include <SimG4CMS/HcalTestBeam/interface/HcalTB02HcalNumberingScheme.h>

Inheritance diagram for HcalTB02HcalNumberingScheme:
HcalTB02NumberingScheme

Public Member Functions

int getetaID (int sID) const
 
int getetaScaleF () const
 
int getlayerID (int sID) const
 
int getphiID (int sID) const
 
int getphiScaleF () const
 
int getUnitID (const G4Step *aStep) const override
 
 HcalTB02HcalNumberingScheme ()
 
 ~HcalTB02HcalNumberingScheme () override
 
- Public Member Functions inherited from HcalTB02NumberingScheme
 HcalTB02NumberingScheme ()
 
virtual ~HcalTB02NumberingScheme ()
 

Private Attributes

int etaScale
 
int phiScale
 

Detailed Description

Description: Numbering scheme for hadron calorimeter in 2002 test beam

Usage: Sets up unique identifier for HB towers in 2002 test beam

Definition at line 24 of file HcalTB02HcalNumberingScheme.h.

Constructor & Destructor Documentation

◆ HcalTB02HcalNumberingScheme()

HcalTB02HcalNumberingScheme::HcalTB02HcalNumberingScheme ( )

Definition at line 28 of file HcalTB02HcalNumberingScheme.cc.

29  : HcalTB02NumberingScheme(), phiScale(1000000), etaScale(10000) {
30  edm::LogVerbatim("HcalTBSim") << "Creating HcalTB02HcalNumberingScheme";
31 }
Log< level::Info, true > LogVerbatim

◆ ~HcalTB02HcalNumberingScheme()

HcalTB02HcalNumberingScheme::~HcalTB02HcalNumberingScheme ( )
override

Definition at line 33 of file HcalTB02HcalNumberingScheme.cc.

33  {
34 #ifdef EDM_ML_DEBUG
35  edm::LogVerbatim("HcalTBSim") << "Deleting HcalTB02HcalNumberingScheme";
36 #endif
37 }
Log< level::Info, true > LogVerbatim

Member Function Documentation

◆ getetaID()

int HcalTB02HcalNumberingScheme::getetaID ( int  sID) const

Definition at line 111 of file HcalTB02HcalNumberingScheme.cc.

References funct::abs(), printConversionInfo::aux, etaScale, createfilelist::int, and phiScale.

111  {
112  sID = std::abs(sID);
113  int aux = sID - int(float(sID) / float(phiScale)) * phiScale;
114  int etaID = int(float(aux) / float(etaScale));
115 
116 #ifdef EDM_ML_DEBUG
117  edm::LogVerbatim("HcalTBSim") << "HcalTB02HcalNumberingScheme:: scintID " << sID << " eta = " << etaID;
118 #endif
119  return etaID;
120 }
Log< level::Info, true > LogVerbatim
Abs< T >::type abs(const T &t)
Definition: Abs.h:22

◆ getetaScaleF()

int HcalTB02HcalNumberingScheme::getetaScaleF ( ) const
inline

Definition at line 31 of file HcalTB02HcalNumberingScheme.h.

References etaScale.

◆ getlayerID()

int HcalTB02HcalNumberingScheme::getlayerID ( int  sID) const

Definition at line 82 of file HcalTB02HcalNumberingScheme.cc.

References funct::abs(), etaScale, and createfilelist::int.

82  {
83  sID = std::abs(sID);
84  int layerID = sID;
85  if ((layerID != 17) && (layerID != 18))
86  layerID = sID - int(float(sID) / float(etaScale)) * etaScale;
87 
88 #ifdef EDM_ML_DEBUG
89  edm::LogVerbatim("HcalTBSim") << "HcalTB02HcalNumberingScheme:: scintID " << sID << " layer = " << layerID;
90 #endif
91  return layerID;
92 }
Log< level::Info, true > LogVerbatim
Abs< T >::type abs(const T &t)
Definition: Abs.h:22

◆ getphiID()

int HcalTB02HcalNumberingScheme::getphiID ( int  sID) const

Definition at line 94 of file HcalTB02HcalNumberingScheme.cc.

References funct::abs(), createfilelist::int, and phiScale.

94  {
95  float IDsign = 1.;
96  if (sID < 0)
97  IDsign = -1;
98  sID = std::abs(sID);
99  int phiID = int(float(sID) / float(phiScale));
100 #ifdef EDM_ML_DEBUG
101  edm::LogVerbatim("HcalTBSim") << "HcalTB02HcalNumberingScheme:: scintID " << sID << " phi = " << phiID;
102 #endif
103  if (IDsign > 0) {
104  phiID += 4;
105  } else {
106  phiID = std::abs(phiID - 3);
107  }
108  return phiID;
109 }
Log< level::Info, true > LogVerbatim
Abs< T >::type abs(const T &t)
Definition: Abs.h:22

◆ getphiScaleF()

int HcalTB02HcalNumberingScheme::getphiScaleF ( ) const
inline

Definition at line 30 of file HcalTB02HcalNumberingScheme.h.

References phiScale.

◆ getUnitID()

int HcalTB02HcalNumberingScheme::getUnitID ( const G4Step *  aStep) const
overridevirtual

Implements HcalTB02NumberingScheme.

Definition at line 43 of file HcalTB02HcalNumberingScheme.cc.

References PVValHelper::eta, etaScale, createfilelist::int, CrabHelper::log, visualization-live-secondInstance_cfg::m, WZElectronSkims53X_cff::max, SiStripPI::min, phi, phiScale, funct::pow(), funct::sin(), mathSSE::sqrt(), and funct::tan().

43  {
44  G4StepPoint* preStepPoint = aStep->GetPreStepPoint();
45  const G4ThreeVector& hitPoint = preStepPoint->GetPosition();
46  float hx = hitPoint.x();
47  float hy = hitPoint.y();
48  float hr = std::sqrt(pow(hx, 2) + pow(hy, 2));
49 
50  // Check if hit happened in first HO layer or second.
51 
52  if ((hr > 3. * m) && (hr < 3.830 * m))
53  return 17;
54  if (hr > 3.830 * m)
55  return 18;
56 
57  // Compute the scintID in the HB.
58  int scintID = 0;
59  float hz = hitPoint.z();
60  float hR = hitPoint.mag(); //sqrt( pow(hx,2)+pow(hy,2)+pow(hz,2) );
61  float htheta = (hR == 0. ? 0. : acos(std::max(std::min(hz / hR, float(1.)), float(-1.))));
62  float hsintheta = sin(htheta);
63  float hphi = (hR * hsintheta == 0. ? 0. : acos(std::max(std::min(hx / (hR * hsintheta), float(1.)), float(-1.))));
64  float heta = (std::fabs(hsintheta) == 1. ? 0. : -std::log(std::fabs(tan(htheta / 2.))));
65  int eta = int(heta / 0.087);
66  int phi = int(hphi / (5. * degree));
67 
68  G4VPhysicalVolume* thePV = preStepPoint->GetPhysicalVolume();
69  int ilayer = ((thePV->GetCopyNo()) / 10) % 100;
70 #ifdef EDM_ML_DEBUG
71  edm::LogVerbatim("HcalTBSim") << "HcalTB02HcalNumberingScheme:: Layer " << thePV->GetName()
72  << " found at phi = " << phi << " eta = " << eta << " lay = " << thePV->GetCopyNo()
73  << " " << ilayer;
74 #endif
75  scintID = phiScale * phi + etaScale * eta + ilayer;
76  if (hy < 0.)
77  scintID = -scintID;
78 
79  return scintID;
80 }
Log< level::Info, true > LogVerbatim
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
T sqrt(T t)
Definition: SSEVec.h:23
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:29

Member Data Documentation

◆ etaScale

int HcalTB02HcalNumberingScheme::etaScale
private

Definition at line 39 of file HcalTB02HcalNumberingScheme.h.

Referenced by getetaID(), getetaScaleF(), getlayerID(), and getUnitID().

◆ phiScale

int HcalTB02HcalNumberingScheme::phiScale
private

Definition at line 38 of file HcalTB02HcalNumberingScheme.h.

Referenced by getetaID(), getphiID(), getphiScaleF(), and getUnitID().