CMS 3D CMS Logo

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

#include <HGCScintSD.h>

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

Public Member Functions

 HGCScintSD (const std::string &, const edm::EventSetup &, const SensitiveDetectorCatalog &, edm::ParameterSet const &, const SimTrackManager *)
 
uint32_t setDetUnitId (const G4Step *step) override
 
 ~HGCScintSD () override=default
 
- Public Member Functions inherited from CaloSD
 CaloSD (const std::string &aSDname, const edm::EventSetup &es, 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 edm::EventSetup &es, const SensitiveDetectorCatalog &clg, edm::ParameterSet const &p)
 
- 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 edm::EventSetup &es, const SensitiveDetectorCatalog &, edm::ParameterSet const &p, 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

double birk1_
 
double birk2_
 
double birk3_
 
double distanceFromEdge_
 
double eminHit_
 
bool fiducialCut_
 
HGCalGeometryMode::GeometryMode geom_mode_
 
const HGCalDDDConstantshgcons_
 
int levelT1_
 
int levelT2_
 
DetId::Detector mydet_
 
std::string nameX_
 
std::unique_ptr< HGCalNumberingSchemenumberingScheme_
 
double slopeMin_
 
bool storeAllG4Hits_
 
bool useBirk_
 
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 19 of file HGCScintSD.h.

Constructor & Destructor Documentation

◆ HGCScintSD()

HGCScintSD::HGCScintSD ( const std::string &  name,
const edm::EventSetup es,
const SensitiveDetectorCatalog clg,
edm::ParameterSet const &  p,
const SimTrackManager manager 
)

Definition at line 33 of file HGCScintSD.cc.

38  : CaloSD(name,
39  es,
40  clg,
41  p,
42  manager,
43  (float)(p.getParameter<edm::ParameterSet>("HGCSD").getParameter<double>("TimeSliceUnit")),
44  p.getParameter<edm::ParameterSet>("HGCSD").getParameter<bool>("IgnoreTrackID")),
45  hgcons_(nullptr),
46  slopeMin_(0),
47  levelT1_(99),
48  levelT2_(99) {
49  numberingScheme_.reset(nullptr);
50 
51  edm::ParameterSet m_HGC = p.getParameter<edm::ParameterSet>("HGCScintSD");
52  eminHit_ = m_HGC.getParameter<double>("EminHit") * CLHEP::MeV;
53  fiducialCut_ = m_HGC.getParameter<bool>("FiducialCut");
54  distanceFromEdge_ = m_HGC.getParameter<double>("DistanceFromEdge");
55  useBirk_ = m_HGC.getParameter<bool>("UseBirkLaw");
56  birk1_ = m_HGC.getParameter<double>("BirkC1") * (CLHEP::g / (CLHEP::MeV * CLHEP::cm2));
57  birk2_ = m_HGC.getParameter<double>("BirkC2");
58  birk3_ = m_HGC.getParameter<double>("BirkC3");
59  storeAllG4Hits_ = m_HGC.getParameter<bool>("StoreAllG4Hits");
60 
61  if (storeAllG4Hits_) {
62  setUseMap(false);
64  }
65 
66  //this is defined in the hgcsens.xml
67  G4String myName = name;
69  nameX_ = "HGCal";
70  if (myName.find("HitsHEback") != std::string::npos) {
72  nameX_ = "HGCalHEScintillatorSensitive";
73  }
74 
75 #ifdef EDM_ML_DEBUG
76  edm::LogVerbatim("HGCSim") << "**************************************************"
77  << "\n"
78  << "* *"
79  << "\n"
80  << "* Constructing a HGCScintSD with name " << name << "\n"
81  << "* *"
82  << "\n"
83  << "**************************************************";
84 #endif
85  edm::LogVerbatim("HGCSim") << "HGCScintSD:: Threshold for storing hits: " << eminHit_ << " for " << nameX_
86  << " detector " << mydet_;
87  edm::LogVerbatim("HGCSim") << "Flag for storing individual Geant4 Hits " << storeAllG4Hits_;
88  edm::LogVerbatim("HGCSim") << "Fiducial volume cut with cut from eta/phi "
89  << "boundary " << fiducialCut_ << " at " << distanceFromEdge_;
90  edm::LogVerbatim("HGCSim") << "Use of Birks law is set to " << useBirk_
91  << " with three constants kB = " << birk1_ << ", C1 = " << birk2_ << ", C2 = " << birk3_;
92 }

References birk1_, birk2_, birk3_, distanceFromEdge_, eminHit_, fiducialCut_, DetId::Forward, g, edm::ParameterSet::getParameter(), DetId::HGCalHSc, MeV, mydet_, Skims_PA_cff::name, nameX_, numberingScheme_, AlCaHLTBitMon_ParallelJobs::p, CaloSD::setNumberCheckedHits(), CaloSD::setUseMap(), storeAllG4Hits_, and useBirk_.

◆ ~HGCScintSD()

HGCScintSD::~HGCScintSD ( )
overridedefault

Member Function Documentation

◆ filterHit()

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

Reimplemented from CaloSD.

Definition at line 209 of file HGCScintSD.cc.

209  {
210  return ((time <= tmaxHit) && (aHit->getEnergyDeposit() > eminHit_));
211 }

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

◆ getEnergyDeposit()

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

Reimplemented from CaloSD.

Definition at line 94 of file HGCScintSD.cc.

94  {
95  double r = aStep->GetPreStepPoint()->GetPosition().perp();
96  double z = std::abs(aStep->GetPreStepPoint()->GetPosition().z());
97 #ifdef EDM_ML_DEBUG
98  G4int parCode = aStep->GetTrack()->GetDefinition()->GetPDGEncoding();
99  G4String parName = aStep->GetTrack()->GetDefinition()->GetParticleName();
100  G4LogicalVolume* lv = aStep->GetPreStepPoint()->GetPhysicalVolume()->GetLogicalVolume();
101  edm::LogVerbatim("HGCSim") << "HGCScintSD: Hit from standard path from " << lv->GetName() << " for Track "
102  << aStep->GetTrack()->GetTrackID() << " (" << parCode << ":" << parName << ") R = " << r
103  << " Z = " << z << " slope = " << r / z << ":" << slopeMin_;
104 #endif
105  // Apply fiducial cut
106  if (r < z * slopeMin_) {
107 #ifdef EDM_ML_DEBUG
108  edm::LogVerbatim("HGCSim") << "HGCScintSD: Fiducial Volume cut";
109 #endif
110  return 0.0;
111  }
112 
113  double wt1 = getResponseWt(aStep->GetTrack());
114  double wt2 = aStep->GetTrack()->GetWeight();
115  double wt3 = (useBirk_ ? getAttenuation(aStep, birk1_, birk2_, birk3_) : 1.0);
116  double destep = weight_ * wt1 * wt3 * (aStep->GetTotalEnergyDeposit());
117  if (wt2 > 0)
118  destep *= wt2;
119 #ifdef EDM_ML_DEBUG
120  edm::LogVerbatim("HGCalSim") << "HGCScintSD: weights= " << weight_ << ":" << wt1 << ":" << wt2 << ":" << wt3
121  << " Total weight " << weight_ * wt1 * wt2 * wt3
122  << " deStep: " << aStep->GetTotalEnergyDeposit() << ":" << destep;
123 #endif
124  return destep;
125 }

References funct::abs(), birk1_, birk2_, birk3_, CaloSD::getAttenuation(), CaloSD::getResponseWt(), alignCSCRings::r, slopeMin_, useBirk_, weight_, and z.

◆ initRun()

void HGCScintSD::initRun ( )
overrideprotectedvirtual

Reimplemented from CaloSD.

Definition at line 207 of file HGCScintSD.cc.

207 {}

◆ isItinFidVolume()

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

Definition at line 218 of file HGCScintSD.cc.

218  {
219  if (fiducialCut_) {
220  return (hgcons_->distFromEdgeTrap(pos.x(), pos.y(), pos.z()) > distanceFromEdge_);
221  } else {
222  return true;
223  }
224 }

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

Referenced by setDetUnitId().

◆ setDetUnitId() [1/2]

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

Implements CaloSD.

Definition at line 127 of file HGCScintSD.cc.

127  {
128  const G4StepPoint* preStepPoint = aStep->GetPreStepPoint();
129  const G4VTouchable* touch = preStepPoint->GetTouchable();
130 
131 #ifdef EDM_ML_DEBUG
132  edm::LogVerbatim("HGCSim") << "DepthsTop: " << touch->GetHistoryDepth() << ":" << levelT1_ << ":" << levelT2_;
133  printDetectorLevels(touch);
134 #endif
135  //determine the exact position in global coordinates in the mass geometry
136  G4ThreeVector hitPoint = preStepPoint->GetPosition();
137  float globalZ = touch->GetTranslation(0).z();
138  int iz(globalZ > 0 ? 1 : -1);
139 
140  int layer(0), module(-1), cell(-1);
142  layer = touch->GetReplicaNumber(1);
143  } else if ((touch->GetHistoryDepth() == levelT1_) || (touch->GetHistoryDepth() == levelT2_)) {
144  layer = touch->GetReplicaNumber(0);
145 #ifdef EDM_ML_DEBUG
146  edm::LogVerbatim("HGCSim") << "DepthsTop: " << touch->GetHistoryDepth() << ":" << levelT1_ << ":" << levelT2_
147  << " name " << touch->GetVolume(0)->GetName() << " layer:module:cell " << layer << ":"
148  << module << ":" << cell;
149 #endif
150  } else {
151  layer = touch->GetReplicaNumber(3);
152  module = touch->GetReplicaNumber(2);
153  cell = touch->GetReplicaNumber(1);
154 #ifdef EDM_ML_DEBUG
155  edm::LogVerbatim("HGCSim") << "DepthsInside: " << touch->GetHistoryDepth() << " name "
156  << touch->GetVolume(0)->GetName() << " layer:module:cell " << layer << ":" << module
157  << ":" << cell;
158 #endif
159  }
160 #ifdef EDM_ML_DEBUG
161  G4Material* mat = aStep->GetPreStepPoint()->GetMaterial();
162  edm::LogVerbatim("HGCSim") << "Depths: " << touch->GetHistoryDepth() << " name " << touch->GetVolume(0)->GetName()
163  << ":" << touch->GetReplicaNumber(0) << " " << touch->GetVolume(1)->GetName() << ":"
164  << touch->GetReplicaNumber(1) << " " << touch->GetVolume(2)->GetName() << ":"
165  << touch->GetReplicaNumber(2) << " " << touch->GetVolume(3)->GetName() << ":"
166  << touch->GetReplicaNumber(3) << " " << touch->GetVolume(4)->GetName() << ":"
167  << touch->GetReplicaNumber(4) << " "
168  << " layer:module:cell " << layer << ":" << module << ":" << cell << " Material "
169  << mat->GetName() << ":" << mat->GetRadlen();
170 #endif
171  // The following statement should be examined later before elimination
172  if (aStep->GetPreStepPoint()->GetMaterial()->GetRadlen() > 100000.)
173  return 0;
174 
175  uint32_t id = setDetUnitId(layer, module, cell, iz, hitPoint);
176  if (!isItinFidVolume(hitPoint)) {
177 #ifdef EDM_ML_DEBUG
178  edm::LogVerbatim("HGCSim") << "ID " << std::hex << id << std::dec << " " << HGCScintillatorDetId(id)
179  << " is rejected by fiducilal volume cut";
180 #endif
181  id = 0;
182  }
183  return id;
184 }

References TauDecayModes::dec, geom_mode_, triggerObjects_cff::id, isItinFidVolume(), phase1PixelTopology::layer, levelT1_, levelT2_, CaloSD::printDetectorLevels(), and HGCalGeometryMode::TrapezoidModule.

◆ setDetUnitId() [2/2]

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

Definition at line 213 of file HGCScintSD.cc.

213  {
214  uint32_t id = numberingScheme_ ? numberingScheme_->getUnitID(layer, module, cell, iz, pos, weight_) : 0;
215  return id;
216 }

References triggerObjects_cff::id, phase1PixelTopology::layer, numberingScheme_, and weight_.

◆ update() [1/6]

void CaloSD::update
overrideprotected

Definition at line 743 of file CaloSD.cc.

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

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

◆ update() [2/6]

void CaloSD::update
overrideprotected

Definition at line 709 of file CaloSD.cc.

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

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

◆ update() [3/6]

void HGCScintSD::update ( const BeginOfJob )
overrideprotectedvirtual

This routine will be called when the appropriate signal arrives.

Implements Observer< const BeginOfJob * >.

Definition at line 186 of file HGCScintSD.cc.

186  {
187  const edm::EventSetup* es = (*job)();
189  es->get<IdealGeometryRecord>().get(nameX_, hdc);
190  if (hdc.isValid()) {
191  hgcons_ = hdc.product();
194  levelT1_ = hgcons_->levelTop(0);
195  levelT2_ = hgcons_->levelTop(1);
196 #ifdef EDM_ML_DEBUG
197  edm::LogVerbatim("HGCSim") << "HGCScintSD::Initialized with mode " << geom_mode_ << " Slope cut " << slopeMin_
198  << " top Level " << levelT1_ << ":" << levelT2_;
199 #endif
200 
201  numberingScheme_ = std::make_unique<HGCalNumberingScheme>(*hgcons_, mydet_, nameX_);
202  } else {
203  throw cms::Exception("Unknown", "HGCScintSD") << "Cannot find HGCalDDDConstants for " << nameX_ << "\n";
204  }
205 }

References Exception, geom_mode_, HGCalDDDConstants::geomMode(), edm::EventSetup::get(), get, hgcons_, levelT1_, levelT2_, HGCalDDDConstants::levelTop(), HGCalDDDConstants::minSlope(), mydet_, nameX_, numberingScheme_, and slopeMin_.

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 965 of file CaloSD.cc.

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

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

◆ update() [6/6]

void CaloSD::update
overrideprotected

Definition at line 717 of file CaloSD.cc.

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

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

Member Data Documentation

◆ birk1_

double HGCScintSD::birk1_
private

Definition at line 50 of file HGCScintSD.h.

Referenced by getEnergyDeposit(), and HGCScintSD().

◆ birk2_

double HGCScintSD::birk2_
private

Definition at line 50 of file HGCScintSD.h.

Referenced by getEnergyDeposit(), and HGCScintSD().

◆ birk3_

double HGCScintSD::birk3_
private

Definition at line 50 of file HGCScintSD.h.

Referenced by getEnergyDeposit(), and HGCScintSD().

◆ distanceFromEdge_

double HGCScintSD::distanceFromEdge_
private

Definition at line 46 of file HGCScintSD.h.

Referenced by HGCScintSD(), and isItinFidVolume().

◆ eminHit_

double HGCScintSD::eminHit_
private

Definition at line 46 of file HGCScintSD.h.

Referenced by filterHit(), and HGCScintSD().

◆ fiducialCut_

bool HGCScintSD::fiducialCut_
private

Definition at line 48 of file HGCScintSD.h.

Referenced by HGCScintSD(), and isItinFidVolume().

◆ geom_mode_

HGCalGeometryMode::GeometryMode HGCScintSD::geom_mode_
private

Definition at line 45 of file HGCScintSD.h.

Referenced by setDetUnitId(), and update().

◆ hgcons_

const HGCalDDDConstants* HGCScintSD::hgcons_
private

Definition at line 41 of file HGCScintSD.h.

Referenced by isItinFidVolume(), and update().

◆ levelT1_

int HGCScintSD::levelT1_
private

Definition at line 47 of file HGCScintSD.h.

Referenced by setDetUnitId(), and update().

◆ levelT2_

int HGCScintSD::levelT2_
private

Definition at line 47 of file HGCScintSD.h.

Referenced by setDetUnitId(), and update().

◆ mydet_

DetId::Detector HGCScintSD::mydet_
private

Definition at line 43 of file HGCScintSD.h.

Referenced by HGCScintSD(), and update().

◆ nameX_

std::string HGCScintSD::nameX_
private

Definition at line 44 of file HGCScintSD.h.

Referenced by HGCScintSD(), and update().

◆ numberingScheme_

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

Definition at line 42 of file HGCScintSD.h.

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

◆ slopeMin_

double HGCScintSD::slopeMin_
private

Definition at line 46 of file HGCScintSD.h.

Referenced by getEnergyDeposit(), and update().

◆ storeAllG4Hits_

bool HGCScintSD::storeAllG4Hits_
private

Definition at line 48 of file HGCScintSD.h.

Referenced by HGCScintSD().

◆ useBirk_

bool HGCScintSD::useBirk_
private

Definition at line 49 of file HGCScintSD.h.

Referenced by getEnergyDeposit(), and HGCScintSD().

◆ weight_

double HGCScintSD::weight_
private

Definition at line 50 of file HGCScintSD.h.

Referenced by getEnergyDeposit(), and setDetUnitId().

CaloSD::tkMap
std::map< int, TrackWithHistory * > tkMap
Definition: CaloSD.h:185
HGCScintSD::eminHit_
double eminHit_
Definition: HGCScintSD.h:46
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:897
groupFilesInBlocks.tt
int tt
Definition: groupFilesInBlocks.py:144
HGCScintSD::weight_
double weight_
Definition: HGCScintSD.h:50
HGCScintSD::isItinFidVolume
bool isItinFidVolume(const G4ThreeVector &)
Definition: HGCScintSD.cc:218
HGCalDDDConstants::geomMode
HGCalGeometryMode::GeometryMode geomMode() const
Definition: HGCalDDDConstants.h:54
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
edm::swap
void swap(Association< C > &lhs, Association< C > &rhs)
Definition: Association.h:117
TrackWithHistory
Definition: TrackWithHistory.h:16
pos
Definition: PixelAliasList.h:18
HGCalDDDConstants::distFromEdgeTrap
double distFromEdgeTrap(double x, double y, double z) const
Definition: HGCalDDDConstants.cc:325
CaloSD::getAttenuation
double getAttenuation(const G4Step *aStep, double birk1, double birk2, double birk3) const
Definition: CaloSD.cc:685
protons_cff.time
time
Definition: protons_cff.py:39
MeV
const double MeV
DDAxes::x
HGCScintSD::slopeMin_
double slopeMin_
Definition: HGCScintSD.h:46
CaloSD::getResponseWt
double getResponseWt(const G4Track *)
Definition: CaloSD.cc:876
CaloSD::useMap
bool useMap
Definition: CaloSD.h:168
edm::EventSetup::get
T get() const
Definition: EventSetup.h:87
TrackInformation::isPrimary
bool isPrimary() const
Definition: TrackInformation.h:27
HGCScintSD::numberingScheme_
std::unique_ptr< HGCalNumberingScheme > numberingScheme_
Definition: HGCScintSD.h:42
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
CaloG4Hit::getEnergyDeposit
double getEnergyDeposit() const
Definition: CaloG4Hit.h:78
DDAxes::z
HGCScintSD::mydet_
DetId::Detector mydet_
Definition: HGCScintSD.h:43
edm::ESHandle
Definition: DTSurvey.h:22
HGCScintSD::birk2_
double birk2_
Definition: HGCScintSD.h:50
HGCScintSD::nameX_
std::string nameX_
Definition: HGCScintSD.h:44
submitPVResolutionJobs.count
count
Definition: submitPVResolutionJobs.py:352
CaloSD::clearHits
void clearHits() override
Definition: CaloSD.cc:800
HGCScintSD::geom_mode_
HGCalGeometryMode::GeometryMode geom_mode_
Definition: HGCScintSD.h:45
phase1PixelTopology::layer
constexpr std::array< uint8_t, layerIndexSize > layer
Definition: phase1PixelTopology.h:99
HGCScintSD::birk3_
double birk3_
Definition: HGCScintSD.h:50
HGCScintSD::birk1_
double birk1_
Definition: HGCScintSD.h:50
HGCScintSD::storeAllG4Hits_
bool storeAllG4Hits_
Definition: HGCScintSD.h:48
edm::ParameterSet
Definition: ParameterSet.h:47
CaloSD::hitMap
std::map< CaloHitID, CaloG4Hit * > hitMap
Definition: CaloSD.h:184
HGCalGeometryMode::TrapezoidModule
Definition: HGCalGeometryMode.h:35
CaloSD::theHC
CaloG4HitCollection * theHC
Definition: CaloSD.h:163
CaloSD::totalHits
int totalHits
Definition: CaloSD.h:174
HGCScintSD::distanceFromEdge_
double distanceFromEdge_
Definition: HGCScintSD.h:46
CaloSD::slave
std::unique_ptr< CaloSlaveSD > slave
Definition: CaloSD.h:160
TrackInformation
Definition: TrackInformation.h:12
createfilelist.int
int
Definition: createfilelist.py:10
CaloSD::CaloSD
CaloSD(const std::string &aSDname, const edm::EventSetup &es, const SensitiveDetectorCatalog &clg, edm::ParameterSet const &p, const SimTrackManager *, float timeSlice=1., bool ignoreTkID=false)
Definition: CaloSD.cc:35
CaloSD::printDetectorLevels
void printDetectorLevels(const G4VTouchable *) const
Definition: CaloSD.cc:1104
CaloSD::setNumberCheckedHits
void setNumberCheckedHits(int val)
Definition: CaloSD.h:119
HGCScintSD::setDetUnitId
uint32_t setDetUnitId(const G4Step *step) override
Definition: HGCScintSD.cc:127
edm::EventSetup
Definition: EventSetup.h:58
CaloSD::reusehit
std::vector< std::unique_ptr< CaloG4Hit > > reusehit
Definition: CaloSD.h:186
get
#define get
HGCScintSD::levelT2_
int levelT2_
Definition: HGCScintSD.h:47
alignCSCRings.r
r
Definition: alignCSCRings.py:93
CaloSD::m_trackManager
const SimTrackManager * m_trackManager
Definition: CaloSD.h:158
HGCalDDDConstants::minSlope
double minSlope() const
Definition: HGCalDDDConstants.h:96
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:96
HGCScintSD::useBirk_
bool useBirk_
Definition: HGCScintSD.h:49
HGCScintSD::levelT1_
int levelT1_
Definition: HGCScintSD.h:47
CaloSD::cleanHitCollection
void cleanHitCollection()
Definition: CaloSD.cc:988
HGCScintillatorDetId
Definition: HGCScintillatorDetId.h:23
edm::LogVerbatim
Log< level::Info, true > LogVerbatim
Definition: MessageLogger.h:128
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:29
DetId::HGCalHSc
Definition: DetId.h:34
CaloSD::primAncestor
int primAncestor
Definition: CaloSD.h:172
HGCScintSD::hgcons_
const HGCalDDDConstants * hgcons_
Definition: HGCScintSD.h:41
Exception
Definition: hltDiff.cc:245
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
HGCalDDDConstants::levelTop
int levelTop(int ind=0) const
Definition: HGCalDDDConstants.h:88
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:496
HGCScintSD::initRun
void initRun() override
Definition: HGCScintSD.cc:207
CaloSD::initEvent
virtual void initEvent(const BeginOfEvent *)
Definition: CaloSD.cc:819
DetId::Forward
Definition: DetId.h:30
TauDecayModes.dec
dec
Definition: TauDecayModes.py:143
HGCScintSD::fiducialCut_
bool fiducialCut_
Definition: HGCScintSD.h:48
IdealGeometryRecord
Definition: IdealGeometryRecord.h:25
SimTrackManager::trackContainer
const TrackContainer * trackContainer() const
Definition: SimTrackManager.h:52
CaloSD::endEvent
virtual void endEvent()
Definition: CaloSD.cc:821
g
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
Definition: Activities.doc:4