127 const int sensorCopyNo = myTouch->GetVolume()->GetCopyNo();
130 for (
int i=0;
i<myTouch->GetHistoryDepth();
i++){
131 std::string detname=myTouch->GetVolume(
i)->GetLogicalVolume()->GetName();
132 int copyno=myTouch->GetVolume(
i)->GetCopyNo();
133 G4cout <<
"Volume "<<detname <<
" Copy Nr. " << copyno << G4endl;
139 if(sensorCopyNo/1000) {
141 if(sensorCopyNo == 1000) {
142 side = myTouch->GetVolume(1)->GetCopyNo();
143 etaMod = myTouch->GetVolume(2)->GetCopyNo();
144 phiMod = myTouch->GetVolume(3)->GetCopyNo();
145 layerDisk = myTouch->GetVolume(5)->GetCopyNo();
146 }
else if(sensorCopyNo == 1100) {
148 int etaModTmp = myTouch->GetVolume(1)->GetCopyNo();
149 int sign = (etaModTmp>=0)? +1 : -1;
150 side = std::abs(etaModTmp)%2;
152 phiMod = myTouch->GetVolume(2)->GetCopyNo();
153 layerDisk = myTouch->GetVolume(4)->GetCopyNo();
154 }
else if(sensorCopyNo/100 == 12) {
156 int iSegment = sensorCopyNo%100;
157 int sensorEnvCopyNo = myTouch->GetVolume(1)->GetCopyNo();
158 if (sensorEnvCopyNo == 1000) {
159 side = myTouch->GetVolume(2)->GetCopyNo();
160 etaMod = myTouch->GetVolume(3)->GetCopyNo() + iSegment;
161 phiMod = myTouch->GetVolume(4)->GetCopyNo();
162 layerDisk = myTouch->GetVolume(6)->GetCopyNo();
163 }
else if (sensorEnvCopyNo == 1100) {
165 int etaModTmp = myTouch->GetVolume(2)->GetCopyNo();
166 int sign = (etaModTmp>=0)? +1 : -1;
167 side = std::abs(etaModTmp)%2;
168 etaMod =
sign * std::abs(etaModTmp)/2 + iSegment;
169 phiMod = myTouch->GetVolume(3)->GetCopyNo();
170 layerDisk = myTouch->GetVolume(5)->GetCopyNo();
173 description <<
"ProcessHits: Unrecognized geometry in SCT sensitive detector. Please contact the maintainer of the SCT Detector Description.";
174 G4Exception(
"SctSensorSD",
"UnrecognizedSCTGeometry1", FatalException,
description);
179 description <<
"ProcessHits: Unrecognized geometry in SCT sensitive detector. Please contact the maintainer of the SCT Detector Description.";
180 G4Exception(
"SctSensorSD",
"UnrecognizedSCTGeometry2", FatalException,
description);
184 G4cout <<
"In the SCT Barrel" << G4endl;
185 G4cout <<
"----- side : " <<
side << G4endl;
186 G4cout <<
"----- eta_module : " <<
etaMod << G4endl;
187 G4cout <<
"----- phi_module : " << phiMod << G4endl;
188 G4cout <<
"----- layer : " << layerDisk << G4endl;
189 G4cout <<
"----- barrel_ec : " << brlEcap<< G4endl;
196 int sensorCopyNoTest = sensorCopyNo/100;
197 if(sensorCopyNoTest == 5 || sensorCopyNoTest == 6) {
198 int signZ = (coord1z > 0) ? 1 : -1;
200 side = myTouch->GetVolume(0)->GetCopyNo() % 2;
201 if (sensorCopyNoTest == 5) {
202 etaMod = myTouch->GetVolume(3)->GetCopyNo();
203 layerDisk = myTouch->GetVolume(4)->GetCopyNo();
205 etaMod = myTouch->GetVolume(2)->GetCopyNo();
206 layerDisk = myTouch->GetVolume(3)->GetCopyNo();
208 int phiNumber = myTouch->GetVolume(1)->GetCopyNo();
211 int maxModules = (phiNumber & 0x00ff0000) >> 16;
212 int moduleZero = (phiNumber & 0xff000000) >> 24;
213 phiMod = phiNumber & 0x0000ffff;
217 if (maxModules && signZ < 0) phiMod = (maxModules + moduleZero - phiMod) % maxModules;
221 G4cout <<
"In the SCT EndCap" << G4endl;
222 G4cout <<
"----- side : " <<
side << G4endl;
223 G4cout <<
"----- phi_module : " << phiMod<< G4endl;
224 G4cout <<
"----- eta_module : " <<
etaMod << G4endl;
225 G4cout <<
"----- layerDisk : " << layerDisk << G4endl;
226 G4cout <<
"----- barrel_ec : " << brlEcap << G4endl;
231 description <<
"ProcessHits: Unrecognized geometry in SCT sensitive detector. Please contact the maintainer of the SCT Detector Description.";
232 G4Exception(
"SctSensorSD",
"UnrecognizedSCTGeometry3", FatalException,
description);