]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PHOS/AliPHOSGeoUtils.cxx
New base class AliPIDResponse
[u/mrichter/AliRoot.git] / PHOS / AliPHOSGeoUtils.cxx
index 4d0cc3df6f3277921ebde17fe3b82c224e67a714..0cc8dc16350d0a07644205243814b33876c263c3 100644 (file)
@@ -56,6 +56,19 @@ AliPHOSGeoUtils::AliPHOSGeoUtils():
 {
     // default ctor 
     // must be kept public for root persistency purposes, but should never be called by the outside world
+  
+  fXtlArrSize[0]=0.;   
+  fXtlArrSize[1]=0.;                                                                           
+  fXtlArrSize[2]=0.; 
+  
+  for(Int_t mod=0; mod<5; mod++){
+    fEMCMatrix[mod]=0 ;
+    for(Int_t istrip=0; istrip<224; istrip++)
+      fStripMatrix[mod][istrip]=0 ;
+    fCPVMatrix[mod]=0;
+    fPHOSMatrix[mod]=0 ;
+  }
+
 }  
 
 //____________________________________________________________________________
@@ -155,7 +168,7 @@ AliPHOSGeoUtils::~AliPHOSGeoUtils(void)
     for(Int_t istrip=0; istrip<224; istrip++)
       delete fStripMatrix[mod][istrip];
     delete fCPVMatrix[mod];
-    //    delete fPHOSMatrix[mod];
+    delete fPHOSMatrix[mod];
   }
 }
 //____________________________________________________________________________
@@ -526,7 +539,7 @@ const TGeoHMatrix * AliPHOSGeoUtils::GetMatrixForModule(Int_t mod)const {
   //If GeoManager exists, take matrixes from it
   if(gGeoManager){
     char path[255] ;
-    sprintf(path,"/ALIC_1/PHOS_%d/PEMC_1/PCOL_1/PTIO_1/PCOR_1/PAGA_1/PTII_1",mod) ;
+    snprintf(path,255,"/ALIC_1/PHOS_%d/PEMC_1/PCOL_1/PTIO_1/PCOR_1/PAGA_1/PTII_1",mod) ;
     //    sprintf(path,"/ALIC_1/PHOS_%d",relid[0]) ;
     if (!gGeoManager->cd(path)){
       AliWarning(Form("Geo manager can not find path %s \n",path));
@@ -553,7 +566,7 @@ const TGeoHMatrix * AliPHOSGeoUtils::GetMatrixForStrip(Int_t mod, Int_t strip)co
   //If GeoManager exists, take matrixes from it
   if(gGeoManager){
     char path[255] ;
-    sprintf(path,"/ALIC_1/PHOS_%d/PEMC_1/PCOL_1/PTIO_1/PCOR_1/PAGA_1/PTII_1/PSTR_%d",mod,strip) ;
+    snprintf(path,255,"/ALIC_1/PHOS_%d/PEMC_1/PCOL_1/PTIO_1/PCOR_1/PAGA_1/PTII_1/PSTR_%d",mod,strip) ;
     if (!gGeoManager->cd(path)){
       AliWarning(Form("Geo manager can not find path %s \n",path));
       return 0 ;
@@ -580,7 +593,7 @@ const TGeoHMatrix * AliPHOSGeoUtils::GetMatrixForCPV(Int_t mod)const {
   if(gGeoManager){ 
     char path[255] ;
     //now apply possible shifts and rotations
-    sprintf(path,"/ALIC_1/PHOS_%d/PCPV_1",mod) ;
+    snprintf(path,255,"/ALIC_1/PHOS_%d/PCPV_1",mod) ;
     if (!gGeoManager->cd(path)){
       AliWarning(Form("Geo manager can not find path %s \n",path));
       return 0 ;
@@ -605,8 +618,10 @@ const TGeoHMatrix * AliPHOSGeoUtils::GetMatrixForPHOS(Int_t mod)const {
 
   //If GeoManager exists, take matrixes from it
   if(gGeoManager){
+
     char path[255] ;
-    sprintf(path,"/ALIC_1/PHOS_%d",mod) ;
+    snprintf(path,255,"/ALIC_1/PHOS_%d",mod) ;
+    
     if (!gGeoManager->cd(path)){
       AliWarning(Form("Geo manager can not find path %s \n",path));
       return 0 ;
@@ -629,21 +644,13 @@ const TGeoHMatrix * AliPHOSGeoUtils::GetMatrixForPHOS(Int_t mod)const {
 void AliPHOSGeoUtils::SetMisalMatrix(const TGeoHMatrix * m, Int_t mod){
   //Fills pointers to geo matrixes
  
-  fPHOSMatrix[mod]=m ;
-
-  //If module does not exist, make sure all its matrices are zero
-  if(m==NULL){
-    fEMCMatrix[mod]=NULL ;
-    Int_t istrip=0 ;
-    for(Int_t irow = 0; irow < fGeometryEMCA->GetNStripX(); irow ++){
-      for(Int_t icol = 0; icol < fGeometryEMCA->GetNStripZ(); icol ++){
-        fStripMatrix[mod][istrip]=NULL ;
-      }
-    } 
-    fCPVMatrix[mod]=NULL ;
+  if(fPHOSMatrix[mod]){ //have been set already. Can not be changed any more
     return ;
   }
-
+  if(m==NULL) //Matrix for non-existing modules? Remain zero, no need to re-set
+    return ;
+  fPHOSMatrix[mod]= new TGeoHMatrix(*m) ;
+  
   //Calculate maxtrices for PTII
   if(!fMisalArray)
     fMisalArray = new TClonesArray("TGeoHMatrix",1120+10) ;