1 //********************************************************************
2 // Example of the reconstruction that generates the ESD
4 // a) AliTPCclusters.root containing the TPC clusters
5 // (the AliTPCFindClusters.C macro can be used to generate it)
6 // b) AliITSclustersV2.root containing the ITS clusters
7 // (the AliITSFindClustersV2.C macro can be used to generate it)
9 // AliESDs.root containing the ESD events
11 // Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch
12 //********************************************************************
15 #include <Riostream.h>
17 #include "TStopwatch.h"
20 #include "AliESDpid.h"
21 #include "AliTPCpidESD.h"
22 #include "AliTPCParam.h"
23 #include "AliTPCtracker.h"
24 #include "AliITSgeom.h"
25 #include "AliITStrackerV2.h"
26 #include "AliITSpidESD.h"
29 Int_t AliESDtest(Int_t nev=1) {
30 //File with the TPC clusters
31 TFile *tpccf=TFile::Open("AliTPCclusters.root");
32 if (!tpccf->IsOpen()) {
33 cerr<<"Can't open AliTPCclusters.root !\n";
36 AliTPCParam *par=(AliTPCParam*)tpccf->Get("75x40_100x60_150x60");
37 if (!par) {cerr<<"Can't get TPC parameters !\n"; return 3;}
39 //An instance of the TPC tracker
40 AliTPCtracker tpcTracker(par);
42 //An instance of the TPC PID maker
43 Double_t parTPC[]={47.,0.1,3.};
44 AliTPCpidESD tpcPID(parTPC);
46 //File with the ITS clusters
47 TFile *itscf=TFile::Open("AliITSclustersV2.root");
48 if (!itscf->IsOpen()) {
49 cerr<<"Can't open AliITSclustersV2.root !\n";
52 AliITSgeom *geom=(AliITSgeom*)itscf->Get("AliITSgeom");
53 if (!geom) {cerr<<"Can't get AliITSgeom !\n"; return 5;}
55 //An instance of the ITS tracker
56 AliITStrackerV2 itsTracker(geom);
58 //An instance of the ITS PID maker
59 Double_t parITS[]={34.,0.12,3.};
60 AliITSpidESD itsPID(parITS);
62 TFile *ef=TFile::Open("AliESDs.root","new");
63 if (!ef->IsOpen()) {cerr<<"Can't AliESDs.root !\n"; return 1;}
67 //The loop over events
68 for (Int_t i=0; i<nev; i++) {
69 cerr<<"\n\nProcessing event number : "<<i<<endl;
70 AliESD *event=new AliESD();
72 tpcTracker.SetEventNumber(i);
73 tpcTracker.LoadClusters(tpccf);
75 itsTracker.SetEventNumber(i);
76 itsTracker.LoadClusters(itscf);
78 rc+=tpcTracker.Clusters2Tracks(event);
80 rc+=itsTracker.Clusters2Tracks(event);
82 rc+=itsTracker.PropagateBack(event);
83 itsTracker.UnloadClusters();
84 itsPID.MakePID(event);
86 rc+=tpcTracker.PropagateBack(event);
87 tpcTracker.UnloadClusters();
88 tpcPID.MakePID(event);
90 //Here is the combined PID
91 AliESDpid::MakePID(event);
95 sprintf(ename,"%d",i);
96 if (!event->Write(ename)) rc++;
99 cerr<<"Something bad happened...\n";
103 timer.Stop(); timer.Print();