]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITStrackSA.cxx
AliITSUSeed::GetClusterIndex will return cl. index in old format
[u/mrichter/AliRoot.git] / ITS / AliITStrackSA.cxx
index 999978f4c13433e6107392dbd778cd84559d3c21..101b597f7dcc86eb0721a570e6af93ec2291a7c0 100755 (executable)
@@ -20,7 +20,7 @@
 //  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 "AliITSgeomTGeo.h"
@@ -88,28 +88,38 @@ fNSA(0)
 
   // get the azimuthal angle of the detector containing the innermost
   // cluster of this track (data member fAlpha)
-  Double_t rotmatr[9];
-  AliITSgeomTGeo::GetRotation(layer,ladder,detector,rotmatr);
-  Double_t sAlpha=TMath::ATan2(rotmatr[1],rotmatr[0])+TMath::Pi();
-  sAlpha+=TMath::Pi()/2.;
-  if(layer==1) sAlpha+=TMath::Pi();
 
+  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]);
 
-  // get the radius of this detector. Procedure taken from the 
-  // AliITStrackerV2 constructor
-  Float_t x=0,y=0,z=0;
-  Double_t xyz[3];
-  AliITSgeomTGeo::GetTranslation(layer,ladder,detector,xyz);
-  x=xyz[0];
-  y=xyz[1];
-  z=xyz[2];
+  if (sAlpha<0) sAlpha+=TMath::TwoPi();
+  else if (sAlpha>=TMath::TwoPi()) sAlpha-=TMath::TwoPi();
 
-  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);
-  Double_t sX=x*cp+y*sp;
+  Double_t sX=TMath::Sqrt(xyz[0]*xyz[0] + xyz[1]*xyz[1]);
 
+  Init(sAlpha,sX,Ycoor,Zcoor,phi,tanlambda,curv,lab);
+
+}
+//____________________________________________________
+AliITStrackSA::AliITStrackSA(Double_t alpha, Double_t radius, Double_t Ycoor, Double_t Zcoor, Double_t phi, Double_t tanlambda, Double_t curv, Int_t lab ):
+fNSA(0) 
+{
+  // standard constructor. Used for ITS standalone tracking
+
+  // get the azimuthal angle of the detector containing the innermost
+  // cluster of this track (data member fAlpha)
+
+  if (alpha<0) alpha+=TMath::TwoPi();
+  else if (alpha>=TMath::TwoPi()) alpha-=TMath::TwoPi();
+  Init(alpha,radius,Ycoor,Zcoor,phi,tanlambda,curv,lab);
+}
+//____________________________________________________
+  void AliITStrackSA::Init(Double_t alpha, Double_t radius, Double_t Ycoor, Double_t Zcoor, Double_t phi, Double_t tanlambda, Double_t curv, Int_t lab ){
+    // initialize parameters
 
   fdEdx = 0;
 
@@ -132,7 +142,7 @@ fNSA(0)
 
   Double_t sP[] = {Ycoor,
                   Zcoor,
-                   TMath::Sin(phi-sAlpha),
+                   TMath::Sin(phi-alpha),
                   tanlambda,
                   curv/conv};
 
@@ -144,7 +154,7 @@ fNSA(0)
   sP[4] = w0*p0 + w1*sP[4];
   sC[14]*=w1;
                                                                               
-  Set(sX,sAlpha,sP,sC);
+  Set(radius,alpha,sP,sC);
 
   for(Int_t i=0; i<AliITSgeomTGeo::GetNLayers(); i++) fIndex[i] = 0;  // to be set explicitely
 
@@ -163,9 +173,9 @@ fNSA(0)
 
 //____________________________________________________________
 void AliITStrackSA::AddClusterSA(Int_t layer, Int_t clnumb) {
-  // add one clusters to the list (maximum number=fgkMaxNumberOfClusters)
+  // add one clusters to the list (maximum number=kMaxNumberOfClusters)
   Int_t presnum = GetNumberOfClustersSA();
-  if(presnum>=fgkMaxNumberOfClusters){
+  if(presnum>=kMaxNumberOfClusters){
     Warning("AddClusterSA","Maximum number of clusters already reached. Nothing is done\n");
     return;
   }
@@ -177,10 +187,10 @@ void AliITStrackSA::AddClusterSA(Int_t layer, Int_t clnumb) {
 
 //____________________________________________________________
 void AliITStrackSA::AddClusterMark(Int_t layer, Int_t clnumb) {
-  // add one clusters to the list (maximum number=fgkMaxNumberOfClusters)
+  // add one clusters to the list (maximum number=kMaxNumberOfClusters)
   Int_t presnum = GetNumberOfMarked(layer);
   //  printf("presnum=%d\n",presnum);
-  if(presnum>=fgkMaxNumberOfClustersL){
+  if(presnum>=kMaxNumberOfClustersL){
     Warning("AddClusterMark","Maximum number of clusters already reached. Nothing is done\n");
     return;
   }
@@ -209,7 +219,7 @@ void AliITStrackSA::ResetMarked(){
 
   //Reset array of marked clusters
   for(Int_t nlay=0;nlay<AliITSgeomTGeo::GetNLayers();nlay++){
-    for(Int_t k=0; k<fgkMaxNumberOfClustersL; k++) fCluMark[nlay][k]=0;
+    for(Int_t k=0; k<kMaxNumberOfClustersL; k++) fCluMark[nlay][k]=0;
   }
 }