@@ -101,7 +101,6 @@ void R3BAlpideCal2Hit::SetParameter()
101101 R3BLOG (info, " Geometry version: " << fGeoversion );
102102 fNbSensors = fMap_Par ->GetNbSensors ();
103103 R3BLOG (info, " Nb of sensors: " << fNbSensors );
104-
105104 if (fAlpideGeoPar && fTargetGeoPar )
106105 {
107106 fTargetPos .SetXYZ (fTargetGeoPar ->GetPosX (), fTargetGeoPar ->GetPosY (), fTargetGeoPar ->GetPosZ ());
@@ -384,6 +383,26 @@ void R3BAlpideCal2Hit::FindClustersDefault()
384383 }
385384 else if (fGeoversion == 202506 )
386385 {
386+ const double Z_alpide1 = -1732.88 ;
387+ const double Z_alpide2 = -1659.88 ;
388+
389+ const double z1_off = -0.837843 ;
390+ const double z2_off = -2.69759 ;
391+
392+ const double rx = 0.0225419 ;
393+ const double ry = 0.0137131 ;
394+ const double rz[12 ] = { 0.00595207 , 0.00815014 , 0.0102531 , 0.00857714 , 0.00909736 , 0.0015223 ,
395+ 0.0133541 , 0.00969408 , 0.0134827 , 0.000125173 , 0.00982907 , 0.021181 };
396+
397+ array<TVector3, 12 > pos_offset = {
398+ TVector3 (0.231386 , 0.18477 , z1_off), TVector3 (0.03624 , 0.0145723 , z1_off),
399+ TVector3 (-0.162212 , -0.217339 , z1_off), TVector3 (-0.157992 , -0.31182 , z1_off),
400+ TVector3 (0.0596373 , -0.07224198 , z1_off), TVector3 (0.2458 , 0.131979 , z1_off),
401+ TVector3 (0.713162 , 0.203712 , z2_off), TVector3 (0.5620141 , -0.18166828 , z2_off),
402+ TVector3 (0.316365 , -0.445912 , z2_off), TVector3 (0.323927 , -0.298097 , z2_off),
403+ TVector3 (0.5504176 , -0.2855743 , z2_off), TVector3 (0.781553 , -0.0369948 , z2_off)
404+ };
405+
387406 for (size_t s = 0 ; s < fNbSensors ; s++)
388407 for (size_t i = 0 ; i < nHits; i++)
389408 if (mult[s][i] > 0 )
@@ -396,14 +415,34 @@ void R3BAlpideCal2Hit::FindClustersDefault()
396415 0.0 );
397416
398417 TVector3 labpos;
418+
419+ int sensorId = s;
420+
421+ TRotation Rloc;
422+ Rloc.RotateZ (rz[sensorId]);
423+ TVector3 local_rot = Rloc * localpos;
424+
399425 if (s < 3 )
400- labpos.SetXYZ (45 . - localpos .X () - 30 . * s, -localpos .Y (), 0.0 );
426+ labpos.SetXYZ (45 . - local_rot .X () - 30 . * s, -local_rot .Y (), Z_alpide1 );
401427 else if (s < 6 )
402- labpos.SetXYZ (-45 . + localpos .X () + 30 . * (s - 3 ), localpos .Y (), 0.0 );
428+ labpos.SetXYZ (-45 . + local_rot .X () + 30 . * (s - 3 ), local_rot .Y (), Z_alpide1 );
403429 else if (s < 9 )
404- labpos.SetXYZ (45 . - localpos.X () - 30 . * (s - 6 ), -localpos.Y (), 73 .);
430+ labpos.SetXYZ (45 . - local_rot.X () - 30 . * (s - 6 ), -local_rot.Y (), Z_alpide2);
431+ else
432+ labpos.SetXYZ (-45 . + local_rot.X () + 30 . * (s - 9 ), local_rot.Y (), Z_alpide2);
433+
434+ TVector3 center;
435+ if (sensorId < 6 )
436+ center.SetXYZ (0 ., 0 ., Z_alpide1);
405437 else
406- labpos.SetXYZ (-45 . + localpos.X () + 30 . * (s - 9 ), localpos.Y (), 73 .);
438+ center.SetXYZ (0 ., 0 ., Z_alpide2);
439+
440+ TRotation R;
441+ R.RotateX (rx);
442+ R.RotateY (ry);
443+
444+ labpos = R * (labpos - center) + center;
445+ labpos += pos_offset[sensorId];
407446
408447 AddHitData (s + 1 ,
409448 mult[s][i],
0 commit comments