X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=ITS%2FAliITStrackSA.cxx;h=22d48dee36373ae35895e9774a6ef37992842389;hb=b9bd355cb3b2bfee9ede9f6bff3db12c26e2cf5d;hp=19a95f9239d39fdaae6a7db4edced650d450418a;hpb=15dd636fe2589363908aa2f48504ba5fab2d5763;p=u%2Fmrichter%2FAliRoot.git diff --git a/ITS/AliITStrackSA.cxx b/ITS/AliITStrackSA.cxx index 19a95f9239d..22d48dee363 100755 --- a/ITS/AliITStrackSA.cxx +++ b/ITS/AliITStrackSA.cxx @@ -12,116 +12,139 @@ * about the suitability of this software for any purpose. It is * * provided "as is" without express or implied warranty. * **************************************************************************/ + +/* $Id$ */ + //////////////////////////////////////////////////// // Stand alone track class // // Origin: Elisabetta Crescio // // e-mail: crescio@to.infn.it // // it is a V2 track with a possible number // -// of cluster equal to fgkMaxNumberOfClusters // +// of cluster equal to kMaxNumberOfClusters // //////////////////////////////////////////////////// -#include "AliRun.h" -#include "AliITS.h" -#include "AliITSgeom.h" +#include "AliITSgeomTGeo.h" #include "AliITStrackSA.h" ClassImp(AliITStrackSA) //_____________________________________ -AliITStrackSA:: AliITStrackSA() : AliITStrackMI(){ +AliITStrackSA:: AliITStrackSA() : AliITStrackMI(), +fNSA(0) +{ // Default constructor SetNumberOfClusters(0); SetNumberOfClustersSA(0); ResetIndexSA(); + for(Int_t nlay=0;nlayGetDetector("ITS"); - if(!iTS){ - Fatal("AliITStrackSA","ITS object not found - Abort\n"); - return; - } - AliITSgeom *geom = iTS->GetITSgeom(); - if(!geom){ - Fatal("AliITStrackSA","ITS geometry not found - Abort\n"); - return; - } + // get the azimuthal angle of the detector containing the innermost // cluster of this track (data member fAlpha) - Float_t rotmatr[9]; - geom->GetRotMatrix(layer,ladder,detector,rotmatr); - fAlpha=TMath::ATan2(rotmatr[1],rotmatr[0])+TMath::Pi(); - fAlpha+=TMath::Pi()/2.; - if(layer==1) fAlpha+=TMath::Pi(); - - // get the radius of this detector. Procedure taken from the - // AliITStrackerV2 constructor - Float_t x=0,y=0,z=0; - geom->GetTrans(layer,ladder,detector,x,y,z); + TGeoHMatrix m; AliITSgeomTGeo::GetOrigMatrix(layer,ladder,detector,m); + const TGeoHMatrix *tm=AliITSgeomTGeo::GetTracking2LocalMatrix(layer,ladder,detector); + m.Multiply(tm); + Double_t txyz[3]={0.}, xyz[3]={0.}; + m.LocalToMaster(txyz,xyz); + Double_t sAlpha=TMath::ATan2(xyz[1],xyz[0]); - Double_t fi=TMath::ATan2(rotmatr[1],rotmatr[0])+TMath::Pi(); - fi+=TMath::Pi()/2; - if (layer==1) fi+=TMath::Pi(); - Double_t cp=TMath::Cos(fi), sp=TMath::Sin(fi); - fX=x*cp+y*sp; + if (sAlpha<0) sAlpha+=TMath::TwoPi(); + else if (sAlpha>=TMath::TwoPi()) sAlpha-=TMath::TwoPi(); + Double_t sX=TMath::Sqrt(xyz[0]*xyz[0] + xyz[1]*xyz[1]); fdEdx = 0; - fC00 = 0.000009; // 0.000009 - fC10 = 0.; - fC11 = 0.000003; //0.000030 - fC20 = 0.; - fC21 = 0.; - fC22 = 0.000001; //0.000001 - fC30 = 0.; - fC31 = 0.; - fC32 = 0.; - fC33 = 0.000002; //0.000002 - fC40 = 0.; - fC41 = 0.; - fC42 = 0.; - fC43 = 0.; - fC44 = 0.000001; //0.0000001 - - fP0 = Ycoor; - fP1 = Zcoor; - - fP2 = TMath::Sin(phi-fAlpha); - fP3 = tanlambda; - fP4 = curv; - for(Int_t i=0; i=fgkMaxNumberOfClusters){ + if(presnum>=kMaxNumberOfClusters){ Warning("AddClusterSA","Maximum number of clusters already reached. Nothing is done\n"); return; } @@ -142,11 +165,26 @@ void AliITStrackSA::AddClusterSA(Int_t layer, Int_t clnumb) { SetNumberOfClustersSA(presnum); } +//____________________________________________________________ +void AliITStrackSA::AddClusterMark(Int_t layer, Int_t clnumb) { + // add one clusters to the list (maximum number=kMaxNumberOfClusters) + Int_t presnum = GetNumberOfMarked(layer); + // printf("presnum=%d\n",presnum); + if(presnum>=kMaxNumberOfClustersL){ + Warning("AddClusterMark","Maximum number of clusters already reached. Nothing is done\n"); + return; + } + + fCluMark[layer][presnum] = clnumb; + presnum++; + SetNumberOfMarked(layer,presnum); +} + //____________________________________________________________ void AliITStrackSA::AddClusterV2(Int_t layer,Int_t clnumb) { // add one clusters to the list (maximum number=6) Int_t presnum = GetNumberOfClusters(); - if(presnum>=kMaxLayer){ + if(presnum>=AliITSgeomTGeo::GetNLayers()){ Warning("AddClusterV2","Maximum number of clusters already reached. Nothing is done\n"); return; } @@ -156,20 +194,12 @@ void AliITStrackSA::AddClusterV2(Int_t layer,Int_t clnumb) { SetNumberOfClusters(presnum); } +//_____________________________________________________________ +void AliITStrackSA::ResetMarked(){ - - - - - - - - - - - - - - - + //Reset array of marked clusters + for(Int_t nlay=0;nlay