CMS 3D CMS Logo

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

#include <ECalSD.h>

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

Public Member Functions

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

Protected Member Functions

double EnergyCorrected (const G4Step &, const G4Track *) override
 
uint16_t getDepth (const G4Step *) override
 
double getEnergyDeposit (const G4Step *) override
 
int getTrackID (const G4Track *) override
 
- Protected Member Functions inherited from CaloSD
bool checkHit ()
 
CaloG4HitcreateNewHit (const G4Step *, const G4Track *)
 
virtual void endEvent ()
 
virtual bool filterHit (CaloG4Hit *, double)
 
double getAttenuation (const G4Step *aStep, double birk1, double birk2, double birk3) const
 
virtual bool getFromLibrary (const G4Step *step)
 
int getNumberOfHits ()
 
double getResponseWt (const G4Track *)
 
void hitBookkeepingFineCalo (const G4Step *step, const G4Track *currentTrack, CaloG4Hit *hit)
 
bool hitExists (const G4Step *)
 
void ignoreRejection ()
 
virtual void initEvent (const BeginOfEvent *)
 
virtual void initRun ()
 
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

double curve_LY (const G4LogicalVolume *)
 
void getBaseNumber (const G4Step *)
 
double getBirkL3 (const G4Step *)
 
uint16_t getLayerIDForTimeSim ()
 
uint16_t getRadiationLength (const G4StepPoint *hitPoint, const G4LogicalVolume *lv)
 
void initMap ()
 
bool isXtal (const G4LogicalVolume *)
 

Private Attributes

EnergyResolutionVsLumi ageing
 
bool ageingWithSlopeLY
 
double birk1
 
double birk2
 
double birk3
 
double birkCut
 
double birkSlope
 
double crystalDepth
 
double crystalLength
 
std::string crystalMat
 
G4ThreeVector currentLocalPoint
 
uint16_t depth
 
std::string depth1Name
 
std::string depth2Name
 
const EcalSimulationParametersecalSimParameters_
 
std::vector< const G4LogicalVolume * > noWeight
 
EcalNumberingSchemenumberingScheme_
 
double scaleRL
 
double slopeLY
 
bool storeLayerTimeSim
 
bool storeRL
 
bool storeTrack
 
EcalBaseNumber theBaseNumber
 
bool useBirk
 
bool useBirkL3
 
std::vector< const G4LogicalVolume * > useDepth1
 
std::vector< const G4LogicalVolume * > useDepth2
 
bool useWeight
 
std::map< const G4LogicalVolume *, double > xtalLMap
 

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 31 of file ECalSD.h.

Constructor & Destructor Documentation

◆ ECalSD()

ECalSD::ECalSD ( const std::string &  name,
const EcalSimulationParameters ecpar,
const SensitiveDetectorCatalog clg,
edm::ParameterSet const &  p,
const SimTrackManager manager 
)

Definition at line 41 of file ECalSD.cc.

46  : CaloSD(name,
47  clg,
48  p,
49  manager,
50  (float)(p.getParameter<edm::ParameterSet>("ECalSD").getParameter<double>("TimeSliceUnit")),
51  p.getParameter<edm::ParameterSet>("ECalSD").getParameter<bool>("IgnoreTrackID")),
52  ecalSimParameters_(ecpar),
53  numberingScheme_(nullptr) {
54  // static SimpleConfigurable<bool> on1(false, "ECalSD:UseBirkLaw");
55  // static SimpleConfigurable<double> bk1(0.00463,"ECalSD:BirkC1");
56  // static SimpleConfigurable<double> bk2(-0.03, "ECalSD:BirkC2");
57  // static SimpleConfigurable<double> bk3(1.0, "ECalSD:BirkC3");
58  // Values from NIM A484 (2002) 239-244: as implemented in Geant3
59  // useBirk = on1.value();
60  // birk1 = bk1.value()*(g/(MeV*cm2));
61  // birk2 = bk2.value()*(g/(MeV*cm2))*(g/(MeV*cm2));
62  edm::ParameterSet m_EC = p.getParameter<edm::ParameterSet>("ECalSD");
63  useBirk = m_EC.getParameter<bool>("UseBirkLaw");
64  useBirkL3 = m_EC.getParameter<bool>("BirkL3Parametrization");
65  double bunit = (CLHEP::g / (CLHEP::MeV * CLHEP::cm2));
66  birk1 = m_EC.getParameter<double>("BirkC1") * bunit;
67  birk2 = m_EC.getParameter<double>("BirkC2");
68  birk3 = m_EC.getParameter<double>("BirkC3");
69  birkSlope = m_EC.getParameter<double>("BirkSlope");
70  birkCut = m_EC.getParameter<double>("BirkCut");
71  slopeLY = m_EC.getParameter<double>("SlopeLightYield");
72  storeTrack = m_EC.getParameter<bool>("StoreSecondary");
73  crystalMat = m_EC.getUntrackedParameter<std::string>("XtalMat", "E_PbWO4");
74  bool isItTB = m_EC.getUntrackedParameter<bool>("TestBeam", false);
75  bool nullNS = m_EC.getUntrackedParameter<bool>("NullNumbering", false);
76  storeRL = m_EC.getUntrackedParameter<bool>("StoreRadLength", false);
77  scaleRL = m_EC.getUntrackedParameter<double>("ScaleRadLength", 1.0);
78  int dumpGeom = m_EC.getUntrackedParameter<int>("DumpGeometry", 0);
79 
80  //Changes for improved timing simulation
81  storeLayerTimeSim = m_EC.getUntrackedParameter<bool>("StoreLayerTimeSim", false);
82 
83  ageingWithSlopeLY = m_EC.getUntrackedParameter<bool>("AgeingWithSlopeLY", false);
85  ageing.setLumies(p.getParameter<edm::ParameterSet>("ECalSD").getParameter<double>("DelivLuminosity"),
86  p.getParameter<edm::ParameterSet>("ECalSD").getParameter<double>("InstLuminosity"));
87 
88  if (ecalSimParameters_ == nullptr) {
89  edm::LogError("EcalSim") << "ECalSD : Cannot find EcalSimulationParameters for " << name;
90  throw cms::Exception("Unknown", "ECalSD") << "Cannot find EcalSimulationParameters for " << name << "\n";
91  }
92 
93  // Use of Weight
95 #ifdef EDM_ML_DEBUG
96  edm::LogVerbatim("EcalSim") << "ECalSD:: useWeight " << useWeight;
97 #endif
100 #ifdef EDM_ML_DEBUG
101  edm::LogVerbatim("EcalSim") << "Names (Depth 1):" << depth1Name << " (Depth 2):" << depth2Name << std::endl;
102 #endif
103  int type(-1);
104  bool dump(false);
105  EcalNumberingScheme* scheme = nullptr;
106  if (nullNS) {
107  scheme = nullptr;
108  } else if (name == "EcalHitsEB") {
109  scheme = dynamic_cast<EcalNumberingScheme*>(new EcalBarrelNumberingScheme());
110  type = 0;
111  dump = ((dumpGeom % 10) > 0);
112  } else if (name == "EcalHitsEE") {
113  scheme = dynamic_cast<EcalNumberingScheme*>(new EcalEndcapNumberingScheme());
114  type = 1;
115  dump = (((dumpGeom / 10) % 10) > 0);
116  } else if (name == "EcalHitsES") {
117  if (isItTB)
118  scheme = dynamic_cast<EcalNumberingScheme*>(new ESTBNumberingScheme());
119  else
120  scheme = dynamic_cast<EcalNumberingScheme*>(new EcalPreshowerNumberingScheme());
121  useWeight = false;
122  type = 2;
123  dump = (((dumpGeom / 100) % 10) > 0);
124  } else {
125  edm::LogWarning("EcalSim") << "ECalSD: ReadoutName not supported";
126  }
127  int type0 = dumpGeom / 1000;
128  type += (10 * type0);
129 
130  if (scheme)
132 #ifdef EDM_ML_DEBUG
133  edm::LogVerbatim("EcalSim") << "Constructing a ECalSD with name " << GetName();
134 #endif
135  if (useWeight) {
136  edm::LogVerbatim("EcalSim") << "ECalSD:: Use of Birks law is set to " << useBirk
137  << " with three constants kB = " << birk1 / bunit << ", C1 = " << birk2
138  << ", C2 = " << birk3 << "\n Use of L3 parametrization " << useBirkL3
139  << " with slope " << birkSlope << " and cut off " << birkCut << "\n"
140  << " Slope for Light yield is set to " << slopeLY;
141  } else {
142  edm::LogVerbatim("EcalSim") << "ECalSD:: energy deposit is not corrected "
143  << " by Birk or light yield curve";
144  }
145 
146  edm::LogVerbatim("EcalSim") << "ECalSD:: Suppression Flag " << suppressHeavy << "\tprotons below "
147  << kmaxProton / CLHEP::MeV << " MeV,\tneutrons below " << kmaxNeutron / CLHEP::MeV
148  << " MeV,\tions below " << kmaxIon / CLHEP::MeV << " MeV \n\tDepth1 Name = " << depth1Name
149  << "\tDepth2 Name = " << depth2Name << "\n\tstoreRL " << storeRL << ":" << scaleRL
150  << "\tstoreLayerTimeSim " << storeLayerTimeSim << "\n\ttime Granularity "
151  << p.getParameter<edm::ParameterSet>("ECalSD").getParameter<double>("TimeSliceUnit")
152  << " ns";
153  if (useWeight)
154  initMap();
155 #ifdef plotDebug
157  if (tfile.isAvailable()) {
158  TFileDirectory ecDir = tfile->mkdir("ProfileFromECalSD");
159  static const std::string ctype[4] = {"EB", "EBref", "EE", "EERef"};
160  for (int k = 0; k < 4; ++k) {
161  std::string name = "ECLL_" + ctype[k];
162  std::string title = "Local vs Global for " + ctype[k];
163  double xmin = (k > 1) ? 3000.0 : 1000.0;
164  g2L_[k] = ecDir.make<TH2F>(name.c_str(), title.c_str(), 100, xmin, xmin + 1000., 100, 0.0, 3000.);
165  }
166  } else {
167  for (int k = 0; k < 4; ++k)
168  g2L_[k] = 0;
169  }
170 #endif
171  if (dump) {
172  const auto& lvNames = clg.logicalNames(name);
174  geom.update();
175  }
176 }

References ageing, ageingWithSlopeLY, birk1, birk2, birk3, birkCut, birkSlope, crystalMat, depth1Name, EcalSimulationParameters::depth1Name_, depth2Name, EcalSimulationParameters::depth2Name_, submitPVValidationJobs::dump, ecalSimParameters_, Exception, g, relativeConstraints::geom, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), initMap(), dqmdumpme::k, CaloSD::kmaxIon, CaloSD::kmaxNeutron, CaloSD::kmaxProton, SensitiveDetectorCatalog::logicalNames(), materialBudgetVolume_cfi::lvNames, TFileDirectory::make(), MeV, Skims_PA_cff::name, AlCaHLTBitMon_ParallelJobs::p, scaleRL, generator_cfi::scheme, EnergyResolutionVsLumi::setLumies(), setNumberingScheme(), slopeLY, storeLayerTimeSim, storeRL, storeTrack, AlCaHLTBitMon_QueryRunRegistry::string, CaloSD::suppressHeavy, compare::tfile, runGCPTkAlMap::title, useBirk, useBirkL3, useWeight, EcalSimulationParameters::useWeight_, and TrackerOfflineValidation_Dqm_cff::xmin.

◆ ~ECalSD()

ECalSD::~ECalSD ( )
override

Definition at line 178 of file ECalSD.cc.

178 { delete numberingScheme_; }

References numberingScheme_.

Member Function Documentation

◆ curve_LY()

double ECalSD::curve_LY ( const G4LogicalVolume *  lv)
private

Definition at line 429 of file ECalSD.cc.

429  {
430  double weight = 1.;
431  if (ageingWithSlopeLY) {
432  //position along the crystal in mm from 0 to 230 (in EB)
433  if (crystalDepth >= -0.1 || crystalDepth <= crystalLength + 0.1)
435  } else {
436  double dapd = crystalLength - crystalDepth;
437  if (dapd >= -0.1 || dapd <= crystalLength + 0.1) {
438  if (dapd <= 100.)
439  weight = 1.0 + slopeLY - dapd * 0.01 * slopeLY;
440  } else {
441  edm::LogWarning("EcalSim") << "ECalSD: light coll curve : wrong distance "
442  << "to APD " << dapd << " crlength = " << crystalLength << ":" << crystalDepth
443  << " crystal name = " << lv->GetName() << " " << dd4hep::dd::noNamespace(lv->GetName())
444  << " z of localPoint = " << currentLocalPoint.z() << " take weight = " << weight;
445  }
446  }
447 #ifdef EDM_ML_DEBUG
448  edm::LogVerbatim("EcalSim") << "ECalSD: light coll curve : crlength = " << crystalLength << " Depth " << crystalDepth
449  << " crystal name = " << lv->GetName() << " " << dd4hep::dd::noNamespace(lv->GetName())
450  << " z of localPoint = " << currentLocalPoint.z() << " take weight = " << weight;
451 #endif
452  return weight;
453 }

References ageing, ageingWithSlopeLY, EnergyResolutionVsLumi::calcLightCollectionEfficiencyWeighted(), crystalDepth, crystalLength, CaloSD::currentID, currentLocalPoint, slopeLY, CaloHitID::unitID(), and mps_merge::weight.

Referenced by EnergyCorrected(), and getEnergyDeposit().

◆ EnergyCorrected()

double ECalSD::EnergyCorrected ( const G4Step &  step,
const G4Track *  track 
)
overrideprotectedvirtual

Reimplemented from CaloSD.

Definition at line 229 of file ECalSD.cc.

229  {
230  double edep = step.GetTotalEnergyDeposit();
231  const G4StepPoint* hitPoint = step.GetPreStepPoint();
232  const G4LogicalVolume* lv = hitPoint->GetTouchable()->GetVolume(0)->GetLogicalVolume();
233 
234  if (useWeight && !any(noWeight, lv)) {
235  currentLocalPoint = setToLocal(hitPoint->GetPosition(), hitPoint->GetTouchable());
236  auto ite = xtalLMap.find(lv);
237  crystalLength = (ite == xtalLMap.end()) ? 230._mm : std::abs(ite->second);
238  crystalDepth = (ite == xtalLMap.end()) ? 0.0 : (std::abs(0.5 * (ite->second) + currentLocalPoint.z()));
239  edep *= curve_LY(lv) * getResponseWt(track);
240  }
241  return edep;
242 }

References funct::abs(), any(), crystalDepth, crystalLength, currentLocalPoint, curve_LY(), CaloSD::getResponseWt(), noWeight, CaloSD::setToLocal(), HLT_FULL_cff::track, useWeight, and xtalLMap.

◆ getBaseNumber()

void ECalSD::getBaseNumber ( const G4Step *  aStep)
private

Definition at line 455 of file ECalSD.cc.

455  {
457  const G4VTouchable* touch = aStep->GetPreStepPoint()->GetTouchable();
458  int theSize = touch->GetHistoryDepth() + 1;
459  if (theBaseNumber.getCapacity() < theSize)
460  theBaseNumber.setSize(theSize);
461  //Get name and copy numbers
462  if (theSize > 1) {
463  for (int ii = 0; ii < theSize; ii++) {
464  std::string_view name = dd4hep::dd::noNamespace(touch->GetVolume(ii)->GetName());
465  theBaseNumber.addLevel(std::string(name), touch->GetReplicaNumber(ii));
466 #ifdef EDM_ML_DEBUG
467  edm::LogVerbatim("EcalSim") << "ECalSD::getBaseNumber(): Adding level " << ii << ": " << name << "["
468  << touch->GetReplicaNumber(ii) << "]";
469 #endif
470  }
471  }
472 }

References EcalBaseNumber::addLevel(), EcalBaseNumber::getCapacity(), cuy::ii, Skims_PA_cff::name, EcalBaseNumber::reset(), EcalBaseNumber::setSize(), AlCaHLTBitMon_QueryRunRegistry::string, and theBaseNumber.

Referenced by setDetUnitId().

◆ getBirkL3()

double ECalSD::getBirkL3 ( const G4Step *  aStep)
private

Definition at line 474 of file ECalSD.cc.

474  {
475  double weight = 1.;
476  const G4StepPoint* preStepPoint = aStep->GetPreStepPoint();
477  double charge = preStepPoint->GetCharge();
478 
479  if (charge != 0. && aStep->GetStepLength() > 0.) {
480  const G4Material* mat = preStepPoint->GetMaterial();
481  double density = mat->GetDensity();
482  double dedx = aStep->GetTotalEnergyDeposit() / aStep->GetStepLength();
483  double rkb = birk1 / density;
484  if (dedx > 0) {
485  weight = 1. - birkSlope * log(rkb * dedx);
486  if (weight < birkCut)
487  weight = birkCut;
488  else if (weight > 1.)
489  weight = 1.;
490  }
491 #ifdef EDM_ML_DEBUG
492  edm::LogVerbatim("EcalSim") << "ECalSD::getBirkL3 in " << dd4hep::dd::noNamespace(mat->GetName()) << " Charge "
493  << charge << " dE/dx " << dedx << " Birk Const " << rkb << " Weight = " << weight
494  << " dE " << aStep->GetTotalEnergyDeposit();
495 #endif
496  }
497  return weight;
498 }

References birk1, birkCut, birkSlope, ALCARECOTkAlJpsiMuMu_cff::charge, fastSimProducer_cff::density, dqm-mbProfile::log, and mps_merge::weight.

Referenced by getEnergyDeposit().

◆ getDepth()

uint16_t ECalSD::getDepth ( const G4Step *  aStep)
overrideprotectedvirtual

Reimplemented from CaloSD.

Definition at line 255 of file ECalSD.cc.

255  {
256  // this method should be called first at a step
257  const G4StepPoint* hitPoint = aStep->GetPreStepPoint();
258  currentLocalPoint = setToLocal(hitPoint->GetPosition(), hitPoint->GetTouchable());
259  const G4LogicalVolume* lv = hitPoint->GetTouchable()->GetVolume(0)->GetLogicalVolume();
260 
261  auto ite = xtalLMap.find(lv);
262  crystalLength = (ite == xtalLMap.end()) ? 230._mm : std::abs(ite->second);
263  crystalDepth = (ite == xtalLMap.end()) ? 0.0 : (std::abs(0.5 * (ite->second) + currentLocalPoint.z()));
264  depth = any(useDepth1, lv) ? 1 : (any(useDepth2, lv) ? 2 : 0);
265  uint16_t depth1(0), depth2(0);
266  if (storeRL) {
267  depth1 = (ite == xtalLMap.end()) ? 0 : (((ite->second) >= 0) ? 0 : PCaloHit::kEcalDepthRefz);
268  depth2 = getRadiationLength(hitPoint, lv);
269  depth |= (((depth2 & PCaloHit::kEcalDepthMask) << PCaloHit::kEcalDepthOffset) | depth1);
270  } else if (storeLayerTimeSim) {
271  depth2 = getLayerIDForTimeSim();
273  }
274 #ifdef EDM_ML_DEBUG
275  if (isXtal(lv))
276  edm::LogVerbatim("EcalSimX") << "ECalSD::Volume " << lv->GetName() << " DetId " << std::hex << setDetUnitId(aStep)
277  << std::dec << " Global " << (hitPoint->GetPosition()).rho() << ":"
278  << (hitPoint->GetPosition()).z() << " Local Z " << currentLocalPoint.z() << " Depth "
279  << crystalDepth;
280  edm::LogVerbatim("EcalSim") << "ECalSD::Depth " << std::hex << depth1 << ":" << depth2 << ":" << depth << std::dec
281  << " L " << (ite == xtalLMap.end()) << ":" << ite->second << " local "
282  << currentLocalPoint << " Crystal length " << crystalLength << ":" << crystalDepth;
283 #endif
284  return depth;
285 }

References funct::abs(), any(), crystalDepth, crystalLength, currentLocalPoint, TauDecayModes::dec, depth, getLayerIDForTimeSim(), getRadiationLength(), isXtal(), PCaloHit::kEcalDepthMask, PCaloHit::kEcalDepthOffset, PCaloHit::kEcalDepthRefz, rho, setDetUnitId(), CaloSD::setToLocal(), storeLayerTimeSim, storeRL, useDepth1, useDepth2, xtalLMap, and z.

◆ getEnergyDeposit()

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

Reimplemented from CaloSD.

Definition at line 180 of file ECalSD.cc.

180  {
181  const G4StepPoint* preStepPoint = aStep->GetPreStepPoint();
182  const G4Track* theTrack = aStep->GetTrack();
183  double edep = aStep->GetTotalEnergyDeposit();
184 
185  // take into account light collection curve for crystals
186  double weight = 1.;
187  if (suppressHeavy) {
188  TrackInformation* trkInfo = (TrackInformation*)(theTrack->GetUserInformation());
189  if (trkInfo) {
190  int pdg = theTrack->GetDefinition()->GetPDGEncoding();
191  if (!(trkInfo->isPrimary())) { // Only secondary particles
192  double ke = theTrack->GetKineticEnergy();
193  if (((pdg / 1000000000 == 1 && ((pdg / 10000) % 100) > 0 && ((pdg / 10) % 100) > 0)) && (ke < kmaxIon))
194  weight = 0;
195  if ((pdg == 2212) && (ke < kmaxProton))
196  weight = 0;
197  if ((pdg == 2112) && (ke < kmaxNeutron))
198  weight = 0;
199  }
200  }
201  }
202  const G4LogicalVolume* lv = preStepPoint->GetTouchable()->GetVolume(0)->GetLogicalVolume();
203  double wt1 = 1.0;
204  if (useWeight && !any(noWeight, lv)) {
205  weight *= curve_LY(lv);
206  if (useBirk) {
207  if (useBirkL3)
208  weight *= getBirkL3(aStep);
209  else
210  weight *= getAttenuation(aStep, birk1, birk2, birk3);
211  }
212  wt1 = getResponseWt(theTrack);
213  }
214  edep *= weight * wt1;
215  // Russian Roulette
216  double wt2 = theTrack->GetWeight();
217  if (wt2 > 0.0) {
218  edep *= wt2;
219  }
220 #ifdef EDM_ML_DEBUG
221  edm::LogVerbatim("EcalSim") << lv->GetName() << " " << dd4hep::dd::noNamespace(lv->GetName())
222  << " Light Collection Efficiency " << weight << ":" << wt1 << " wt2= " << wt2
223  << " Weighted Energy Deposit " << edep / CLHEP::MeV << " MeV at "
224  << preStepPoint->GetPosition();
225 #endif
226  return edep;
227 }

References any(), birk1, birk2, birk3, curve_LY(), CaloSD::getAttenuation(), getBirkL3(), CaloSD::getResponseWt(), TrackInformation::isPrimary(), ke, CaloSD::kmaxIon, CaloSD::kmaxNeutron, CaloSD::kmaxProton, MeV, noWeight, CaloSD::suppressHeavy, useBirk, useBirkL3, and useWeight.

◆ getLayerIDForTimeSim()

uint16_t ECalSD::getLayerIDForTimeSim ( )
private

Definition at line 313 of file ECalSD.cc.

313  {
314  const double invLayerSize = 0.1; //layer size in 1/mm
315  return (int)crystalDepth * invLayerSize;
316 }

References crystalDepth.

Referenced by getDepth(), and getRadiationLength().

◆ getRadiationLength()

uint16_t ECalSD::getRadiationLength ( const G4StepPoint *  hitPoint,
const G4LogicalVolume *  lv 
)
private

Definition at line 287 of file ECalSD.cc.

287  {
288  uint16_t thisX0 = 0;
289  if (useWeight) {
290  double radl = hitPoint->GetMaterial()->GetRadlen();
291  thisX0 = (uint16_t)floor(scaleRL * crystalDepth / radl);
292 #ifdef plotDebug
293  const std::string& lvname = dd4hep::dd::noNamespace(lv->GetName());
294  int k1 = (lvname.find("EFRY") != std::string::npos) ? 2 : 0;
295  int k2 = (lvname.find("refl") != std::string::npos) ? 1 : 0;
296  int kk = k1 + k2;
297  double rz = (k1 == 0) ? (hitPoint->GetPosition()).rho() : std::abs((hitPoint->GetPosition()).z());
298  edm::LogVerbatim("EcalSim") << lvname << " # " << k1 << ":" << k2 << ":" << kk << " rz " << rz << " D " << thisX0;
299  g2L_[kk]->Fill(rz, thisX0);
300 #endif
301 #ifdef EDM_ML_DEBUG
302  G4ThreeVector localPoint = setToLocal(hitPoint->GetPosition(), hitPoint->GetTouchable());
303  edm::LogVerbatim("EcalSim") << lv->GetName() << " " << dd4hep::dd::noNamespace(lv->GetName()) << " Global "
304  << hitPoint->GetPosition() << ":" << (hitPoint->GetPosition()).rho() << " Local "
305  << localPoint << " Crystal Length " << crystalLength << " Radl " << radl
306  << " crystalDepth " << crystalDepth << " Index " << thisX0 << " : "
308 #endif
309  }
310  return thisX0;
311 }

References funct::abs(), crystalDepth, crystalLength, getLayerIDForTimeSim(), GetRecoTauVFromDQM_MC_cff::kk, rho, scaleRL, CaloSD::setToLocal(), AlCaHLTBitMon_QueryRunRegistry::string, useWeight, and z.

Referenced by getDepth().

◆ getTrackID()

int ECalSD::getTrackID ( const G4Track *  aTrack)
overrideprotectedvirtual

Reimplemented from CaloSD.

Definition at line 244 of file ECalSD.cc.

244  {
245  int primaryID(0);
246  if (storeTrack && depth > 0) {
247  forceSave = true;
248  primaryID = aTrack->GetTrackID();
249  } else {
250  primaryID = CaloSD::getTrackID(aTrack);
251  }
252  return primaryID;
253 }

References depth, CaloSD::forceSave, CaloSD::getTrackID(), and storeTrack.

◆ initMap()

void ECalSD::initMap ( )
private

Definition at line 336 of file ECalSD.cc.

336  {
337  std::vector<const G4LogicalVolume*> lvused;
338  const G4LogicalVolumeStore* lvs = G4LogicalVolumeStore::GetInstance();
339  std::map<const std::string, const G4LogicalVolume*> nameMap;
340  for (auto lvi = lvs->begin(), lve = lvs->end(); lvi != lve; ++lvi)
341  nameMap.emplace(dd4hep::dd::noNamespace((*lvi)->GetName()), *lvi);
342 
343  for (unsigned int it = 0; it < ecalSimParameters_->lvNames_.size(); ++it) {
344  const std::string& matname = ecalSimParameters_->matNames_[it];
345  const std::string& lvname = ecalSimParameters_->lvNames_[it];
346  const G4LogicalVolume* lv = nameMap[lvname];
347  int ibec = (lvname.find("EFRY") == std::string::npos) ? 0 : 1;
348  int iref = (lvname.find("refl") == std::string::npos) ? 0 : 1;
349  int type = (ibec + iref == 1) ? 1 : -1;
350  if (depth1Name != " ") {
351  if (strncmp(lvname.c_str(), depth1Name.c_str(), 4) == 0) {
352  if (!any(useDepth1, lv)) {
353  useDepth1.push_back(lv);
354 #ifdef EDM_ML_DEBUG
355  edm::LogVerbatim("EcalSim") << "ECalSD::initMap Logical Volume " << lvname << " in Depth 1 volume list";
356 #endif
357  }
358  const G4LogicalVolume* lvr = nameMap[lvname + "_refl"];
359  if (lvr != nullptr && !any(useDepth1, lvr)) {
360  useDepth1.push_back(lvr);
361 #ifdef EDM_ML_DEBUG
362  edm::LogVerbatim("EcalSim") << "ECalSD::initMap Logical Volume " << lvname << "_refl"
363  << " in Depth 1 volume list";
364 #endif
365  }
366  }
367  }
368  if (depth2Name != " ") {
369  if (strncmp(lvname.c_str(), depth2Name.c_str(), 4) == 0) {
370  if (!any(useDepth2, lv)) {
371  useDepth2.push_back(lv);
372 #ifdef EDM_ML_DEBUG
373  edm::LogVerbatim("EcalSim") << "ECalSD::initMap Logical Volume " << lvname << " in Depth 2 volume list";
374 #endif
375  }
376  const G4LogicalVolume* lvr = nameMap[lvname + "_refl"];
377  if (lvr != nullptr && !any(useDepth2, lvr)) {
378  useDepth2.push_back(lvr);
379 #ifdef EDM_ML_DEBUG
380  edm::LogVerbatim("EcalSim") << "ECalSD::initMap Logical Volume " << lvname << "_refl"
381  << " in Depth 2 volume list";
382 #endif
383  }
384  }
385  }
386  if (lv != nullptr) {
387  if (crystalMat.size() == matname.size() && !strcmp(crystalMat.c_str(), matname.c_str())) {
388  if (!any(lvused, lv)) {
389  lvused.push_back(lv);
390  double dz = ecalSimParameters_->dzs_[it];
391  xtalLMap.insert(std::pair<const G4LogicalVolume*, double>(lv, dz * type));
392  lv = nameMap[lvname + "_refl"];
393  if (lv != nullptr) {
394  xtalLMap.insert(std::pair<const G4LogicalVolume*, double>(lv, -dz * type));
395  }
396  }
397  } else {
398  if (!any(noWeight, lv)) {
399  noWeight.push_back(lv);
400 #ifdef EDM_ML_DEBUG
401  edm::LogVerbatim("EcalSim") << "ECalSD::initMap Logical Volume " << lvname << " Material " << matname
402  << " in noWeight list";
403 #endif
404  }
405  lv = nameMap[lvname];
406  if (lv != nullptr && !any(noWeight, lv)) {
407  noWeight.push_back(lv);
408 #ifdef EDM_ML_DEBUG
409  edm::LogVerbatim("EcalSim") << "ECalSD::initMap Logical Volume " << lvname << " Material " << matname
410  << " in noWeight list";
411 #endif
412  }
413  }
414  }
415  }
416 #ifdef EDM_ML_DEBUG
417  edm::LogVerbatim("EcalSim") << "ECalSD: Length Table:";
418  int i = 0;
419  for (auto ite : xtalLMap) {
420  std::string name("Unknown");
421  if (ite.first != nullptr)
422  name = dd4hep::dd::noNamespace((ite.first)->GetName());
423  edm::LogVerbatim("EcalSim") << " " << i << " " << ite.first << " " << name << " L = " << ite.second;
424  ++i;
425  }
426 #endif
427 }

References any(), crystalMat, depth1Name, depth2Name, PVValHelper::dz, EcalSimulationParameters::dzs_, ecalSimParameters_, mps_fire::i, EcalSimulationParameters::lvNames_, EcalSimulationParameters::matNames_, Skims_PA_cff::name, noWeight, AlCaHLTBitMon_QueryRunRegistry::string, useDepth1, useDepth2, and xtalLMap.

Referenced by ECalSD().

◆ isXtal()

bool ECalSD::isXtal ( const G4LogicalVolume *  lv)
private

Definition at line 500 of file ECalSD.cc.

500 { return (xtalLMap.find(lv) != xtalLMap.end()); }

References xtalLMap.

Referenced by getDepth().

◆ setDetUnitId()

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

Implements CaloSD.

Definition at line 318 of file ECalSD.cc.

318  {
319  if (numberingScheme_ == nullptr) {
320  return EBDetId(1, 1)();
321  } else {
322  getBaseNumber(aStep);
324  }
325 }

References getBaseNumber(), EcalNumberingScheme::getUnitID(), numberingScheme_, and theBaseNumber.

Referenced by getDepth().

◆ setNumberingScheme()

void ECalSD::setNumberingScheme ( EcalNumberingScheme scheme)

Definition at line 327 of file ECalSD.cc.

327  {
328  if (scheme != nullptr) {
329  edm::LogVerbatim("EcalSim") << "EcalSD: updates numbering scheme for " << GetName();
330  if (numberingScheme_)
331  delete numberingScheme_;
333  }
334 }

References numberingScheme_, and generator_cfi::scheme.

Referenced by ECalSD(), and HcalTB04Analysis::update().

Member Data Documentation

◆ ageing

EnergyResolutionVsLumi ECalSD::ageing
private

Definition at line 69 of file ECalSD.h.

Referenced by curve_LY(), and ECalSD().

◆ ageingWithSlopeLY

bool ECalSD::ageingWithSlopeLY
private

Definition at line 70 of file ECalSD.h.

Referenced by curve_LY(), and ECalSD().

◆ birk1

double ECalSD::birk1
private

Definition at line 63 of file ECalSD.h.

Referenced by ECalSD(), getBirkL3(), and getEnergyDeposit().

◆ birk2

double ECalSD::birk2
private

Definition at line 63 of file ECalSD.h.

Referenced by ECalSD(), and getEnergyDeposit().

◆ birk3

double ECalSD::birk3
private

Definition at line 63 of file ECalSD.h.

Referenced by ECalSD(), and getEnergyDeposit().

◆ birkCut

double ECalSD::birkCut
private

Definition at line 63 of file ECalSD.h.

Referenced by ECalSD(), and getBirkL3().

◆ birkSlope

double ECalSD::birkSlope
private

Definition at line 63 of file ECalSD.h.

Referenced by ECalSD(), and getBirkL3().

◆ crystalDepth

double ECalSD::crystalDepth
private

◆ crystalLength

double ECalSD::crystalLength
private

Definition at line 74 of file ECalSD.h.

Referenced by curve_LY(), EnergyCorrected(), getDepth(), and getRadiationLength().

◆ crystalMat

std::string ECalSD::crystalMat
private

Definition at line 65 of file ECalSD.h.

Referenced by ECalSD(), and initMap().

◆ currentLocalPoint

G4ThreeVector ECalSD::currentLocalPoint
private

Definition at line 73 of file ECalSD.h.

Referenced by curve_LY(), EnergyCorrected(), and getDepth().

◆ depth

uint16_t ECalSD::depth
private

◆ depth1Name

std::string ECalSD::depth1Name
private

Definition at line 65 of file ECalSD.h.

Referenced by ECalSD(), and initMap().

◆ depth2Name

std::string ECalSD::depth2Name
private

Definition at line 65 of file ECalSD.h.

Referenced by ECalSD(), and initMap().

◆ ecalSimParameters_

const EcalSimulationParameters* ECalSD::ecalSimParameters_
private

Definition at line 59 of file ECalSD.h.

Referenced by ECalSD(), and initMap().

◆ noWeight

std::vector<const G4LogicalVolume *> ECalSD::noWeight
private

Definition at line 67 of file ECalSD.h.

Referenced by EnergyCorrected(), getEnergyDeposit(), and initMap().

◆ numberingScheme_

EcalNumberingScheme* ECalSD::numberingScheme_
private

Definition at line 60 of file ECalSD.h.

Referenced by setDetUnitId(), setNumberingScheme(), and ~ECalSD().

◆ scaleRL

double ECalSD::scaleRL
private

Definition at line 64 of file ECalSD.h.

Referenced by ECalSD(), and getRadiationLength().

◆ slopeLY

double ECalSD::slopeLY
private

Definition at line 64 of file ECalSD.h.

Referenced by curve_LY(), and ECalSD().

◆ storeLayerTimeSim

bool ECalSD::storeLayerTimeSim
private

Definition at line 61 of file ECalSD.h.

Referenced by ECalSD(), and getDepth().

◆ storeRL

bool ECalSD::storeRL
private

Definition at line 61 of file ECalSD.h.

Referenced by ECalSD(), and getDepth().

◆ storeTrack

bool ECalSD::storeTrack
private

Definition at line 61 of file ECalSD.h.

Referenced by ECalSD(), and getTrackID().

◆ theBaseNumber

EcalBaseNumber ECalSD::theBaseNumber
private

Definition at line 68 of file ECalSD.h.

Referenced by getBaseNumber(), and setDetUnitId().

◆ useBirk

bool ECalSD::useBirk
private

Definition at line 62 of file ECalSD.h.

Referenced by ECalSD(), and getEnergyDeposit().

◆ useBirkL3

bool ECalSD::useBirkL3
private

Definition at line 62 of file ECalSD.h.

Referenced by ECalSD(), and getEnergyDeposit().

◆ useDepth1

std::vector<const G4LogicalVolume *> ECalSD::useDepth1
private

Definition at line 67 of file ECalSD.h.

Referenced by getDepth(), and initMap().

◆ useDepth2

std::vector<const G4LogicalVolume *> ECalSD::useDepth2
private

Definition at line 67 of file ECalSD.h.

Referenced by getDepth(), and initMap().

◆ useWeight

bool ECalSD::useWeight
private

Definition at line 61 of file ECalSD.h.

Referenced by ECalSD(), EnergyCorrected(), getEnergyDeposit(), and getRadiationLength().

◆ xtalLMap

std::map<const G4LogicalVolume *, double> ECalSD::xtalLMap
private

Definition at line 66 of file ECalSD.h.

Referenced by EnergyCorrected(), getDepth(), initMap(), and isXtal().

EcalBarrelNumberingScheme
Definition: EcalBarrelNumberingScheme.h:11
submitPVValidationJobs.dump
dump
Definition: submitPVValidationJobs.py:55
ESTBNumberingScheme
Definition: ESTBNumberingScheme.h:6
runGCPTkAlMap.title
string title
Definition: runGCPTkAlMap.py:94
mps_fire.i
i
Definition: mps_fire.py:428
HLT_FULL_cff.track
track
Definition: HLT_FULL_cff.py:11724
ECalSD::currentLocalPoint
G4ThreeVector currentLocalPoint
Definition: ECalSD.h:73
ECalSD::scaleRL
double scaleRL
Definition: ECalSD.h:64
ECalSD::numberingScheme_
EcalNumberingScheme * numberingScheme_
Definition: ECalSD.h:60
CaloSD::kmaxProton
double kmaxProton
Definition: CaloSD.h:146
ECalSD::depth2Name
std::string depth2Name
Definition: ECalSD.h:65
ECalSD::storeLayerTimeSim
bool storeLayerTimeSim
Definition: ECalSD.h:61
step
step
Definition: StallMonitor.cc:94
EBDetId
Definition: EBDetId.h:17
mps_merge.weight
weight
Definition: mps_merge.py:88
materialBudgetVolume_cfi.lvNames
lvNames
Definition: materialBudgetVolume_cfi.py:6
ECalSD::crystalMat
std::string crystalMat
Definition: ECalSD.h:65
EcalBaseNumber::getCapacity
int getCapacity()
Definition: EcalBaseNumber.cc:37
EnergyResolutionVsLumi::calcLightCollectionEfficiencyWeighted
double calcLightCollectionEfficiencyWeighted(DetId id, double z)
Definition: EnergyResolutionVsLumi.cc:92
EcalBaseNumber::addLevel
void addLevel(const std::string &name, const int &copyNumber)
Definition: EcalBaseNumber.cc:16
CaloSD::getAttenuation
double getAttenuation(const G4Step *aStep, double birk1, double birk2, double birk3) const
Definition: CaloSD.cc:683
ECalSD::getRadiationLength
uint16_t getRadiationLength(const G4StepPoint *hitPoint, const G4LogicalVolume *lv)
Definition: ECalSD.cc:287
ECalSD::useBirkL3
bool useBirkL3
Definition: ECalSD.h:62
MeV
const double MeV
PCaloHit::kEcalDepthOffset
static const int kEcalDepthOffset
Definition: PCaloHit.h:62
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
ECalSD::storeTrack
bool storeTrack
Definition: ECalSD.h:61
TFileDirectory
Definition: TFileDirectory.h:24
ECalSD::isXtal
bool isXtal(const G4LogicalVolume *)
Definition: ECalSD.cc:500
CaloHitID::unitID
uint32_t unitID() const
Definition: CaloHitID.h:20
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
ECalSD::birk2
double birk2
Definition: ECalSD.h:63
CaloSD::kmaxIon
double kmaxIon
Definition: CaloSD.h:146
ECalSD::curve_LY
double curve_LY(const G4LogicalVolume *)
Definition: ECalSD.cc:429
EcalSimulationParameters::dzs_
std::vector< double > dzs_
Definition: EcalSimulationParameters.h:22
any
bool any(const std::vector< T > &v, const T &what)
Definition: ECalSD.cc:37
ECalSD::depth
uint16_t depth
Definition: ECalSD.h:76
ECalSD::useDepth2
std::vector< const G4LogicalVolume * > useDepth2
Definition: ECalSD.h:67
CaloSD::getResponseWt
double getResponseWt(const G4Track *)
Definition: CaloSD.cc:874
EcalNumberingScheme
Definition: EcalNumberingScheme.h:14
ECalSD::noWeight
std::vector< const G4LogicalVolume * > noWeight
Definition: ECalSD.h:67
TrackInformation::isPrimary
bool isPrimary() const
Definition: TrackInformation.h:27
ECalSD::setDetUnitId
uint32_t setDetUnitId(const G4Step *) override
Definition: ECalSD.cc:318
CaloSD::setToLocal
G4ThreeVector setToLocal(const G4ThreeVector &, const G4VTouchable *) const
Definition: CaloSD.cc:385
ECalSD::ecalSimParameters_
const EcalSimulationParameters * ecalSimParameters_
Definition: ECalSD.h:59
ECalSD::setNumberingScheme
void setNumberingScheme(EcalNumberingScheme *)
Definition: ECalSD.cc:327
tfile
Definition: tfile.py:1
DDAxes::z
relativeConstraints.geom
geom
Definition: relativeConstraints.py:72
ECalSD::ageingWithSlopeLY
bool ageingWithSlopeLY
Definition: ECalSD.h:70
GetRecoTauVFromDQM_MC_cff.kk
kk
Definition: GetRecoTauVFromDQM_MC_cff.py:84
dqmdumpme.k
k
Definition: dqmdumpme.py:60
EcalPreshowerNumberingScheme
Definition: EcalPreshowerNumberingScheme.h:10
CaloSD::currentID
CaloHitID currentID
Definition: CaloSD.h:139
ECalSD::birk3
double birk3
Definition: ECalSD.h:63
DDAxes::rho
ALCARECOTkAlJpsiMuMu_cff.charge
charge
Definition: ALCARECOTkAlJpsiMuMu_cff.py:47
edm::ParameterSet
Definition: ParameterSet.h:47
AlCaHLTBitMon_ParallelJobs.p
def p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
ECalSD::initMap
void initMap()
Definition: ECalSD.cc:336
ECalSD::getBaseNumber
void getBaseNumber(const G4Step *)
Definition: ECalSD.cc:455
ke
int ke
Definition: CascadeWrapper.h:13
type
type
Definition: SiPixelVCal_PayloadInspector.cc:39
EnergyResolutionVsLumi::setLumies
void setLumies(double x, double y)
Definition: EnergyResolutionVsLumi.h:47
CaloSD::kmaxNeutron
double kmaxNeutron
Definition: CaloSD.h:146
gainCalibHelper::gainCalibPI::type
type
Definition: SiPixelGainCalibHelper.h:40
ECalSD::depth1Name
std::string depth1Name
Definition: ECalSD.h:65
ECalSD::theBaseNumber
EcalBaseNumber theBaseNumber
Definition: ECalSD.h:68
EcalBaseNumber::reset
void reset()
Definition: EcalBaseNumber.cc:39
TrackInformation
Definition: TrackInformation.h:12
edm::Service< TFileService >
CaloSD::CaloSD
CaloSD(const std::string &aSDname, const SensitiveDetectorCatalog &clg, edm::ParameterSet const &p, const SimTrackManager *, float timeSlice=1., bool ignoreTkID=false)
Definition: CaloSD.cc:34
PCaloHit::kEcalDepthMask
static const int kEcalDepthMask
Definition: PCaloHit.h:61
EcalSimulationParameters::depth1Name_
std::string depth1Name_
Definition: EcalSimulationParameters.h:18
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
AlCaHLTBitMon_QueryRunRegistry.string
string string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
ECalSD::crystalDepth
double crystalDepth
Definition: ECalSD.h:75
generator_cfi.scheme
scheme
Definition: generator_cfi.py:22
compare.tfile
tfile
Definition: compare.py:324
ECalSD::ageing
EnergyResolutionVsLumi ageing
Definition: ECalSD.h:69
ECalSD::useWeight
bool useWeight
Definition: ECalSD.h:61
CaloSD::getTrackID
virtual int getTrackID(const G4Track *)
Definition: CaloSD.cc:821
EcalSimulationParameters::matNames_
std::vector< std::string > matNames_
Definition: EcalSimulationParameters.h:21
ECalSD::birkCut
double birkCut
Definition: ECalSD.h:63
PVValHelper::dz
Definition: PVValidationHelpers.h:51
edm::LogVerbatim
Log< level::Info, true > LogVerbatim
Definition: MessageLogger.h:128
Exception
Definition: hltDiff.cc:245
EcalSimulationParameters::lvNames_
std::vector< std::string > lvNames_
Definition: EcalSimulationParameters.h:20
TFileDirectory::make
T * make(const Args &...args) const
make new ROOT object
Definition: TFileDirectory.h:53
SensitiveDetectorCatalog::logicalNames
const std::vector< std::string_view > logicalNames(const std::string &readoutName) const
Definition: SensitiveDetectorCatalog.cc:31
EcalSimulationParameters::depth2Name_
std::string depth2Name_
Definition: EcalSimulationParameters.h:19
ECalSD::crystalLength
double crystalLength
Definition: ECalSD.h:74
EcalNumberingScheme::getUnitID
virtual uint32_t getUnitID(const EcalBaseNumber &baseNumber) const =0
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
pdg
Definition: pdg_functions.h:28
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
dqm-mbProfile.log
log
Definition: dqm-mbProfile.py:17
ECalSD::useDepth1
std::vector< const G4LogicalVolume * > useDepth1
Definition: ECalSD.h:67
CaloSD::forceSave
bool forceSave
Definition: CaloSD.h:148
ECalSD::useBirk
bool useBirk
Definition: ECalSD.h:62
ECalSD::birkSlope
double birkSlope
Definition: ECalSD.h:63
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
ECalSD::storeRL
bool storeRL
Definition: ECalSD.h:61
ECalSD::slopeLY
double slopeLY
Definition: ECalSD.h:64
EcalEndcapNumberingScheme
Definition: EcalEndcapNumberingScheme.h:10
TrackerOfflineValidation_Dqm_cff.xmin
xmin
Definition: TrackerOfflineValidation_Dqm_cff.py:10
ECalSD::getBirkL3
double getBirkL3(const G4Step *)
Definition: ECalSD.cc:474
EcalSimulationParameters::useWeight_
bool useWeight_
Definition: EcalSimulationParameters.h:17
CaloSD::suppressHeavy
bool suppressHeavy
Definition: CaloSD.h:145
EcalBaseNumber::setSize
void setSize(const int &size)
Definition: EcalBaseNumber.cc:11
edm::Log
Definition: MessageLogger.h:70
TauDecayModes.dec
dec
Definition: TauDecayModes.py:142
ECalSD::birk1
double birk1
Definition: ECalSD.h:63
cuy.ii
ii
Definition: cuy.py:589
PCaloHit::kEcalDepthRefz
static const int kEcalDepthRefz
Definition: PCaloHit.h:63
ECalSD::getLayerIDForTimeSim
uint16_t getLayerIDForTimeSim()
Definition: ECalSD.cc:313
weight
Definition: weight.py:1
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
fastSimProducer_cff.density
density
Definition: fastSimProducer_cff.py:61
ECalSD::xtalLMap
std::map< const G4LogicalVolume *, double > xtalLMap
Definition: ECalSD.h:66
EcalDumpGeometry
Definition: EcalDumpGeometry.h:22