]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITStrackSA.cxx
Additional protection (Alberto)
[u/mrichter/AliRoot.git] / ITS / AliITStrackSA.cxx
index a0512e4422bef46c33b74c5f713154f837ccd0ca..b1261e947235290ced0df388ede30c89a4c3a21e 100755 (executable)
@@ -23,8 +23,6 @@
 //  of cluster equal to fgkMaxNumberOfClusters    //
 ////////////////////////////////////////////////////
 
-#include "AliRun.h"
-#include "AliITS.h"
 #include "AliITSgeom.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;nlay<fgkLayers;nlay++){ 
+    SetNumberOfMarked(nlay,0);
+  }
+  ResetMarked();
 }
 
 
 //___________________________________________________
 AliITStrackSA::AliITStrackSA(const AliITStrackMI& t) : 
-AliITStrackMI(t){
+AliITStrackMI(t),
+fNSA(0){
 // Copy a V2 track into a SA track
   SetNumberOfClustersSA(0);
   ResetIndexSA();
+  for(Int_t nlay=0;nlay<fgkLayers;nlay++){ 
+    SetNumberOfMarked(nlay,0);
+  }
+  ResetMarked();
+
 }
 //___________________________________________________
 AliITStrackSA::AliITStrackSA(const AliITStrackSA& t) : 
-AliITStrackMI(t){
+AliITStrackMI(t),
+fNSA(t.fNSA){
 // Copy constructor
 
+
   ResetIndexSA();
+  ResetMarked();
   Int_t number = t.GetNumberOfClustersSA();
   SetNumberOfClustersSA(number);
+  for(Int_t nlay=0;nlay<fgkLayers;nlay++){
+    SetNumberOfMarked(nlay,t.GetNumberOfMarked(nlay));
+  }
   for(Int_t i=0;i<number;i++){
     fSain[i]=t.fSain[i];
   }
-
+  for(Int_t nlay=0;nlay<fgkLayers;nlay++){
+    for(Int_t i=0;i<t.GetNumberOfMarked(nlay);i++){
+      fCluMark[nlay][i]=t.fCluMark[nlay][i];
+    }
+  }
 }
 //____________________________________________________
-AliITStrackSA::AliITStrackSA(Int_t layer, Int_t ladder, Int_t detector, Double_t Ycoor, Double_t Zcoor, Double_t phi, Double_t tanlambda, Double_t curv, Int_t lab ) {
+AliITStrackSA::AliITStrackSA(AliITSgeom* geom,Int_t layer, Int_t ladder, Int_t detector, 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
-  AliITS* iTS = (AliITS*)gAlice->GetDetector("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;
@@ -77,9 +94,9 @@ AliITStrackSA::AliITStrackSA(Int_t layer, Int_t ladder, Int_t detector, Double_t
   // 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();
+  Double_t sAlpha=TMath::ATan2(rotmatr[1],rotmatr[0])+TMath::Pi();
+  sAlpha+=TMath::Pi()/2.;
+  if(layer==1) sAlpha+=TMath::Pi();
 
 
   // get the radius of this detector. Procedure taken from the 
@@ -91,40 +108,45 @@ AliITStrackSA::AliITStrackSA(Int_t layer, Int_t ladder, Int_t detector, Double_t
   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;
+  Double_t sX=x*cp+y*sp;
 
 
   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;
+  Double_t conv=GetBz()*kB2C;
+  Double_t sC[] = {0.000009, // 0.000009
+                   0.,
+                   0.000003, //0.000030
+                   0.,
+                  0.,
+                  0.000001, //0.000001
+                  0.,
+                  0.,
+                  0.,
+                  0.000002, //0.000002
+                  0.,
+                  0.,
+                  0.,
+                  0.,
+                  0.000001/(conv*conv)}; //0.0000001
+
+  Double_t sP[] = {Ycoor,
+                  Zcoor,
+                   TMath::Sin(phi-sAlpha),
+                  tanlambda,
+                  curv/conv};
+
+  Set(sX,sAlpha,sP,sC);
+
   for(Int_t i=0; i<kMaxLayer; i++) fIndex[i] = 0;  // to be set explicitely
 
   for(Int_t i=0; i<4; i++) fdEdxSample[i] = 0; 
 
   SetNumberOfClusters(0);
   SetNumberOfClustersSA(0);
+  for(Int_t nlay=0;nlay<fgkLayers;nlay++) SetNumberOfMarked(nlay,0);
   ResetIndexSA();
+  ResetMarked();
   SetChi2(0);
   SetMass(0.139);    // pion mass
   SetLabel(lab); 
@@ -145,6 +167,21 @@ 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=fgkMaxNumberOfClusters)
+  Int_t presnum = GetNumberOfMarked(layer);
+  //  printf("presnum=%d\n",presnum);
+  if(presnum>=fgkMaxNumberOfClustersL){
+    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)
@@ -159,9 +196,14 @@ 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<fgkLayers;nlay++){
+    for(Int_t k=0; k<fgkMaxNumberOfClustersL; k++) fCluMark[nlay][k]=0;
+  }
+}