CMS 3D CMS Logo

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

#include <HFWedgeSD.h>

Inheritance diagram for HFWedgeSD:
SensitiveCaloDetector SensitiveDetector

Public Member Functions

void clear () override
 
void clearHits () override
 
void DrawAll () override
 
void EndOfEvent (G4HCofThisEvent *eventHC) override
 
void fillHits (edm::PCaloHitContainer &, const std::string &) override
 
 HFWedgeSD (const std::string &, const edm::EventSetup &cpv, const SensitiveDetectorCatalog &clg, edm::ParameterSet const &p, const SimTrackManager *)
 
void Initialize (G4HCofThisEvent *HCE) override
 
void PrintAll () override
 
bool ProcessHits (G4Step *step, G4TouchableHistory *tHistory) override
 
uint32_t setDetUnitId (const G4Step *) override
 
 ~HFWedgeSD () override
 
- Public Member Functions inherited from SensitiveCaloDetector
virtual void reset ()
 
 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
 

Protected Member Functions

HFShowerG4HitcreateNewHit ()
 
G4bool hitExists ()
 
void updateHit (HFShowerG4Hit *)
 
- 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 Attributes

HFShowerG4HitcurrentHit
 
int currentID
 
double edep
 
G4ThreeVector globalPos
 
int hcID
 
std::map< int, HFShowerG4Hit * > hitMap
 
G4ThreeVector localPos
 
const SimTrackManagerm_trackManager
 
G4ThreeVector momDir
 
int previousID
 
HFShowerG4HitsCollectiontheHC
 
double time
 
int trackID
 

Additional Inherited Members

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

Detailed Description

Definition at line 18 of file HFWedgeSD.h.

Constructor & Destructor Documentation

◆ HFWedgeSD()

HFWedgeSD::HFWedgeSD ( const std::string &  iname,
const edm::EventSetup cpv,
const SensitiveDetectorCatalog clg,
edm::ParameterSet const &  p,
const SimTrackManager manager 
)
explicit

Definition at line 19 of file HFWedgeSD.cc.

24  : SensitiveCaloDetector(iname, es, clg, p), m_trackManager(manager), hcID(-1), theHC(nullptr), currentHit(nullptr) {
25  edm::LogVerbatim("FiberSim") << "HFWedgeSD : Instantiated for " << iname;
26 }

◆ ~HFWedgeSD()

HFWedgeSD::~HFWedgeSD ( )
override

Definition at line 28 of file HFWedgeSD.cc.

28 { delete theHC; }

References theHC.

Member Function Documentation

◆ clear()

void HFWedgeSD::clear ( void  )
override

Definition at line 66 of file HFWedgeSD.cc.

66 {}

Referenced by EndOfEvent().

◆ clearHits()

void HFWedgeSD::clearHits ( )
overridevirtual

Implements SensitiveDetector.

Definition at line 116 of file HFWedgeSD.cc.

116  {
117  hitMap.erase(hitMap.begin(), hitMap.end());
118  previousID = -1;
119 }

References hitMap, and previousID.

Referenced by Initialize().

◆ createNewHit()

HFShowerG4Hit * HFWedgeSD::createNewHit ( )
protected

Definition at line 88 of file HFWedgeSD.cc.

88  {
89  edm::LogVerbatim("FiberSim") << "HFWedgeSD::CreateNewHit for ID " << currentID << " Track " << trackID
90  << " Edep: " << edep / CLHEP::MeV << " MeV; Time: " << time << " ns; Position (local) "
91  << localPos << " (global ) " << globalPos << " direction " << momDir;
92  HFShowerG4Hit* aHit = new HFShowerG4Hit;
93  aHit->setHitId(currentID);
94  aHit->setTrackId(trackID);
95  aHit->setTime(time);
96  aHit->setLocalPos(localPos);
97  aHit->setGlobalPos(globalPos);
98  aHit->setPrimMomDir(momDir);
99  updateHit(aHit);
100 
101  theHC->insert(aHit);
102  hitMap.insert(std::pair<int, HFShowerG4Hit*>(previousID, aHit));
103 
104  return aHit;
105 }

References currentID, edep, globalPos, hitMap, localPos, MeV, momDir, previousID, HFShowerG4Hit::setGlobalPos(), HFShowerG4Hit::setHitId(), HFShowerG4Hit::setLocalPos(), HFShowerG4Hit::setPrimMomDir(), HFShowerG4Hit::setTime(), HFShowerG4Hit::setTrackId(), theHC, time, trackID, and updateHit().

Referenced by ProcessHits().

◆ DrawAll()

void HFWedgeSD::DrawAll ( )
override

Definition at line 68 of file HFWedgeSD.cc.

68 {}

◆ EndOfEvent()

void HFWedgeSD::EndOfEvent ( G4HCofThisEvent *  eventHC)
override

Definition at line 61 of file HFWedgeSD.cc.

61  {
62  edm::LogVerbatim("FiberSim") << "HFWedgeSD: Sees" << theHC->entries() << " hits";
63  clear();
64 }

References clear(), and theHC.

◆ fillHits()

void HFWedgeSD::fillHits ( edm::PCaloHitContainer ,
const std::string &   
)
overridevirtual

Implements SensitiveCaloDetector.

Definition at line 126 of file HFWedgeSD.cc.

126 {}

◆ hitExists()

G4bool HFWedgeSD::hitExists ( )
protected

Definition at line 72 of file HFWedgeSD.cc.

72  {
73  // Update if in the same detector, time-slice and for same track
74  if (currentID == previousID) {
76  return true;
77  }
78 
79  std::map<int, HFShowerG4Hit*>::const_iterator it = hitMap.find(currentID);
80  if (it != hitMap.end()) {
82  return true;
83  }
84 
85  return false;
86 }

References currentHit, currentID, hitMap, previousID, and updateHit().

Referenced by ProcessHits().

◆ Initialize()

void HFWedgeSD::Initialize ( G4HCofThisEvent *  HCE)
override

Definition at line 30 of file HFWedgeSD.cc.

30  {
31  edm::LogVerbatim("FiberSim") << "HFWedgeSD : Initialize called for " << GetName() << " in collection " << HCE;
32  theHC = new HFShowerG4HitsCollection(GetName(), collectionName[0]);
33  if (hcID < 0)
34  hcID = G4SDManager::GetSDMpointer()->GetCollectionID(collectionName[0]);
35  HCE->AddHitsCollection(hcID, theHC);
36  edm::LogVerbatim("FiberSim") << "HFWedgeSD : Add hit collectrion for " << collectionName[0] << ":" << hcID << ":"
37  << theHC;
38 
39  clearHits();
40 }

References clearHits(), bysipixelclustmulteventfilter_cfi::collectionName, hcID, and theHC.

◆ PrintAll()

void HFWedgeSD::PrintAll ( )
override

Definition at line 70 of file HFWedgeSD.cc.

70 {}

◆ ProcessHits()

G4bool HFWedgeSD::ProcessHits ( G4Step *  step,
G4TouchableHistory *  tHistory 
)
overridevirtual

Implements SensitiveDetector.

Definition at line 42 of file HFWedgeSD.cc.

42  {
43  G4StepPoint* preStepPoint = aStep->GetPreStepPoint();
44  const G4VTouchable* touch = preStepPoint->GetTouchable();
45  currentID = setDetUnitId(aStep);
46  trackID = aStep->GetTrack()->GetTrackID();
47  edep = aStep->GetTotalEnergyDeposit();
48  time = (preStepPoint->GetGlobalTime()) / ns;
49 
50  globalPos = preStepPoint->GetPosition();
51  localPos = touch->GetHistory()->GetTopTransform().TransformPoint(globalPos);
52  const G4DynamicParticle* particle = aStep->GetTrack()->GetDynamicParticle();
53  momDir = particle->GetMomentumDirection();
54 
55  if (hitExists() == false && edep > 0.)
57 
58  return true;
59 }

References createNewHit(), currentHit, currentID, edep, globalPos, hitExists(), localPos, momDir, setDetUnitId(), time, and trackID.

◆ setDetUnitId()

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

Implements SensitiveDetector.

Definition at line 121 of file HFWedgeSD.cc.

121  {
122  const G4VTouchable* touch = aStep->GetPreStepPoint()->GetTouchable();
123  return (touch->GetReplicaNumber(0));
124 }

Referenced by ProcessHits().

◆ updateHit()

void HFWedgeSD::updateHit ( HFShowerG4Hit aHit)
protected

Definition at line 107 of file HFWedgeSD.cc.

107  {
108  if (edep != 0) {
109  aHit->updateEnergy(edep);
110  edm::LogVerbatim("FiberSim") << "HFWedgeSD: Add energy deposit in " << currentID << " edep " << edep / CLHEP::MeV
111  << " MeV";
112  }
114 }

References currentID, edep, MeV, previousID, and HFShowerG4Hit::updateEnergy().

Referenced by createNewHit(), and hitExists().

Member Data Documentation

◆ currentHit

HFShowerG4Hit* HFWedgeSD::currentHit
private

Definition at line 53 of file HFWedgeSD.h.

Referenced by hitExists(), and ProcessHits().

◆ currentID

int HFWedgeSD::currentID
private

Definition at line 50 of file HFWedgeSD.h.

Referenced by createNewHit(), hitExists(), ProcessHits(), and updateHit().

◆ edep

double HFWedgeSD::edep
private

Definition at line 51 of file HFWedgeSD.h.

Referenced by createNewHit(), ProcessHits(), and updateHit().

◆ globalPos

G4ThreeVector HFWedgeSD::globalPos
private

Definition at line 52 of file HFWedgeSD.h.

Referenced by createNewHit(), and ProcessHits().

◆ hcID

int HFWedgeSD::hcID
private

Definition at line 46 of file HFWedgeSD.h.

Referenced by Initialize().

◆ hitMap

std::map<int, HFShowerG4Hit*> HFWedgeSD::hitMap
private

Definition at line 48 of file HFWedgeSD.h.

Referenced by clearHits(), createNewHit(), and hitExists().

◆ localPos

G4ThreeVector HFWedgeSD::localPos
private

Definition at line 52 of file HFWedgeSD.h.

Referenced by createNewHit(), and ProcessHits().

◆ m_trackManager

const SimTrackManager* HFWedgeSD::m_trackManager
private

Definition at line 44 of file HFWedgeSD.h.

◆ momDir

G4ThreeVector HFWedgeSD::momDir
private

Definition at line 52 of file HFWedgeSD.h.

Referenced by createNewHit(), and ProcessHits().

◆ previousID

int HFWedgeSD::previousID
private

Definition at line 50 of file HFWedgeSD.h.

Referenced by clearHits(), createNewHit(), hitExists(), and updateHit().

◆ theHC

HFShowerG4HitsCollection* HFWedgeSD::theHC
private

Definition at line 47 of file HFWedgeSD.h.

Referenced by createNewHit(), EndOfEvent(), Initialize(), and ~HFWedgeSD().

◆ time

double HFWedgeSD::time
private

Definition at line 51 of file HFWedgeSD.h.

Referenced by createNewHit(), and ProcessHits().

◆ trackID

int HFWedgeSD::trackID
private

Definition at line 50 of file HFWedgeSD.h.

Referenced by createNewHit(), and ProcessHits().

HFWedgeSD::hitMap
std::map< int, HFShowerG4Hit * > hitMap
Definition: HFWedgeSD.h:48
HFShowerG4Hit::setPrimMomDir
void setPrimMomDir(const G4ThreeVector &xyz)
Definition: HFShowerG4Hit.h:44
HFWedgeSD::edep
double edep
Definition: HFWedgeSD.h:51
HFWedgeSD::createNewHit
HFShowerG4Hit * createNewHit()
Definition: HFWedgeSD.cc:88
HFShowerG4HitsCollection
G4THitsCollection< HFShowerG4Hit > HFShowerG4HitsCollection
Definition: HFShowerG4Hit.h:55
HFWedgeSD::hcID
int hcID
Definition: HFWedgeSD.h:46
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
HFShowerG4Hit::setLocalPos
void setLocalPos(const G4ThreeVector &xyz)
Definition: HFShowerG4Hit.h:42
HFWedgeSD::hitExists
G4bool hitExists()
Definition: HFWedgeSD.cc:72
MeV
const double MeV
HFShowerG4Hit
Definition: HFShowerG4Hit.h:15
SensitiveCaloDetector::SensitiveCaloDetector
SensitiveCaloDetector(const std::string &iname, const edm::EventSetup &es, const SensitiveDetectorCatalog &clg, edm::ParameterSet const &p)
Definition: SensitiveCaloDetector.h:12
HFWedgeSD::setDetUnitId
uint32_t setDetUnitId(const G4Step *) override
Definition: HFWedgeSD.cc:121
HFWedgeSD::momDir
G4ThreeVector momDir
Definition: HFWedgeSD.h:52
bysipixelclustmulteventfilter_cfi.collectionName
collectionName
Definition: bysipixelclustmulteventfilter_cfi.py:5
HFWedgeSD::time
double time
Definition: HFWedgeSD.h:51
HFWedgeSD::currentHit
HFShowerG4Hit * currentHit
Definition: HFWedgeSD.h:53
HFWedgeSD::updateHit
void updateHit(HFShowerG4Hit *)
Definition: HFWedgeSD.cc:107
HFShowerG4Hit::setGlobalPos
void setGlobalPos(const G4ThreeVector &xyz)
Definition: HFShowerG4Hit.h:43
HFShowerG4Hit::setTrackId
void setTrackId(G4int trackId)
Definition: HFShowerG4Hit.h:38
HFShowerG4Hit::setTime
void setTime(G4double t)
Definition: HFShowerG4Hit.h:41
HFWedgeSD::clear
void clear() override
Definition: HFWedgeSD.cc:66
HFWedgeSD::clearHits
void clearHits() override
Definition: HFWedgeSD.cc:116
HFWedgeSD::globalPos
G4ThreeVector globalPos
Definition: HFWedgeSD.h:52
HFWedgeSD::localPos
G4ThreeVector localPos
Definition: HFWedgeSD.h:52
HFShowerG4Hit::setHitId
void setHitId(G4int hitId)
Definition: HFShowerG4Hit.h:37
edm::LogVerbatim
Log< level::Info, true > LogVerbatim
Definition: MessageLogger.h:128
HFWedgeSD::currentID
int currentID
Definition: HFWedgeSD.h:50
HFWedgeSD::trackID
int trackID
Definition: HFWedgeSD.h:50
HFWedgeSD::previousID
int previousID
Definition: HFWedgeSD.h:50
HFWedgeSD::theHC
HFShowerG4HitsCollection * theHC
Definition: HFWedgeSD.h:47
HFShowerG4Hit::updateEnergy
void updateEnergy(G4double edep)
Definition: HFShowerG4Hit.h:40
HFWedgeSD::m_trackManager
const SimTrackManager * m_trackManager
Definition: HFWedgeSD.h:44