Correction for hits out of detector problem (Ludovic)
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 2 Aug 2006 07:38:34 +0000 (07:38 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 2 Aug 2006 07:38:34 +0000 (07:38 +0000)
ITS/AliITS.cxx
ITS/AliITS.h
STEER/AliModule.h
STEER/AliSimulation.cxx

index 9d729977539b00d283a5425f251029b1eb093b12..211c69c182d6ead2df785e26290a05eb36c10c99 100644 (file)
@@ -87,6 +87,7 @@ the AliITS class.
 #include "AliITSRecPoint.h"
 #include "AliRun.h"
 #include "AliLog.h"
+#include "AliITSInitGeometry.h"
 
 ClassImp(AliITS)
 
@@ -1140,3 +1141,18 @@ AliLoader* AliITS::MakeLoader(const char* topfoldername){
     fLoader = new AliITSLoader(GetName(),topfoldername);
     return fLoader;
 }
+
+//______________________________________________________________________
+void AliITS::UpdateInternalGeometry(){
+
+  Info("UpdateInternalGeometry", "Delete ITSgeom and create a new one reading TGeo");
+  AliITSInitGeometry *initgeom = new AliITSInitGeometry("AliITSvPPRasymmFMD",2);
+  AliITSgeom* geom = initgeom->CreateAliITSgeom();
+  SetITSgeom(geom);
+
+  if(!fLoader) MakeLoader(AliConfig::GetDefaultEventFolderName());
+  AliRunLoader* rl  = fLoader->GetRunLoader();
+  rl->CdGAFile();
+  geom->Write(0,kOverwrite);
+
+}
index 6f8c11230c706ae6f7d8a9b391d3a4d63399d5d7..8028010143a080f0698d960f2b851323b958a17a 100644 (file)
@@ -109,6 +109,7 @@ class AliITS : public AliDetector {
     TClonesArray* GetSDigits() const { return fDetTypeSim->GetSDigits();}
 
     AliDigitizer* CreateDigitizer(AliRunDigitizer* manager) const;
+    virtual void UpdateInternalGeometry();
     virtual void SDigitsToDigits(Option_t *opt="All");
     virtual void SDigits2Digits(){SDigitsToDigits("All");}
     virtual void Hits2Digits(); 
index da2e53db9f1ecef4bc8537c2e7047f977f8ebd67..d13e27cf9095823221ad1a3055fb3b6287fd854b 100644 (file)
@@ -114,6 +114,7 @@ public:
   virtual void        FinishPrimary() {}
   virtual void        Init() {}
   virtual void        LoadPoints(Int_t ) {}
+  virtual void        UpdateInternalGeometry() {}
 
 
 
index 142ef635846a8fef8699476cc7adaaecee22e864..4ef68b1772e45d7dbff549c118a8b8ca717cd10a 100644 (file)
@@ -561,6 +561,20 @@ Bool_t AliSimulation::MisalignGeometry(AliRunLoader *runLoader)
     }
   }
 
+
+  // Update the internal geometry of modules (ITS needs it)
+  TString detStr = fLoadAlignData;
+  TObjArray* detArray = runLoader->GetAliRun()->Detectors();
+  for (Int_t iDet = 0; iDet < detArray->GetEntriesFast(); iDet++) {
+
+    AliModule* det = (AliModule*) detArray->At(iDet);
+    if (!det || !det->IsActive()) continue;
+    if (IsSelected(det->GetName(), detStr)) {
+      det->UpdateInternalGeometry();
+    }
+  } // end loop over detectors
+
+
   if (delRunLoader) delete runLoader;
 
   return kTRUE;