17 #include "GeoModelRead/ReadGeoModel.h"
20 #include "GeoModelKernel/GeoPhysVol.h"
21 #include "GeoModelKernel/GeoFullPhysVol.h"
22 #include "GeoModelKernel/GeoNameTag.h"
23 #include "GeoModelKernel/GeoAlignableTransform.h"
24 #include "GeoModelKernel/GeoCountVolAndSTAction.h"
25 #include "GeoModelKernel/GeoAccessVolAndSTAction.h"
26 #include "GeoModelKernel/GeoDefinitions.h"
27 #include "GeoModelKernel/GeoVolumeCursor.h"
28 #include "GeoModelKernel/Units.h"
29 #include "GeoGenericFunctions/AbsFunction.h"
30 #include "GeoGenericFunctions/Variable.h"
31 #include "GeoGenericFunctions/Sin.h"
32 #include "GeoGenericFunctions/Cos.h"
48 using namespace GeoXF;
56 bool useOldActiveGasMixture,
57 bool DC2CompatibleBarrelCoordinates,
58 int overridedigversion,
60 bool useDynamicAlignmentFolders)
61 :
InDetDD::DetectorFactoryBase(athenaComps),
62 m_sqliteReader (sqliteReader),
63 m_useOldActiveGasMixture(useOldActiveGasMixture),
64 m_DC2CompatibleBarrelCoordinates(DC2CompatibleBarrelCoordinates),
65 m_overridedigversion(overridedigversion),
66 m_alignable(alignable),
68 m_useDynamicAlignFolders(useDynamicAlignmentFolders)
109 trtCO2->add(carbon,1);
110 trtCO2->add(oxygen,2);
115 trtO2->add(oxygen,1);
119 trtArgon->add(argon,1);
123 trtXenon->add(xenon,1);
127 argonGas->add(trtArgon,0.7);
128 argonGas->add(trtCO2,0.27);
129 argonGas->add(trtO2,0.03);
133 xenonGas->add(trtXenon,0.7);
134 xenonGas->add(trtCO2,0.27);
135 xenonGas->add(trtO2,0.03);
141 std::map<std::string, GeoFullPhysVol*> mapFPV =
m_sqliteReader->getPublishedNodes<std::string, GeoFullPhysVol*>(
"TRT");
142 std::map<std::string, GeoAlignableTransform*> mapAX =
m_sqliteReader->getPublishedNodes<std::string, GeoAlignableTransform*>(
"TRT");
145 GeoFullPhysVol *pBarrelVol = mapFPV[
"TRTBarrel"];
146 GeoFullPhysVol *pEndCapABPlus = mapFPV[
"TRTEndCapABPlus"];
147 GeoFullPhysVol *pEndCapCPlus = mapFPV[
"TRTEndCapCPlus"];
148 GeoFullPhysVol *pEndCapABMinus = mapFPV[
"TRTEndCapABMinus"];
149 GeoFullPhysVol *pEndCapCMinus = mapFPV[
"TRTEndCapCPlus"];;
158 ATH_MSG_DEBUG(
" Getting primary numbers from the Detector Description Database " );
160 m_data.reset(parameterInterface);
166 std::vector<GeoTrf::Transform3D> shellPosVec;
168 for (
size_t r=0;
r<trtShellPosVecRecordSet->size();
r++) {
169 const IRDBRecord * trtShellPosVecRecord = (*trtShellPosVecRecordSet)[
r];
170 double xx=trtShellPosVecRecord->
getDouble(
"xx");
171 double xy=trtShellPosVecRecord->
getDouble(
"xy");
172 double xz=trtShellPosVecRecord->
getDouble(
"xz");
174 double yx=trtShellPosVecRecord->
getDouble(
"yx");
176 double yz=trtShellPosVecRecord->
getDouble(
"yz");
178 double zx=trtShellPosVecRecord->
getDouble(
"zx");
179 double zy=trtShellPosVecRecord->
getDouble(
"zy");
180 double zz=trtShellPosVecRecord->
getDouble(
"zz");
184 double dz=trtShellPosVecRecord->
getDouble(
"dz");
186 M(0,0)=xx; M(0,1)=xy; M(0,2)=xz; M(0,3)=
dx;
187 M(1,0)=yx; M(1,1)=
yy; M(1,2)=yz; M(1,3)=
dy;
188 M(2,0)=zx; M(2,1)=zy; M(2,2)=zz; M(2,3)=dz;
189 M(3,0)= 0; M(3,1)= 0; M(3,2)= 0; M(3,3)=1;
192 shellPosVec.push_back(
T);
202 const TRT_ID *idHelper =
nullptr;
204 if (
detStore()->retrieve(idHelper,
"TRT_ID").isFailure()) {
218 std::string versionTag =
m_data->versionTag;
219 std::string versionName =
"DC2";
220 std::string layout =
"Final";
222 int versionMajorNumber = 2;
223 int versionMinorNumber = 1;
224 int versionPatchNumber = 0;
226 if (
m_data->initialLayout) layout =
"Initial";
231 versionMajorNumber = 3;
232 versionName =
"Rome";
236 if (
m_data->isCosmicRun) {
245 if (!
m_data->oldConfiguration) {
246 versionName =
m_data->versionName;
249 versionMajorNumber = 4;
250 versionMinorNumber = 1;
251 versionPatchNumber = 1;
275 const int AlignmentLevelSubWheel = 1;
276 const int AlignmentLevelModule = 2;
277 const int AlignmentLevelTop = 3;
294 if (pEndCapABMinus) {
315 if (pEndCapABMinus) {
334 ATH_MSG_INFO(
"Digversion overridden via joboptions from "
335 <<
m_data->digversion <<
" ('" <<
m_data->digversionname <<
"') to "
343 for (
unsigned int m=0;
m<
m_data->nBarrelRings;
m++) {
351 unsigned int nEndcapWheels = 0;
352 if (pEndCapABPlus||pEndCapABMinus) nEndcapWheels +=
m_data->endcapNumberOfAWheels +
m_data->endcapNumberOfBWheels;
353 if (pEndCapCPlus||pEndCapCMinus) nEndcapWheels +=
m_data->endcapNumberOfCWheels;
359 unsigned int nlayers;
360 if ( w < m_data->endcapNumberOfAWheels )
361 nlayers =
m_data->endCapNumberOfStrawLayersPerWheelA;
362 else if (
w < (
m_data->endcapNumberOfAWheels +
m_data->endcapNumberOfBWheels ) )
363 nlayers =
m_data->endCapNumberOfStrawLayersPerWheelB;
365 nlayers =
m_data->endCapNumberOfStrawLayersPerWheelC;
376 ATH_MSG_DEBUG(
"Virtual TRT Barrel volume defined by RMin = "<<
m_data->virtualBarrelInnerRadius
377 <<
", Rmax = "<<
m_data->virtualBarrelOuterRadius<<
" Zmax = "<<
m_data->virtualBarrelVolumeLength );
382 GeoAlignableTransform * barrelTransform = mapAX[
"TRTBarrel"];
393 GeoAlignableTransform *
transform = mapAX[
"TRTEndCapABPlus"];
400 if (pEndCapABMinus) {
402 GeoAlignableTransform *
transform = mapAX[
"TRTEndCapABMinus"];
416 GeoFullPhysVol *pCommonEndcapAB[]={pEndCapABPlus,pEndCapABMinus};
417 GeoFullPhysVol *pCommonEndcapC[]={pEndCapCPlus,pEndCapCMinus};
434 std::vector<InDetDD::TRT_BarrelDescriptor *> bDescriptor;
444 for (
size_t iABC=0;iABC<
m_data->nBarrelRings;iABC++) {
452 size_t nStrawsWithLargeDeadRegion = 0;
454 for (
size_t iLayer = 0; iLayer<
m_data->barrelNumberOfLayersWithLargeDeadRegion; iLayer++) {
455 nStrawsWithLargeDeadRegion +=
m_data->barrelNumberOfStrawsInStrawLayer[iABC][iLayer];
460 GeoTrf::TranslateX3D Xx(1.0);
461 GeoTrf::TranslateY3D Xy(1.0);
463 GENFUNCTION fx =
ArrayFunction(&
m_data->strawXPosition[iABC][0+nStrawsWithLargeDeadRegion],
464 &
m_data->strawXPosition[iABC][0]+
m_data->barrelNumberOfStrawsInModule[iABC]);
466 GENFUNCTION fy =
ArrayFunction(&
m_data->strawYPosition[iABC][0+nStrawsWithLargeDeadRegion],
467 &
m_data->strawYPosition[iABC][0]+
m_data->barrelNumberOfStrawsInModule[iABC]);
468 TRANSFUNCTION tx1 = Pow(Xx,fx)*Pow(Xy,fy);
474 TRANSFUNCTION tx1All = Pow(Xx,fxAll)*Pow(Xy,fyAll);
486 m_data->strawYPosition[iABC][
m_data->barrelIndexOfSecondGlobalAlignmentStraw[iABC]],0);
492 GeoTrf::Vector2D local12((Align2Local - Align1Local).
x(),(Align2Local - Align1Local).
y());
493 GeoTrf::Vector2D global12((Align2Global - Align1Global).
x(),(Align2Global - Align1Global).
y());
494 double zrotang = global12.phi()-local12.phi();
498 GeoTrf::Transform3D absStrawXForm = GeoTrf::Translate3D(Align1Global.x(),Align1Global.y(),Align1Global.z())
499 *GeoTrf::RotateZ3D( zrotang )
500 *GeoTrf::Translate3D(-Align1Local.x(),-Align1Local.y(),-Align1Local.z());
506 TRANSFUNCTION tx2=shellPosition.inverse()*absStrawXForm*tx1;
507 TRANSFUNCTION tx2All=shellPosition.inverse()*absStrawXForm*tx1All;
520 while (c< m_data->barrelNumberOfStrawsInModule[iABC] ) {
543 if((iABC==0)&&(iLayer<=m_data->barrelNumberOfLayersWithLargeDeadRegion )) {
545 double lengthOfActiveGas=
546 (
m_data->barrelLengthOfStraw-
m_data->barrelLengthOfTwister)/2.0 -
m_data->lengthOfDeadRegion-
m_data->barrelLengthOfLargeDeadRegion;
547 double startZOfActiveGas=activeGasZPositionStrawsWithLargeDeadRegion-lengthOfActiveGas/2.0;
548 bDescriptor.back()->strawZPos(activeGasZPositionStrawsWithLargeDeadRegion);
549 bDescriptor.back()->strawZDead(startZOfActiveGas);
550 bDescriptor.back()->strawLength(lengthOfActiveGas);
552 double lengthOfActiveGas=(
m_data->barrelLengthOfStraw-
m_data->barrelLengthOfTwister)/2.0 - 2*
m_data->lengthOfDeadRegion;
553 double startZOfActiveGas=activeGasZPositionNormalStraws-lengthOfActiveGas/2.0;
554 bDescriptor.back()->strawZPos(activeGasZPositionNormalStraws);
555 bDescriptor.back()->strawZDead(startZOfActiveGas);
556 bDescriptor.back()->strawLength(lengthOfActiveGas);
560 bDescriptor.back()->addStraw(
z,
x);
567 std::set<const GeoVPhysVol *> barrelFibreRadiators;
568 std::set<const GeoVPhysVol *> strawPlanes;
571 for (
size_t iMod = 0; iMod<
m_data->nBarrelModulesUsed;iMod++) {
577 GeoVolumeCursor
cursor(pShell);
579 if (
cursor.getVolume()->getLogVol()->getName().find(
"FibreRadiator") != std::string::npos) {
580 barrelFibreRadiators.insert(
cursor.getVolume().get());
605 for (
unsigned int iStrawLayer=0;iStrawLayer<nStrawLayers; iStrawLayer++) {
607 unsigned int jStrawLayer=iStrawLayer;
626 for (
unsigned int e=0;
e<2;
e++) {
627 for (
unsigned int iMod=0;iMod<
m_data->nBarrelModulesUsed; iMod++) {
629 for (
unsigned int iABC=0;iABC<
m_data->nBarrelRings;iABC++) {
643 for (
unsigned int e=0;
e<2;
e++) {
644 for (
unsigned int iABC=0;iABC<
m_data->nBarrelRings;iABC++) {
647 for (
unsigned int iMod=0;iMod<
m_data->nBarrelModulesUsed; iMod++) {
651 current->setPreviousInPhi(prev);
655 if (
m_data->nBarrelModulesUsed==
m_data->nBarrelModules) {
659 first->setPreviousInPhi(last);
681 if (!(pEndCapABPlus || pEndCapABMinus || pEndCapCPlus || pEndCapCMinus)){
684 unsigned int firstIndexOfA = 0;
685 unsigned int firstIndexOfB =
m_data->endcapNumberOfAWheels;
686 unsigned int firstIndexOfC =
m_data->endcapNumberOfAWheels +
m_data->endcapNumberOfBWheels;
690 if (
m_data->initialLayout) indexUpperBound = firstIndexOfC;
692 const unsigned int nSides = 2;
693 const unsigned int nStrawLayMaxEc = 8;
695 unsigned int iiSide, iiWheel, iiPlane, iiPhi,
counter;
696 GeoFullPhysVol *childPlane =
nullptr;
699 double RotationsOfStrawPlanes[nStrawLayMaxEc];
700 double shiftForEachRotation =
m_data->endCapShiftForEachRotation;
701 RotationsOfStrawPlanes[0] = 0.;
703 bool oldGeometry =
true;
705 if (shiftForEachRotation < 0) oldGeometry =
false;
711 RotationsOfStrawPlanes[
counter] = RotationsOfStrawPlanes[
counter-1] + shiftForEachRotation;
712 if (RotationsOfStrawPlanes[
counter] >= 1.)
713 RotationsOfStrawPlanes[
counter] -= 1.;
717 double RotationsOfStrawPlanesTmp[nStrawLayMaxEc] = {0,0,0,0,2,2,2,2};
720 RotationsOfStrawPlanes[
counter] = (
counter * shiftForEachRotation) + RotationsOfStrawPlanesTmp[
counter];
725 std::vector<InDetDD::TRT_EndcapDescriptor*> descriptorsAB[nSides][nStrawLayMaxEc];
726 std::vector<InDetDD::TRT_EndcapDescriptor*> descriptorsC[nSides][nStrawLayMaxEc];
730 for(iiSide = 0; iiSide<nSides; iiSide++) {
731 for(iiPlane = 0; iiPlane < nStrawLayMaxEc; iiPlane++) {
732 descriptorsAB[iiSide][iiPlane].resize (
m_data->nEndcapPhi);
733 descriptorsC[iiSide][iiPlane].resize (
m_data->nEndcapPhi);
740 if (pEndCapABPlus || pEndCapABMinus) {
784 for(iiSide=0; iiSide<nSides; iiSide++) {
786 if (pCommonEndcapAB[iiSide]) {
788 for(iiWheel=firstIndexOfA; iiWheel < firstIndexOfB; iiWheel++)
792 GeoFullPhysVol* pWheelA = mapFPV[
"TRTWheelA-"
796 GeoAlignableTransform * xfAlignableModule =
nullptr;
799 for (iiPlane = 0; iiPlane <
m_data->endCapNumberOfStrawLayersPerWheelA; iiPlane++)
805 if (iiPlane % 4 == 0) {
807 int barrel_ec = (iiSide) ? -2 : +2;
808 xfAlignableModule = mapAX[
"TRTWheelA-StrawPlane-"
820 double phiPlane =
m_data->endCapPhiOfFirstStraw + RotationsOfStrawPlanes[iiPlane%nStrawLayMaxEc]*deltaPhiForStrawsA;
823 if(iiSide && oldGeometry && (iiPlane%8 == 0)) {
824 phiPlane += deltaPhiForStrawsA;
828 int bar_ec = (iiSide) ? -2 : +2;
829 TRT_Identifier = idHelper->
straw_id(bar_ec, 1, iiWheel, 1, 1);
834 childPlane = mapFPV[
"TRTWheelA-StrawPlane-"
843 if(iiWheel==firstIndexOfA && iiPlane < nStrawLayMaxEc)
844 for(iiPhi = 0; iiPhi <
m_data->nEndcapPhi; iiPhi++)
850 pDescriptor->
nStraws() =
m_data->endcapNumberOfStrawsInStrawLayer_AWheels/
m_data->nEndcapPhi;
851 pDescriptor->
strawPitch() = deltaPhiForStrawsA;
853 double startPhi = phiPlane + iiPhi * pDescriptor->
strawPitch() * pDescriptor->
nStraws();
869 pDescriptor->
strawLength() =
m_data->endCapOuterRadiusOfSupportA -
m_data->endCapRadialThicknessOfOuterSupportA
870 - 2*
m_data->lengthOfDeadRegion -
m_data->endCapRadialThicknessOfInnerSupportA -
m_data->endCapInnerRadiusOfSupportA;
871 pDescriptor->
innerRadius() =
m_data->endCapInnerRadiusOfSupportA +
m_data->endCapRadialThicknessOfInnerSupportA
872 +
m_data->lengthOfDeadRegion;
875 descriptorsAB[iiSide][iiPlane%nStrawLayMaxEc][iiPhi] = pDescriptor;
878 for(iiPhi = 0; iiPhi <
m_data->nEndcapPhi; iiPhi++)
884 int iiPhiOffline = (iiSide==0) ? iiPhi : (3*
m_data->nEndcapPhi/2 - iiPhi - 1)%
m_data->nEndcapPhi;
886 descriptorsAB[iiSide][iiPlane%nStrawLayMaxEc][iiPhi],
899 GeoAlignableTransform * xfWheel = mapAX[
"TRTWheelA-"
904 int barrel_ec = (iiSide) ? -2 : +2;
919 for(iiSide=0; iiSide<nSides; iiSide++) {
922 if (pCommonEndcapAB[iiSide]) {
923 for(iiWheel=firstIndexOfB; iiWheel < firstIndexOfC; iiWheel++)
926 GeoFullPhysVol* pWheelB = mapFPV[
"TRTWheelB-"
930 GeoAlignableTransform * xfAlignableModule =
nullptr;
933 for (iiPlane = 0; iiPlane <
m_data->endCapNumberOfStrawLayersPerWheelB; iiPlane++)
940 if (iiPlane % 4 == 0) {
942 int barrel_ec = (iiSide) ? -2 : +2;
943 xfAlignableModule = mapAX[
"TRTWheelB-StrawPlane-"
957 int bar_ec = (iiSide) ? -2 : +2;
958 TRT_Identifier = idHelper->
straw_id(bar_ec, 1, iiWheel, 1, 1);
962 childPlane = mapFPV[
"TRTWheelB-StrawPlane-"
971 for(iiPhi = 0; iiPhi <
m_data->nEndcapPhi; iiPhi++)
977 int iiPhiOffline = (iiSide==0) ? iiPhi : (3*
m_data->nEndcapPhi/2 - iiPhi - 1)%
m_data->nEndcapPhi;
979 descriptorsAB[iiSide][iiPlane%nStrawLayMaxEc][iiPhi],
991 GeoAlignableTransform * xfWheel = mapAX[
"TRTWheelB-"
995 int barrel_ec = (iiSide) ? -2 : +2;
1006 if (pEndCapCPlus || pEndCapCMinus) {
1013 for(iiSide=0; iiSide<nSides; iiSide++) {
1015 if (pCommonEndcapC[iiSide]) {
1016 for(iiWheel=firstIndexOfC; iiWheel < indexUpperBound; iiWheel++)
1018 GeoFullPhysVol* pWheelC = mapFPV[
"TRTWheelC-"
1025 for (iiPlane = 0; iiPlane <
m_data->endCapNumberOfStrawLayersPerWheelC; iiPlane++)
1028 double phiPlane =
m_data->endCapPhiOfFirstStraw + RotationsOfStrawPlanes[iiPlane%nStrawLayMaxEc]*deltaPhiForStrawsC;
1031 if(iiSide && oldGeometry && (iiPlane%8 == 0)) {
1032 phiPlane += deltaPhiForStrawsC;
1037 childPlane = mapFPV[
"TRTWheelC-StrawPlane-"
1045 if(iiWheel==firstIndexOfC && iiPlane < nStrawLayMaxEc)
1046 for(iiPhi = 0; iiPhi <
m_data->nEndcapPhi; iiPhi++)
1051 pDescriptor->
nStraws() =
m_data->endcapNumberOfStrawsInStrawLayer_CWheels/
m_data->nEndcapPhi;
1052 pDescriptor->
strawPitch() = deltaPhiForStrawsC;
1055 double startPhi = phiPlane + iiPhi * pDescriptor->
strawPitch() * pDescriptor->
nStraws();
1068 pDescriptor->
startPhi() = startPhi;
1070 pDescriptor->
strawLength() =
m_data->endCapOuterRadiusOfSupportC -
m_data->endCapRadialThicknessOfOuterSupportC
1071 - 2*
m_data->lengthOfDeadRegion -
m_data->endCapRadialThicknessOfInnerSupportC -
m_data->endCapInnerRadiusOfSupportC;
1072 pDescriptor->
innerRadius() =
m_data->endCapInnerRadiusOfSupportC +
m_data->endCapRadialThicknessOfInnerSupportC +
m_data->lengthOfDeadRegion;
1076 descriptorsC[iiSide][iiPlane%nStrawLayMaxEc][iiPhi] = pDescriptor;
1080 for(iiPhi = 0; iiPhi <
m_data->nEndcapPhi; iiPhi++)
1086 int iiPhiOffline = (iiSide==0) ? iiPhi : (3*
m_data->nEndcapPhi/2 - iiPhi - 1)%
m_data->nEndcapPhi;
1088 descriptorsC[iiSide][iiPlane%nStrawLayMaxEc][iiPhi],
1101 GeoAlignableTransform * xfWheel = mapAX[
"TRTWheelC-"
1106 int barrel_ec = (iiSide) ? -2 : +2;
1119 for (iiSide=0; iiSide<2; iiSide++)
1120 for(iiPhi=0; iiPhi<
m_data->nEndcapPhi; iiPhi++)
1123 for (iiWheel=0; iiWheel<indexUpperBound; iiWheel++)
1130 current->setPreviousInZ(prev);
1145 double lengthOfInnerDeadRegion= hasLargeDeadRegion ?
m_data->barrelLengthOfLargeDeadRegion :
m_data->lengthOfDeadRegion ;
1146 double lengthOfActiveGas = (
m_data->barrelLengthOfStraw-
m_data->barrelLengthOfTwister)/2.0 -
m_data->lengthOfDeadRegion - lengthOfInnerDeadRegion;
1147 return (lengthOfActiveGas +
m_data->barrelLengthOfTwister) / 2. + lengthOfInnerDeadRegion;
1162 const size_t firstIndexOfC = 14;
1165 if (
w >= firstIndexOfC) {
1167 nstraws=
m_data->endcapNumberOfStrawsInStrawLayer_CWheels;
1168 R0 =
m_data->endcapOuterRadiusOfInnerSupport_wheelC;
1169 R1 =
m_data->endcapInnerRadiusOfOuterSupport_wheelC;
1172 R0 =
m_data->endcapOuterRadiusOfInnerSupport_wheelAB;
1173 R1 =
m_data->endcapInnerRadiusOfOuterSupport_wheelAB;
1174 nstraws=
m_data->endcapNumberOfStrawsInStrawLayer_AWheels;
1177 double pos = 0.5*(R0+R1);
1180 double dphi = 2*
M_PI/ nstraws;
1181 GeoTrf::RotateZ3D Rz(1.0);
1182 GeoTrf::TranslateX3D Tx(1.0);
1183 GeoTrf::TranslateY3D Ty(1.0);
1190 if (
w<firstIndexOfC) {
1205 const GeoMaterial *material =
m_xenonGas.get();
1212 GeoVolumeCursor cursor0(strawPlane);
1213 if (!cursor0.atEnd()) {
1214 const GeoVPhysVol *v1=cursor0.getVolume().get();
1215 GeoVolumeCursor cursor1(v1);
1216 if (!cursor1.atEnd()) {
1217 ATH_MSG_DEBUG(
"ENDCAP: REFRESHING GAS MIXTURE " << strawPlane->getLogVol()->getName() <<
" -->" << material->getName());
1218 cursor1.getVolume()->getLogVol()->setMaterial(material);
1225 const GeoMaterial *material =
m_xenonGas.get();
1231 GeoVolumeCursor cursor0(
shell);
1232 if (!cursor0.atEnd()) {
1233 const GeoVPhysVol *v1=cursor0.getVolume().get();
1234 GeoCountVolAndSTAction
counter;
1236 for (
unsigned int i=0;
i<
counter.getCount();
i++) {
1239 const GeoSerialTransformer *st=
accessor.getSerialTransformer();
1241 const GeoVPhysVol *
v2=st->getVolume().get();
1242 GeoVolumeCursor cursor1(
v2);
1243 if (!cursor1.atEnd()) {
1244 const GeoVPhysVol *v3=cursor1.getVolume();
1245 GeoVolumeCursor cursor2(v3);
1246 while (!cursor2.atEnd()) {
1247 std::string regionName=cursor2.getVolume()->getLogVol()->getName();
1248 if (regionName==
"GasMA" || regionName==
"DeadRegion" || regionName==
"InnerDeadRegion") {
1249 ATH_MSG_DEBUG(
"BARREL: REFRESHING GAS MIXTURE " << cursor2.getVolume()->getLogVol()->getName() <<
" -->" << material->getName());
1250 cursor2.getVolume()->getLogVol()->setMaterial(material);