CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
MtdSD Class Reference

#include <MtdSD.h>

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

Public Member Functions

 MtdSD (const std::string &, const edm::EventSetup &, const SensitiveDetectorCatalog &, edm::ParameterSet const &, const SimTrackManager *)
 
uint32_t setDetUnitId (const G4Step *) override
 
 ~MtdSD () override
 
- Public Member Functions inherited from TimingSD
void clearHits () override
 
void EndOfEvent (G4HCofThisEvent *eventHC) override
 
void fillHits (edm::PSimHitContainer &, const std::string &) override
 
void Initialize (G4HCofThisEvent *HCE) override
 
void PrintAll () override
 
bool ProcessHits (G4Step *, G4TouchableHistory *) override
 
 TimingSD (const std::string &, const edm::EventSetup &, const SensitiveDetectorCatalog &, const edm::ParameterSet &, const SimTrackManager *)
 
 ~TimingSD () 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 ()
 

Private Member Functions

void getBaseNumber (const G4Step *)
 
std::vector< double > getDDDArray (const std::string &, const DDsvalues_type &)
 
void setNumberingScheme (MTDNumberingScheme *)
 

Private Attributes

bool isBTL
 
bool isETL
 
MTDNumberingSchemenumberingScheme
 
MTDBaseNumber theBaseNumber
 

Additional Inherited Members

- Protected Types inherited from SensitiveDetector
enum  coordinates { WorldCoordinates, LocalCoordinates }
 
- Protected Member Functions inherited from TimingSD
virtual bool checkHit (const G4Step *, BscG4Hit *)
 
const G4ThreeVector & getGlobalEntryPoint () const
 
const G4ThreeVector & getLocalEntryPoint () const
 
void setCuts (double eCut, double historyCut)
 
void setTimeFactor (double)
 
void setToLocal (const G4StepPoint *stepPoint, const G4ThreeVector &globalPoint, G4ThreeVector &localPoint)
 
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 > &)
 

Detailed Description

Definition at line 18 of file MtdSD.h.

Constructor & Destructor Documentation

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

Definition at line 28 of file MtdSD.cc.

References dbl_to_int(), ALCARECOTkAlBeamHalo_cff::filter, DDFilteredView::firstChild(), edm::EventSetup::get(), getDDDArray(), edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), isBTL, isETL, DDFilteredView::mergedSpecifics(), generator_cfi::scheme, setNumberingScheme(), TimingSD::setTimeFactor(), AlCaHLTBitMon_QueryRunRegistry::string, pfDeepBoostedJetPreprocessParams_cfi::sv, and groupFilesInBlocks::temp.

33  : TimingSD(name, es, clg, p, manager), numberingScheme(nullptr) {
34  //Parameters
35  edm::ParameterSet m_p = p.getParameter<edm::ParameterSet>("MtdSD");
36  int verbn = m_p.getUntrackedParameter<int>("Verbosity");
37 
38  SetVerboseLevel(verbn);
39 
41  es.get<IdealGeometryRecord>().get(cpv);
42 
43  std::string attribute = "ReadOutName";
45  DDFilteredView fv(*cpv, filter);
46  fv.firstChild();
47  DDsvalues_type sv(fv.mergedSpecifics());
48  std::vector<int> temp = dbl_to_int(getDDDArray("Type", sv));
49  int type = temp[0];
50 
51  MTDNumberingScheme* scheme = nullptr;
52  if (name == "FastTimerHitsBarrel") {
53  scheme = dynamic_cast<MTDNumberingScheme*>(new BTLNumberingScheme());
54  isBTL = true;
55  } else if (name == "FastTimerHitsEndcap") {
56  scheme = dynamic_cast<MTDNumberingScheme*>(new ETLNumberingScheme());
57  isETL = true;
58  } else {
59  scheme = nullptr;
60  edm::LogWarning("MtdSim") << "MtdSD: ReadoutName not supported";
61  }
62  if (scheme)
63  setNumberingScheme(scheme);
64 
65  double newTimeFactor = 1. / m_p.getParameter<double>("TimeSliceUnit");
66  edm::LogInfo("MtdSim") << "New time factor = " << newTimeFactor;
67  setTimeFactor(newTimeFactor);
68 
69  edm::LogVerbatim("MtdSim") << "MtdSD: Instantiation completed for " << name << " of type " << type;
70 }
type
Definition: HCALResponse.h:21
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
void setTimeFactor(double)
Definition: TimingSD.cc:86
bool isBTL
Definition: MtdSD.h:37
bool isETL
Definition: MtdSD.h:38
std::vector< int > dbl_to_int(const std::vector< double > &vecdbl)
Converts a std::vector of doubles to a std::vector of int.
Definition: DDutils.h:7
std::vector< std::pair< unsigned int, DDValue > > DDsvalues_type
Definition: DDsvalues.h:12
void setNumberingScheme(MTDNumberingScheme *)
Definition: MtdSD.cc:99
MTDNumberingScheme * numberingScheme
Definition: MtdSD.h:35
TimingSD(const std::string &, const edm::EventSetup &, const SensitiveDetectorCatalog &, const edm::ParameterSet &, const SimTrackManager *)
Definition: TimingSD.cc:40
T get() const
Definition: EventSetup.h:73
std::vector< double > getDDDArray(const std::string &, const DDsvalues_type &)
Definition: MtdSD.cc:83
MtdSD::~MtdSD ( )
override

Definition at line 72 of file MtdSD.cc.

72 {}

Member Function Documentation

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

Definition at line 108 of file MtdSD.cc.

References MTDBaseNumber::addLevel(), MTDBaseNumber::getCapacity(), cuy::ii, MTDBaseNumber::reset(), MTDBaseNumber::setSize(), and theBaseNumber.

Referenced by setDetUnitId().

108  {
110  const G4VTouchable* touch = aStep->GetPreStepPoint()->GetTouchable();
111  int theSize = touch->GetHistoryDepth() + 1;
112  if (theBaseNumber.getCapacity() < theSize)
113  theBaseNumber.setSize(theSize);
114  //Get name and copy numbers
115  if (theSize > 1) {
116  for (int ii = 0; ii < theSize; ii++) {
117  theBaseNumber.addLevel(touch->GetVolume(ii)->GetName(), touch->GetReplicaNumber(ii));
118 #ifdef EDM_ML_DEBUG
119  edm::LogInfo("MtdSim") << "MtdSD::getBaseNumber(): Adding level " << ii << ": " << touch->GetVolume(ii)->GetName()
120  << "[" << touch->GetReplicaNumber(ii) << "]";
121 #endif
122  }
123  }
124 }
MTDBaseNumber theBaseNumber
Definition: MtdSD.h:36
ii
Definition: cuy.py:590
void setSize(const int &size)
void addLevel(const std::string &name, const int &copyNumber)
std::vector< double > MtdSD::getDDDArray ( const std::string &  str,
const DDsvalues_type sv 
)
private

Definition at line 83 of file MtdSD.cc.

References DDfetch(), DDValue::doubles(), Exception, str, and relativeConstraints::value.

Referenced by MtdSD().

83  {
84  DDValue value(str);
85  if (DDfetch(&sv, value)) {
86  const std::vector<double>& fvec = value.doubles();
87  int nval = fvec.size();
88  if (nval < 1) {
89  edm::LogError("MtdSim") << "MtdSD : # of " << str << " bins " << nval << " < 1 ==> illegal";
90  throw cms::Exception("DDException") << "MtdSD: cannot get array " << str;
91  }
92  return fvec;
93  } else {
94  edm::LogError("MtdSim") << "MtdSD: cannot get array " << str;
95  throw cms::Exception("DDException") << "MtdSD: cannot get array " << str;
96  }
97 }
bool DDfetch(const DDsvalues_type *, DDValue &)
helper for retrieving DDValues from DDsvalues_type *.
Definition: DDsvalues.cc:79
Definition: value.py:1
#define str(s)
uint32_t MtdSD::setDetUnitId ( const G4Step *  aStep)
overridevirtual

Implements SensitiveDetector.

Definition at line 74 of file MtdSD.cc.

References getBaseNumber(), MTDNumberingScheme::getUnitID(), numberingScheme, and theBaseNumber.

74  {
75  if (numberingScheme == nullptr) {
76  return MTDDetId();
77  } else {
78  getBaseNumber(aStep);
80  }
81 }
Detector identifier base class for the MIP Timing Layer.
Definition: MTDDetId.h:21
virtual uint32_t getUnitID(const MTDBaseNumber &baseNumber) const =0
MTDBaseNumber theBaseNumber
Definition: MtdSD.h:36
void getBaseNumber(const G4Step *)
Definition: MtdSD.cc:108
MTDNumberingScheme * numberingScheme
Definition: MtdSD.h:35
void MtdSD::setNumberingScheme ( MTDNumberingScheme scheme)
private

Definition at line 99 of file MtdSD.cc.

References numberingScheme, and generator_cfi::scheme.

Referenced by MtdSD().

99  {
100  if (scheme != nullptr) {
101  edm::LogInfo("MtdSim") << "MtdSD: updates numbering scheme for " << GetName();
102  if (numberingScheme)
103  delete numberingScheme;
105  }
106 }
MTDNumberingScheme * numberingScheme
Definition: MtdSD.h:35

Member Data Documentation

bool MtdSD::isBTL
private

Definition at line 37 of file MtdSD.h.

Referenced by MtdSD().

bool MtdSD::isETL
private

Definition at line 38 of file MtdSD.h.

Referenced by MtdSD().

MTDNumberingScheme* MtdSD::numberingScheme
private

Definition at line 35 of file MtdSD.h.

Referenced by setDetUnitId(), and setNumberingScheme().

MTDBaseNumber MtdSD::theBaseNumber
private

Definition at line 36 of file MtdSD.h.

Referenced by getBaseNumber(), and setDetUnitId().