1 /// \file AliTPCFindClusters.C
3 /// \author M.Ivanov marian.ivanov@cern.ch
5 /// macro to create array of clusters from TPC digits
6 /// input files - galice.root
7 /// digits.root - file with digits - usualy use link to galice.root
8 /// - in splitted mode - neccesary to create link to proper file
10 /// output file - AliTPCclusters.root
11 /// - to be used by AliTPCTrackFinderMI.C
13 /// Warning - if cluster file AliTPCclusters.root already exist - macro exit and don't produce anything
20 #include "AliTPCParam.h"
21 #include "AliTPCclusterer.h"
23 #include "TStopwatch.h"
27 Int_t AliTPCFindClustersMI(Int_t n=1) {
29 AliRunLoader* rl = AliRunLoader::Open("galice.root");
31 cerr<<"Can not open session"<<endl;
35 AliTPCLoader *tpcl = (AliTPCLoader*)rl->GetLoader("TPCLoader");
37 cerr<<"Can not get TPC Loader"<<endl;
41 if (tpcl->LoadDigits()) {
42 cerr<<"Error occured while loading digits"<<endl;
46 if (tpcl->LoadRecPoints("recreate")) {
47 cerr<<"Error occured while loading digits"<<endl;
51 if (rl->LoadgAlice()) {
52 cerr<<"Error occured while l"<<endl;
56 gAlice=rl->GetAliRun();
58 cerr<<"Can't get gAlice !\n";
62 TDirectory *cwd = gDirectory;
64 AliTPC *TPC = (AliTPC*)gAlice->GetDetector("TPC");
65 Int_t ver = TPC->IsVersion();
66 cerr<<"TPC version "<<ver<<" has been found !\n";
70 AliTPCParam *dig=(AliTPCParam *)gDirectory->Get("75x40_100x60_150x60");
71 if (!dig) {cerr<<"TPC parameters have not been found !\n"; return 4;}
77 cerr<<"Making clusters...\n";
79 AliTPCv1 &tpc=*((AliTPCv1*)TPC);
80 tpc.SetParam(dig); timer.Start(); cwd->cd();
81 for(Int_t i=0;i<n;i++){
82 printf("Processing event %d\n",i);
84 tpc.Hits2Clusters(out,i);
89 cerr<<"Looking for clusters...\n";
91 // delete gAlice; gAlice=0;
93 tpc.SetParam(dig); timer.Start(); cwd->cd();
95 n = rl->GetNumberOfEvents();
96 for (Int_t i=0;i<n;i++)
99 AliTPCclusterer clusterer(dig);
101 TTree * input = tpcl->TreeD();
104 cerr << "Can not get TreeD for event " << i <<endl;
108 TTree * output = tpcl->TreeR();
112 output = tpcl->TreeR();
115 cerr << "Problems with output tree (TreeR) for event " << i <<endl;
120 printf("Processing event %d\n",i);
121 clusterer.SetInput(input);
122 clusterer.SetOutput(output);
123 clusterer.Digits2Clusters();
125 tpcl->WriteRecPoints("OVERWRITE");
130 cerr<<"Invalid TPC version !\n";
134 timer.Stop(); timer.Print();
136 delete rl;//cleans everything