]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Small corrections on slat segmentation and MUONdisplay
authorcussonno <cussonno@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 16 Sep 2004 13:10:21 +0000 (13:10 +0000)
committercussonno <cussonno@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 16 Sep 2004 13:10:21 +0000 (13:10 +0000)
MUON/AliMUONFactory.cxx
MUON/AliMUONSlatGeometryBuilder.cxx
MUON/MUONdisplay.C

index 1cc3f43af3a5bc82ac185ded8eab708244b6c5f7..1d0f320ad8035a4607d89872e46e955649112678 100644 (file)
@@ -239,14 +239,14 @@ void AliMUONFactory::BuildStation3()
                             0,0,3,0,
                             0,1,3,0,
                             0,2,2,0,
-                            0,1,2,0, 
+                            0,2,2,0, 
                             0,2,2,0, 
                             0,1,3,0, 
                             0,0,3,0,
                             0,0,2,0};
        
        Float_t shift = 1.5/2.;
-       Float_t xpos5[9]    = {4.5, 4.5, 4.5, 4.5, 33., 4.5, 4.5, 4.5, 4.5};
+       Float_t xpos5[9]    = {4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5};
        Float_t ypos5       = -(20.+4.*(40.-2.*shift));
        
        Int_t chamber=5;
@@ -324,15 +324,15 @@ void AliMUONFactory::BuildStation4()
                           0,0,2,2,
                           0,0,3,2,
                           0,2,2,1,
-                          0,2,2,1,
-                          0,1,2,1
-                          0,2,2,1
+                          0,2,2,2,
+                          0,1,2,2
+                          0,2,2,2
                           0,2,2,1, 
                           0,0,3,2, 
                           0,0,2,2, 
                           0,0,0,3,
                           0,0,0,2};
-       Float_t xpos7[13]   = {4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 40.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5};
+       Float_t xpos7[13]   = {4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 44., 4.5, 4.5, 4.5, 4.5, 4.5, 4.5};
        Float_t ypos7       = -(20.+6.*(40.-2.*shift));  
        
        seg71->SetNSlats(13);  
@@ -423,7 +423,7 @@ void AliMUONFactory::BuildStation5()
                             0,0,0,4, 
                             0,0,0,3};   
        
-       Float_t xpos9[13]   = {4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 40.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5};
+       Float_t xpos9[13]   = {4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 44., 4.5, 4.5, 4.5, 4.5, 4.5, 4.5};
        Float_t ypos9       = -(20.+6.*(40.-2.*shift));
        
        seg91->SetNSlats(13);  
index 7a61091dc2710cf8c35d85c573b3a07c5e3f19df..fd8ac6231cef967c9a143e915fb83d29a2aa71de 100644 (file)
@@ -199,7 +199,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
 
     Int_t* fStations = new Int_t[5];
     for (Int_t i=0; i<5; i++) fStations[i] = 1;
-    //    fStations[2] = 1;
+    fStations[2] = 1;
 
     if (fStations[2])
     {
@@ -246,9 +246,10 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
      Float_t hFramepar2[3] = { tlength/2., hFramepar[1], hFramepar[2]}; 
      Float_t bFramepar2[3] = { tlength/2., bFramepar[1], bFramepar[2]}; 
      Float_t *dum=0;
+     Float_t pcbDLength3   = (kPcbLength - tlength);
 
      const Int_t kNslats3 = 5;  // number of slats per quadrant
-     const Int_t kNPCB3[kNslats3] = {4,4,4,3,2}; // n PCB per slat
+     const Int_t kNPCB3[kNslats3] = {4, 4, 4, 3, 2}; // n PCB per slat
      const Float_t kXpos3[kNslats3] = {0., 0., 0., 0., 0.};//{31., 0., 0., 0., 0.};
      Float_t slatLength3[kNslats3]; 
 
@@ -257,24 +258,21 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
      char idSlatCh5[5];
      char idSlatCh6[5];
      Float_t xSlat3;
+     Float_t ySlat3;
      Float_t angle = 0.;
      Float_t spar2[3];
      for (i = 0; i < kNslats3; i++){
        slatLength3[i] = kPcbLength * kNPCB3[i] + 2. * kDslatLength; 
        xSlat3 = slatLength3[i]/2. + kVframeLength/2. + kXpos3[i]; 
-       Float_t ySlat31 =  kSensHeight * i - kYoverlap * i; 
-       Float_t ySlat32 = -kSensHeight * i + kYoverlap * i; 
+       ySlat3 = kSensHeight * i - kYoverlap * i; 
        spar[0] = slatLength3[i]/2.; 
        spar[1] = kSlatHeight/2.;
        spar[2] = kSlatWidth/2. * 1.01; 
        // take away 5 cm from the first slat in chamber 5
-       Float_t xSlat32 = 0;
-       if (i==0 || i==1 || i==2) { // 1 pcb is shortened by 5cm
-        spar2[0] = spar[0]-5./2.;
-        xSlat32 = xSlat3;// - 5/2.;
+        if (i == 0 || i == 1 || i == 2) { // 1 pcb is shortened by 5cm
+        spar2[0] = spar[0] - pcbDLength3/2.;
        } else {
         spar2[0] = spar[0];
-        xSlat32 = xSlat3;
        }
        spar2[1] = spar[1];
        spar2[2] = spar[2]; 
@@ -285,53 +283,51 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
        sprintf(idSlatCh5,"LA%d",kNslats3-1+i);
        gMC->Gsvolu(idSlatCh5,"BOX",kSlatMaterial,spar2,3);
        detElemId = 500 + i + kNslats3-1;
-       GetEnvelopes(4)->AddEnvelope(idSlatCh5, detElemId, true, TGeoTranslation(xSlat32, ySlat31, zSlat+2.*dzCh3),
+       GetEnvelopes(4)->AddEnvelope(idSlatCh5, detElemId, true, TGeoTranslation(xSlat3, ySlat3, zSlat+2.*dzCh3),
                                                 TGeoRotation("rot1",90,angle,90,90+angle,0,0) );
 
        sprintf(idSlatCh5,"LA%d",3*kNslats3-2+i);
        gMC->Gsvolu(idSlatCh5,"BOX",kSlatMaterial,spar2,3);
        detElemId = 550 + i + kNslats3-1;
-       GetEnvelopes(4)->AddEnvelope(idSlatCh5,  detElemId, true, TGeoTranslation(-xSlat32, ySlat31, zSlat-2.*dzCh3),
+       GetEnvelopes(4)->AddEnvelope(idSlatCh5, detElemId, true, TGeoTranslation(-xSlat3, ySlat3, zSlat-2.*dzCh3),
                                                 TGeoRotation("rot2",90,180+angle,90,90+angle,180,0) );
 
        if (i > 0) { 
         sprintf(idSlatCh5,"LA%d",kNslats3-1-i);
         gMC->Gsvolu(idSlatCh5,"BOX",kSlatMaterial,spar2,3);
         detElemId = 500 - i + kNslats3-1;
-        GetEnvelopes(4)->AddEnvelope(idSlatCh5, detElemId, true, TGeoTranslation(xSlat32, ySlat32, zSlat+2.*dzCh3), 
+        GetEnvelopes(4)->AddEnvelope(idSlatCh5, detElemId, true, TGeoTranslation(xSlat3, -ySlat3, zSlat+2.*dzCh3), 
                                                   TGeoRotation("rot3",90,angle,90,270+angle,180,0) );
 
         sprintf(idSlatCh5,"LA%d",3*kNslats3-2-i);
         gMC->Gsvolu(idSlatCh5,"BOX",kSlatMaterial,spar2,3);
         detElemId = 550 - i + kNslats3-1;
-        GetEnvelopes(4)->AddEnvelope(idSlatCh5, detElemId, true, TGeoTranslation(-xSlat32, ySlat32, zSlat-2.*dzCh3),
+        GetEnvelopes(4)->AddEnvelope(idSlatCh5, detElemId, true, TGeoTranslation(-xSlat3, -ySlat3, zSlat-2.*dzCh3),
                                                   TGeoRotation("rot4",90,180+angle,90,270+angle,0,0) );
        }
 
        sprintf(idSlatCh6,"LB%d",kNslats3-1+i);  
-
-       gMC->Gsvolu(idSlatCh6,"BOX",kSlatMaterial,spar2,3);
+       gMC->Gsvolu(idSlatCh6,"BOX",kSlatMaterial,spar,3);
        detElemId = 600 + i  + kNslats3-1;
-       GetEnvelopes(5)->AddEnvelope(idSlatCh6, detElemId, true, TGeoTranslation(xSlat3, ySlat31, zSlat+2.*dzCh3),
+       GetEnvelopes(5)->AddEnvelope(idSlatCh6, detElemId, true, TGeoTranslation(xSlat3, ySlat3, zSlat+2.*dzCh3),
                                                 TGeoRotation("rot5",90,angle,90,90+angle,0,0) );
        sprintf(idSlatCh6,"LB%d",3*kNslats3-2+i);
-
-       gMC->Gsvolu(idSlatCh6,"BOX",kSlatMaterial,spar2,3);
+       gMC->Gsvolu(idSlatCh6,"BOX",kSlatMaterial,spar,3);
        detElemId = 650 + i + kNslats3-1;
-       GetEnvelopes(5)->AddEnvelope(idSlatCh6, detElemId, true, TGeoTranslation(-xSlat3, ySlat31, zSlat-2.*dzCh3),
+       GetEnvelopes(5)->AddEnvelope(idSlatCh6, detElemId, true, TGeoTranslation(-xSlat3, ySlat3, zSlat-2.*dzCh3),
                                                 TGeoRotation("rot6",90,180+angle,90,90+angle,180,0) );
 
        if (i > 0) { 
         sprintf(idSlatCh6,"LB%d",kNslats3-1-i);
-        gMC->Gsvolu(idSlatCh6,"BOX",kSlatMaterial,spar2,3);
+        gMC->Gsvolu(idSlatCh6,"BOX",kSlatMaterial,spar,3);
         detElemId = 600 - i + kNslats3-1;
-        GetEnvelopes(5)->AddEnvelope(idSlatCh6, detElemId, true, TGeoTranslation(xSlat3, ySlat32, zSlat+2.*dzCh3),
+        GetEnvelopes(5)->AddEnvelope(idSlatCh6, detElemId, true, TGeoTranslation(xSlat3, -ySlat3, zSlat+2.*dzCh3),
                                                   TGeoRotation("rot7",90,angle,90,270+angle,180,0) );
 
         sprintf(idSlatCh6,"LB%d",3*kNslats3-2-i);
-        gMC->Gsvolu(idSlatCh6,"BOX",kSlatMaterial,spar2,3);
+        gMC->Gsvolu(idSlatCh6,"BOX",kSlatMaterial,spar,3);
         detElemId = 650 - i + kNslats3-1;
-        GetEnvelopes(5)->AddEnvelope(idSlatCh6, detElemId, true, TGeoTranslation(-xSlat3, ySlat32, zSlat-2.*dzCh3),
+        GetEnvelopes(5)->AddEnvelope(idSlatCh6, detElemId, true, TGeoTranslation(-xSlat3, -ySlat3, zSlat-2.*dzCh3),
                                                   TGeoRotation("rot8",90,180+angle,90,270+angle,0,0) );
        }
      }
@@ -394,7 +390,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
         Float_t xvFrame  = (slatLength3[i] - kVframeLength)/2.;
         Float_t xvFrame2  = xvFrame;
 
-        if (i == 0 || i == 1 || i == 2) xvFrame2 -= 5./2.;
+        if (i == 0 || i == 1 || i == 2) xvFrame2 -= pcbDLength3/2.;
 
         // position the vertical frames 
         if ( i > 2) { 
@@ -432,7 +428,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
           if (i == 0 && j == 0) continue;
           index++;
           Float_t xx = kSensLength * (-kNPCB3[i]/2. + j + 0.5); 
-          Float_t xx2 = xx - 5/2.; 
+          Float_t xx2 = xx - pcbDLength3/2.; 
         
           Float_t zPanel = spar[2] - panelpar[2]; 
 
@@ -440,13 +436,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
             GetEnvelopes(4)->AddEnvelopeConstituent("SB5C", idSlatCh5, 2*index-1,TGeoTranslation(xx2,0.,zPanel));
             GetEnvelopes(4)->AddEnvelopeConstituent("SB5C", idSlatCh5, 2*index,TGeoTranslation(xx2,0.,-zPanel));
             GetEnvelopes(4)->AddEnvelopeConstituent("SB5I", idSlatCh5, index,TGeoTranslation(xx2,0.,0.));
-          }
-          else if ( (i == 0 || i == 1 || i == 2) && j < kNPCB3[i]-1) {
-            GetEnvelopes(4)->AddEnvelopeConstituent("S05C", idSlatCh5, 2*index-1,TGeoTranslation(xx,0.,zPanel));
-            GetEnvelopes(4)->AddEnvelopeConstituent("S05C", idSlatCh5, 2*index,TGeoTranslation(xx,0.,-zPanel));
-            GetEnvelopes(4)->AddEnvelopeConstituent("S05I", idSlatCh5, index,TGeoTranslation(xx,0.,0.));
-          }
-          else {
+          } else {
             GetEnvelopes(4)->AddEnvelopeConstituent("S05C", idSlatCh5, 2*index-1,TGeoTranslation(xx,0.,zPanel));
             GetEnvelopes(4)->AddEnvelopeConstituent("S05C", idSlatCh5, 2*index,TGeoTranslation(xx,0.,-zPanel));
             GetEnvelopes(4)->AddEnvelopeConstituent("S05I", idSlatCh5, index,TGeoTranslation(xx,0.,0.));
@@ -494,7 +484,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
      gMC->Gsvolu("S05N","BOX",kNulocMaterial,nulocpar,3);
      gMC->Gsvolu("S06N","BOX",kNulocMaterial,nulocpar,3);
      index = 0;
-     Float_t xxmax2 = xxmax - 5./2.;
+     Float_t xxmax2 = xxmax - pcbDLength3/2.;
      for (xx = -xxmax; xx <= xxmax; xx += 2*kNulocLength) { 
        index++; 
        gMC->Gspos("S05N",2*index-1,"S05B", xx, 0.,-kBframeWidth/4., 0, "ONLY");
@@ -541,10 +531,10 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
        }
      }
 
-     // Volumes close to the beam pipe for slat i=0 so 2 slats per chamber (Lattes centrales de la station 3)
+     // Volumes close to the beam pipe for slat i=0 so 2 slats per chamber (central slat for station 3)
      //      Gines Martinez, Subatech sep 04
      // 9 box volumes are used to define the PCB closed to the beam pipe of the slat 122000SR1 of chamber 5 and 6 of St3
-     // Cette code a ete ecrit suivant le plan PQ-LAT-SR1 de CEA-DSM-DAPNIA-SIS/BE ph HARDY 8-Oct-2002
+     // Accordingly to plan PQ-LAT-SR1 of CEA-DSM-DAPNIA-SIS/BE ph HARDY 8-Oct-2002
      // Rmin = 31.5 cm
      Double_t rmin_122000SR1 = 31.5; //in cm  
      ndiv  = 9; 
@@ -593,7 +583,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
      iChamber2 = GetChamber(7);
 
      const Int_t kNslats4 = 7;  // number of slats per quadrant
-     const Int_t kNPCB4[kNslats4] = {5,6,5,5,4,3,2}; // n PCB per slat
+     const Int_t kNPCB4[kNslats4] = {5, 6, 5, 5, 4, 3, 2}; // n PCB per slat
      const Float_t kXpos4[kNslats4] = {38.5, 0., 0., 0., 0., 0., 0.};
      Float_t slatLength4[kNslats4];     
 
@@ -834,7 +824,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
      iChamber2 = GetChamber(9);
  
      const Int_t kNslats5 = 7;  // number of slats per quadrant
-     const Int_t kNPCB5[kNslats5] = {5,6,6,6,5,4,3}; // n PCB per slat
+     const Int_t kNPCB5[kNslats5] = {5, 6, 6, 6, 5, 4, 3}; // n PCB per slat
      const Float_t kXpos5[kNslats5] = {38.5, 0., 0., 0., 0., 0., 0.};
      Float_t slatLength5[kNslats5]; 
 
index 568fc75c9edd6abc3255eea3fef5f7657415c4b0..7bcdae6aa9fe030d1a54a85ef19b1a532aa81885 100644 (file)
@@ -1,4 +1,44 @@
-MUONdisplay (Int_t nevent=0, TString fileName="galice.root") {
+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ *                                                                        *
+ * Author: The ALICE Off-line Project.                                    *
+ * Contributors are mentioned in the code where appropriate.              *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+
+#if !defined(__CINT__) || defined(__MAKECINT__)
+//#include "iostream.h"
+
+#include <TClassTable.h>
+#include <TClonesArray.h>
+#include <TFile.h>
+#include <TParticle.h>
+#include <TROOT.h>
+#include <TTree.h>
+
+#include "AliHeader.h"
+#include "AliRun.h"
+#include "AliRunLoader.h"
+#include "AliMagF.h"
+
+#include "AliMUON.h"
+#include "AliMUONDisplay.h"
+#endif
+
+
+
+void MUONdisplay (Int_t nevent=0, TString fileName="galice.root") {
+
+  // set off mag field 
+  AliMagF::SetReadField(kFALSE);
  
   // Getting runloader 
   AliRunLoader * RunLoader = AliRunLoader::Open(fileName.Data(),"MUONFolder","READ");
@@ -9,20 +49,21 @@ MUONdisplay (Int_t nevent=0, TString fileName="galice.root") {
   RunLoader->LoadHeader();
   RunLoader->LoadKinematics("READ");
 
+  //  if (RunLoader->GetAliRun() == 0x0) 
+  RunLoader->LoadgAlice();
+  gAlice = RunLoader->GetAliRun();
+
   // Getting MUONloader 
   AliLoader * MUONLoader  = RunLoader->GetLoader("MUONLoader");
   MUONLoader->LoadHits("READ");
   MUONLoader->LoadDigits("READ");
   MUONLoader->LoadRecPoints("READ");
 
-  //  if (RunLoader->GetAliRun() == 0x0) 
-  RunLoader->LoadgAlice();
-  gAlice = RunLoader->GetAliRun();
 
+  // Create Event Display object
+  AliMUONDisplay *muondisplay = new AliMUONDisplay(750, MUONLoader);
 
-// Create Event Display object
-   AliMUONDisplay *muondisplay = new AliMUONDisplay(750, MUONLoader);
-   RunLoader->GetEvent(nevent);
-   muondisplay->ShowNextEvent(0);
+  // Display first event
+  RunLoader->GetEvent(nevent);
+  muondisplay->ShowNextEvent(0);
 }