added sample macro for TPC reconstruction
[u/mrichter/AliRoot.git] / HLT / TPCLib / macros / rec-hlt-tpc.C
1 // $Id$
2 /*
3  * Example macro to run the HLT Conformal mapping tracker embedded into
4  * AliRoot reconstruction. The reconstruction is done from the TPC raw
5  * data.
6  *
7  * aliroot -b -q rec-hlt-tpc.C | tee rec-hlt-tpc.log
8  *
9  * The chain to be run is defined by the macro given to the parameter
10  * 'config='
11  *
12  * The makro asumes that raw data is available in the rawx folders, either
13  * simulated or real data.
14  *
15  * In the first section, an analysis chain is defined. The scale of the
16  * chain can be defined by choosing the range of sectors and partitions.
17  *
18  * The reconstruction is steered by the AliReconstruction object in the
19  * usual way.
20  *
21  * Matthias.Richter@ift.uib.no
22  */
23 {
24   ///////////////////////////////////////////////////////////////////////////////////////////////////
25   //
26   // init the HLT system in order to define the analysis chain below
27   //
28   gSystem->Load("libHLTrec.so");
29   AliHLTSystem* gHLT=AliHLTReconstructorBase::GetInstance();
30
31   // choose between ClusterFinderDecoder (true) and ClusterFinderPacked (false)
32   bool bUseClusterFinderDecoder=false;
33
34   ///////////////////////////////////////////////////////////////////////////////////////////////////
35   //
36   // define the analysis chain to be run
37   //
38   int iMinSlice=0;
39   int iMaxSlice=17;
40   int iMinPart=0;
41   int iMaxPart=5;
42   TString writerInput;
43   for (int slice=iMinSlice; slice<=iMaxSlice; slice++) {
44     TString trackerInput;
45     for (int part=iMinPart; part<=iMaxPart; part++) {
46       TString arg, publisher, cf;
47
48       // raw data publisher components
49       int ddlno=768;
50       if (part>1) ddlno+=72+4*slice+(part-2);
51       else ddlno+=2*slice+part;
52       arg.Form("-minid %d -datatype 'DDL_RAW ' 'TPC '  -dataspec 0x%02x%02x%02x%02x", ddlno, slice, slice, part, part);
53       publisher.Form("DP_%02d_%d", slice, part);
54       AliHLTConfiguration pubconf(publisher.Data(), "AliRawReaderPublisher", NULL , arg.Data());
55
56       // cluster finder components
57       cf.Form("CF_%02d_%d", slice, part);
58       if (bUseClusterFinderDecoder) {
59         AliHLTConfiguration cfconf(cf.Data(), "TPCClusterFinderDecoder", publisher.Data(), "pp-run timebins 446 unsorted 1");
60       } else {
61         AliHLTConfiguration cfconf(cf.Data(), "TPCClusterFinderPacked", publisher.Data(), "pp-run timebins 446 rawreadermode 4");
62       }
63       if (trackerInput.Length()>0) trackerInput+=" ";
64       trackerInput+=cf;
65       if (writerInput.Length()>0) writerInput+=" ";
66       writerInput+=cf;
67     }
68     TString tracker;
69     // tracker finder components
70     tracker.Form("TR_%02d", slice);
71     AliHLTConfiguration trackerconf(tracker.Data(), "TPCSliceTracker", trackerInput.Data(), "-pp-run -bfield 0.5");
72     if (writerInput.Length()>0) writerInput+=" ";
73     writerInput+=tracker;
74   }
75
76   // the writer configuration
77   AliHLTConfiguration fwconf("sink1", "FileWriter"   , writerInput.Data(), "-specfmt=_%d -subdir=out_%d -blcknofmt=_0x%x -idfmt=_0x%08x");
78
79   ///////////////////////////////////////////////////////////////////////////////////////////////////
80   //
81   // Init and run the reconstruction
82   // All but HLT reconstructio is switched off
83   //
84   AliReconstruction rec;
85   rec.SetInput("./");
86   rec.SetRunVertexFinder(kFALSE);
87   rec.SetRunLocalReconstruction("HLT");
88   rec.SetRunReconstruction("");
89   rec.SetRunTracking("");
90   rec.SetLoadAlignFromCDB(0);
91   rec.SetFillESD("HLT");
92   rec.SetOption("HLT", "libAliHLTUtil.so libAliHLTRCU.so libAliHLTTPC.so loglevel=0x7c chains=sink1");
93   rec.Run();
94 }