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 9d72997..211c69c 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 6f8c112..8028010 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 da2e53d..d13e27c 100644 (file)
@@ -114,6 +114,7 @@ public:
   virtual void        FinishPrimary() {}
   virtual void        Init() {}
   virtual void        LoadPoints(Int_t ) {}
+  virtual void        UpdateInternalGeometry() {}
 
 
 
index 142ef63..4ef68b1 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;