]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
trigger geometry & segmentation as in Fig.2.4 & 2.5 of ALICE-EN-2003-010
authorpcrochet <pcrochet@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 7 Sep 2004 16:40:07 +0000 (16:40 +0000)
committerpcrochet <pcrochet@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 7 Sep 2004 16:40:07 +0000 (16:40 +0000)
MUON/AliMUONSegmentationTrigger.cxx
MUON/AliMUONSegmentationTrigger.h
MUON/AliMUONSegmentationTriggerX.cxx
MUON/AliMUONSegmentationTriggerY.cxx
MUON/AliMUONTriggerConstants.cxx
MUON/AliMUONTriggerGeometryBuilder.cxx

index 1ded0d74f0d148fa6af2dbbcde6e9dcc8400f2a4..e9285d97a820d71cbd43ae50caf77e25629ed22f 100644 (file)
@@ -163,10 +163,6 @@ void AliMUONSegmentationTrigger::Init(Int_t chamber)
 
 // Set parent chamber number
   fChamber=&(pMUON->Chamber(chamber));
-  fRmin=fChamber->RInner();
-  fRmax=fChamber->ROuter();    
-  fCorr=0;
-  fZ=fChamber->Z();
   fId=chamber;
 }
 //------------------------------------------------------------------
@@ -203,13 +199,23 @@ Float_t AliMUONSegmentationTrigger::StripSizeX(Int_t imodule){
 }
 
 //------------------------------------------------------------------
-Float_t AliMUONSegmentationTrigger::StripSizeY(Int_t imodule){
+Float_t AliMUONSegmentationTrigger::StripSizeY(Int_t imodule, Int_t istrip){
 // Returns y-strip size for given module imodule
         
   Int_t absimodule=TMath::Abs(imodule); 
   Int_t moduleNum=ModuleNumber(imodule);
   if (absimodule==51) {
-    return 0;
+      return 0;
+  } else if (TMath::Abs(imodule-10*Int_t(imodule/10.))==7) {
+      if (istrip<8) {
+         return 4.25;
+      }
+      else if (istrip>7) {           
+         return 2.125;
+      } 
+      else {
+         return 0.;
+      }      
   } else {
       return TMath::Abs((AliMUONTriggerConstants::XcMax(moduleNum) - 
                         AliMUONTriggerConstants::XcMin(moduleNum)) / 
index 55c6d8a90ad5e454cff3717bf91fca38b5025453..a1554c5a2ed3a927bbae8e32434ccd8d6c61907b 100644 (file)
@@ -36,7 +36,7 @@ class AliMUONSegmentationTrigger : public AliMUONSegmentationV0
 
  protected:
     Float_t StripSizeX(Int_t imodule);
-    Float_t StripSizeY(Int_t imodule);    
+    Float_t StripSizeY(Int_t imodule, Int_t istrip);
  protected:
     Float_t fYcmin[126];       // y min position of modules
     Float_t fYcmax[126];       // y max position of modules
index 728878860dbdc68bb683e77f80ecc632fe97207b..d4bd7e54165c268d5db80745aea22d0de0dc3e97 100644 (file)
@@ -47,7 +47,18 @@ void AliMUONSegmentationTriggerX::Init(Int_t chamber)
       
       fYofxsmin[imodule][istrip] = (fYcmin[imodule]+width*(istrip))*fZscale;
       fYofxsmax[imodule][istrip] = (fYcmin[imodule]+width*(istrip+1))*fZscale;
-    }
+/*
+      if (TMath::Abs(AliMUONTriggerConstants::ModuleId(imodule))==11) {
+         printf("module Id istrip fXofxsmin fXofxsmax fYofxsmin fYofxsmax %d %d %f %f %f %f \n",
+                AliMUONTriggerConstants::ModuleId(imodule),
+                istrip,
+                fXofxsmin[imodule][istrip],
+                fXofxsmax[imodule][istrip],
+                fYofxsmin[imodule][istrip],
+                fYofxsmax[imodule][istrip]);
+      }
+*/
+    }    
   }
 }
 
@@ -180,7 +191,7 @@ Float_t AliMUONSegmentationTriggerX::Dpx(Int_t isec) const
   } else if (isec==5) {
     return 34.0*fZscale;
   } else if (isec==6) {
-    return 68.0*fZscale;
+    return 51.0*fZscale;
   } else {
     return 0.;
   }
index 92e8e8a36cc010a8679232c24b4596c80e9f4fae..a9392a0ad70c8d1da02343e4ba4b214e065bd9a0 100644 (file)
@@ -37,30 +37,57 @@ void AliMUONSegmentationTriggerY::Init(Int_t chamber)
 // intialize Y segmentation 
   AliMUON *pMUON  = (AliMUON *) gAlice->GetModule("MUON");
   if(pMUON->GetDebug()>1) printf("%s: Initialize Trigger Chamber Geometry Y\n",ClassName());
-  AliMUONSegmentationTrigger::Init(chamber);
-    
+  AliMUONSegmentationTrigger::Init(chamber);  
+
 // calculate x & y position of Y strips
   Int_t nModule=AliMUONTriggerConstants::Nmodule();  
-  for (Int_t imodule=0; imodule<nModule; imodule++) {    
-    Float_t width=StripSizeY(AliMUONTriggerConstants::ModuleId(imodule));
-    Int_t nStrip=AliMUONTriggerConstants::NstripY(imodule);    
-    for (Int_t istrip=0; istrip<nStrip; istrip++){
-      if (imodule<63) {
-       fXofysmin[imodule][istrip]=
-           (AliMUONTriggerConstants::XcMin(imodule)+width*(istrip))*fZscale;
-       fXofysmax[imodule][istrip]=
-           (AliMUONTriggerConstants::XcMin(imodule)+width*(istrip+1))*fZscale;
-      } else { 
-       fXofysmin[imodule][istrip]=-1.*fXofysmax[imodule-63][istrip];
-       fXofysmax[imodule][istrip]=-1.*fXofysmin[imodule-63][istrip];
-      }      
-      fYofysmin[imodule][istrip] = fYcmin[imodule]*fZscale;
-      fYofysmax[imodule][istrip] = fYcmax[imodule]*fZscale;
-    }
-  }
+  for (Int_t imodule=0; imodule<nModule; imodule++) { 
+      Int_t moduleId=AliMUONTriggerConstants::ModuleId(imodule);      
+      Int_t nStrip=AliMUONTriggerConstants::NstripY(imodule);
+      for (Int_t istrip=0; istrip<nStrip; istrip++){
+         Float_t width=StripSizeY(moduleId,istrip);
+
+         if (imodule<63) {
+             if (moduleId-10*Int_t(moduleId/10.)==7&&istrip>7) {
+                 fXofysmin[imodule][istrip]=
+                     ( AliMUONTriggerConstants::XcMin(imodule)+
+                       (width*2.)*8 + width*(istrip-8) )*fZscale;
+                 fXofysmax[imodule][istrip]=
+                     ( AliMUONTriggerConstants::XcMin(imodule)+
+                       (width*2.)*8 + width*(istrip-7) )*fZscale;
+             } else {        
+                 fXofysmin[imodule][istrip]=
+                     (AliMUONTriggerConstants::XcMin(imodule)
+                      +width*(istrip))*fZscale;
+                 fXofysmax[imodule][istrip]=
+                     (AliMUONTriggerConstants::XcMin(imodule)
+                      +width*(istrip+1))*fZscale;
+                 
+             }
+             
+         } else {      
+             fXofysmin[imodule][istrip]=-1.*fXofysmax[imodule-63][istrip];
+             fXofysmax[imodule][istrip]=-1.*fXofysmin[imodule-63][istrip];
+         }      
+         fYofysmin[imodule][istrip] = fYcmin[imodule]*fZscale;
+         fYofysmax[imodule][istrip] = fYcmax[imodule]*fZscale;
+      }
+  }  
+/*
+         if (TMath::Abs(AliMUONTriggerConstants::ModuleId(imodule))==11) {
+             printf("module Id istrip fXofxsmin fXofxsmax fYofxsmin fYofxsmax %d %d %f %f %f %f \n",
+                    AliMUONTriggerConstants::ModuleId(imodule),
+                    istrip,
+                    fXofysmin[imodule][istrip],
+                    fXofysmax[imodule][istrip],
+                    fYofysmin[imodule][istrip],
+                    fYofysmax[imodule][istrip]);
+         }
+*/
 
 }
 
+
 //------------------------------------------------------------------
 void AliMUONSegmentationTriggerY::GetPadI(Float_t x,Float_t y,Int_t &ix,Int_t &iy) 
 {
@@ -242,12 +269,12 @@ void AliMUONSegmentationTriggerY::SetHit(Float_t xhit, Float_t yhit, Float_t /*z
   SetHit(xhit, yhit);
 }
 //------------------------------------------------------------------   
-Int_t AliMUONSegmentationTriggerY::Sector(Int_t ix, Int_t /*iy*/)
+Int_t AliMUONSegmentationTriggerY::Sector(Int_t ix, Int_t iy)
 {
 // Returns sector number for given module
 // 
   Int_t absix=TMath::Abs(ix);
-  Int_t iwidth=Int_t(StripSizeY(absix));
+  Int_t iwidth=Int_t(StripSizeY(absix,iy));
 
   if (absix==52) {
     return 1;
@@ -259,7 +286,8 @@ Int_t AliMUONSegmentationTriggerY::Sector(Int_t ix, Int_t /*iy*/)
     return 4;
   } else {
     return 0;
-  }
+  }      
+
 }
 
 //------------------------------------------------------------------   
index 0d789e7be80224ca5268158841930e82a118d560..671a3315b20c09a778c210124912e9b9f8914cff 100644 (file)
@@ -102,15 +102,7 @@ const Int_t AliMUONTriggerConstants::fgkNstripY[126]=
 
 //----------------------------------------------------------------------  
 const Float_t AliMUONTriggerConstants::fgkXcMin[126]=
-{-36.,-70.,-104.,-138.,-172.,-206.,-274., //right
- -36.,-70.,-104.,-138.,-172.,-206.,-274.,
- -36.,-70.,-104.,-138.,-172.,-206.,-274.,
- -36.,-70.,-104.,-138.,-172.,-206.,-274.,
-   0.,-70.,-104.,-138.,-172.,-206.,-274.,
- -36.,-70.,-104.,-138.,-172.,-206.,-274.,
- -36.,-70.,-104.,-138.,-172.,-206.,-274.,
- -36.,-70.,-104.,-138.,-172.,-206.,-274.,
- -36.,-70.,-104.,-138.,-172.,-206.,-274.,
+{
  2.,36.,70.,104.,138.,172.,206., // left
  2.,36.,70.,104.,138.,172.,206.,
  2.,36.,70.,104.,138.,172.,206.,
@@ -120,11 +112,30 @@ const Float_t AliMUONTriggerConstants::fgkXcMin[126]=
  2.,36.,70.,104.,138.,172.,206.,
  2.,36.,70.,104.,138.,172.,206.,
  2.,36.,70.,104.,138.,172.,206.,
-};
+ -36.,-70.,-104.,-138.,-172.,-206.,-257., //right
+ -36.,-70.,-104.,-138.,-172.,-206.,-257.,
+ -36.,-70.,-104.,-138.,-172.,-206.,-257.,
+ -36.,-70.,-104.,-138.,-172.,-206.,-257.,
+   0.,-70.,-104.,-138.,-172.,-206.,-257.,
+ -36.,-70.,-104.,-138.,-172.,-206.,-257.,
+ -36.,-70.,-104.,-138.,-172.,-206.,-257.,
+ -36.,-70.,-104.,-138.,-172.,-206.,-257.,
+ -36.,-70.,-104.,-138.,-172.,-206.,-257.,
+ };
 
 //----------------------------------------------------------------------  
 const Float_t AliMUONTriggerConstants::fgkXcMax[126]=
-{-2.,-36.,-70.,-104.,-138.,-172.,-206., // right
+{
+ 36.,70.,104.,138.,172.,206.,257., //left
+ 36.,70.,104.,138.,172.,206.,257.,
+ 36.,70.,104.,138.,172.,206.,257.,
+ 36.,70.,104.,138.,172.,206.,257.,
+  0.,70.,104.,138.,172.,206.,257.,
+ 36.,70.,104.,138.,172.,206.,257.,
+ 36.,70.,104.,138.,172.,206.,257.,
+ 36.,70.,104.,138.,172.,206.,257.,
+ 36.,70.,104.,138.,172.,206.,257., 
+ -2.,-36.,-70.,-104.,-138.,-172.,-206., // right
  -2.,-36.,-70.,-104.,-138.,-172.,-206.,
  -2.,-36.,-70.,-104.,-138.,-172.,-206.,
  -2.,-36.,-70.,-104.,-138.,-172.,-206.,
@@ -133,15 +144,6 @@ const Float_t AliMUONTriggerConstants::fgkXcMax[126]=
  -2.,-36.,-70.,-104.,-138.,-172.,-206.,
  -2.,-36.,-70.,-104.,-138.,-172.,-206.,
  -2.,-36.,-70.,-104.,-138.,-172.,-206.,
- 36.,70.,104.,138.,172.,206.,274., //left
- 36.,70.,104.,138.,172.,206.,274.,
- 36.,70.,104.,138.,172.,206.,274.,
- 36.,70.,104.,138.,172.,206.,274.,
-  0.,70.,104.,138.,172.,206.,274.,
- 36.,70.,104.,138.,172.,206.,274.,
- 36.,70.,104.,138.,172.,206.,274.,
- 36.,70.,104.,138.,172.,206.,274.,
- 36.,70.,104.,138.,172.,206.,274., 
 };
 
 //----------------------------------------------------------------------  
index 676432d9fb75ea6608b752cb886b22e894c6cc2e..14bace521a859930ac1f18ead65c638eac8413a8 100644 (file)
@@ -109,9 +109,10 @@ void AliMUONTriggerGeometryBuilder::CreateGeometry()
 // main distances for chamber definition in first plane/first station
     const Float_t kXMIN=34.;       
     const Float_t kXMED=51.;                                
-    const Float_t kXMAX=272.; 
-// kXMAX will become 255. in real life. segmentation to be updated accordingly
+    const Float_t kXMAX=255.; 
+// 090704 kXMAX changed from 272 to 255.
 // (see fig.2-4 & 2-5 of Local Trigger Board PRR)
+// segmentation updated accordingly
     const Float_t kYMIN=34.;                              
     const Float_t kYMAX=51.;                              
 // inner/outer radius of flange between beam shield. and chambers (1/station)