+void SaveFigures(TString name="dummy") {
+
+ TString namefull;
+
+ namefull = name.Data();
+ namefull.Prepend("plots/residualsx_");
+ namefull.Append(".gif");
+ ax->Print(namefull.Data());
+ namefull = name.Data();
+ namefull.Prepend("plots/residualsx_");
+ namefull.Append(".ps");
+ ax->Print(namefull.Data());
+ namefull = name.Data();
+ namefull.Prepend("plots/residualsx_");
+ namefull.Append(".eps");
+ ax->Print(namefull.Data());
+ namefull = name.Data();
+ namefull.Prepend("plots/residualsx_");
+ namefull.Append(".root");
+ ax->Print(namefull.Data());
+
+ namefull = name.Data();
+ namefull.Prepend("plots/pullsx_");
+ namefull.Append(".gif");
+ bx->Print(namefull.Data());
+ namefull = name.Data();
+ namefull.Prepend("plots/pullsx_");
+ namefull.Append(".ps");
+ bx->Print(namefull.Data());
+ namefull = name.Data();
+ namefull.Prepend("plots/pullsx_");
+ namefull.Append(".eps");
+ bx->Print(namefull.Data());
+ namefull = name.Data();
+ namefull.Prepend("plots/pullsx_");
+ namefull.Append(".root");
+ bx->Print(namefull.Data());
+
+ namefull = name.Data();
+ namefull.Prepend("plots/residualsz_");
+ namefull.Append(".gif");
+ az->Print(namefull.Data());
+ namefull = name.Data();
+ namefull.Prepend("plots/residualsz_");
+ namefull.Append(".ps");
+ az->Print(namefull.Data());
+ namefull = name.Data();
+ namefull.Prepend("plots/residualsz_");
+ namefull.Append(".eps");
+ az->Print(namefull.Data());
+ namefull = name.Data();
+ namefull.Prepend("plots/residualsz_");
+ namefull.Append(".root");
+ az->Print(namefull.Data());
+
+ namefull = name.Data();
+ namefull.Prepend("plots/pullsz_");
+ namefull.Append(".gif");
+ bz->Print(namefull.Data());
+ namefull = name.Data();
+ namefull.Prepend("plots/pullsz_");
+ namefull.Append(".ps");
+ bz->Print(namefull.Data());
+ namefull = name.Data();
+ namefull.Prepend("plots/pullsz_");
+ namefull.Append(".eps");
+ bz->Print(namefull.Data());
+ namefull = name.Data();
+ namefull.Prepend("plots/pullsz_");
+ namefull.Append(".root");
+ bz->Print(namefull.Data());
+
+ namefull = name.Data();
+ namefull.Prepend("plots/effVSntracklets_");
+ namefull.Append(".gif");
+ c1a->Print(namefull.Data());
+ namefull = name.Data();
+ namefull.Prepend("plots/effVSntracklets_");
+ namefull.Append(".ps");
+ c1a->Print(namefull.Data());
+ namefull = name.Data();
+ namefull.Prepend("plots/effVSntracklets_");
+ namefull.Append(".eps");
+ c1a->Print(namefull.Data());
+ namefull = name.Data();
+ namefull.Prepend("plots/effVSntracklets_");
+ namefull.Append(".root");
+ c1a->Print(namefull.Data());
+
+
+ namefull = name.Data();
+ namefull.Prepend("plots/effVSnitstracks_");
+ namefull.Append(".gif");
+ c1b->Print(namefull.Data());
+ namefull = name.Data();
+ namefull.Prepend("plots/effVSnitstracks_");
+ namefull.Append(".ps");
+ c1b->Print(namefull.Data());
+ namefull = name.Data();
+ namefull.Prepend("plots/effVSnitstracks_");
+ namefull.Append(".eps");
+ c1b->Print(namefull.Data());
+ namefull = name.Data();
+ namefull.Prepend("plots/effVSnitstracks_");
+ namefull.Append(".root");
+ c1b->Print(namefull.Data());
+
+
+ namefull = name.Data();
+ namefull.Prepend("plots/effVSnitstracks5or6_");
+ namefull.Append(".gif");
+ c1c->Print(namefull.Data());
+ namefull = name.Data();
+ namefull.Prepend("plots/effVSnitstracks5or6_");
+ namefull.Append(".ps");
+ c1c->Print(namefull.Data());
+ namefull = name.Data();
+ namefull.Prepend("plots/effVSnitstracks5or6_");
+ namefull.Append(".eps");
+ c1c->Print(namefull.Data());
+ namefull = name.Data();
+ namefull.Prepend("plots/effVSnitstracks5or6_");
+ namefull.Append(".root");
+ c1c->Print(namefull.Data());
+
+
+ namefull = name.Data();
+ namefull.Prepend("plots/effVSzMC_");
+ namefull.Append(".gif");
+ c1e->Print(namefull.Data());
+ namefull = name.Data();
+ namefull.Prepend("plots/effVSzMC_");
+ namefull.Append(".ps");
+ c1e->Print(namefull.Data());
+ namefull = name.Data();
+ namefull.Prepend("plots/effVSzMC_");
+ namefull.Append(".eps");
+ c1e->Print(namefull.Data());
+ namefull = name.Data();
+ namefull.Prepend("plots/effVSzMC_");
+ namefull.Append(".root");
+ c1e->Print(namefull.Data());
+
+
+
+ namefull = name.Data();
+ namefull.Prepend("plots/effVSntracklets2_");
+ namefull.Append(".gif");
+ c5->Print(namefull.Data());
+ namefull = name.Data();
+ namefull.Prepend("plots/effVSntracklets2_");
+ namefull.Append(".ps");
+ c5->Print(namefull.Data());
+ namefull = name.Data();
+ namefull.Prepend("plots/effVSntracklets2_");
+ namefull.Append(".eps");
+ c5->Print(namefull.Data());
+ namefull = name.Data();
+ namefull.Prepend("plots/effVSntracklets2_");
+ namefull.Append(".root");
+ c5->Print(namefull.Data());
+
+
+ namefull = name.Data();
+ namefull.Prepend("plots/sigmaVSntracklets_");
+ namefull.Append(".gif");
+ c6->Print(namefull.Data());
+ namefull = name.Data();
+ namefull.Prepend("plots/sigmaVSntracklets_");
+ namefull.Append(".ps");
+ c6->Print(namefull.Data());
+ namefull = name.Data();
+ namefull.Prepend("plots/sigmaVSntracklets_");
+ namefull.Append(".eps");
+ c6->Print(namefull.Data());
+ namefull = name.Data();
+ namefull.Prepend("plots/sigmaVSntracklets_");
+ namefull.Append(".root");
+ c6->Print(namefull.Data());
+
+
+ namefull = name.Data();
+ namefull.Prepend("plots/pullsVSntracklets_");
+ namefull.Append(".gif");
+ c8->Print(namefull.Data());
+ namefull = name.Data();
+ namefull.Prepend("plots/pullsVSntracklets_");
+ namefull.Append(".ps");
+ c8->Print(namefull.Data());
+ namefull = name.Data();
+ namefull.Prepend("plots/pullsVSntracklets_");
+ namefull.Append(".eps");
+ c8->Print(namefull.Data());
+ namefull = name.Data();
+ namefull.Prepend("plots/pullsVSntracklets_");
+ namefull.Append(".root");
+ c8->Print(namefull.Data());
+
+
+ return;
+}
+//----------------------------------------------------------------------------
+void TestRmTracks(Int_t iev=0) {
+
+ if (gAlice) {
+ delete gAlice->GetRunLoader();
+ delete gAlice;
+ gAlice=0;
+ }
+
+ AliRunLoader *rl = AliRunLoader::Open("galice.root");
+ if (rl == 0x0) {
+ cerr<<"Can not open session"<<endl;
+ return;
+ }
+ Int_t retval = rl->LoadgAlice();
+ if (retval) {
+ cerr<<"LoadgAlice returned error"<<endl;
+ delete rl;
+ return;
+ }
+ retval = rl->LoadHeader();
+ if (retval) {
+ cerr<<"LoadHeader returned error"<<endl;
+ delete rl;
+ return;
+ }
+ gAlice=rl->GetAliRun();
+ // Get field from galice.root
+ AliMagF *fiel = (AliMagF*)gAlice->Field();
+ // Set the conversion constant between curvature and Pt
+ AliTracker::SetFieldMap(fiel,kTRUE);
+
+ Double_t truevtx[3];
+ Double_t vtx[3];
+ Double_t errvtx[3];
+ Double_t diffX,diffY,diffZ;
+ Double_t diffXerr,diffYerr,diffZerr;
+ Double_t multiplicity;
+ Int_t nc;
+
+ // ----------- Create vertexer --------------------------
+ AliESDVertex *initVertex = 0;
+ TFile *invtx = new TFile("AliESDVertexMean.root");
+ initVertex = (AliESDVertex*)invtx->Get("vtxmean");
+ invtx->Close();
+ delete invtx;
+
+ AliVertexerTracks *vertexer = new AliVertexerTracks();
+ vertexer->SetVtxStart(initVertex);
+ vertexer->SetOnlyFitter();
+ vertexer->SetDebug(0); // set to 1 to see what it does
+
+ Float_t diamondxy[2];
+ diamondxy[0]=initVertex->GetXv();
+ diamondxy[1]=initVertex->GetYv();
+ //----------------------------------------------------------
+
+ if(gSystem->AccessPathName("AliESDs.root",kFileExists)) {
+ printf("AliESDs.root not found!\n");
+ return;
+ }
+ TFile *fin = TFile::Open("AliESDs.root");
+ TTree *esdTree = (TTree*)fin->Get("esdTree");
+ if(!esdTree) return;
+ AliESD *esd = 0;
+ esdTree->SetBranchAddress("ESD",&esd);
+
+ TArrayF o;
+
+ nc=0;
+
+
+ esdTree->GetEvent(iev);
+ Int_t ntracks = esd->GetNumberOfTracks();
+ printf("Number of tracks in ESD %d : %d\n",iev,ntracks);
+
+ // example: do vertex without tracks 1 and 2 (AliESDtrack::GetID())
+ //
+ // 1: tell vertexer to skip those two tracks
+ //
+ Int_t nskip=2;
+ Int_t skipped[2];
+ skipped[0]=1;
+ skipped[1]=2;
+ vertexer->SetSkipTracks(nskip,skipped);
+ AliESDVertex *vertex1 = (AliESDVertex*)vertexer->FindPrimaryVertex(esd);
+ vertex1->PrintStatus();
+ vertex1->PrintIndices();
+ delete vertex1;
+ vertex1 = 0;
+ //
+ // 2: do vertex with all tracks
+ //
+ skipped[0]=-99;
+ skipped[1]=-99;
+ vertexer->SetSkipTracks(nskip,skipped);
+ AliESDVertex *vertex2 = (AliESDVertex*)vertexer->FindPrimaryVertex(esd);
+ vertex2->PrintStatus();
+ vertex2->PrintIndices();
+ //
+ // 3: now remove those two tracks from vertex2
+ //
+ TTree *trksTree = new TTree("trksTree","tree with tracks to be removed");
+ AliESDtrack *esdTrack = 0;
+ trksTree->Branch("tracks","AliESDtrack",&esdTrack);
+ AliESDtrack *et = esd->GetTrack(1);
+ esdTrack = new AliESDtrack(*et);
+ trksTree->Fill();
+ delete esdTrack;
+ AliESDtrack *et = esd->GetTrack(2);
+ esdTrack = new AliESDtrack(*et);
+ trksTree->Fill();
+ delete esdTrack;
+ AliVertexerTracks vt;
+ AliESDVertex *vertex3 = vt.RemoveTracksFromVertex(vertex2,trksTree,diamondxy);
+ vertex3->PrintStatus();
+ vertex3->PrintIndices();
+ delete vertex2;
+ vertex2 = 0;
+ delete vertex3;
+ vertex3 = 0;
+
+
+ delete esdTree;
+ delete fin;
+ vertexer =0;
+ delete vertexer;
+ delete initVertex;
+
+ return;
+}
+//----------------------------------------------------------------------------