]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Tracking V1 decoupled from AliITS
authorbarbera <barbera@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 14 Jun 2001 14:59:00 +0000 (14:59 +0000)
committerbarbera <barbera@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 14 Jun 2001 14:59:00 +0000 (14:59 +0000)
ITS/AliITS.cxx
ITS/AliITS.h
ITS/AliITStracking.cxx
ITS/AliITStracking.h

index cc8bd9d1527501b19cab650e64e852ea9a8dd903..5bf1afb811ad1d22f16e12dcfe040ea0266488c3 100644 (file)
@@ -15,6 +15,9 @@
 
 /*
 $Log$
+Revision 1.54  2001/05/31 20:37:56  barbera
+Bari/Salerno model set as defaault SPD simulation
+
 Revision 1.53  2001/05/31 18:52:24 barbera 
 Bari model becomes the default
 
@@ -222,7 +225,7 @@ the AliITS class.
 #include <TFile.h>
 #include <TTree.h>
 #include <TString.h>
-#include <TParticle.h>
+//#include <TParticle.h>
 
 
 #include "AliRun.h"
@@ -230,7 +233,6 @@ the AliITS class.
 #include "AliITSMap.h"
 #include "AliITSDetType.h"
 #include "AliITSClusterFinder.h"
-//#include "AliITSsimulation.h"
 #include "AliITSsimulationSPD.h"
 #include "AliITSsimulationSDD.h"
 #include "AliITSsimulationSSD.h"
@@ -250,16 +252,16 @@ the AliITS class.
 #include "AliITSRawCluster.h"
 #include "AliMC.h"
 #include "stdlib.h"
-#include "AliKalmanTrack.h" 
-#include "AliMagF.h"
 
-#include "AliITStrack.h"
-#include "AliITSiotrack.h"
-#include "AliITStracking.h"
-#include "AliITSRad.h"   
-#include "AliTPC.h"
-#include "AliTPCParam.h"
-#include "AliTPCtracker.h"
+//#include "AliKalmanTrack.h" 
+//#include "AliMagF.h"
+//#include "AliITStrack.h"
+//#include "AliITSiotrack.h"
+//#include "AliITStracking.h"
+//#include "AliITSRad.h"   
+//#include "AliTPC.h"
+//#include "AliTPCParam.h"
+//#include "AliTPCtracker.h"
 
 ClassImp(AliITS)
  
@@ -1376,471 +1378,3 @@ Option_t *option,Option_t *opt,Text_t *filename)
    delete [] random;
 
 }
-//________________________________________________________________
-AliITStrack  AliITS::Tracking(AliITStrack &track, AliITStrack *reference,
-                             TObjArray *fastpoints, Int_t **vettid,
-                             Bool_t flagvert,  AliITSRad *rl  ) {
-// Origin  A. Badala' and G.S. Pappalardo:  e-mail Angela.Badala@ct.infn.it,
-// Giuseppe.S.Pappalardo@ct.infn.it
-
-  TList *list= new TList();   
-
-  AliITStrack tr(track);
-  
-  list->AddLast(&tr);
-  
-  Double_t Pt=(tr).GetPt();
-//  cout << "\n Pt = " << Pt <<"\n";  //stampa
-
-  AliITStracking obj(list, reference, this, fastpoints,
-                    TMath::Abs(Pt),vettid, flagvert, rl);
-  list->Delete();
-  delete list;
-
-  Int_t itot=-1;
-  TVector VecTotLabref(18);
-  Int_t lay, k;
-  for(lay=5; lay>=0; lay--) {
-    TVector VecLabref(3); 
-    VecLabref=(*reference).GetLabTrack(lay);
-    Float_t ClustZ=(*reference).GetZclusterTrack( lay); //aggiunta il 5-3-2001
-    for(k=0; k<3; k++){
-       //{itot++; VecTotLabref(itot)=VecLabref(k);} //cambiata il 5-3-2001 
-       Int_t lpp=(Int_t)VecLabref(k);
-       if(lpp>=0) {
-           TParticle *p=(TParticle*) gAlice->Particle(lpp);
-           Int_t pcode=p->GetPdgCode();
-           if(pcode==11) VecLabref(k)=p->GetFirstMother();
-       } // end if lpp>=0    
-       itot++; VecTotLabref(itot)=VecLabref(k);
-       if(VecLabref(k)==0. && ClustZ == 0.) VecTotLabref(itot) =-3.; }  
-  } // end for lay
-  Long_t labref;
-  Int_t freq;  
-  (*reference).Search(VecTotLabref, labref, freq);
-    
-  //if(freq < 4) labref=-labref;
-  //if(freq < 6) labref=-labref;        // cinque - sei
-  if(freq < 5) labref=-labref;        // cinque - sei  
-  (*reference).SetLabel(labref);
-
-  return *reference; 
-
-}
-//________________________________________________________________------
-void AliITS::DoTracking(Int_t evNumber, Int_t min_t, Int_t max_t,
-                       TFile *file, Bool_t flagvert) {
-    //   ex macro for tracking ITS
-
-    printf("begin DoTracking - file %p\n",file);
-
-    //const char *pname="75x40_100x60";
-  
-    Int_t imax=200,jmax=450;
-    AliITSRad *rl = new AliITSRad(imax,jmax);
-    //cout<<" dopo costruttore AliITSRad\n"; getchar();
-
-    struct GoodTrack {
-       Int_t lab,code;
-       Float_t px,py,pz,x,y,z,pxg,pyg,pzg,ptg;
-       Bool_t flag;
-    };
-
-    gAlice->GetEvent(0);
-
-    AliKalmanTrack *kkprov;
-    kkprov->SetConvConst(100/0.299792458/0.2/gAlice->Field()->Factor());  
-
-    /*  //modificato il 26-4-2001
-       AliTPC *TPC=(AliTPC*)gAlice->GetDetector("TPC");
-       AliTPCParam *digp = (AliTPCParam*)file->Get(pname);
-       if (digp!=0) TPC->SetParam(digp);
-    */
-    TFile *cf=TFile::Open("AliTPCclusters.root");  
-    AliTPCParam *digp= (AliTPCParam*)cf->Get("75x40_100x60");
-    if (!digp) { cerr<<"TPC parameters have not been found !\n"; getchar();}
-
-    AliTPCtracker *tracker = new AliTPCtracker(digp); //aggiunto il 23-5 
-    //aggiunto il 23-5 
-    // Load clusters
-    tracker->LoadInnerSectors();
-    tracker->LoadOuterSectors();
-
-    GoodTrack gt[15000];
-    Int_t ngood=0;
-    ifstream in("itsgood_tracks");
-
-    cerr<<"Reading itsgood tracks...\n";
-    while (in>>gt[ngood].lab>>gt[ngood].code
-          >>gt[ngood].px >>gt[ngood].py>>gt[ngood].pz
-          >>gt[ngood].x  >>gt[ngood].y >>gt[ngood].z
-          >>gt[ngood].pxg  >>gt[ngood].pyg >>gt[ngood].pzg
-          >>gt[ngood].ptg >>gt[ngood].flag) {
-       ngood++;
-       cerr<<ngood<<'\r';
-       if (ngood==15000) {
-           cerr<<"Too many good tracks !\n";
-           break;
-       } // end if ngood==1500
-    } // end while
-    if (!in.eof()) cerr<<"Read error (itsgood_tracks) !\n";
-
-    // Load tracks
-    // TFile *tf=TFile::Open("tpctracks.root"); //commentato 26-4-2001 
-    TFile *tf=TFile::Open("AliTPCtracks.root"); 
-    if (!tf->IsOpen()) {cerr<<"Can't open AliTPCtracks.root !\n"; return ;}
-    TObjArray tracks(200000);
-    //TTree *tracktree=(TTree*)tf->Get("TreeT");
-    TTree *tracktree=(TTree*)tf->Get("TPCf"); //aggiunto il 23-5
-    if (!tracktree) {cerr<<"Can't get a tree with TPC tracks !\n";} 
-    TBranch *tbranch=tracktree->GetBranch("tracks");
-    Int_t nentr=(Int_t)tracktree->GetEntries();
-    Int_t kk;
-    /*  commentato il 26-4-2001
-       for (kk=0; kk<nentr; kk++) {
-       AliTPCtrack *iotrack=new AliTPCtrack;
-       tbranch->SetAddress(&iotrack);
-       tracktree->GetEvent(kk);
-       tracks.AddLast(iotrack);
-       } 
-    */
-    AliTPCtrack *iotracktpc=0;    
-    for (kk=0; kk<nentr; kk++) {
-       iotracktpc=new AliTPCtrack; 
-       tbranch->SetAddress(&iotracktpc);
-       tracktree->GetEvent(kk);
-       tracker->CookLabel(iotracktpc,0.1); //aggiunto 23-5
-       tracks.AddLast(iotracktpc);    
-    } // end for kk
-    delete tracker;
-    tf->Close();
-
-    Int_t nt = tracks.GetEntriesFast();
-    cerr<<"Number of found tracks "<<nt<<endl;
-
-    TVector DataOut(9);
-    Int_t kkk=0;
-
-    Double_t ptg=0.,pxg=0.,pyg=0.,pzg=0.;
-
-    //////////////  good tracks definition in TPC  ///////////////
-
-    ofstream out1 ("AliITSTrag.out");
-    Int_t i;
-    for (i=0; i<ngood; i++) out1 << gt[i].ptg << "\n";
-    out1.close();
-
-
-    TVector vec(5);
-    TTree *TR=gAlice->TreeR();
-    Int_t nent=(Int_t)TR->GetEntries();
-    TClonesArray  *recPoints = RecPoints();
-    Int_t numbpoints;
-    Int_t totalpoints=0;
-    Int_t *np = new Int_t[nent];
-    Int_t **vettid = new Int_t* [nent];
-    Int_t mod;
-    for (mod=0; mod<nent; mod++) {
-       vettid[mod]=0;
-       this->ResetRecPoints();
-       //gAlice->TreeR()->GetEvent(mod+1); //first entry in TreeR is empty
-       gAlice->TreeR()->GetEvent(mod); //first entry in TreeR is empty
-       numbpoints = recPoints->GetEntries();
-       totalpoints+=numbpoints;
-       np[mod] = numbpoints;
-       //cout<<" mod = "<<mod<<"   numbpoints = "<<numbpoints<<"\n";getchar();
-       vettid[mod] = new Int_t[numbpoints];
-       Int_t ii;
-       for (ii=0;ii<numbpoints; ii++) *(vettid[mod]+ii)=0;
-    } // end for mod
-
-    AliTPCtrack *track=0;
-    if(min_t < 0) {min_t = 0; max_t = nt-1;}   
-
-/*
-  //////////////////// Definition of vertex end its error ////////////////////
-  ////////////// In the future it will be given by a method //////////////////
-  Double_t Vx=0.;
-  Double_t Vy=0.;
-  Double_t Vz=0.;
-
-  Float_t sigmavx=0.0050;      // 50  microns
-  Float_t sigmavy=0.0050;      // 50  microns
-  Float_t sigmavz=0.010;       // 100 microns
-
-  //Vx+=gRandom->Gaus(0,sigmavx);  Vy+=gRandom->Gaus(0,sigmavy);  Vz+=gRandom->Gaus(0,sigmavz);
-  TVector vertex(3), ervertex(3)
-  vertex(0)=Vx; vertex(1)=Vy; vertex(2)=Vz;
-  ervertex(0)=sigmavx;  ervertex(1)=sigmavy;  ervertex(2)=sigmavz;
-  //////////////////////////////////////////////////////////////////////////
-*/
-
-    TTree tracktree1("TreeT","Tree with ITS tracks");
-    AliITSiotrack *iotrack=0;
-    tracktree1.Branch("ITStracks","AliITSiotrack",&iotrack,32000,0);
-
-    ofstream out ("AliITSTra.out");
-    //ofstream outprova ("AliITSprova.out"); //commentato il 26-4-2001
-
-    Int_t j;       
-    for (j=min_t; j<=max_t; j++) {     
-       track=(AliTPCtrack*)tracks.UncheckedAt(j);
-       Int_t flaglab=0;
-       if (!track) continue;
-       ////// elimination of not good tracks ////////////       
-       Int_t ilab=TMath::Abs(track->GetLabel());
-       Int_t iii;
-       for (iii=0;iii<ngood;iii++) {
-           //cout<<" ilab, gt[iii].lab = "<<ilab<<" "<<gt[iii].lab<<"\n";getchar();
-           if (ilab==gt[iii].lab) { 
-               flaglab=1;
-               ptg=gt[iii].ptg; 
-               pxg=gt[iii].pxg;
-               pyg=gt[iii].pyg;
-               pzg=gt[iii].pzg;        
-               break;
-           } // end if ilab==
-       } // end for iii
-       //cout<<" j flaglab =  " <<j<<" "<<flaglab<<"\n";  getchar();
-       if (!flaglab) continue;  
-       //cout<<" j =  " <<j<<"\n";  getchar();
-       /*
-         ////// old propagation to the end of TPC //////////////       
-         Double_t xk=76.;
-         track->PropagateTo(xk);
-         xk-=0.11;
-         track->PropagateTo(xk,42.7,2.27); //C
-         xk-=2.6;
-         track->PropagateTo(xk,36.2,1.98e-3); //C02
-         xk-=0.051;
-         track->PropagateTo(xk,42.7,2.27); //C 
-         /////////////////////////////////////////////////// 
-       */ 
-       ////// new propagation to the end of TPC //////////////
-       Double_t xk=77.415;
-       track->PropagateTo(xk, 28.94, 1.204e-3);         //Ne
-       xk -=0.01;
-       track->PropagateTo(xk, 44.77, 1.71);     //Tedlar
-       xk -=0.04;
-       track->PropagateTo(xk, 44.86, 1.45);     //Kevlar
-       xk -=2.0;
-       track->PropagateTo(xk, 41.28, 0.029);    //Nomex         
-       xk-=16;
-       track->PropagateTo(xk,36.2,1.98e-3); //C02
-       xk -=0.01;
-       track->PropagateTo(xk, 24.01, 2.7);      //Al    
-       xk -=0.01;
-       track->PropagateTo(xk, 44.77, 1.71);     //Tedlar
-       xk -=0.04;
-       track->PropagateTo(xk, 44.86, 1.45);     //Kevlar
-       xk -=0.5;
-       track->PropagateTo(xk, 41.28, 0.029);    //Nomex
-       ///////////////////////////////////////////////////////////////
-
-       ///////////////////////////////////////////////////////////////
-       AliITStrack trackITS(*track);
-       AliITStrack result(*track);
-       AliITStrack primarytrack(*track); 
-    
-       /////////////////////////////////////////////////////////////////
-       TVector Vgeant(3);
-       Vgeant=result.GetVertex();
-
-       // Definition of Dv and Zv for vertex constraint        
-       Double_t sigmaDv=0.0050;  Double_t sigmaZv=0.010;       
-       //Double_t sigmaDv=0.0015;  Double_t sigmaZv=0.0015;
-       Double_t uniform= gRandom->Uniform();
-       Double_t signdv;
-       if(uniform<=0.5) signdv=-1.;
-       else
-           signdv=1.;
-
-       Double_t Vr=TMath::Sqrt(Vgeant(0)*Vgeant(0)+ Vgeant(1)*Vgeant(1));
-       Double_t Dv=gRandom->Gaus(signdv*Vr,(Float_t)sigmaDv); 
-       Double_t Zv=gRandom->Gaus(Vgeant(2),(Float_t)sigmaZv);
-               
-       //cout<<" Dv e Zv = "<<Dv<<" "<<Zv<<"\n";
-       trackITS.SetDv(Dv);  trackITS.SetZv(Zv);
-       trackITS.SetsigmaDv(sigmaDv); trackITS.SetsigmaZv(sigmaZv); 
-       result.SetDv(Dv);  result.SetZv(Zv);
-       result.SetsigmaDv(sigmaDv); result.SetsigmaZv(sigmaZv);
-       primarytrack.SetDv(Dv);  primarytrack.SetZv(Zv);
-       primarytrack.SetsigmaDv(sigmaDv); primarytrack.SetsigmaZv(sigmaZv);
-
-       ////////////////////////////////////////////////////////////////
-
-       primarytrack.PrimaryTrack(rl);
-       TVector  d2=primarytrack.Getd2();
-       TVector  tgl2=primarytrack.Gettgl2();
-       TVector  dtgl=primarytrack.Getdtgl();
-       trackITS.Setd2(d2); trackITS.Settgl2(tgl2);  trackITS.Setdtgl(dtgl); 
-       result.Setd2(d2); result.Settgl2(tgl2);  result.Setdtgl(dtgl);     
-       /*                       
-          trackITS.SetVertex(vertex); trackITS.SetErrorVertex(ervertex);
-          result.SetVertex(vertex);   result.SetErrorVertex(ervertex);   
-       */
-
-
-       Tracking(trackITS,&result,recPoints,vettid, flagvert,rl);
-       // cout<<" progressive track number = "<<j<<"\r";
-       // cout<<j<<"\r";
-       Int_t NumofCluster=result.GetNumClust();  
-       // cout<<" progressive track number = "<<j<<"\n";    // stampa
-       Long_t labITS=result.GetLabel();
-       //  cout << " ITS track label = " << labITS << "\n";    // stampa
-       int lab=track->GetLabel();                  
-       // cout << " TPC track label = " << lab <<"\n";      // stampa
-
-       //propagation to vertex
-
-       Double_t rbeam=3.;
-
-       result.Propagation(rbeam);
-
-       Double_t C00,C10,C11,C20,C21,C22,C30,C31,C32,C33,C40,C41,C42,C43,C44;
-       result.GetCElements(C00,C10,C11,C20,C21,C22,C30,C31,C32,C33,C40,C41,C42,C43,C44);
-       Double_t pt=TMath::Abs(result.GetPt());
-       Double_t Dr=result.GetD();
-       Double_t Z=result.GetZ();
-       Double_t tgl=result.GetTgl();
-       Double_t C=result.GetC();
-       Double_t Cy=C/2.;
-       Double_t Dz=Z-(tgl/Cy)*TMath::ASin(result.arga(rbeam));
-       Dz-=Vgeant(2);
-
-       // cout<<" Dr e dz alla fine = "<<Dr<<" "<<Dz<<"\n"; getchar();
-       Double_t phi=result.Getphi();
-       Double_t phivertex = phi - TMath::ASin(result.argA(rbeam));
-       Double_t duepi=2.*TMath::Pi();   
-       if(phivertex>duepi) phivertex-=duepi;
-       if(phivertex<0.) phivertex+=duepi;
-       Double_t Dtot=TMath::Sqrt(Dr*Dr+Dz*Dz);
-
-       /////////////////////////////////////////////////////////////////////
-
-       Int_t idmodule,idpoint;
-       if(NumofCluster >=5)  {            // cinque - sei
-           //if(NumofCluster ==6)  {            // cinque - sei
-
-           AliITSiotrack outtrack;
-
-           iotrack=&outtrack;
-
-           iotrack->SetStatePhi(phi);
-           iotrack->SetStateZ(Z);
-           iotrack->SetStateD(Dr);
-           iotrack->SetStateTgl(tgl);
-           iotrack->SetStateC(C);
-           Double_t radius=result.Getrtrack();
-           iotrack->SetRadius(radius);
-           Int_t charge;
-           if(C>0.) charge=-1;  else charge=1;
-           iotrack->SetCharge(charge);
-
-
-           iotrack->SetCovMatrix(C00,C10,C11,C20,C21,C22,C30,C31,C32,C33,C40,C41,C42,C43,C44);  
-
-           Double_t px=pt*TMath::Cos(phivertex);
-           Double_t py=pt*TMath::Sin(phivertex);
-           Double_t pz=pt*tgl;
-
-           Double_t xtrack=Dr*TMath::Sin(phivertex);
-           Double_t ytrack=Dr*TMath::Cos(phivertex);
-           Double_t ztrack=Dz+Vgeant(2);
-
-
-           iotrack->SetPx(px);
-           iotrack->SetPy(py);
-           iotrack->SetPz(pz);
-           iotrack->SetX(xtrack);
-           iotrack->SetY(ytrack);
-           iotrack->SetZ(ztrack);
-           iotrack->SetLabel(labITS);
-
-           Int_t il;           
-           for(il=0;il<6; il++){
-               iotrack->SetIdPoint(il,result.GetIdPoint(il));
-               iotrack->SetIdModule(il,result.GetIdModule(il));
-           } // end for il
-           tracktree1.Fill();
-
-           //cout<<" labITS = "<<labITS<<"\n";
-           //cout<<" phi z Dr tgl C = "<<phi<<" "<<Z<<" "<<Dr<<" "<<tgl<<" "<<C<<"\n";  getchar();        
-
-           DataOut(kkk) = ptg; kkk++; DataOut(kkk)=labITS; kkk++; DataOut(kkk)=lab; kkk++;             
-
-           for (il=0;il<6;il++) {
-               idpoint=result.GetIdPoint(il);
-               idmodule=result.GetIdModule(il);
-               *(vettid[idmodule]+idpoint)=1; 
-               iotrack->SetIdPoint(il,idpoint);
-               iotrack->SetIdModule(il,idmodule);
-           } // end for il
-
-           //  cout<<"  +++++++++++++  pt e ptg = "<<pt<<" "<<ptg<<"  ++++++++++\n";
-           /* ///  provvisorio il 23-5-2001
-              Double_t pg=TMath::Sqrt(pxg*pxg+pyg*pyg+pzg*pzg);
-              Double_t cosl=TMath::Sqrt(1./(1.+tgl*tgl));
-              Double_t ptot=pt/cosl;
-              cout<<"ptot e pg = "<<ptot<<" "<<pg<<"\n";
-              Double_t difpt= (ptot-pg)/pg*100.;
-           */
-           ///////////////////////////////
-           Double_t difpt= (pt-ptg)/ptg*100.;  //coomentato prov il 23-5-2001
-           DataOut(kkk)=difpt; kkk++;
-           Double_t lambdag=TMath::ATan(pzg/ptg);
-           Double_t   lam=TMath::ATan(tgl);      
-           Double_t diflam = (lam - lambdag)*1000.;
-           DataOut(kkk) = diflam; kkk++;
-           Double_t phig=TMath::ATan2(pyg,pxg);
-           if(phig<0) phig=2.*TMath::Pi()+phig;       
-           Double_t phi=phivertex;
-
-           Double_t difphi = (phi - phig)*1000.;
-           DataOut(kkk)=difphi; kkk++;
-           DataOut(kkk)=Dtot*1.e4; kkk++;
-           DataOut(kkk)=Dr*1.e4; kkk++;
-           DataOut(kkk)=Dz*1.e4; kkk++; 
-           Int_t r;
-           for (r=0; r<9; r++) { out<<DataOut(r)<<" ";}
-           out<<"\n";
-           kkk=0;
-
-       } // end if on NumofCluster
-       //gObjectTable->Print();    // stampa memoria     
-    }  //  end for (int j=min_t; j<=max_t; j++)
-
-    out.close();  
-    //outprova.close();   
-    static Bool_t first=kTRUE;
-    static TFile *tfile;
-
-    if(first) {
-       tfile=new TFile("itstracks.root","RECREATE");
-       //cout<<"I have opened itstracks.root file "<<endl;
-    } // end if first      
-    first=kFALSE;
-    tfile->cd();
-    tfile->ls();
-
-    char hname[30];
-    sprintf(hname,"TreeT%d",evNumber);
-
-    tracktree1.Write(hname);
-
-
-  
-    TTree *fAli=gAlice->TreeK();
-    TFile *fileAli=0;
-           
-    if (fAli) fileAli =fAli->GetCurrentFile();
-    fileAli->cd();
-     
-    ///////////////////////////////////////////////////////////////////
-
-    printf("delete vectors\n");
-    if(np) delete [] np;
-    if(vettid) delete [] vettid;
-}
index 476ed0b8511403c5211bf3784c41153e83129055..09bd57dcd4c3c739bfefaec5895d22d9decd1993 100644 (file)
@@ -28,8 +28,7 @@ class AliITSdigit;
 class AliITSRecPoint;
 class AliITSRawCluster;
 class AliITSmodule;
-class AliITStrack;
-class AliITSRad; 
+
 
 const Int_t kNTYPES=3;
 
@@ -139,12 +138,6 @@ class AliITS : public AliDetector {
     TTree          *TreeC() {return fTreeC;}
 
 
-    // tracking
-
-    AliITStrack Tracking(AliITStrack &track, AliITStrack *reference, TObjArray *fpoints, Int_t **vettid,
-        Bool_t flagvert,  AliITSRad *rl );  
-
-    void DoTracking(Int_t evNumber, Int_t min_t, Int_t max_t, TFile *file, Bool_t flagvert);
 
  protected:
 
index 87c13818a5abd7962a03795810aa43a26e7abc68..735d0e7946f6d6718b07a118b4c800f8a219791f 100644 (file)
@@ -3,27 +3,29 @@
 #include <TList.h> 
 #include <TTree.h> 
 #include <TVector.h>
-#include <TMatrix.h>
-#include <TObjectTable.h>
+//#include <TObjectTable.h>
 
 #include "AliITStracking.h"
 #include "AliRun.h"
 #include "AliITS.h"
 #include "AliITSgeom.h"
 #include "AliITSRecPoint.h"
+#include "AliITSRad.h"
 #include "AliITStrack.h"
+#include "AliITSgeoinfo.h"
 
 ClassImp(AliITStracking)
  
 
 AliITStracking::AliITStracking(TList *trackITSlist, AliITStrack *reference, 
-                AliITS *aliITS, TObjArray *rpoints, Double_t Ptref, Int_t **vettid, Bool_t flagvert,  AliITSRad *rl) {                                                                          
+                AliITS *aliITS, TObjArray *rpoints, Double_t Ptref, Int_t **vettid, Bool_t flagvert,  
+                                        AliITSRad *rl, AliITSgeoinfo *geoinfo) {                                                                                
 ///////////////////////   This function perform the tracking in ITS detectors /////////////////////
 ///////////////////////     reference is a pointer to the final best track    ///////////////////// 
 //Origin  A. Badala' and G.S. Pappalardo:  e-mail Angela.Badala@ct.infn.it, Giuseppe.S.Pappalardo@ct.infn.it
 // The authors  thank   Mariana Bondila to have help them to resolve some problems.  July-2000                                                      
 
-  Rlayer[0]=4.; Rlayer[1]=7.;  Rlayer[2]=14.9;  Rlayer[3]=23.8;  Rlayer[4]=39.1;  Rlayer[5]=43.6;
+  //Rlayer[0]=4.; Rlayer[1]=7.;  Rlayer[2]=14.9;  Rlayer[3]=23.8;  Rlayer[4]=39.1;  Rlayer[5]=43.6; //vecchio
   
   Int_t index;   
   for(index =0; index<trackITSlist->GetSize(); index++) {
@@ -72,16 +74,17 @@ AliITStracking::AliITStracking(TList *trackITSlist, AliITStrack *reference,
     Int_t layerInit = (*trackITS).GetLayer();
     Int_t layernew = layerInit - 2;  // -1 for new layer, -1 for matrix index 
                                          
-    Int_t NLadder[]= {20, 40, 14, 22, 34, 38}; 
-    Int_t NDetector[]= {4,  4,   6,  8, 23, 26}; 
+    //Int_t NLadder[]= {20, 40, 14, 22, 34, 38};   //vecchio
+    //Int_t NDetector[]= {4,  4,   6,  8, 23, 26}; //vecchio
                                                
     TList listoftrack;          
     Int_t ladp, ladm, detp,detm,ladinters,detinters;   
     Int_t layerfin=layerInit-1;
-    Double_t Rfin=Rlayer[layerfin-1];
+    //Double_t Rfin=Rlayer[layerfin-1];  // vecchio
+        Double_t Rfin=geoinfo->Avrad[layerfin-1];  // nuovo
     // cout<<"Prima di intersection \n";
 
-    Int_t  outinters=NewIntersection(*trackITS, Rfin, layerfin, ladinters, detinters);
+    Int_t  outinters=NewIntersection(*trackITS, Rfin, layerfin, ladinters, detinters, geoinfo);
                 
    // cout<<" outinters = "<<outinters<<"\n";
    //  cout<<" Layer ladder detector intersection ="<<layerfin<<" "<<ladinters<<" "<<detinters<<"\n";
@@ -95,8 +98,10 @@ AliITStracking::AliITStracking(TList *trackITSlist, AliITStrack *reference,
       Int_t lycur=layerfin;                                            
       ladp=ladinters+1;
       ladm=ladinters-1;
-      if(ladm <= 0) ladm=NLadder[layerfin-1];  
-      if(ladp > NLadder[layerfin-1]) ladp=1;           
+      //if(ladm <= 0) ladm=NLadder[layerfin-1];  //vecchio
+               if(ladm <= 0) ladm=geoinfo->Nlad[layerfin-1];    //nuovo
+      //if(ladp > NLadder[layerfin-1]) ladp=1;         //vecchio
+               if(ladp > geoinfo->Nlad[layerfin-1]) ladp=1;  //nuovo
       detp=detinters+1;
       detm=detinters-1;
       Int_t idetot=1;
@@ -104,18 +109,21 @@ AliITStracking::AliITStracking(TList *trackITSlist, AliITStrack *reference,
       Touclad(3)=ladinters; Touclad(4)=ladm; Touclad(5)=ladp;
       Touclad(6)=ladinters; Touclad(7)=ladm; Touclad(8)=ladp;
       Toucdet(0)=detinters; Toucdet(1)=detinters; Toucdet(2)=detinters;
-      if(detm > 0 && detp <= NDetector[layerfin-1]) {
+      //if(detm > 0 && detp <= NDetector[layerfin-1]) {   //vecchio
+               if(detm > 0 && detp <= geoinfo->Ndet[layerfin-1]) {     //nuovo
         idetot=9;
         Toucdet(3)=detm; Toucdet(4)=detm; Toucdet(5)=detm;        
         Toucdet(6)=detp; Toucdet(7)=detp; Toucdet(8)=detp;
       }
         
-      if(detm > 0 && detp > NDetector[layerfin-1]) {
+      //if(detm > 0 && detp > NDetector[layerfin-1]) {  //vecchio
+               if(detm > 0 && detp > geoinfo->Ndet[layerfin-1]) {   //nuovo
         idetot=6;
         Toucdet(3)=detm; Toucdet(4)=detm; Toucdet(5)=detm;
       }
         
-      if(detm <= 0 && detp <= NDetector[layerfin-1]) {
+      //if(detm <= 0 && detp <= NDetector[layerfin-1]) {  //vecchio
+               if(detm <= 0 && detp <= geoinfo->Ndet[layerfin-1]) {   //nuovo
         idetot=6;
         Toucdet(3)=detp; Toucdet(4)=detp; Toucdet(5)=detp;
       }
@@ -283,7 +291,7 @@ AliITStracking::AliITStracking(TList *trackITSlist, AliITStrack *reference,
 
     //gObjectTable->Print();   // stampa memoria
         
-    AliITStracking(&listoftrack, reference, aliITS, rpoints,Ptref,vettid,flagvert,rl);          
+    AliITStracking(&listoftrack, reference, aliITS, rpoints,Ptref,vettid,flagvert,rl, geoinfo);          
     listoftrack.Delete();
   } // end of for on tracks
 
@@ -291,8 +299,8 @@ AliITStracking::AliITStracking(TList *trackITSlist, AliITStrack *reference,
 
 }   
 
-
-Int_t AliITStracking::NewIntersection(AliITStrack &track, Double_t rk,Int_t layer, Int_t &ladder, Int_t &detector) { 
+Int_t AliITStracking::NewIntersection(AliITStrack &track, Double_t rk,Int_t layer, Int_t &ladder, 
+Int_t &detector, AliITSgeoinfo *geoinfo) { 
 //Origin  A. Badala' and G.S. Pappalardo:  e-mail Angela.Badala@ct.infn.it, Giuseppe.S.Pappalardo@ct.infn.it
 // Found the intersection and the detector 
 
@@ -306,28 +314,35 @@ Int_t AliITStracking::NewIntersection(AliITStrack &track, Double_t rk,Int_t laye
 
   //////////////////////////////////      limits for Geometry 5      /////////////////////////////
   
-  Int_t NLadder[]= {20, 40, 14, 22, 34, 38};
-  Int_t NDetector[]= {4,  4,   6,  8, 23, 26}; 
+  //Int_t NLadder[]= {20, 40, 14, 22, 34, 38};
+  //Int_t NDetector[]= {4,  4,   6,  8, 23, 26}; 
+
+  //Float_t Detx[]= {0.64, 0.64, 3.509, 3.509, 3.65, 3.65 };
+  //Float_t Detz[]= {4.19, 4.19, 3.75 , 3.75 , 2   , 2    };
 
-  Float_t Detx[]= {0.64, 0.64, 3.509, 3.509, 3.65, 3.65 };
-  Float_t Detz[]= {4.19, 4.19, 3.75 , 3.75 , 2   , 2    };
   ////////////////////////////////////////////////////////////////////////////////////////////////  
   
   TVector det(9);
   TVector ListDet(2);
   TVector DistZCenter(2);  
   AliITSgeom *g1 = ((AliITS*)gAlice->GetDetector("ITS"))->GetITSgeom();
+  
   Int_t iz=0; 
   Double_t epsz=1.2;
   Double_t epszpixel=0.05;
 
   Int_t iD;
-  for(iD = 1; iD<= NDetector[layer-1]; iD++) {
+  //for(iD = 1; iD<= NDetector[layer-1]; iD++) {   //vecchio
+  for(iD = 1; iD<= geoinfo->Ndet[layer-1]; iD++) {
     g1->GetCenterThetaPhi(layer,1,iD,det);
-    Double_t zmin=det(2)-Detz[layer-1];
-    if(iD==1) zmin=det(2)-(Detz[layer-1])*epsz;                
-    Double_t zmax=det(2)+Detz[layer-1];
-    if(iD==NDetector[layer-1]) zmax=det(2)+(Detz[layer-1])*epsz;
+    //Double_t zmin=det(2)-Detz[layer-1];   //vecchio
+        Double_t zmin=det(2)-geoinfo->Detz[layer-1];   //nuovo
+    //if(iD==1) zmin=det(2)-(Detz[layer-1])*epsz;              //vecchio
+        if(iD==1) zmin=det(2)-(geoinfo->Detz[layer-1])*epsz;           //nuovo
+    //Double_t zmax=det(2)+Detz[layer-1];    //vecchio
+        Double_t zmax=det(2)+geoinfo->Detz[layer-1];    //nuovo
+    //if(iD==NDetector[layer-1]) zmax=det(2)+(Detz[layer-1])*epsz;  //vecchio
+        if(iD==geoinfo->Ndet[layer-1]) zmax=det(2)+(geoinfo->Detz[layer-1])*epsz;   //nuovo
     //added to take into account problem on drift
     if(layer == 4 || layer==3) zmin=zmin-epszpixel; zmax=zmax+epszpixel;
     //cout<<"zmin zinters zmax det(2)= "<<zmin<<" "<<zinters<<" "<<zmax<<" "<<det(2)<<"\n";    
@@ -352,7 +367,8 @@ Int_t AliITStracking::NewIntersection(AliITStrack &track, Double_t rk,Int_t laye
   Double_t pigre=TMath::Pi();
   
   Int_t iLd;   
-  for(iLd = 1; iLd<= NLadder[layer-1]; iLd++) {
+  //for(iLd = 1; iLd<= NLadder[layer-1]; iLd++) {   //vecchio
+  for(iLd = 1; iLd<= geoinfo->Nlad[layer-1]; iLd++) {  //nuovo
           g1->GetCenterThetaPhi(layer,iLd,detector,det);
   Double_t phidet=PhiDef(Double_t(det(0)),Double_t(det(1)));
   // cout<<" layer phidet e det(6) = "<< layer<<" "<<phidet<<" "<<det(6)<<"\n"; getchar();
@@ -360,12 +376,16 @@ Int_t AliITStracking::NewIntersection(AliITStrack &track, Double_t rk,Int_t laye
  // Double_t phiconfr=0.0;
   //cout<<" phiconfr inizio =  "<<phiconfr <<"\n"; getchar();  
   local[1]=local[2]=0.;  
-  local[0]= -(Detx[layer-1]);
-  if(layer==1)    local[0]= (Detx[layer-1]);  //take into account different reference system
+  //local[0]= -(Detx[layer-1]);  //vecchio
+  local[0]= -(geoinfo->Detx[layer-1]);    //nuovo
+  //if(layer==1)    local[0]= (Detx[layer-1]);  //take into account different reference system  //vecchio
+  if(layer==1)    local[0]= (geoinfo->Detx[layer-1]);  //take into account different reference system   //nuovo
   g2->LtoG(layer,iLd,detector,local,global);
   xmax=global[0]; ymax=global[1];
-  local[0]= (Detx[layer-1]);
-  if(layer==1)    local[0]= -(Detx[layer-1]);  //take into account different reference system  
+  //local[0]= (Detx[layer-1]);   //vecchio
+  local[0]= (geoinfo->Detx[layer-1]);   //nuovo
+  //if(layer==1)    local[0]= -(Detx[layer-1]);  //take into account different reference system //vecchio
+  if(layer==1)    local[0]= -(geoinfo->Detx[layer-1]);  //take into account different reference system //nuovo 
   g2->LtoG(layer,iLd,detector,local,global);
   xmin=global[0]; ymin=global[1];
   Double_t phimin=PhiDef(xmin,ymin);
index c9b8370a61f74ed8c458fef4c375d993619983c2..be07955a67f3399dcb98d6d4d4df9c7e24a4ddd0 100644 (file)
@@ -1,15 +1,11 @@
 #ifndef ALIITSTRACKING_H
 #define ALIITSTRACKING_H
 
-#include <TObject.h>
-#include <TList.h>
-
-class TObjArray;
-class TVector;
-class TMatrix;
+//class TObjArray;
 class AliITStrack;
 class AliITS;
 class AliITSRad;
+class AliITSgeoinfo;
 
 class AliITStracking : public TObject {
 
@@ -22,9 +18,10 @@ public:
   AliITStracking() {;}
 
   AliITStracking(TList *trackITSlist,AliITStrack *reference,AliITS *obj,TObjArray *fpoints,
-                 Double_t Ptref, Int_t **vettid, Bool_t flagvert, AliITSRad *rl );
+                 Double_t Ptref, Int_t **vettid, Bool_t flagvert, AliITSRad *rl, AliITSgeoinfo *geoinfo);
 
-  Int_t NewIntersection(AliITStrack &track, Double_t rk,Int_t layer, Int_t &ladder, Int_t &detector );
+  Int_t NewIntersection(AliITStrack &track, Double_t rk,Int_t layer, Int_t &ladder, Int_t &detector,
+  AliITSgeoinfo *geoinfo);
   Double_t PhiDef(Double_t x, Double_t y);
 
   void KalmanFilter(AliITStrack *newtrack, TVector &cluster, Double_t sigma[2]);