Renaming AliHLTReconstructorBase to AliHLTPluginBase to reflect the
[u/mrichter/AliRoot.git] / HLT / TPCLib / macros / rec-hlt-tpc-ca.C
1 // $Id$
2 /*
3  * Example macro to run the HLT TPC Cellular Automaton tracker embedded
4  * into AliRoot reconstruction. The reconstruction is done from the TPC
5  * raw data.
6  *
7  * Usage:
8  * <pre>
9  *   aliroot -b -q rec-hlt-tpc-ca.C | tee rec-hlt-tpc-ca.log
10  * </pre>
11  *
12  * The chain to be run is defined by the macro given to the parameter
13  * 'config='
14  *
15  * The macro asumes raw data to be available in the rawx folders, either
16  * simulated or real data. A different input can be specified as parameter
17  * <pre>
18  *   aliroot -b -q rec-hlt-tpc-ca.C'("input.root")'
19  * </pre>
20  *
21  * By the second parameter the digit reader can be chosen, default is
22  * AliHLTTPCDigitReaderPacked (=false). Set to true to use
23  * AliHLTTPCDigitReaderDecoder
24  *
25  * In the first section, an analysis chain is defined. The scale of the
26  * chain can be defined by choosing the range of sectors and partitions.
27  *
28  * The reconstruction is steered by the AliReconstruction object in the
29  * usual way.
30  *
31  * @ingroup alihlt_tpc
32  * @author Matthias.Richter@ift.uib.no
33  */
34 void rec_hlt_tpc_ca(const char* input="./", bool bUseClusterFinderDecoder=true)
35 {
36   if (!input) {
37     cerr << "please specify input or run without arguments" << endl;
38     return;
39   }
40
41   gSystem->Exec("rm galice.root");
42
43   ///////////////////////////////////////////////////////////////////////////////////////////////////
44   //
45   // init the HLT system in order to define the analysis chain below
46   //
47   AliHLTSystem* gHLT=AliHLTPluginBase::GetInstance();
48
49   ///////////////////////////////////////////////////////////////////////////////////////////////////
50   //
51   // define the analysis chain to be run
52   //
53   int iMinSlice=0;
54   int iMaxSlice=35;
55   int iMinPart=0;
56   int iMaxPart=5;
57   TString writerInput;
58   TString mergerInput;
59   for (int slice=iMinSlice; slice<=iMaxSlice; slice++) {
60     TString trackerInput;
61     for (int part=iMinPart; part<=iMaxPart; part++) {
62       TString arg, publisher, cf;
63
64       // raw data publisher components
65       int ddlno=768;
66       if (part>1) ddlno+=72+4*slice+(part-2);
67       else ddlno+=2*slice+part;
68       arg.Form("-minid %d -datatype 'DDL_RAW ' 'TPC '  -dataspec 0x%02x%02x%02x%02x -verbose", ddlno, slice, slice, part, part);
69       publisher.Form("DP_%02d_%d", slice, part);
70       AliHLTConfiguration pubconf(publisher.Data(), "AliRawReaderPublisher", NULL , arg.Data());
71
72       // cluster finder components
73       cf.Form("CF_%02d_%d", slice, part);
74       if (bUseClusterFinderDecoder) {
75         AliHLTConfiguration cfconf(cf.Data(), "TPCClusterFinderDecoder", publisher.Data(), "-timebins 446");
76       } else {
77         AliHLTConfiguration cfconf(cf.Data(), "TPCClusterFinderPacked", publisher.Data(), "-timebins 446 -sorted");
78       }
79       if (trackerInput.Length()>0) trackerInput+=" ";
80       trackerInput+=cf;
81       if (writerInput.Length()>0) writerInput+=" ";
82       writerInput+=cf;
83     }
84     TString tracker;
85     // tracker finder components
86     tracker.Form("TR_%02d", slice);
87     AliHLTConfiguration trackerconf(tracker.Data(), "TPCCATracker", trackerInput.Data(), "-solenoidBz 5");
88     if (writerInput.Length()>0) writerInput+=" ";
89     writerInput+=tracker;
90     if (mergerInput.Length()>0) mergerInput+=" ";
91     mergerInput+=tracker;
92   }
93
94   // GlobalMerger component
95   AliHLTConfiguration mergerconf("globalmerger","TPCGlobalMerger",mergerInput.Data(),"");
96
97   // the esd converter configuration
98   AliHLTConfiguration esdcconf("esd-converter", "TPCEsdConverter"   , "globalmerger", "-tree");
99   
100   // the root file writer configuration
101   AliHLTConfiguration sink("sink1", "EsdCollector"   , "esd-converter", "-directory hlt-tpc-ca");
102
103   ///////////////////////////////////////////////////////////////////////////////////////////////////
104   //
105   // Init and run the reconstruction
106   // All but HLT reconstructio is switched off
107   //
108   AliReconstruction rec;
109   rec.SetInput(input);
110   rec.SetRunVertexFinder(kFALSE);
111   rec.SetRunLocalReconstruction("HLT");
112   rec.SetRunTracking("");
113   rec.SetLoadAlignFromCDB(0);
114   rec.SetRunQA(":");
115   rec.SetFillESD("HLT");
116   rec.SetOption("HLT", "libAliHLTUtil.so libAliHLTRCU.so libAliHLTTPC.so chains=sink1");
117   rec.Run();
118 }