11#include "GaudiKernel/MsgStream.h"
15#include <CLHEP/Matrix/Matrix.h>
16#include <CLHEP/Matrix/Vector.h>
28 for(
int nStationID=0; nStationID<=3; ++nStationID){
33 char szStationName[8];
34 sprintf(szStationName,
"AFP%02i",(
int)eStation);
41 char szStationName[8];
42 sprintf(szStationName,
"AFP%02i",(
int)eStation);
57 HepGeom::Transform3D ReqTransform;
69 ReqTransform=HepGeom::Translate3D(
LHCXOFFSET, 0.0*CLHEP::mm,
m_CfgParams.vecStatNominalZPos[2]) * HepGeom::RotateX3D(180*CLHEP::deg);
72 ReqTransform=HepGeom::Translate3D(
LHCXOFFSET, 0.0*CLHEP::mm,
m_CfgParams.vecStatNominalZPos[3]) * HepGeom::RotateX3D(180*CLHEP::deg);
84 HepGeom::Transform3D ReqTransform;
92 double xComponent = -
m_CfgParams.vecRPotFloorDistance[eStation];
93 double yComponent =
m_CfgParams.vecRPotYPos[eStation];
103 ReqTransform=HepGeom::Translate3D(xComponent, yComponent, 0.0);
107 ReqTransform=HepGeom::Translate3D(xComponent, yComponent, 0.0)*HepGeom::Translate3D( xStag,0.0,-sidcfg.
fZDistanceInRPot);
112 ReqTransform=HepGeom::Translate3D(xComponent, yComponent, 0.0);
114 ReqTransform=HepGeom::Translate3D(xComponent, yComponent, 0.0)*HepGeom::TranslateX3D( xStag);
119 ReqTransform=HepGeom::Translate3D(xComponent, yComponent, 0.0);
121 ReqTransform=HepGeom::Translate3D(xComponent, yComponent ,0.0)*HepGeom::TranslateX3D( xStag);
126 ReqTransform=HepGeom::Translate3D(xComponent, yComponent, 0.0);
130 ReqTransform=HepGeom::Translate3D(xComponent, yComponent, 0.0)*HepGeom::Translate3D( xStag,0.0,-sidcfg.
fZDistanceInRPot);
141 HepGeom::Transform3D ReqTransform=HepGeom::Transform3D();
143 std::string Station=std::string(pszStationName);
146 double falpha = sidcfg.
fSlope;
157 HepGeom::Transform3D NominalPosInPocket=HepGeom::Translate3D(0.0*CLHEP::mm,0.0*CLHEP::mm, (fzm-fZCorrOffset));
160 ReqTransform=TransInMotherVolume*NominalPosInPocket*HepGeom::Translate3D(fxm, 0.0*CLHEP::mm, nPlateID*sidcfg.
fLayerSpacing/std::cos(falpha))*HepGeom::RotateY3D(falpha)*ReqTransform;
179 HepGeom::Transform3D NominalPosInPocket=HepGeom::Translate3D(0.0*CLHEP::mm,0.0*CLHEP::mm, (fzm-fZCorrOffset));
184 HepGeom::Transform3D TransStaggering=HepGeom::Translate3D(sidcfg.
vecXStaggering[nPlateID]*std::cos(falpha),sidcfg.
vecYStaggering[nPlateID], 0.0*CLHEP::mm);
185 HepGeom::Transform3D TotTransform=TransInMotherVolume*TransStaggering*NominalPosInPocket;
187 HepGeom::Transform3D PlateTotTrans=TotTransform*HepGeom::Translate3D(fxm,0.0*CLHEP::mm, nPlateID*sidcfg.
fLayerSpacing/std::cos(falpha))*HepGeom::RotateY3D(falpha);
190 HepGeom::Transform3D TotTransSIDInWorld=TransMotherInWorld*TransSID;
195 ReqTransform=PlateTotTrans;
198 ReqTransform=TransSID;
201 ReqTransform=TransFEI4;
204 ReqTransform=TotTransSIDInWorld.inverse();
207 ReqTransform=TotTransSIDInWorld;
221 if(!strcmp(pszStationName,
"AFP00")) eStation=
EAS_AFP00;
222 else if(!strcmp(pszStationName,
"AFP01")) eStation=
EAS_AFP01;
223 else if(!strcmp(pszStationName,
"AFP02")) eStation=
EAS_AFP02;
224 else if(!strcmp(pszStationName,
"AFP03")) eStation=
EAS_AFP03;
232 StatusCode Status=StatusCode::FAILURE;
233 LocalPoint=HepGeom::Point3D<double>();
238 if(nStationID>=0 && nStationID<=3){
241 Status=StatusCode::SUCCESS;
250 StatusCode Status=StatusCode::FAILURE;
251 GlobalPoint=HepGeom::Point3D<double>();
254 if(nStationID>=0 && nStationID<=3){
257 Status=StatusCode::SUCCESS;
275 if(pfX1Pos) *pfX1Pos = -i *
m_CfgParams.tdcfg.at(eStation).fPixelX1Dim;
276 if(pfX2Pos) *pfX2Pos = j *
m_CfgParams.tdcfg.at(eStation).fPixelX2Dim;
281 int i,j,nTrainOfBar11,nRefTrainID,nTrainID,nTrainCnt;
283 double fRadLength11, fLGuideLength11, fRadLength, fLGuideLength;
293 nRefTrainID = nTrainCnt-(RefBarDims.
nBarX1ID-1);
298 nTrainID = nTrainCnt-(i-1);
303 std::vector<double> vecLGLengths;
305 vecLGLengths[0]=fLGuideLength11;
307 nTrainID=nTrainCnt-(i-1);
322 fRadLength+=(tdcfg.
mapTrainInfo.at(nTrainOfBar11).fPerpShiftInPixel-tdcfg.
mapTrainInfo.at(nTrainID).fPerpShiftInPixel);
324 fLGuideLength=vecLGLengths[i];
int getPixelColumn(const int nPixelID) const
HepGeom::Transform3D getStationElementTransform(const char *pszStationName, eStationElement eElement, const int nPlateID=-1) const
void getPixelLocalPosition(const eAFPStation eStation, const int nPixelID, double *pfX1Pos, double *pfX2Pos) const
eAFPStation parseStationName(const char *pszStationName) const
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
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
int getPixelRow(const int nPixelID) const
HepGeom::Transform3D getSIDTransform(const eSIDTransformType eType, const char *pszStationName, const int nPlateID) const
HepGeom::Transform3D getStationTransform(const char *pszStationName) const
int getSIDPlatesCnt(const eAFPStation eStation) const
singleton-like access to IMessageSvc via open function and helper
static constexpr double SiT_Pixel_length_totx
static constexpr double SiT_Plate_Main_thickness
static constexpr double Stat_GlobalVacuumSensorThickness
static constexpr int Stat_GlobalVacuumSensorID
static constexpr double SiT_Pixel_length_toty
static constexpr double SiT_CorrZOffset
static constexpr double SiT_Chip_thickness
static constexpr double SiT_Pixel_thickness
static constexpr double ToF_LGuideTrainOffset
static constexpr double ToF_MinBarGap
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
std::map< int, AFPTOF_LBARDIMENSIONS > mapBarDims
std::map< int, AFPTOF_TRAININFO > mapTrainInfo
AFPTOF_LBARREFDIMENSIONS RefBarDims