CMS 3D CMS Logo

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

#include <HFNoseSD.h>

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

Public Member Functions

 HFNoseSD (const std::string &, const edm::EventSetup &, const SensitiveDetectorCatalog &, edm::ParameterSet const &, const SimTrackManager *)
 
uint32_t setDetUnitId (const G4Step *step) override
 
 ~HFNoseSD () 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 *)
 
bool hitExists (const G4Step *)
 
void ignoreRejection ()
 
virtual void initEvent (const BeginOfEvent *)
 
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_
 
std::string nameX_
 
std::unique_ptr< HFNoseNumberingSchemenumberingScheme_
 
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 }
 
- 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 HFNoseSD.h.

Constructor & Destructor Documentation

◆ HFNoseSD()

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

Definition at line 30 of file HFNoseSD.cc.

35  : CaloSD(name,
36  es,
37  clg,
38  p,
39  manager,
40  (float)(p.getParameter<edm::ParameterSet>("HFNoseSD").getParameter<double>("TimeSliceUnit")),
41  p.getParameter<edm::ParameterSet>("HFNoseSD").getParameter<bool>("IgnoreTrackID")),
42  hgcons_(nullptr),
43  slopeMin_(0),
44  levelT1_(99),
45  levelT2_(99),
46  tan30deg_(std::tan(30.0 * CLHEP::deg)) {
47  numberingScheme_.reset(nullptr);
48  mouseBite_.reset(nullptr);
49 
50  edm::ParameterSet m_HFN = p.getParameter<edm::ParameterSet>("HFNoseSD");
51  eminHit_ = m_HFN.getParameter<double>("EminHit") * CLHEP::MeV;
52  fiducialCut_ = m_HFN.getParameter<bool>("FiducialCut");
53  distanceFromEdge_ = m_HFN.getParameter<double>("DistanceFromEdge");
54  storeAllG4Hits_ = m_HFN.getParameter<bool>("StoreAllG4Hits");
55  rejectMB_ = m_HFN.getParameter<bool>("RejectMouseBite");
56  waferRot_ = m_HFN.getParameter<bool>("RotatedWafer");
57  cornerMinMask_ = m_HFN.getParameter<int>("CornerMinMask");
58  angles_ = m_HFN.getUntrackedParameter<std::vector<double>>("WaferAngles");
59 
60  nameX_ = ((name.find("HFNoseHits") != std::string::npos) ? "HGCalHFNoseSensitive" : "HFNoseSensitive");
61 
62  if (storeAllG4Hits_) {
63  setUseMap(false);
65  }
66 
67 #ifdef EDM_ML_DEBUG
68  edm::LogVerbatim("HFNSim") << "**************************************************"
69  << "\n"
70  << "* *"
71  << "\n"
72  << "* Constructing a HFNoseSD with name " << name << "\n"
73  << "* *"
74  << "\n"
75  << "**************************************************";
76 #endif
77  edm::LogVerbatim("HFNSim") << "HFNoseSD:: Threshold for storing hits: " << eminHit_ << " for " << name;
78  edm::LogVerbatim("HFNSim") << "Flag for storing individual Geant4 Hits " << storeAllG4Hits_;
79  edm::LogVerbatim("HFNSim") << "Fiducial volume cut with cut from eta/phi "
80  << "boundary " << fiducialCut_ << " at " << distanceFromEdge_;
81  edm::LogVerbatim("HFNSim") << "Reject MosueBite Flag: " << rejectMB_ << " cuts along " << angles_.size()
82  << " axes: " << angles_[0] << ", " << angles_[1];
83 }

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

◆ ~HFNoseSD()

HFNoseSD::~HFNoseSD ( )
overridedefault

Member Function Documentation

◆ filterHit()

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

Reimplemented from CaloSD.

Definition at line 205 of file HFNoseSD.cc.

205  {
206  return ((time <= tmaxHit) && (aHit->getEnergyDeposit() > eminHit_));
207 }

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

◆ getEnergyDeposit()

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

Reimplemented from CaloSD.

Definition at line 85 of file HFNoseSD.cc.

85  {
86  double r = aStep->GetPreStepPoint()->GetPosition().perp();
87  double z = std::abs(aStep->GetPreStepPoint()->GetPosition().z());
88 #ifdef EDM_ML_DEBUG
89  G4int parCode = aStep->GetTrack()->GetDefinition()->GetPDGEncoding();
90  G4String parName = aStep->GetTrack()->GetDefinition()->GetParticleName();
91  G4LogicalVolume* lv = aStep->GetPreStepPoint()->GetPhysicalVolume()->GetLogicalVolume();
92  edm::LogVerbatim("HFNSim") << "HFNoseSD: Hit from standard path from " << lv->GetName() << " for Track "
93  << aStep->GetTrack()->GetTrackID() << " (" << parCode << ":" << parName << ") R = " << r
94  << " Z = " << z << " slope = " << r / z << ":" << slopeMin_;
95 #endif
96  // Apply fiducial cut
97  if (r < z * slopeMin_) {
98 #ifdef EDM_ML_DEBUG
99  edm::LogVerbatim("HFNSim") << "HFNoseSD: Fiducial Volume cut";
100 #endif
101  return 0.0;
102  }
103 
104  double wt1 = getResponseWt(aStep->GetTrack());
105  double wt2 = aStep->GetTrack()->GetWeight();
106  double destep = weight_ * wt1 * (aStep->GetTotalEnergyDeposit());
107  if (wt2 > 0)
108  destep *= wt2;
109 #ifdef EDM_ML_DEBUG
110  edm::LogVerbatim("HFNSim") << "HFNoseSD: weights= " << weight_ << ":" << wt1 << ":" << wt2 << " Total weight "
111  << weight_ * wt1 * wt2 << " deStep: " << aStep->GetTotalEnergyDeposit() << ":" << destep;
112 #endif
113  return destep;
114 }

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

◆ initRun()

void HFNoseSD::initRun ( )
overrideprotectedvirtual

Reimplemented from CaloSD.

Definition at line 203 of file HFNoseSD.cc.

203 {}

◆ isItinFidVolume()

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

Definition at line 218 of file HFNoseSD.cc.

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

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

◆ setDetUnitId() [1/2]

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

Implements CaloSD.

Definition at line 116 of file HFNoseSD.cc.

116  {
117  const G4StepPoint* preStepPoint = aStep->GetPreStepPoint();
118  const G4VTouchable* touch = preStepPoint->GetTouchable();
119 
120  //determine the exact position in global coordinates in the mass geometry
121  G4ThreeVector hitPoint = preStepPoint->GetPosition();
122  float globalZ = touch->GetTranslation(0).z();
123  int iz(globalZ > 0 ? 1 : -1);
124 
125  int layer, module, cell;
126  if ((touch->GetHistoryDepth() == levelT1_) || (touch->GetHistoryDepth() == levelT2_)) {
127  layer = touch->GetReplicaNumber(0);
128  module = -1;
129  cell = -1;
130 #ifdef EDM_ML_DEBUG
131  edm::LogVerbatim("HFNSim") << "DepthsTop: " << touch->GetHistoryDepth() << ":" << levelT1_ << ":" << levelT2_
132  << " name " << touch->GetVolume(0)->GetName() << " layer:module:cell " << layer << ":"
133  << module << ":" << cell;
134 #endif
135  } else {
136  layer = touch->GetReplicaNumber(3);
137  module = touch->GetReplicaNumber(2);
138  cell = touch->GetReplicaNumber(1);
139 #ifdef EDM_ML_DEBUG
140  edm::LogVerbatim("HFNSim") << "DepthsInside: " << touch->GetHistoryDepth() << " name "
141  << touch->GetVolume(0)->GetName() << " layer:module:cell " << layer << ":" << module
142  << ":" << cell;
143 #endif
144  }
145 #ifdef EDM_ML_DEBUG
146  G4Material* mat = aStep->GetPreStepPoint()->GetMaterial();
147  edm::LogVerbatim("HFNSim") << "Depths: " << touch->GetHistoryDepth() << " name " << touch->GetVolume(0)->GetName()
148  << ":" << touch->GetReplicaNumber(0) << " " << touch->GetVolume(1)->GetName() << ":"
149  << touch->GetReplicaNumber(1) << " " << touch->GetVolume(2)->GetName() << ":"
150  << touch->GetReplicaNumber(2) << " " << touch->GetVolume(3)->GetName() << ":"
151  << touch->GetReplicaNumber(3) << " " << touch->GetVolume(4)->GetName() << ":"
152  << touch->GetReplicaNumber(4) << " "
153  << " layer:module:cell " << layer << ":" << module << ":" << cell << " Material "
154  << mat->GetName() << ":" << mat->GetRadlen();
155 #endif
156  // The following statement should be examined later before elimination
157  if (aStep->GetPreStepPoint()->GetMaterial()->GetRadlen() > 100000.)
158  return 0;
159 
160  uint32_t id = setDetUnitId(layer, module, cell, iz, hitPoint);
161  if (rejectMB_ && id != 0) {
162  auto uv = HFNoseDetId(id).waferUV();
163 #ifdef EDM_ML_DEBUG
164  edm::LogVerbatim("HFNSim") << "ID " << std::hex << id << std::dec << " " << HFNoseDetId(id);
165 #endif
166  if (mouseBite_->exclude(hitPoint, iz, uv.first, uv.second)) {
167  id = 0;
168 #ifdef EDM_ML_DEBUG
169  edm::LogVerbatim("HFNSim") << "Rejected by mousebite cutoff *****";
170 #endif
171  }
172  }
173  return id;
174 }

References TauDecayModes::dec, triggerObjects_cff::id, levelT1_, levelT2_, mouseBite_, rejectMB_, and HFNoseDetId::waferUV().

◆ setDetUnitId() [2/2]

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

Definition at line 209 of file HFNoseSD.cc.

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

References cornerMinMask_, hgcons_, triggerObjects_cff::id, HGCalDDDConstants::maskCell(), numberingScheme_, and weight_.

◆ update() [1/6]

void CaloSD::update
overrideprotected

Definition at line 575 of file CaloSD.cc.

575  {
576  endEvent();
577  slave.get()->ReserveMemory(theHC->entries());
578 
579  int count(0);
580  int wrong(0);
581  double eEM(0.0);
582  double eHAD(0.0);
583  double eEM2(0.0);
584  double eHAD2(0.0);
585  double tt(0.0);
586  double zloc(0.0);
587  double zglob(0.0);
588  double ee(0.0);
589  int hc_entries = theHC->entries();
590  for (int i = 0; i < hc_entries; ++i) {
591  if (!saveHit((*theHC)[i])) {
592  ++wrong;
593  }
594  ++count;
595  double x = (*theHC)[i]->getEM();
596  eEM += x;
597  eEM2 += x * x;
598  x = (*theHC)[i]->getHadr();
599  eHAD += x;
600  eHAD2 += x * x;
601  tt += (*theHC)[i]->getTimeSlice();
602  ee += (*theHC)[i]->getIncidentEnergy();
603  zglob += std::abs((*theHC)[i]->getEntry().z());
604  zloc += std::abs((*theHC)[i]->getEntryLocal().z());
605  }
606 
607  double norm = (count > 0) ? 1.0 / count : 0.0;
608  eEM *= norm;
609  eEM2 *= norm;
610  eHAD *= norm;
611  eHAD2 *= norm;
612  eEM2 = std::sqrt(eEM2 - eEM * eEM);
613  eHAD2 = std::sqrt(eHAD2 - eHAD * eHAD);
614  tt *= norm;
615  ee *= norm;
616  zglob *= norm;
617  zloc *= norm;
618 
619 #ifdef EDM_ML_DEBUG
620  edm::LogVerbatim("CaloSim") << "CaloSD: " << GetName() << " store " << count << " hits; " << wrong
621  << " track IDs not given properly and " << totalHits - count
622  << " hits not passing cuts\n EmeanEM= " << eEM << " ErmsEM= " << eEM2
623  << "\n EmeanHAD= " << eHAD << " ErmsHAD= " << eHAD2 << " TimeMean= " << tt
624  << " E0mean= " << ee << " Zglob= " << zglob << " Zloc= " << zloc << " ";
625 #endif
626  tkMap.erase(tkMap.begin(), tkMap.end());
627  std::vector<std::unique_ptr<CaloG4Hit>>().swap(reusehit);
628  if (useMap)
629  hitMap.erase(hitMap.begin(), hitMap.end());
630 }

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

◆ update() [2/6]

void CaloSD::update
overrideprotected

Definition at line 541 of file CaloSD.cc.

541  {
542 #ifdef EDM_ML_DEBUG
543  edm::LogVerbatim("CaloSim") << "CaloSD: Dispatched BeginOfEvent for " << GetName() << " !";
544 #endif
545  clearHits();
546  initEvent(g4Event);
547 }

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

◆ update() [3/6]

void HFNoseSD::update ( const BeginOfJob )
overrideprotectedvirtual

This routine will be called when the appropriate signal arrives.

Implements Observer< const BeginOfJob * >.

Definition at line 176 of file HFNoseSD.cc.

176  {
177  const edm::EventSetup* es = (*job)();
179  es->get<IdealGeometryRecord>().get(nameX_, hdc);
180  if (hdc.isValid()) {
181  hgcons_ = hdc.product();
184  levelT1_ = hgcons_->levelTop(0);
185  levelT2_ = hgcons_->levelTop(1);
186  double waferSize = hgcons_->waferSize(false);
187  double mouseBite = hgcons_->mouseBite(false);
188  mouseBiteCut_ = waferSize * tan30deg_ - mouseBite;
189 #ifdef EDM_ML_DEBUG
190  edm::LogVerbatim("HFNSim") << "HFNoseSD::Initialized with mode " << geom_mode_ << " Slope cut " << slopeMin_
191  << " top Level " << levelT1_ << ":" << levelT2_ << " wafer " << waferSize << ":"
192  << mouseBite;
193 #endif
194 
195  numberingScheme_ = std::make_unique<HFNoseNumberingScheme>(*hgcons_);
196  if (rejectMB_)
197  mouseBite_ = std::make_unique<HGCMouseBite>(*hgcons_, angles_, mouseBiteCut_, waferRot_);
198  } else {
199  throw cms::Exception("Unknown", "HFNoseSD") << "Cannot find HGCalDDDConstants for " << nameX_ << "\n";
200  }
201 }

References angles_, Exception, geom_mode_, HGCalDDDConstants::geomMode(), edm::EventSetup::get(), get, hgcons_, levelT1_, levelT2_, HGCalDDDConstants::levelTop(), HGCalDDDConstants::minSlope(), HGCalDDDConstants::mouseBite(), mouseBite_, mouseBiteCut_, 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 766 of file CaloSD.cc.

766  {
767  int primary = -1;
768  TrackInformation* trkInfo = cmsTrackInformation((*trk)());
769  if (trkInfo->isPrimary())
770  primary = (*trk)()->GetTrackID();
771 
772 #ifdef EDM_ML_DEBUG
773  edm::LogVerbatim("CaloSim") << "New track: isPrimary " << trkInfo->isPrimary() << " primary ID = " << primary
774  << " primary ancestor ID " << primAncestor;
775 #endif
776 
777  // update the information if a different primary track ID
778 
779  if (primary > 0 && primary != primAncestor) {
780  primAncestor = primary;
781 
782  // clean the hits information
783 
784  if (theHC->entries() > 0)
786  }
787 }

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

◆ update() [6/6]

void CaloSD::update
overrideprotected

Definition at line 549 of file CaloSD.cc.

549  {
550  int id = (*trk)()->GetTrackID();
551  TrackInformation* trkI = cmsTrackInformation((*trk)());
552  int lastTrackID = -1;
553  if (trkI)
554  lastTrackID = trkI->getIDonCaloSurface();
555  if (id == lastTrackID) {
556  const TrackContainer* trksForThisEvent = m_trackManager->trackContainer();
557  if (trksForThisEvent != nullptr) {
558  int it = (int)(trksForThisEvent->size()) - 1;
559  if (it >= 0) {
560  TrackWithHistory* trkH = (*trksForThisEvent)[it];
561  if (trkH->trackID() == (unsigned int)(id))
562  tkMap[id] = trkH;
563 #ifdef EDM_ML_DEBUG
564  edm::LogVerbatim("CaloSim") << "CaloSD: get track " << it << " from Container of size "
565  << trksForThisEvent->size() << " with ID " << trkH->trackID();
566  } else {
567  edm::LogVerbatim("CaloSim") << "CaloSD: get track " << it << " from Container of size "
568  << trksForThisEvent->size() << " with no ID";
569 #endif
570  }
571  }
572  }
573 }

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

Member Data Documentation

◆ angles_

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

Definition at line 53 of file HFNoseSD.h.

Referenced by HFNoseSD(), and update().

◆ cornerMinMask_

int HFNoseSD::cornerMinMask_
private

Definition at line 49 of file HFNoseSD.h.

Referenced by HFNoseSD(), and setDetUnitId().

◆ distanceFromEdge_

double HFNoseSD::distanceFromEdge_
private

Definition at line 48 of file HFNoseSD.h.

Referenced by HFNoseSD(), and isItinFidVolume().

◆ eminHit_

double HFNoseSD::eminHit_
private

Definition at line 47 of file HFNoseSD.h.

Referenced by filterHit(), and HFNoseSD().

◆ fiducialCut_

bool HFNoseSD::fiducialCut_
private

Definition at line 51 of file HFNoseSD.h.

Referenced by HFNoseSD(), and isItinFidVolume().

◆ geom_mode_

HGCalGeometryMode::GeometryMode HFNoseSD::geom_mode_
private

Definition at line 46 of file HFNoseSD.h.

Referenced by update().

◆ hgcons_

const HGCalDDDConstants* HFNoseSD::hgcons_
private

Definition at line 42 of file HFNoseSD.h.

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

◆ levelT1_

int HFNoseSD::levelT1_
private

Definition at line 49 of file HFNoseSD.h.

Referenced by setDetUnitId(), and update().

◆ levelT2_

int HFNoseSD::levelT2_
private

Definition at line 49 of file HFNoseSD.h.

Referenced by setDetUnitId(), and update().

◆ mouseBite_

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

Definition at line 44 of file HFNoseSD.h.

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

◆ mouseBiteCut_

double HFNoseSD::mouseBiteCut_
private

Definition at line 48 of file HFNoseSD.h.

Referenced by update().

◆ nameX_

std::string HFNoseSD::nameX_
private

Definition at line 45 of file HFNoseSD.h.

Referenced by HFNoseSD(), and update().

◆ numberingScheme_

std::unique_ptr<HFNoseNumberingScheme> HFNoseSD::numberingScheme_
private

Definition at line 43 of file HFNoseSD.h.

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

◆ rejectMB_

bool HFNoseSD::rejectMB_
private

Definition at line 51 of file HFNoseSD.h.

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

◆ slopeMin_

double HFNoseSD::slopeMin_
private

Definition at line 47 of file HFNoseSD.h.

Referenced by getEnergyDeposit(), and update().

◆ storeAllG4Hits_

bool HFNoseSD::storeAllG4Hits_
private

Definition at line 50 of file HFNoseSD.h.

Referenced by HFNoseSD().

◆ tan30deg_

const double HFNoseSD::tan30deg_
private

Definition at line 52 of file HFNoseSD.h.

Referenced by update().

◆ waferRot_

bool HFNoseSD::waferRot_
private

Definition at line 51 of file HFNoseSD.h.

Referenced by HFNoseSD(), and update().

◆ weight_

double HFNoseSD::weight_
private

Definition at line 47 of file HFNoseSD.h.

Referenced by getEnergyDeposit(), and setDetUnitId().

CaloSD::tkMap
std::map< int, TrackWithHistory * > tkMap
Definition: CaloSD.h:180
HFNoseSD::angles_
std::vector< double > angles_
Definition: HFNoseSD.h:53
HFNoseSD::numberingScheme_
std::unique_ptr< HFNoseNumberingScheme > numberingScheme_
Definition: HFNoseSD.h:43
HFNoseSD::initRun
void initRun() override
Definition: HFNoseSD.cc:203
CaloSD::tmaxHit
double tmaxHit
Definition: CaloSD.h:137
mps_fire.i
i
Definition: mps_fire.py:428
TrackInformation::getIDonCaloSurface
int getIDonCaloSurface() const
Definition: TrackInformation.h:39
CaloSD::saveHit
bool saveHit(CaloG4Hit *)
Definition: CaloSD.cc:730
groupFilesInBlocks.tt
int tt
Definition: groupFilesInBlocks.py:144
HFNoseSD::distanceFromEdge_
double distanceFromEdge_
Definition: HFNoseSD.h:48
HGCalDDDConstants::geomMode
HGCalGeometryMode::GeometryMode geomMode() const
Definition: HGCalDDDConstants.h:53
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
HFNoseSD::storeAllG4Hits_
bool storeAllG4Hits_
Definition: HFNoseSD.h:50
MeV
const double MeV
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
DDAxes::x
HFNoseSD::levelT1_
int levelT1_
Definition: HFNoseSD.h:49
HFNoseDetId
Definition: HFNoseDetId.h:22
HFNoseSD::fiducialCut_
bool fiducialCut_
Definition: HFNoseSD.h:51
HFNoseSD::mouseBiteCut_
double mouseBiteCut_
Definition: HFNoseSD.h:48
CaloSD::getResponseWt
double getResponseWt(const G4Track *)
Definition: CaloSD.cc:709
DetId
Definition: DetId.h:17
HFNoseSD::weight_
double weight_
Definition: HFNoseSD.h:47
HFNoseSD::rejectMB_
bool rejectMB_
Definition: HFNoseSD.h:51
HFNoseSD::cornerMinMask_
int cornerMinMask_
Definition: HFNoseSD.h:49
CaloSD::useMap
bool useMap
Definition: CaloSD.h:164
edm::EventSetup::get
T get() const
Definition: EventSetup.h:80
TrackInformation::isPrimary
bool isPrimary() const
Definition: TrackInformation.h:23
HFNoseSD::waferRot_
bool waferRot_
Definition: HFNoseSD.h:51
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
CaloG4Hit::getEnergyDeposit
double getEnergyDeposit() const
Definition: CaloG4Hit.h:77
DDAxes::z
edm::ESHandle
Definition: DTSurvey.h:22
submitPVResolutionJobs.count
count
Definition: submitPVResolutionJobs.py:352
CaloSD::clearHits
void clearHits() override
Definition: CaloSD.cc:632
HFNoseSD::geom_mode_
HGCalGeometryMode::GeometryMode geom_mode_
Definition: HFNoseSD.h:46
HGCalDDDConstants::mouseBite
double mouseBite(bool reco) const
Definition: HGCalDDDConstants.cc:878
HFNoseDetId::waferUV
std::pair< int, int > waferUV() const
Definition: HFNoseDetId.h:81
edm::ParameterSet
Definition: ParameterSet.h:47
CaloSD::hitMap
std::map< CaloHitID, CaloG4Hit * > hitMap
Definition: CaloSD.h:179
HFNoseSD::levelT2_
int levelT2_
Definition: HFNoseSD.h:49
CaloSD::theHC
CaloG4HitCollection * theHC
Definition: CaloSD.h:159
CaloSD::totalHits
int totalHits
Definition: CaloSD.h:170
HFNoseSD::setDetUnitId
uint32_t setDetUnitId(const G4Step *step) override
Definition: HFNoseSD.cc:116
CaloSD::slave
std::unique_ptr< CaloSlaveSD > slave
Definition: CaloSD.h:156
funct::tan
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
TrackInformation
Definition: TrackInformation.h:8
createfilelist.int
int
Definition: createfilelist.py:10
HFNoseSD::tan30deg_
const double tan30deg_
Definition: HFNoseSD.h:52
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:33
CaloSD::setNumberCheckedHits
void setNumberCheckedHits(int val)
Definition: CaloSD.h:116
edm::EventSetup
Definition: EventSetup.h:57
CaloSD::reusehit
std::vector< std::unique_ptr< CaloG4Hit > > reusehit
Definition: CaloSD.h:181
get
#define get
HFNoseSD::mouseBite_
std::unique_ptr< HGCMouseBite > mouseBite_
Definition: HFNoseSD.h:44
alignCSCRings.r
r
Definition: alignCSCRings.py:93
HFNoseSD::nameX_
std::string nameX_
Definition: HFNoseSD.h:45
CaloSD::m_trackManager
const SimTrackManager * m_trackManager
Definition: CaloSD.h:154
HGCalDDDConstants::minSlope
double minSlope() const
Definition: HGCalDDDConstants.h:95
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
CaloSD::cleanHitCollection
void cleanHitCollection()
Definition: CaloSD.cc:789
edm::LogVerbatim
Log< level::Info, true > LogVerbatim
Definition: MessageLogger.h:128
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:31
CaloSD::primAncestor
int primAncestor
Definition: CaloSD.h:168
Exception
Definition: hltDiff.cc:246
HFNoseSD::hgcons_
const HGCalDDDConstants * hgcons_
Definition: HFNoseSD.h:42
HFNoseSD::eminHit_
double eminHit_
Definition: HFNoseSD.h:47
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:279
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
HFNoseSD::slopeMin_
double slopeMin_
Definition: HFNoseSD.h:47
HGCalDDDConstants::levelTop
int levelTop(int ind=0) const
Definition: HGCalDDDConstants.h:87
CaloSD::setUseMap
void setUseMap(bool val)
Definition: CaloSD.h:105
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
CaloSD::initEvent
virtual void initEvent(const BeginOfEvent *)
Definition: CaloSD.cc:651
ntuplemaker.time
time
Definition: ntuplemaker.py:310
HGCalDDDConstants::waferSize
double waferSize(bool reco) const
Definition: HGCalDDDConstants.h:169
TauDecayModes.dec
dec
Definition: TauDecayModes.py:143
HGCalDDDConstants::maskCell
bool maskCell(const DetId &id, int corners) const
Definition: HGCalDDDConstants.cc:745
IdealGeometryRecord
Definition: IdealGeometryRecord.h:25
SimTrackManager::trackContainer
const TrackContainer * trackContainer() const
Definition: SimTrackManager.h:52
CaloSD::endEvent
virtual void endEvent()
Definition: CaloSD.cc:653