-TFile* AccessFile(TString inFile="galice.root", TString acctype="R");
-
-void AliITSHits2FastRecPoints (Int_t evNumber1=0,Int_t evNumber2=0, TString inFile = "galice.root", TString outFile="galice.root", Int_t nsignal=25, Int_t size=-1)
+#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, optionally on a separate file
+ // This macro creates fast recpoints
//
/////////////////////////////////////////////////////////////////////////
+
// Dynamically link some shared libs
if (gClassTable->GetID("AliRun") < 0) {
- gROOT->LoadMacro("loadlibs.C");
- loadlibs();
- } else {
- delete gAlice;
- gAlice=0;
- }
-
- // Connect the Root Galice file containing Geometry, Kine and Hits
- TFile *file;
- if(outFile.Data() == inFile.Data()){
- file = AccessFile(inFile,"U");
+ gInterpreter->ExecuteMacro("loadlibs.C");
}
- else {
- file = AccessFile(inFile);
+ else {
+ if(gAlice){
+ delete AliRunLoader::Instance();
+ delete gAlice;
+ gAlice=0;
+ }
}
- TFile *file2 = 0; // possible output file for TreeR
- if(!(outFile.Data() == inFile.Data())){
- // open output file and create TreeR on it
- file2 = gAlice->InitTreeFile("R",outFile);
- }
+ // 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
- for (Int_t i=0;i<3;i++) {
- ITS->SetSimulationModel(i,new AliITSsimulationFastPoints());
- }
//
// Event Loop
//
- Int_t nbgr_ev=0;
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;
- gAlice->SetEvent(ev);
- if(!gAlice->TreeR() && file2 == 0) gAlice-> MakeTree("R");
- if(!gAlice->TreeR() && file2 != 0) gAlice->MakeTree("R",file2);
- ITS->MakeBranch("RF");
+ 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);
- //printf("bgr_ev %d\n",bgr_ev);
timer.Start();
ITS->HitsToFastRecPoints(ev,bgr_ev,size," ","All"," ");
timer.Stop(); timer.Print();
} // event loop
- delete gAlice; gAlice=0;
- file->Close();
+ delete rl;
}
-
-//-------------------------------------------------------------------
-TFile * AccessFile(TString FileName, TString acctype){
-
- // Function used to open the input file and fetch the AliRun object
-
- TFile *retfil = 0;
- TFile *file = (TFile*)gROOT->GetListOfFiles()->FindObject(FileName);
- if (file) {file->Close(); delete file; file = 0;}
- if(acctype.Contains("U")){
- file = new TFile(FileName,"update");
- }
- if(acctype.Contains("N") && !file){
- file = new TFile(FileName,"recreate");
- }
- if(!file) file = new TFile(FileName); // default readonly
- if (!file->IsOpen()) {
- cerr<<"Can't open "<<FileName<<" !" << endl;
- return retfil;
- }
-
- // Get AliRun object from file or return if not on file
- if (gAlice) {delete gAlice; gAlice = 0;}
- gAlice = (AliRun*)file->Get("gAlice");
- if (!gAlice) {
- cerr << "AliRun object not found on file"<< endl;
- return retfil;
- }
- return file;
-}