Fix in sensor matrix extraction (protection against losing on path change)
authorshahoian <shahoian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 15 Nov 2012 02:45:22 +0000 (02:45 +0000)
committershahoian <shahoian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 15 Nov 2012 02:45:22 +0000 (02:45 +0000)
ITS/UPGRADE/AliITSUGeomTGeo.cxx

index 3123ea1..8affb45 100644 (file)
@@ -474,6 +474,7 @@ TGeoHMatrix* AliITSUGeomTGeo::ExtractMatrixSens(Int_t index) const
 {
   // Get the transformation matrix of the SENSOR (not ncessary the same as the module) 
   // for a given module 'index' by quering the TGeoManager
+  static TGeoHMatrix matTmp;
   const TString kPathBase = Form("/ALIC_1/%s_2/",AliITSUGeomTGeo::GetITSVolPattern());
   const TString kNames = Form("%%s%s%%d_1/%s%%d_%%d/%s%%d_%%d/%s%%d_%%d"
                              ,AliITSUGeomTGeo::GetITSLayerPattern()
@@ -491,13 +492,13 @@ TGeoHMatrix* AliITSUGeomTGeo::ExtractMatrixSens(Int_t index) const
     AliError(Form("Error in cd-ing to %s",path.Data()));
     return 0;
   } // end if !gGeoManager
-  TGeoHMatrix* mat = gGeoManager->GetCurrentMatrix();
+  matTmp = *gGeoManager->GetCurrentMatrix(); // matrix may change after cd
   //RSS
   //  printf("%d/%d/%d %s\n",lay,ladd,detInLad,path.Data());
   //  mat->Print();
   // Retstore the modeler state.
   gGeoManager->PopPath();
-  return mat;
+  return &matTmp;
 }