Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Private Attributes | Static Private Attributes | List of all members
XAluminumElectrodeSensitivity Class Reference

#include <Doxymodules_exoticphysics.h>

Inheritance diagram for XAluminumElectrodeSensitivity:
G4VSensitiveDetector

Public Member Functions

 XAluminumElectrodeSensitivity (const G4String &)
 
virtual ~XAluminumElectrodeSensitivity ()
 
virtual void Initialize (G4HCofThisEvent *)
 
virtual G4bool ProcessHits (G4Step *, G4TouchableHistory *)
 
virtual void EndOfEvent (G4HCofThisEvent *)
 
XAluminumElectrodeHitsCollectionGetHitsCollection ()
 

Protected Member Functions

void WriteHitInfo (const XAluminumElectrodeHit *aHit)
 

Private Attributes

XAluminumElectrodeHitsCollectionfHitsCollection
 
G4int fHCID
 

Static Private Attributes

static std::fstream * fWriter = 0
 
static std::fstream * fWriter2 = 0
 

Detailed Description

Definition at line 47 of file Doxymodules_exoticphysics.h.

Constructor & Destructor Documentation

◆ XAluminumElectrodeSensitivity()

XAluminumElectrodeSensitivity::XAluminumElectrodeSensitivity ( const G4String name)

Definition at line 52 of file XAluminumElectrodeSensitivity.cc.

54 : G4VSensitiveDetector(name) {
55 collectionName.insert("XAluminumElectrodeHit");
56 fHCID = -1;
57
58 G4AutoLock lockIt(&theMutex); // Only one thread opens files!
59 fWriter = new std::fstream("caustic.ssv",std::fstream::out|std::fstream::ate);
60 if (!fWriter->is_open()) {
61 G4cerr << "XAluminumElectrodeSensitivity::Constructor:"
62 << "\n\tFailed to open caustic.ssv for appending data."
63 << "\n\tCreating caustic.ssv" << G4endl;
64 fWriter->open("caustic.ssv");
65 }
66
67 fWriter2 = new std::fstream("timing.ssv",std::fstream::out|std::fstream::ate);
68 if (!fWriter2->is_open()) {
69 G4cerr << "XAluminumElectrodeSensitivity::Constructor: "
70 << "\n\tFailed to open timing.ssv for appending data."
71 << "\n\tCreating timing.ssv." << G4endl;
72 fWriter2->open("timing.ssv");
73 }
74
75 if (!(fWriter->is_open() && fWriter2->is_open())) {
76 G4cerr << "XAluminumElectrodeSensitivity::Constructor: "
77 << "\nERROR: COULD NOT CREATE OUTPUT FILES FOR WRITING" << G4endl;
78 }
79}

◆ ~XAluminumElectrodeSensitivity()

XAluminumElectrodeSensitivity::~XAluminumElectrodeSensitivity ( )
virtual

Definition at line 83 of file XAluminumElectrodeSensitivity.cc.

83 {
84 G4AutoLock lockIt(&theMutex); // Only one thread deletes!
85
86 if (fWriter) {
87 fWriter->close();
88 delete fWriter; fWriter = 0;
89 }
90
91 if (fWriter2) {
92 fWriter2->close();
93 delete fWriter2; fWriter2 = 0;
94 }
95}

Member Function Documentation

◆ Initialize()

void XAluminumElectrodeSensitivity::Initialize ( G4HCofThisEvent HCE)
virtual

Definition at line 106 of file XAluminumElectrodeSensitivity.cc.

107{
109 new XAluminumElectrodeHitsCollection(SensitiveDetectorName,
110 collectionName[0]);
111 if (fHCID<0)
112 { fHCID = G4SDManager::GetSDMpointer()->GetCollectionID(fHitsCollection); }
113 HCE->AddHitsCollection(fHCID,fHitsCollection);
114}
G4THitsCollection< XAluminumElectrodeHit > XAluminumElectrodeHitsCollection
XAluminumElectrodeHitsCollection * fHitsCollection

◆ ProcessHits()

G4bool XAluminumElectrodeSensitivity::ProcessHits ( G4Step aStep,
G4TouchableHistory  
)
virtual

Definition at line 118 of file XAluminumElectrodeSensitivity.cc.

120{
121 //if(aStep->GetTrack()->GetDefinition()!=Phonon::PhononDefinition()) return true;
122 G4double edp = aStep->GetNonIonizingEnergyDeposit();
123 if(edp==0.) return true;
124
125 G4StepPoint* preStepPoint = aStep->GetPreStepPoint();
126 G4StepPoint* postStepPoint = aStep->GetPostStepPoint();
127 G4TouchableHistory* theTouchable
128 = (G4TouchableHistory*)(preStepPoint->GetTouchable());
129 G4ThreeVector fWorldPos = postStepPoint->GetPosition();
130 G4ThreeVector fLocalPos
131 = theTouchable->GetHistory()->GetTopTransform().TransformPoint(fWorldPos);
132
134 aHit->fTime = postStepPoint->GetGlobalTime();
135 aHit->fEdep = edp;
136 aHit->fWorldPos = fWorldPos;
137 aHit->fLocalPos = fLocalPos;
138
139 fHitsCollection->insert(aHit);
140
141 return true;
142}

◆ EndOfEvent()

void XAluminumElectrodeSensitivity::EndOfEvent ( G4HCofThisEvent )
virtual

Definition at line 146 of file XAluminumElectrodeSensitivity.cc.

146 {
147 if (!fHitsCollection || fHitsCollection->GetSize()==0) return;
148
149 for (size_t i=0; i<fHitsCollection->GetSize(); i++) {
150 WriteHitInfo(dynamic_cast<XAluminumElectrodeHit*>(fHitsCollection->GetHit(i)));
151 }
152}
void WriteHitInfo(const XAluminumElectrodeHit *aHit)

◆ GetHitsCollection()

XAluminumElectrodeHitsCollection * XAluminumElectrodeSensitivity::GetHitsCollection ( )

Definition at line 100 of file XAluminumElectrodeSensitivity.cc.

100 {
101 return fHitsCollection;
102}

◆ WriteHitInfo()

void XAluminumElectrodeSensitivity::WriteHitInfo ( const XAluminumElectrodeHit aHit)
protected

Definition at line 156 of file XAluminumElectrodeSensitivity.cc.

157 {
158 if (!aHit) return;
159
160 G4AutoLock lockIt(&theMutex); // Only one event can write at a time
161
162 *fWriter << aHit->fWorldPos.getX()/mm
163 << "," << aHit->fWorldPos.getY()/mm
164 << "," << aHit->fWorldPos.getZ()/mm
165 << "\n";
166
167 *fWriter2 << aHit->fTime/ns << " " << aHit->fEdep/eV << "\n";
168}

Member Data Documentation

◆ fHitsCollection

XAluminumElectrodeHitsCollection* XAluminumElectrodeSensitivity::fHitsCollection
private

Definition at line 59 of file XAluminumElectrodeSensitivity.hh.

◆ fWriter

std::fstream * XAluminumElectrodeSensitivity::fWriter = 0
staticprivate

Definition at line 61 of file XAluminumElectrodeSensitivity.hh.

◆ fWriter2

std::fstream * XAluminumElectrodeSensitivity::fWriter2 = 0
staticprivate

Definition at line 62 of file XAluminumElectrodeSensitivity.hh.

◆ fHCID

G4int XAluminumElectrodeSensitivity::fHCID
private

Definition at line 64 of file XAluminumElectrodeSensitivity.hh.


The documentation for this class was generated from the following files:

Applications | User Support | Publications | Collaboration