ROOT logo
#if !defined(__CINT__) || defined(__MAKECINT__)
  #include <Riostream.h>
  #include "AliCascadeVertexer.h"
  #include "TFile.h"
  #include "TKey.h"
  #include "TStopwatch.h"

  #include "AliRun.h"
  #include "AliESD.h"
  #include "AliTracker.h"
  #include "AliRunLoader.h"
#endif

Int_t AliCascadeFindVertices(Int_t nev=5) {
   cerr<<"Looking for cascade vertices...\n";

   if (gAlice) {
      delete AliRunLoader::Instance();
      delete gAlice;
      gAlice=0;
   }
   AliRunLoader* rl = AliRunLoader::Open("galice.root");
   if (rl == 0x0) {
      cerr<<"AliCascadeFindVertices.C : Can not open session RL=NULL"<< endl;
      return 1;
   }

   if (rl->LoadgAlice()) {
      cerr<<"AliV0FindVertices.C : LoadgAlice returned error"<<endl;
      delete rl;
      return 3;
   }

   // Magnetic field
   AliTracker::SetFieldMap(gAlice->Field(),1); // 1 means uniform magnetic field
   Double_t cuts[]={33.,    // max. allowed chi2
                    0.05,   // min. allowed V0 impact parameter 
                    0.008,  // window around the Lambda mass 
                    0.035,  // min. allowed bachelor's impact parameter 
                    0.10,   // max. allowed DCA between a V0 and a track
                    0.9985,// max. allowed cosine of the cascade pointing angle
                    0.9,    // min. radius of the fiducial volume
                    2.9     // max. radius of the fiducial volume
                   };
   TStopwatch timer;
   AliCascadeVertexer *vertexer=new AliCascadeVertexer(cuts);

   Int_t rc=0;
   if (nev>rl->GetNumberOfEvents()) nev=rl->GetNumberOfEvents();

   TFile *casf=TFile::Open("AliESDcas.root","RECREATE");
   if ((!casf)||(!casf->IsOpen())) {
      cerr<<"Can't AliESDcas.root !\n"; return 1;
   }
   TFile *v0f=TFile::Open("AliESDv0.root");
   if ((!v0f)||(!v0f->IsOpen())) {
      cerr<<"Can't AliESDv0.root !\n"; return 1;
   }

   TKey *key=0;
   TIter next(v0f->GetListOfKeys());
   for (Int_t i=0; i<nev; i++) {
     v0f->cd();
     if ((key=(TKey*)next())==0) break;
     cerr<<"Processing event number: "<<i<<endl;
     AliESD *event=(AliESD*)key->ReadObj();

     rc=vertexer->V0sTracks2CascadeVertices(event);

     if (rc==0) {
        Char_t ename[100]; 
        sprintf(ename,"%d",i);
        casf->cd();
        if (!event->Write(ename)) rc++;
     } 
     if (rc) {
        cerr<<"Something bad happened...\n";
     }
     delete event;
   }
   delete vertexer;
   timer.Stop(); timer.Print();
    
   v0f->Close();
   casf->Close();

   delete rl;

   return rc;
}
 AliCascadeFindVertices.C:1
 AliCascadeFindVertices.C:2
 AliCascadeFindVertices.C:3
 AliCascadeFindVertices.C:4
 AliCascadeFindVertices.C:5
 AliCascadeFindVertices.C:6
 AliCascadeFindVertices.C:7
 AliCascadeFindVertices.C:8
 AliCascadeFindVertices.C:9
 AliCascadeFindVertices.C:10
 AliCascadeFindVertices.C:11
 AliCascadeFindVertices.C:12
 AliCascadeFindVertices.C:13
 AliCascadeFindVertices.C:14
 AliCascadeFindVertices.C:15
 AliCascadeFindVertices.C:16
 AliCascadeFindVertices.C:17
 AliCascadeFindVertices.C:18
 AliCascadeFindVertices.C:19
 AliCascadeFindVertices.C:20
 AliCascadeFindVertices.C:21
 AliCascadeFindVertices.C:22
 AliCascadeFindVertices.C:23
 AliCascadeFindVertices.C:24
 AliCascadeFindVertices.C:25
 AliCascadeFindVertices.C:26
 AliCascadeFindVertices.C:27
 AliCascadeFindVertices.C:28
 AliCascadeFindVertices.C:29
 AliCascadeFindVertices.C:30
 AliCascadeFindVertices.C:31
 AliCascadeFindVertices.C:32
 AliCascadeFindVertices.C:33
 AliCascadeFindVertices.C:34
 AliCascadeFindVertices.C:35
 AliCascadeFindVertices.C:36
 AliCascadeFindVertices.C:37
 AliCascadeFindVertices.C:38
 AliCascadeFindVertices.C:39
 AliCascadeFindVertices.C:40
 AliCascadeFindVertices.C:41
 AliCascadeFindVertices.C:42
 AliCascadeFindVertices.C:43
 AliCascadeFindVertices.C:44
 AliCascadeFindVertices.C:45
 AliCascadeFindVertices.C:46
 AliCascadeFindVertices.C:47
 AliCascadeFindVertices.C:48
 AliCascadeFindVertices.C:49
 AliCascadeFindVertices.C:50
 AliCascadeFindVertices.C:51
 AliCascadeFindVertices.C:52
 AliCascadeFindVertices.C:53
 AliCascadeFindVertices.C:54
 AliCascadeFindVertices.C:55
 AliCascadeFindVertices.C:56
 AliCascadeFindVertices.C:57
 AliCascadeFindVertices.C:58
 AliCascadeFindVertices.C:59
 AliCascadeFindVertices.C:60
 AliCascadeFindVertices.C:61
 AliCascadeFindVertices.C:62
 AliCascadeFindVertices.C:63
 AliCascadeFindVertices.C:64
 AliCascadeFindVertices.C:65
 AliCascadeFindVertices.C:66
 AliCascadeFindVertices.C:67
 AliCascadeFindVertices.C:68
 AliCascadeFindVertices.C:69
 AliCascadeFindVertices.C:70
 AliCascadeFindVertices.C:71
 AliCascadeFindVertices.C:72
 AliCascadeFindVertices.C:73
 AliCascadeFindVertices.C:74
 AliCascadeFindVertices.C:75
 AliCascadeFindVertices.C:76
 AliCascadeFindVertices.C:77
 AliCascadeFindVertices.C:78
 AliCascadeFindVertices.C:79
 AliCascadeFindVertices.C:80
 AliCascadeFindVertices.C:81
 AliCascadeFindVertices.C:82
 AliCascadeFindVertices.C:83
 AliCascadeFindVertices.C:84
 AliCascadeFindVertices.C:85
 AliCascadeFindVertices.C:86
 AliCascadeFindVertices.C:87
 AliCascadeFindVertices.C:88
 AliCascadeFindVertices.C:89
 AliCascadeFindVertices.C:90
 AliCascadeFindVertices.C:91