File indexing completed on 2026-09-22 08:08:42
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031 #include "XAluminumElectrodeHit.hh"
0032
0033 #include "G4AttDef.hh"
0034 #include "G4AttDefStore.hh"
0035 #include "G4AttValue.hh"
0036 #include "G4Circle.hh"
0037 #include "G4Colour.hh"
0038 #include "G4LogicalVolume.hh"
0039 #include "G4RotationMatrix.hh"
0040 #include "G4SystemOfUnits.hh"
0041 #include "G4Transform3D.hh"
0042 #include "G4UnitsTable.hh"
0043 #include "G4VVisManager.hh"
0044 #include "G4VisAttributes.hh"
0045 #include "G4ios.hh"
0046
0047 G4ThreadLocal G4Allocator<XAluminumElectrodeHit>* XAluminumElectrodeHitAllocator = 0;
0048
0049 XAluminumElectrodeHit::XAluminumElectrodeHit()
0050 {
0051 fTime = 0.;
0052 fEdep = 0.;
0053 }
0054
0055
0056
0057 XAluminumElectrodeHit::~XAluminumElectrodeHit()
0058 {
0059 ;
0060 }
0061
0062
0063
0064 XAluminumElectrodeHit::XAluminumElectrodeHit(const XAluminumElectrodeHit& right) : G4VHit()
0065 {
0066 fTime = right.fTime;
0067 fEdep = right.fEdep;
0068 fWorldPos = right.fWorldPos;
0069 fLocalPos = right.fLocalPos;
0070 }
0071
0072
0073
0074 const XAluminumElectrodeHit& XAluminumElectrodeHit::operator=(const XAluminumElectrodeHit& right)
0075 {
0076 fTime = right.fTime;
0077 fEdep = right.fEdep;
0078 fWorldPos = right.fWorldPos;
0079 fLocalPos = right.fLocalPos;
0080 return *this;
0081 }
0082
0083
0084
0085 G4bool XAluminumElectrodeHit::operator==(const XAluminumElectrodeHit& ) const
0086 {
0087 return false;
0088 }
0089
0090
0091
0092 void XAluminumElectrodeHit::Draw()
0093 {
0094 G4VVisManager* pVVisManager = G4VVisManager::GetConcreteInstance();
0095 if (pVVisManager) {
0096 G4Circle circle(fWorldPos);
0097 circle.SetScreenSize(15);
0098 circle.SetFillStyle(G4Circle::filled);
0099 G4Colour colour(0.65, 0.65, 0.);
0100 G4VisAttributes attribs(colour);
0101 attribs.SetStartTime(fTime);
0102 attribs.SetEndTime(fTime + 1 * ms);
0103 circle.SetVisAttributes(attribs);
0104 pVVisManager->Draw(circle);
0105 }
0106 }
0107
0108
0109
0110 const std::map<G4String, G4AttDef>* XAluminumElectrodeHit::GetAttDefs() const
0111 {
0112 G4bool isNew;
0113 std::map<G4String, G4AttDef>* store = G4AttDefStore::GetInstance("XAluminumElectrodeHit", isNew);
0114 if (isNew) {
0115 G4String HitType("HitType");
0116 (*store)[HitType] = G4AttDef(HitType, "Hit Type", "Physics", "", "G4String");
0117
0118 G4String Time("Time");
0119 (*store)[Time] = G4AttDef(Time, "Time", "Physics", "G4BestUnit", "G4double");
0120
0121 G4String EDep("EDep");
0122 (*store)[EDep] = G4AttDef(Time, "EDep", "Physics", "G4BestUnit", "G4double");
0123
0124 G4String Pos("Pos");
0125 (*store)[Pos] = G4AttDef(Pos, "Position", "Physics", "G4BestUnit", "G4ThreeVector");
0126 }
0127 return store;
0128 }
0129
0130
0131
0132 std::vector<G4AttValue>* XAluminumElectrodeHit::CreateAttValues() const
0133 {
0134 std::vector<G4AttValue>* values = new std::vector<G4AttValue>;
0135
0136 values->push_back(G4AttValue("HitType", "XAluminumElectrodeHit", ""));
0137
0138 values->push_back(G4AttValue("Time", G4BestUnit(fTime, "Time"), ""));
0139
0140 values->push_back(G4AttValue("EDep", G4BestUnit(fEdep, "Energy"), ""));
0141
0142 values->push_back(G4AttValue("Pos", G4BestUnit(fWorldPos, "Length"), ""));
0143
0144 return values;
0145 }
0146
0147
0148
0149 void XAluminumElectrodeHit::Print()
0150 {
0151 G4cout << " time " << fTime / ns << " (nsec) : at " << fLocalPos << " -- fEdep = " << fEdep / eV
0152 << " [eV]" << G4endl;
0153 }