From 970d08c33889eade18413815302db4e05bbb3131 Mon Sep 17 00:00:00 2001 From: hristov Date: Mon, 8 Jan 2007 15:31:46 +0000 Subject: [PATCH] Bringing the parametrized TPC tracker up-to-date (A.Dainese) --- TPC/AliBarrelRec_TPCparam.C | 356 ++++++++++++++++++------------------ TPC/AliTPCtrackerParam.cxx | 2 +- 2 files changed, 179 insertions(+), 179 deletions(-) diff --git a/TPC/AliBarrelRec_TPCparam.C b/TPC/AliBarrelRec_TPCparam.C index 608f5342c00..f7e9b42e182 100644 --- a/TPC/AliBarrelRec_TPCparam.C +++ b/TPC/AliBarrelRec_TPCparam.C @@ -1,7 +1,7 @@ void AliBarrelRec_TPCparam(Int_t firstEvent=0,Int_t lastEvent=0) { // // Macro to create AliESDs.root using parametrized TPC tracking - // and AliITStrackerV2 + // and AliITStrackerSA (MI + SA) // // Input files: // - galice.root @@ -10,188 +10,188 @@ void AliBarrelRec_TPCparam(Int_t firstEvent=0,Int_t lastEvent=0) { // - ITS.RecPoints.root (use AliRecontruction class) // - ITS.Vertex.root (use $ALICE_ROOT/ITS/AliITSVertexerZTest.C) // - // A. Dainese - LNL + // A. Dainese - INFN Legnaro // - Int_t collcode = 1; // pp collisions - Bool_t useMeanVtx = kTRUE; - - if (gAlice) { - delete gAlice->GetRunLoader(); - delete gAlice; - gAlice=0; - } - - AliRunLoader *rl = AliRunLoader::Open("galice.root"); - if (rl == 0x0) { - cerr<<"Can not open session"<LoadgAlice(); - if (retval) { - cerr<<"LoadgAlice returned error"<LoadHeader(); - if (retval) { - cerr<<"LoadHeader returned error"<GetAliRun(); - - - TDatabasePDG *DataBase = TDatabasePDG::Instance(); - - // Get field from galice.root - AliMagF *fiel = (AliMagF*)gAlice->Field(); - Double_t fieval=TMath::Abs((Double_t)fiel->SolenoidField()/10.); - // Set the conversion constant between curvature and Pt - AliTracker::SetFieldMap(fiel,kTRUE); - - /**** The TPC corner ********************/ - - AliTPCtrackerParam tpcTrackerPar(collcode,fieval); - tpcTrackerPar.Init(); - - //**** Switch on the PID class (mandatory!) - AliPID pid; - - /**** The ITS corner ********************/ - - AliITSLoader* itsl = (AliITSLoader*)rl->GetLoader("ITSLoader"); - if (itsl == 0x0) { - cerr<<"Cannot get the ITS loader"<LoadRecPoints("read"); + Int_t collcode = 1; // pp collisions + Bool_t useMeanVtx = kTRUE; + + + if (gAlice) { + delete gAlice->GetRunLoader(); + delete gAlice; + gAlice=0; + } + AliRunLoader *rl = AliRunLoader::Open("galice.root"); + if (rl == 0x0) { + cerr<<"Can not open session"<LoadgAlice(); + if (retval) { + cerr<<"LoadgAlice returned error"<LoadHeader(); + if (retval) { + cerr<<"LoadHeader returned error"<GetAliRun(); + + + + // Get field from galice.root + AliMagF *fiel = (AliMagF*)gAlice->Field(); + Double_t fieval=TMath::Abs((Double_t)fiel->SolenoidField()/10.); + // Set the conversion constant between curvature and Pt + AliTracker::SetFieldMap(fiel,kTRUE); + + /**** The TPC corner ********************/ + + AliTPCtrackerParam tpcTrackerPar(collcode,fieval); + tpcTrackerPar.Init(); + + //**** Switch on the PID class (mandatory!) + AliPID pid; + + /**** The ITS corner ********************/ + + AliITSLoader* itsl = (AliITSLoader*)rl->GetLoader("ITSLoader"); + if (itsl == 0x0) { + cerr<<"Cannot get the ITS loader"<LoadRecPoints("read"); + + AliITS *dITS = (AliITS*)gAlice->GetDetector("ITS"); + if (!dITS) { + cerr<<"Cannot find the ITS detector !"<GetITSgeom(); + + // Instance of the ITS tracker + AliITStrackerSA itsTracker(geom); + Int_t ITSclusters[6] = {1,1,1,1,1,1}; + itsTracker.SetLayersNotToSkip(ITSclusters); + + + // Primary vertex reconstruction in pp + AliESDVertex *initVertex = 0; + TFile *invtx = new TFile("AliESDVertexMean.root"); + if(collcode==1 && useMeanVtx) { + // open the mean vertex + initVertex = (AliESDVertex*)invtx->Get("vtxmean"); + } else { + Double_t pos[3]={0.5,0.5,0.}; + Double_t err[3]={3.,3.,5.}; + initVertex = new AliESDVertex(pos,err); + } + invtx->Close(); + delete invtx; + AliVertexerTracks *vertexer = new AliVertexerTracks(); + vertexer->SetVtxStart(initVertex); + vertexer->SetDebug(0); + delete initVertex; + initVertex=0; + + /***** The TREE for ESD is born *****/ + TTree *esdTree=new TTree("esdTree","Tree with ESD objects"); + AliESD *event=0; + esdTree->Branch("ESD","AliESD",&event); + + if(firstEvent>rl->GetNumberOfEvents()) firstEvent=rl->GetNumberOfEvents()-1; + if(lastEvent>rl->GetNumberOfEvents()) lastEvent=rl->GetNumberOfEvents()-1; + cout<<" Number of events: "<<1+lastEvent-firstEvent<SetRunNumber(gAlice->GetRunNumber()); + event->SetEventNumber(i); + event->SetMagneticField(gAlice->Field()->SolenoidField()); + rl->GetEvent(i); + + //***** Primary vertex from SPD from file + sprintf(zver,"Event%d/Vertex",i); + vertexSPD = (AliESDVertex*)ppZ->Get(zver); + if(!vertexSPD) { + esdTree->Fill(); delete event; + continue; + } + event->SetVertex(vertexSPD); + vertexSPD->GetXYZ(vtx); + vertexSPD->GetSigmaXYZ(sigmavtx); + + //***** TPC tracking + if ( (trc=tpcTrackerPar.BuildTPCtracks(event)) ) { + printf("exiting TPC tracker with code %d in event %d\n",trc,i); + esdTree->Fill(); delete event; + continue; + } - AliITS *dITS = (AliITS*)gAlice->GetDetector("ITS"); - if (!dITS) { - cerr<<"Cannot find the ITS detector !"<TreeR(); + if (!itsTree) { + cerr<<"Can't get the ITS cluster tree !\n"; + esdTree->Fill(); delete event; return; - } - AliITSgeom *geom = dITS->GetITSgeom(); - - //An instance of the ITS tracker - AliITStrackerV2 itsTracker(geom); - Int_t ITSclusters[6] = {1,1,1,1,1,1}; - itsTracker.SetLayersNotToSkip(ITSclusters); - - // Primary vertex reconstruction in pp - AliESDVertex *initVertex = 0; - if(collcode==1 && useMeanVtx) { - // open the mean vertex - TFile *invtx = new TFile("AliESDVertexMean.root"); - initVertex = (AliESDVertex*)invtx->Get("vtxmean"); - invtx->Close(); - delete invtx; - } else { - Double_t pos[3]={0.5,0.5,0.}; - Double_t err[3]={3.,3.,5.}; - initVertex = new AliESDVertex(pos,err); - } - AliVertexerTracks *vertexer = new AliVertexerTracks; - vertexer->SetVtxStart(initVertex); - - - /***** The TREE for ESD is born *****/ - TTree *esdTree=new TTree("esdTree","Tree with ESD objects"); - AliESD *event=0; - esdTree->Branch("ESD","AliESD",&event); - - if(firstEvent>rl->GetNumberOfEvents()) firstEvent=rl->GetNumberOfEvents()-1; - if(lastEvent>rl->GetNumberOfEvents()) lastEvent=rl->GetNumberOfEvents()-1; - cout<<" Number of events: "<<1+lastEvent-firstEvent<SetRunNumber(gAlice->GetRunNumber()); - event->SetEventNumber(i); - event->SetMagneticField(gAlice->Field()->SolenoidField()); - rl->GetEvent(i); - - //***** Primary vertex from SPD from file - sprintf(zver,"Event%d/Vertex",i); - vertexSPD = (AliESDVertex*)ppZ->Get(zver); - if(!vertexSPD) { - esdTree->Fill(); delete event; - continue; - } - event->SetVertex(vertexSPD); - vertexSPD->GetXYZ(vtx); - vertexSPD->GetCovMatrix(cvtx); - - //***** TPC tracking - if ( (trc=tpcTrackerPar.BuildTPCtracks(event)) ) { - printf("exiting TPC tracker with code %d in event %d\n",trc,i); - esdTree->Fill(); delete event; - continue; - } - - //***** ITS tracking - itsTracker.SetVertex(vtx,cvtx); - TTree *itsTree=itsl->TreeR(); - if (!itsTree) { - cerr<<"Can't get the ITS cluster tree !\n"; - esdTree->Fill(); delete event; - 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; - continue; - } - - //***** Propagate kITSin tracks to local x = 0 (through beam pipe) - ToLocalX0(event); - - - //***** Vertex from ESD tracks - if(collcode==1) { // pp - AliESDVertex *vertexTrks = - (AliESDVertex*)vertexer->FindPrimaryVertex(event); - event->SetPrimaryVertex(vertexTrks); - } - - esdTree->Fill(); - delete event; - - }//<-----------------------------------The Loop over events ends here - timer.Stop(); timer.Print(); - - // The AliESDs.root is born - 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 - esdTree->Write(); - delete esdTree; - ef->Close(); - - delete vertexer; - delete initVertex; - delete rl; - - 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; + continue; + } + + //***** Propagate kITSin tracks to local x = 0 (through beam pipe) + ToLocalX0(event); + + //***** Vertex from ESD tracks + if(collcode==1) { // pp + AliESDVertex *vertexTrks = + (AliESDVertex*)vertexer->FindPrimaryVertex(event); + event->SetPrimaryVertex(vertexTrks); + } + + esdTree->Fill(); + delete event; + + }//<-----------------------------------The Loop over events ends here + timer.Stop(); timer.Print(); + + // The AliESDs.root is born + 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 + esdTree->Write(); + delete esdTree; + ef->Close(); + + delete vertexer; + delete rl; + + return; } //-------------------------------------------------------------------------- -Int_t ToLocalX0(AliESD *esd) { +void ToLocalX0(AliESD *esd) { Int_t ntracks = esd->GetNumberOfTracks(); AliESDtrack *esdTrack = 0; @@ -219,5 +219,5 @@ Int_t ToLocalX0(AliESD *esd) { delete itsTrack; } // end loop on tracks - return 0; + return; } diff --git a/TPC/AliTPCtrackerParam.cxx b/TPC/AliTPCtrackerParam.cxx index 693e8da5ad9..87ca70f21e2 100644 --- a/TPC/AliTPCtrackerParam.cxx +++ b/TPC/AliTPCtrackerParam.cxx @@ -1047,7 +1047,7 @@ void AliTPCtrackerParam::BuildTrack(AliTPCseedGeant *s,Int_t ch) { //----------------------------------------------------------------------------- Double_t xref = s->GetXL(); Double_t xx[5],cc[15]; - cc[0]=cc[2]=cc[5]=cc[9]=cc[14]=10.; + cc[0]=cc[2]=cc[5]=cc[9]=cc[14]=0.; cc[1]=cc[3]=cc[4]=cc[6]=cc[7]=cc[8]=cc[10]=cc[11]=cc[12]=cc[13]=0.; // Magnetic field -- 2.43.0