Modified ApplyDisplacements method (R.Grosso).
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 15 Dec 2005 09:30:30 +0000 (09:30 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 15 Dec 2005 09:30:30 +0000 (09:30 +0000)
STEER/AliSimulation.cxx
STEER/AliSimulation.h

index ce363eb..7e3812c 100644 (file)
@@ -261,7 +261,7 @@ void AliSimulation::SetEventsPerFile(const char* detector, const char* type,
 }
 
 //_____________________________________________________________________________
-Bool_t AliSimulation::ApplyDisplacements(TGeoManager* geoManager, const char* fileName, const char* ClArrayName)
+Bool_t AliSimulation::ApplyDisplacements(const char* fileName, const char* ClArrayName)
 {
   // read collection of alignment objects (AliAlignObj derived) saved
   // in the TClonesArray ClArrayName in the file fileName and apply
@@ -275,6 +275,19 @@ Bool_t AliSimulation::ApplyDisplacements(TGeoManager* geoManager, const char* fi
   }
 
   TClonesArray* AlObjArray = ((TClonesArray*) inFile->Get(ClArrayName));
+  inFile->Close();
+
+  return AliSimulation::ApplyDisplacements(AlObjArray);
+
+}
+
+//_____________________________________________________________________________
+Bool_t AliSimulation::ApplyDisplacements(TClonesArray* AlObjArray)
+{
+  // Read collection of alignment objects (AliAlignObj derived) saved
+  // in the TClonesArray ClArrayName and apply them to the geometry
+  // manager singleton.
+  //
   Int_t nvols = AlObjArray->GetEntriesFast();
 
   AliAlignObj::ELayerID layerId; // unique identity for volume in the alobj
@@ -287,28 +300,26 @@ Bool_t AliSimulation::ApplyDisplacements(TGeoManager* geoManager, const char* fi
     {
       AliAlignObj* alobj = (AliAlignObj*) AlObjArray->UncheckedAt(j);
       const char* volpath = alobj->GetVolPath();
-      TGeoPhysicalNode* node = (TGeoPhysicalNode*) geoManager->MakePhysicalNode(volpath);
+      TGeoPhysicalNode* node = (TGeoPhysicalNode*) gGeoManager->MakePhysicalNode(volpath);
       alobj->GetMatrix(dm);
       alobj->GetVolUID(layerId, modId);
-      ispathvalid = geoManager->cd(volpath);
+      ispathvalid = gGeoManager->cd(volpath);
       if(!ispathvalid){
        AliWarningClass(Form("Volume path %s not valid!",volpath));
        return kFALSE;
       }
-      TGeoHMatrix* hm = geoManager->GetCurrentMatrix();
+      TGeoHMatrix* hm = gGeoManager->GetCurrentMatrix();
       hm->MultiplyLeft(&dm);
       AliInfoClass(Form("Aligning volume %s of detector layer %d with local ID %d",volpath,layerId,modId));
       node->Align(hm);
-
     }
-  
-  inFile->Close();
+
   return kTRUE;
 
 }
 
 //_____________________________________________________________________________
-Bool_t AliSimulation::ApplyDisplacements(TGeoManager* geoManager, AliCDBParam* param, AliCDBId& Id)
+Bool_t AliSimulation::ApplyDisplacements(AliCDBParam* param, AliCDBId& Id)
 {
   // read collection of alignment objects (AliAlignObj derived) saved
   // in the TClonesArray ClArrayName in the AliCDBEntry identified by
@@ -320,40 +331,12 @@ Bool_t AliSimulation::ApplyDisplacements(TGeoManager* geoManager, AliCDBParam* p
   AliCDBEntry* entry = storage->Get(Id);
   TClonesArray* AlObjArray = ((TClonesArray*) entry->GetObject());
 
-  Int_t nvols = AlObjArray->GetEntriesFast();
-  AliAlignObj* alobj;
-
-  AliAlignObj::ELayerID layerId; // unique identity for volume in the alobj
-  Int_t modId; // unique identity for volume in the alobj
-  Bool_t ispathvalid; // false if volume path for alobj is not valid for TGeo
-
-  TGeoHMatrix dm;
-
-  for(Int_t j=0; j<nvols; j++)
-    {
-      alobj = (AliAlignObj*) AlObjArray->UncheckedAt(j);
-      const char* volpath = alobj->GetVolPath();
-      TGeoPhysicalNode* node = (TGeoPhysicalNode*) geoManager->MakePhysicalNode(volpath);
-      alobj->GetMatrix(dm);
-      alobj->GetVolUID(layerId, modId);
-      ispathvalid = geoManager->cd(volpath);
-      if(!ispathvalid){
-       AliWarningClass(Form("Volume path %s not valid!",volpath));
-       return kFALSE;
-      }
-      TGeoHMatrix* hm = geoManager->GetCurrentMatrix();
-      hm->MultiplyLeft(&dm);
-      AliInfoClass(Form("Aligning volume %s of detector layer %d with local ID %d",volpath,layerId,modId));
-      node->Align(hm);
-
-    }
-  
-  return kTRUE;
+  return AliSimulation::ApplyDisplacements(AlObjArray);
 
 }
 
 //_____________________________________________________________________________
-Bool_t AliSimulation::ApplyDisplacements(TGeoManager* geoManager, const char* uri, const char* path, Int_t runnum, Int_t version, Int_t sversion)
+Bool_t AliSimulation::ApplyDisplacements(const char* uri, const char* path, Int_t runnum, Int_t version, Int_t sversion)
 {
   // read collection of alignment objects (AliAlignObj derived) saved
   // in the TClonesArray ClArrayName in the AliCDBEntry identified by
@@ -363,9 +346,8 @@ Bool_t AliSimulation::ApplyDisplacements(TGeoManager* geoManager, const char* ur
 
   AliCDBParam* param = AliCDBManager::Instance()->CreateParameter(uri);
   AliCDBId id(path, runnum, runnum, version, sversion);
-  ApplyDisplacements(geoManager, param, id);
 
-  return kTRUE;
+  return ApplyDisplacements(param, id);
 
 }
 
index 1919ea8..b0625eb 100644 (file)
@@ -57,14 +57,12 @@ public:
                                 Bool_t deleteIntermediateFiles = kFALSE)
                    {fWriteRawData = detectors; fRawDataFileName = fileName;
                   fDeleteIntermediateFiles = deleteIntermediateFiles;};
-  static Bool_t  ApplyDisplacements(TGeoManager* geoManager,
-                                   const char* fileName,
+  static Bool_t  ApplyDisplacements(const char* fileName,
                                    const char* ClArrayName);
-  static Bool_t  ApplyDisplacements(TGeoManager* geoManager,
-                                   AliCDBParam* param,
+  static Bool_t  ApplyDisplacements(TClonesArray* AlObjArray);
+  static Bool_t  ApplyDisplacements(AliCDBParam* param,
                                    AliCDBId& Id);
-  static Bool_t  ApplyDisplacements(TGeoManager* geoManager,
-                                   const char* uri, const char* path,
+  static Bool_t  ApplyDisplacements(const char* uri, const char* path,
                                    Int_t runnum, Int_t version,
                                    Int_t sversion);