X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TPC%2FAliTPCFindClusters.C;h=92e1e5fc784a638d0426127447b0404129fe1598;hb=e40d37108cf3dcfbfd4b48bfd2f742e8bc7bed77;hp=a5dad6b5389256fd1c1dd43bf33d7ef5fa121c92;hpb=c630aafd1da7fec82908f28924c025969497227d;p=u%2Fmrichter%2FAliRoot.git diff --git a/TPC/AliTPCFindClusters.C b/TPC/AliTPCFindClusters.C index a5dad6b5389..92e1e5fc784 100644 --- a/TPC/AliTPCFindClusters.C +++ b/TPC/AliTPCFindClusters.C @@ -1,119 +1,145 @@ /**************************************************************************** - * Origin: I.Belikov, CERN, Jouri.Belikov@cern.ch * + * Origin: M.Ivanov marian.ivanov@cern.ch * ****************************************************************************/ -#if !defined(__CINT__) || defined(__MAKECINT__) - #include - - #include "AliRun.h" - #include "AliRunLoader.h" - #include "AliTPCLoader.h" - #include "AliTPCv1.h" - #include "AliTPCParam.h" - #include "AliTPCclusterer.h" - - #include "TTree.h" - #include "TStopwatch.h" +/* + + macro to create array of clusters from TPC digits + input files - galice.root + digits.root - file with digits - usualy use link to galice.root + - in splitted mode - neccesary to create link to proper file + + output file - AliTPCclusters.root + - to be used by AliTPCTrackFinderMI.C + + Warning - if cluster file AliTPCclusters.root already exist - macro exit and don't produce anything + + +*/ + + +#ifndef __CINT__ +#include +#include "AliRun.h" +#include "AliTPCv1.h" +#include "AliTPCv2.h" +#include "AliTPCParam.h" +#include "AliTPCclusterer.h" +#include "TFile.h" +#include "TStopwatch.h" +#include "TTree.h" #endif -extern AliRun *gAlice; - -Int_t AliTPCFindClusters(Int_t nev=5) { - - if (gAlice) { - delete gAlice->GetRunLoader(); - delete gAlice;//if everything was OK here it is already NULL - gAlice = 0x0; - } - +Int_t AliTPCFindClustersMI(Int_t n=1) { + AliRunLoader* rl = AliRunLoader::Open("galice.root"); if (rl == 0x0) { cerr<<"Can not open session"<LoadgAlice()) { - cerr<<"Error occured while l"<GetLoader("TPCLoader"); if (tpcl == 0x0) { cerr<<"Can not get TPC Loader"<LoadDigits()) { + cerr<<"Error occured while loading digits"<LoadRecPoints("recreate")) { + cerr<<"Error occured while loading digits"<LoadgAlice()) { + cerr<<"Error occured while l"<GetAliRun(); if (!gAlice) { cerr<<"Can't get gAlice !\n"; return 1; } + TDirectory *cwd = gDirectory; + AliTPC *TPC = (AliTPC*)gAlice->GetDetector("TPC"); Int_t ver = TPC->IsVersion(); cerr<<"TPC version "<CdGAFile(); - AliTPCParam *dig=(AliTPCParam *)gDirectory->Get("75x40_100x60_150x60"); - if (!dig) { - cerr<<"TPC parameters have not been found !\n"; - return 1; - } - - if (nev>rl->GetNumberOfEvents()) nev=rl->GetNumberOfEvents(); - tpcl->LoadRecPoints("recreate"); - if (ver==1) tpcl->LoadHits("read"); - else tpcl->LoadDigits("read"); + AliTPCParam *dig=(AliTPCParam *)gDirectory->Get("75x40_100x60_150x60"); + if (!dig) {cerr<<"TPC parameters have not been found !\n"; return 4;} TStopwatch timer; - if (ver==1) { + switch (ver) { + case 1: cerr<<"Making clusters...\n"; - AliTPCv1 &tpc=*((AliTPCv1*)TPC); - tpc.SetParam(dig); - tpc.SetLoader(tpcl); - rl->LoadKinematics(); - timer.Start(); - for(Int_t i=0;iGetEvent(i); - tpc.Hits2Clusters(i); - } - } else if (ver==2) { - cerr<<"Looking for clusters...\n"; - AliTPCclusterer *dummy=new AliTPCclusterer(dig), &clusterer=*dummy; - timer.Start(); - for (Int_t i=0;icd(); + for(Int_t i=0;iGetEvent(i); - - TTree *out=tpcl->TreeR(); - if (!out) { - tpcl->MakeTree("R"); - out=tpcl->TreeR(); - } - TTree *in=tpcl->TreeD(); - if (!in) { - cerr<<"Can't get digits tree !\n"; - return 4; - } - - clusterer.Digits2Clusters(in,out); - - tpcl->WriteRecPoints("OVERWRITE"); + gAlice->GetEvent(i); + tpc.Hits2Clusters(out,i); + } } - delete dummy; - delete dig; - } else { - cerr<<"Invalid TPC version !\n"; - delete rl; - return 5; + break; + case 2: + cerr<<"Looking for clusters...\n"; + { + // delete gAlice; gAlice=0; + AliTPCv2 tpc; + tpc.SetParam(dig); timer.Start(); cwd->cd(); + + n = rl->GetNumberOfEvents(); + for (Int_t i=0;iGetEvent(i); + AliTPCclusterer clusterer(dig); + + TTree * input = tpcl->TreeD(); + if (input == 0x0) + { + cerr << "Can not get TreeD for event " << i <TreeR(); + if (output == 0x0) + { + tpcl->MakeTree("R"); + output = tpcl->TreeR(); + if (output == 0x0) + { + cerr << "Problems with output tree (TreeR) for event " << i <WriteRecPoints("OVERWRITE"); + } + } + break; + default: + cerr<<"Invalid TPC version !\n"; + return 5; } - + timer.Stop(); timer.Print(); - - delete rl; + + delete rl;//cleans everything return 0; }