ROOT logo
#if !defined(__CINT__) || defined(__MAKECINT__)

#include <Riostream.h>
#include<TClassTable.h>
#include <TError.h>
#include <TInterpreter.h>
#include <TStopwatch.h>
#include <TString.h>
#include "AliRun.h"
#include "AliRunLoader.h"
#include "AliITS.h"
#include "AliITSInitGeometry.h"
#include "AliITSgeom.h"
#include "AliITSLoader.h"
#include "AliITSsimulationFastPoints.h"
#include "AliGeomManager.h"
#endif

/*
$Id$ 
*/


void AliITSHits2FastRecPoints (Int_t evNumber1=0,Int_t evNumber2=0, TString inFile = "galice.root", Int_t nsignal=25, Int_t size=-1) 
{
  /////////////////////////////////////////////////////////////////////////
  //   
  //   This macro creates fast recpoints
  //   
  /////////////////////////////////////////////////////////////////////////


  // Dynamically link some shared libs

  if (gClassTable->GetID("AliRun") < 0) {
    gInterpreter->ExecuteMacro("loadlibs.C");
  }
  else { 
    if(gAlice){
      delete AliRunLoader::Instance();
      delete gAlice;
      gAlice=0;
    }
  }


  // Get geometry
  AliGeomManager::LoadGeometry("geometry.root");

  // Connect the Root Galice file containing Geometry, Kine and Hits
  AliRunLoader* rl = AliRunLoader::Open(inFile.Data());
  if (rl == 0x0)
    {
      Error("AliITSHits2FastRecPoints.C","Can not open session RL=NULL");
      return;
    }
     
  Int_t retval = rl->LoadgAlice();
  if (retval)
    {
      Error("AliITSHits2FastRecPoints.C","LoadgAlice returned error");
      delete rl;
      return;
    }
  gAlice=rl->GetAliRun();
  rl->LoadHeader();
  retval = rl->LoadKinematics();
  if (retval)
    {
      Error("AliITSHits2FastRecPoints.C","LoadKinematics returned error");
      delete rl;
      return;
    }

  AliITSInitGeometry initgeom;
  AliITSgeom *geom = initgeom.CreateAliITSgeom();
  printf("Geometry name: %s \n",(initgeom.GetGeometryName()).Data());
    
  AliITSLoader* gime = (AliITSLoader*)rl->GetLoader("ITSLoader");
  if (gime == 0x0)
    {
      ::Error("AliITSHits2FastRecPoints.C","can not get ITS loader");
      delete rl;
      return;
    }
  gime->SetITSgeom(geom);
  retval = gime->LoadHits("read");
  if (retval)
    {
      ::Error("AliITSHits2FastRecPoints.C","LoadHits returned error");
      delete rl;
      return;
    }
  gime->SetRecPointsFileName("ITS.FastRecPoints.root"); 
  retval = gime->LoadRecPoints("update");
  if (retval)
    {
      ::Error("AliITSHits2FastRecPoints.C","LoadRecPoints returned error");
      delete rl;
      return;
    }
    
   

 
  AliITS *ITS  = (AliITS*) gAlice->GetModule("ITS");
  if (!ITS) return;

  // Set the simulation model

   

  //
  // Event Loop
  //

  TStopwatch timer;

  cout << "Creating fast reconstructed points from hits for the ITS..." << endl;
  AliITSDetTypeSim* dettyp = new AliITSDetTypeSim();
  dettyp->SetLoader(gime);
  dettyp->SetITSgeom(geom);
  ITS->SetDetTypeSim(dettyp);
  for (Int_t i=0;i<3;i++) {
    ITS->SetSimulationModel(i,new AliITSsimulationFastPoints());
  }

  
  for (int ev=evNumber1; ev<= evNumber2; ev++) {
    cout << "...working on event "<< ev << " ..." << endl;
    Int_t nparticles = gAlice->GetEvent(ev);
    cout << "event         " <<ev<<endl;
    cout << "nparticles  " <<nparticles<<endl;
    rl->GetEvent(ev);
    //if(gime->TreeR() == 0x0) gime->MakeTree("R");
    
    if (ev < evNumber1) continue;
    if (nparticles <= 0) return;

    Int_t bgr_ev=Int_t(ev/nsignal);
    timer.Start();
    ITS->HitsToFastRecPoints(ev,bgr_ev,size," ","All"," ");
    timer.Stop(); timer.Print();
  } // event loop 

  delete rl;
}

 AliITSHits2FastRecPoints.C:1
 AliITSHits2FastRecPoints.C:2
 AliITSHits2FastRecPoints.C:3
 AliITSHits2FastRecPoints.C:4
 AliITSHits2FastRecPoints.C:5
 AliITSHits2FastRecPoints.C:6
 AliITSHits2FastRecPoints.C:7
 AliITSHits2FastRecPoints.C:8
 AliITSHits2FastRecPoints.C:9
 AliITSHits2FastRecPoints.C:10
 AliITSHits2FastRecPoints.C:11
 AliITSHits2FastRecPoints.C:12
 AliITSHits2FastRecPoints.C:13
 AliITSHits2FastRecPoints.C:14
 AliITSHits2FastRecPoints.C:15
 AliITSHits2FastRecPoints.C:16
 AliITSHits2FastRecPoints.C:17
 AliITSHits2FastRecPoints.C:18
 AliITSHits2FastRecPoints.C:19
 AliITSHits2FastRecPoints.C:20
 AliITSHits2FastRecPoints.C:21
 AliITSHits2FastRecPoints.C:22
 AliITSHits2FastRecPoints.C:23
 AliITSHits2FastRecPoints.C:24
 AliITSHits2FastRecPoints.C:25
 AliITSHits2FastRecPoints.C:26
 AliITSHits2FastRecPoints.C:27
 AliITSHits2FastRecPoints.C:28
 AliITSHits2FastRecPoints.C:29
 AliITSHits2FastRecPoints.C:30
 AliITSHits2FastRecPoints.C:31
 AliITSHits2FastRecPoints.C:32
 AliITSHits2FastRecPoints.C:33
 AliITSHits2FastRecPoints.C:34
 AliITSHits2FastRecPoints.C:35
 AliITSHits2FastRecPoints.C:36
 AliITSHits2FastRecPoints.C:37
 AliITSHits2FastRecPoints.C:38
 AliITSHits2FastRecPoints.C:39
 AliITSHits2FastRecPoints.C:40
 AliITSHits2FastRecPoints.C:41
 AliITSHits2FastRecPoints.C:42
 AliITSHits2FastRecPoints.C:43
 AliITSHits2FastRecPoints.C:44
 AliITSHits2FastRecPoints.C:45
 AliITSHits2FastRecPoints.C:46
 AliITSHits2FastRecPoints.C:47
 AliITSHits2FastRecPoints.C:48
 AliITSHits2FastRecPoints.C:49
 AliITSHits2FastRecPoints.C:50
 AliITSHits2FastRecPoints.C:51
 AliITSHits2FastRecPoints.C:52
 AliITSHits2FastRecPoints.C:53
 AliITSHits2FastRecPoints.C:54
 AliITSHits2FastRecPoints.C:55
 AliITSHits2FastRecPoints.C:56
 AliITSHits2FastRecPoints.C:57
 AliITSHits2FastRecPoints.C:58
 AliITSHits2FastRecPoints.C:59
 AliITSHits2FastRecPoints.C:60
 AliITSHits2FastRecPoints.C:61
 AliITSHits2FastRecPoints.C:62
 AliITSHits2FastRecPoints.C:63
 AliITSHits2FastRecPoints.C:64
 AliITSHits2FastRecPoints.C:65
 AliITSHits2FastRecPoints.C:66
 AliITSHits2FastRecPoints.C:67
 AliITSHits2FastRecPoints.C:68
 AliITSHits2FastRecPoints.C:69
 AliITSHits2FastRecPoints.C:70
 AliITSHits2FastRecPoints.C:71
 AliITSHits2FastRecPoints.C:72
 AliITSHits2FastRecPoints.C:73
 AliITSHits2FastRecPoints.C:74
 AliITSHits2FastRecPoints.C:75
 AliITSHits2FastRecPoints.C:76
 AliITSHits2FastRecPoints.C:77
 AliITSHits2FastRecPoints.C:78
 AliITSHits2FastRecPoints.C:79
 AliITSHits2FastRecPoints.C:80
 AliITSHits2FastRecPoints.C:81
 AliITSHits2FastRecPoints.C:82
 AliITSHits2FastRecPoints.C:83
 AliITSHits2FastRecPoints.C:84
 AliITSHits2FastRecPoints.C:85
 AliITSHits2FastRecPoints.C:86
 AliITSHits2FastRecPoints.C:87
 AliITSHits2FastRecPoints.C:88
 AliITSHits2FastRecPoints.C:89
 AliITSHits2FastRecPoints.C:90
 AliITSHits2FastRecPoints.C:91
 AliITSHits2FastRecPoints.C:92
 AliITSHits2FastRecPoints.C:93
 AliITSHits2FastRecPoints.C:94
 AliITSHits2FastRecPoints.C:95
 AliITSHits2FastRecPoints.C:96
 AliITSHits2FastRecPoints.C:97
 AliITSHits2FastRecPoints.C:98
 AliITSHits2FastRecPoints.C:99
 AliITSHits2FastRecPoints.C:100
 AliITSHits2FastRecPoints.C:101
 AliITSHits2FastRecPoints.C:102
 AliITSHits2FastRecPoints.C:103
 AliITSHits2FastRecPoints.C:104
 AliITSHits2FastRecPoints.C:105
 AliITSHits2FastRecPoints.C:106
 AliITSHits2FastRecPoints.C:107
 AliITSHits2FastRecPoints.C:108
 AliITSHits2FastRecPoints.C:109
 AliITSHits2FastRecPoints.C:110
 AliITSHits2FastRecPoints.C:111
 AliITSHits2FastRecPoints.C:112
 AliITSHits2FastRecPoints.C:113
 AliITSHits2FastRecPoints.C:114
 AliITSHits2FastRecPoints.C:115
 AliITSHits2FastRecPoints.C:116
 AliITSHits2FastRecPoints.C:117
 AliITSHits2FastRecPoints.C:118
 AliITSHits2FastRecPoints.C:119
 AliITSHits2FastRecPoints.C:120
 AliITSHits2FastRecPoints.C:121
 AliITSHits2FastRecPoints.C:122
 AliITSHits2FastRecPoints.C:123
 AliITSHits2FastRecPoints.C:124
 AliITSHits2FastRecPoints.C:125
 AliITSHits2FastRecPoints.C:126
 AliITSHits2FastRecPoints.C:127
 AliITSHits2FastRecPoints.C:128
 AliITSHits2FastRecPoints.C:129
 AliITSHits2FastRecPoints.C:130
 AliITSHits2FastRecPoints.C:131
 AliITSHits2FastRecPoints.C:132
 AliITSHits2FastRecPoints.C:133
 AliITSHits2FastRecPoints.C:134
 AliITSHits2FastRecPoints.C:135
 AliITSHits2FastRecPoints.C:136
 AliITSHits2FastRecPoints.C:137
 AliITSHits2FastRecPoints.C:138
 AliITSHits2FastRecPoints.C:139
 AliITSHits2FastRecPoints.C:140
 AliITSHits2FastRecPoints.C:141
 AliITSHits2FastRecPoints.C:142
 AliITSHits2FastRecPoints.C:143
 AliITSHits2FastRecPoints.C:144
 AliITSHits2FastRecPoints.C:145
 AliITSHits2FastRecPoints.C:146
 AliITSHits2FastRecPoints.C:147
 AliITSHits2FastRecPoints.C:148
 AliITSHits2FastRecPoints.C:149