Geometry construction functions separated from AliMUON, AliMUONv1into a new AliMUONGe...
[u/mrichter/AliRoot.git] / MUON / AliMUON.cxx
index 2574280077ccf850c6be848e33d024b4ab9c1d77..d6693a0af7c62e67a6258d5b4fb54cf514f44ee2 100644 (file)
 #include <TVector.h>
 #include <TVirtualMC.h>
 
 #include <TVector.h>
 #include <TVirtualMC.h>
 
-#include "AliConst.h" 
-#include "AliHeader.h"
-#include "AliHitMap.h"
+//#include "AliHeader.h"
 #include "AliLoader.h"
 #include "AliRunDigitizer.h"
 #include "AliMC.h"
 #include "AliRun.h"    
 #include "AliLoader.h"
 #include "AliRunDigitizer.h"
 #include "AliMC.h"
 #include "AliRun.h"    
-#include "AliMUONLoader.h"
 #include "AliMUON.h"
 #include "AliMUONChamberTrigger.h"
 #include "AliMUONConstants.h"
 #include "AliMUON.h"
 #include "AliMUONChamberTrigger.h"
 #include "AliMUONConstants.h"
-#include "AliMUONDigit.h"
 #include "AliMUONHit.h"
 #include "AliMUONHit.h"
-#include "AliMUONHitMapA1.h"
 #include "AliMUONMerger.h"     
 #include "AliMUONPadHit.h"
 #include "AliMUONRawCluster.h"
 #include "AliMUONTransientDigit.h"
 #include "AliMUONTriggerCircuit.h"
 #include "AliMUONMerger.h"     
 #include "AliMUONPadHit.h"
 #include "AliMUONRawCluster.h"
 #include "AliMUONTransientDigit.h"
 #include "AliMUONTriggerCircuit.h"
+#include "AliMUONGeometryBuilder.h"
 #include "AliMUONVGeometryBuilder.h"   
 #include "AliMUONDigitizerv2.h"
 #include "AliMUONSDigitizerv1.h"
 #include "AliMUONVGeometryBuilder.h"   
 #include "AliMUONDigitizerv2.h"
 #include "AliMUONSDigitizerv1.h"
@@ -93,8 +89,8 @@ AliMUON::AliMUON()
     fMUONData(0),
     fSplitLevel(0),
     fChambers(0),
     fMUONData(0),
     fSplitLevel(0),
     fChambers(0),
-    fGeometryBuilders(0),
     fTriggerCircuits(0),
     fTriggerCircuits(0),
+    fGeometryBuilder(0),
     fAccCut(kFALSE),
     fAccMin(0.),
     fAccMax(0.),   
     fAccCut(kFALSE),
     fAccMin(0.),
     fAccMax(0.),   
@@ -119,8 +115,8 @@ AliMUON::AliMUON(const char *name, const char *title)
     fMUONData(0),
     fSplitLevel(0),
     fChambers(0),
     fMUONData(0),
     fSplitLevel(0),
     fChambers(0),
-    fGeometryBuilders(0),
     fTriggerCircuits(0),
     fTriggerCircuits(0),
+    fGeometryBuilder(0),
     fAccCut(kFALSE),
     fAccMin(0.),
     fAccMax(0.),   
     fAccCut(kFALSE),
     fAccMin(0.),
     fAccMax(0.),   
@@ -140,7 +136,6 @@ AliMUON::AliMUON(const char *name, const char *title)
 // Creating List of Chambers
     Int_t ch;
     fChambers = new TObjArray(AliMUONConstants::NCh());
 // Creating List of Chambers
     Int_t ch;
     fChambers = new TObjArray(AliMUONConstants::NCh());
-    fGeometryBuilders = new TObjArray(AliMUONConstants::NCh());
 
     // Loop over stations
     for (Int_t st = 0; st < AliMUONConstants::NCh() / 2; st++) {
 
     // Loop over stations
     for (Int_t st = 0; st < AliMUONConstants::NCh() / 2; st++) {
@@ -173,6 +168,9 @@ AliMUON::AliMUON(const char *name, const char *title)
     for (Int_t circ=0; circ<AliMUONConstants::NTriggerCircuit(); circ++) {
       fTriggerCircuits->AddAt(new AliMUONTriggerCircuit(),circ);          
     }
     for (Int_t circ=0; circ<AliMUONConstants::NTriggerCircuit(); circ++) {
       fTriggerCircuits->AddAt(new AliMUONTriggerCircuit(),circ);          
     }
+    
+    // Geometry builder
+    fGeometryBuilder = new AliMUONGeometryBuilder(this);
 }
 
 //____________________________________________________________________
 }
 
 //____________________________________________________________________
@@ -192,10 +190,6 @@ AliMUON::~AliMUON()
   fIshunt  = 0;
   if (fMerger) delete fMerger;
 
   fIshunt  = 0;
   if (fMerger) delete fMerger;
 
-  if (fGeometryBuilders){
-    fGeometryBuilders->Delete();
-    delete fGeometryBuilders;
-  }
   if (fChambers){
     fChambers->Delete();
     delete fChambers;
   if (fChambers){
     fChambers->Delete();
     delete fChambers;
@@ -205,6 +199,7 @@ AliMUON::~AliMUON()
     delete fTriggerCircuits;
   }
   delete fMUONData;
     delete fTriggerCircuits;
   }
   delete fMUONData;
+  delete fGeometryBuilder;
 }
 
 //________________________________________________________________________
 }
 
 //________________________________________________________________________
@@ -225,7 +220,7 @@ void AliMUON::AddGeometryBuilder(AliMUONVGeometryBuilder* geomBuilder)
 // Adds the geometry builder to the list
 // ---
 
 // Adds the geometry builder to the list
 // ---
 
-  fGeometryBuilders->Add(geomBuilder);
+  fGeometryBuilder->AddBuilder(geomBuilder);
 }
 
 //____________________________________________________________________
 }
 
 //____________________________________________________________________
@@ -318,6 +313,7 @@ void AliMUON::SetMaxAdc(Int_t id, Int_t p1)
     ((AliMUONChamber*) fChambers->At(i))->SetMaxAdc(p1);
     ((AliMUONChamber*) fChambers->At(i+1))->SetMaxAdc(p1);
 }
     ((AliMUONChamber*) fChambers->At(i))->SetMaxAdc(p1);
     ((AliMUONChamber*) fChambers->At(i+1))->SetMaxAdc(p1);
 }
+
 //__________________________________________________________________
 void AliMUON::SetMaxStepGas(Float_t p1)
 {
 //__________________________________________________________________
 void AliMUON::SetMaxStepGas(Float_t p1)
 {
@@ -342,6 +338,7 @@ void AliMUON::SetMaxDestepAlu(Float_t p1)
 // Set maximum step size in Alu
   fMaxDestepAlu=p1;
 }
 // Set maximum step size in Alu
   fMaxDestepAlu=p1;
 }
+
 //___________________________________________________________________
 void AliMUON::SetAcceptance(Bool_t acc, Float_t angmin, Float_t angmax)
 {
 //___________________________________________________________________
 void AliMUON::SetAcceptance(Bool_t acc, Float_t angmin, Float_t angmax)
 {
@@ -394,6 +391,7 @@ Float_t  AliMUON::GetMaxDestepAlu() const
   
   return fMaxDestepAlu;
 }
   
   return fMaxDestepAlu;
 }
+
 //____________________________________________________________________
 void   AliMUON::SetSegmentationModel(Int_t id, Int_t isec, AliSegmentation *segmentation)
 {
 //____________________________________________________________________
 void   AliMUON::SetSegmentationModel(Int_t id, Int_t isec, AliSegmentation *segmentation)
 {