]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONFactoryV2.cxx
Restoring raw data fit from version of 29-Aug-2004
[u/mrichter/AliRoot.git] / MUON / AliMUONFactoryV2.cxx
index 1a7116e6e5fa038c91cc4fb2e56809b3d3fbe76d..bbf5ab0ec09f28c7d9fb4c3f73763ccf7ede7092 100644 (file)
@@ -21,7 +21,6 @@
 
 #include "AliMUONFactoryV2.h"
 #include "AliRun.h"
-#include "AliSegmentation.h"
 #include "AliLog.h"
 
 #include "AliMUON.h"
@@ -32,6 +31,7 @@
 #include "AliMUONGeometryModule.h"
 #include "AliMUONGeometryStore.h"
 #include "AliMUONGeometrySegmentation.h"
+#include "AliMUONVGeometryDEIndexing.h"
 #include "AliMUONSt12QuadrantSegmentation.h"
 #include "AliMUONSt345SlatSegmentation.h"
 #include "AliMUONTriggerSegmentation.h"
@@ -41,7 +41,7 @@ ClassImp(AliMUONFactoryV2)
 
 //__________________________________________________________________________
   AliMUONFactoryV2::AliMUONFactoryV2(const char* name)
-    : AliMUONFactory(name),
+    : TNamed(name, ""),
       fMUON(0),
       fResponse0(0),
       fDESegmentations(0)
@@ -55,7 +55,7 @@ ClassImp(AliMUONFactoryV2)
 
 //__________________________________________________________________________
   AliMUONFactoryV2::AliMUONFactoryV2()
-    : AliMUONFactory(),
+    : TNamed(),
       fMUON(0),
       fResponse0(0),
       fDESegmentations(0)
@@ -65,7 +65,7 @@ ClassImp(AliMUONFactoryV2)
 
 //__________________________________________________________________________
 AliMUONFactoryV2::AliMUONFactoryV2(const AliMUONFactoryV2& rhs)
 : AliMUONFactory(rhs)
: TNamed(rhs)
 {
   // Protected copy constructor
 
@@ -93,6 +93,22 @@ AliMUONFactoryV2&  AliMUONFactoryV2::operator=(const AliMUONFactoryV2& rhs)
   return *this;  
 }    
           
+//__________________________________________________________________________
+Bool_t AliMUONFactoryV2::IsGeometryDefined(Int_t ichamber)
+{
+// Return true, if det elements for the chamber with the given ichamber Id
+// are defined in geometry (the geometry builder for this chamber was activated)
+
+  if ( ! fMUON ||
+       ! fMUON->Chamber(ichamber).GetGeometry() ||
+       ! fMUON->Chamber(ichamber).GetGeometry()->GetDEIndexing() ||
+       ! fMUON->Chamber(ichamber).GetGeometry()->GetDEIndexing()->GetNofDetElements() )
+       
+    return kFALSE;
+  
+  return kTRUE;
+}  
+
 //__________________________________________________________________________
 void AliMUONFactoryV2::BuildCommon() 
 {
@@ -161,21 +177,18 @@ void AliMUONFactoryV2::BuildStation1()
     //--------------------------------------------------------
     // Configuration for Chamber TC1/2  (Station 1) ----------           
 
-
-    fMUON->SetNsec(chamber,2);
-
     // cathode 0
     segmentation[0]->Add(id0,      bendSt1);
-    segmentation[0]->Add(id0 +  1, nonbendSt1);
-    segmentation[0]->Add(id0 + 50, bendSt1);
-    segmentation[0]->Add(id0 + 51, nonbendSt1); 
+    segmentation[0]->Add(id0 +  3, nonbendSt1);
+    segmentation[0]->Add(id0 +  2, bendSt1);
+    segmentation[0]->Add(id0 +  1, nonbendSt1); 
     fMUON->SetSegmentationModel(chamber, 1, segmentation[0]);   
 
     // cathode 1
     segmentation[1]->Add(id0,      nonbendSt1);
+    segmentation[1]->Add(id0 +  3, bendSt1);
+    segmentation[1]->Add(id0 +  2, nonbendSt1);
     segmentation[1]->Add(id0 +  1, bendSt1);
-    segmentation[1]->Add(id0 + 50, nonbendSt1);
-    segmentation[1]->Add(id0 + 51, bendSt1);
     fMUON->SetSegmentationModel(chamber, 2, segmentation[1]);
         
     fMUON->SetResponseModel(chamber, responseSt1); // special response      
@@ -216,21 +229,18 @@ void AliMUONFactoryV2::BuildStation2()
     //--------------------------------------------------------
     // Configuration for Chamber TC3/4  (Station 2) ----------           
 
-
-    fMUON->SetNsec(chamber,2);
-
     // cathode 0
     segmentation[0]->Add(id0,      bendSt2);
-    segmentation[0]->Add(id0 +  1, nonbendSt2);
-    segmentation[0]->Add(id0 + 50, bendSt2);
-    segmentation[0]->Add(id0 + 51, nonbendSt2); 
+    segmentation[0]->Add(id0 +  3, nonbendSt2);
+    segmentation[0]->Add(id0 +  2, bendSt2);
+    segmentation[0]->Add(id0 +  1, nonbendSt2); 
     fMUON->SetSegmentationModel(chamber, 1, segmentation[0]);   
 
     // cathode 1
     segmentation[1]->Add(id0,      nonbendSt2);
+    segmentation[1]->Add(id0 +  3, bendSt2);
+    segmentation[1]->Add(id0 +  2, nonbendSt2);
     segmentation[1]->Add(id0 +  1, bendSt2);
-    segmentation[1]->Add(id0 + 50, nonbendSt2);
-    segmentation[1]->Add(id0 + 51, bendSt2);
     fMUON->SetSegmentationModel(chamber, 2, segmentation[1]);
         
     fMUON->SetResponseModel(chamber, fResponse0); // normal response        
@@ -264,7 +274,7 @@ void AliMUONFactoryV2::BuildStation3()
     slatsegB[i]->SetDAnod(AliMUONConstants::Pitch());
     slatsegNB[i] = new AliMUONSt345SlatSegmentation(0);
     fDESegmentations->Add(slatsegNB[i]);  
-    slatsegNB[i]->SetPadSize(0.713,10.); // Nbending
+    slatsegNB[i]->SetPadSize(1./1.4,10.); // Nbending
     slatsegNB[i]->SetPadDivision(ndiv);
     slatsegNB[i]->SetId(1);
     slatsegNB[i]->SetDAnod(AliMUONConstants::Pitch());
@@ -318,67 +328,60 @@ void AliMUONFactoryV2::BuildStation3()
     // id detection elt for chamber 1
     Int_t id0 = (chamber+1)*100;
 
-    //--------------------------------------------------------
-    // Configuration for Chamber TC3/4  (Station 2) ----------           
-
-
-    fMUON->SetNsec(chamber,2);
-
     // cathode 0
     // type 220000
-    segmentation[0]->Add(id0, slatsegB[3]);
-    segmentation[0]->Add(id0+ 8, slatsegB[3]);  
-    segmentation[0]->Add(id0+50, slatsegB[3]);  
-    segmentation[0]->Add(id0+58, slatsegB[3]);
+    segmentation[0]->Add(id0+14, slatsegB[3]);
+    segmentation[0]->Add(id0+ 4, slatsegB[3]);  
+    segmentation[0]->Add(id0+13, slatsegB[3]);  
+    segmentation[0]->Add(id0+ 5, slatsegB[3]);
     // type 222000
-    segmentation[0]->Add(id0+ 1, slatsegB[2]);
-    segmentation[0]->Add(id0+ 7, slatsegB[2]);  
-    segmentation[0]->Add(id0+51, slatsegB[2]);  
-    segmentation[0]->Add(id0+57, slatsegB[2]);
+    segmentation[0]->Add(id0+15, slatsegB[2]);
+    segmentation[0]->Add(id0+ 3, slatsegB[2]);  
+    segmentation[0]->Add(id0+12, slatsegB[2]);  
+    segmentation[0]->Add(id0+ 6, slatsegB[2]);
     // type 122200
-    segmentation[0]->Add(id0+ 2, slatsegB[1]);
-    segmentation[0]->Add(id0+ 6, slatsegB[1]);  
-    segmentation[0]->Add(id0+52, slatsegB[1]);  
-    segmentation[0]->Add(id0+56, slatsegB[1]);
+    segmentation[0]->Add(id0+16, slatsegB[1]);
+    segmentation[0]->Add(id0+ 2, slatsegB[1]);  
+    segmentation[0]->Add(id0+11, slatsegB[1]);  
+    segmentation[0]->Add(id0+ 7, slatsegB[1]);
     // type 112200
-    segmentation[0]->Add(id0+ 3, slatsegB[0]);
-    segmentation[0]->Add(id0+ 4, slatsegB[0]);  
-    segmentation[0]->Add(id0+ 5, slatsegB[0]);  
-    segmentation[0]->Add(id0+53, slatsegB[0]);
-    segmentation[0]->Add(id0+54, slatsegB[0]);     
-    segmentation[0]->Add(id0+55, slatsegB[0]);
+    segmentation[0]->Add(id0+17, slatsegB[0]);
+    segmentation[0]->Add(id0, slatsegB[0]);  
+    segmentation[0]->Add(id0+ 1, slatsegB[0]);  
+    segmentation[0]->Add(id0+10, slatsegB[0]);
+    segmentation[0]->Add(id0+ 9, slatsegB[0]);     
+    segmentation[0]->Add(id0+ 8, slatsegB[0]);
     fMUON->SetSegmentationModel(chamber, 1, segmentation[0]);   
 
     // cathode 1
     // type 220000
-    segmentation[1]->Add(id0, slatsegNB[3]);
-    segmentation[1]->Add(id0+ 8, slatsegNB[3]);  
-    segmentation[1]->Add(id0+50, slatsegNB[3]);  
-    segmentation[1]->Add(id0+58, slatsegNB[3]);
+    segmentation[1]->Add(id0+14, slatsegNB[3]);
+    segmentation[1]->Add(id0+ 4, slatsegNB[3]);  
+    segmentation[1]->Add(id0+13, slatsegNB[3]);  
+    segmentation[1]->Add(id0+ 5, slatsegNB[3]);
     // type 222000
-    segmentation[1]->Add(id0+ 1, slatsegNB[2]);
-    segmentation[1]->Add(id0+ 7, slatsegNB[2]);  
-    segmentation[1]->Add(id0+51, slatsegNB[2]);  
-    segmentation[1]->Add(id0+57, slatsegNB[2]);
+    segmentation[1]->Add(id0+15, slatsegNB[2]);
+    segmentation[1]->Add(id0+ 3, slatsegNB[2]);  
+    segmentation[1]->Add(id0+12, slatsegNB[2]);  
+    segmentation[1]->Add(id0+ 6, slatsegNB[2]);
     // type 122200
-    segmentation[1]->Add(id0+ 2, slatsegNB[1]);
-    segmentation[1]->Add(id0+ 6, slatsegNB[1]);  
-    segmentation[1]->Add(id0+52, slatsegNB[1]);  
-    segmentation[1]->Add(id0+56, slatsegNB[1]);
+    segmentation[1]->Add(id0+16, slatsegNB[1]);
+    segmentation[1]->Add(id0+ 2, slatsegNB[1]);  
+    segmentation[1]->Add(id0+11, slatsegNB[1]);  
+    segmentation[1]->Add(id0+ 7, slatsegNB[1]);
     // type 112200
-    segmentation[1]->Add(id0+ 3, slatsegNB[0]);
-    segmentation[1]->Add(id0+ 4, slatsegNB[0]);  
-    segmentation[1]->Add(id0+ 5, slatsegNB[0]);  
-    segmentation[1]->Add(id0+53, slatsegNB[0]);
-    segmentation[1]->Add(id0+54, slatsegNB[0]);     
-    segmentation[1]->Add(id0+55, slatsegNB[0]);
+    segmentation[1]->Add(id0+17, slatsegNB[0]);
+    segmentation[1]->Add(id0, slatsegNB[0]);  
+    segmentation[1]->Add(id0+ 1, slatsegNB[0]);  
+    segmentation[1]->Add(id0+10, slatsegNB[0]);
+    segmentation[1]->Add(id0+ 9, slatsegNB[0]);     
+    segmentation[1]->Add(id0+ 8, slatsegNB[0]);
     fMUON->SetSegmentationModel(chamber, 2, segmentation[1]);
 
     fMUON->SetResponseModel(chamber, fResponse0);      
     fMUON->Chamber(chamber).SetChargeCorrel(0.11); // 11% charge spread
   }
 }
-
         
 //__________________________________________________________________________
 void AliMUONFactoryV2::BuildStation4() 
@@ -405,7 +408,7 @@ void AliMUONFactoryV2::BuildStation4()
     slatsegB[i]->SetDAnod(AliMUONConstants::Pitch());
     slatsegNB[i] = new AliMUONSt345SlatSegmentation(0);
     fDESegmentations->Add(slatsegNB[i]);  
-    slatsegNB[i]->SetPadSize(0.713,10.); 
+    slatsegNB[i]->SetPadSize(1./1.4,10.); 
     slatsegNB[i]->SetPadDivision(ndiv);
     slatsegNB[i]->SetId(1);
     slatsegNB[i]->SetDAnod(AliMUONConstants::Pitch());
@@ -449,7 +452,7 @@ void AliMUONFactoryV2::BuildStation4()
   slatsegB[3]->SetPcbBoards(n7);
   slatsegB[3]->Init(0); // 0 detection element id
   slatsegNB[3]->SetPcbBoards(n7);
-  slatsegNB[4]->Init(0); // 0 detection element id
+  slatsegNB[3]->Init(0); // 0 detection element id
     
   // Type 223300 for 704, 709, 717, 722 in Ch7 (similar for Ch8) 
   // for the futur official numbering
@@ -497,91 +500,88 @@ void AliMUONFactoryV2::BuildStation4()
     //--------------------------------------------------------
     // Configuration for Chamber TC6/7  (Station 4) ----------           
 
-
-    fMUON->SetNsec(chamber,2);
-
     // cathode 0
     // type 122330
-    segmentation[0]->Add(id0+ 6, slatsegB[0]);
-    segmentation[0]->Add(id0+56, slatsegB[0]);
+    segmentation[0]->Add(id0+13, slatsegB[0]);
+    segmentation[0]->Add(id0   , slatsegB[0]);
   
     // type 112233
-    segmentation[0]->Add(id0+ 5, slatsegB[1]);
-    segmentation[0]->Add(id0+ 7, slatsegB[1]);  
-    segmentation[0]->Add(id0+55, slatsegB[1]);  
-    segmentation[0]->Add(id0+57, slatsegB[1]);
+    segmentation[0]->Add(id0+14, slatsegB[1]);
+    segmentation[0]->Add(id0+12, slatsegB[1]);  
+    segmentation[0]->Add(id0+25, slatsegB[1]);  
+    segmentation[0]->Add(id0+ 1, slatsegB[1]);
    
     // type 112230
-    segmentation[0]->Add(id0+ 4, slatsegB[2]);
-    segmentation[0]->Add(id0+ 8, slatsegB[2]);  
-    segmentation[0]->Add(id0+54, slatsegB[2]);  
-    segmentation[0]->Add(id0+58, slatsegB[2]);
+    segmentation[0]->Add(id0+15, slatsegB[2]);
+    segmentation[0]->Add(id0+11, slatsegB[2]);  
+    segmentation[0]->Add(id0+24, slatsegB[2]);  
+    segmentation[0]->Add(id0+ 2, slatsegB[2]);
 
     // type 222330 
+    segmentation[0]->Add(id0+16, slatsegB[3]);
+    segmentation[0]->Add(id0+10, slatsegB[3]);  
+    segmentation[0]->Add(id0+23, slatsegB[3]);
     segmentation[0]->Add(id0+ 3, slatsegB[3]);
-    segmentation[0]->Add(id0+ 9, slatsegB[3]);  
-    segmentation[0]->Add(id0+53, slatsegB[3]);
-    segmentation[0]->Add(id0+59, slatsegB[3]);
 
     // type 223300 
-    segmentation[0]->Add(id0+ 2, slatsegB[4]);
-    segmentation[0]->Add(id0+10, slatsegB[4]);  
-    segmentation[0]->Add(id0+52, slatsegB[4]);
-    segmentation[0]->Add(id0+60, slatsegB[4]);
+    segmentation[0]->Add(id0+17, slatsegB[4]);
+    segmentation[0]->Add(id0+ 9, slatsegB[4]);  
+    segmentation[0]->Add(id0+22, slatsegB[4]);
+    segmentation[0]->Add(id0+ 4, slatsegB[4]);
 
     // type 333000 
-    segmentation[0]->Add(id0+ 1, slatsegB[5]);
-    segmentation[0]->Add(id0+11, slatsegB[5]);  
-    segmentation[0]->Add(id0+51, slatsegB[5]);
-    segmentation[0]->Add(id0+61, slatsegB[5]);
+    segmentation[0]->Add(id0+18, slatsegB[5]);
+    segmentation[0]->Add(id0+ 8, slatsegB[5]);  
+    segmentation[0]->Add(id0+21, slatsegB[5]);
+    segmentation[0]->Add(id0+ 5, slatsegB[5]);
 
     // type 330000 
-    segmentation[0]->Add(id0   , slatsegB[6]);
-    segmentation[0]->Add(id0+12, slatsegB[6]);  
-    segmentation[0]->Add(id0+50, slatsegB[6]);
-    segmentation[0]->Add(id0+62, slatsegB[6]);
+    segmentation[0]->Add(id0+19, slatsegB[6]);
+    segmentation[0]->Add(id0+ 7, slatsegB[6]);  
+    segmentation[0]->Add(id0+20, slatsegB[6]);
+    segmentation[0]->Add(id0+ 6, slatsegB[6]);
     fMUON->SetSegmentationModel(chamber, 1, segmentation[0]);   
 
     // cathode 1
     // type 122330
-    segmentation[1]->Add(id0+ 6, slatsegNB[0]);
-    segmentation[1]->Add(id0+56, slatsegNB[0]);
+    segmentation[1]->Add(id0+13, slatsegNB[0]);
+    segmentation[1]->Add(id0   , slatsegNB[0]);
 
     // type 112233
-    segmentation[1]->Add(id0+ 5, slatsegNB[1]);
-    segmentation[1]->Add(id0+ 7, slatsegNB[1]);  
-    segmentation[1]->Add(id0+55, slatsegNB[1]);  
-    segmentation[1]->Add(id0+57, slatsegNB[1]);
+    segmentation[1]->Add(id0+14, slatsegNB[1]);
+    segmentation[1]->Add(id0+12, slatsegNB[1]);  
+    segmentation[1]->Add(id0+25, slatsegNB[1]);  
+    segmentation[1]->Add(id0+ 1, slatsegNB[1]);
   
     // type 112230
-    segmentation[1]->Add(id0+ 4, slatsegNB[2]);
-    segmentation[1]->Add(id0+ 8, slatsegNB[2]);  
-    segmentation[1]->Add(id0+54, slatsegNB[2]);  
-    segmentation[1]->Add(id0+58, slatsegNB[2]);
+    segmentation[1]->Add(id0+15, slatsegNB[2]);
+    segmentation[1]->Add(id0+11, slatsegNB[2]);  
+    segmentation[1]->Add(id0+24, slatsegNB[2]);  
+    segmentation[1]->Add(id0+ 2, slatsegNB[2]);
 
     // type 222330 
+    segmentation[1]->Add(id0+16, slatsegNB[3]);
+    segmentation[1]->Add(id0+10, slatsegNB[3]);  
+    segmentation[1]->Add(id0+23, slatsegNB[3]);
     segmentation[1]->Add(id0+ 3, slatsegNB[3]);
-    segmentation[1]->Add(id0+ 9, slatsegNB[3]);  
-    segmentation[1]->Add(id0+53, slatsegNB[3]);
-    segmentation[1]->Add(id0+59, slatsegNB[3]);
 
     // type 223300 
-    segmentation[1]->Add(id0+ 2, slatsegNB[4]);
-    segmentation[1]->Add(id0+10, slatsegNB[4]);  
-    segmentation[1]->Add(id0+52, slatsegNB[4]);
-    segmentation[1]->Add(id0+60, slatsegNB[4]);
+    segmentation[1]->Add(id0+17, slatsegNB[4]);
+    segmentation[1]->Add(id0+ 9, slatsegNB[4]);  
+    segmentation[1]->Add(id0+22, slatsegNB[4]);
+    segmentation[1]->Add(id0+ 4, slatsegNB[4]);
 
     // type 333000 
-    segmentation[1]->Add(id0+ 1, slatsegNB[5]);
-    segmentation[1]->Add(id0+11, slatsegNB[5]);  
-    segmentation[1]->Add(id0+51, slatsegNB[5]);
-    segmentation[1]->Add(id0+61, slatsegNB[5]);
+    segmentation[1]->Add(id0+18, slatsegNB[5]);
+    segmentation[1]->Add(id0+ 8, slatsegNB[5]);  
+    segmentation[1]->Add(id0+21, slatsegNB[5]);
+    segmentation[1]->Add(id0+ 5, slatsegNB[5]);
 
     // type 330000 
-    segmentation[1]->Add(id0   , slatsegNB[6]);
-    segmentation[1]->Add(id0+12, slatsegNB[6]);  
-    segmentation[1]->Add(id0+50, slatsegNB[6]);
-    segmentation[1]->Add(id0+62, slatsegNB[6]);
+    segmentation[1]->Add(id0+19, slatsegNB[6]);
+    segmentation[1]->Add(id0+ 7, slatsegNB[6]);  
+    segmentation[1]->Add(id0+20, slatsegNB[6]);
+    segmentation[1]->Add(id0+ 6, slatsegNB[6]);
     fMUON->SetSegmentationModel(chamber, 2, segmentation[1]);
 
     fMUON->SetResponseModel(chamber, fResponse0);      
@@ -613,7 +613,7 @@ void AliMUONFactoryV2::BuildStation5()
     slatsegB[i]->SetDAnod(AliMUONConstants::Pitch());
     slatsegNB[i] = new AliMUONSt345SlatSegmentation(0);
     fDESegmentations->Add(slatsegNB[i]);  
-    slatsegNB[i]->SetPadSize(0.713,10.); 
+    slatsegNB[i]->SetPadSize(1./1.4,10.); 
     slatsegNB[i]->SetPadDivision(ndiv);
     slatsegNB[i]->SetId(1);
     slatsegNB[i]->SetDAnod(AliMUONConstants::Pitch());
@@ -690,87 +690,84 @@ void AliMUONFactoryV2::BuildStation5()
     //--------------------------------------------------------
     // Configuration for Chamber TC8/9  (Station 5) ----------           
 
-
-    fMUON->SetNsec(chamber,2);
-
     // cathode 0
     // type 122330
-    segmentation[0]->Add(id0+ 6, slatsegB[0]);
-    segmentation[0]->Add(id0+56, slatsegB[0]);
+    segmentation[0]->Add(id0+13, slatsegB[0]);
+    segmentation[0]->Add(id0   , slatsegB[0]);
   
     // type 112233
-    segmentation[0]->Add(id0+ 4, slatsegB[1]);
-    segmentation[0]->Add(id0+ 5, slatsegB[1]);
-    segmentation[0]->Add(id0+ 7, slatsegB[1]);  
-    segmentation[0]->Add(id0+ 8, slatsegB[1]);  
-    segmentation[0]->Add(id0+54, slatsegB[1]);  
-    segmentation[0]->Add(id0+55, slatsegB[1]);  
-    segmentation[0]->Add(id0+57, slatsegB[1]);
-    segmentation[0]->Add(id0+58, slatsegB[1]);
+    segmentation[0]->Add(id0+15, slatsegB[1]);
+    segmentation[0]->Add(id0+14, slatsegB[1]);
+    segmentation[0]->Add(id0+12, slatsegB[1]);  
+    segmentation[0]->Add(id0+11, slatsegB[1]);  
+    segmentation[0]->Add(id0+24, slatsegB[1]);  
+    segmentation[0]->Add(id0+25, slatsegB[1]);  
+    segmentation[0]->Add(id0+ 1, slatsegB[1]);
+    segmentation[0]->Add(id0+ 2, slatsegB[1]);
 
     // type 333000 
-    segmentation[0]->Add(id0   , slatsegB[2]);
-    segmentation[0]->Add(id0+12, slatsegB[2]);  
-    segmentation[0]->Add(id0+50, slatsegB[2]);
-    segmentation[0]->Add(id0+62, slatsegB[2]);
+    segmentation[0]->Add(id0+19, slatsegB[2]);
+    segmentation[0]->Add(id0+ 7, slatsegB[2]);  
+    segmentation[0]->Add(id0+20, slatsegB[2]);
+    segmentation[0]->Add(id0+ 6, slatsegB[2]);
  
     // type 222333 
+    segmentation[0]->Add(id0+16, slatsegB[3]);
+    segmentation[0]->Add(id0+10, slatsegB[3]);  
+    segmentation[0]->Add(id0+23, slatsegB[3]);
     segmentation[0]->Add(id0+ 3, slatsegB[3]);
-    segmentation[0]->Add(id0+ 9, slatsegB[3]);  
-    segmentation[0]->Add(id0+53, slatsegB[3]);
-    segmentation[0]->Add(id0+59, slatsegB[3]);
  
     // type 223330 
-    segmentation[0]->Add(id0+ 2, slatsegB[4]);
-    segmentation[0]->Add(id0+10, slatsegB[4]);  
-    segmentation[0]->Add(id0+52, slatsegB[4]);
-    segmentation[0]->Add(id0+60, slatsegB[4]);
+    segmentation[0]->Add(id0+17, slatsegB[4]);
+    segmentation[0]->Add(id0+ 9, slatsegB[4]);  
+    segmentation[0]->Add(id0+22, slatsegB[4]);
+    segmentation[0]->Add(id0+ 4, slatsegB[4]);
   
     // type 333300 
-    segmentation[0]->Add(id0+ 1, slatsegB[5]);
-    segmentation[0]->Add(id0+11, slatsegB[5]);  
-    segmentation[0]->Add(id0+51, slatsegB[5]);
-    segmentation[0]->Add(id0+61, slatsegB[5]);
+    segmentation[0]->Add(id0+18, slatsegB[5]);
+    segmentation[0]->Add(id0+ 8, slatsegB[5]);  
+    segmentation[0]->Add(id0+21, slatsegB[5]);
+    segmentation[0]->Add(id0+ 5, slatsegB[5]);
     fMUON->SetSegmentationModel(chamber, 1, segmentation[0]);
 
     // cathode 1
     // type 122330
-    segmentation[1]->Add(id0+ 6, slatsegNB[0]);
-    segmentation[1]->Add(id0+56, slatsegNB[0]);
+    segmentation[1]->Add(id0+13, slatsegNB[0]);
+    segmentation[1]->Add(id0   , slatsegNB[0]);
   
     // type 112233
-    segmentation[1]->Add(id0+ 4, slatsegNB[1]);
-    segmentation[1]->Add(id0+ 5, slatsegNB[1]);
-    segmentation[1]->Add(id0+ 7, slatsegNB[1]);  
-    segmentation[1]->Add(id0+ 8, slatsegNB[1]);  
-    segmentation[1]->Add(id0+54, slatsegNB[1]);  
-    segmentation[1]->Add(id0+55, slatsegNB[1]);  
-    segmentation[1]->Add(id0+57, slatsegNB[1]);
-    segmentation[1]->Add(id0+58, slatsegNB[1]);
+    segmentation[1]->Add(id0+15, slatsegNB[1]);
+    segmentation[1]->Add(id0+14, slatsegNB[1]);
+    segmentation[1]->Add(id0+12, slatsegNB[1]);  
+    segmentation[1]->Add(id0+11, slatsegNB[1]);  
+    segmentation[1]->Add(id0+24, slatsegNB[1]);  
+    segmentation[1]->Add(id0+25, slatsegNB[1]);  
+    segmentation[1]->Add(id0+ 1, slatsegNB[1]);
+    segmentation[1]->Add(id0+ 2, slatsegNB[1]);
 
     // type 333000 
-    segmentation[1]->Add(id0   , slatsegNB[2]);
-    segmentation[1]->Add(id0+12, slatsegNB[2]);  
-    segmentation[1]->Add(id0+50, slatsegNB[2]);
-    segmentation[1]->Add(id0+62, slatsegNB[2]);
+    segmentation[1]->Add(id0+19 , slatsegNB[2]);
+    segmentation[1]->Add(id0+ 7, slatsegNB[2]);  
+    segmentation[1]->Add(id0+20, slatsegNB[2]);
+    segmentation[1]->Add(id0+ 6, slatsegNB[2]);
  
     // type 222333 
+    segmentation[1]->Add(id0+16, slatsegNB[3]);
+    segmentation[1]->Add(id0+10, slatsegNB[3]);  
+    segmentation[1]->Add(id0+23, slatsegNB[3]);
     segmentation[1]->Add(id0+ 3, slatsegNB[3]);
-    segmentation[1]->Add(id0+ 9, slatsegNB[3]);  
-    segmentation[1]->Add(id0+53, slatsegNB[3]);
-    segmentation[1]->Add(id0+59, slatsegNB[3]);
  
     // type 223330 
-    segmentation[1]->Add(id0+ 2, slatsegNB[4]);
-    segmentation[1]->Add(id0+10, slatsegNB[4]);  
-    segmentation[1]->Add(id0+52, slatsegNB[4]);
-    segmentation[1]->Add(id0+60, slatsegNB[4]);
+    segmentation[1]->Add(id0+17, slatsegNB[4]);
+    segmentation[1]->Add(id0+ 9, slatsegNB[4]);  
+    segmentation[1]->Add(id0+22, slatsegNB[4]);
+    segmentation[1]->Add(id0+ 4, slatsegNB[4]);
   
     // type 333300 
-    segmentation[1]->Add(id0+ 1, slatsegNB[5]);
-    segmentation[1]->Add(id0+11, slatsegNB[5]);  
-    segmentation[1]->Add(id0+51, slatsegNB[5]);
-    segmentation[1]->Add(id0+61, slatsegNB[5]);
+    segmentation[1]->Add(id0+18, slatsegNB[5]);
+    segmentation[1]->Add(id0+ 8, slatsegNB[5]);  
+    segmentation[1]->Add(id0+21, slatsegNB[5]);
+    segmentation[1]->Add(id0+ 5, slatsegNB[5]);
     fMUON->SetSegmentationModel(chamber, 2, segmentation[1]);
         
     fMUON->SetResponseModel(chamber, fResponse0);           
@@ -832,7 +829,7 @@ void AliMUONFactoryV2::BuildStation6()
 
       // chamber 8 7 1 0 cathode 1
       for (Int_t i=0; i<6; i++) nStrip[i]=8;
-      nStrip[7]=16;
+      nStrip[6]=16;
       for (Int_t i=0; i<7; i++) stripYsize[i]=stripLength[3];  
       for (Int_t i=0; i<7; i++) stripXsize[i]=stripWidth[2];
       trigSegY[8]->Init(0,nStrip,stripYsize,stripXsize,0.);  
@@ -880,7 +877,7 @@ void AliMUONFactoryV2::BuildStation6()
       for (Int_t i=5; i<6; i++) nStrip[5]=8;  
       nStrip[6]=16;  
       stripYsize[0]=stripLength[2];
-      for (Int_t i=1; i<8; i++) stripYsize[i]=stripLength[3];
+      for (Int_t i=1; i<7; i++) stripYsize[i]=stripLength[3];
       for (Int_t i=0; i<5; i++) stripXsize[i]=stripWidth[1];
       for (Int_t i=5; i<7; i++) stripXsize[i]=stripWidth[2];
       trigSegY[5]->Init(0,nStrip,stripYsize,stripXsize,stripLength[0]);  
@@ -917,7 +914,6 @@ void AliMUONFactoryV2::BuildStation6()
       chamberSeg[0] = new AliMUONGeometrySegmentation(fMUON->Chamber(chamber).GetGeometry());
       chamberSeg[1] = new AliMUONGeometrySegmentation(fMUON->Chamber(chamber).GetGeometry());
 
-      fMUON->SetNsec(chamber,2);
       Int_t icount=chamber-10;  // chamber counter (0 1 2 3)
       Int_t id0=(10+icount+1)*100;
 
@@ -967,14 +963,14 @@ void AliMUONFactoryV2::Build(AliMUON* where, const char* what)
     fMUON->SetMaxStepGas(0.1);
     fMUON->SetMaxStepAlu(0.1);
 
-    // Build all stations
+    // Build stations
     BuildCommon();
-    BuildStation1();
-    BuildStation2();
-    BuildStation3();
-    BuildStation4();
-    BuildStation5();
-    BuildStation6();
+    if (IsGeometryDefined(0))  BuildStation1();
+    if (IsGeometryDefined(2))  BuildStation2();
+    if (IsGeometryDefined(4))  BuildStation3();
+    if (IsGeometryDefined(6))  BuildStation4();
+    if (IsGeometryDefined(8))  BuildStation5();
+    if (IsGeometryDefined(10)) BuildStation6();
   } 
   else
     AliDebug(0,"Non default version of MUON selected. You have to construct yourself the MUON elements !!");
@@ -988,8 +984,6 @@ void AliMUONFactoryV2::BuildStation(AliMUON* where, Int_t stationNumber)
   //
   // Version 0
   //
-  // First define the number of planes that are segmented (1 or 2) by a call
-  // to SetNsec.
   // Then chose for each chamber (chamber plane) the segmentation
   // and response model.
   // They should be equal for the two chambers of each station. In a future