X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=ITS%2FAliITSsimulationFastPointsV0.cxx;h=517a66c839450c0e5c48f8f61cb4cfc9c32ed0ef;hb=253fefa40ceaae544ee230b7ce2f57c85f0e7db8;hp=f53c82f81f6fa309c7fb56520d810cbc2367a30b;hpb=517784f008b1e474d1e8f8a891e4c77cbd48f0bd;p=u%2Fmrichter%2FAliRoot.git diff --git a/ITS/AliITSsimulationFastPointsV0.cxx b/ITS/AliITSsimulationFastPointsV0.cxx index f53c82f81f6..517a66c8394 100644 --- a/ITS/AliITSsimulationFastPointsV0.cxx +++ b/ITS/AliITSsimulationFastPointsV0.cxx @@ -11,52 +11,73 @@ * 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. * - **************************************************************************/ + ***********************************************************************/ -/* -$Log$ -Revision 1.2 2000/07/10 16:07:19 fca -Release version of ITS code - -*/ - -#include -#include +/* $Id$ */ +///////////////////////////////////////////////////////// +// fast simulation V0 // +// // +// // +///////////////////////////////////////////////////////// #include "AliITS.h" #include "AliITShit.h" #include "AliITSRecPoint.h" #include "AliITSmodule.h" -#include "AliITSgeom.h" #include "AliITSsimulationFastPointsV0.h" #include "AliITSstatistics.h" ClassImp(AliITSsimulationFastPointsV0) -AliITSsimulationFastPointsV0::AliITSsimulationFastPointsV0() -{ +AliITSsimulationFastPointsV0::AliITSsimulationFastPointsV0(): +fNrecp(0), +fSx(0), +fSz(0){ + // default constructor +} +AliITSsimulationFastPointsV0::AliITSsimulationFastPointsV0(const char *dataType): +fNrecp(0), +fSx(0), +fSz(0){ //constructor + Info("AliITSsimulationFastPointsV0","Standard constructor %s",dataType); fSx = new AliITSstatistics(2); fSz = new AliITSstatistics(2); } +//______________________________________________________________________ +AliITSsimulationFastPointsV0::AliITSsimulationFastPointsV0(const AliITSsimulationFastPointsV0 & rec):AliITSsimulation(rec), +fNrecp(rec.fNrecp), +fSx(rec.fSx), +fSz(rec.fSz){ + // Copy constructor. + +} +//______________________________________________________________________ +AliITSsimulationFastPointsV0& AliITSsimulationFastPointsV0::operator=(const AliITSsimulationFastPointsV0& /*source*/){ + // Assignment operator + Error("operator=","Assignment operator not allowed"); + return *this; +} //---------------------------------------------------------- AliITSsimulationFastPointsV0::~AliITSsimulationFastPointsV0() { //destructor - delete fSx; - delete fSz; + if(fSx) delete fSx; + if(fSz) delete fSz; } //------------------------------------------------------------- -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; AliITShit *hit; + if(rndm!=0) module=0; // fix unsued parameter warnings. fSx->Reset(); // Start out with things clearly zeroed fSz->Reset(); // Start out with things clearly zeroed e = 0.; // Start out with things clearly zeroed @@ -83,13 +104,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(); @@ -102,86 +123,81 @@ 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; - - rpSPD.fTracks[0]=trackNumber; - rpSPD.fTracks[1]=-3; - rpSPD.fTracks[2]=-3; - rpSPD.SetX(fSx->GetMean()); - rpSPD.SetZ(fSz->GetMean()); - rpSPD.SetdEdX(0.0); - rpSPD.SetQ(1.0); - a1 = fSx->GetRMS(); a1 *= a1; a1 += kRMSx*kRMSx; + + Int_t lab[4] = {trackNumber,-3,-3,mod->GetIndex()}; + Float_t 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); - a2 = fSz->GetRMS(); a2 *= a2; a2 += kRMSz*kRMSz; + Float_t a2 = fSz->GetRMS(); a2 *= a2; a2 += kRMSz*kRMSz; // if(a1>1.E5) printf(" sigmaZ2= %e\n",a2); - rpSPD.SetSigmaZ2(a2); + Float_t hit[5] = {fSx->GetMean(),fSz->GetMean(),a1,a2,1.0}; + Int_t info[3] = {0,0,mod->GetLayer()}; + + AliITSRecPoint rpSPD(lab,hit,info,kTRUE); + rpSPD.SetdEdX(e); - (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; - - rpSDD.fTracks[0]=trackNumber; - rpSDD.fTracks[1]=-3; - rpSDD.fTracks[2]=-3; - rpSDD.SetX(fSx->GetMean()); - rpSDD.SetZ(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 ", + + Int_t lab[4] = {trackNumber,-3,-3,mod->GetIndex()}; + Float_t 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); - rpSDD.SetSigmaX2(a1); - a2 = fSz->GetRMS(); a2 *= a2; a2 += kRMSz*kRMSz; + Float_t a2 = fSz->GetRMS(); a2 *= a2; a2 += kRMSz*kRMSz; // if(a1>1.E5) printf(" sigmaZ2= %e\n",a2); - rpSDD.SetSigmaZ2(a2); + Float_t hit[5] = {fSx->GetMean(),fSz->GetMean(),a1,a2,kdEdXtoQ*e}; + Int_t info[3] = {0,0,mod->GetLayer()}; + + AliITSRecPoint rpSDD(lab,hit,info,kTRUE); + rpSDD.SetdEdX(e); + + 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()); - 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 ", + + Int_t lab[4] = {trackNumber,-3,-3,mod->GetIndex()}; + Float_t 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); - rpSSD.SetSigmaX2(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); + Float_t a2 = fSz->GetRMS(); a2 *= a2; a2 += kRMSz*kRMSz; + // if(a1>1.E5) printf(" sigmaZ2= %e\n",a2); + Float_t hit[5] = {fSx->GetMean(),fSz->GetMean(),a1,a2,kdEdXtoQ*e}; + Int_t info[3] = {0,0,mod->GetLayer()}; + + AliITSRecPoint rpSSD(lab,hit,info,kTRUE); + rpSSD.SetdEdX(e); + + new (pt[fNrecp]) AliITSRecPoint(rpSSD); + fNrecp++; + - (mod->GetITS())->AddRecPoint(rpSSD); } //_______________________________________________________________________