]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TPC/AliTPCv2.cxx
Setting the branch address to permit correct reading
[u/mrichter/AliRoot.git] / TPC / AliTPCv2.cxx
index 0783ce669f239947e573ad2107b03e12f12bded7..e0e5493b201ad45d2a8c5170457b98ed939ec765 100644 (file)
 
 /*
 $Log$
+Revision 1.47  2003/03/04 15:16:54  kowal2
+Geometry corrected for an overlap
+
+Revision 1.46  2003/02/11 16:54:07  hristov
+Updated AliTrackReference class (S.Radomski)
+
+Revision 1.45  2003/01/14 10:50:20  alibrary
+Cleanup of STEER coding conventions
+
+Revision 1.44  2002/11/21 22:43:32  alibrary
+Removing AliMC and AliMCProcess
+
+Revision 1.43  2002/10/14 14:57:43  hristov
+Merging the VirtualMC branch to the main development branch (HEAD)
+
+Revision 1.40.6.2  2002/07/24 10:09:01  alibrary
+Updating VirtualMC
+
+Revision 1.42  2002/06/12 14:56:56  kowal2
+Added track length to the reference hits
+
+Revision 1.41  2002/05/27 14:33:15  hristov
+The new class AliTrackReference used (M.Ivanov)
+
+Revision 1.40  2002/01/21 17:12:00  kowal2
+New track hits structure using root containers
+
+Revision 1.39  2001/05/16 14:57:25  alibrary
+New files for folders and Stack
+
+Revision 1.38  2001/05/08 16:03:06  kowal2
+Geometry update according to the latest technical spec.
+
+Revision 1.37  2001/04/27 15:23:07  kowal2
+Correct materian in the central part of the inner containment vessel
+
+Revision 1.36  2001/04/26 06:15:12  kowal2
+Corrected bug in the inner containment vessel (cones)
+
 Revision 1.35  2001/04/24 11:17:33  kowal2
 New TPC geometry.
 
@@ -121,22 +160,21 @@ Introduction of the Copyright and cvs Log
 //                                                                           //
 //                                                                           //
 ///////////////////////////////////////////////////////////////////////////////
+
 #include <stdlib.h>
 
 #include <TMath.h>
+#include <TPDGCode.h>
 
-#include "AliTPCv2.h"
-#include "AliTPCDigitsArray.h"
-#include "AliRun.h"
-#include "AliMC.h"
 #include "AliConst.h"
-#include "AliPDG.h"
+#include "AliRun.h"
+#include "AliTPCDigitsArray.h"
 #include "AliTPCParam.h"
 #include "AliTPCParamSR.h"
-#include "AliTPCTrackHits.h"
+#include "AliTPCTrackHitsV2.h"
+#include "AliTPCv2.h"
 #include "TLorentzVector.h"
 
-
 ClassImp(AliTPCv2)
  
 //_____________________________________________________________________________
@@ -207,18 +245,18 @@ void AliTPCv2::CreateGeometry()
     for (i = 0; i < 6; ++i) {
       if (fSecLows[i] >= 0 && fSecLows[i] < 2*nInnerSector) {
        ifl1 = 1;
-       printf("*** SECTOR %d selected\n",fSecLows[i]);
+       printf("%s: *** SECTOR %d selected\n",ClassName(),fSecLows[i]);
       }
     }
 
   } else {
-    printf("*** ALL LOWER SECTORS SELECTED ***\n");
+    printf("%s: *** ALL LOWER SECTORS SELECTED ***\n",ClassName());
     ifl1 = 1;
   }
 
   if (ifl1 == 0) {
-    printf("*** ERROR: AT LEAST ONE LOWER SECTOR MUST BE SPECIFIED ***\n");
-    printf("!!! PROGRAM STOPPED !!!\n");
+    printf("%s: *** ERROR: AT LEAST ONE LOWER SECTOR MUST BE SPECIFIED ***\n",ClassName());
+    printf("%s: !!! PROGRAM STOPPED !!!\n",ClassName());
     exit(1);
   }
 
@@ -227,12 +265,12 @@ void AliTPCv2::CreateGeometry()
     for (i = 0; i < 12; ++i) {
       if (fSecUps[i] > 2*nInnerSector-1 && 
           fSecUps[i] < 2*(nInnerSector+nOuterSector)) {
-       printf("*** SECTOR %d selected\n",fSecUps[i]);
+       printf("%s: *** SECTOR %d selected\n",ClassName(),fSecUps[i]);
       }
     }
     
   } else {
-    printf("*** ALL UPPER SECTORS SELECTED ***\n");
+    printf("%s: *** ALL UPPER SECTORS SELECTED ***\n",ClassName());
   }
   
  
@@ -369,13 +407,13 @@ void AliTPCv2::CreateGeometry()
   //
 
   dm[9]=-247.6;
-  dm[10]=274.81;
+  dm[10]=274.8124;
   dm[11]=278.;
 
   //
 
   dm[12]=253.6;
-  dm[13]=274.81;
+  dm[13]=274.8124;
   dm[14]=278.;
 
   //
@@ -396,7 +434,7 @@ void AliTPCv2::CreateGeometry()
 
   // Tpc SAndwich 1 - Al
 
-  dm[0]=274.81;
+  dm[0]=274.8124;
   dm[1]=278.;
   dm[2]=252.1;
 
@@ -419,8 +457,8 @@ void AliTPCv2::CreateGeometry()
 
   // Tpc SAndwich 4 - fiber glass (G10)
 
-  dm[0] += 5.e-3;
-  dm[1] -= 5.e-3;
+  dm[0] += 3.8e-3;
+  dm[1] -= 3.8e-3;
 
   gMC->Gsvolu("TSA4","TUBE",idtmed[12],dm,3);  
 
@@ -470,25 +508,25 @@ void AliTPCv2::CreateGeometry()
 
   dm[9]=-250.6;
   dm[10]=258.;
-  dm[11]=260.05;
+  dm[11]=260.0476;
 
   //
 
   dm[12]=250.6;
   dm[13]=258.;
-  dm[14]=260.05;
+  dm[14]=260.0476;
 
   //
 
   dm[15]=250.6;
   dm[16]=258.;
-  dm[17]=275.5;
+  dm[17]=269.6;
 
   //
 
   dm[18]=253.6;
   dm[19]=258.;
-  dm[20]=275.5;
+  dm[20]=269.6;
 
   gMC->Gsvolu("TOFC","PCON",idtmed[4],dm,21);
 
@@ -497,15 +535,15 @@ void AliTPCv2::CreateGeometry()
   // Tpc SAndwich 6 - Tedlar
 
   dm[0]= 258.;
-  dm[1]= 260.05;
+  dm[1]= 260.0476;
   dm[2]= 252.1;
 
   gMC->Gsvolu("TSA6","TUBE",idtmed[9],dm,3);
 
   // Tpc SAndwich 7 - fiber glass
 
-  dm[0] += 5.e-3;
-  dm[1] -= 5.e-3;
+  dm[0] += 3.8e-3;
+  dm[1] -= 3.8e-3;
 
   gMC->Gsvolu("TSA7","TUBE",idtmed[12],dm,3);
 
@@ -523,7 +561,8 @@ void AliTPCv2::CreateGeometry()
   gMC->Gspos("TSA7",1,"TSA6",0.,0.,0.,0,"ONLY"); 
   gMC->Gspos("TSA6",1,"TOFC",0.,0.,0.,0,"ONLY");
 
-  // TOFC->TOIN
+  // TOFC->TOIN 
+  // TOFC overlaps with 
 
   gMC->Gspos("TOFC",1,"TOIN",0.,0.,0.,0,"ONLY");
 
@@ -602,37 +641,37 @@ void AliTPCv2::CreateGeometry()
   //
 
   dm[9]=-250.6;
-  dm[10]=77.05;
+  dm[10]=77.0524;
   dm[11]=79.2;
 
   //
 
   dm[12]=-88.;
-  dm[13]=77.05;
+  dm[13]=77.0524;
   dm[14]=79.2;
 
   //
 
   dm[15]=-88.;
-  dm[16]=77.09;
+  dm[16]=77.0924;
   dm[17]=79.16;
 
   //
 
   dm[18]=88.;
-  dm[19]=77.09;
+  dm[19]=77.0924;
   dm[20]=79.16;
 
   //
 
   dm[21]=88.;
-  dm[22]=77.05;
+  dm[22]=77.0524;
   dm[23]=79.2;
 
   //
 
   dm[24]=250.6;
-  dm[25]=77.05;
+  dm[25]=77.0524;
   dm[26]=79.2;
 
   //
@@ -653,7 +692,7 @@ void AliTPCv2::CreateGeometry()
 
   // Tpc Sandwich 9 -Tedlar
 
-  dm[0]=77.09;
+  dm[0]=77.0924;
   dm[1]=79.16;
   dm[2]=88.;
 
@@ -661,8 +700,8 @@ void AliTPCv2::CreateGeometry()
 
   // Tpc Sandwich 10 - fiber glass (G10) 
 
-  dm[0] += 5.e-3;
-  dm[1] -= 5.e-3;
+  dm[0] += 3.8e-3;
+  dm[1] -= 3.8e-3;
 
   gMC->Gsvolu("TS10","TUBE",idtmed[12],dm,3);
 
@@ -684,7 +723,7 @@ void AliTPCv2::CreateGeometry()
 
   // Tpc Sandwich 12 -Tedlar
 
-  dm[0]=77.05;
+  dm[0]=77.0524;
   dm[1]=79.2;
   dm[2]=82.05;
 
@@ -692,8 +731,8 @@ void AliTPCv2::CreateGeometry()
 
   // Tpc Sandwich 13 - fiber glass (G10) 
 
-  dm[0] += 5.e-3;
-  dm[1] -= 5.e-3;
+  dm[0] += 3.8e-3;
+  dm[1] -= 3.8e-3;
 
   gMC->Gsvolu("TS13","TUBE",idtmed[12],dm,3);
 
@@ -818,13 +857,13 @@ void AliTPCv2::CreateGeometry()
   //
 
   dm[9]=-69.1;
-  dm[10]=60.64;
+  dm[10]=60.6224;
   dm[11]=61.2;  
 
   //
 
   dm[12]=69.1;
-  dm[13]=60.64;
+  dm[13]=60.6224;
   dm[14]=61.2;
 
   //
@@ -843,7 +882,7 @@ void AliTPCv2::CreateGeometry()
 
   // Tpc Sandwich 15 - Al
 
-  dm[0]=60.64;
+  dm[0]=60.6224;
   dm[1]=61.2;
   dm[2]=70.1;
 
@@ -863,19 +902,19 @@ void AliTPCv2::CreateGeometry()
 
   gMC->Gsvolu("TS17","TUBE",idtmed[9],dm,3);
 
-  // Tpc Sandwich 18 - fiber glass
+  // Tpc Sandwich 18 - carbon fiber
 
-  dm[0] += 5.e-3;
-  dm[1] -= 5.e-3;
+  dm[0] += 3.8e-3;
+  dm[1] -= 3.8e-3;
 
-  gMC->Gsvolu("TS18","TUBE",idtmed[12],dm,3);  
+  gMC->Gsvolu("TS18","TUBE",idtmed[15],dm,3);  
 
   // Tpc Sandwich 19 - Nomex
 
-  dm[0] += 0.01;
-  dm[1] -= 0.01;
+  dm[0] += 0.02;
+  dm[1] -= 0.02;
 
-  gMC->Gsvolu("TS19","TUBE",idtmed[12],dm,3); 
+  gMC->Gsvolu("TS19","TUBE",idtmed[6],dm,3); 
 
   // 19->18->17->16->15-> TICM
 
@@ -1902,8 +1941,8 @@ void AliTPCv2::Init()
 
   gMC->Gstpar(idtmed[2],"LOSS",5); // specific energy loss
 
-  printf("*** TPC version 2 initialized ***\n");
-  printf("Maximum number of steps = %d\n",gMC->GetMaxNStep());
+  printf("%s: *** TPC version 2 initialized ***\n",ClassName());
+  printf("%s: Maximum number of steps = %d\n",ClassName(),gMC->GetMaxNStep());
 
   //
   
@@ -1947,6 +1986,12 @@ void AliTPCv2::StepManager()
 
   id = gMC->CurrentVolID(copy); // current volume Id
 
+  if ( (gMC->IsTrackEntering() || gMC->IsTrackExiting()) &&
+       ((id == fIdLSec) || (id == fIdUSec)) ) {
+
+    AddTrackReference(gAlice->CurrentTrack());
+  }
+
   if(id == fIdLSec){
     vol[0] = copy-1; // lower sector number
   }
@@ -2056,10 +2101,7 @@ void AliTPCv2::StepManager()
       if(TMath::Abs(charge) > 1.) pp *= (charge*charge);
     }
   
-  Float_t random[1];
-  gMC->Rndm(random,1); // good, old GRNDM from Geant3
-  
-  Double_t rnd = (Double_t)random[0];
+  Double_t rnd = gMC->GetRandom()->Rndm();
   
   gMC->SetMaxStep(-TMath::Log(rnd)/pp);