61 double fXShift,fYShift,fZShift;
67 fXShift=-73.5*CLHEP::mm;
71 HepGeom::Transform3D TofTransform=TransInMotherVolume*HepGeom::Translate3D(fXShift,fYShift,fZShift)*HepGeom::RotateX3D((90.0*CLHEP::deg-TofCfg.
fAlpha))*HepGeom::RotateZ3D(-90.0*CLHEP::deg);
73 for(i=0;i<
m_CfgParams.tdcfg[eStation].nX1PixCnt;i++)
75 for(j=0;j<
m_CfgParams.tdcfg[eStation].nX2PixCnt;j++)
77 nPixelID=10*(i+1)+(j+1);
78 addSepRadLBar(pszStationName,1,nPixelID,pPhysMotherVol,TofTransform,bsContainer);
86 addSensor(pszStationName,1,pPhysMotherVol,TofTransform,bsContainer);
88 return StatusCode::SUCCESS;
93 double fX1Pos,fX2Pos,falpha,fd;
94 HepGeom::Vector3D<double> vecA1, vecA2, vecX;
95 CLHEP::Hep3Vector vecCutShift;
96 HepGeom::Transform3D TransCut;
97 GeoShapeShift* pMoveCut;
101 CLHEP::HepRotation Rot1,Rot2,Rot3;
108 m_pGeometry->getPixelLocalPosition(eStation,nBarID,&fX1Pos,&fX2Pos);
114 HepGeom::Transform3D TotTransform=TransInMotherVolume*HepGeom::Translate3D( fX1Pos,
122 fd=fTaperOffset/std::sin(falpha);
123 vecA1=-fd*std::cos(falpha)*CLHEP::Hep3Vector(0.0,1.0,0.0);
124 vecA2=+0.5*fd*std::sqrt(2.0)*(CLHEP::HepRotationZ(+(45*CLHEP::deg-falpha))*CLHEP::Hep3Vector(0.0,1.0,0.0)).
unit();
127 Rot1.rotateZ(-falpha);
130 TransCut=HepGeom::Transform3D(Rot1,vecCutShift);
132 pSolVolume=
new GeoShapeSubtraction(pSolVolume, pMoveCut);
135 sprintf(szlabel,
"%s_Q%i_LogLGuide[%i]",pszStationName,nQuarticID,nBarID);
136 GeoLogVol* pLogLGuide=
new GeoLogVol(szlabel,pSolVolume,
m_MapMaterials[std::string(
"Quartz")]);
138 sprintf(szlabel,
"%s_Q%i_LGuide[%i]",pszStationName,nQuarticID,nBarID);
139 pPhysMotherVolume->add(
new GeoNameTag(szlabel));
141 pPhysMotherVolume->add(pPhysLGuide);
142 sprintf(szlabel,
"%s_Q%i_LGuideSurface[%i]",pszStationName,nQuarticID,nBarID);
147 double fElbowXDim=fRadYDim;
148 TotTransform=TransInMotherVolume*HepGeom::Translate3D( fX1Pos-0.5*BarDims.
fLGuideWidth+0.5*fElbowXDim+fTaperOffset,
151 pSolVolume=
new GeoBox(0.5*fElbowXDim,0.5*fRadYDim,0.5*BarDims.
fLBarThickness);
153 falpha=45.0*CLHEP::deg;
154 fd=fRadYDim/std::sin(falpha);
155 vecA1=-fd*std::cos(falpha)*CLHEP::Hep3Vector(0.0,1.0,0.0);
156 vecA2=+0.5*fd*std::sqrt(2.0)*(CLHEP::HepRotationZ(+(45*CLHEP::deg-falpha))*CLHEP::Hep3Vector(0.0,1.0,0.0)).
unit();
158 vecCutShift=CLHEP::Hep3Vector(-0.5*fElbowXDim,0.5*fRadYDim,0.0)+CLHEP::Hep3Vector(vecX);
159 Rot2.rotateZ(-falpha);
162 TransCut=HepGeom::Transform3D(Rot2,vecCutShift);
164 pSolVolume=
new GeoShapeSubtraction(pSolVolume, pMoveCut);
166 sprintf(szlabel,
"%s_Q%i_LogRadiator[%i]",pszStationName,nQuarticID,nBarID);
167 GeoLogVol* pLogRadiator=
new GeoLogVol(szlabel,pSolVolume,
m_MapMaterials[std::string(
"Quartz")]);
169 sprintf(szlabel,
"%s_Q%i_Radiator[%i]",pszStationName,nQuarticID,nBarID);
170 pPhysMotherVolume->add(
new GeoNameTag(szlabel));
172 pPhysMotherVolume->add(pPhysRadiator);
173 sprintf(szlabel,
"%s_Q%i_RadiatorElbowSurface[%i]",pszStationName,nQuarticID,nBarID);
178 TotTransform=TransInMotherVolume*HepGeom::Translate3D( fX1Pos-0.5*BarDims.
fLGuideWidth+fElbowXDim+fTaperOffset+0.5*fRadLength,
181 pSolVolume=
new GeoBox(0.5*fRadLength,0.5*fRadYDim,0.5*BarDims.
fLBarThickness);
186 vecA1 = -fd*std::cos(falpha)*CLHEP::Hep3Vector(1.0,0.0,0.0);
187 vecA2 = 0.5*fd*std::sqrt(2.0)*(CLHEP::HepRotationY(-(45*CLHEP::deg-falpha))*CLHEP::Hep3Vector(1.0,0.0,0.0)).
unit();
188 vecX = vecA1 + vecA2;
189 vecCutShift = CLHEP::Hep3Vector(0.5*fRadLength,0.0,0.5*BarDims.
fLBarThickness) + CLHEP::Hep3Vector(vecX);
190 Rot3.rotateY(falpha);
192 pSolAux=
new GeoBox(0.5*fd,0.5*fRadYDim+
SLIMCUT,0.5*fd);
193 TransCut=HepGeom::Transform3D(Rot3,vecCutShift);
195 pSolVolume=
new GeoShapeSubtraction(pSolVolume, pMoveCut);
198 sprintf(szlabel,
"%s_Q%i_LogRadiator[%i]",pszStationName,nQuarticID,nBarID);
199 pLogRadiator=
new GeoLogVol(szlabel,pSolVolume,
m_MapMaterials[std::string(
"Quartz")]);
201 sprintf(szlabel,
"%s_Q%i_Radiator[%i]",pszStationName,nQuarticID,nBarID);
202 pPhysMotherVolume->add(
new GeoNameTag(szlabel));
204 pPhysMotherVolume->add(pPhysRadiator);
205 sprintf(szlabel,
"%s_Q%i_RadiatorSurface[%i]",pszStationName,nQuarticID,nBarID);
215 double fX1Pos_1, fX2Pos_1, fX1Pos_2, fX2Pos_2;
216 HepGeom::Transform3D TotTransform;
225 m_pGeometry->getPixelLocalPosition(eStation,nPixelID,&fX1Pos_1,&fX2Pos_1);
227 m_pGeometry->getPixelLocalPosition(eStation,nPixelID,&fX1Pos_2,&fX2Pos_2);
229 sprintf(szlabel,
"%s_Q%i_LogLBarSensorSeparationWindow",pszStationName,nQuarticID);
231 GeoLogVol* pLogWindow=
new GeoLogVol(szlabel,pSolWindow,
m_MapMaterials[
"Quartz"]);
233 sprintf(szlabel,
"%s_Q%i_LBarSensorSeparationWindow",pszStationName,nQuarticID);
234 pPhysMotherVolume->add(
new GeoNameTag(szlabel));
236 pPhysMotherVolume->add(pPhysWindow);
237 sprintf(szlabel,
"%s_Q%i_WindowSurface",pszStationName,nQuarticID);
251 double fX1Pos, fX2Pos;
252 HepGeom::Transform3D TotTransform;
268 nPixelID=10*(i+1)+(j+1);
269 m_pGeometry->getPixelLocalPosition(eStation,nPixelID,&fX1Pos,&fX2Pos);
271 sprintf(szlabel,
"%s_Q%i_LogTDSensor[%i]",pszStationName,nQuarticID,nPixelID);
273 GeoLogVol* pLogSensor=
new GeoLogVol(szlabel,pSolSensor,
m_MapMaterials[
"SiliconPMT"]);
275 sprintf(szlabel,
"%s_Q%i_TDSensor[%i]",pszStationName,nQuarticID,nPixelID);
276 pPhysMotherVolume->add(
new GeoNameTag(szlabel));
278 pPhysMotherVolume->add(pPhysSensor);
279 sprintf(szlabel,
"%s_Q%i_SensorSurface[%i]",pszStationName,nQuarticID,nPixelID);