]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TPC/AliTPCv2.cxx
Using AliLog (F.Carminati)
[u/mrichter/AliRoot.git] / TPC / AliTPCv2.cxx
index 841121f40b086ab940ba1f3a7f8e0c1b9b349862..03aac702cf79beddf2c8362f8ad371b6cf351a5b 100644 (file)
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
-/*
-$Log$
-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.
-
-Revision 1.34  2001/04/23 10:20:18  hristov
-Constant casted to avoid ambiguity
-
-Revision 1.33  2001/04/20 08:16:47  kowal2
-Protection against too small betaGamma. Thanks to Ivana and Yves.
-
-Revision 1.32  2001/03/13 13:07:34  kowal2
-Corrected bug in the TPC mother volume geometry.
-Thanks to A. Morsch
-
-Revision 1.31  2000/11/30 11:48:50  kowal2
-TLorentzVector.h adde to satisfy the latest changes by Federico
-
-Revision 1.30  2000/11/14 10:48:57  kowal2
-Correct material used for TSA4. Thanks to J. Barbosa.
-
-Revision 1.29  2000/11/06 17:24:10  kowal2
-Corrected bug in the outer containment vessel and
-the outer field cage geometry.
-Thanks to J. Barbosa.
-
-Revision 1.28  2000/11/02 16:55:24  kowal2
-Corrected bug in the inner containment vessel geometry.
-Thanks to J. Belikov
-
-Revision 1.27  2000/11/02 07:24:11  kowal2
-Correction in the TPC geometry.
-Changes due to the new hit structure.
-
-Revision 1.26  2000/10/05 16:16:29  kowal2
-Corrections of the hit recording algorithm.
-
-Revision 1.25  2000/10/02 21:28:18  fca
-Removal of useless dependecies via forward declarations
-
-Revision 1.24  2000/08/28 10:02:30  kowal2
-Corrected bug in the StepManager
-
-Revision 1.23  2000/07/10 20:57:39  hristov
-Update of TPC code and macros by M.Kowalski
-
-Revision 1.22  2000/06/30 12:07:50  kowal2
-Updated from the TPC-PreRelease branch
-
-Revision 1.21.2.4  2000/06/26 07:39:42  kowal2
-Changes to obey the coding rules
-
-Revision 1.21.2.3  2000/06/25 08:38:41  kowal2
-Splitted from AliTPCtracking
-
-Revision 1.21.2.2  2000/06/16 12:58:13  kowal2
-Changed parameter settings
-
-Revision 1.21.2.1  2000/06/09 07:15:07  kowal2
-
-Defaults loaded automatically (hard-wired)
-Optional parameters can be set via macro called in the constructor
-
-Revision 1.21  2000/05/15 10:00:30  kowal2
-Corrected bug in the TPC geometry, thanks to Ivana Hrivnacova
-
-Revision 1.20  2000/04/17 09:37:33  kowal2
-removed obsolete AliTPCDigitsDisplay.C
-
-Revision 1.19.8.2  2000/04/10 08:31:52  kowal2
-
-Different geometry for different sectors
-Updated readout chambers
-Some modifications to StepManager by J.Belikov
-
-Revision 1.19.8.1  2000/04/10 07:56:53  kowal2
-Not used anymore - removed
-
-Revision 1.19  1999/11/04 17:28:07  fca
-Correct barrel part of HV Degrader
-
-Revision 1.18  1999/10/14 16:52:08  fca
-Only use PDG codes and not GEANT ones
-
-Revision 1.17  1999/10/08 06:27:23  fca
-Corrected bug in the HV degrader geometry, thanks to G.Tabary
-
-Revision 1.16  1999/10/04 13:39:54  fca
-Correct array index problem
-
-Revision 1.15  1999/09/29 09:24:34  fca
-Introduction of the Copyright and cvs Log
-
-*/
+/* $Id$ */
 
 //
 ///////////////////////////////////////////////////////////////////////////////
@@ -136,21 +28,22 @@ Introduction of the Copyright and cvs Log
 //                                                                           //
 //                                                                           //
 ///////////////////////////////////////////////////////////////////////////////
+
 #include <stdlib.h>
 
+#include <TLorentzVector.h>
 #include <TMath.h>
+#include <TVirtualMC.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 "AliTPCTrackHitsV2.h"
-#include "TLorentzVector.h"
-
+#include "AliTPCv2.h"
+#include "AliMC.h"
 
 ClassImp(AliTPCv2)
  
@@ -215,14 +108,14 @@ void AliTPCv2::CreateGeometry()
   
   // --------------------------------------------------- 
   //        sector specification check 
-  // --------------------------------------------------- 
+  // ---------------------------------------------------
   if (fSecAL >= 0) {
     ifl1 = 0;
     
     for (i = 0; i < 6; ++i) {
       if (fSecLows[i] >= 0 && fSecLows[i] < 2*nInnerSector) {
-       ifl1 = 1;
-       printf("%s: *** SECTOR %d selected\n",ClassName(),fSecLows[i]);
+       ifl1 = 1;
+       printf("%s: *** SECTOR %d selected\n",ClassName(),fSecLows[i]);
       }
     }
 
@@ -265,7 +158,7 @@ void AliTPCv2::CreateGeometry()
   //
 
   dm[3]=-283.7;
-  dm[4]=65.6;
+  dm[4]=77.017;
   dm[5]=278.;
 
   //
@@ -307,7 +200,7 @@ void AliTPCv2::CreateGeometry()
   //
 
   dm[24]=283.7;
-  dm[25]=65.6;
+  dm[25]=77.017;
   dm[26]=278.;
   
   gMC->Gsvolu("TPC ","PCON",idtmed[0],dm,27);
@@ -497,13 +390,13 @@ void AliTPCv2::CreateGeometry()
 
   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);
 
@@ -538,7 +431,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");
 
@@ -1942,7 +1836,7 @@ void AliTPCv2::StepManager()
   const Float_t kbig = 1.e10;
 
   Int_t id,copy;
-  Float_t hits[4];
+  Float_t hits[5];
   Int_t vol[2];  
   TLorentzVector p;
   
@@ -1962,25 +1856,12 @@ void AliTPCv2::StepManager()
 
   id = gMC->CurrentVolID(copy); // current volume Id
 
-  if (gMC->IsTrackEntering() && ( (id == fIdLSec) || (id == fIdUSec))){
-    //    printf("track  %d entering volume %d\n",gAlice->CurrentTrack(),id);
-    TLorentzVector p;
-    TLorentzVector x;
-    gMC->TrackMomentum(p);
-    gMC->TrackPosition(x);
-    AddTrackReference(gAlice->CurrentTrack(),p,x);
-  }
+  if ( (gMC->IsTrackEntering() || gMC->IsTrackExiting()) &&
+       ((id == fIdLSec) || (id == fIdUSec)) ) {
 
-  if (gMC->IsTrackExiting() && ( (id == fIdLSec) || (id == fIdUSec))){
-    //    printf("track  %d exiting volume %d\n",gAlice->CurrentTrack(),id);
-    TLorentzVector p;
-    TLorentzVector x;
-    gMC->TrackMomentum(p);
-    gMC->TrackPosition(x);
-    AddTrackReference(gAlice->CurrentTrack(),p,x);
+    AddTrackReference(gAlice->GetMCApp()->GetCurrentTrackNumber());
   }
 
-
   if(id == fIdLSec){
     vol[0] = copy-1; // lower sector number
   }
@@ -2022,9 +1903,12 @@ void AliTPCv2::StepManager()
       hits[1]=p[1];
       hits[2]=p[2];
       hits[3]=0.; // this hit has no energy loss
-      // new(lhits[fNhits++]) AliTPChit(fIshunt,gAlice->CurrentTrack(),vol,hits);
+      // new(lhits[fNhits++]) AliTPChit(fIshunt,gAlice->GetCurrentTrackNumber(),vol,hits);
+
+      // Get also the track time for pileup simulation
+      hits[4]=gMC->TrackTime();
 
-      AddHit(gAlice->CurrentTrack(), vol,hits);  //MI change
+      AddHit(gAlice->GetMCApp()->GetCurrentTrackNumber(), vol,hits);  //MI change
 
     }
 
@@ -2033,9 +1917,12 @@ void AliTPCv2::StepManager()
      hits[1]=p[1];
      hits[2]=p[2];
      hits[3]=0.; // this hit has no energy loss
-     // new(lhits[fNhits++]) AliTPChit(fIshunt,gAlice->CurrentTrack(),vol,hits);
+     // new(lhits[fNhits++]) AliTPChit(fIshunt,gAlice->GetCurrentTrackNumber(),vol,hits);
+
+     // Get also the track time for pileup simulation
+     hits[4]=gMC->TrackTime();
 
-     AddHit(gAlice->CurrentTrack(), vol,hits);  //MI change    
+     AddHit(gAlice->GetMCApp()->GetCurrentTrackNumber(), vol,hits);  //MI change    
 
   }
   else return;
@@ -2057,14 +1944,18 @@ void AliTPCv2::StepManager()
     
     // Add this hit
     
-    // new(lhits[fNhits++]) AliTPChit(fIshunt,gAlice->CurrentTrack(),vol,hits);
+    // new(lhits[fNhits++]) AliTPChit(fIshunt,gAlice->GetCurrentTrackNumber(),vol,hits);
     if (fHitType&&2){
       gMC->TrackMomentum(p);
       Float_t momentum = TMath::Sqrt(p[0]*p[0]+p[1]*p[1]);
       Float_t precision =   (momentum>0.1) ? 0.002 :0.01;
       fTrackHits->SetHitPrecision(precision);
     }
-    AddHit(gAlice->CurrentTrack(), vol,hits);  //MI change 
+
+    // Get also the track time for pileup simulation
+    hits[4]=gMC->TrackTime();
+
+    AddHit(gAlice->GetMCApp()->GetCurrentTrackNumber(), vol,hits);  //MI change 
     
   } 
   
@@ -2090,10 +1981,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);