]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSsimulationFastPointsV0.cxx
Fixed bug in read "new" and old .det files. Fix missing init of
[u/mrichter/AliRoot.git] / ITS / AliITSsimulationFastPointsV0.cxx
index 828c44784796af91109dff9e31039586c108de29..92dab6a66bf932311260f4d1cd2ae438728d5e41 100644 (file)
  * appear in the supporting documentation. The authors make no claims     *
  * about the suitability of this software for any purpose. It is          *
  * provided "as is" without express or implied warranty.                  *
- **************************************************************************/
+ ***********************************************************************/
 
 /* $Id$ */
-
-#include <TParticle.h>
-#include <TRandom.h>
+/////////////////////////////////////////////////////////
+//  fast simulation V0                                 //
+//                                                     //
+//                                                     //
+/////////////////////////////////////////////////////////
 
 #include "AliITS.h"
 #include "AliITShit.h"
 #include "AliITSRecPoint.h"
 #include "AliITSmodule.h"
-#include "AliITSgeom.h"
 #include "AliITSsimulationFastPointsV0.h"
 #include "AliITSstatistics.h"
 
@@ -36,9 +37,24 @@ AliITSsimulationFastPointsV0::AliITSsimulationFastPointsV0()
 }
 AliITSsimulationFastPointsV0::AliITSsimulationFastPointsV0(const char *dataType){
   //constructor
+  Info("AliITSsimulationFastPointsV0","Standard constructor %s",dataType);
   fSx = new AliITSstatistics(2);
   fSz = new AliITSstatistics(2);
 }
+//______________________________________________________________________
+AliITSsimulationFastPointsV0::AliITSsimulationFastPointsV0(const AliITSsimulationFastPointsV0 &/*rec*/):AliITSsimulation(/*rec*/){
+    // Copy constructor. 
+
+  Error("Copy constructor","Copy constructor not allowed");
+  
+}
+//______________________________________________________________________
+AliITSsimulationFastPointsV0& AliITSsimulationFastPointsV0::operator=(const AliITSsimulationFastPointsV0& /*source*/){
+    // Assignment operator. This is a function which is not allowed to be
+    // done.
+    Error("operator=","Assignment operator not allowed\n");
+    return *this; 
+}
 
 //----------------------------------------------------------
 AliITSsimulationFastPointsV0::~AliITSsimulationFastPointsV0()
@@ -50,8 +66,9 @@ AliITSsimulationFastPointsV0::~AliITSsimulationFastPointsV0()
 }
 
 //-------------------------------------------------------------
-void AliITSsimulationFastPointsV0::CreateFastRecPoints(AliITSmodule *mod,Int_t module,TRandom *rndm){
+void AliITSsimulationFastPointsV0::CreateFastRecPoints(AliITSmodule *mod,Int_t module,TRandom *rndm, TClonesArray* recp) {
   // Fast points simulator for all of the ITS.
+
   Int_t   nhit,h,trk,ifirst;
   Float_t x,y,z,t,e;// local coordinate (cm) and time of flight, and dedx.
   Float_t x1,y1,z1;
@@ -84,13 +101,13 @@ void AliITSsimulationFastPointsV0::CreateFastRecPoints(AliITSmodule *mod,Int_t m
       //      }
       switch (mod->GetLayer()){
       case 1: case 2:  // SPDs
-       AddSPD(e,mod,trk);
+       AddSPD(e,mod,trk,recp);
        break;
       case 3: case 4:  // SDDs
-       AddSDD(e,mod,trk);
+       AddSDD(e,mod,trk,recp);
        break;
       case 5: case 6:  // SSDs
-       AddSSD(e,mod,trk);
+       AddSSD(e,mod,trk,recp);
        break;
       } // end switch
       fSx->Reset();
@@ -103,86 +120,105 @@ void AliITSsimulationFastPointsV0::CreateFastRecPoints(AliITSmodule *mod,Int_t m
 }
 //_______________________________________________________________________
 void AliITSsimulationFastPointsV0::AddSPD(Float_t &e,
-                                        AliITSmodule *mod,Int_t trackNumber){
+                                         AliITSmodule* mod,Int_t trackNumber,TClonesArray* recp){
+  //
+  TClonesArray &pt=*recp;
   const Float_t kmicronTocm = 1.0e-4;
   //  const Float_t kdEdXtoQ = ;
   const Float_t kRMSx = 12.0*kmicronTocm; // microns->cm ITS TDR Table 1.3
   const Float_t kRMSz = 70.0*kmicronTocm; // microns->cm ITS TDR Table 1.3
   Float_t a1,a2; // general float.
-  AliITSRecPoint rpSPD;
+  
+  AliITSgeom* gm = mod->GetITS()->GetITSgeom();
+
+  AliITSRecPoint rpSPD(gm);
 
-  rpSPD.fTracks[0]=trackNumber;
-  rpSPD.fTracks[1]=-3;
-  rpSPD.fTracks[2]=-3;
-  rpSPD.SetX(fSx->GetMean());
-  rpSPD.SetZ(fSz->GetMean());
+  rpSPD.SetLabel(trackNumber,0);
+  rpSPD.SetLabel(-3,1);
+  rpSPD.SetLabel(-3,2);
+  rpSPD.SetXZ(mod->GetIndex(),fSx->GetMean(),fSz->GetMean());
   rpSPD.SetdEdX(e);
   rpSPD.SetQ(1.0);
   a1 = fSx->GetRMS(); a1 *= a1; a1 += kRMSx*kRMSx;
   //  if(a1>1.E5) printf("addSPD: layer=%d track #%d dedx=%e sigmaX2= %e ",
   //               mod->GetLayer(),trackNumber,e,a1);
-  rpSPD.SetSigmaX2(a1);
+  rpSPD.SetSigmaDetLocX2(a1);
   a2 = fSz->GetRMS(); a2 *= a2; a2 += kRMSz*kRMSz;
   //  if(a1>1.E5) printf(" sigmaZ2= %e\n",a2);
   rpSPD.SetSigmaZ2(a2);
-
-  (mod->GetITS())->AddRecPoint(rpSPD);
+  rpSPD.SetDetectorIndex(mod->GetIndex());
+  rpSPD.SetLayer(mod->GetLayer());
+  //(mod->GetITS())->AddRecPoint(rpSPD);
+  new (pt[fNrecp]) AliITSRecPoint(rpSPD);
+  fNrecp++;
 }
 //_______________________________________________________________________
 void AliITSsimulationFastPointsV0::AddSDD(Float_t &e,
-                                        AliITSmodule *mod,Int_t trackNumber){
-
+                                         AliITSmodule* mod,Int_t trackNumber,TClonesArray* recp){
+  //
+  TClonesArray &pt=*recp;
   const Float_t kmicronTocm = 1.0e-4;
   const Float_t kdEdXtoQ = 2.778e+8; 
   const Float_t kRMSx = 38.0*kmicronTocm; // microns->cm ITS TDR Table 1.3
   const Float_t kRMSz = 28.0*kmicronTocm; // microns->cm ITS TDR Table 1.3
   Float_t a1,a2; // general float.
-  AliITSRecPoint rpSDD;
+  AliITSgeom* gm = mod->GetITS()->GetITSgeom();
+
+  AliITSRecPoint rpSDD(gm);
 
-  rpSDD.fTracks[0]=trackNumber;
-  rpSDD.fTracks[1]=-3;
-  rpSDD.fTracks[2]=-3;
-  rpSDD.SetX(fSx->GetMean());
-  rpSDD.SetZ(fSz->GetMean());
+  rpSDD.SetLabel(trackNumber,0);
+  rpSDD.SetLabel(-3,1);
+  rpSDD.SetLabel(-3,2);
+  rpSDD.SetXZ(mod->GetIndex(),fSx->GetMean(),fSz->GetMean());
   rpSDD.SetdEdX(e);
   rpSDD.SetQ(kdEdXtoQ*e);
   a1 = fSx->GetRMS(); a1 *= a1; a1 += kRMSx*kRMSx;
   //  if(a1>1.E5) printf("addSDD: layer=%d track #%d dedx=%e sigmaX2= %e ",
   //               mod->GetLayer(),trackNumber,e,a1);
-  rpSDD.SetSigmaX2(a1);
+  rpSDD.SetSigmaDetLocX2(a1);
   a2 = fSz->GetRMS(); a2 *= a2; a2 += kRMSz*kRMSz;
   //  if(a1>1.E5) printf(" sigmaZ2= %e\n",a2);
   rpSDD.SetSigmaZ2(a2);
+  rpSDD.SetDetectorIndex(mod->GetIndex());
+  rpSDD.SetLayer(mod->GetLayer());
+  new (pt[fNrecp]) AliITSRecPoint(rpSDD);
+  fNrecp++;
 
-  (mod->GetITS())->AddRecPoint(rpSDD);
 }
 //_______________________________________________________________________
 void AliITSsimulationFastPointsV0::AddSSD(Float_t &e,
-                                        AliITSmodule *mod,Int_t trackNumber){
-
+                                         AliITSmodule* mod,Int_t trackNumber,TClonesArray* recp){
+  // 
+  TClonesArray &pt=*recp;
   const Float_t kmicronTocm = 1.0e-4;
   const Float_t kdEdXtoQ = 2.778e+8;
   const Float_t kRMSx = 20.0*kmicronTocm;  // microns->cm ITS TDR Table 1.3
   const Float_t kRMSz = 830.0*kmicronTocm; // microns->cm ITS TDR Table 1.3
   Float_t a1,a2; // general float.
-  AliITSRecPoint rpSSD;
 
-  rpSSD.fTracks[0]=trackNumber;
-  rpSSD.fTracks[1]=-3;
-  rpSSD.fTracks[2]=-3;
-  rpSSD.SetX(fSx->GetMean());
-  rpSSD.SetZ(fSz->GetMean());
+  AliITSgeom* gm = mod->GetITS()->GetITSgeom();
+  AliITSRecPoint rpSSD(gm);
+
+  rpSSD.SetLabel(trackNumber,0);
+  rpSSD.SetLabel(-3,1);
+  rpSSD.SetLabel(-3,2);
+  rpSSD.SetXZ(mod->GetIndex(),fSx->GetMean(),fSz->GetMean());
   rpSSD.SetdEdX(e);
   rpSSD.SetQ(kdEdXtoQ*e);
   a1 = fSx->GetRMS(); a1 *= a1; a1 += kRMSx*kRMSx;
   //  if(a1>1.E5) printf("addSSD: layer=%d track #%d dedx=%e sigmaX2= %e ",
   //               mod->GetLayer(),trackNumber,e,a1);
-  rpSSD.SetSigmaX2(a1);
+  rpSSD.SetSigmaDetLocX2(a1);
   a2 = fSz->GetRMS(); a2 *= a2; a2 += kRMSz*kRMSz;
   //  if(a1>1.E5) printf(" sigmaZ2= %e RMSx=%e RMSz=%e\n",a2,fSx->GetRMS(),fSz->GetRMS());
   rpSSD.SetSigmaZ2(a2);
+  rpSSD.SetDetectorIndex(mod->GetIndex());
+  rpSSD.SetLayer(mod->GetLayer());
+  new (pt[fNrecp]) AliITSRecPoint(rpSSD);
+  fNrecp++;
+
 
-  (mod->GetITS())->AddRecPoint(rpSSD);
 }
 //_______________________________________________________________________