ATLAS Offline Software
Loading...
Searching...
No Matches
AFP_Geometry Class Reference

#include <AFP_Geometry.h>

Inheritance diagram for AFP_Geometry:
Collaboration diagram for AFP_Geometry:

Public Member Functions

 AFP_Geometry ()
 AFP_Geometry (const AFP_CONFIGURATION *pCfgParams)
 ~AFP_Geometry ()
void getCfgParams (AFP_CONFIGURATION *pCfgParams) const
HepGeom::Transform3D getStationTransform (const char *pszStationName) const
HepGeom::Transform3D getStationElementTransform (const char *pszStationName, eStationElement eElement, const int nPlateID=-1) const
int getSIDPlatesCnt (const eAFPStation eStation) const
HepGeom::Transform3D getSIDTransform (const eSIDTransformType eType, const char *pszStationName, const int nPlateID) const
StatusCode getPointInSIDSensorLocalCS (const int nStationID, const int nPlateID, const HepGeom::Point3D< double > &GlobalPoint, HepGeom::Point3D< double > &LocalPoint) const
StatusCode getPointInSIDSensorGlobalCS (const int nStationID, const int nPlateID, const HepGeom::Point3D< double > &LocalPoint, HepGeom::Point3D< double > &GlobalPoint) const
eAFPStation parseStationName (const char *pszStationName) const
void setupLBarsDims (const eAFPStation eStation)
void getPixelLocalPosition (const eAFPStation eStation, const int nPixelID, double *pfX1Pos, double *pfX2Pos) const
int getPixelRow (const int nPixelID) const
int getPixelColumn (const int nPixelID) const

Protected Attributes

AFP_CONFIGURATION m_CfgParams
std::map< eAFPStation, std::map< int, HepGeom::Transform3D > > m_MapSIDTransToLocal
std::map< eAFPStation, std::map< int, HepGeom::Transform3D > > m_MapSIDTransToGlobal

Detailed Description

Definition at line 19 of file AFP_Geometry.h.

Constructor & Destructor Documentation

◆ AFP_Geometry() [1/2]

AFP_Geometry::AFP_Geometry ( )
inline

Definition at line 29 of file AFP_Geometry.h.

29{}

◆ AFP_Geometry() [2/2]

AFP_Geometry::AFP_Geometry ( const AFP_CONFIGURATION * pCfgParams)

Definition at line 22 of file AFP_Geometry.cxx.

23 : m_CfgParams (*pCfgParams)
24{
27
28 for(int nStationID=0; nStationID<=3; ++nStationID){
29 eAFPStation eStation=(eAFPStation)nStationID;
30 for(int nPlateID=0; nPlateID<getSIDPlatesCnt(eStation); ++nPlateID){
31 if(!(m_MapSIDTransToGlobal.find(eStation)!=m_MapSIDTransToGlobal.end() && m_MapSIDTransToGlobal[eStation].find(nPlateID)!=m_MapSIDTransToGlobal[eStation].end()))
32 {
33 char szStationName[8];
34 sprintf(szStationName,"AFP%02i",(int)eStation);
35 HepGeom::Transform3D Aux=getSIDTransform(ESTT_SENSORGLOBAL,szStationName,nPlateID);
36 m_MapSIDTransToGlobal[eStation][nPlateID]=Aux;
37 }
38
39 if(!(m_MapSIDTransToLocal.find(eStation)!=m_MapSIDTransToLocal.end() && m_MapSIDTransToLocal[eStation].find(nPlateID)!=m_MapSIDTransToLocal[eStation].end()))
40 {
41 char szStationName[8];
42 sprintf(szStationName,"AFP%02i",(int)eStation);
43 HepGeom::Transform3D Aux=getSIDTransform(ESTT_SENSORLOCAL,szStationName,nPlateID);
44 m_MapSIDTransToLocal[eStation][nPlateID]=Aux;
45 }
46 }
47 }
48}
@ ESTT_SENSORLOCAL
@ ESTT_SENSORGLOBAL
eAFPStation
@ EAS_AFP03
@ EAS_AFP00
std::map< eAFPStation, std::map< int, HepGeom::Transform3D > > m_MapSIDTransToGlobal
std::map< eAFPStation, std::map< int, HepGeom::Transform3D > > m_MapSIDTransToLocal
void setupLBarsDims(const eAFPStation eStation)
AFP_CONFIGURATION m_CfgParams
HepGeom::Transform3D getSIDTransform(const eSIDTransformType eType, const char *pszStationName, const int nPlateID) const
int getSIDPlatesCnt(const eAFPStation eStation) const

◆ ~AFP_Geometry()

AFP_Geometry::~AFP_Geometry ( )

Definition at line 50 of file AFP_Geometry.cxx.

51{
52 m_CfgParams.clear();
53}

Member Function Documentation

◆ getCfgParams()

void AFP_Geometry::getCfgParams ( AFP_CONFIGURATION * pCfgParams) const
inline

Definition at line 34 of file AFP_Geometry.h.

34{ *pCfgParams=m_CfgParams; }

◆ getPixelColumn()

int AFP_Geometry::getPixelColumn ( const int nPixelID) const
inline

Definition at line 53 of file AFP_Geometry.h.

53{ return nPixelID%10; }

◆ getPixelLocalPosition()

void AFP_Geometry::getPixelLocalPosition ( const eAFPStation eStation,
const int nPixelID,
double * pfX1Pos,
double * pfX2Pos ) const

Definition at line 264 of file AFP_Geometry.cxx.

265{
266 int i,j;
267 AFP_TDCONFIGURATION TofCfg=m_CfgParams.tdcfg.at(eStation);
268
269 i=getPixelRow(nPixelID)-1;
270 j=getPixelColumn(nPixelID)-1;
271
272 if(pfX1Pos) *pfX1Pos = -i * m_CfgParams.tdcfg.at(eStation).fPixelX1Dim;
273 if(pfX2Pos) *pfX2Pos = j * m_CfgParams.tdcfg.at(eStation).fPixelX2Dim;
274}
int getPixelColumn(const int nPixelID) const
int getPixelRow(const int nPixelID) const

◆ getPixelRow()

int AFP_Geometry::getPixelRow ( const int nPixelID) const
inline

Definition at line 52 of file AFP_Geometry.h.

52{ return (nPixelID-(nPixelID%10))/10; }

◆ getPointInSIDSensorGlobalCS()

StatusCode AFP_Geometry::getPointInSIDSensorGlobalCS ( const int nStationID,
const int nPlateID,
const HepGeom::Point3D< double > & LocalPoint,
HepGeom::Point3D< double > & GlobalPoint ) const

Definition at line 245 of file AFP_Geometry.cxx.

246{
247 StatusCode Status=StatusCode::FAILURE;
248 GlobalPoint=HepGeom::Point3D<double>();
249 eAFPStation eStation=(eAFPStation)nStationID;
250
251 if(nStationID>=0 && nStationID<=3){
252 if(nPlateID>=0 && nPlateID<getSIDPlatesCnt(eStation)){
253 GlobalPoint=m_MapSIDTransToGlobal.at(eStation).at(nPlateID)*static_cast<HepGeom::Point3D<double> >(LocalPoint+HepGeom::Point3D<double>(0.5*AFP_CONSTANTS::SiT_Pixel_length_totx,0.5*AFP_CONSTANTS::SiT_Pixel_length_toty,0.5*AFP_CONSTANTS::SiT_Pixel_thickness));
254 Status=StatusCode::SUCCESS;
255 }
256 }
257
258 return Status;
259}
Status
Athena specific StatusCode values.
::StatusCode StatusCode
StatusCode definition for legacy code.
static constexpr double SiT_Pixel_length_totx
static constexpr double SiT_Pixel_length_toty
static constexpr double SiT_Pixel_thickness

◆ getPointInSIDSensorLocalCS()

StatusCode AFP_Geometry::getPointInSIDSensorLocalCS ( const int nStationID,
const int nPlateID,
const HepGeom::Point3D< double > & GlobalPoint,
HepGeom::Point3D< double > & LocalPoint ) const

Definition at line 227 of file AFP_Geometry.cxx.

228{
229 StatusCode Status=StatusCode::FAILURE;
230 LocalPoint=HepGeom::Point3D<double>();
231 eAFPStation eStation=(eAFPStation)nStationID;
232
233 AFP_TDCONFIGURATION tdcfg=m_CfgParams.tdcfg.at(eStation);
234
235 if(nStationID>=0 && nStationID<=3){
236 if(nPlateID>=0 && nPlateID<getSIDPlatesCnt(eStation)){
237 LocalPoint=m_MapSIDTransToLocal.at(eStation).at(nPlateID)*GlobalPoint-HepGeom::Point3D<double>(0.5*AFP_CONSTANTS::SiT_Pixel_length_totx,0.5*AFP_CONSTANTS::SiT_Pixel_length_toty,0.5*AFP_CONSTANTS::SiT_Pixel_thickness);
238 Status=StatusCode::SUCCESS;
239 }
240 }
241
242 return Status;
243}

◆ getSIDPlatesCnt()

int AFP_Geometry::getSIDPlatesCnt ( const eAFPStation eStation) const
inline

Definition at line 40 of file AFP_Geometry.h.

40 {
41 std::map<eAFPStation, AFP_SIDCONFIGURATION> sidcfg(m_CfgParams.sidcfg.begin(),m_CfgParams.sidcfg.end());
42 return sidcfg[eStation].fLayerCount;
43 }

◆ getSIDTransform()

HepGeom::Transform3D AFP_Geometry::getSIDTransform ( const eSIDTransformType eType,
const char * pszStationName,
const int nPlateID ) const

Definition at line 136 of file AFP_Geometry.cxx.

137{
138 HepGeom::Transform3D ReqTransform=HepGeom::Transform3D();
139
140 std::string Station=std::string(pszStationName);
141 eAFPStation eStation=parseStationName(pszStationName);
142 AFP_SIDCONFIGURATION sidcfg=m_CfgParams.sidcfg.at(eStation);
143 double falpha = sidcfg.fSlope;
144
145 double fzm=0.0;
146
147 if(eType==ESTT_VACUUMSENSOR)
148 {
150 {
151 double fxm=-(sidcfg.vecChipXPos[nPlateID]+0.5*sidcfg.vecChipXLength[nPlateID])*std::cos(falpha);
152 double fZCorrOffset=(DETXSIDE==+1 || falpha==0)? -0:4*AFP_CONSTANTS::SiT_CorrZOffset;
153 HepGeom::Transform3D TransInMotherVolume=getStationElementTransform(pszStationName,ESE_SID,nPlateID);
154 HepGeom::Transform3D NominalPosInPocket=HepGeom::Translate3D(0.0*CLHEP::mm,0.0*CLHEP::mm, (fzm-fZCorrOffset));
155
157 ReqTransform=TransInMotherVolume*NominalPosInPocket*HepGeom::Translate3D(fxm, 0.0*CLHEP::mm, nPlateID*sidcfg.fLayerSpacing/std::cos(falpha))*HepGeom::RotateY3D(falpha)*ReqTransform;
158 }
159 else
160 {
162 {
163 if(eStation==EAS_AFP00) ReqTransform=HepGeom::TranslateZ3D(-AFP_CONSTANTS::Stat_GlobalVacuumSensorZOffset);
164 else if(eStation==EAS_AFP01) ReqTransform=HepGeom::TranslateZ3D(-AFP_CONSTANTS::Stat_GlobalVacuumSensorZOffset);
165 else if(eStation==EAS_AFP02) ReqTransform=HepGeom::TranslateZ3D(-AFP_CONSTANTS::Stat_GlobalVacuumSensorZOffset);
166 else if(eStation==EAS_AFP03) ReqTransform=HepGeom::TranslateZ3D(-AFP_CONSTANTS::Stat_GlobalVacuumSensorZOffset);
167 }
168 }
169
170 return ReqTransform;
171 }
172
173 double fxm=-(sidcfg.vecChipXPos[nPlateID]+0.5*sidcfg.vecChipXLength[nPlateID])*std::cos(falpha);
174 double fZCorrOffset=(DETXSIDE==+1 || falpha==0)? -0:4*AFP_CONSTANTS::SiT_CorrZOffset;
175 HepGeom::Transform3D TransInMotherVolume=getStationElementTransform(pszStationName,ESE_SID,nPlateID);
176 HepGeom::Transform3D NominalPosInPocket=HepGeom::Translate3D(0.0*CLHEP::mm,0.0*CLHEP::mm, (fzm-fZCorrOffset));
177
178 HepGeom::Transform3D TransMotherInWorld=getStationTransform(pszStationName);
179
180 //staggering of sensor shift in its plane - correction to cosinus needed fo x-staggering to transform to staggering in LHC CS
181 HepGeom::Transform3D TransStaggering=HepGeom::Translate3D(sidcfg.vecXStaggering[nPlateID]*std::cos(falpha),sidcfg.vecYStaggering[nPlateID], 0.0*CLHEP::mm);
182 HepGeom::Transform3D TotTransform=TransInMotherVolume*TransStaggering*NominalPosInPocket;
183
184 HepGeom::Transform3D PlateTotTrans=TotTransform*HepGeom::Translate3D(fxm,0.0*CLHEP::mm, nPlateID*sidcfg.fLayerSpacing/std::cos(falpha))*HepGeom::RotateY3D(falpha);
185 HepGeom::Transform3D TransFEI4=PlateTotTrans*HepGeom::Translate3D(sidcfg.vecChipXPos[nPlateID], sidcfg.vecChipYPos[nPlateID], 0.5*AFP_CONSTANTS::SiT_Plate_Main_thickness+0.5*AFP_CONSTANTS::SiT_Chip_thickness)*HepGeom::RotateZ3D(sidcfg.vecChipRotAngle[nPlateID]);
186 HepGeom::Transform3D TransSID=TotTransform*HepGeom::Translate3D(fxm,0.0*CLHEP::mm, nPlateID*sidcfg.fLayerSpacing/std::cos(falpha)) * HepGeom::Translate3D(sidcfg.vecChipXPos[nPlateID]+sidcfg.vecSensorXPos[nPlateID], sidcfg.vecChipYPos[nPlateID]+sidcfg.vecSensorYPos[nPlateID], (0.5*AFP_CONSTANTS::SiT_Plate_Main_thickness+AFP_CONSTANTS::SiT_Chip_thickness+0.5*AFP_CONSTANTS::SiT_Pixel_thickness))*HepGeom::RotateY3D(falpha) * HepGeom::RotateZ3D(sidcfg.vecChipRotAngle[nPlateID]);
187 HepGeom::Transform3D TotTransSIDInWorld=TransMotherInWorld*TransSID;
188
189 switch(eType)
190 {
191 case ESTT_PLATE:
192 ReqTransform=PlateTotTrans;
193 break;
194 case ESTT_SENSOR:
195 ReqTransform=TransSID;
196 break;
197 case ESTT_FEI4CHIP: //CHANGE
198 ReqTransform=TransFEI4;
199 break;
200 case ESTT_SENSORLOCAL:
201 ReqTransform=TotTransSIDInWorld.inverse();
202 break;
204 ReqTransform=TotTransSIDInWorld;
205 break;
206
207 default:
208 break;
209 }
210
211 return ReqTransform;
212}
@ ESTT_PLATE
@ ESTT_FEI4CHIP
@ ESTT_VACUUMSENSOR
@ ESTT_SENSOR
@ EAS_AFP02
@ EAS_AFP01
@ ESE_SID
#define DETXSIDE
HepGeom::Transform3D getStationElementTransform(const char *pszStationName, eStationElement eElement, const int nPlateID=-1) const
eAFPStation parseStationName(const char *pszStationName) const
HepGeom::Transform3D getStationTransform(const char *pszStationName) const
static constexpr double SiT_Plate_Main_thickness
static constexpr double Stat_GlobalVacuumSensorThickness
static constexpr int Stat_GlobalVacuumSensorID
static constexpr double SiT_Chip_thickness
static constexpr double Stat_GlobalVacuumSensorZOffset
static constexpr double SiT_Chip_length_x
static constexpr double SiT_Plate_Main_length_x
std::vector< double > vecChipXLength
std::vector< double > vecChipYPos
std::vector< double > vecSensorXPos
std::vector< double > vecYStaggering
std::vector< double > vecChipRotAngle
std::vector< double > vecChipXPos
std::vector< double > vecSensorYPos
std::vector< double > vecXStaggering

◆ getStationElementTransform()

HepGeom::Transform3D AFP_Geometry::getStationElementTransform ( const char * pszStationName,
eStationElement eElement,
const int nPlateID = -1 ) const

Definition at line 81 of file AFP_Geometry.cxx.

82{
83 HepGeom::Transform3D ReqTransform;
84 eAFPStation eStation=parseStationName(pszStationName);
85
86 AFP_TDCONFIGURATION tdcfg=m_CfgParams.tdcfg.at(eStation);
87 AFP_SIDCONFIGURATION sidcfg=m_CfgParams.sidcfg.at(eStation);
88
89 double xComponent = -m_CfgParams.vecRPotFloorDistance[eStation];
90 double yComponent = m_CfgParams.vecRPotYPos[eStation];
91
92 double xStag = 0.0;
93 if(eElement==ESE_SID && nPlateID!=AFP_CONSTANTS::Stat_GlobalVacuumSensorID)
94 xStag = (nPlateID>-1) ? -sidcfg.vecXStaggering[nPlateID] : 0.0;
95
96 switch(eStation)
97 {
98 case EAS_AFP00:
99 if(eElement==ESE_RPOT)
100 ReqTransform=HepGeom::Translate3D(xComponent, yComponent, 0.0);
101 else if(eElement==ESE_TOF)
102 ReqTransform=HepGeom::Translate3D(xComponent, yComponent, 0.0)*HepGeom::Translate3D(-tdcfg.fXFloorDistance,tdcfg.fYPosInRPot,tdcfg.fZPosInRPot-sidcfg.fZDistanceInRPot);
103 else if(eElement==ESE_SID)
104 ReqTransform=HepGeom::Translate3D(xComponent, yComponent, 0.0)*HepGeom::Translate3D( xStag,0.0,-sidcfg.fZDistanceInRPot);
105 else {};
106 break;
107 case EAS_AFP01:
108 if(eElement==ESE_RPOT)
109 ReqTransform=HepGeom::Translate3D(xComponent, yComponent, 0.0);
110 else if(eElement==ESE_SID)
111 ReqTransform=HepGeom::Translate3D(xComponent, yComponent, 0.0)*HepGeom::TranslateX3D( xStag);
112 else {};
113 break;
114 case EAS_AFP02:
115 if(eElement==ESE_RPOT)
116 ReqTransform=HepGeom::Translate3D(xComponent, yComponent, 0.0);
117 else if(eElement==ESE_SID)
118 ReqTransform=HepGeom::Translate3D(xComponent, yComponent ,0.0)*HepGeom::TranslateX3D( xStag);
119 else {};
120 break;
121 case EAS_AFP03:
122 if(eElement==ESE_RPOT)
123 ReqTransform=HepGeom::Translate3D(xComponent, yComponent, 0.0);
124 else if(eElement==ESE_TOF)
125 ReqTransform=HepGeom::Translate3D(xComponent, yComponent, 0.0)*HepGeom::Translate3D(-tdcfg.fXFloorDistance,tdcfg.fYPosInRPot,tdcfg.fZPosInRPot-sidcfg.fZDistanceInRPot);
126 else if(eElement==ESE_SID)
127 ReqTransform=HepGeom::Translate3D(xComponent, yComponent, 0.0)*HepGeom::Translate3D( xStag,0.0,-sidcfg.fZDistanceInRPot);
128 break;
129 default:
130 break;
131 }
132
133 return ReqTransform;
134}
@ ESE_RPOT
@ ESE_TOF

◆ getStationTransform()

HepGeom::Transform3D AFP_Geometry::getStationTransform ( const char * pszStationName) const

Definition at line 55 of file AFP_Geometry.cxx.

56{
57 HepGeom::Transform3D ReqTransform;
58 eAFPStation eStation=parseStationName(pszStationName);
59
60 switch(eStation)
61 {
62 case EAS_AFP00:
63 ReqTransform=HepGeom::Translate3D(LHCXOFFSET, 0.0*CLHEP::mm, m_CfgParams.vecStatNominalZPos[0]);
64 break;
65 case EAS_AFP01:
66 ReqTransform=HepGeom::Translate3D(LHCXOFFSET, 0.0*CLHEP::mm, m_CfgParams.vecStatNominalZPos[1]);
67 break;
68 case EAS_AFP02:
69 ReqTransform=HepGeom::Translate3D(LHCXOFFSET, 0.0*CLHEP::mm, m_CfgParams.vecStatNominalZPos[2]) * HepGeom::RotateX3D(180*CLHEP::deg);
70 break;
71 case EAS_AFP03:
72 ReqTransform=HepGeom::Translate3D(LHCXOFFSET, 0.0*CLHEP::mm, m_CfgParams.vecStatNominalZPos[3]) * HepGeom::RotateX3D(180*CLHEP::deg);
73 break;
74 default:
75 break;
76 }
77
78 return ReqTransform;
79}
#define LHCXOFFSET

◆ parseStationName()

eAFPStation AFP_Geometry::parseStationName ( const char * pszStationName) const

Definition at line 214 of file AFP_Geometry.cxx.

215{
216 eAFPStation eStation=EAS_UNKNOWN;
217
218 if(!strcmp(pszStationName,"AFP00")) eStation=EAS_AFP00;
219 else if(!strcmp(pszStationName,"AFP01")) eStation=EAS_AFP01;
220 else if(!strcmp(pszStationName,"AFP02")) eStation=EAS_AFP02;
221 else if(!strcmp(pszStationName,"AFP03")) eStation=EAS_AFP03;
222 else eStation=EAS_UNKNOWN;
223
224 return eStation;
225}
@ EAS_UNKNOWN

◆ setupLBarsDims()

void AFP_Geometry::setupLBarsDims ( const eAFPStation eStation)

Definition at line 276 of file AFP_Geometry.cxx.

277{
278 int i,j,nTrainOfBar11,nRefTrainID,nTrainID,nTrainCnt;
279 AFPTOF_LBARDIMENSIONS BarDims;
280 double fRadLength11, fLGuideLength11, fRadLength, fLGuideLength;
281
282 AFP_TDCONFIGURATION tdcfg=m_CfgParams.tdcfg.at(eStation);
283 AFPTOF_LBARREFDIMENSIONS RefBarDims=tdcfg.RefBarDims;
284
285 nTrainCnt=nTrainOfBar11=tdcfg.nX1PixCnt;
286
288
289 //calculate dimensions for bar (1,1), move from (refx1,refx2)
290 nRefTrainID = nTrainCnt-(RefBarDims.nBarX1ID-1); //reference train
291 fRadLength11 = (RefBarDims.fRadLength+tdcfg.mapTrainInfo.at(nRefTrainID).fTaperOffset)+(1-RefBarDims.nBarX1ID)*tdcfg.fPixelX1Dim; // move to (refx1,1)
292 fRadLength11 += (tdcfg.mapTrainInfo.at(nRefTrainID).fPerpShiftInPixel-tdcfg.mapTrainInfo.at(nTrainOfBar11).fPerpShiftInPixel)+0.5*(tdcfg.mapTrainInfo.at(nTrainOfBar11).fLGuideWidth-tdcfg.mapTrainInfo.at(nRefTrainID).fLGuideWidth);
293 fRadLength11 -= ((1-RefBarDims.nBarX2ID)*tdcfg.fPixelX2Dim)/std::tan(tdcfg.fAlpha); //move to (1,1)
294 for(fLGuideLength11=RefBarDims.fLGuideLength,i=RefBarDims.nBarX1ID-1;i>=1;i--){
295 nTrainID = nTrainCnt-(i-1);
296 fLGuideLength11 -= AFP_CONSTANTS::ToF_LGuideTrainOffset+(tdcfg.mapTrainInfo.at(nTrainID).fLGuideWidth-tdcfg.mapTrainInfo.at(nTrainID).fTaperOffset);
297 }
298
299 //calculate length of light guides
300 std::vector<double> vecLGLengths;
301 vecLGLengths.resize(tdcfg.nX1PixCnt);
302 vecLGLengths[0]=fLGuideLength11;
303 for(i=2;i<=tdcfg.nX1PixCnt;i++){
304 nTrainID=nTrainCnt-(i-1);
305 vecLGLengths[i-1]=vecLGLengths[i-2]+AFP_CONSTANTS::ToF_LGuideTrainOffset+tdcfg.mapTrainInfo.at(nTrainID+1).fLGuideWidth-tdcfg.mapTrainInfo.at(nTrainID+1).fTaperOffset;
306 }
307
308 tdcfg.mapBarDims.clear();
309 for(i=0;i<tdcfg.nX1PixCnt;i++){
310 nTrainID=tdcfg.nX1PixCnt-i;
311
312 for(j=0;j<tdcfg.nX2PixCnt;j++){
313 int k = j;
314 if(eStation==EAS_AFP02 || eStation==EAS_AFP03){
315 k = tdcfg.nX2PixCnt-1 - j;
316 }
317
318 fRadLength=fRadLength11+i*tdcfg.fPixelX1Dim-k*tdcfg.fPixelX2Dim/std::tan(tdcfg.fAlpha);
319 fRadLength+=(tdcfg.mapTrainInfo.at(nTrainOfBar11).fPerpShiftInPixel-tdcfg.mapTrainInfo.at(nTrainID).fPerpShiftInPixel);
320 fRadLength+=0.5*(tdcfg.mapTrainInfo.at(nTrainID).fLGuideWidth-tdcfg.mapTrainInfo.at(nTrainOfBar11).fLGuideWidth);
321 fLGuideLength=vecLGLengths[i];
322
323 BarDims.nBarX1ID=i+1;
324 BarDims.nBarX2ID=j+1;
325 BarDims.nTrainID=nTrainID;
326 BarDims.fLGuideLength=fLGuideLength;
327 BarDims.fLBarThickness=RefBarDims.fLBarThickness;
328 BarDims.fRadLength=fRadLength-tdcfg.mapTrainInfo.at(BarDims.nTrainID).fTaperOffset;
329 BarDims.fRadYDim=tdcfg.mapTrainInfo.at(nTrainID).fLGuideWidth-tdcfg.mapTrainInfo.at(BarDims.nTrainID).fTaperOffset;
330 BarDims.fLGuideWidth=tdcfg.mapTrainInfo.at(nTrainID).fLGuideWidth;
331
332 if(j==0) tdcfg.mapTrainInfo.at(nTrainCnt-i).fLength=fLGuideLength+0.5*BarDims.fRadYDim;
333 tdcfg.mapBarDims[10*(i+1)+(k + 1)]=BarDims;
334 }
335 }
336}
static constexpr double ToF_LGuideTrainOffset
static constexpr double ToF_MinBarGap
std::map< int, AFPTOF_LBARDIMENSIONS > mapBarDims
std::map< int, AFPTOF_TRAININFO > mapTrainInfo
AFPTOF_LBARREFDIMENSIONS RefBarDims

Member Data Documentation

◆ m_CfgParams

AFP_CONFIGURATION AFP_Geometry::m_CfgParams
protected

Definition at line 23 of file AFP_Geometry.h.

◆ m_MapSIDTransToGlobal

std::map<eAFPStation, std::map<int, HepGeom::Transform3D> > AFP_Geometry::m_MapSIDTransToGlobal
protected

Definition at line 26 of file AFP_Geometry.h.

◆ m_MapSIDTransToLocal

std::map<eAFPStation, std::map<int, HepGeom::Transform3D> > AFP_Geometry::m_MapSIDTransToLocal
protected

Definition at line 25 of file AFP_Geometry.h.


The documentation for this class was generated from the following files: