]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TPC/AliTPCv3.cxx
Additional protection in case of wide ctg range (M.Ivanov)
[u/mrichter/AliRoot.git] / TPC / AliTPCv3.cxx
index a6105da224ccf09b8c3a6d5b691755e4eeb917b9..c34dc82a2b6a73e09cf1a54cdb05d664fb40b385 100644 (file)
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
-/*
-$Log$
-Revision 1.22  2001/03/13 13:07:34  kowal2
-Corrected bug in the TPC mother volume geometry.
-Thanks to A. Morsch
-
-Revision 1.21  2000/11/30 11:48:50  kowal2
-TLorentzVector.h adde to satisfy the latest changes by Federico
-
-Revision 1.20  2000/11/14 10:48:57  kowal2
-Correct material used for TSA4. Thanks to J. Barbosa.
-
-Revision 1.19  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.18  2000/11/02 16:55:24  kowal2
-Corrected bug in the inner containment vessel geometry.
-Thanks to J. Belikov
-
-Revision 1.17  2000/11/02 07:24:11  kowal2
-Correction in the TPC geometry.
-Changes due to the new hit structure.
-
-Revision 1.16  2000/10/02 21:28:18  fca
-Removal of useless dependecies via forward declarations
-
-Revision 1.15  2000/07/10 20:57:39  hristov
-Update of TPC code and macros by M.Kowalski
-
-Revision 1.14  2000/06/30 12:07:50  kowal2
-Updated from the TPC-PreRelease branch
-
-Revision 1.13.2.4  2000/06/26 07:39:42  kowal2
-Changes to obey the coding rules
-
-Revision 1.13.2.3  2000/06/25 08:38:41  kowal2
-Splitted from AliTPCtracking
-
-Revision 1.13.2.2  2000/06/16 12:58:13  kowal2
-Changed parameter settings
-
-Revision 1.13.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.13  2000/05/15 10:00:30  kowal2
-Corrected bug in the TPC geometry, thanks to Ivana Hrivnacova
-
-Revision 1.12  2000/04/17 09:37:33  kowal2
-removed obsolete AliTPCDigitsDisplay.C
-
-Revision 1.11.8.2  2000/04/10 08:36:12  kowal2
-
-Updated readout chambers
-Some modifications to StepManager by M. Kowalski
-
-Revision 1.11.8.1  2000/04/10 07:56:53  kowal2
-Not used anymore - removed
-
-Revision 1.11  1999/11/04 17:28:07  fca
-Correct barrel part of HV Degrader
-
-Revision 1.10  1999/10/14 16:52:08  fca
-Only use PDG codes and not GEANT ones
-
-Revision 1.9  1999/10/08 06:27:23  fca
-Corrected bug in the HV degrader geometry, thanks to G.Tabary
-
-Revision 1.8  1999/10/04 13:39:55  fca
-Correct array index problem
-
-Revision 1.7  1999/09/29 09:24:34  fca
-Introduction of the Copyright and cvs Log
-
-*/
+/* $Id$ */
 
 //
 ///////////////////////////////////////////////////////////////////////////////
@@ -107,18 +30,21 @@ Introduction of the Copyright and cvs Log
 ///////////////////////////////////////////////////////////////////////////////
 
 #include <stdlib.h>
+
+#include <TInterpreter.h>
+#include <TLorentzVector.h>
 #include <TMath.h>
-#include "AliTPCv3.h"
-#include "AliRun.h"
-#include "AliMC.h"
+#include <TVirtualMC.h>
+#include <TPDGCode.h>
+
 #include "AliConst.h"
+#include "AliRun.h"
 #include "AliTPCDigitsArray.h"
-#include"AliTPCParam.h"
-#include"AliTPCParamSR.h"
-#include "AliPDG.h"
-#include <TInterpreter.h>
-#include "TLorentzVector.h"
-#include "AliTPCTrackHits.h"
+#include "AliTPCParam.h"
+#include "AliTPCParamSR.h"
+#include "AliTPCTrackHitsV2.h"
+#include "AliTPCv3.h"
+#include "AliMC.h"
 
 ClassImp(AliTPCv3)
 //_____________________________________________________________________________
@@ -186,7 +112,7 @@ void AliTPCv3::CreateGeometry()
   //
 
   dm[3]=-283.7;
-  dm[4]=65.6;
+  dm[4]=77.017;
   dm[5]=278.;
 
   //
@@ -228,7 +154,7 @@ void AliTPCv3::CreateGeometry()
   //
 
   dm[24]=283.7;
-  dm[25]=65.6;
+  dm[25]=77.017;
   dm[26]=278.;
   
   gMC->Gsvolu("TPC ","PCON",idtmed[0],dm,27);
@@ -305,13 +231,13 @@ void AliTPCv3::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.;
 
   //
@@ -332,7 +258,7 @@ void AliTPCv3::CreateGeometry()
 
   // Tpc SAndwich 1 - Al
 
-  dm[0]=274.81;
+  dm[0]=274.8124;
   dm[1]=278.;
   dm[2]=252.1;
 
@@ -355,8 +281,8 @@ void AliTPCv3::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);  
 
@@ -406,25 +332,25 @@ void AliTPCv3::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);
 
@@ -433,15 +359,15 @@ void AliTPCv3::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);
 
@@ -538,37 +464,37 @@ void AliTPCv3::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;
 
   //
@@ -589,7 +515,7 @@ void AliTPCv3::CreateGeometry()
 
   // Tpc Sandwich 9 -Tedlar
 
-  dm[0]=77.09;
+  dm[0]=77.0924;
   dm[1]=79.16;
   dm[2]=88.;
 
@@ -597,8 +523,8 @@ void AliTPCv3::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);
 
@@ -620,7 +546,7 @@ void AliTPCv3::CreateGeometry()
 
   // Tpc Sandwich 12 -Tedlar
 
-  dm[0]=77.05;
+  dm[0]=77.0524;
   dm[1]=79.2;
   dm[2]=82.05;
 
@@ -628,8 +554,8 @@ void AliTPCv3::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);
 
@@ -704,13 +630,13 @@ void AliTPCv3::CreateGeometry()
 
   dm[21]=253.6;
   dm[22]=65.6;
-  dm[23]=76.4;
+  dm[23]=74.6;
 
   //
 
-  dm[24]=256.3;
+  dm[24]=256.6;
   dm[25]=65.6;
-  dm[26]=76.4;
+  dm[26]=74.6;
 
   gMC->Gsvolu("TICC","PCON",idtmed[4],dm,27);
 
@@ -754,13 +680,13 @@ void AliTPCv3::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;
 
   //
@@ -779,7 +705,7 @@ void AliTPCv3::CreateGeometry()
 
   // Tpc Sandwich 15 - Al
 
-  dm[0]=60.64;
+  dm[0]=60.6224;
   dm[1]=61.2;
   dm[2]=70.1;
 
@@ -799,19 +725,19 @@ void AliTPCv3::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
 
@@ -1677,8 +1603,12 @@ void AliTPCv3::Init()
 
   gMC->Gstpar(idtmed[2],"LOSS",5);
 
-  printf("*** TPC version 3 initialized ***\n");
-  printf("Maximum number of steps = %d\n",gMC->GetMaxNStep());
+  printf("%s: *** TPC version 3 initialized***\n",ClassName());
+
+  printf("%s: Maximum number of steps = %d\n",ClassName(),gMC->GetMaxNStep());
+
+  // printf("*** TPC version 3 initialized ***\n");
+  // printf("Maximum number of steps = %d\n",gMC->GetMaxNStep());
 
   //
   
@@ -1703,7 +1633,7 @@ void AliTPCv3::StepManager()
 
   Int_t id,copy;
   TLorentzVector pos;
-  Float_t hits[4];
+  Float_t hits[5];
   Int_t vol[2];  
   
   vol[1]=0;
@@ -1741,6 +1671,9 @@ void AliTPCv3::StepManager()
     hits[1]=pos[1];
     hits[2]=pos[2];
 
+    // Get also the track time for pileup simulation
+    hits[4]=gMC->TrackTime();
+
     //
     // check the selected side of the TPC
     //
@@ -1751,7 +1684,7 @@ void AliTPCv3::StepManager()
     
     // Add this hit
    
-    AddHit(gAlice->CurrentTrack(), vol,hits);  //MI change
+    AddHit(gAlice->GetMCApp()->GetCurrentTrackNumber(), vol,hits);  //MI change
     
   } 
   
@@ -1770,14 +1703,12 @@ void AliTPCv3::StepManager()
     }
   else
     {
+      betaGamma = TMath::Max(betaGamma,(Float_t)7.e-3); 
       pp=kprim*BetheBloch(betaGamma);    
       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);