CMS 3D CMS Logo

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
 
bool ProcessHits (G4GFlashSpot *aSpot, G4TouchableHistory *) override
 
G4bool ProcessHits (G4Step *step, 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 ::EndOfEvent *) override
 
void update (const BeginOfEvent *) override
 
void update (const BeginOfJob *) override
 This routine will be called when the appropriate signal arrives. More...
 
void update (const BeginOfRun *) override
 
void update (const BeginOfTrack *trk) override
 
void update (const EndOfTrack *trk) override
 
- Protected Member Functions inherited from CaloSD
bool checkHit ()
 
CaloG4HitcreateNewHit (const G4Step *, const G4Track *)
 
virtual void endEvent ()
 
virtual double EnergyCorrected (const G4Step &step, const G4Track *)
 
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 *)
 
void hitBookkeepingFineCalo (const G4Step *step, const G4Track *currentTrack, CaloG4Hit *hit)
 
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)
 
void update (const ::EndOfEvent *) override
 
void update (const BeginOfEvent *) override
 This routine will be called when the appropriate signal arrives. More...
 
void update (const BeginOfRun *) 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 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< HGCalNumberingSchemenumberingScheme_
 
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::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.

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 }

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

◆ ~HGCalSD()

HGCalSD::~HGCalSD ( )
overridedefault

Member Function Documentation

◆ filterHit()

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

Reimplemented from CaloSD.

Definition at line 224 of file HGCalSD.cc.

224  {
225  return ((time <= tmaxHit) && (aHit->getEnergyDeposit() > eminHit_));
226 }

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

◆ getEnergyDeposit()

double HGCalSD::getEnergyDeposit ( const G4Step *  aStep)
overrideprotectedvirtual

Reimplemented from CaloSD.

Definition at line 93 of file HGCalSD.cc.

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 }

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

◆ initRun()

void HGCalSD::initRun ( )
overrideprotectedvirtual

Reimplemented from CaloSD.

Definition at line 222 of file HGCalSD.cc.

222 {}

◆ isItinFidVolume()

bool HGCalSD::isItinFidVolume ( const G4ThreeVector &  pos)
private

Definition at line 241 of file HGCalSD.cc.

241  {
242  if (fiducialCut_) {
243  return (hgcons_->distFromEdgeHex(pos.x(), pos.y(), pos.z()) > distanceFromEdge_);
244  } else {
245  return true;
246  }
247 }

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

◆ setDetUnitId() [1/2]

uint32_t HGCalSD::setDetUnitId ( const G4Step *  step)
overridevirtual

Implements CaloSD.

Definition at line 124 of file HGCalSD.cc.

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(2);
145  module = touch->GetReplicaNumber(1);
146  }
147  } else if ((touch->GetHistoryDepth() == levelT1_) || (touch->GetHistoryDepth() == levelT2_)) {
148  layer = touch->GetReplicaNumber(0);
149 #ifdef EDM_ML_DEBUG
150  edm::LogVerbatim("HGCSim") << "DepthsTop: " << touch->GetHistoryDepth() << ":" << levelT1_ << ":" << levelT2_
151  << " name " << touch->GetVolume(0)->GetName() << " layer:module:cell " << layer << ":"
152  << module << ":" << cell;
153 #endif
154  } else {
155  layer = touch->GetReplicaNumber(3);
156  module = touch->GetReplicaNumber(2);
157  cell = touch->GetReplicaNumber(1);
158 #ifdef EDM_ML_DEBUG
159  edm::LogVerbatim("HGCSim") << "DepthsInside: " << touch->GetHistoryDepth() << " name "
160  << touch->GetVolume(0)->GetName() << " layer:module:cell " << layer << ":" << module
161  << ":" << cell;
162 #endif
163  }
164 #ifdef EDM_ML_DEBUG
165  G4Material* mat = aStep->GetPreStepPoint()->GetMaterial();
166  edm::LogVerbatim("HGCSim") << "Depths: " << touch->GetHistoryDepth() << " name " << touch->GetVolume(0)->GetName()
167  << ":" << touch->GetReplicaNumber(0) << " " << touch->GetVolume(1)->GetName() << ":"
168  << touch->GetReplicaNumber(1) << " " << touch->GetVolume(2)->GetName() << ":"
169  << touch->GetReplicaNumber(2) << " " << touch->GetVolume(3)->GetName() << ":"
170  << touch->GetReplicaNumber(3) << " " << touch->GetVolume(4)->GetName() << ":"
171  << touch->GetReplicaNumber(4) << " "
172  << " layer:module:cell " << layer << ":" << module << ":" << cell << " Material "
173  << mat->GetName() << ":" << mat->GetRadlen();
174 #endif
175  // The following statement should be examined later before elimination
176  if (aStep->GetPreStepPoint()->GetMaterial()->GetRadlen() > 100000.)
177  return 0;
178 
179  uint32_t id = setDetUnitId(layer, module, cell, iz, hitPoint);
180  if (rejectMB_ && id != 0) {
181  auto uv = HGCSiliconDetId(id).waferUV();
182 #ifdef EDM_ML_DEBUG
183  edm::LogVerbatim("HGCSim") << "ID " << std::hex << id << std::dec << " " << HGCSiliconDetId(id);
184 #endif
185  if (mouseBite_->exclude(hitPoint, iz, uv.first, uv.second)) {
186  id = 0;
187 #ifdef EDM_ML_DEBUG
188  edm::LogVerbatim("HGCSim") << "Rejected by mousebite cutoff *****";
189 #endif
190  }
191  }
192 #ifdef EDM_ML_DEBUG
193  if (id != 0)
194  edm::LogVerbatim("HGCSim") << HGCSiliconDetId(id);
195 #endif
196  return id;
197 }

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

◆ setDetUnitId() [2/2]

uint32_t HGCalSD::setDetUnitId ( int  layer,
int  module,
int  cell,
int  iz,
G4ThreeVector &  pos 
)
private

◆ update() [1/6]

void CaloSD::update
overrideprotected

Definition at line 741 of file CaloSD.cc.

741  {
742  endEvent();
743  slave.get()->ReserveMemory(theHC->entries());
744 
745  int count(0);
746  int wrong(0);
747  double eEM(0.0);
748  double eHAD(0.0);
749  double eEM2(0.0);
750  double eHAD2(0.0);
751  double tt(0.0);
752  double zloc(0.0);
753  double zglob(0.0);
754  double ee(0.0);
755  int hc_entries = theHC->entries();
756  for (int i = 0; i < hc_entries; ++i) {
757  if (!saveHit((*theHC)[i])) {
758  ++wrong;
759  }
760  ++count;
761  double x = (*theHC)[i]->getEM();
762  eEM += x;
763  eEM2 += x * x;
764  x = (*theHC)[i]->getHadr();
765  eHAD += x;
766  eHAD2 += x * x;
767  tt += (*theHC)[i]->getTimeSlice();
768  ee += (*theHC)[i]->getIncidentEnergy();
769  zglob += std::abs((*theHC)[i]->getEntry().z());
770  zloc += std::abs((*theHC)[i]->getEntryLocal().z());
771  }
772 
773  double norm = (count > 0) ? 1.0 / count : 0.0;
774  eEM *= norm;
775  eEM2 *= norm;
776  eHAD *= norm;
777  eHAD2 *= norm;
778  eEM2 = std::sqrt(eEM2 - eEM * eEM);
779  eHAD2 = std::sqrt(eHAD2 - eHAD * eHAD);
780  tt *= norm;
781  ee *= norm;
782  zglob *= norm;
783  zloc *= norm;
784 
785 #ifdef EDM_ML_DEBUG
786  edm::LogVerbatim("CaloSim") << "CaloSD: " << GetName() << " store " << count << " hits; " << wrong
787  << " track IDs not given properly and " << totalHits - count
788  << " hits not passing cuts\n EmeanEM= " << eEM << " ErmsEM= " << eEM2
789  << "\n EmeanHAD= " << eHAD << " ErmsHAD= " << eHAD2 << " TimeMean= " << tt
790  << " E0mean= " << ee << " Zglob= " << zglob << " Zloc= " << zloc << " ";
791 #endif
792  tkMap.erase(tkMap.begin(), tkMap.end());
793  std::vector<std::unique_ptr<CaloG4Hit>>().swap(reusehit);
794  if (useMap)
795  hitMap.erase(hitMap.begin(), hitMap.end());
796 }

Referenced by MatrixUtil.Matrix::__setitem__(), MatrixUtil.Steps::__setitem__(), and MatrixUtil.Steps::overwrite().

◆ update() [2/6]

void CaloSD::update
overrideprotected

Definition at line 707 of file CaloSD.cc.

707  {
708 #ifdef EDM_ML_DEBUG
709  edm::LogVerbatim("CaloSim") << "CaloSD: Dispatched BeginOfEvent for " << GetName() << " !";
710 #endif
711  clearHits();
712  initEvent(g4Event);
713 }

Referenced by MatrixUtil.Matrix::__setitem__(), MatrixUtil.Steps::__setitem__(), and MatrixUtil.Steps::overwrite().

◆ update() [3/6]

void HGCalSD::update ( const BeginOfJob )
overrideprotectedvirtual

This routine will be called when the appropriate signal arrives.

Implements Observer< const BeginOfJob * >.

Definition at line 199 of file HGCalSD.cc.

199  {
200  if (hgcons_ != nullptr) {
203  levelT1_ = hgcons_->levelTop(0);
204  levelT2_ = hgcons_->levelTop(1);
205  double waferSize = hgcons_->waferSize(false);
206  double mouseBite = hgcons_->mouseBite(false);
207  mouseBiteCut_ = waferSize * tan30deg_ - mouseBite;
208 #ifdef EDM_ML_DEBUG
209  edm::LogVerbatim("HGCSim") << "HGCalSD::Initialized with mode " << geom_mode_ << " Slope cut " << slopeMin_
210  << " top Level " << levelT1_ << ":" << levelT2_ << " wafer " << waferSize << ":"
211  << mouseBite;
212 #endif
213 
214  numberingScheme_ = std::make_unique<HGCalNumberingScheme>(*hgcons_, mydet_, nameX_);
215  if (rejectMB_)
216  mouseBite_ = std::make_unique<HGCMouseBite>(*hgcons_, angles_, mouseBiteCut_, waferRot_);
217  } else {
218  throw cms::Exception("Unknown", "HGCalSD") << "Cannot find HGCalDDDConstants for " << nameX_ << "\n";
219  }
220 }

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().

◆ update() [4/6]

void CaloSD::update
overrideprotected

◆ update() [5/6]

void CaloSD::update
overrideprotected

Definition at line 963 of file CaloSD.cc.

963  {
964  int primary = -1;
965  TrackInformation* trkInfo = cmsTrackInformation((*trk)());
966  if (trkInfo->isPrimary())
967  primary = (*trk)()->GetTrackID();
968 
969 #ifdef EDM_ML_DEBUG
970  edm::LogVerbatim("CaloSim") << "New track: isPrimary " << trkInfo->isPrimary() << " primary ID = " << primary
971  << " primary ancestor ID " << primAncestor;
972 #endif
973 
974  // update the information if a different primary track ID
975 
976  if (primary > 0 && primary != primAncestor) {
977  primAncestor = primary;
978 
979  // clean the hits information
980 
981  if (theHC->entries() > 0)
983  }
984 }

Referenced by MatrixUtil.Matrix::__setitem__(), MatrixUtil.Steps::__setitem__(), and MatrixUtil.Steps::overwrite().

◆ update() [6/6]

void CaloSD::update
overrideprotected

Definition at line 715 of file CaloSD.cc.

715  {
716  int id = (*trk)()->GetTrackID();
717  TrackInformation* trkI = cmsTrackInformation((*trk)());
718  int lastTrackID = -1;
719  if (trkI)
720  lastTrackID = trkI->getIDonCaloSurface();
721  if (id == lastTrackID) {
722  const TrackContainer* trksForThisEvent = m_trackManager->trackContainer();
723  if (trksForThisEvent != nullptr) {
724  int it = (int)(trksForThisEvent->size()) - 1;
725  if (it >= 0) {
726  TrackWithHistory* trkH = (*trksForThisEvent)[it];
727  if (trkH->trackID() == (unsigned int)(id))
728  tkMap[id] = trkH;
729 #ifdef EDM_ML_DEBUG
730  edm::LogVerbatim("CaloSim") << "CaloSD: get track " << it << " from Container of size "
731  << trksForThisEvent->size() << " with ID " << trkH->trackID();
732  } else {
733  edm::LogVerbatim("CaloSim") << "CaloSD: get track " << it << " from Container of size "
734  << trksForThisEvent->size() << " with no ID";
735 #endif
736  }
737  }
738  }
739 }

Referenced by MatrixUtil.Matrix::__setitem__(), MatrixUtil.Steps::__setitem__(), and MatrixUtil.Steps::overwrite().

Member Data Documentation

◆ angles_

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

Definition at line 54 of file HGCalSD.h.

Referenced by HGCalSD(), and update().

◆ cornerMinMask_

int HGCalSD::cornerMinMask_
private

Definition at line 50 of file HGCalSD.h.

Referenced by HGCalSD(), and setDetUnitId().

◆ distanceFromEdge_

double HGCalSD::distanceFromEdge_
private

Definition at line 48 of file HGCalSD.h.

Referenced by HGCalSD(), and isItinFidVolume().

◆ eminHit_

double HGCalSD::eminHit_
private

Definition at line 48 of file HGCalSD.h.

Referenced by filterHit(), and HGCalSD().

◆ fiducialCut_

bool HGCalSD::fiducialCut_
private

Definition at line 52 of file HGCalSD.h.

Referenced by HGCalSD(), and isItinFidVolume().

◆ geom_mode_

HGCalGeometryMode::GeometryMode HGCalSD::geom_mode_
private

Definition at line 47 of file HGCalSD.h.

Referenced by setDetUnitId(), and update().

◆ hgcons_

const HGCalDDDConstants* HGCalSD::hgcons_
private

Definition at line 42 of file HGCalSD.h.

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

◆ levelT1_

int HGCalSD::levelT1_
private

Definition at line 50 of file HGCalSD.h.

Referenced by setDetUnitId(), and update().

◆ levelT2_

int HGCalSD::levelT2_
private

Definition at line 50 of file HGCalSD.h.

Referenced by setDetUnitId(), and update().

◆ mouseBite_

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

Definition at line 44 of file HGCalSD.h.

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

◆ mouseBiteCut_

double HGCalSD::mouseBiteCut_
private

Definition at line 49 of file HGCalSD.h.

Referenced by update().

◆ mydet_

DetId::Detector HGCalSD::mydet_
private

Definition at line 45 of file HGCalSD.h.

Referenced by HGCalSD(), and update().

◆ nameX_

std::string HGCalSD::nameX_
private

Definition at line 46 of file HGCalSD.h.

Referenced by HGCalSD(), and update().

◆ numberingScheme_

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

Definition at line 43 of file HGCalSD.h.

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

◆ rejectMB_

bool HGCalSD::rejectMB_
private

Definition at line 52 of file HGCalSD.h.

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

◆ slopeMin_

double HGCalSD::slopeMin_
private

Definition at line 48 of file HGCalSD.h.

Referenced by getEnergyDeposit(), and update().

◆ storeAllG4Hits_

bool HGCalSD::storeAllG4Hits_
private

Definition at line 51 of file HGCalSD.h.

Referenced by HGCalSD().

◆ tan30deg_

const double HGCalSD::tan30deg_
private

Definition at line 53 of file HGCalSD.h.

Referenced by update().

◆ waferRot_

bool HGCalSD::waferRot_
private

Definition at line 52 of file HGCalSD.h.

Referenced by HGCalSD(), and update().

◆ weight_

double HGCalSD::weight_
private

Definition at line 49 of file HGCalSD.h.

Referenced by getEnergyDeposit(), and setDetUnitId().

CaloSD::tkMap
std::map< int, TrackWithHistory * > tkMap
Definition: CaloSD.h:185
HGCalSD::storeAllG4Hits_
bool storeAllG4Hits_
Definition: HGCalSD.h:51
CaloSD::tmaxHit
double tmaxHit
Definition: CaloSD.h:141
mps_fire.i
i
Definition: mps_fire.py:428
TrackInformation::getIDonCaloSurface
int getIDonCaloSurface() const
Definition: TrackInformation.h:43
CaloSD::saveHit
bool saveHit(CaloG4Hit *)
Definition: CaloSD.cc:895
groupFilesInBlocks.tt
int tt
Definition: groupFilesInBlocks.py:144
HGCalSD::tan30deg_
const double tan30deg_
Definition: HGCalSD.h:53
CaloSD::ignoreRejection
void ignoreRejection()
Definition: CaloSD.h:105
HGCalSD::numberingScheme_
std::unique_ptr< HGCalNumberingScheme > numberingScheme_
Definition: HGCalSD.h:43
HGCalDDDConstants::geomMode
HGCalGeometryMode::GeometryMode geomMode() const
Definition: HGCalDDDConstants.h:54
edm::swap
void swap(Association< C > &lhs, Association< C > &rhs)
Definition: Association.h:117
TrackWithHistory
Definition: TrackWithHistory.h:16
pos
Definition: PixelAliasList.h:18
HGCSiliconDetId::waferUV
std::pair< int, int > waferUV() const
Definition: HGCSiliconDetId.h:78
HGCalSD::cornerMinMask_
int cornerMinMask_
Definition: HGCalSD.h:50
HGCalSD::geom_mode_
HGCalGeometryMode::GeometryMode geom_mode_
Definition: HGCalSD.h:47
HGCalSD::nameX_
std::string nameX_
Definition: HGCalSD.h:46
protons_cff.time
time
Definition: protons_cff.py:35
MeV
const double MeV
HGCalSD::fiducialCut_
bool fiducialCut_
Definition: HGCalSD.h:52
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
DDAxes::x
HGCalGeometryMode::Hexagon8Module
Definition: HGCalGeometryMode.h:34
HGCSiliconDetId
Definition: HGCSiliconDetId.h:22
hgc_digi
Definition: HGCDigitizerTypes.h:10
CaloSD::getResponseWt
double getResponseWt(const G4Track *)
Definition: CaloSD.cc:874
DetId
Definition: DetId.h:17
DetId::HGCalHSi
Definition: DetId.h:33
DetId::HGCalEE
Definition: DetId.h:32
CaloSD::useMap
bool useMap
Definition: CaloSD.h:168
TrackInformation::isPrimary
bool isPrimary() const
Definition: TrackInformation.h:27
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
CaloG4Hit::getEnergyDeposit
double getEnergyDeposit() const
Definition: CaloG4Hit.h:78
DDAxes::z
HGCalSD::distanceFromEdge_
double distanceFromEdge_
Definition: HGCalSD.h:48
submitPVResolutionJobs.count
count
Definition: submitPVResolutionJobs.py:352
HGCalSD::eminHit_
double eminHit_
Definition: HGCalSD.h:48
CaloSD::clearHits
void clearHits() override
Definition: CaloSD.cc:798
HGCalDDDConstants::mouseBite
double mouseBite(bool reco) const
Definition: HGCalDDDConstants.cc:897
phase1PixelTopology::layer
constexpr std::array< uint8_t, layerIndexSize > layer
Definition: phase1PixelTopology.h:99
HGCalSD::setDetUnitId
uint32_t setDetUnitId(const G4Step *step) override
Definition: HGCalSD.cc:124
HGCalSD::mouseBite_
std::unique_ptr< HGCMouseBite > mouseBite_
Definition: HGCalSD.h:44
edm::ParameterSet
Definition: ParameterSet.h:47
CaloSD::hitMap
std::map< CaloHitID, CaloG4Hit * > hitMap
Definition: CaloSD.h:184
AlCaHLTBitMon_ParallelJobs.p
def p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
CaloSD::theHC
CaloG4HitCollection * theHC
Definition: CaloSD.h:163
CaloSD::totalHits
int totalHits
Definition: CaloSD.h:174
HGCalSD::slopeMin_
double slopeMin_
Definition: HGCalSD.h:48
HGCalSD::levelT2_
int levelT2_
Definition: HGCalSD.h:50
CaloSD::slave
std::unique_ptr< CaloSlaveSD > slave
Definition: CaloSD.h:160
funct::tan
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
TrackInformation
Definition: TrackInformation.h:12
createfilelist.int
int
Definition: createfilelist.py:10
CaloSD::CaloSD
CaloSD(const std::string &aSDname, const SensitiveDetectorCatalog &clg, edm::ParameterSet const &p, const SimTrackManager *, float timeSlice=1., bool ignoreTkID=false)
Definition: CaloSD.cc:34
CaloSD::printDetectorLevels
void printDetectorLevels(const G4VTouchable *) const
Definition: CaloSD.cc:1102
CaloSD::setNumberCheckedHits
void setNumberCheckedHits(int val)
Definition: CaloSD.h:119
CaloSD::reusehit
std::vector< std::unique_ptr< CaloG4Hit > > reusehit
Definition: CaloSD.h:186
HGCalSD::mouseBiteCut_
double mouseBiteCut_
Definition: HGCalSD.h:49
alignCSCRings.r
r
Definition: alignCSCRings.py:93
callgraph.module
module
Definition: callgraph.py:61
CaloSD::m_trackManager
const SimTrackManager * m_trackManager
Definition: CaloSD.h:158
HGCalDDDConstants::minSlope
double minSlope() const
Definition: HGCalDDDConstants.h:97
TrackWithHistory::trackID
unsigned int trackID() const
Definition: TrackWithHistory.h:28
TrackContainer
std::vector< TrackWithHistory * > TrackContainer
Definition: TrackContainer.h:8
SensitiveDetector::cmsTrackInformation
TrackInformation * cmsTrackInformation(const G4Track *aTrack)
Definition: SensitiveDetector.cc:92
HGCalSD::mydet_
DetId::Detector mydet_
Definition: HGCalSD.h:45
HGCalSD::initRun
void initRun() override
Definition: HGCalSD.cc:222
CaloSD::cleanHitCollection
void cleanHitCollection()
Definition: CaloSD.cc:986
edm::LogVerbatim
Log< level::Info, true > LogVerbatim
Definition: MessageLogger.h:128
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:29
CaloSD::primAncestor
int primAncestor
Definition: CaloSD.h:172
HGCalSD::waferRot_
bool waferRot_
Definition: HGCalSD.h:52
Exception
Definition: hltDiff.cc:245
HGCalSD::hgcons_
const HGCalDDDConstants * hgcons_
Definition: HGCalSD.h:42
HGCalGeometryMode::Hexagon8File
Definition: HGCalGeometryMode.h:32
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
HGCalDDDConstants::distFromEdgeHex
double distFromEdgeHex(double x, double y, double z) const
Definition: HGCalDDDConstants.cc:280
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
HGCalSD::weight_
double weight_
Definition: HGCalSD.h:49
HGCalSD::rejectMB_
bool rejectMB_
Definition: HGCalSD.h:52
HGCalDDDConstants::levelTop
int levelTop(int ind=0) const
Definition: HGCalDDDConstants.h:89
CaloSD::setUseMap
void setUseMap(bool val)
Definition: CaloSD.h:108
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
edm::roottree::getEntry
Int_t getEntry(TBranch *branch, EntryNumber entryNumber)
Definition: RootTree.cc:515
CaloSD::initEvent
virtual void initEvent(const BeginOfEvent *)
Definition: CaloSD.cc:817
DetId::Forward
Definition: DetId.h:30
HGCalDDDConstants::waferSize
double waferSize(bool reco) const
Definition: HGCalDDDConstants.h:183
TauDecayModes.dec
dec
Definition: TauDecayModes.py:142
HGCalDDDConstants::maskCell
bool maskCell(const DetId &id, int corners) const
Definition: HGCalDDDConstants.cc:764
HGCalSD::angles_
std::vector< double > angles_
Definition: HGCalSD.h:54
SimTrackManager::trackContainer
const TrackContainer * trackContainer() const
Definition: SimTrackManager.h:52
CaloSD::endEvent
virtual void endEvent()
Definition: CaloSD.cc:819
HGCalSD::levelT1_
int levelT1_
Definition: HGCalSD.h:50