]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ACORDE/AliACORDEv1.cxx
including AliSurveyToAlignObjs class in .pkg and LinkDef files
[u/mrichter/AliRoot.git] / ACORDE / AliACORDEv1.cxx
index a111e7fb651437e6bc861a07f033c072b775480d..ad80e77e691405af35e385b162e9bd3b7336f801 100644 (file)
 //                                                                           //
 // ALICE Cosmic Ray Trigger                                                  //
 //                                                                           //
-//  This class contains the functions for version 0 of the ALICE Cosmic Ray  //
-//  Trigger. This version will be used to simulation comic rays in alice with//
-//  all the detectors. It include geometry and hits (position and momentum)  //
+//  This class contains the functions for final version of the ALICE Cosmic  //
+//  Ray Trigger. This version will be used to simulation comic rays in alice //
+//  with all the detectors.                                                 //
+//  It include geometry and hits (position and momentum)                     //
 //                                                                           //
 //                  Send comments to:                                        //
 //                                                                          //
 //      Arturo Fernandez Tellez        <afernand@fcfm.buap.mx>              //
-//      Enrique Gamez                  <egamez@fcfm.buap.mx>                //
 //      Eleazar Cuautle Flores         <ecuautle@nucleares.unam.mx>         //
 //     Mario Rodriguez Cahuantzi       <mrodrigu@mail.cern.ch>              // 
 //                                                                          //
 //                     Puebla, Pue. Mexico December 2007                    //
+//                                                                          //
+//     Last Update: Aug. 4th 2008                                           //
 ///////////////////////////////////////////////////////////////////////////////
 
 
-//
 #include <Riostream.h>
 #include <TGeoMatrix.h>
 #include <TGeometry.h>
 #include <TMath.h>
-//#include <TNode.h>
 #include <TTUBE.h>
-//#include <TVirtualMC.h>
 #include <TString.h>
 #include <TSystem.h>
 
 #include "TGeoManager.h"
 #include "TGeoVolume.h"
 #include "TGeoPcon.h"
-//#include "TGeoTube.h"
 #include "TGeoPgon.h"
 #include "TGeoTrd1.h"
 #include "TGeoCompositeShape.h"
 #include "TGeoPara.h"
-//
 
 #include "AliACORDEv1.h"
 #include <TClonesArray.h>
 #include <TLorentzVector.h>
 #include <TVirtualMC.h>
 #include <TPDGCode.h>
-//#include <TGeometry.h>
 #include <TBRIK.h>
 #include <TNode.h>
  
@@ -545,13 +541,11 @@ void AliACORDEv1::CreateAcorde()
   // |         ACORDE8--> Volume for supports                                       |  
   // |          ACORDE9--> Volume for supports                                      |          
   // |         ACORDE_SUPPORT--> Volume that contains a full Acorde's support       |
-  // |         ACORDE_MODULE--> Volume that contains a full Acorde's module         |  
+  // |         ALL_ACORDE_MODULES--> Volume that contains ALL Acorde's module       |  
+  // |          ACORDE_MODULE--> Volume that represents ONE Acorde-Module            |
   // |         ACORDE_1--> Volume that contains the bars&supports in-face           |
   // |         ACORDE_2--> Volume that contains the bars&supports up-face           |  
   // |         ACORDE_3--> Volume that contains the bars&supports out-face          |
-  // |         ACORDE_4--> Volume that contains the modules of ACORDE in-face       |
-  // |         ACORDE_5--> Volume that contains the modules of ACORDE up-face       |
-  // |         ACORDE_6--> Volume that contains the modules of ACORDE out-face      |
   // |                                                                              |  
   // |_______________________________________________________________________________|
 
@@ -581,11 +575,7 @@ void AliACORDEv1::CreateAcorde()
        TGeoVolume *inFace = new TGeoVolumeAssembly("ACORDE_1");
        TGeoVolume *upFace = new TGeoVolumeAssembly("ACORDE_2");
        TGeoVolume *outFace = new TGeoVolumeAssembly("ACORDE_3");
-
-       //TGeoVolume *inFacem = new TGeoVolumeAssembly("ACORDE_4");
-       //TGeoVolume *upFacem = new TGeoVolumeAssembly("ACORDE_5");
-       //TGeoVolume *outFacem = new TGeoVolumeAssembly("ACORDE_6");
-       TGeoVolume *modules = new TGeoVolumeAssembly("ACORDE_MODULES");
+       TGeoVolume *modules = new TGeoVolumeAssembly("ALL_ACORDE_MODULES");
 
        // Define global variables
 
@@ -640,15 +630,15 @@ void AliACORDEv1::CreateAcorde()
 
        // Here I define & construct a Master Volume ("ACORDE_MODULE") for one Module in ACORDE
 
-       TGeoVolume *module = new TGeoVolumeAssembly("ACORDE_MODULE");
-       module->AddNode(aCORDE1qa,1,new TGeoTranslation("aco1",0,0,13));
-       module->AddNode(aCORDE1qa,2,new TGeoTranslation("aco10",0,0,-13));
-       module->AddNode(aCORDE10,3,new TGeoTranslation("aco10",293/2+5,0,0));
-       module->AddNode(aCORDE10,4,new TGeoTranslation("aco10",-293/2-5,0,0));
+       TGeoVolume *acomodule = new TGeoVolumeAssembly("ACORDE_MODULE");
+       acomodule->AddNode(aCORDE1qa,1,new TGeoTranslation("aco1",0,0,13));
+       acomodule->AddNode(aCORDE1qa,2,new TGeoTranslation("aco10",0,0,-13));
+       acomodule->AddNode(aCORDE10,3,new TGeoTranslation("aco10",293/2+5,0,0));
+       acomodule->AddNode(aCORDE10,4,new TGeoTranslation("aco10",-293/2-5,0,0));
         placedAt = pbox[1]+constants->ProfileThickness()-constants->ModuleHeight()/2+small;
-       module->AddNode(aCORDE2,5,new TGeoTranslation("aco2",placedAt,0,0));
+       acomodule->AddNode(aCORDE2,5,new TGeoTranslation("aco2",placedAt,0,0));
         placedAt = placedAt + 2.0*pbox[1]+small;
-       module->AddNode(aCORDE2,6,new TGeoTranslation("aco2",placedAt,-1,0));
+       acomodule->AddNode(aCORDE2,6,new TGeoTranslation("aco2",placedAt,-1,0));
        Float_t w1 = 8;
 
        
@@ -657,49 +647,53 @@ void AliACORDEv1::CreateAcorde()
        // Put the Modules of In-Face
        
        count=1;
-       for(Int_t i=2;i<10;i++){
-
-               Float_t posx = constants->ModulePositionX(i-1);
-               Float_t posy = constants->ModulePositionY(i-1);
-               Float_t posz = constants->ModulePositionZ(i-1); 
+       for(Int_t i=1;i<9;i++){
 
-               modules->AddNode(module,i-1,
+               Float_t posx = constants->ModulePositionX(i);
+               Float_t posy = constants->ModulePositionY(i);
+               Float_t posz = constants->ModulePositionZ(i);   
+                Int_t moduleElectronicID = constants->ModuleElectronicChannel(i); 
+               
+               modules->AddNode(acomodule,moduleElectronicID,
                        new TGeoCombiTrans("aco01",posx,posy-w1,posz,idrotm232));
                count++;
 
        }
 
        count=9;
-       for(Int_t i=11;i<21;i++){
-               Float_t posx = constants->ModulePositionX(i-1);
-               Float_t posy = constants->ModulePositionY(i-1);
-               Float_t posz = constants->ModulePositionZ(i-1); 
+       for(Int_t i=10;i<20;i++){
+               Float_t posx = constants->ModulePositionX(i);
+               Float_t posy = constants->ModulePositionY(i);
+               Float_t posz = constants->ModulePositionZ(i);
+               Int_t moduleElectronicID = constants->ModuleElectronicChannel(i);       
 
-               modules->AddNode(module,i-1,
+               modules->AddNode(acomodule,moduleElectronicID,
                        new TGeoCombiTrans("aco01",posx,posy-w1,posz,idrotm232));
        }
 
        // Put he Modules of Up-Face
 
        count=1;
-       for(Int_t i=21;i<41;i++){
-               Float_t posx = constants->ModulePositionX(i-1);
-               Float_t posy = constants->ModulePositionY(i-1);
-               Float_t posz = constants->ModulePositionZ(i-1); 
+       for(Int_t i=20;i<40;i++){
+               Float_t posx = constants->ModulePositionX(i);
+               Float_t posy = constants->ModulePositionY(i);
+               Float_t posz = constants->ModulePositionZ(i);   
+               Int_t moduleElectronicID = constants->ModuleElectronicChannel(i); 
 
-               modules->AddNode(module,i-1,new TGeoTranslation("aco01",posx,posy,posz));
+               modules->AddNode(acomodule,moduleElectronicID,new TGeoTranslation("aco01",posx,posy,posz));
                count++;
        }
 
        // Put the Modules of Out-Face
 
        count=1;
-       for(Int_t i=41;i<51;i++){
-               Float_t posx = constants->ModulePositionX(i-1);
-               Float_t posy = constants->ModulePositionY(i-1);
-               Float_t posz = constants->ModulePositionZ(i-1); 
+       for(Int_t i=40;i<50;i++){
+               Float_t posx = constants->ModulePositionX(i);
+               Float_t posy = constants->ModulePositionY(i);
+               Float_t posz = constants->ModulePositionZ(i);   
+               Int_t moduleElectronicID = constants->ModuleElectronicChannel(i); 
 
-               modules->AddNode(module,i-1,
+               modules->AddNode(acomodule,moduleElectronicID,
                        new TGeoCombiTrans("aco01",posx,posy-w1,posz,idrotm231));
                count++;
        }
@@ -707,15 +701,17 @@ void AliACORDEv1::CreateAcorde()
        // Put the Modules of Out-Face
 
        count=11;
-       for(Int_t i=52;i<60;i++){
-               Float_t posx = constants->ModulePositionX(i-1);
-               Float_t posy = constants->ModulePositionY(i-1);
-               Float_t posz = constants->ModulePositionZ(i-1); 
+       for(Int_t i=51;i<59;i++){
+               Float_t posx = constants->ModulePositionX(i);
+               Float_t posy = constants->ModulePositionY(i);
+               Float_t posz = constants->ModulePositionZ(i);   
+               Int_t moduleElectronicID = constants->ModuleElectronicChannel(i); 
+
        if ((i==57) || (i==56))
-                modules->AddNode(module,i-1,
+                modules->AddNode(acomodule,moduleElectronicID,
                                        new TGeoCombiTrans("aco01",posx,posy-w1,posz-w1,idrotm231));
        else
-               modules->AddNode(module,i-1,
+               modules->AddNode(acomodule,moduleElectronicID,
                        new TGeoCombiTrans("aco01",posx,posy-w1,posz,idrotm231));
                count++;
        }
@@ -725,22 +721,22 @@ void AliACORDEv1::CreateAcorde()
 
        if (GetITSGeometry()) {
 
-               modules->AddNode(module,9,new TGeoTranslation("its1",
+               modules->AddNode(acomodule,constants->ModuleElectronicChannel(50),new TGeoTranslation("ITS-3",
                                constants->ExtraModulePositionX(),
                                constants->ExtraModulePositionY(),
                                constants->ExtraModulePositionZ(0)));
 
-               modules->AddNode(module,50,new TGeoTranslation("its2",
+               modules->AddNode(acomodule,constants->ModuleElectronicChannel(59),new TGeoTranslation("ITS-4",
                                constants->ExtraModulePositionX(),
                                constants->ExtraModulePositionY(),
                                constants->ExtraModulePositionZ(1)));
 
-               modules->AddNode(module,59,new TGeoTranslation("its3",
+               modules->AddNode(acomodule,constants->ModuleElectronicChannel(0),new TGeoTranslation("ITS-1",
                                constants->ExtraModulePositionX(),
                                constants->ExtraModulePositionY(),
                                constants->ExtraModulePositionZ(2)));
 
-               modules->AddNode(module,60,new TGeoTranslation("its4",
+               modules->AddNode(acomodule,constants->ModuleElectronicChannel(9),new TGeoTranslation("ITS-2",
                                constants->ExtraModulePositionX(),
                                constants->ExtraModulePositionY(),
                                constants->ExtraModulePositionZ(3)));
@@ -750,22 +746,22 @@ void AliACORDEv1::CreateAcorde()
        else {
 
 
-               modules->AddNode(module,61,new TGeoTranslation("its1",
+               modules->AddNode(acomodule,61,new TGeoTranslation("its1",
                                constants->ModulePositionX(0),
                                constants->ModulePositionY(0),
                                constants->ModulePositionZ(0)));
 
-               modules->AddNode(module,62,new TGeoTranslation("its2",
+               modules->AddNode(acomodule,62,new TGeoTranslation("its2",
                                constants->ModulePositionX(9),
                                constants->ModulePositionY(9),
                                constants->ModulePositionZ(9)));
 
-               modules->AddNode(module,63,new TGeoTranslation("its3",
+               modules->AddNode(acomodule,63,new TGeoTranslation("its3",
                                constants->ModulePositionX(50),
                                constants->ModulePositionY(50),
                                constants->ModulePositionZ(50)));
 
-               modules->AddNode(module,64,new TGeoTranslation("its4",
+               modules->AddNode(acomodule,64,new TGeoTranslation("its4",
                                constants->ModulePositionX(59),
                                constants->ModulePositionY(59),
                                constants->ModulePositionZ(59)));
@@ -1589,7 +1585,6 @@ void AliACORDEv1::StepManager()
   // only in sensitive material
   if (gMC->CurrentVolID(copy) == idScint) {
 
-    //printf("Hay particula cargada en el volumen %d \n",idScint);
     step  += gMC->TrackStep();
     eloss += gMC->Edep();
     // set all hit variables except eloss which is resetted
@@ -1609,14 +1604,14 @@ void AliACORDEv1::StepManager()
       hits[0]  = (Float_t ) gMC->TrackPid(); 
 
 
-      hits[1] = pos[0]; //printf("PosX %f \n",hits[1]);
-      hits[2] = pos[1]; //printf("PosY %f \n",hits[2]);
-      hits[3] = pos[2]; //printf("PosZ %f \n",hits[3]);
-      hits[4] = gMC->TrackTime();//printf("TimeTracking %f \n",hits[4]);
-      hits[5] = mom[0]; //printf("MomentoX %f \n",hits[5]);
-      hits[6] = mom[1]; //printf("MomentoY %f \n",hits[6]);
-      hits[7] = mom[2]; //printf("MomentoZ %f \n",hits[7]);
-      hits[8] = gMC->Etot();//printf("EnergiaTotal %f \n",hits[8]);
+      hits[1] = pos[0]; 
+      hits[2] = pos[1]; 
+      hits[3] = pos[2]; 
+      hits[4] = gMC->TrackTime();
+      hits[5] = mom[0];
+      hits[6] = mom[1];
+      hits[7] = mom[2];
+      hits[8] = gMC->Etot();
       // volume: 
       //  [0] = module number 1-60 (1==>(0-0), 60 (5-9)
       //  [1] = Plastic number: 0 (down) to 1 (up)
@@ -1635,7 +1630,7 @@ void AliACORDEv1::StepManager()
     if( gMC->IsTrackExiting() || 
        gMC->IsTrackStop() || 
        gMC->IsTrackDisappeared()){
-      hits[9] = eloss;//printf("Energia Perdida %f \n",hits[9]);
+      hits[9] = eloss;
       hits[10] = step;
       eloss = 0.0;
       step = 0.0;
@@ -1659,7 +1654,6 @@ void AliACORDEv1::AddHit(Int_t track, Int_t *vol, Float_t *hits)
 
 //_____________________________________________________________________________
 void AliACORDEv1::AddDigits(Int_t* track, Int_t module, Float_t time)
-//void AliACORDEv1::AddDigits(Int_t track, Int_t *vol, Float_t *digits)
 {
   
   // Adds Digit
@@ -1714,7 +1708,7 @@ void AliACORDEv1::AddAlignableVolumes() const
        //
        //     Send comments to: Mario Rodriguez Cahuantzi <mrodrigu@mail.cern.ch>
 
-       TString vpstr1 = "ALIC_1/ACORDE_1/ACORDE_MODULES_4/ACORDE_MODULE_";
+       TString vpstr1 = "ALIC_1/ACORDE_1/ALL_ACORDE_MODULES_4/ACORDE_MODULE_";
        TString snstr1 = "ACORDE/Array";
        TString volpath, symname;
        for(Int_t dy=1; dy<61 ; dy++)