58{
59
61
62
63
64 const G4StepPoint *pPreStepPoint(pStep->GetPreStepPoint());
65 const G4StepPoint *pPostStepPoint(pStep->GetPostStepPoint());
66
67 const double kineticEnergy(pPreStepPoint->GetKineticEnergy());
68
69 const G4ThreeVector preStepPoint(pPreStepPoint->GetPosition());
70 const G4ThreeVector postStepPoint(pPostStepPoint->GetPosition());
71
72
73 const G4String vol_name(pPreStepPoint->GetTouchableHandle()->GetVolume()->GetName());
74
75 const double preStepX(preStepPoint.x());
76 const double preStepY(preStepPoint.y());
77 const double preStepZ(preStepPoint.z());
78
79 const double postStepX(postStepPoint.x());
80 const double postStepY(postStepPoint.y());
81 const double postStepZ(postStepPoint.z());
82
83 int n_plate(0);
84 int n_fiber(0);
85 int n_station(0);
86
88
89
90 const G4Track *pTrack(pStep->GetTrack());
91 const int particleEncoding(pTrack->GetDefinition()->GetPDGEncoding());
92
93 const double globalTime(pTrack->GetGlobalTime());
94 const int trackID(pTrack->GetTrackID());
95
96 std::string vol_test_str = vol_name.substr(0,7);
97
98
99 if(vol_name.find("GVS") != std::string::npos)
100 {
101
102 if(vol_name.find("B7L1") != std::string::npos) n_station=0;
103 else if(vol_name.find("A7L1") != std::string::npos) n_station=1;
104 else if(vol_name.find("A7R1") != std::string::npos) n_station=2;
105 else if(vol_name.find("B7R1") != std::string::npos) n_station=3;
106 else n_station=-1;
108 {
110 (float) energyDeposit,(float) preStepX, (float) preStepY, (float) preStepZ,
111 (float) postStepX, (float) postStepY, (float) postStepZ,(float) globalTime,
112 -1, 100, -1, (int) n_station);
114 }
115 else
116 {
119 G4Exception(
"ALFA_SensitiveDetector",
"InvalidHitColl1", FatalException,
description);
120 return false;
121 }
122 }
123
124 if (vol_test_str.compare("ALFA_Fi") == 0)
125 {
126 if (std::abs(energyDeposit)<std::numeric_limits<double>::epsilon()) { return true; }
128 std::string substring (vol_name);
129 std::string num_string (vol_name);
130
131
132 std::string test_str ("A");
133 test_str = substring.substr(
m_pos2,1);
134 int sign_fiber(0);
135 if (test_str.compare("U") == 0)
136 {
137 sign_fiber = 1;
138 }
139
140 if (test_str.compare("V") == 0)
141 {
142 sign_fiber = -1;
143 }
144
145
146 for (
int k = 0;
k < 3;
k++ )
147 {
148 substring = substring.substr(
m_pos2+1);
152 std::istringstream is(num_string);
154 }
155
156 n_station =
m_num[0];
159
160
162 {
164 trackID,
165 particleEncoding,
166 (float) kineticEnergy,
167 (float) energyDeposit,
168 (float) preStepX, (float) preStepY, (float) preStepZ,
169 (float) postStepX, (float) postStepY, (float) postStepZ,
170 (float) globalTime,
171 (int) sign_fiber, (int) n_plate, (int) n_fiber, (int) n_station
172 );
174 }
175 else
176 {
179 G4Exception(
"ALFA_SensitiveDetector",
"InvalidHitColl2", FatalException,
description);
180 return false;
181 }
182 }
183
184 if (vol_test_str.compare("ODFiber") == 0)
185 {
186 if (std::abs(energyDeposit)<std::numeric_limits<double>::epsilon()) { return true; }
188 std::string substring (vol_name);
189 std::string num_string (std::move(vol_name));
190
191 std::string test_str = substring.substr(
m_pos2,1);
192 int sign_fiber(0);
193 if (test_str.compare("U") == 0)
194 {
195 sign_fiber = 1;
196 }
197
198 if (test_str.compare("V") == 0)
199 {
200 sign_fiber = -1;
201 }
202
203 std::string test_str_side ("A");
204 test_str_side = substring.substr(
m_pos2+1,1);
205
206 int OD_side(0);
207 if (test_str_side.compare("0") == 0)
208 {
209 OD_side = 0;
210 }
211
212 if (test_str_side.compare("1") == 0)
213 {
214 OD_side = 1;
215 }
216
217 for (
int k = 0;
k < 3;
k++ )
218 {
219 substring = substring.substr(
m_pos2+1);
223 std::istringstream is(num_string);
225 }
226
227 n_station =
m_num[0];
230
232 {
234 trackID,
235 particleEncoding,
236 (float) kineticEnergy,
237 (float) energyDeposit,
238 (float) preStepX, (float) preStepY, (float) preStepZ,
239 (float) postStepX, (float) postStepY, (float) postStepZ,
240 (float) globalTime,
241 (int) sign_fiber, (int) OD_side, (int) n_plate, (int) n_fiber, (int) n_station
242 );
244 }
245 else
246 {
249 G4Exception(
"ALFA_SensitiveDetector",
"InvalidHitColl3", FatalException,
description);
250 return false;
251 }
252
253 }
254
255
256 return true;
257}
std::string description
glabal timer - how long have I taken so far?