Update TriggerSegmention (Christian)
authorpcrochet <pcrochet@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 22 Feb 2005 14:33:43 +0000 (14:33 +0000)
committerpcrochet <pcrochet@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 22 Feb 2005 14:33:43 +0000 (14:33 +0000)
MUON/AliMUONFactoryV2.cxx
MUON/AliMUONTest.cxx
MUON/AliMUONTriggerSegmentation.cxx
MUON/AliMUONTriggerSegmentation.h

index e2ae70d..fd0df7c 100644 (file)
@@ -95,8 +95,8 @@ void AliMUONFactoryV2::BuildCommon()
   fResponse0->SetMaxAdc(4096);
   fResponse0->SetSaturation(3000);
   fResponse0->SetZeroSuppression(6);
-}      
-       
+}       
+        
 //__________________________________________________________________________
 void AliMUONFactoryV2::BuildStation1() 
 {
@@ -134,7 +134,7 @@ void AliMUONFactoryV2::BuildStation1()
 
     segmentation[0] = new AliMUONGeometrySegmentation(fMUON->Chamber(chamber).GetGeometry());
     segmentation[1] = new AliMUONGeometrySegmentation(fMUON->Chamber(chamber).GetGeometry());
-       
+        
     // id detection elt for chamber 1
     Int_t id0 = (chamber+1)*100;
 
@@ -148,8 +148,8 @@ void AliMUONFactoryV2::BuildStation1()
     segmentation[0]->Add(id0,      bendSt1);
     segmentation[0]->Add(id0 +  1, nonbendSt1);
     segmentation[0]->Add(id0 + 50, bendSt1);
-    segmentation[0]->Add(id0 + 51, nonbendSt1);        
-    fMUON->SetSegmentationModel(chamber, 1, segmentation[0]);  
+    segmentation[0]->Add(id0 + 51, nonbendSt1); 
+    fMUON->SetSegmentationModel(chamber, 1, segmentation[0]);   
 
     // cathode 1
     segmentation[1]->Add(id0,      nonbendSt1);
@@ -157,10 +157,10 @@ void AliMUONFactoryV2::BuildStation1()
     segmentation[1]->Add(id0 + 50, nonbendSt1);
     segmentation[1]->Add(id0 + 51, bendSt1);
     fMUON->SetSegmentationModel(chamber, 2, segmentation[1]);
-       
-    fMUON->SetResponseModel(chamber, responseSt1); // special response     
+        
+    fMUON->SetResponseModel(chamber, responseSt1); // special response      
     fMUON->Chamber(chamber).SetChargeCorrel(0.11); // 11% charge spread
-       
+        
   }
 }
 
@@ -185,7 +185,7 @@ void AliMUONFactoryV2::BuildStation2()
 
     segmentation[0] = new AliMUONGeometrySegmentation(fMUON->Chamber(chamber).GetGeometry());
     segmentation[1] = new AliMUONGeometrySegmentation(fMUON->Chamber(chamber).GetGeometry());
-       
+        
     // id detection elt for chamber 1
     Int_t id0 = (chamber+1)*100;
 
@@ -199,8 +199,8 @@ void AliMUONFactoryV2::BuildStation2()
     segmentation[0]->Add(id0,      bendSt2);
     segmentation[0]->Add(id0 +  1, nonbendSt2);
     segmentation[0]->Add(id0 + 50, bendSt2);
-    segmentation[0]->Add(id0 + 51, nonbendSt2);        
-    fMUON->SetSegmentationModel(chamber, 1, segmentation[0]);  
+    segmentation[0]->Add(id0 + 51, nonbendSt2); 
+    fMUON->SetSegmentationModel(chamber, 1, segmentation[0]);   
 
     // cathode 1
     segmentation[1]->Add(id0,      nonbendSt2);
@@ -208,14 +208,14 @@ void AliMUONFactoryV2::BuildStation2()
     segmentation[1]->Add(id0 + 50, nonbendSt2);
     segmentation[1]->Add(id0 + 51, bendSt2);
     fMUON->SetSegmentationModel(chamber, 2, segmentation[1]);
-       
-    fMUON->SetResponseModel(chamber, fResponse0); // normal response       
+        
+    fMUON->SetResponseModel(chamber, fResponse0); // normal response        
     fMUON->Chamber(chamber).SetChargeCorrel(0.11); // 11% charge spread
-       
+        
   }
-}      
-       
-       
+}       
+        
+        
 //__________________________________________________________________________
 void AliMUONFactoryV2::BuildStation3() 
 {
@@ -288,7 +288,7 @@ void AliMUONFactoryV2::BuildStation3()
 
     segmentation[0] = new AliMUONGeometrySegmentation(fMUON->Chamber(chamber).GetGeometry());
     segmentation[1] = new AliMUONGeometrySegmentation(fMUON->Chamber(chamber).GetGeometry());
-       
+        
     // id detection elt for chamber 1
     Int_t id0 = (chamber+1)*100;
 
@@ -321,7 +321,7 @@ void AliMUONFactoryV2::BuildStation3()
     segmentation[0]->Add(id0+53, slatsegB[0]);
     segmentation[0]->Add(id0+54, slatsegB[0]);     
     segmentation[0]->Add(id0+55, slatsegB[0]);
-    fMUON->SetSegmentationModel(chamber, 1, segmentation[0]);  
+    fMUON->SetSegmentationModel(chamber, 1, segmentation[0]);   
 
     // cathode 1
     // type 220000
@@ -353,7 +353,7 @@ void AliMUONFactoryV2::BuildStation3()
   }
 }
 
-       
+        
 //__________________________________________________________________________
 void AliMUONFactoryV2::BuildStation4() 
 {
@@ -462,7 +462,7 @@ void AliMUONFactoryV2::BuildStation4()
 
     segmentation[0] = new AliMUONGeometrySegmentation(fMUON->Chamber(chamber).GetGeometry());
     segmentation[1] = new AliMUONGeometrySegmentation(fMUON->Chamber(chamber).GetGeometry());
-       
+        
     // id detection elt for chamber 1
     Int_t id0 = (chamber+1)*100;
 
@@ -512,7 +512,7 @@ void AliMUONFactoryV2::BuildStation4()
     segmentation[0]->Add(id0+12, slatsegB[6]);  
     segmentation[0]->Add(id0+50, slatsegB[6]);
     segmentation[0]->Add(id0+62, slatsegB[6]);
-    fMUON->SetSegmentationModel(chamber, 1, segmentation[0]);  
+    fMUON->SetSegmentationModel(chamber, 1, segmentation[0]);   
 
     // cathode 1
     // type 122330
@@ -563,7 +563,7 @@ void AliMUONFactoryV2::BuildStation4()
 
 //__________________________________________________________________________
 void AliMUONFactoryV2::BuildStation5() 
-{      
+{       
   //--------------------------------------------------------
   // Configuration for Chamber TC9/10  (Station 5) ---------           
   //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -742,294 +742,182 @@ void AliMUONFactoryV2::BuildStation5()
     segmentation[1]->Add(id0+51, slatsegNB[5]);
     segmentation[1]->Add(id0+61, slatsegNB[5]);
     fMUON->SetSegmentationModel(chamber, 2, segmentation[1]);
-       
-    fMUON->SetResponseModel(chamber, fResponse0);          
+        
+    fMUON->SetResponseModel(chamber, fResponse0);           
     fMUON->Chamber(chamber).SetChargeCorrel(0.11); // 11% charge spread
   }
 }
 
 //__________________________________________________________________________
 void AliMUONFactoryV2::BuildStation6() 
-{      
+{       
  // Create Trigger geometry segmentation for given chamber and cathod
 
  
-  AliMUONGeometrySegmentation *chamberSeg[2];
+    AliMUONGeometrySegmentation *chamberSeg[2];
 // Cluster-size off
-       AliMUONResponseTrigger* responseTrigger0 =  new AliMUONResponseTrigger;
+        AliMUONResponseTrigger* responseTrigger0 =  new AliMUONResponseTrigger;
 // Cluster-size on  
-// AliMUONResponseTriggerV1* responseTrigger0 =  new AliMUONResponseTriggerV1;
-
-  for (Int_t chamber = 10; chamber < 14; chamber++) {
-
-    //Trigger Segmentations
-    AliMUONTriggerSegmentation *trigSegX[9]; 
-    AliMUONTriggerSegmentation *trigSegY[9]; 
-    for(Int_t i=0; i<9; i++) {
-      trigSegX[i] = new AliMUONTriggerSegmentation(0);
-      trigSegY[i] = new AliMUONTriggerSegmentation(1);
-    }
-
-    AliMUONChamber *iChamber, *iChamber1;
-    iChamber1 = &fMUON->Chamber(10);
-    iChamber  = &fMUON->Chamber(chamber);
-    Float_t zpos1= - iChamber1->Z();  
-    Float_t zpos = - iChamber->Z();         
-    Float_t zRatio = zpos / zpos1;
-
-    // init
-    Int_t nStrip[7]={0,0,0,0,0,0,0};     
-    Float_t stripYsize[7]={0.,0.,0.,0.,0.,0.,0.};
-    Float_t stripXsize[7]={0.,0.,0.,0.,0.,0.,0.};
-
-    // chamber 8 cathode 0
-    for (Int_t i=0; i<7; i++) nStrip[i]=16;
-    for (Int_t i=0; i<7; i++) 
-      stripYsize[i]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-    for (Int_t i=0; i<6; i++) 
-      stripXsize[i]=AliMUONTriggerConstants::StripLength(1)*zRatio;
-    stripXsize[6]=AliMUONTriggerConstants::StripLength(2)*zRatio; 
-    trigSegX[8]->Init(0,1,nStrip,stripYsize,stripXsize,0.);  
-    // chamber 8 cathode 1
-    for (Int_t i=0; i<6; i++) nStrip[i]=8;
-    nStrip[6]=16;
-    for (Int_t i=0; i<7; i++) 
-      stripYsize[i]=AliMUONTriggerConstants::StripLength(3)*zRatio;
-    for (Int_t i=0; i<7; i++) 
-      stripXsize[i]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-    trigSegY[8]->Init(0,1,nStrip,stripYsize,stripXsize,0.);  
+//  AliMUONResponseTriggerV1* responseTrigger0 =  new AliMUONResponseTriggerV1;
+
+    for (Int_t chamber = 10; chamber < 14; chamber++) {
+
+      //Trigger Segmentation
+      AliMUONTriggerSegmentation *trigSegX[9]; 
+      AliMUONTriggerSegmentation *trigSegY[9]; 
+      for(Int_t i=0; i<9; i++) {
+        trigSegX[i] = new AliMUONTriggerSegmentation(1);
+        trigSegY[i] = new AliMUONTriggerSegmentation(0);
+        trigSegX[i]->SetLineNumber(9-i);    
+        trigSegY[i]->SetLineNumber(9-i);    
+      }
+
+      AliMUONChamber *iChamber, *iChamber1;
+      iChamber1 = &fMUON->Chamber(10);
+      iChamber  = &fMUON->Chamber(chamber);
+      Float_t zpos1= - iChamber1->Z();  
+      Float_t zpos = - iChamber->Z();        
+      Float_t zRatio = zpos / zpos1;
+
+      // init
+      Float_t stripWidth[3]={0.,0.,0.};     // 1.0625 2.125 4.25
+      Float_t stripLength[4]={0.,0.,0.,0.}; // 17. 34. 51. 68.
+      for (Int_t i=0; i<3; i++) 
+        stripWidth[i]=AliMUONTriggerConstants::StripWidth(i)*zRatio;
+      for (Int_t i=0; i<4; i++) 
+        stripLength[i]=AliMUONTriggerConstants::StripLength(i)*zRatio;
+      Int_t nStrip[7]={0,0,0,0,0,0,0};    
+      Float_t stripYsize[7]={0.,0.,0.,0.,0.,0.,0.};
+      Float_t stripXsize[7]={0.,0.,0.,0.,0.,0.,0.};
+
+      // chamber 8 0 cathode 0
+      for (Int_t i=0; i<7; i++) nStrip[i]=16;
+      for (Int_t i=0; i<7; i++) stripYsize[i]=stripWidth[2];
+      for (Int_t i=0; i<6; i++) stripXsize[i]=stripLength[1];
+      stripXsize[6]=stripLength[2];
+      trigSegX[8]->Init(0,nStrip,stripYsize,stripXsize,0.); 
+      trigSegX[0]->Init(0,nStrip,stripYsize,stripXsize,0.); 
+
+      // chamber 8 7 1 0 cathode 1
+      for (Int_t i=0; i<6; i++) nStrip[i]=8;
+      nStrip[7]=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.);  
+      trigSegY[7]->Init(0,nStrip,stripYsize,stripXsize,0.);
+      trigSegY[1]->Init(0,nStrip,stripYsize,stripXsize,0.);
+      trigSegY[0]->Init(0,nStrip,stripYsize,stripXsize,0.);
  
-    // chamber 7 cathode 0
-    for (Int_t i=0; i<6; i++) nStrip[i]=32;
-    nStrip[7]=16;  
-    for (Int_t i=0; i<6; i++) 
-      stripYsize[i]=AliMUONTriggerConstants::StripWidth(1)*zRatio;
-    stripYsize[6]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-    for (Int_t i=0; i<6; i++) 
-      stripXsize[i]=AliMUONTriggerConstants::StripLength(1)*zRatio;
-    stripXsize[6]=AliMUONTriggerConstants::StripLength(2)*zRatio;
-    trigSegX[7]->Init(0,2,nStrip,stripYsize,stripXsize,0.);  
-
-    // chamber 7 cathode 1
-    for (Int_t i=0; i<6; i++) nStrip[i]=8;
-    nStrip[6]=16;
-    for (Int_t i=0; i<7; i++) 
-      stripYsize[i]=AliMUONTriggerConstants::StripLength(3)*zRatio;
-    for (Int_t i=0; i<7; i++) 
-      stripXsize[i]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-    trigSegY[7]->Init(0,2,nStrip,stripYsize,stripXsize,0.);  
-    // chamber 6 cathode 0
-    for (Int_t i=0; i<6; i++) nStrip[i]=32;
-    nStrip[7]=16;  
-    for (Int_t i=0; i<6; i++) 
-      stripYsize[i]=AliMUONTriggerConstants::StripWidth(1)*zRatio;
-    stripYsize[6]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-    for (Int_t i=0; i<6; i++) 
-      stripXsize[i]=AliMUONTriggerConstants::StripLength(1)*zRatio;
-    stripXsize[6]=AliMUONTriggerConstants::StripLength(2)*zRatio;
-    trigSegX[6]->Init(0,3,nStrip,stripYsize,stripXsize,0.);  
-
-    // chamber 6 cathode 1
-    for (Int_t i=0; i<5; i++) nStrip[i]=16;
-    nStrip[5]=8;
-    nStrip[6]=16;  
-    for (Int_t i=0; i<7; i++) 
-      stripYsize[i]=AliMUONTriggerConstants::StripLength(3)*zRatio;  
-    for (Int_t i=0; i<5; i++) 
-      stripXsize[i]=AliMUONTriggerConstants::StripWidth(1)*zRatio;
-    stripXsize[5]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-    stripXsize[6]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-    trigSegY[6]->Init(0,3,nStrip,stripYsize,stripXsize,0.);  
-
-    // chamber 5 cathode 0
-    nStrip[0]=48;
-    for (Int_t i=1; i<3; i++) nStrip[i]=64;  
-    for (Int_t i=3; i<6; i++) nStrip[i]=32;
-    nStrip[6]=16;
-    for (Int_t i=0; i<3; i++) 
-      stripYsize[i]=AliMUONTriggerConstants::StripWidth(0)*zRatio;
-    for (Int_t i=3; i<6; i++) 
-      stripYsize[i]=AliMUONTriggerConstants::StripWidth(1)*zRatio;
-    stripYsize[6]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-    for (Int_t i=0; i<6; i++) 
-      stripXsize[i]=AliMUONTriggerConstants::StripLength(1)*zRatio;
-    stripXsize[6]=AliMUONTriggerConstants::StripLength(2)*zRatio;
-    trigSegX[5]->Init(0,4,nStrip,stripYsize,stripXsize,AliMUONTriggerConstants::StripLength(0)*zRatio);  
-
-    // chamber 5 cathode 1
-    for (Int_t i=0; i<5; i++) nStrip[i]=16;
-    nStrip[5]=8;  
-    nStrip[6]=16;
-    stripYsize[0]=AliMUONTriggerConstants::StripLength(2)*zRatio;
-    for (Int_t i=1; i<7; i++) 
-      stripYsize[i]=AliMUONTriggerConstants::StripLength(3)*zRatio;
-    for (Int_t i=0; i<5; i++) 
-      stripXsize[i]=AliMUONTriggerConstants::StripWidth(1)*zRatio;
-    stripXsize[5]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-    stripXsize[6]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-    trigSegY[5]->Init(0,4,nStrip,stripYsize,stripXsize,AliMUONTriggerConstants::StripLength(0)*zRatio);  
-
-    // chamber 4 cathode 0
-    nStrip[0]=0;
-    for (Int_t i=1; i<3; i++) nStrip[i]=64;  
-    for (Int_t i=3; i<6; i++) nStrip[i]=32;  
-    nStrip[6]=16;
-    stripYsize[0]=0.;
-    for (Int_t i=1; i<3; i++) 
-      stripYsize[i]=AliMUONTriggerConstants::StripWidth(0)*zRatio;
-    for (Int_t i=3; i<6; i++) 
-      stripYsize[i]=AliMUONTriggerConstants::StripWidth(1)*zRatio;
-    stripYsize[6]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-    stripXsize[0]=0;  
-    stripXsize[1]=AliMUONTriggerConstants::StripLength(0)*zRatio;
-    for (Int_t i=2; i<6; i++) 
-      stripXsize[i]=AliMUONTriggerConstants::StripLength(1)*zRatio;
-    stripXsize[6]=AliMUONTriggerConstants::StripLength(2)*zRatio;
-    trigSegX[4]->Init(0,5,nStrip,stripYsize,stripXsize,0.);  
-
-    // chamber 4 cathode 1
-    nStrip[0]=0;  
-    nStrip[1]=8;  
-    for (Int_t i=2; i<5; i++) nStrip[i]=16;
-    nStrip[5]=8;
-    nStrip[6]=16;  
-    stripYsize[0]=0.;  
-    for (Int_t i=1; i<7; i++) 
-      stripYsize[i]=AliMUONTriggerConstants::StripLength(3)*zRatio;
-    stripXsize[0]=0.;
-    for (Int_t i=1; i<5; i++) 
-      stripXsize[i]=AliMUONTriggerConstants::StripWidth(1)*zRatio;
-    stripXsize[5]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-    stripXsize[6]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-    trigSegY[4]->Init(0,5,nStrip,stripYsize,stripXsize,0.);
-
-    // chamber 3 cathode 0
-    nStrip[0]=48;
-    for (Int_t i=1; i<3; i++) nStrip[i]=64;  
-    for (Int_t i=3; i<6; i++) nStrip[i]=32;
-    nStrip[6]=16;
-    for (Int_t i=0; i<3; i++) 
-      stripYsize[i]=AliMUONTriggerConstants::StripWidth(0)*zRatio;
-    for (Int_t i=3; i<6; i++) 
-      stripYsize[i]=AliMUONTriggerConstants::StripWidth(1)*zRatio;
-    stripYsize[6]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-    for (Int_t i=0; i<6; i++) 
-      stripXsize[i]=AliMUONTriggerConstants::StripLength(1)*zRatio;
-    stripXsize[6]=AliMUONTriggerConstants::StripLength(2)*zRatio;
-    trigSegX[3]->Init(0,6,nStrip,stripYsize,stripXsize,0.);  
-
-    // chamber 3 cathode 1
-    for (Int_t i=0; i<5; i++) nStrip[i]=16;
-    nStrip[5]=8;  
-    nStrip[6]=16;
-    stripYsize[0]=AliMUONTriggerConstants::StripLength(2)*zRatio;
-    for (Int_t i=1; i<7; i++) 
-      stripYsize[i]=AliMUONTriggerConstants::StripLength(3)*zRatio;
-    for (Int_t i=0; i<5; i++) 
-      stripXsize[i]=AliMUONTriggerConstants::StripWidth(1)*zRatio;
-    stripXsize[5]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-    stripXsize[6]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-    trigSegY[3]->Init(0,6,nStrip,stripYsize,stripXsize,0.);  
-
-    // chamber 2 cathode 0
-    for (Int_t i=0; i<6; i++) nStrip[i]=32;
-    nStrip[7]=16;  
-    for (Int_t i=0; i<6; i++) 
-      stripYsize[i]=AliMUONTriggerConstants::StripWidth(1)*zRatio;
-    stripYsize[6]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-    for (Int_t i=0; i<6; i++) 
-      stripXsize[i]=AliMUONTriggerConstants::StripLength(1)*zRatio;
-    stripXsize[6]=AliMUONTriggerConstants::StripLength(2)*zRatio;
-    trigSegX[2]->Init(0,7,nStrip,stripYsize,stripXsize,0.);  
-
-    // chamber 2 cathode 1
-    for (Int_t i=0; i<5; i++) nStrip[i]=16;
-    nStrip[5]=8;
-    nStrip[6]=16;  
-    for (Int_t i=0; i<7; i++) 
-      stripYsize[i]=AliMUONTriggerConstants::StripLength(3)*zRatio;  
-    for (Int_t i=0; i<5; i++) 
-      stripXsize[i]=AliMUONTriggerConstants::StripWidth(1)*zRatio;
-    stripXsize[5]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-    stripXsize[6]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-    trigSegY[2]->Init(0,7,nStrip,stripYsize,stripXsize,0.);  
-
-    // chamber 1 cathode 0
-    for (Int_t i=0; i<6; i++) nStrip[i]=32;
-    nStrip[7]=16;  
-    for (Int_t i=0; i<6; i++) 
-      stripYsize[i]=AliMUONTriggerConstants::StripWidth(1)*zRatio;
-    stripYsize[6]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-    for (Int_t i=0; i<6; i++) 
-      stripXsize[i]=AliMUONTriggerConstants::StripLength(1)*zRatio;
-    stripXsize[6]=AliMUONTriggerConstants::StripLength(2)*zRatio;
-    trigSegX[1]->Init(0,8,nStrip,stripYsize,stripXsize,0.);  
-
-    // chamber 1 cathode 1
-    for (Int_t i=0; i<6; i++) nStrip[i]=8;
-    nStrip[6]=16;
-    for (Int_t i=0; i<7; i++) 
-      stripYsize[i]=AliMUONTriggerConstants::StripLength(3)*zRatio;
-    for (Int_t i=0; i<7; i++) 
-      stripXsize[i]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-    trigSegY[1]->Init(0,8,nStrip,stripYsize,stripXsize,0.);  
-
-    // chamber 0 cathode 0
-    for (Int_t i=0; i<7; i++) nStrip[i]=16;
-    for (Int_t i=0; i<7; i++) 
-      stripYsize[i]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-    for (Int_t i=0; i<6; i++) 
-      stripXsize[i]=AliMUONTriggerConstants::StripLength(1)*zRatio;
-    stripXsize[6]=AliMUONTriggerConstants::StripLength(2)*zRatio; 
-    trigSegX[0]->Init(0,9,nStrip,stripYsize,stripXsize,0.);  
-    // chamber 0 cathode 1
-    for (Int_t i = 0; i < 6; i++) nStrip[i]=8;
-    nStrip[6]=16;
-    for (Int_t i = 0; i < 7; i++) 
-      stripYsize[i]=AliMUONTriggerConstants::StripLength(3)*zRatio;
-    for (Int_t i = 0; i < 7; i++) 
-      stripXsize[i]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-    trigSegY[0]->Init(0,9,nStrip,stripYsize,stripXsize,0.);
-
-
-    chamberSeg[0] = new AliMUONGeometrySegmentation(fMUON->Chamber(chamber).GetGeometry());
-    chamberSeg[1] = new AliMUONGeometrySegmentation(fMUON->Chamber(chamber).GetGeometry());
-
-    fMUON->SetNsec(chamber,2);
-
-    Int_t id0    = (chamber+1)*100;
-
-    //  printf("in CreateTriggerSegmentation here 0 id0=%i \n",id0);  
-
-    for (Int_t i = 0; i < 9; i++) {       
-
-      // cathode 0
-      chamberSeg[0]->Add(id0+i,     trigSegX[i]);
-      chamberSeg[0]->Add(id0+50+i,  trigSegX[i]);
-      fMUON->SetSegmentationModel(chamber, 1, chamberSeg[0]);
-
-      // cathode 1
-      chamberSeg[1]->Add(id0+i,     trigSegY[i]);
-      chamberSeg[1]->Add(id0+50+i,  trigSegY[i]);
-      fMUON->SetSegmentationModel(chamber, 2, chamberSeg[1]);
-
-    }
-
-    fMUON->SetResponseModel(chamber, responseTrigger0);      
-    fMUON->Chamber(chamber).SetChargeCorrel(0); // same charge on cathodes
+      // chamber 7 6 2 1 cathode 0
+      for (Int_t i=0; i<6; i++) nStrip[i]=32;
+      nStrip[6]=16;  
+      for (Int_t i=0; i<6; i++) stripYsize[i]=stripWidth[1];
+      stripYsize[6]=stripWidth[2];
+      for (Int_t i=0; i<6; i++) stripXsize[i]=stripLength[1];
+      stripXsize[6]=stripLength[2];
+      trigSegX[7]->Init(0,nStrip,stripYsize,stripXsize,0.);  
+      trigSegX[6]->Init(0,nStrip,stripYsize,stripXsize,0.);
+      trigSegX[2]->Init(0,nStrip,stripYsize,stripXsize,0.);  
+      trigSegX[1]->Init(0,nStrip,stripYsize,stripXsize,0.);
+
+      // chamber 6 2 cathode 1
+      for (Int_t i=0; i<5; i++) nStrip[i]=16;
+      for (Int_t i=5; i<6; i++) nStrip[i]=8;
+      nStrip[6]=16;
+      for (Int_t i=0; 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[6]->Init(0,nStrip,stripYsize,stripXsize,0.);  
+      trigSegY[2]->Init(0,nStrip,stripYsize,stripXsize,0.);  
+
+      // chamber 5 3 cathode 0
+      nStrip[0]=48;
+      for (Int_t i=1; i<3; i++) nStrip[i]=64;
+      for (Int_t i=3; i<6; i++) nStrip[i]=32;
+      nStrip[6]=16;  
+      for (Int_t i=0; i<3; i++) stripYsize[i]=stripWidth[0];
+      for (Int_t i=3; i<6; i++) stripYsize[i]=stripWidth[1];
+      stripYsize[6]=stripWidth[2];
+      for (Int_t i=0; i<6; i++) stripXsize[i]=stripLength[1];
+      stripXsize[6]=stripLength[2];
+      trigSegX[5]->Init(0,nStrip,stripYsize,stripXsize,stripLength[0]);  
+      trigSegX[3]->Init(0,nStrip,stripYsize,stripXsize,0.);
+
+      // chamber 5 3 cathode 1
+      for (Int_t i=0; i<5; i++) nStrip[i]=16;
+      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=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]);  
+      trigSegY[3]->Init(0,nStrip,stripYsize,stripXsize,0.);
+
+      // chamber 4 cathode 0
+      nStrip[0]=0;
+      for (Int_t i=1; i<3; i++) nStrip[i]=64;  
+      for (Int_t i=3; i<6; i++) nStrip[i]=32;  
+      nStrip[6]=16;
+      stripYsize[0]=0.;
+      for (Int_t i=1; i<3; i++) stripYsize[i]=stripWidth[0];
+      for (Int_t i=3; i<6; i++) stripYsize[i]=stripWidth[1];
+      stripYsize[6]=stripWidth[2];
+      stripXsize[0]=0;  
+      stripXsize[1]=stripLength[0];  
+      for (Int_t i=2; i<6; i++) stripXsize[i]=stripLength[1];
+      stripXsize[6]=stripLength[2];
+      trigSegX[4]->Init(0,nStrip,stripYsize,stripXsize,0.);  
+
+      // chamber 4 cathode 1
+      nStrip[0]=0;  
+      nStrip[1]=8;  
+      for (Int_t i=2; i<5; i++) nStrip[i]=16;
+      for (Int_t i=5; i<6; i++) nStrip[i]=8;
+      nStrip[6]=16;
+      stripYsize[0]=0.;  
+      for (Int_t i=1; i<7; i++) stripYsize[i]=stripLength[3];
+      stripXsize[0]=0.;
+      for (Int_t i=1; i<5; i++) stripXsize[i]=stripWidth[1];
+      for (Int_t i=5; i<7; i++) stripXsize[i]=stripWidth[2];
+      trigSegY[4]->Init(0,nStrip,stripYsize,stripXsize,0.);
+
+      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;
+
+
+      //  printf("in CreateTriggerSegmentation here 0 id0=%i \n",id0);  
+
+      for (Int_t i = 0; i < 9; i++) {       
+
+        // cathode 0
+        chamberSeg[0]->Add(id0+i,     trigSegX[i]);
+        chamberSeg[0]->Add(id0+50+i,  trigSegX[i]);
+        fMUON->SetSegmentationModel(chamber, 1, chamberSeg[0]);
+
+        // cathode 1
+        chamberSeg[1]->Add(id0+i,     trigSegY[i]);
+        chamberSeg[1]->Add(id0+50+i,  trigSegY[i]);
+        fMUON->SetSegmentationModel(chamber, 2, chamberSeg[1]);
+
+      }
+
+      fMUON->SetResponseModel(chamber, responseTrigger0);      
+      fMUON->Chamber(chamber).SetChargeCorrel(0); // same charge on cathodes
 
   
-  //  printf("in CreateTriggerSegmentation here 1\n");  
+      //  printf("in CreateTriggerSegmentation here 1\n");  
 
-    if (!id0) {
-      AliWarning(Form("Segmentation for chamber %d is not yet defined",chamber));
-      return ;      
+      if (!id0) {
+        AliWarning(Form("Segmentation for chamber %d is not yet defined",chamber));
+        return ;      
+      }
     }
-  }
-}      
+}       
 //__________________________________________________________________________
 void AliMUONFactoryV2::Build(AliMUON* where, const char* what) 
 {
index c79c7a0..7acb491 100644 (file)
@@ -551,6 +551,7 @@ AliMUONTest::CreateSlatSegmentation(Int_t chamberId, Int_t cathod)
   
 } 
 //_____________________________________________________________________________
+
 AliMUONGeometrySegmentation*     
 AliMUONTest::CreateTriggerSegmentation(Int_t chamberId, Int_t cathod)
 {
@@ -566,12 +567,14 @@ AliMUONTest::CreateTriggerSegmentation(Int_t chamberId, Int_t cathod)
 
   AliMUONGeometrySegmentation *chamberSeg = new AliMUONGeometrySegmentation(muon->Chamber(chamberId).GetGeometry());
 
-   //Trigger Segmentations
+//Trigger Segmentation
   AliMUONTriggerSegmentation *trigSegX[9]; 
   AliMUONTriggerSegmentation *trigSegY[9]; 
   for(Int_t i=0; i<9; i++) {
-    trigSegX[i] = new AliMUONTriggerSegmentation(0);
-    trigSegY[i] = new AliMUONTriggerSegmentation(1);
+    trigSegX[i] = new AliMUONTriggerSegmentation(1);
+    trigSegY[i] = new AliMUONTriggerSegmentation(0);
+    trigSegX[i]->SetLineNumber(9-i);    
+    trigSegY[i]->SetLineNumber(9-i);    
   }
 
   AliMUONChamber *iChamber, *iChamber1;
@@ -582,98 +585,79 @@ AliMUONTest::CreateTriggerSegmentation(Int_t chamberId, Int_t cathod)
   Float_t zRatio = zpos / zpos1;
 
 // init
+  Float_t stripWidth[3]={0.,0.,0.};     // 1.0625 2.125 4.25
+  Float_t stripLength[4]={0.,0.,0.,0.}; // 17. 34. 51. 68.
+  for (Int_t i=0; i<3; i++) 
+      stripWidth[i]=AliMUONTriggerConstants::StripWidth(i)*zRatio;
+  for (Int_t i=0; i<4; i++) 
+      stripLength[i]=AliMUONTriggerConstants::StripLength(i)*zRatio;
   Int_t nStrip[7]={0,0,0,0,0,0,0};       
   Float_t stripYsize[7]={0.,0.,0.,0.,0.,0.,0.};
   Float_t stripXsize[7]={0.,0.,0.,0.,0.,0.,0.};
 
-// chamber 8 cathode 0
+// chamber 8 0 cathode 0
   for (Int_t i=0; i<7; i++) nStrip[i]=16;
-  for (Int_t i=0; i<7; i++) 
-      stripYsize[i]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-  for (Int_t i=0; i<6; i++) 
-      stripXsize[i]=AliMUONTriggerConstants::StripLength(1)*zRatio;
-  stripXsize[6]=AliMUONTriggerConstants::StripLength(2)*zRatio; 
-  trigSegX[8]->Init(0,1,nStrip,stripYsize,stripXsize,0.);  
-// chamber 8 cathode 1
-  for (Int_t i=0; i<6; i++) nStrip[i]=8;
-  nStrip[6]=16;
-  for (Int_t i=0; i<7; i++) 
-      stripYsize[i]=AliMUONTriggerConstants::StripLength(3)*zRatio;
-  for (Int_t i=0; i<7; i++) 
-      stripXsize[i]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-  trigSegY[8]->Init(0,1,nStrip,stripYsize,stripXsize,0.);  
-// chamber 7 cathode 0
-  for (Int_t i=0; i<6; i++) nStrip[i]=32;
-  nStrip[7]=16;  
-  for (Int_t i=0; i<6; i++) 
-      stripYsize[i]=AliMUONTriggerConstants::StripWidth(1)*zRatio;
-  stripYsize[6]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-  for (Int_t i=0; i<6; i++) 
-      stripXsize[i]=AliMUONTriggerConstants::StripLength(1)*zRatio;
-  stripXsize[6]=AliMUONTriggerConstants::StripLength(2)*zRatio;
-  trigSegX[7]->Init(0,2,nStrip,stripYsize,stripXsize,0.);  
-
-// chamber 7 cathode 1
+  for (Int_t i=0; i<7; i++) stripYsize[i]=stripWidth[2];
+  for (Int_t i=0; i<6; i++) stripXsize[i]=stripLength[1];
+  stripXsize[6]=stripLength[2];
+  trigSegX[8]->Init(0,nStrip,stripYsize,stripXsize,0.); 
+  trigSegX[0]->Init(0,nStrip,stripYsize,stripXsize,0.); 
+
+// chamber 8 7 1 0 cathode 1
   for (Int_t i=0; i<6; i++) nStrip[i]=8;
-  nStrip[6]=16;
-  for (Int_t i=0; i<7; i++) 
-      stripYsize[i]=AliMUONTriggerConstants::StripLength(3)*zRatio;
-  for (Int_t i=0; i<7; i++) 
-      stripXsize[i]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-  trigSegY[7]->Init(0,2,nStrip,stripYsize,stripXsize,0.);  
+  nStrip[7]=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.);  
+  trigSegY[7]->Init(0,nStrip,stripYsize,stripXsize,0.);
+  trigSegY[1]->Init(0,nStrip,stripYsize,stripXsize,0.);
+  trigSegY[0]->Init(0,nStrip,stripYsize,stripXsize,0.);
  
-// chamber 6 cathode 0
+// chamber 7 6 2 1 cathode 0
   for (Int_t i=0; i<6; i++) nStrip[i]=32;
-  nStrip[7]=16;  
-  for (Int_t i=0; i<6; i++) 
-      stripYsize[i]=AliMUONTriggerConstants::StripWidth(1)*zRatio;
-  stripYsize[6]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-  for (Int_t i=0; i<6; i++) 
-      stripXsize[i]=AliMUONTriggerConstants::StripLength(1)*zRatio;
-  stripXsize[6]=AliMUONTriggerConstants::StripLength(2)*zRatio;
-  trigSegX[6]->Init(0,3,nStrip,stripYsize,stripXsize,0.);  
-
-// chamber 6 cathode 1
-  for (Int_t i=0; i<5; i++) nStrip[i]=16;
-  nStrip[5]=8;
   nStrip[6]=16;  
-  for (Int_t i=0; i<7; i++) 
-      stripYsize[i]=AliMUONTriggerConstants::StripLength(3)*zRatio;  
-  for (Int_t i=0; i<5; i++) 
-      stripXsize[i]=AliMUONTriggerConstants::StripWidth(1)*zRatio;
-  stripXsize[5]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-  stripXsize[6]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-  trigSegY[6]->Init(0,3,nStrip,stripYsize,stripXsize,0.);  
-
-// chamber 5 cathode 0
+  for (Int_t i=0; i<6; i++) stripYsize[i]=stripWidth[1];
+  stripYsize[6]=stripWidth[2];
+  for (Int_t i=0; i<6; i++) stripXsize[i]=stripLength[1];
+  stripXsize[6]=stripLength[2];
+  trigSegX[7]->Init(0,nStrip,stripYsize,stripXsize,0.);  
+  trigSegX[6]->Init(0,nStrip,stripYsize,stripXsize,0.);
+  trigSegX[2]->Init(0,nStrip,stripYsize,stripXsize,0.);  
+  trigSegX[1]->Init(0,nStrip,stripYsize,stripXsize,0.);
+
+// chamber 6 2 cathode 1
+  for (Int_t i=0; i<5; i++) nStrip[i]=16;
+  for (Int_t i=5; i<6; i++) nStrip[i]=8;
+  nStrip[6]=16;
+  for (Int_t i=0; 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[6]->Init(0,nStrip,stripYsize,stripXsize,0.);  
+  trigSegY[2]->Init(0,nStrip,stripYsize,stripXsize,0.);  
+
+// chamber 5 3 cathode 0
   nStrip[0]=48;
-  for (Int_t i=1; i<3; i++) nStrip[i]=64;  
+  for (Int_t i=1; i<3; i++) nStrip[i]=64;
   for (Int_t i=3; i<6; i++) nStrip[i]=32;
-  nStrip[6]=16;
-  for (Int_t i=0; i<3; i++) 
-      stripYsize[i]=AliMUONTriggerConstants::StripWidth(0)*zRatio;
-  for (Int_t i=3; i<6; i++) 
-  stripYsize[i]=AliMUONTriggerConstants::StripWidth(1)*zRatio;
-  stripYsize[6]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-  for (Int_t i=0; i<6; i++) 
-      stripXsize[i]=AliMUONTriggerConstants::StripLength(1)*zRatio;
-  stripXsize[6]=AliMUONTriggerConstants::StripLength(2)*zRatio;
-  trigSegX[5]->Init(0,4,nStrip,stripYsize,stripXsize,AliMUONTriggerConstants::StripLength(0)*zRatio);  
-
-// chamber 5 cathode 1
+  nStrip[6]=16;  
+  for (Int_t i=0; i<3; i++) stripYsize[i]=stripWidth[0];
+  for (Int_t i=3; i<6; i++) stripYsize[i]=stripWidth[1];
+  stripYsize[6]=stripWidth[2];
+  for (Int_t i=0; i<6; i++) stripXsize[i]=stripLength[1];
+  stripXsize[6]=stripLength[2];
+  trigSegX[5]->Init(0,nStrip,stripYsize,stripXsize,stripLength[0]);  
+  trigSegX[3]->Init(0,nStrip,stripYsize,stripXsize,0.);
+
+// chamber 5 3 cathode 1
   for (Int_t i=0; i<5; i++) nStrip[i]=16;
-  nStrip[5]=8;  
-  nStrip[6]=16;
-  stripYsize[0]=AliMUONTriggerConstants::StripLength(2)*zRatio;
-  for (Int_t i=1; i<7; i++) 
-      stripYsize[i]=AliMUONTriggerConstants::StripLength(3)*zRatio;
-  for (Int_t i=0; i<5; i++) 
-      stripXsize[i]=AliMUONTriggerConstants::StripWidth(1)*zRatio;
-  stripXsize[5]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-  stripXsize[6]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-  trigSegY[5]->Init(0,4,nStrip,stripYsize,stripXsize,AliMUONTriggerConstants::StripLength(0)*zRatio);  
+  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=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]);  
+  trigSegY[3]->Init(0,nStrip,stripYsize,stripXsize,0.);
 
 // chamber 4 cathode 0
   nStrip[0]=0;
@@ -681,128 +665,31 @@ AliMUONTest::CreateTriggerSegmentation(Int_t chamberId, Int_t cathod)
   for (Int_t i=3; i<6; i++) nStrip[i]=32;  
   nStrip[6]=16;
   stripYsize[0]=0.;
-  for (Int_t i=1; i<3; i++) 
-      stripYsize[i]=AliMUONTriggerConstants::StripWidth(0)*zRatio;
-  for (Int_t i=3; i<6; i++) 
-      stripYsize[i]=AliMUONTriggerConstants::StripWidth(1)*zRatio;
-  stripYsize[6]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
+  for (Int_t i=1; i<3; i++) stripYsize[i]=stripWidth[0];
+  for (Int_t i=3; i<6; i++) stripYsize[i]=stripWidth[1];
+  stripYsize[6]=stripWidth[2];
   stripXsize[0]=0;  
-  stripXsize[1]=AliMUONTriggerConstants::StripLength(0)*zRatio;
-  for (Int_t i=2; i<6; i++) 
-      stripXsize[i]=AliMUONTriggerConstants::StripLength(1)*zRatio;
-  stripXsize[6]=AliMUONTriggerConstants::StripLength(2)*zRatio;
-  trigSegX[4]->Init(0,5,nStrip,stripYsize,stripXsize,0.);  
+  stripXsize[1]=stripLength[0];  
+  for (Int_t i=2; i<6; i++) stripXsize[i]=stripLength[1];
+  stripXsize[6]=stripLength[2];
+  trigSegX[4]->Init(0,nStrip,stripYsize,stripXsize,0.);  
 
 // chamber 4 cathode 1
   nStrip[0]=0;  
   nStrip[1]=8;  
   for (Int_t i=2; i<5; i++) nStrip[i]=16;
-  nStrip[5]=8;
-  nStrip[6]=16;  
+  for (Int_t i=5; i<6; i++) nStrip[i]=8;
+  nStrip[6]=16;
   stripYsize[0]=0.;  
-  for (Int_t i=1; i<7; i++) 
-      stripYsize[i]=AliMUONTriggerConstants::StripLength(3)*zRatio;
+  for (Int_t i=1; i<7; i++) stripYsize[i]=stripLength[3];
   stripXsize[0]=0.;
-  for (Int_t i=1; i<5; i++) 
-      stripXsize[i]=AliMUONTriggerConstants::StripWidth(1)*zRatio;
-  stripXsize[5]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-  stripXsize[6]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-  trigSegY[4]->Init(0,5,nStrip,stripYsize,stripXsize,0.);
-
-// chamber 3 cathode 0
-  nStrip[0]=48;
-  for (Int_t i=1; i<3; i++) nStrip[i]=64;  
-  for (Int_t i=3; i<6; i++) nStrip[i]=32;
-  nStrip[6]=16;
-  for (Int_t i=0; i<3; i++) 
-      stripYsize[i]=AliMUONTriggerConstants::StripWidth(0)*zRatio;
-  for (Int_t i=3; i<6; i++) 
-  stripYsize[i]=AliMUONTriggerConstants::StripWidth(1)*zRatio;
-  stripYsize[6]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-  for (Int_t i=0; i<6; i++) 
-      stripXsize[i]=AliMUONTriggerConstants::StripLength(1)*zRatio;
-  stripXsize[6]=AliMUONTriggerConstants::StripLength(2)*zRatio;
-  trigSegX[3]->Init(0,6,nStrip,stripYsize,stripXsize,0.);  
-
-// chamber 3 cathode 1
-  for (Int_t i=0; i<5; i++) nStrip[i]=16;
-  nStrip[5]=8;  
-  nStrip[6]=16;
-  stripYsize[0]=AliMUONTriggerConstants::StripLength(2)*zRatio;
-  for (Int_t i=1; i<7; i++) 
-      stripYsize[i]=AliMUONTriggerConstants::StripLength(3)*zRatio;
-  for (Int_t i=0; i<5; i++) 
-      stripXsize[i]=AliMUONTriggerConstants::StripWidth(1)*zRatio;
-  stripXsize[5]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-  stripXsize[6]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-  trigSegY[3]->Init(0,6,nStrip,stripYsize,stripXsize,0.);  
-
-// chamber 2 cathode 0
-  for (Int_t i=0; i<6; i++) nStrip[i]=32;
-  nStrip[7]=16;  
-  for (Int_t i=0; i<6; i++) 
-      stripYsize[i]=AliMUONTriggerConstants::StripWidth(1)*zRatio;
-  stripYsize[6]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-  for (Int_t i=0; i<6; i++) 
-      stripXsize[i]=AliMUONTriggerConstants::StripLength(1)*zRatio;
-  stripXsize[6]=AliMUONTriggerConstants::StripLength(2)*zRatio;
-  trigSegX[2]->Init(0,7,nStrip,stripYsize,stripXsize,0.);  
-
-// chamber 2 cathode 1
-  for (Int_t i=0; i<5; i++) nStrip[i]=16;
-  nStrip[5]=8;
-  nStrip[6]=16;  
-  for (Int_t i=0; i<7; i++) 
-      stripYsize[i]=AliMUONTriggerConstants::StripLength(3)*zRatio;  
-  for (Int_t i=0; i<5; i++) 
-      stripXsize[i]=AliMUONTriggerConstants::StripWidth(1)*zRatio;
-  stripXsize[5]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-  stripXsize[6]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-  trigSegY[2]->Init(0,7,nStrip,stripYsize,stripXsize,0.);  
-
-// chamber 1 cathode 0
-  for (Int_t i=0; i<6; i++) nStrip[i]=32;
-  nStrip[7]=16;  
-  for (Int_t i=0; i<6; i++) 
-      stripYsize[i]=AliMUONTriggerConstants::StripWidth(1)*zRatio;
-  stripYsize[6]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-  for (Int_t i=0; i<6; i++) 
-      stripXsize[i]=AliMUONTriggerConstants::StripLength(1)*zRatio;
-  stripXsize[6]=AliMUONTriggerConstants::StripLength(2)*zRatio;
-  trigSegX[1]->Init(0,8,nStrip,stripYsize,stripXsize,0.);  
-
-// chamber 1 cathode 1
-  for (Int_t i=0; i<6; i++) nStrip[i]=8;
-  nStrip[6]=16;
-  for (Int_t i=0; i<7; i++) 
-      stripYsize[i]=AliMUONTriggerConstants::StripLength(3)*zRatio;
-  for (Int_t i=0; i<7; i++) 
-      stripXsize[i]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-  trigSegY[1]->Init(0,8,nStrip,stripYsize,stripXsize,0.);  
-
-// chamber 0 cathode 0
-  for (Int_t i=0; i<7; i++) nStrip[i]=16;
-  for (Int_t i=0; i<7; i++) 
-      stripYsize[i]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-  for (Int_t i=0; i<6; i++) 
-      stripXsize[i]=AliMUONTriggerConstants::StripLength(1)*zRatio;
-  stripXsize[6]=AliMUONTriggerConstants::StripLength(2)*zRatio; 
-  trigSegX[0]->Init(0,9,nStrip,stripYsize,stripXsize,0.);  
-// chamber 0 cathode 1
-  for (Int_t i=0; i<6; i++) nStrip[i]=8;
-  nStrip[6]=16;
-  for (Int_t i=0; i<7; i++) 
-      stripYsize[i]=AliMUONTriggerConstants::StripLength(3)*zRatio;
-  for (Int_t i=0; i<7; i++) 
-      stripXsize[i]=AliMUONTriggerConstants::StripWidth(2)*zRatio;
-  trigSegY[0]->Init(0,9,nStrip,stripYsize,stripXsize,0.);
+  for (Int_t i=1; i<5; i++) stripXsize[i]=stripWidth[1];
+  for (Int_t i=5; i<7; i++) stripXsize[i]=stripWidth[2];
+  trigSegY[4]->Init(0,nStrip,stripYsize,stripXsize,0.);
 
   Int_t icount=chamberId-10;  // chamber counter (0 1 2 3)
   Int_t id0=(10+icount+1)*100;
 
-  printf("in CreateTriggerSegmentation here 0 id0=%i \n",id0);  
-
   for (Int_t i=0; i<9; i++) {      
       if (cathod==0) {   
          chamberSeg->Add(id0+i,     trigSegX[i]);
@@ -813,8 +700,6 @@ AliMUONTest::CreateTriggerSegmentation(Int_t chamberId, Int_t cathod)
       }
   }
 
-  printf("in CreateTriggerSegmentation here 1\n");  
-
   if (!id0) {
       AliWarning(Form("Segmentation for chamber %d , cathod %d is not yet defined",chamberId, cathod));
       return 0;      
@@ -824,7 +709,6 @@ AliMUONTest::CreateTriggerSegmentation(Int_t chamberId, Int_t cathod)
   return chamberSeg;
 }
 
-
 //
 // public methods
 //
index dc492a4..12435a1 100644 (file)
@@ -27,40 +27,87 @@ ClassImp(AliMUONTriggerSegmentation)
 AliMUONTriggerSegmentation::AliMUONTriggerSegmentation() 
   : AliMUONVGeometryDESegmentation(),
     fBending(0),
-    fId(0)
+    fId(0),
+    fNsec(0),
+    fNDiv(0),
+    fDpxD(0),
+    fDpyD(0), 
+    fDpx(0),
+    fDpy(0),
+    fNpx(999999),
+    fNpy(999999),
+    fWireD(0.25),
+    fXhit(0.),
+    fYhit(0.),
+    fIx(0),
+    fIy(0),
+    fX(0.),
+    fY(0.),
+    fIxmin(0),
+    fIxmax(0),
+    fIymin(0),
+    fIymax(0),
+// add to St345SlatSegmentation
+    fLineNumber(0),
+    fRpcHalfXsize(0),
+    fRpcHalfYsize(0)
 {
-  // default constructor
+// add to St345SlatSegmentation
+  for (Int_t i=0; i<7; i++) {
+      fNstrip[i]=0;
+      fStripYsize[i]=0.;   
+      fStripXsize[i]=0.;  
+      fModuleXmin[i]=0.;
+      fModuleXmax[i]=0.;  
+      fModuleYmin[i]=0.;  
+  }
 }
+
+
 //___________________________________________
 AliMUONTriggerSegmentation::AliMUONTriggerSegmentation(Bool_t bending) 
   : AliMUONVGeometryDESegmentation(),
-    fBending(!bending),
-    fId(0)
-//     fDpx(0),
-//     fDpy(0),
-//     fNpx(999999),
-//     fNpy(999999),
-//     fXhit(0.),
-//     fYhit(0.),
-//     fIx(0),
-//     fIy(0),
-//     fX(0.),
-//     fY(0.),
-//     fIxmin(0),
-//     fIxmax(0),
-//     fIymin(0),
-//     fIymax(0)
+    fBending(bending),
+    fId(0),
+    fDpx(0),
+    fDpy(0),
+    fNpx(999999),
+    fNpy(999999),
+    fWireD(0.25),
+    fXhit(0.),
+    fYhit(0.),
+    fIx(0),
+    fIy(0),
+    fX(0.),
+    fY(0.),
+    fIxmin(0),
+    fIxmax(0),
+    fIymin(0),
+    fIymax(0),
+// add to St345SlatSegmentation
+    fLineNumber(0),
+    fRpcHalfXsize(0),
+    fRpcHalfYsize(0)
 {
   // Non default constructor
-  fNsec = 7;  // 4 sector densities at most per slat 
-/*  fNDiv = new TArrayI(fNsec);      
+  fNsec = 4;  // 4 sector densities at most per slat 
+  fNDiv = new TArrayI(fNsec);      
   fDpxD = new TArrayF(fNsec);      
   fDpyD = new TArrayF(fNsec);      
   (*fNDiv)[0]=(*fNDiv)[1]=(*fNDiv)[2]=(*fNDiv)[3]=0;     
   (*fDpxD)[0]=(*fDpxD)[1]=(*fDpxD)[2]=(*fDpxD)[3]=0;       
   (*fDpyD)[0]=(*fDpyD)[1]=(*fDpyD)[2]=(*fDpyD)[3]=0;       
-*/
+// add to St345SlatSegmentation
+  for (Int_t i=0; i<7; i++) {
+      fNstrip[i]=0;
+      fStripYsize[i]=0.;   
+      fStripXsize[i]=0.;  
+      fModuleXmin[i]=0.;
+      fModuleXmax[i]=0.;  
+      fModuleYmin[i]=0.;  
+  }
 }
+
 //----------------------------------------------------------------------
 AliMUONTriggerSegmentation::AliMUONTriggerSegmentation(const AliMUONTriggerSegmentation& rhs) : AliMUONVGeometryDESegmentation(rhs)
 {
@@ -78,29 +125,58 @@ AliMUONTriggerSegmentation::~AliMUONTriggerSegmentation()
 //----------------------------------------------------------------------
 AliMUONTriggerSegmentation& AliMUONTriggerSegmentation::operator=(const AliMUONTriggerSegmentation& rhs)
 {
-  // Protected assignement operator
+// Protected assignement operator
   if (this == &rhs) return *this;
   AliFatal("Not implemented.");
   return *this;  
 }
+//----------------------------------------------------------------------
+Bool_t AliMUONTriggerSegmentation::HasPad(Int_t ix, Int_t iy)
+{
+// check if steping outside the limits
+    Bool_t hasPad=true;    
+    Int_t ixLoc = ix;
+    Int_t iyLoc = iy;    
+    Int_t ixGlo = 0;
+    Int_t iyGlo = 0;    
+    GetPadLoc2Glo(ixLoc, iyLoc, ixGlo, iyGlo);
+    Int_t iModule = TMath::Abs(ixGlo)-Int_t(TMath::Abs(ixGlo)/10)*10 - 1;    
+    if ((iy-1)>=fNstrip[iModule]) hasPad = false;
+    return hasPad;    
+}
 //____________________________________________________________________________
 Float_t AliMUONTriggerSegmentation::Dpx(Int_t isec) const
 {
-    // Return x-strip width
+// Return x-strip width
+    Float_t size = 0.;    
     Int_t iModule = TMath::Abs(isec)-Int_t(TMath::Abs(isec)/10)*10 - 1;    
-    return fStripXsize[iModule];    
+//    printf ("iModule = %i\n",iModule);    
+
+    if (iModule<7) {   
+       size = fStripXsize[iModule];    
+    } else if (iModule==7) {
+       size = fStripXsize[iModule-1]/2;        
+    }    
+    return size;    
 }
 //____________________________________________________________________________
 Float_t AliMUONTriggerSegmentation::Dpy(Int_t  isec) const
 {
-// Return x-strip width
+// Return y-strip width
+    Float_t size = 0.;    
     Int_t iModule = TMath::Abs(isec)-Int_t(TMath::Abs(isec)/10)*10 - 1;
-    return fStripYsize[iModule];    
+    if (iModule<7) {   
+       size = fStripYsize[iModule];    
+    } else if (iModule==7) {
+       size = fStripYsize[iModule-1];  
+    } 
+    return size;    
 }
 //----------------------------------------------------------------------------
 void AliMUONTriggerSegmentation::GetPadLoc2Glo(Int_t ixLoc, Int_t iyLoc, 
                                               Int_t &ixGlo, Int_t &iyGlo)
 {    
+// converts ixLoc & iyLoc into ixGlo & iyGLo (module,strip number)
     ixGlo = 0;
     iyGlo = 0;    
     if (fBending) { 
@@ -131,8 +207,8 @@ void AliMUONTriggerSegmentation::GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t
     GetPadLoc2Glo(ixLoc, iyLoc, ixGlo, iyGlo);
     ix = ixGlo;
     iy = iyGlo;
-
-    // Returns real coordinates (x,y) for given pad coordinates (ix,iy)
+    
+// Returns real coordinates (x,y) for given pad coordinates (ix,iy)
     x = 0.;
     y = 0.;
 // find module number    
@@ -144,11 +220,18 @@ void AliMUONTriggerSegmentation::GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t
        x = fModuleXmax[iModule-1] +
            (fModuleXmax[iModule] - fModuleXmin[iModule]) / 2.;
        }       
-       y = (iy * fStripYsize[iModule]) + fStripYsize[iModule]/2;
+       y =  fModuleYmin[iModule] + 
+           (iy * fStripYsize[iModule]) + fStripYsize[iModule]/2.;
     } else if (!fBending) {
-       x = fModuleXmin[iModule] + 
-           (iy * fStripXsize[iModule]) + fStripXsize[iModule]/2;
-       y = fStripYsize[iModule] / 2;   
+       if (TMath::Abs(ixGlo)-Int_t(TMath::Abs(ixGlo)/10)*10==7 && iyGlo>7) {
+           x = fModuleXmin[iModule] + 7 * fStripXsize[iModule] +
+               ( (iy -8)* fStripXsize[iModule]/2.) + fStripXsize[iModule]/4.;
+           y =  fModuleYmin[iModule] + fStripYsize[iModule] / 2.;      
+       } else {            
+           x = fModuleXmin[iModule] + 
+               (iy * fStripXsize[iModule]) + fStripXsize[iModule]/2.;
+           y =  fModuleYmin[iModule] + fStripYsize[iModule] / 2.;
+       }
     }    
     x = x - fRpcHalfXsize;
     y = y - fRpcHalfYsize;
@@ -200,9 +283,9 @@ void AliMUONTriggerSegmentation::GetPadI(Float_t x, Float_t y , Float_t /*z*/, I
 //____________________________________________________________________________
 void AliMUONTriggerSegmentation::SetPadSize(Float_t p1, Float_t p2)
 {
-  //  Sets the padsize 
-  fDpx=p1;
-  fDpy=p2;
+//  Sets the padsize 
+    fDpx=p1;
+    fDpy=p2;
 }
 //-------------------------------------------------------------------------
 void AliMUONTriggerSegmentation::SetLineNumber(Int_t iLineNumber){
@@ -236,7 +319,6 @@ void AliMUONTriggerSegmentation::SetHit(Float_t x, Float_t y)
   //
   fXhit = x;
   fYhit = y;
-    
 }
 //----------------------------------------------------------------------------
 void AliMUONTriggerSegmentation::SetHit(Float_t xhit, Float_t yhit, Float_t /*zhit*/)
@@ -245,11 +327,22 @@ void AliMUONTriggerSegmentation::SetHit(Float_t xhit, Float_t yhit, Float_t /*zh
 }
 
 //--------------------------------------------------------------------------
-Int_t AliMUONTriggerSegmentation::Sector(Int_t ix, Int_t /*iy*/) 
+Int_t AliMUONTriggerSegmentation::Sector(Int_t ix, Int_t iy) 
 {
   // Determine segmentation zone from pad coordinates
-  return ix;
+    Int_t ixLoc = ix;
+    Int_t iyLoc = iy;    
+    Int_t ixGlo = 0;
+    Int_t iyGlo = 0;    
+    GetPadLoc2Glo(ixLoc, iyLoc, ixGlo, iyGlo);    
+    if (!fBending && 
+       TMath::Abs(ixGlo)-Int_t(TMath::Abs(ixGlo)/10)*10==7 && iyGlo>7) {
+       return ixGlo + 1; // different strip width within same module    
+    } else {
+       return ixGlo;
+    }  
 }
+
 //-----------------------------------------------------------------------------
 void AliMUONTriggerSegmentation::
 IntegrationLimits(Float_t& x1,Float_t& x2,Float_t& y1, Float_t& y2) 
@@ -295,58 +388,54 @@ Neighbours(Int_t iX, Int_t iY, Int_t* Nlist, Int_t Xlist[10], Int_t Ylist[10])
 
 //--------------------------------------------------------------------------
 void AliMUONTriggerSegmentation::Init(Int_t detectionElementId,
-                                     Int_t iLineNumber,
                                      Int_t nStrip[7],
                                      Float_t stripYsize[7],
                                      Float_t stripXsize[7],
                                      Float_t offset)
 {
-//  printf(" fBending: %d \n",fBending);
-// WARNING: pay attention to the fucking length of the chamber 
-// i.e. in the last module the y strip width varies within the module
-// (thank you General Tecnica!)
-
-  fLineNumber = iLineNumber;
-  Int_t nStripMax = 0;
-  if (fBending) nStripMax = nStrip[0];
-   
-  for (Int_t i=0; i<7; i++) {
-      fNstrip[i]=nStrip[i];
-      fStripYsize[i]=stripYsize[i];
-      fStripXsize[i]=stripXsize[i];
-  }
-
-  Float_t tmp = 0.;  
-  Int_t npad = 0;  // number of pad in x and y
-  for (Int_t iModule=0; iModule<7; iModule++) { // modules     
-      fModuleXmin[iModule] = tmp;      
-      npad = npad + fNstrip[iModule];
-      if (fBending) {
-         fModuleXmax[iModule] = 
-             fModuleXmin[iModule] + fStripXsize[iModule];
-      } else if (!fBending) {
-         if (iModule<6) {
-             fModuleXmax[iModule] = 
-                 fModuleXmin[iModule] + fStripXsize[iModule]*fNstrip[iModule];
-         } else if (iModule==6) {
-             fModuleXmax[iModule] = 
-                 fModuleXmin[iModule] + 
-                 (fStripXsize[iModule]*fNstrip[iModule]/2) +
-                 (fStripXsize[iModule]/2.*fNstrip[iModule]/2);
-         }       
-      }
-      tmp = fModuleXmax[iModule];      
-
-// calculate nStripMax in x & y
-      if (fBending) {
-         if (fNstrip[iModule] > nStripMax) nStripMax = fNstrip[iModule];      
-      } else if (!fBending) {
-         for (Int_t iStrip=0; iStrip<fNstrip[iModule]; iStrip++) nStripMax++;
-      }
-  } // loop on modules
-
+//    printf(" fBending: %d \n",fBending);
+    
+    Int_t nStripMax = 0;
+    if (fBending) nStripMax = nStrip[0];
+    
+    for (Int_t i=0; i<7; i++) {
+       fNstrip[i]=nStrip[i];
+       fStripYsize[i]=stripYsize[i];
+       fStripXsize[i]=stripXsize[i];
+       fModuleYmin[0]=0.;
+    }
 // take care of offset in Y in chamber 5, first module
-  fModuleYmin[0] = offset;
+    fModuleYmin[0] = offset;
+    
+    Float_t tmp = 0.;  
+    Int_t npad = 0;  // number of pad in x and y
+    for (Int_t iModule=0; iModule<7; iModule++) { // modules   
+       fModuleXmin[iModule] = tmp;      
+       npad = npad + fNstrip[iModule];
+       if (fBending) {
+           fModuleXmax[iModule] = 
+               fModuleXmin[iModule] + fStripXsize[iModule];
+       } else if (!fBending) {
+           if (iModule<6) {
+               fModuleXmax[iModule] = 
+                   fModuleXmin[iModule] + fStripXsize[iModule]*fNstrip[iModule];
+           } else if (iModule==6) { 
+               fModuleXmax[iModule] = 
+                   fModuleXmin[iModule] + 
+                   (fStripXsize[iModule]*fNstrip[iModule]/2) +
+                   (fStripXsize[iModule]/2.*fNstrip[iModule]/2);
+           }     
+       }
+       tmp = fModuleXmax[iModule];      
+       
+// calculate nStripMax in x & y
+       if (fBending) {
+           if (fNstrip[iModule] > nStripMax) nStripMax = fNstrip[iModule];
+       } else if (!fBending) {
+           for (Int_t iStrip=0; iStrip<fNstrip[iModule]; iStrip++) nStripMax++;
+       }
+    } // loop on modules
+    
 
 // associate nStripMax
   if (fBending) {
@@ -357,7 +446,7 @@ void AliMUONTriggerSegmentation::Init(Int_t detectionElementId,
       fNpy = 1;      
   }  
 
-// calculate half size in x & y
+// calculate half size in x & y (to shift the local coordinate ref. system)
   fRpcHalfXsize = 0;
   fRpcHalfYsize = 0;  
   if (fBending) {
@@ -374,13 +463,25 @@ void AliMUONTriggerSegmentation::Init(Int_t detectionElementId,
 /*
   printf(" fNpx fNpy fRpcHalfXsize fRpcHalfYsize = %i %i %f %f \n",
         fNpx,fNpy,fRpcHalfXsize,fRpcHalfYsize);
+*/
 
+/*
   for (Int_t iModule=0; iModule<7; iModule++) {
-      printf(" iModule fModuleXmin fModuleXmax fStripXsize fStripYsize %i %f %f %f %f\n",
+      printf(" iModule fModuleXmin fModuleXmax fModuleYmin fStripXsize fStripYsize %i %f %f %f %f %f\n",
             iModule,fModuleXmin[iModule],fModuleXmax[iModule],
+            fModuleYmin[iModule],
             fStripXsize[iModule],fStripYsize[iModule]);
             }
-*/  
+
+  for (Int_t iModule=0; iModule<7; iModule++) {
+      printf(" iModule fNstrip fStripXsize fStripYsize %i %i %f %f \n",
+            iModule,fNstrip[iModule],
+            fStripXsize[iModule],fStripYsize[iModule]);
+  }
+*/
+
+  
+
 //  printf("npad = %i",npad);  
 
   fId = detectionElementId;
index bfa2c89..63b1aed 100644 (file)
@@ -21,13 +21,13 @@ class TArrayI;
 class AliMUONTriggerSegmentation : public AliMUONVGeometryDESegmentation 
 {
  public:
-    AliMUONTriggerSegmentation();
     AliMUONTriggerSegmentation(Bool_t bending);
+    AliMUONTriggerSegmentation();
     virtual ~AliMUONTriggerSegmentation();
       
     virtual Float_t  Distance2AndOffset(Int_t /*iX*/, Int_t /*iY*/, Float_t /*X*/, Float_t /*Y*/, Int_t * /*dummy*/) {return 0.;}  // Distance between 1 pad and a position
-    virtual Float_t  Dpx() const {return fDpx;}  // Pad size in x   
-    virtual Float_t  Dpy() const {return fDpy;}  // Pad size in y   
+    virtual Float_t  Dpx() const {return 0.;}  // Pad size in x   
+    virtual Float_t  Dpy() const {return 0.;}  // Pad size in y   
     virtual Float_t  Dpx(Int_t isec) const;       // Pad size in x by Sector
     virtual Float_t  Dpy(Int_t isec) const;       // Pad size in y by Sector
     virtual void     Draw(const char */*opt*/ = "") {}  // Not implemented
@@ -35,7 +35,7 @@ class AliMUONTriggerSegmentation : public AliMUONVGeometryDESegmentation
     virtual void     FirstPad(Float_t /*xhit*/, Float_t /*yhit*/, Float_t /*zhit*/, Float_t /*dx*/, Float_t /*dy*/) {}    
 
     virtual Bool_t   HasPad(Float_t /*x*/, Float_t /*y*/, Float_t /*z*/) { return true; }
-    virtual Bool_t   HasPad(Int_t /*ix*/, Int_t /*iy*/) { return true; }
+    virtual Bool_t   HasPad(Int_t ix, Int_t iy);
     virtual AliMUONGeometryDirection  GetDirection() { return kDirUndefined; } 
 
     virtual Float_t  GetAnod(Float_t /*xhit*/) const {return 0; }  // Anod wire coordinate closest to xhit
@@ -60,7 +60,7 @@ class AliMUONTriggerSegmentation : public AliMUONVGeometryDESegmentation
     virtual Int_t    Npy() const {return fNpy;} // Maximum number of Pads in y
 
     virtual void     SetDAnod(Float_t /*D*/) {/*fWireD = D*/;};  // Anod pitch
-    virtual Int_t    Sector(Int_t ix, Int_t /*iy*/);         // Calculate sector from pad coordinates
+    virtual Int_t    Sector(Int_t ix, Int_t iy);         // Calculate sector from pad coordinates
     virtual void     SetHit(Float_t xhit, Float_t yhit); // Set hit position
     virtual void     SetHit(Float_t xhit, Float_t yhit, Float_t zhit);
     virtual void     SetId(Int_t id) {fId=id;}  // Setting detection element
@@ -83,8 +83,7 @@ class AliMUONTriggerSegmentation : public AliMUONVGeometryDESegmentation
     virtual Int_t    Sector(Float_t /*x*/, Float_t /*y*/) {return 1;}
 
     virtual void     Init(Int_t /*detectionElementId*/){} // Initialisation
-    virtual void     Init(Int_t detectionElementId,
-                         Int_t iLineNumber,
+    virtual void     Init(Int_t detectionElementId,                     
                          Int_t nStrip[7],
                          Float_t stripYsize[7],
                          Float_t stripXsize[7],
@@ -97,38 +96,29 @@ class AliMUONTriggerSegmentation : public AliMUONVGeometryDESegmentation
     AliMUONTriggerSegmentation& operator=(const AliMUONTriggerSegmentation& rhs);
     
     //  Internal geometry of the slat 
-    Int_t fLineNumber;        // line number of the RPC    
-    Int_t fNstrip[7];         // number of strips per module in RPC
-    Float_t fStripYsize[7];   // strip Y size per module in RPC
-    Float_t fStripXsize[7];   // strip X size per module in RPC
-    Float_t fModuleXmin[7];   // x min position of modules
-    Float_t fModuleXmax[7];   // x max position of modules
-    Float_t fModuleYmin[7];   // y min position of modules
-    Float_t fRpcHalfXsize;    // RPC half size in x 
-    Float_t fRpcHalfYsize;    // RPC half size in y
-    
     Bool_t      fBending;        // 0: Bending or 1:Non Bending segmentation
     Int_t       fId;             // Identifier of detection element
     Int_t       fNsec;           // Number of density sectors (should be 4, if not not warranty about the output
     TArrayI*    fNDiv;           // Densities (d1, d2, d3, d4). It should be (4, 4, 2, 1) which goes from beam to out-beam
-//    TArrayF*    fDpxD;           // x pad width per density sector
-//    TArrayF*    fDpyD;           // x pad width per density sector
+    TArrayF*    fDpxD;           // x pad width per density sector
+    TArrayF*    fDpyD;           // x pad width per density sector
     Float_t     fDpx;            // x pad base width  
     Float_t     fDpy;            // y pad base width
     Int_t       fNpx;            // Number of pads in x
     Int_t       fNpy;            // Number of pads in y
+    Float_t     fWireD;          // wire pitch
     // 
     Int_t       fSector;         // Current density sector
-//    Float_t     fDxPCB;          // x-size of PCB board
-//    Float_t     fDyPCB;          // y-size of PCB board
-//    Int_t       fPcbBoards[4];   // number of PCB boards per density sector n1,n2,n3,n4 
+    Float_t     fDxPCB;          // x-size of PCB board
+    Float_t     fDyPCB;          // y-size of PCB board
+    Int_t       fPcbBoards[4];   // number of PCB boards per density sector n1,n2,n3,n4 
     // n1 PcbBoard with density d1, n2 PcbBoards with density d2, etc ....
    
     // Segmentation map
     Int_t       fNpxS[10];       // Number of pads per sector in x
     Int_t       fNpyS[10];       // Number of pads per sector in y    
-//    Float_t     fCx[10];         // pad-sector contour x vs y      
-//    Float_t     fCy;             // y offset      
+    Float_t     fCx[10];         // pad-sector contour x vs y      
+    Float_t     fCy;             // y offset      
 
     // Current pad and wire during tracking (cursor at hit centre)
     Float_t     fXhit;  // ! x-position of hit
@@ -141,17 +131,28 @@ class AliMUONTriggerSegmentation : public AliMUONVGeometryDESegmentation
     Float_t     fY;    // ! real ccord. y
     
     // Chamber region consideres during disintegration   
-    //   Int_t       fIxmin; // ! lower left  x
-    //   Int_t       fIxmax; // ! lower left  y
-    // Int_t       fIymin; // ! upper right x
-    // Int_t       fIymax; // ! upper right y 
-
+    Int_t       fIxmin; // ! lower left  x
+    Int_t       fIxmax; // ! lower left  y
+    Int_t       fIymin; // ! upper right x
+    Int_t       fIymax; // ! upper right y 
+// add to St345SlatSegmentation
+    Int_t fLineNumber;        // line number of the RPC    
+    Int_t fNstrip[7];         // number of strips per module in RPC
+    Float_t fStripYsize[7];   // strip Y size per module in RPC
+    Float_t fStripXsize[7];   // strip X size per module in RPC
+    Float_t fModuleXmin[7];   // x min position of modules
+    Float_t fModuleXmax[7];   // x max position of modules
+    Float_t fModuleYmin[7];   // y min position of modules
+    Float_t fRpcHalfXsize;    // RPC half size in x 
+    Float_t fRpcHalfYsize;    // RPC half size in y
+// add to St345SlatSegmentation
+    
     // Chamber region consideres during disintegration  (lower left and upper right corner)
-//    Float_t     fXmin;           // lower left  x
-    //   Float_t     fXmax;           // lower left  y
-    // Float_t     fYmin;           // upper right x
-    // Float_t     fYmax;           // upper right y 
-
+    Float_t     fXmin;           // lower left  x
+    Float_t     fXmax;           // lower left  y
+    Float_t     fYmin;           // upper right x
+    Float_t     fYmax;           // upper right y 
+    
     ClassDef(AliMUONTriggerSegmentation,1) 
 };
 #endif