]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - VZERO/AliVZEROv6.cxx
Adding name as attribute and GetDEName() method;
[u/mrichter/AliRoot.git] / VZERO / AliVZEROv6.cxx
index 5837a2c20261cb1c0c58e8ce78829e0552ff5c83..a2777c834b54b40a52d8c8f1f4157a81aab1ea13 100644 (file)
 //                                                                  //
 //////////////////////////////////////////////////////////////////////
 
-// --- Standard libraries ---
-#include <Riostream.h>
-#include <stdlib.h>
-#include <string.h>
-
-// --- ROOT libraries ---
-#include <TClonesArray.h>
-#include <TGeometry.h>
-#include <TLorentzVector.h>
-#include <TMath.h>
-#include <TNode.h>
-#include <TObjectTable.h>
-#include <TVirtualMC.h>
-#include <TParticle.h>
-
-#include <TGeoManager.h>
-#include <TGeoMaterial.h>
-#include <TGeoMedium.h>
-#include <TGeoNode.h>
-#include <TGeoVolume.h>
-#include "TGeoTube.h"
-#include "TGeoMatrix.h"
-
-// --- AliRoot header files ---
-#include "AliRun.h"
-#include "AliMC.h"
-#include "AliConst.h"
-#include "AliMagF.h"
-#include "AliVZEROLoader.h"
-#include "AliVZEROdigit.h"
-#include "AliVZEROhit.h"
 #include "AliVZEROv6.h"
-#include "AliLog.h"
  
 ClassImp(AliVZEROv6)
 
@@ -128,37 +96,28 @@ void AliVZEROv6::CreateGeometry()
   
   AliDebug(2,"VZERO ConstructGeometry");
   
-  TGeoManager *geoManager = gGeoManager;
-  TGeoMedium  *medAir = gGeoManager->GetMedium("VZERO_Air"); 
+//  TGeoMedium  *medAir = gGeoManager->GetMedium("VZERO_Air"); 
   TGeoMedium  *medAlu = gGeoManager->GetMedium("VZERO_Aluminum");
   TGeoMedium  *medCar = gGeoManager->GetMedium("VZERO_Carbon");
   TGeoMedium  *medSci = gGeoManager->GetMedium("VZERO_Scintillator");
     
   TGeoVolume *top = gGeoManager->GetVolume("ALIC");
   
-  top->SetLineColor(kMagenta);
-
   Float_t  heightRight, r4Right;
   
   Float_t  zdet   =    90.0 - 0.5 - fV0CBoxThickness/2.0;
   heightRight     =    fV0CHeight1 + fV0CHeight2 + fV0CHeight3 + fV0CHeight4;
   r4Right         =    fV0CRMin + heightRight + 3.0*0.2;  // 3 spacings of 2mm between rings
-    
-  Float_t   partube[3];
 
-  partube[0] =  fV0CRMin - 0.3;
-  partube[1] =  fV0CRBox + 0.3;
-  partube[2] =  fV0CBoxThickness/2.0;   
+// Creation of assembly V0RI - right part - :
 
-// Creation of mother volume V0RI - right part - :
-
-  TGeoTube   *sV0RI = new TGeoTube("V0RI",partube[0], partube[1], partube[2]);
-  TGeoVolume *v0RI  = new TGeoVolume("V0RI",sV0RI,medAir);
+  TGeoVolume *v0RI = new TGeoVolumeAssembly("V0RI");  
   TGeoTranslation *tr1 = new TGeoTranslation(0.,0.,-zdet);
   top->AddNode(v0RI,1,tr1);
-  v0RI->SetVisibility(kFALSE);
 
 // Creation of  carbon lids (3.0 mm thick) to keep V0C box shut :
+    
+  Float_t   partube[3];
   
   partube[0] =   fV0CRMin;
   partube[1] =   fV0CRBox;
@@ -192,31 +151,24 @@ void AliVZEROv6::CreateGeometry()
   v0RI->AddNode(v0ER,1,0);
   v0ER->SetLineColor(kYellow);
   
-// Mother volume v0R0 in which will be set the scintillator cells 
-  
-  Float_t   partubs[5];
+// Creation of assembly V0R0 of scintillator cells within one sector
  
-  partubs[0]      =  fV0CRMin;
-  partubs[1]      =   r4Right;
-  partubs[2]      =  fV0CBoxThickness/2.0;
-  partubs[3]      =  90.0-22.5;
-  partubs[4]      = 135.0-22.5;
-
-  TGeoTubeSeg  *sV0R0 = new TGeoTubeSeg("V0R0", partubs[0], partubs[1], partubs[2], 
-                                                partubs[3], partubs[4]);
-  TGeoVolume   *v0R0  = new TGeoVolume("V0R0",sV0R0,medAir);
-                                         
+  TGeoVolume *v0R0 = new TGeoVolumeAssembly("V0R0");                                     
                                                 
 // Elementary cell of ring 1  - right part - :
 // (cells of ring 1 will be shifted by 2.0 cm backwards to output fibers)
                                                  
   Float_t   r1Right =  fV0CRMin + fV0CHeight1;
-  Float_t   offset  = fV0CBoxThickness/2.0 - fV0CLidThickness - fV0CCellThickness/2.0; 
-    
+  Float_t   offset  = fV0CBoxThickness/2.0 - fV0CLidThickness - fV0CCellThickness/2.0;   
+
+  Float_t   partubs[5];   
+     
   partubs[0]     =  fV0CRMin;
   partubs[1]     =  r1Right;
   partubs[2]     =  fV0CCellThickness/2.0;
-
+  partubs[3]      =  90.0-22.5;
+  partubs[4]      = 135.0-22.5;
+  
   TGeoTubeSeg  *sV0R1 = new TGeoTubeSeg("V0R1", partubs[0], partubs[1], partubs[2], 
                                                 partubs[3], partubs[4]);
   TGeoVolume   *v0R1  =  new TGeoVolume("V0R1",sV0R1,medSci);                                 
@@ -244,7 +196,7 @@ void AliVZEROv6::CreateGeometry()
   
   r2Right  =  r2Right + 0.2;
   Float_t   r3Right  =  r2Right + fV0CHeight3;     
-//  printf(" r2 = %f, r3 = %f \n\n", r2Right,r3Right  ); 
+//  printf(" r2 = %f, r3 = %f \n\n", r2Right,r3Right); 
   
   partubs[0]     =  r2Right;  //  must be equal to 11.7
   partubs[1]     =  r3Right;  //  must be equal to 19.1
@@ -311,31 +263,20 @@ void AliVZEROv6::CreateGeometry()
   ncellsR = (nsecR - 1) * 6;    // 6 cells per sector (2 cells in  ring 3 and 4)  
   AliInfo(Form("Number of cells on Right side  - V0C =   %d",  ncellsR)); 
   
-// Creation of mother volume v0LE - left part - :
+// Creation of assembly v0LE - left part - :
 // Entrance face at  +339.0 cm  (new coordinate system) ...
           
   Float_t   heightLeft  = fV0AHeight1 + fV0AHeight2 + fV0AHeight3 + fV0AHeight4;   
   Float_t   r4Left      = fV0ARMin + heightLeft; 
-
-  partube[0] =  fV0ARMin;
-  partube[1] =  r4Left;
-  partube[2] =  fV0ACellThickness/2.0; 
-
-  TGeoTube   *sV0LE = new TGeoTube("V0LE",partube[0], partube[1], partube[2]);
-  TGeoVolume *v0LE  = new TGeoVolume("V0LE",sV0LE,medAir);
+  TGeoVolume *v0LE = new TGeoVolumeAssembly("V0LE"); 
+   
   TGeoTranslation *tr8 = new TGeoTranslation(0.,0.,339.0 + fV0ACellThickness/2.0);
   top->AddNode(v0LE,1,tr8);
-   
-  partubs[0]      =  fV0ARMin;
-  partubs[1]      =  r4Left;
-  partubs[2]      =  fV0ACellThickness/2.0;
-  partubs[3]      =  90.0-22.5;
-  partubs[4]      = 135.0-22.5;
-
-  TGeoTubeSeg  *sV0L0 = new TGeoTubeSeg("V0L0", partubs[0], partubs[1], partubs[2], 
-                                                partubs[3], partubs[4]);
-  TGeoVolume   *v0L0  = new TGeoVolume("V0L0",sV0L0,medAir);
-  v0L0->SetVisibility(kFALSE);                                   
+  
+// Creation of assembly V0L0 of scintillator cells within one sector 
+  
+  TGeoVolume *v0L0 = new TGeoVolumeAssembly("V0L0");                                     
    
   Float_t   offsetLeft;
   offsetLeft    = - fV0ACellThickness/2.0; 
@@ -344,7 +285,10 @@ void AliVZEROv6::CreateGeometry()
       
   partubs[0]     =  fV0ARMin;
   partubs[1]     =  r1Left;
-
+  partubs[2]      =  fV0ACellThickness/2.0;
+  partubs[3]      =  90.0-22.5;
+  partubs[4]      = 135.0-22.5;
+  
   TGeoTubeSeg  *sV0L1 = new TGeoTubeSeg("V0L1", partubs[0], partubs[1], partubs[2], 
                                                 partubs[3], partubs[4]);
   TGeoVolume   *v0L1  =  new TGeoVolume("V0L1",sV0L1,medSci);                                 
@@ -399,10 +343,10 @@ void AliVZEROv6::CreateGeometry()
      
   ncellsL = (nsecL - 1) * 4;    // 4 cells per sector
   AliInfo(Form("Number of cells on Left  side  - V0A =   %d\n",  ncellsL));
+
+  gGeoManager->SetTopVolume(top); 
   gGeoManager->CloseGeometry();  
 //  gGeoManager-> SetVisLevel(4);
-  geoManager->Export("VZEROGeometry.root"); 
 }  
     
 //_____________________________________________________________________________
@@ -416,7 +360,7 @@ void AliVZEROv6::CreateMaterials()
 //   Int_t  *idtmed = fIdtmed->GetArray()-2999;
       
    Int_t     fieldType       = gAlice->Field()->Integ();     // Field type 
-   Double_t  maxField        = gAlice->Field()->Max();     // Field max.
+   Double_t  maxField        = gAlice->Field()->Max();       // Field max.
    Double_t  maxBending      = 0;     // Max Angle
    Double_t  maxStepSize     = 0.001; // Max step size 
    Double_t  maxEnergyLoss   = 1;     // Max Delta E
@@ -427,14 +371,14 @@ void AliVZEROv6::CreateMaterials()
    Float_t   tmaxfd, stemax, deemax, epsil, stmin;
    
    a = 0.0; z = 0.0; 
-   density   = 0.0;
-   radLength = 0.0; 
-   absLength = 999.0;
-   tmaxfd    = 10.;
-   stemax    = 0.1;
-   deemax    = 0.1;     
-   epsil     = 0.001;
-   stmin     = 0.001;
+   density    = 0.0;
+   radLength  = 0.0; 
+   absLength  = 999.0;
+   tmaxfd     = 10.;
+   stemax     = 0.1;
+   deemax     = 0.1;     
+   epsil      = 0.001;
+   stmin      = 0.001;
    
 // Parameters  for Air (=  0.01% C + 75% N + 23% O + 1% Ar )
 
@@ -656,7 +600,7 @@ void AliVZEROv6::StepManager()
         hits[18] = tlength;
         hits[19] = nPhotons;
         hits[20] = GetCellId (vol, hits); 
-                
+                
          AddHit(gAlice->GetMCApp()->GetCurrentTrackNumber(), vol, hits);
                 
         tlength         = 0.0;
@@ -728,7 +672,7 @@ Int_t AliVZEROv6::GetCellId(Int_t *vol, Float_t *hits)
   //   vol[1]  = copy number (1 to 8)
 
    Int_t index      = vol[1];
-   Int_t RingNumber = Int_t(hits[8]);   
+   Int_t ringNumber = Int_t(hits[8]);   
    fCellId          = 0;
    
 //    cout << "volID = " << vol[0] << "  copy = " << vol[1] << endl;
@@ -741,24 +685,24 @@ Int_t AliVZEROv6::GetCellId(Int_t *vol, Float_t *hits)
    if (index < 7) index = index + 8; 
    
    if (hits[2] < 0.0) { 
-      if(RingNumber < 3) {
-         index = (index - 7) + ( ( RingNumber - 1 ) * 8);}
-      else if(RingNumber >= 3){ 
+      if(ringNumber < 3) {
+         index = (index - 7) + ( ( ringNumber - 1 ) * 8);}
+      else if(ringNumber >= 3){ 
        if(gMC->CurrentVolID(vol[1]) == gMC->VolId("V0R3")|| 
           gMC->CurrentVolID(vol[1]) == gMC->VolId("V0R5") ) 
-         {index = (index*2 - 14) + ( ( RingNumber - 2 ) * 16); }
+         {index = (index*2 - 14) + ( ( ringNumber - 2 ) * 16); }
        if(gMC->CurrentVolID(vol[1]) == gMC->VolId("V0R4")||
           gMC->CurrentVolID(vol[1]) == gMC->VolId("V0R6") ) 
-         {index = (index*2 - 13) + ( ( RingNumber - 2 ) * 16); }
+         {index = (index*2 - 13) + ( ( ringNumber - 2 ) * 16); }
       }
       fCellId   = index;           
    }
            
    else if (hits[2] > 0.0){
-      index = (index - 7 + 48) + ( ( RingNumber - 1 ) * 8);
+      index = (index - 7 + 48) + ( ( ringNumber - 1 ) * 8);
       fCellId   = index;}
              
-//    cout << " ring   = " << RingNumber << " phi = "<<  phi << endl; 
+//    cout << " ring   = " << ringNumber << " phi = "<<  phi << endl; 
 //    cout << " cellID = " << fCellId <<  endl;
 //    cout <<  "**********" << endl;