CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes
HGCalSD Class Reference

#include <HGCalSD.h>

Inheritance diagram for HGCalSD:
CaloSD Observer< const BeginOfJob * > SensitiveCaloDetector Observer< const BeginOfRun * > Observer< const BeginOfEvent * > Observer< const BeginOfTrack * > Observer< const EndOfTrack * > Observer< const EndOfEvent * > SensitiveDetector

Public Member Functions

 HGCalSD (const std::string &, const HGCalDDDConstants *, const SensitiveDetectorCatalog &, edm::ParameterSet const &, const SimTrackManager *)
 
uint32_t setDetUnitId (const G4Step *step) override
 
 ~HGCalSD () override=default
 
- Public Member Functions inherited from CaloSD
 CaloSD (const std::string &aSDname, const SensitiveDetectorCatalog &clg, edm::ParameterSet const &p, const SimTrackManager *, float timeSlice=1., bool ignoreTkID=false)
 
void clear () override
 
void clearHits () override
 
void DrawAll () override
 
void EndOfEvent (G4HCofThisEvent *eventHC) override
 
void fillHits (edm::PCaloHitContainer &, const std::string &) override
 
void Initialize (G4HCofThisEvent *HCE) override
 
bool isItFineCalo (const G4VTouchable *touch)
 
void PrintAll () override
 
G4bool ProcessHits (G4Step *step, G4TouchableHistory *) override
 
bool ProcessHits (G4GFlashSpot *aSpot, G4TouchableHistory *) override
 
void reset () override
 
 ~CaloSD () override
 
- Public Member Functions inherited from SensitiveCaloDetector
 SensitiveCaloDetector (const std::string &iname, const SensitiveDetectorCatalog &clg)
 
- Public Member Functions inherited from SensitiveDetector
void EndOfEvent (G4HCofThisEvent *eventHC) override
 
const std::vector< std::string > & getNames () const
 
void Initialize (G4HCofThisEvent *eventHC) override
 
bool isCaloSD () const
 
 SensitiveDetector (const std::string &iname, const SensitiveDetectorCatalog &, bool calo)
 
 ~SensitiveDetector () override
 
- Public Member Functions inherited from Observer< const BeginOfRun * >
 Observer ()
 
void slotForUpdate (const BeginOfRun *iT)
 
virtual ~Observer ()
 
- Public Member Functions inherited from Observer< const BeginOfEvent * >
 Observer ()
 
void slotForUpdate (const BeginOfEvent *iT)
 
virtual ~Observer ()
 
- Public Member Functions inherited from Observer< const BeginOfTrack * >
 Observer ()
 
void slotForUpdate (const BeginOfTrack *iT)
 
virtual ~Observer ()
 
- Public Member Functions inherited from Observer< const EndOfTrack * >
 Observer ()
 
void slotForUpdate (const EndOfTrack *iT)
 
virtual ~Observer ()
 
- Public Member Functions inherited from Observer< const EndOfEvent * >
 Observer ()
 
void slotForUpdate (const EndOfEvent *iT)
 
virtual ~Observer ()
 
- Public Member Functions inherited from Observer< const BeginOfJob * >
 Observer ()
 
void slotForUpdate (const BeginOfJob *iT)
 
virtual ~Observer ()
 

Protected Member Functions

bool filterHit (CaloG4Hit *, double) override
 
double getEnergyDeposit (const G4Step *) override
 
void initRun () override
 
void update (const BeginOfJob *) override
 This routine will be called when the appropriate signal arrives. More...
 
- Protected Member Functions inherited from CaloSD
bool checkHit ()
 
CaloG4HitcreateNewHit (const G4Step *, const G4Track *)
 
virtual void endEvent ()
 
virtual double EnergyCorrected (const G4Step &step, const G4Track *)
 
unsigned int findBoundaryCrossingParent (const G4Track *track, bool markParentAsSaveable=true)
 
double getAttenuation (const G4Step *aStep, double birk1, double birk2, double birk3) const
 
virtual uint16_t getDepth (const G4Step *)
 
virtual bool getFromLibrary (const G4Step *step)
 
int getNumberOfHits ()
 
double getResponseWt (const G4Track *)
 
virtual int getTrackID (const G4Track *)
 
bool hitExists (const G4Step *)
 
void ignoreRejection ()
 
virtual void initEvent (const BeginOfEvent *)
 
void printDetectorLevels (const G4VTouchable *) const
 
void processHit (const G4Step *step)
 
void resetForNewPrimary (const G4Step *)
 
void setNumberCheckedHits (int val)
 
void setParameterized (bool val)
 
G4ThreeVector setToGlobal (const G4ThreeVector &, const G4VTouchable *) const
 
G4ThreeVector setToLocal (const G4ThreeVector &, const G4VTouchable *) const
 
virtual int setTrackID (const G4Step *)
 
void setUseMap (bool val)
 
std::string shortreprID (const CaloHitID &ID)
 
std::string shortreprID (const CaloG4Hit *hit)
 
void update (const BeginOfRun *) override
 This routine will be called when the appropriate signal arrives. More...
 
void update (const BeginOfEvent *) override
 This routine will be called when the appropriate signal arrives. More...
 
void update (const BeginOfTrack *trk) override
 This routine will be called when the appropriate signal arrives. More...
 
void update (const EndOfTrack *trk) override
 This routine will be called when the appropriate signal arrives. More...
 
void update (const ::EndOfEvent *) override
 
void updateHit (CaloG4Hit *)
 
- Protected Member Functions inherited from SensitiveDetector
TrackInformationcmsTrackInformation (const G4Track *aTrack)
 
Local3DPoint ConvertToLocal3DPoint (const G4ThreeVector &point) const
 
Local3DPoint FinalStepPosition (const G4Step *step, coordinates) const
 
Local3DPoint InitialStepPosition (const G4Step *step, coordinates) const
 
Local3DPoint LocalPostStepPosition (const G4Step *step) const
 
Local3DPoint LocalPreStepPosition (const G4Step *step) const
 
void NaNTrap (const G4Step *step) const
 
void setNames (const std::vector< std::string > &)
 
- Protected Member Functions inherited from Observer< const EndOfEvent * >
virtual void update (const EndOfEvent *)=0
 This routine will be called when the appropriate signal arrives. More...
 

Private Member Functions

bool isItinFidVolume (const G4ThreeVector &)
 
uint32_t setDetUnitId (int, int, int, int, G4ThreeVector &)
 

Private Attributes

std::vector< double > angles_
 
int cornerMinMask_
 
double distanceFromEdge_
 
double eminHit_
 
bool fiducialCut_
 
HGCalGeometryMode::GeometryMode geom_mode_
 
const HGCalDDDConstantshgcons_
 
int levelT1_
 
int levelT2_
 
std::unique_ptr< HGCMouseBitemouseBite_
 
double mouseBiteCut_
 
DetId::Detector mydet_
 
std::string nameX_
 
std::unique_ptr
< HGCalNumberingScheme
numberingScheme_
 
bool rejectMB_
 
double slopeMin_
 
bool storeAllG4Hits_
 
const double tan30deg_
 
bool waferRot_
 
double weight_
 

Additional Inherited Members

- Protected Types inherited from SensitiveDetector
enum  coordinates { WorldCoordinates, LocalCoordinates }
 
- Static Protected Member Functions inherited from CaloSD
static std::string printableDecayChain (const std::vector< unsigned int > &decayChain)
 
- Protected Attributes inherited from CaloSD
CaloG4HitcurrentHit
 
CaloHitID currentID
 
float edepositEM
 
float edepositHAD
 
double eminHit
 
double energyCut
 
G4ThreeVector entranceLocal
 
G4ThreeVector entrancePoint
 
bool forceSave
 
float incidentEnergy
 
double kmaxIon
 
double kmaxNeutron
 
double kmaxProton
 
G4ThreeVector posGlobal
 
CaloHitID previousID
 
bool suppressHeavy
 
double tmaxHit
 

Detailed Description

Definition at line 20 of file HGCalSD.h.

Constructor & Destructor Documentation

HGCalSD::HGCalSD ( const std::string &  name,
const HGCalDDDConstants hgc,
const SensitiveDetectorCatalog clg,
edm::ParameterSet const &  p,
const SimTrackManager manager 
)

Definition at line 28 of file HGCalSD.cc.

References angles_, cornerMinMask_, distanceFromEdge_, eminHit_, fiducialCut_, DetId::Forward, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), DetId::HGCalEE, DetId::HGCalHSi, MeV, mouseBite_, mydet_, mergeVDriftHistosByStation::name, nameX_, numberingScheme_, rejectMB_, CaloSD::setNumberCheckedHits(), CaloSD::setUseMap(), storeAllG4Hits_, and waferRot_.

33  : CaloSD(name,
34  clg,
35  p,
36  manager,
37  static_cast<float>(p.getParameter<edm::ParameterSet>("HGCSD").getParameter<double>("TimeSliceUnit")),
38  p.getParameter<edm::ParameterSet>("HGCSD").getParameter<bool>("IgnoreTrackID")),
39  hgcons_(hgc),
40  slopeMin_(0),
41  levelT1_(99),
42  levelT2_(99),
43  tan30deg_(std::tan(30.0 * CLHEP::deg)) {
44  numberingScheme_.reset(nullptr);
45  mouseBite_.reset(nullptr);
46 
47  edm::ParameterSet m_HGC = p.getParameter<edm::ParameterSet>("HGCSD");
48  eminHit_ = m_HGC.getParameter<double>("EminHit") * CLHEP::MeV;
49  fiducialCut_ = m_HGC.getParameter<bool>("FiducialCut");
50  distanceFromEdge_ = m_HGC.getParameter<double>("DistanceFromEdge");
51  storeAllG4Hits_ = m_HGC.getParameter<bool>("StoreAllG4Hits");
52  rejectMB_ = m_HGC.getParameter<bool>("RejectMouseBite");
53  waferRot_ = m_HGC.getParameter<bool>("RotatedWafer");
54  cornerMinMask_ = m_HGC.getParameter<int>("CornerMinMask");
55  angles_ = m_HGC.getUntrackedParameter<std::vector<double>>("WaferAngles");
56 
57  if (storeAllG4Hits_) {
58  setUseMap(false);
60  }
61 
62  //this is defined in the hgcsens.xml
63  G4String myName = name;
65  nameX_ = "HGCal";
66  if (myName.find("HitsEE") != std::string::npos) {
68  nameX_ = "HGCalEESensitive";
69  } else if (myName.find("HitsHEfront") != std::string::npos) {
71  nameX_ = "HGCalHESiliconSensitive";
72  }
73 
74 #ifdef EDM_ML_DEBUG
75  edm::LogVerbatim("HGCSim") << "**************************************************"
76  << "\n"
77  << "* *"
78  << "\n"
79  << "* Constructing a HGCalSD with name " << name << "\n"
80  << "* *"
81  << "\n"
82  << "**************************************************";
83 #endif
84  edm::LogVerbatim("HGCSim") << "HGCalSD:: Threshold for storing hits: " << eminHit_ << " for " << nameX_
85  << " detector " << mydet_;
86  edm::LogVerbatim("HGCSim") << "Flag for storing individual Geant4 Hits " << storeAllG4Hits_;
87  edm::LogVerbatim("HGCSim") << "Fiducial volume cut with cut from eta/phi "
88  << "boundary " << fiducialCut_ << " at " << distanceFromEdge_;
89  edm::LogVerbatim("HGCSim") << "Reject MosueBite Flag: " << rejectMB_ << " cuts along " << angles_.size()
90  << " axes: " << angles_[0] << ", " << angles_[1];
91 }
Log< level::Info, true > LogVerbatim
T getUntrackedParameter(std::string const &, T const &) const
double distanceFromEdge_
Definition: HGCalSD.h:48
int levelT2_
Definition: HGCalSD.h:50
void setNumberCheckedHits(int val)
Definition: CaloSD.h:122
double slopeMin_
Definition: HGCalSD.h:48
std::unique_ptr< HGCalNumberingScheme > numberingScheme_
Definition: HGCalSD.h:43
std::string nameX_
Definition: HGCalSD.h:46
void setUseMap(bool val)
Definition: CaloSD.h:111
const double MeV
bool rejectMB_
Definition: HGCalSD.h:52
DetId::Detector mydet_
Definition: HGCalSD.h:45
bool storeAllG4Hits_
Definition: HGCalSD.h:51
std::vector< double > angles_
Definition: HGCalSD.h:54
const HGCalDDDConstants * hgcons_
Definition: HGCalSD.h:42
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
const double tan30deg_
Definition: HGCalSD.h:53
bool waferRot_
Definition: HGCalSD.h:52
int cornerMinMask_
Definition: HGCalSD.h:50
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
bool fiducialCut_
Definition: HGCalSD.h:52
CaloSD(const std::string &aSDname, const SensitiveDetectorCatalog &clg, edm::ParameterSet const &p, const SimTrackManager *, float timeSlice=1., bool ignoreTkID=false)
Definition: CaloSD.cc:33
int levelT1_
Definition: HGCalSD.h:50
std::unique_ptr< HGCMouseBite > mouseBite_
Definition: HGCalSD.h:44
double eminHit_
Definition: HGCalSD.h:48
HGCalSD::~HGCalSD ( )
overridedefault

Member Function Documentation

bool HGCalSD::filterHit ( CaloG4Hit aHit,
double  time 
)
overrideprotectedvirtual

Reimplemented from CaloSD.

Definition at line 230 of file HGCalSD.cc.

References eminHit_, CaloG4Hit::getEnergyDeposit(), and CaloSD::tmaxHit.

230  {
231  return ((time <= tmaxHit) && (aHit->getEnergyDeposit() > eminHit_));
232 }
double tmaxHit
Definition: CaloSD.h:144
double eminHit_
Definition: HGCalSD.h:48
double getEnergyDeposit() const
Definition: CaloG4Hit.h:79
double HGCalSD::getEnergyDeposit ( const G4Step *  aStep)
overrideprotectedvirtual

Reimplemented from CaloSD.

Definition at line 93 of file HGCalSD.cc.

References funct::abs(), CaloSD::getResponseWt(), alignCSCRings::r, slopeMin_, weight_, and z.

93  {
94  double r = aStep->GetPreStepPoint()->GetPosition().perp();
95  double z = std::abs(aStep->GetPreStepPoint()->GetPosition().z());
96 #ifdef EDM_ML_DEBUG
97  G4int parCode = aStep->GetTrack()->GetDefinition()->GetPDGEncoding();
98  G4String parName = aStep->GetTrack()->GetDefinition()->GetParticleName();
99  G4LogicalVolume* lv = aStep->GetPreStepPoint()->GetPhysicalVolume()->GetLogicalVolume();
100  edm::LogVerbatim("HGCSim") << "HGCalSD: Hit from standard path from " << lv->GetName() << " for Track "
101  << aStep->GetTrack()->GetTrackID() << " (" << parCode << ":" << parName << ") R = " << r
102  << " Z = " << z << " slope = " << r / z << ":" << slopeMin_;
103 #endif
104  // Apply fiducial cut
105  if (r < z * slopeMin_) {
106 #ifdef EDM_ML_DEBUG
107  edm::LogVerbatim("HGCSim") << "HGCalSD: Fiducial Volume cut";
108 #endif
109  return 0.0;
110  }
111 
112  double wt1 = getResponseWt(aStep->GetTrack());
113  double wt2 = aStep->GetTrack()->GetWeight();
114  double destep = weight_ * wt1 * (aStep->GetTotalEnergyDeposit());
115  if (wt2 > 0)
116  destep *= wt2;
117 #ifdef EDM_ML_DEBUG
118  edm::LogVerbatim("HGCSim") << "HGCalSD: weights= " << weight_ << ":" << wt1 << ":" << wt2 << " Total weight "
119  << weight_ * wt1 * wt2 << " deStep: " << aStep->GetTotalEnergyDeposit() << ":" << destep;
120 #endif
121  return destep;
122 }
Log< level::Info, true > LogVerbatim
double slopeMin_
Definition: HGCalSD.h:48
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
double weight_
Definition: HGCalSD.h:49
double getResponseWt(const G4Track *)
Definition: CaloSD.cc:849
void HGCalSD::initRun ( )
overrideprotectedvirtual

Reimplemented from CaloSD.

Definition at line 228 of file HGCalSD.cc.

228 {}
bool HGCalSD::isItinFidVolume ( const G4ThreeVector &  pos)
private

Definition at line 247 of file HGCalSD.cc.

References distanceFromEdge_, HGCalDDDConstants::distFromEdgeHex(), fiducialCut_, and hgcons_.

247  {
248  if (fiducialCut_) {
249  return (hgcons_->distFromEdgeHex(pos.x(), pos.y(), pos.z()) > distanceFromEdge_);
250  } else {
251  return true;
252  }
253 }
double distanceFromEdge_
Definition: HGCalSD.h:48
const HGCalDDDConstants * hgcons_
Definition: HGCalSD.h:42
bool fiducialCut_
Definition: HGCalSD.h:52
double distFromEdgeHex(double x, double y, double z) const
uint32_t HGCalSD::setDetUnitId ( const G4Step *  step)
overridevirtual

Implements CaloSD.

Definition at line 124 of file HGCalSD.cc.

References TauDecayModes::dec, geom_mode_, HGCalGeometryMode::Hexagon8Module, gpuClustering::id, phase1PixelTopology::layer, levelT1_, levelT2_, callgraph::module, mouseBite_, CaloSD::printDetectorLevels(), rejectMB_, and HGCSiliconDetId::waferUV().

124  {
125  const G4StepPoint* preStepPoint = aStep->GetPreStepPoint();
126  const G4VTouchable* touch = preStepPoint->GetTouchable();
127 
128 #ifdef EDM_ML_DEBUG
129  edm::LogVerbatim("HGCSim") << "DepthsTop: " << touch->GetHistoryDepth() << ":" << levelT1_ << ":" << levelT2_;
130  printDetectorLevels(touch);
131 #endif
132  //determine the exact position in global coordinates in the mass geometry
133  G4ThreeVector hitPoint = preStepPoint->GetPosition();
134  float globalZ = touch->GetTranslation(0).z();
135  int iz(globalZ > 0 ? 1 : -1);
136 
137  int layer(0), module(-1), cell(-1);
139  if (touch->GetHistoryDepth() > levelT2_) {
140  layer = touch->GetReplicaNumber(4);
141  module = touch->GetReplicaNumber(3);
142  cell = touch->GetReplicaNumber(1);
143  } else {
144  layer = touch->GetReplicaNumber(3);
145  module = touch->GetReplicaNumber(2);
146  }
147 #ifdef EDM_ML_DEBUG
148  edm::LogVerbatim("HGCSim") << "DepthsTop: " << touch->GetHistoryDepth() << ":" << levelT1_ << ":" << levelT2_
149  << " name " << touch->GetVolume(0)->GetName() << " layer:module:cell " << layer << ":"
150  << module << ":" << cell;
151  printDetectorLevels(touch);
152 #endif
153  } else if ((touch->GetHistoryDepth() == levelT1_) || (touch->GetHistoryDepth() == levelT2_)) {
154  layer = touch->GetReplicaNumber(0);
155 #ifdef EDM_ML_DEBUG
156  edm::LogVerbatim("HGCSim") << "DepthsTop: " << touch->GetHistoryDepth() << ":" << levelT1_ << ":" << levelT2_
157  << " name " << touch->GetVolume(0)->GetName() << " layer:module:cell " << layer << ":"
158  << module << ":" << cell;
159 #endif
160  } else {
161  layer = touch->GetReplicaNumber(3);
162  module = touch->GetReplicaNumber(2);
163  cell = touch->GetReplicaNumber(1);
164 #ifdef EDM_ML_DEBUG
165  edm::LogVerbatim("HGCSim") << "DepthsInside: " << touch->GetHistoryDepth() << " name "
166  << touch->GetVolume(0)->GetName() << " layer:module:cell " << layer << ":" << module
167  << ":" << cell;
168 #endif
169  }
170 #ifdef EDM_ML_DEBUG
171  G4Material* mat = aStep->GetPreStepPoint()->GetMaterial();
172  edm::LogVerbatim("HGCSim") << "Depths: " << touch->GetHistoryDepth() << " name " << touch->GetVolume(0)->GetName()
173  << ":" << touch->GetReplicaNumber(0) << " " << touch->GetVolume(1)->GetName() << ":"
174  << touch->GetReplicaNumber(1) << " " << touch->GetVolume(2)->GetName() << ":"
175  << touch->GetReplicaNumber(2) << " " << touch->GetVolume(3)->GetName() << ":"
176  << touch->GetReplicaNumber(3) << " " << touch->GetVolume(4)->GetName() << ":"
177  << touch->GetReplicaNumber(4) << " "
178  << " layer:module:cell " << layer << ":" << module << ":" << cell << " Material "
179  << mat->GetName() << ":" << mat->GetRadlen();
180 #endif
181  // The following statement should be examined later before elimination
182  if (aStep->GetPreStepPoint()->GetMaterial()->GetRadlen() > 100000.)
183  return 0;
184 
185  uint32_t id = setDetUnitId(layer, module, cell, iz, hitPoint);
186  if (rejectMB_ && id != 0) {
187  auto uv = HGCSiliconDetId(id).waferUV();
188 #ifdef EDM_ML_DEBUG
189  edm::LogVerbatim("HGCSim") << "ID " << std::hex << id << std::dec << " " << HGCSiliconDetId(id);
190 #endif
191  if (mouseBite_->exclude(hitPoint, iz, uv.first, uv.second)) {
192  id = 0;
193 #ifdef EDM_ML_DEBUG
194  edm::LogVerbatim("HGCSim") << "Rejected by mousebite cutoff *****";
195 #endif
196  }
197  }
198 #ifdef EDM_ML_DEBUG
199  if (id != 0)
200  edm::LogVerbatim("HGCSim") << HGCSiliconDetId(id);
201 #endif
202  return id;
203 }
Log< level::Info, true > LogVerbatim
int levelT2_
Definition: HGCalSD.h:50
uint16_t *__restrict__ id
std::pair< int, int > waferUV() const
constexpr std::array< uint8_t, layerIndexSize > layer
bool rejectMB_
Definition: HGCalSD.h:52
uint32_t setDetUnitId(const G4Step *step) override
Definition: HGCalSD.cc:124
HGCalGeometryMode::GeometryMode geom_mode_
Definition: HGCalSD.h:47
void printDetectorLevels(const G4VTouchable *) const
Definition: CaloSD.cc:1072
int levelT1_
Definition: HGCalSD.h:50
std::unique_ptr< HGCMouseBite > mouseBite_
Definition: HGCalSD.h:44
tuple module
Definition: callgraph.py:69
uint32_t HGCalSD::setDetUnitId ( int  layer,
int  module,
int  cell,
int  iz,
G4ThreeVector &  pos 
)
private

Definition at line 234 of file HGCalSD.cc.

References cornerMinMask_, geom_mode_, HGCalGeometryMode::Hexagon8File, HGCalGeometryMode::Hexagon8Module, hgcons_, gpuClustering::id, CaloSD::ignoreRejection(), HGCalDDDConstants::maskCell(), numberingScheme_, and weight_.

234  {
235  uint32_t id = numberingScheme_ ? numberingScheme_->getUnitID(layer, module, cell, iz, pos, weight_) : 0;
236  if (cornerMinMask_ > 2) {
237  if (hgcons_->maskCell(DetId(id), cornerMinMask_)) {
238  id = 0;
239  ignoreRejection();
240  }
241  }
243  ignoreRejection();
244  return id;
245 }
uint16_t *__restrict__ id
std::unique_ptr< HGCalNumberingScheme > numberingScheme_
Definition: HGCalSD.h:43
void ignoreRejection()
Definition: CaloSD.h:108
constexpr std::array< uint8_t, layerIndexSize > layer
const HGCalDDDConstants * hgcons_
Definition: HGCalSD.h:42
Definition: DetId.h:17
int cornerMinMask_
Definition: HGCalSD.h:50
bool maskCell(const DetId &id, int corners) const
HGCalGeometryMode::GeometryMode geom_mode_
Definition: HGCalSD.h:47
double weight_
Definition: HGCalSD.h:49
tuple module
Definition: callgraph.py:69
void HGCalSD::update ( const BeginOfJob )
overrideprotectedvirtual

This routine will be called when the appropriate signal arrives.

Implements Observer< const BeginOfJob * >.

Definition at line 205 of file HGCalSD.cc.

References angles_, Exception, geom_mode_, HGCalDDDConstants::geomMode(), hgcons_, levelT1_, levelT2_, HGCalDDDConstants::levelTop(), HGCalDDDConstants::minSlope(), HGCalDDDConstants::mouseBite(), mouseBite_, mouseBiteCut_, mydet_, nameX_, numberingScheme_, rejectMB_, slopeMin_, tan30deg_, waferRot_, and HGCalDDDConstants::waferSize().

Referenced by progressbar.ProgressBar::__next__(), MatrixUtil.Matrix::__setitem__(), MatrixUtil.Steps::__setitem__(), progressbar.ProgressBar::finish(), and MatrixUtil.Steps::overwrite().

205  {
206  if (hgcons_ != nullptr) {
209  levelT1_ = hgcons_->levelTop(0);
210  levelT2_ = hgcons_->levelTop(1);
211  double waferSize = hgcons_->waferSize(false);
212  double mouseBite = hgcons_->mouseBite(false);
213  mouseBiteCut_ = waferSize * tan30deg_ - mouseBite;
214 #ifdef EDM_ML_DEBUG
215  edm::LogVerbatim("HGCSim") << "HGCalSD::Initialized with mode " << geom_mode_ << " Slope cut " << slopeMin_
216  << " top Level " << levelT1_ << ":" << levelT2_ << " wafer " << waferSize << ":"
217  << mouseBite;
218 #endif
219 
220  numberingScheme_ = std::make_unique<HGCalNumberingScheme>(*hgcons_, mydet_, nameX_);
221  if (rejectMB_)
222  mouseBite_ = std::make_unique<HGCMouseBite>(*hgcons_, angles_, mouseBiteCut_, waferRot_);
223  } else {
224  throw cms::Exception("Unknown", "HGCalSD") << "Cannot find HGCalDDDConstants for " << nameX_ << "\n";
225  }
226 }
Log< level::Info, true > LogVerbatim
int levelT2_
Definition: HGCalSD.h:50
double slopeMin_
Definition: HGCalSD.h:48
std::unique_ptr< HGCalNumberingScheme > numberingScheme_
Definition: HGCalSD.h:43
std::string nameX_
Definition: HGCalSD.h:46
double mouseBiteCut_
Definition: HGCalSD.h:49
bool rejectMB_
Definition: HGCalSD.h:52
DetId::Detector mydet_
Definition: HGCalSD.h:45
double mouseBite(bool reco) const
std::vector< double > angles_
Definition: HGCalSD.h:54
const HGCalDDDConstants * hgcons_
Definition: HGCalSD.h:42
double minSlope() const
const double tan30deg_
Definition: HGCalSD.h:53
HGCalGeometryMode::GeometryMode geomMode() const
double waferSize(bool reco) const
bool waferRot_
Definition: HGCalSD.h:52
HGCalGeometryMode::GeometryMode geom_mode_
Definition: HGCalSD.h:47
int levelT1_
Definition: HGCalSD.h:50
std::unique_ptr< HGCMouseBite > mouseBite_
Definition: HGCalSD.h:44
int levelTop(int ind=0) const

Member Data Documentation

std::vector<double> HGCalSD::angles_
private

Definition at line 54 of file HGCalSD.h.

Referenced by HGCalSD(), and update().

int HGCalSD::cornerMinMask_
private

Definition at line 50 of file HGCalSD.h.

Referenced by HGCalSD(), and setDetUnitId().

double HGCalSD::distanceFromEdge_
private

Definition at line 48 of file HGCalSD.h.

Referenced by HGCalSD(), and isItinFidVolume().

double HGCalSD::eminHit_
private

Definition at line 48 of file HGCalSD.h.

Referenced by filterHit(), and HGCalSD().

bool HGCalSD::fiducialCut_
private

Definition at line 52 of file HGCalSD.h.

Referenced by HGCalSD(), and isItinFidVolume().

HGCalGeometryMode::GeometryMode HGCalSD::geom_mode_
private

Definition at line 47 of file HGCalSD.h.

Referenced by setDetUnitId(), and update().

const HGCalDDDConstants* HGCalSD::hgcons_
private

Definition at line 42 of file HGCalSD.h.

Referenced by isItinFidVolume(), setDetUnitId(), and update().

int HGCalSD::levelT1_
private

Definition at line 50 of file HGCalSD.h.

Referenced by setDetUnitId(), and update().

int HGCalSD::levelT2_
private

Definition at line 50 of file HGCalSD.h.

Referenced by setDetUnitId(), and update().

std::unique_ptr<HGCMouseBite> HGCalSD::mouseBite_
private

Definition at line 44 of file HGCalSD.h.

Referenced by HGCalSD(), setDetUnitId(), and update().

double HGCalSD::mouseBiteCut_
private

Definition at line 49 of file HGCalSD.h.

Referenced by update().

DetId::Detector HGCalSD::mydet_
private

Definition at line 45 of file HGCalSD.h.

Referenced by HGCalSD(), and update().

std::string HGCalSD::nameX_
private

Definition at line 46 of file HGCalSD.h.

Referenced by HGCalSD(), and update().

std::unique_ptr<HGCalNumberingScheme> HGCalSD::numberingScheme_
private

Definition at line 43 of file HGCalSD.h.

Referenced by HGCalSD(), setDetUnitId(), and update().

bool HGCalSD::rejectMB_
private

Definition at line 52 of file HGCalSD.h.

Referenced by HGCalSD(), setDetUnitId(), and update().

double HGCalSD::slopeMin_
private

Definition at line 48 of file HGCalSD.h.

Referenced by getEnergyDeposit(), and update().

bool HGCalSD::storeAllG4Hits_
private

Definition at line 51 of file HGCalSD.h.

Referenced by HGCalSD().

const double HGCalSD::tan30deg_
private

Definition at line 53 of file HGCalSD.h.

Referenced by update().

bool HGCalSD::waferRot_
private

Definition at line 52 of file HGCalSD.h.

Referenced by HGCalSD(), and update().

double HGCalSD::weight_
private

Definition at line 49 of file HGCalSD.h.

Referenced by getEnergyDeposit(), and setDetUnitId().