CMS 3D CMS Logo

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

#include <MuonSensitiveDetector.h>

Inheritance diagram for MuonSensitiveDetector:
SensitiveTkDetector Observer< const BeginOfEvent * > SensitiveDetector

Public Member Functions

void clearHits () override
 
void EndOfEvent (G4HCofThisEvent *) override
 
void fillHits (edm::PSimHitContainer &, const std::string &) override
 
const MuonSlaveSDGetSlaveMuon () const
 
 MuonSensitiveDetector (const std::string &, const edm::EventSetup &, const SensitiveDetectorCatalog &, edm::ParameterSet const &, const SimTrackManager *)
 
G4bool ProcessHits (G4Step *, G4TouchableHistory *) override
 
uint32_t setDetUnitId (const G4Step *) override
 
 ~MuonSensitiveDetector () override
 
- Public Member Functions inherited from SensitiveTkDetector
 SensitiveTkDetector (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 BeginOfEvent * >
 Observer ()
 
void slotForUpdate (const BeginOfEvent * iT)
 
virtual ~Observer ()
 

Protected Member Functions

void update (const BeginOfEvent *) override
 This routine will be called when the appropriate signal arrives. More...
 
- 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 > &)
 

Private Member Functions

Local3DPoint cmsUnits (const Local3DPoint &v)
 
void createHit (const G4Step *)
 
Local3DPoint FinalStepPositionVsParent (const G4Step *currentStep, G4int levelsUp)
 
Local3DPoint InitialStepPositionVsParent (const G4Step *currentStep, G4int levelsUp)
 
bool newHit (const G4Step *)
 
void saveHit ()
 
void updateHit (const G4Step *)
 

Private Attributes

bool allMuonsPersistent
 
MuonSubDetectordetector
 
float ePersistentCutGeV
 
MuonG4Numberingg4numbering
 
uint32_t newDetUnitId
 
MuonSimHitNumberingSchemenumbering
 
bool printHits
 
MuonSlaveSDslaveMuon
 
uint32_t theDetUnitId
 
G4ProcessTypeEnumeratortheG4ProcessTypeEnumerator
 
UpdatablePSimHittheHit
 
const SimTrackManagertheManager
 
SimHitPrinterthePrinter
 
const G4VPhysicalVolume * thePV
 
const MuonFrameRotationtheRotation
 
int theTrackID
 

Additional Inherited Members

- Protected Types inherited from SensitiveDetector
enum  coordinates { WorldCoordinates, LocalCoordinates }
 

Detailed Description

implementation of SensitiveDetector for the muon detector; a MuonSlaveSD handles the interfacing to the database; numbering scheme are booked according to the detector name

Author
Arno Straessner, CERN arno..nosp@m.stra.nosp@m.essne.nosp@m.r@ce.nosp@m.rn.ch

Modification: 19/05/03. P.Arce Add SimTracks selection

Definition at line 37 of file MuonSensitiveDetector.h.

Constructor & Destructor Documentation

◆ MuonSensitiveDetector()

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

Definition at line 39 of file MuonSensitiveDetector.cc.

44  : SensitiveTkDetector(name, es, clg, p),
45  thePV(nullptr),
46  theHit(nullptr),
47  theDetUnitId(0),
48  newDetUnitId(0),
49  theTrackID(0),
50  theManager(manager) {
51  edm::ParameterSet m_MuonSD = p.getParameter<edm::ParameterSet>("MuonSD");
52  ePersistentCutGeV = m_MuonSD.getParameter<double>("EnergyThresholdForPersistency") / CLHEP::GeV; //Default 1. GeV
53  allMuonsPersistent = m_MuonSD.getParameter<bool>("AllMuonsPersistent");
54  printHits = m_MuonSD.getParameter<bool>("PrintHits");
55  bool dd4hep = p.getParameter<bool>("g4GeometryDD4hepSource");
56  //
57  // Here simply create 1 MuonSlaveSD for the moment
58  //
59 #ifdef EDM_ML_DEBUG
60  edm::LogVerbatim("MuonSim") << "create MuonSubDetector " << name << " with dd4hep flag " << dd4hep;
61 #endif
63 
64  //The constants take time to calculate and are needed by many helpers
66  es.get<IdealGeometryRecord>().get(mom);
67  const MuonOffsetMap* offmap = (mom.isValid()) ? mom.product() : nullptr;
68  edm::LogVerbatim("MuonSim") << "Finds the offset map at " << offmap;
70  es.get<IdealGeometryRecord>().get(mdc);
71  if (!mdc.isValid())
72  throw cms::Exception("MuonSensitiveDetector") << "Cannot find MuonGeometryConstants\n";
74  G4String sdet = "unknown";
75  if (detector->isEndcap()) {
77  sdet = "Endcap";
78  } else if (detector->isRPC()) {
80  sdet = "RPC";
81  } else if (detector->isGEM()) {
83  sdet = "GEM";
84  } else if (detector->isME0()) {
86  sdet = "ME0";
87  } else {
89  }
93 
94  if (printHits) {
95  thePrinter = new SimHitPrinter("HitPositionOSCAR.dat");
96  }
97 
98  edm::LogVerbatim("MuonSim") << " of type " << sdet << " <" << GetName() << "> EnergyThresholdForPersistency(GeV) "
99  << ePersistentCutGeV / CLHEP::GeV << " allMuonsPersistent: " << allMuonsPersistent;
100 
102 }

References allMuonsPersistent, detector, ePersistentCutGeV, g4numbering, edm::EventSetup::get(), get, edm::ParameterSet::getParameter(), GeV, MuonSubDetector::isEndcap(), MuonSubDetector::isGEM(), MuonSubDetector::isME0(), MuonSubDetector::isRPC(), edm::ESHandleBase::isValid(), Skims_PA_cff::name, numbering, AlCaHLTBitMon_ParallelJobs::p, printHits, edm::ESHandle< T >::product(), slaveMuon, theG4ProcessTypeEnumerator, theManager, thePrinter, and theRotation.

◆ ~MuonSensitiveDetector()

MuonSensitiveDetector::~MuonSensitiveDetector ( )
override

Definition at line 104 of file MuonSensitiveDetector.cc.

104  {
105  delete g4numbering;
106  delete numbering;
107  delete slaveMuon;
108  delete theRotation;
109  delete detector;
111 }

References detector, g4numbering, numbering, slaveMuon, theG4ProcessTypeEnumerator, and theRotation.

Member Function Documentation

◆ clearHits()

void MuonSensitiveDetector::clearHits ( )
overridevirtual

Implements SensitiveDetector.

Definition at line 121 of file MuonSensitiveDetector.cc.

121  {
122 #ifdef EDM_ML_DEBUG
123  edm::LogVerbatim("MuonSim") << "MuonSensitiveDetector::clearHits";
124 #endif
126 }

References TrackingSlaveSD::Initialize(), and slaveMuon.

Referenced by update().

◆ cmsUnits()

Local3DPoint MuonSensitiveDetector::cmsUnits ( const Local3DPoint v)
inlineprivate

Definition at line 58 of file MuonSensitiveDetector.h.

58 { return Local3DPoint(v.x() * 0.1, v.y() * 0.1, v.z() * 0.1); }

References findQualityFiles::v.

Referenced by createHit(), and updateHit().

◆ createHit()

void MuonSensitiveDetector::createHit ( const G4Step *  aStep)
private

Definition at line 173 of file MuonSensitiveDetector.cc.

173  {
174  Local3DPoint theEntryPoint;
175  Local3DPoint theExitPoint;
176 
177  if (detector->isBarrel()) {
178  // 1 levels up
179  theEntryPoint = cmsUnits(theRotation->transformPoint(InitialStepPositionVsParent(aStep, 1), aStep));
180  theExitPoint = cmsUnits(theRotation->transformPoint(FinalStepPositionVsParent(aStep, 1), aStep));
181  } else if (detector->isEndcap()) {
182  // save local z at current level
183  theEntryPoint = theRotation->transformPoint(InitialStepPosition(aStep, LocalCoordinates), aStep);
184  theExitPoint = theRotation->transformPoint(FinalStepPosition(aStep, LocalCoordinates), aStep);
185  float zentry = theEntryPoint.z();
186  float zexit = theExitPoint.z();
187  // 4 levels up
190  // reset local z from z wrt deep-parent volume to z wrt low-level volume
191  theEntryPoint = cmsUnits(Local3DPoint(tempEntry.x(), tempEntry.y(), zentry));
192  theExitPoint = cmsUnits(Local3DPoint(tempExit.x(), tempExit.y(), zexit));
193  } else {
194  theEntryPoint = cmsUnits(theRotation->transformPoint(InitialStepPosition(aStep, LocalCoordinates), aStep));
195  theExitPoint = cmsUnits(theRotation->transformPoint(FinalStepPosition(aStep, LocalCoordinates), aStep));
196  }
197 
198  const G4Track* theTrack = aStep->GetTrack();
199  const G4StepPoint* preStepPoint = aStep->GetPreStepPoint();
200 
201  float thePabs = preStepPoint->GetMomentum().mag() / CLHEP::GeV;
202  float theTof = preStepPoint->GetGlobalTime() / CLHEP::nanosecond;
203  float theEnergyLoss = aStep->GetTotalEnergyDeposit() / CLHEP::GeV;
204  int theParticleType = G4TrackToParticleID::particleID(theTrack);
205 
207  thePV = preStepPoint->GetPhysicalVolume();
208  theTrackID = theTrack->GetTrackID();
209 
210  // convert momentum direction it to local frame
211  const G4ThreeVector& gmd = preStepPoint->GetMomentumDirection();
212  G4ThreeVector lmd = static_cast<const G4TouchableHistory*>(preStepPoint->GetTouchable())
213  ->GetHistory()
214  ->GetTopTransform()
215  .TransformAxis(gmd);
217  lnmd = theRotation->transformPoint(lnmd, aStep);
218  float theThetaAtEntry = lnmd.theta();
219  float thePhiAtEntry = lnmd.phi();
220 
221  theHit = new UpdatablePSimHit(theEntryPoint,
222  theExitPoint,
223  thePabs,
224  theTof,
225  theEnergyLoss,
226  theParticleType,
227  theDetUnitId,
228  theTrackID,
229  theThetaAtEntry,
230  thePhiAtEntry,
231  theG4ProcessTypeEnumerator->processId(theTrack->GetCreatorProcess()));
232 
233  // Make track persistent
234  int thePID = std::abs(theTrack->GetDefinition()->GetPDGEncoding());
235  //---VI - in parameters cut in energy is declared but applied to momentum
236  if (thePabs > ePersistentCutGeV || (thePID == 13 && allMuonsPersistent)) {
238  info->storeTrack(true);
239  }
240 
241 #ifdef EDM_ML_DEBUG
242  edm::LogVerbatim("MuonSim") << "=== NEW Muon hit for " << GetName() << " Edep(GeV)= " << theEnergyLoss << " "
243  << thePV->GetLogicalVolume()->GetName();
244  const G4VProcess* p = aStep->GetPostStepPoint()->GetProcessDefinedStep();
245  const G4VProcess* p2 = aStep->GetPreStepPoint()->GetProcessDefinedStep();
246  G4String sss = "";
247  if (p)
248  sss += " POST PROCESS: " + p->GetProcessName();
249  if (p2)
250  sss += "; PRE PROCESS: " + p2->GetProcessName();
251  if (!sss.empty())
252  edm::LogVerbatim("MuonSim") << sss;
253  edm::LogVerbatim("MuonSim") << " theta= " << theThetaAtEntry << " phi= " << thePhiAtEntry << " Pabs(GeV/c) "
254  << thePabs << " Eloss(GeV)= " << theEnergyLoss << " Tof(ns)= " << theTof
255  << " trackID= " << theTrackID << " detID= " << theDetUnitId << "\n Local: entry "
256  << theEntryPoint << " exit " << theExitPoint << " delta "
257  << (theExitPoint - theEntryPoint) << "\n Global: entry "
258  << aStep->GetPreStepPoint()->GetPosition() << " exit "
259  << aStep->GetPostStepPoint()->GetPosition();
260 #endif
261 }

References funct::abs(), allMuonsPersistent, SensitiveDetector::cmsTrackInformation(), cmsUnits(), SensitiveDetector::ConvertToLocal3DPoint(), detector, ePersistentCutGeV, SensitiveDetector::FinalStepPosition(), FinalStepPositionVsParent(), GeV, info(), SensitiveDetector::InitialStepPosition(), InitialStepPositionVsParent(), MuonSubDetector::isBarrel(), MuonSubDetector::isEndcap(), SensitiveDetector::LocalCoordinates, PV3DBase< T, PVType, FrameType >::mag(), newDetUnitId, AlCaHLTBitMon_ParallelJobs::p, p2, G4TrackToParticleID::particleID(), PV3DBase< T, PVType, FrameType >::phi(), G4ProcessTypeEnumerator::processId(), theDetUnitId, theG4ProcessTypeEnumerator, theHit, thePV, theRotation, PV3DBase< T, PVType, FrameType >::theta(), theTrackID, MuonFrameRotation::transformPoint(), PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by ProcessHits().

◆ EndOfEvent()

void MuonSensitiveDetector::EndOfEvent ( G4HCofThisEvent *  )
override

Definition at line 315 of file MuonSensitiveDetector.cc.

315 { saveHit(); }

References saveHit().

◆ fillHits()

void MuonSensitiveDetector::fillHits ( edm::PSimHitContainer cc,
const std::string &  hname 
)
overridevirtual

Implements SensitiveTkDetector.

Definition at line 317 of file MuonSensitiveDetector.cc.

317  {
318  if (slaveMuon->name() == hname) {
319  cc = slaveMuon->hits();
320  }
321 }

References TrackingSlaveSD::hits(), TrackingSlaveSD::name(), and slaveMuon.

◆ FinalStepPositionVsParent()

Local3DPoint MuonSensitiveDetector::FinalStepPositionVsParent ( const G4Step *  currentStep,
G4int  levelsUp 
)
private

Definition at line 336 of file MuonSensitiveDetector.cc.

336  {
337  const G4StepPoint* postStepPoint = currentStep->GetPostStepPoint();
338  const G4StepPoint* preStepPoint = currentStep->GetPreStepPoint();
339  const G4ThreeVector& globalCoordinates = postStepPoint->GetPosition();
340 
341  const G4TouchableHistory* theTouchable = (const G4TouchableHistory*)(preStepPoint->GetTouchable());
342 
343  G4int depth = theTouchable->GetHistory()->GetDepth();
344  G4ThreeVector localCoordinates =
345  theTouchable->GetHistory()->GetTransform(depth - levelsUp).TransformPoint(globalCoordinates);
346 
347  return ConvertToLocal3DPoint(localCoordinates);
348 }

References SensitiveDetector::ConvertToLocal3DPoint(), and LEDCalibrationChannels::depth.

Referenced by createHit(), and updateHit().

◆ GetSlaveMuon()

const MuonSlaveSD* MuonSensitiveDetector::GetSlaveMuon ( ) const
inline

Definition at line 52 of file MuonSensitiveDetector.h.

52 { return slaveMuon; }

References slaveMuon.

◆ InitialStepPositionVsParent()

Local3DPoint MuonSensitiveDetector::InitialStepPositionVsParent ( const G4Step *  currentStep,
G4int  levelsUp 
)
private

Transform from local coordinates of a volume to local coordinates of a parent volume one or more levels up the volume hierarchy: e.g. levelsUp = 1 for immediate parent. This is done by moving from local_1 -> global -> local_2.

Definition at line 323 of file MuonSensitiveDetector.cc.

323  {
324  const G4StepPoint* preStepPoint = currentStep->GetPreStepPoint();
325  const G4ThreeVector& globalCoordinates = preStepPoint->GetPosition();
326 
327  const G4TouchableHistory* theTouchable = (const G4TouchableHistory*)(preStepPoint->GetTouchable());
328 
329  G4int depth = theTouchable->GetHistory()->GetDepth();
330  G4ThreeVector localCoordinates =
331  theTouchable->GetHistory()->GetTransform(depth - levelsUp).TransformPoint(globalCoordinates);
332 
333  return ConvertToLocal3DPoint(localCoordinates);
334 }

References SensitiveDetector::ConvertToLocal3DPoint(), and LEDCalibrationChannels::depth.

Referenced by createHit().

◆ newHit()

bool MuonSensitiveDetector::newHit ( const G4Step *  aStep)
private

Definition at line 168 of file MuonSensitiveDetector.cc.

168  {
169  return (!theHit || (aStep->GetTrack()->GetTrackID() != theTrackID) ||
170  (aStep->GetPreStepPoint()->GetPhysicalVolume() != thePV) || newDetUnitId != theDetUnitId);
171 }

References newDetUnitId, theDetUnitId, theHit, thePV, and theTrackID.

Referenced by ProcessHits().

◆ ProcessHits()

bool MuonSensitiveDetector::ProcessHits ( G4Step *  aStep,
G4TouchableHistory *  ROhist 
)
overridevirtual

Implements SensitiveDetector.

Definition at line 128 of file MuonSensitiveDetector.cc.

128  {
129 #ifdef EDM_ML_DEBUG
130  edm::LogVerbatim("MuonSim") << " MuonSensitiveDetector::ProcessHits " << InitialStepPosition(aStep, WorldCoordinates);
131 #endif
132 
133  if (aStep->GetTotalEnergyDeposit() > 0.) {
134  newDetUnitId = setDetUnitId(aStep);
135 
136  if (newHit(aStep)) {
137  saveHit();
138  createHit(aStep);
139  } else {
140  updateHit(aStep);
141  }
142  thePV = aStep->GetPreStepPoint()->GetPhysicalVolume();
143  theTrackID = aStep->GetTrack()->GetTrackID();
145  }
146  return true;
147 }

References createHit(), SensitiveDetector::InitialStepPosition(), newDetUnitId, newHit(), saveHit(), setDetUnitId(), theDetUnitId, thePV, theTrackID, updateHit(), and SensitiveDetector::WorldCoordinates.

◆ saveHit()

void MuonSensitiveDetector::saveHit ( )
private

◆ setDetUnitId()

uint32_t MuonSensitiveDetector::setDetUnitId ( const G4Step *  aStep)
overridevirtual

Implements SensitiveDetector.

Definition at line 149 of file MuonSensitiveDetector.cc.

149  {
151 
152 #ifdef EDM_ML_DEBUG
153  std::stringstream MuonBaseNumber;
154  MuonBaseNumber << "MuonNumbering :: number of levels = " << num.getLevels() << std::endl;
155  MuonBaseNumber << "Level \t SuperNo \t BaseNo" << std::endl;
156  for (int level = 1; level <= num.getLevels(); level++) {
157  MuonBaseNumber << level << " \t " << num.getSuperNo(level) << " \t " << num.getBaseNo(level) << std::endl;
158  }
159  std::string MuonBaseNumbr = MuonBaseNumber.str();
160 
161  edm::LogVerbatim("MuonSim") << "MuonSensitiveDetector::setDetUnitId :: " << MuonBaseNumbr;
162  edm::LogVerbatim("MuonSim") << "MuonSensitiveDetector::setDetUnitId :: MuonDetUnitId = "
164 #endif
166 }

References MuonSimHitNumberingScheme::baseNumberToUnitNumber(), g4numbering, personalPlayback::level, EgammaValidation_cff::num, numbering, MuonG4Numbering::PhysicalVolumeToBaseNumber(), and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by ProcessHits().

◆ update()

void MuonSensitiveDetector::update ( const BeginOfEvent )
overrideprotectedvirtual

This routine will be called when the appropriate signal arrives.

Implements Observer< const BeginOfEvent * >.

Definition at line 113 of file MuonSensitiveDetector.cc.

113  {
114  clearHits();
115  //----- Initialize variables to check if two steps belong to same hit
116  thePV = nullptr;
117  theDetUnitId = 0;
118  theTrackID = 0;
119 }

References clearHits(), theDetUnitId, thePV, and theTrackID.

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

◆ updateHit()

void MuonSensitiveDetector::updateHit ( const G4Step *  aStep)
private

Definition at line 263 of file MuonSensitiveDetector.cc.

263  {
264  Local3DPoint theExitPoint;
265 
266  if (detector->isBarrel()) {
267  theExitPoint = cmsUnits(theRotation->transformPoint(FinalStepPositionVsParent(aStep, 1), aStep));
268  } else if (detector->isEndcap()) {
269  // save local z at current level
270  theExitPoint = theRotation->transformPoint(FinalStepPosition(aStep, LocalCoordinates), aStep);
271  float zexit = theExitPoint.z();
272  Local3DPoint tempExitPoint = theRotation->transformPoint(FinalStepPositionVsParent(aStep, 4), aStep);
273  theExitPoint = cmsUnits(Local3DPoint(tempExitPoint.x(), tempExitPoint.y(), zexit));
274  } else {
275  theExitPoint = cmsUnits(theRotation->transformPoint(FinalStepPosition(aStep, LocalCoordinates), aStep));
276  }
277 
278  float theEnergyLoss = aStep->GetTotalEnergyDeposit() / CLHEP::GeV;
279 
280  theHit->updateExitPoint(theExitPoint);
281  theHit->addEnergyLoss(theEnergyLoss);
282 
283 #ifdef EDM_ML_DEBUG
284  edm::LogVerbatim("MuonSim") << "=== NEW Update muon hit for " << GetName() << " Edep(GeV)= " << theEnergyLoss << " "
285  << thePV->GetLogicalVolume()->GetName();
286  const G4VProcess* p = aStep->GetPostStepPoint()->GetProcessDefinedStep();
287  const G4VProcess* p2 = aStep->GetPreStepPoint()->GetProcessDefinedStep();
288  G4String sss = "";
289  if (p)
290  sss += " POST PROCESS: " + p->GetProcessName();
291  if (p2)
292  sss += "; PRE PROCESS: " + p2->GetProcessName();
293  if (!sss.empty())
294  edm::LogVerbatim("MuonSim") << sss;
295  edm::LogVerbatim("MuonSim") << " delEloss(GeV)= " << theEnergyLoss
296  << " Tof(ns)= " << aStep->GetPreStepPoint()->GetGlobalTime() / CLHEP::nanosecond
297  << " trackID= " << theTrackID << " detID= " << theDetUnitId << " exit " << theExitPoint;
298 #endif
299 }

References UpdatablePSimHit::addEnergyLoss(), cmsUnits(), detector, SensitiveDetector::FinalStepPosition(), FinalStepPositionVsParent(), GeV, MuonSubDetector::isBarrel(), MuonSubDetector::isEndcap(), SensitiveDetector::LocalCoordinates, AlCaHLTBitMon_ParallelJobs::p, p2, theDetUnitId, theHit, thePV, theRotation, theTrackID, MuonFrameRotation::transformPoint(), UpdatablePSimHit::updateExitPoint(), PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by ProcessHits().

Member Data Documentation

◆ allMuonsPersistent

bool MuonSensitiveDetector::allMuonsPersistent
private

Definition at line 90 of file MuonSensitiveDetector.h.

Referenced by createHit(), and MuonSensitiveDetector().

◆ detector

MuonSubDetector* MuonSensitiveDetector::detector
private

◆ ePersistentCutGeV

float MuonSensitiveDetector::ePersistentCutGeV
private

Definition at line 89 of file MuonSensitiveDetector.h.

Referenced by createHit(), and MuonSensitiveDetector().

◆ g4numbering

MuonG4Numbering* MuonSensitiveDetector::g4numbering
private

◆ newDetUnitId

uint32_t MuonSensitiveDetector::newDetUnitId
private

Definition at line 82 of file MuonSensitiveDetector.h.

Referenced by createHit(), newHit(), and ProcessHits().

◆ numbering

MuonSimHitNumberingScheme* MuonSensitiveDetector::numbering
private

◆ printHits

bool MuonSensitiveDetector::printHits
private

◆ slaveMuon

MuonSlaveSD* MuonSensitiveDetector::slaveMuon
private

◆ theDetUnitId

uint32_t MuonSensitiveDetector::theDetUnitId
private

Definition at line 81 of file MuonSensitiveDetector.h.

Referenced by createHit(), newHit(), ProcessHits(), update(), and updateHit().

◆ theG4ProcessTypeEnumerator

G4ProcessTypeEnumerator* MuonSensitiveDetector::theG4ProcessTypeEnumerator
private

◆ theHit

UpdatablePSimHit* MuonSensitiveDetector::theHit
private

Definition at line 80 of file MuonSensitiveDetector.h.

Referenced by createHit(), newHit(), saveHit(), and updateHit().

◆ theManager

const SimTrackManager* MuonSensitiveDetector::theManager
private

Definition at line 94 of file MuonSensitiveDetector.h.

Referenced by MuonSensitiveDetector().

◆ thePrinter

SimHitPrinter* MuonSensitiveDetector::thePrinter
private

Definition at line 86 of file MuonSensitiveDetector.h.

Referenced by MuonSensitiveDetector(), and saveHit().

◆ thePV

const G4VPhysicalVolume* MuonSensitiveDetector::thePV
private

Definition at line 79 of file MuonSensitiveDetector.h.

Referenced by createHit(), newHit(), ProcessHits(), update(), and updateHit().

◆ theRotation

const MuonFrameRotation* MuonSensitiveDetector::theRotation
private

◆ theTrackID

int MuonSensitiveDetector::theTrackID
private

Definition at line 83 of file MuonSensitiveDetector.h.

Referenced by createHit(), newHit(), ProcessHits(), update(), and updateHit().

personalPlayback.level
level
Definition: personalPlayback.py:22
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
G4ProcessTypeEnumerator::processId
unsigned int processId(const G4VProcess *p) const
Definition: G4ProcessTypeEnumerator.h:11
MuonSensitiveDetector::theDetUnitId
uint32_t theDetUnitId
Definition: MuonSensitiveDetector.h:81
MuonGeometryConstants
Definition: MuonGeometryConstants.h:20
MuonSubDetector
Definition: MuonSubDetector.h:19
MuonSensitiveDetector::slaveMuon
MuonSlaveSD * slaveMuon
Definition: MuonSensitiveDetector.h:60
MuonSensitiveDetector::newHit
bool newHit(const G4Step *)
Definition: MuonSensitiveDetector.cc:168
SimHitPrinter::startNewSimHit
void startNewSimHit(std::string)
Definition: SimHitPrinter.cc:31
MuonSensitiveDetector::theHit
UpdatablePSimHit * theHit
Definition: MuonSensitiveDetector.h:80
MuonSensitiveDetector::theTrackID
int theTrackID
Definition: MuonSensitiveDetector.h:83
MuonSlaveSD
Definition: MuonSlaveSD.h:26
MuonSensitiveDetector::InitialStepPositionVsParent
Local3DPoint InitialStepPositionVsParent(const G4Step *currentStep, G4int levelsUp)
Definition: MuonSensitiveDetector.cc:323
MuonSensitiveDetector::newDetUnitId
uint32_t newDetUnitId
Definition: MuonSensitiveDetector.h:82
PV3DBase::x
T x() const
Definition: PV3DBase.h:59
MuonSensitiveDetector::ePersistentCutGeV
float ePersistentCutGeV
Definition: MuonSensitiveDetector.h:89
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
PV3DBase::theta
Geom::Theta< T > theta() const
Definition: PV3DBase.h:72
MuonSensitiveDetector::clearHits
void clearHits() override
Definition: MuonSensitiveDetector.cc:121
SimHitPrinter::printId
void printId(int) const
Definition: SimHitPrinter.cc:51
info
static const TGPicture * info(bool iBackgroundIsBlack)
Definition: FWCollectionSummaryWidget.cc:153
MuonSubDetector::name
std::string name()
Definition: MuonSubDetector.cc:31
constants
findQualityFiles.v
v
Definition: findQualityFiles.py:179
PSimHit::entryPoint
Local3DPoint entryPoint() const
Entry point in the local Det frame.
Definition: PSimHit.h:43
G4ProcessTypeEnumerator
Definition: G4ProcessTypeEnumerator.h:6
G4TrackToParticleID::particleID
static int particleID(const G4Track *)
Definition: G4TrackToParticleID.cc:7
MuonRPCFrameRotation
Definition: MuonRPCFrameRotation.h:22
MuonSensitiveDetector::thePV
const G4VPhysicalVolume * thePV
Definition: MuonSensitiveDetector.h:79
MuonG4Numbering
Definition: MuonG4Numbering.h:26
MuonOffsetMap
Definition: MuonOffsetMap.h:9
MuonSensitiveDetector::thePrinter
SimHitPrinter * thePrinter
Definition: MuonSensitiveDetector.h:86
PSimHit::detUnitId
unsigned int detUnitId() const
Definition: PSimHit.h:97
PV3DBase::z
T z() const
Definition: PV3DBase.h:61
MuonEndcapFrameRotation
Definition: MuonEndcapFrameRotation.h:18
MuonFrameRotation::transformPoint
virtual Local3DPoint transformPoint(const Local3DPoint &, const G4Step *) const
Definition: MuonFrameRotation.cc:4
MuonSensitiveDetector::FinalStepPositionVsParent
Local3DPoint FinalStepPositionVsParent(const G4Step *currentStep, G4int levelsUp)
Definition: MuonSensitiveDetector.cc:336
edm::EventSetup::get
T get() const
Definition: EventSetup.h:80
PSimHit::exitPoint
Local3DPoint exitPoint() const
Exit point in the local Det frame.
Definition: PSimHit.h:46
MuonSensitiveDetector::theRotation
const MuonFrameRotation * theRotation
Definition: MuonSensitiveDetector.h:63
SensitiveTkDetector::SensitiveTkDetector
SensitiveTkDetector(const std::string &iname, const edm::EventSetup &es, const SensitiveDetectorCatalog &clg, edm::ParameterSet const &p)
Definition: SensitiveTkDetector.h:10
MuonSensitiveDetector::numbering
MuonSimHitNumberingScheme * numbering
Definition: MuonSensitiveDetector.h:61
MuonSimHitNumberingScheme::baseNumberToUnitNumber
int baseNumberToUnitNumber(const MuonBaseNumber &) const override
Definition: MuonSimHitNumberingScheme.cc:28
edm::ESHandle
Definition: DTSurvey.h:22
p2
double p2[4]
Definition: TauolaWrapper.h:90
MuonSensitiveDetector::detector
MuonSubDetector * detector
Definition: MuonSensitiveDetector.h:62
MuonSubDetector::isBarrel
bool isBarrel()
Definition: MuonSubDetector.cc:21
Point3DBase< float, LocalTag >
SensitiveDetector::FinalStepPosition
Local3DPoint FinalStepPosition(const G4Step *step, coordinates) const
Definition: SensitiveDetector.cc:70
LEDCalibrationChannels.depth
depth
Definition: LEDCalibrationChannels.py:65
MuonME0FrameRotation
Definition: MuonME0FrameRotation.h:22
SensitiveDetector::InitialStepPosition
Local3DPoint InitialStepPosition(const G4Step *step, coordinates) const
Definition: SensitiveDetector.cc:58
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
UpdatablePSimHit::updateExitPoint
void updateExitPoint(const Local3DPoint &exit)
Definition: UpdatablePSimHit.h:28
TrackingSlaveSD::Initialize
virtual void Initialize()
Definition: TrackingSlaveSD.cc:17
edm::ParameterSet
Definition: ParameterSet.h:47
TrackingSlaveSD::processHits
virtual bool processHits(const PSimHit &)
Definition: TrackingSlaveSD.cc:52
UpdatablePSimHit
Definition: UpdatablePSimHit.h:12
MuonSubDetector::isME0
bool isME0()
Definition: MuonSubDetector.cc:29
GeV
const double GeV
Definition: MathUtil.h:16
UpdatablePSimHit::addEnergyLoss
void addEnergyLoss(float eloss)
Definition: UpdatablePSimHit.h:34
MuonSensitiveDetector::updateHit
void updateHit(const G4Step *)
Definition: MuonSensitiveDetector.cc:263
SimHitPrinter::printLocal
void printLocal(LocalPoint, LocalPoint) const
Definition: SimHitPrinter.cc:81
MuonSubDetector::isEndcap
bool isEndcap()
Definition: MuonSubDetector.cc:23
MuonSensitiveDetector::allMuonsPersistent
bool allMuonsPersistent
Definition: MuonSensitiveDetector.h:90
MuonSubDetector::isRPC
bool isRPC()
Definition: MuonSubDetector.cc:25
PV3DBase::y
T y() const
Definition: PV3DBase.h:60
SensitiveDetector::ConvertToLocal3DPoint
Local3DPoint ConvertToLocal3DPoint(const G4ThreeVector &point) const
Definition: SensitiveDetector.h:56
TrackInformation
Definition: TrackInformation.h:8
SensitiveDetector::LocalCoordinates
Definition: SensitiveDetector.h:48
get
#define get
cc
edm::ESHandleBase::isValid
bool isValid() const
Definition: ESHandle.h:44
MuonG4Numbering::PhysicalVolumeToBaseNumber
MuonBaseNumber PhysicalVolumeToBaseNumber(const G4Step *aStep)
Definition: MuonG4Numbering.cc:47
EgammaValidation_cff.num
num
Definition: EgammaValidation_cff.py:34
PV3DBase::mag
T mag() const
Definition: PV3DBase.h:64
MuonBaseNumber
Definition: MuonBaseNumber.h:21
SensitiveDetector::cmsTrackInformation
TrackInformation * cmsTrackInformation(const G4Track *aTrack)
Definition: SensitiveDetector.cc:96
MuonSubDetector::isGEM
bool isGEM()
Definition: MuonSubDetector.cc:27
MuonSensitiveDetector::saveHit
void saveHit()
Definition: MuonSensitiveDetector.cc:301
edm::LogVerbatim
Log< level::Info, true > LogVerbatim
Definition: MessageLogger.h:128
MuonSensitiveDetector::printHits
bool printHits
Definition: MuonSensitiveDetector.h:85
dd4hep
Definition: DDPlugins.h:8
SensitiveDetector::WorldCoordinates
Definition: SensitiveDetector.h:48
MuonSimHitNumberingScheme
Definition: MuonSimHitNumberingScheme.h:19
MuonFrameRotation
Definition: MuonFrameRotation.h:17
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
MuonGEMFrameRotation
Definition: MuonGEMFrameRotation.h:20
TrackingSlaveSD::name
std::string name() const
Definition: TrackingSlaveSD.h:21
cms::Exception
Definition: Exception.h:70
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
TrackingSlaveSD::hits
std::vector< PSimHit > & hits()
Definition: TrackingSlaveSD.h:22
MuonSensitiveDetector::cmsUnits
Local3DPoint cmsUnits(const Local3DPoint &v)
Definition: MuonSensitiveDetector.h:58
SimHitPrinter
Definition: SimHitPrinter.h:23
MuonSensitiveDetector::theManager
const SimTrackManager * theManager
Definition: MuonSensitiveDetector.h:94
MuonSensitiveDetector::g4numbering
MuonG4Numbering * g4numbering
Definition: MuonSensitiveDetector.h:64
edm::Log
Definition: MessageLogger.h:70
MuonSensitiveDetector::setDetUnitId
uint32_t setDetUnitId(const G4Step *) override
Definition: MuonSensitiveDetector.cc:149
PV3DBase::phi
Geom::Phi< T > phi() const
Definition: PV3DBase.h:66
MuonSensitiveDetector::createHit
void createHit(const G4Step *)
Definition: MuonSensitiveDetector.cc:173
IdealGeometryRecord
Definition: IdealGeometryRecord.h:25
Local3DPoint
Point3DBase< float, LocalTag > Local3DPoint
Definition: LocalPoint.h:9
MuonSensitiveDetector::theG4ProcessTypeEnumerator
G4ProcessTypeEnumerator * theG4ProcessTypeEnumerator
Definition: MuonSensitiveDetector.h:92