]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TPC/AliBarrelRec_TPCparam.C
- changes due to deletion of files
[u/mrichter/AliRoot.git] / TPC / AliBarrelRec_TPCparam.C
index f7e9b42e182285fadf70fe1e6d0313bbfe52996d..30e429c078addde2de33826192af8fc4a6f399ca 100644 (file)
@@ -13,12 +13,14 @@ void AliBarrelRec_TPCparam(Int_t firstEvent=0,Int_t lastEvent=0) {
   // A. Dainese - INFN Legnaro
   //
 
+
   Int_t  collcode = 1; // pp collisions
-  Bool_t useMeanVtx = kTRUE;
+  Bool_t useMeanVtx = kFALSE;
   
+  AliGeomManager::LoadGeometry("geometry.root");
   
   if (gAlice) {
-    delete gAlice->GetRunLoader();
+    delete AliRunLoader::Instance();
     delete gAlice; 
     gAlice=0;
   }
@@ -66,18 +68,13 @@ void AliBarrelRec_TPCparam(Int_t firstEvent=0,Int_t lastEvent=0) {
   }
   itsl->LoadRecPoints("read");
   
-  AliITS *dITS = (AliITS*)gAlice->GetDetector("ITS");
-  if (!dITS) {
-    cerr<<"Cannot find the ITS detector !"<<endl;
-    return;
-  }
-  AliITSgeom *geom = dITS->GetITSgeom();
+  AliITSRecoParam * itsRecoParam = AliITSRecoParam::GetLowFluxParam();
+  AliITSReconstructor::SetRecoParam(itsRecoParam);
   
   // Instance of the ITS tracker
-  AliITStrackerSA itsTracker(geom);
+  AliITStrackerSA itsTracker(0);
   Int_t ITSclusters[6] = {1,1,1,1,1,1};
-  itsTracker.SetLayersNotToSkip(ITSclusters);
-  
+  itsTracker.SetLayersNotToSkip(ITSclusters);  
   
   // Primary vertex reconstruction in pp
   AliESDVertex *initVertex = 0;
@@ -92,7 +89,7 @@ void AliBarrelRec_TPCparam(Int_t firstEvent=0,Int_t lastEvent=0) {
   }
   invtx->Close();
   delete invtx;
-  AliVertexerTracks *vertexer = new AliVertexerTracks();
+  AliVertexerTracks *vertexer = new AliVertexerTracks(AliTracker::GetBz());
   vertexer->SetVtxStart(initVertex);
   vertexer->SetDebug(0);
   delete initVertex;
@@ -100,8 +97,10 @@ void AliBarrelRec_TPCparam(Int_t firstEvent=0,Int_t lastEvent=0) {
   
   /***** The TREE for ESD is born *****/
   TTree *esdTree=new TTree("esdTree","Tree with ESD objects");
-  AliESD *event=0;
-  esdTree->Branch("ESD","AliESD",&event);
+  AliESDEvent *event=0; AliESDEvent *eventTPCin=0;
+  event = new AliESDEvent();
+  event->CreateStdContent();
+  event->WriteToTree(esdTree);
   
   if(firstEvent>rl->GetNumberOfEvents()) firstEvent=rl->GetNumberOfEvents()-1;
   if(lastEvent>rl->GetNumberOfEvents())  lastEvent=rl->GetNumberOfEvents()-1;
@@ -119,10 +118,10 @@ void AliBarrelRec_TPCparam(Int_t firstEvent=0,Int_t lastEvent=0) {
   Int_t trc;
   for(Int_t i=firstEvent; i<=lastEvent; i++) { 
     
-    cerr<<" Processing event number : "<<i<<endl;
-    AliESD *event = new AliESD(); 
+    cout<<" Processing event number : "<<i<<endl;
+    //AliESDEvent *event = new AliESDEvent(); 
     event->SetRunNumber(gAlice->GetRunNumber());
-    event->SetEventNumber(i);
+    event->SetEventNumberInFile(i);
     event->SetMagneticField(gAlice->Field()->SolenoidField());
     rl->GetEvent(i);
 
@@ -130,7 +129,7 @@ void AliBarrelRec_TPCparam(Int_t firstEvent=0,Int_t lastEvent=0) {
     sprintf(zver,"Event%d/Vertex",i);
     vertexSPD = (AliESDVertex*)ppZ->Get(zver);
     if(!vertexSPD) {
-      esdTree->Fill(); delete event;
+      esdTree->Fill(); event->Reset();
       continue;
     }      
     event->SetVertex(vertexSPD);
@@ -140,28 +139,38 @@ void AliBarrelRec_TPCparam(Int_t firstEvent=0,Int_t lastEvent=0) {
     //***** TPC tracking
     if ( (trc=tpcTrackerPar.BuildTPCtracks(event)) ) {
       printf("exiting TPC tracker with code %d in event %d\n",trc,i);
-      esdTree->Fill(); delete event;
+      esdTree->Fill(); event->Reset();
       continue;
     }
 
+    // make a copy of the ESD at this stage
+    eventTPCin = event;
+
     //***** ITS tracking
     itsTracker.AliTracker::SetVertex(vtx,sigmavtx);
+    //    itsl->LoadRecPoints("read");
     TTree *itsTree=itsl->TreeR();
     if (!itsTree) {
       cerr<<"Can't get the ITS cluster tree !\n";
-      esdTree->Fill(); delete event;
+      esdTree->Fill(); event->Reset();
       return;
     }     
     itsTracker.UnloadClusters();
     itsTracker.LoadClusters(itsTree);
     if ( (trc=itsTracker.Clusters2Tracks(event)) ) {
       printf("exiting ITS tracker with code %d in event %d\n",trc,i);
-      esdTree->Fill(); delete event;
+      esdTree->Fill(); event->Reset();
       continue;
     }
+
+    // Bring kTPCin-tracks back to the TPC inner wall
+    BackToTPCInnerWall(event,eventTPCin);
+
+    // refit inward in ITS:
+    // - refit without vertex constraint
+    // - propagate through beam pipe to local x = 0
+    itsTracker.RefitInward(event);
     
-    //***** Propagate kITSin tracks to local x = 0 (through beam pipe)
-    ToLocalX0(event);
 
     //***** Vertex from ESD tracks
     if(collcode==1) { // pp
@@ -171,7 +180,7 @@ void AliBarrelRec_TPCparam(Int_t firstEvent=0,Int_t lastEvent=0) {
     }
     
     esdTree->Fill();
-    delete event;
+    event->Reset();
 
   }//<-----------------------------------The Loop over events ends here
   timer.Stop(); timer.Print();
@@ -180,7 +189,7 @@ void AliBarrelRec_TPCparam(Int_t firstEvent=0,Int_t lastEvent=0) {
   TFile *ef = TFile::Open("AliESDs.root","RECREATE"); 
   if (!ef || !ef->IsOpen()) {cerr<<"Can't open AliESDs.root !\n"; return;}
 
-  //Write the TREE and close everything
+  //Write the tree and close everything
   esdTree->Write();
   delete esdTree;
   ef->Close();
@@ -191,33 +200,54 @@ void AliBarrelRec_TPCparam(Int_t firstEvent=0,Int_t lastEvent=0) {
   return;
 }
 //--------------------------------------------------------------------------
-void ToLocalX0(AliESD *esd) {
+void BackToTPCInnerWall(AliESDEvent *event,AliESDEvent *eventTPC) {
+
+  Int_t ntracks = eventTPC->GetNumberOfTracks();
+  AliESDtrack *esdTrackTPC = 0;
 
-  Int_t ntracks = esd->GetNumberOfTracks();
+  // create relation between event and eventTPC
+  Int_t labelsTPC[100000000];
+  for(Int_t tr = 0; tr<ntracks; tr++) {
+    esdTrackTPC = (AliESDtrack*)event->GetTrack(tr);
+    labelsTPC[TMath::Abs(esdTrackTPC->GetLabel())] = tr;
+  }
+
+  ntracks = event->GetNumberOfTracks();
   AliESDtrack *esdTrack = 0;
+  esdTrackTPC = 0;
+  Int_t indexTPC;
 
   // loop on tracks
-  for(Int_t tr = 0; tr<ntracks; tr++) {
-    esdTrack = (AliESDtrack*)esd->GetTrack(tr);
-    // ask for kITSin
+  for(tr = 0; tr<ntracks; tr++) {
+    esdTrack = (AliESDtrack*)event->GetTrack(tr);
+    // set to kITSout the tracks that don't have kTPCin
+    // (they've been found by AliITStrackerSA)
+    if(!(esdTrack->GetStatus()&AliESDtrack::kTPCin)) {
+      esdTrack->SetStatus(AliESDtrack::kITSout);
+      continue;
+    }
+
+    // skip tracks that don't have kITSin
     if(!(esdTrack->GetStatus()&AliESDtrack::kITSin)) continue;
-    AliITStrackV2 *itsTrack = 0;
+
+    indexTPC = labelsTPC[TMath::Abs(esdTrack->GetLabel())];
+    esdTrackTPC = (AliESDtrack*)eventTPC->GetTrack(indexTPC);
+
+    AliITStrackMI *itsTrack = 0;
     try {
-      itsTrack = new AliITStrackV2(*esdTrack);
+      itsTrack = new AliITStrackMI(*esdTrackTPC);
       esdTrack = 0;
     }
     catch (const Char_t *msg) {
-        Warning("FindPrimaryVertexForCurrentEvent",msg);
+        Warning("ToTPCInnerWall",msg);
         continue;
     }
-    // propagate track to beam pipe (0.8 mm of Be) 
-    if(itsTrack->GetX()>3.) itsTrack->PropagateTo(3.,0.0023,65.19);
-    // propagate track to (0,0)
-    itsTrack->PropagateTo(0.,0.,0.);
-    itsTrack->UpdateESDtrack(AliESDtrack::kITSin);
+    itsTrack->UpdateESDtrack(AliESDtrack::kITSout);
     esdTrack = new AliESDtrack(*(itsTrack->GetESDtrack()));
+
     delete itsTrack;
   } // end loop on tracks
 
   return;
 }
+//--------------------------------------------------------------------------