Renaming AliHLTReconstructorBase to AliHLTPluginBase to reflect the
[u/mrichter/AliRoot.git] / HLT / TPCLib / macros / sim-hlt-tpc.C
1 // $Id$
2 /*
3  * @file sim-hlt-tpc.C
4  * @brief HLT Conformal mapping tracker embedded into AliRoot simulation.
5  *
6  * Example macro to run the HLT Conformal mapping tracker embedded into
7  * AliRoot simulation. The reconstruction is done from the TPC digits.
8  *
9  * Usage: aliroot -b -q sim-hlt-tpc.C | tee sim-hlt-tpc.log
10  *
11  * The chain to be run is defined by the macro given to the parameter
12  * 'config='
13  *
14  * The macro asumes the data to be already simulated. If it should run
15  * within the initial simulation, comment the corresponding functions
16  * below (SetRunGeneration etc.)
17  *
18  * @author Matthias.Richter@ift.uib.no
19  * @ingroup alihlt_tpc
20  */
21 {
22   // this is just a tool to switch the logging systems
23   AliHLTLogging log;
24   //log.SwitchAliLog(0);
25
26   ///////////////////////////////////////////////////////////////////////////////////////////////////
27   ///////////////////////////////////////////////////////////////////////////////////////////////////
28   ///////////////////////////////////////////////////////////////////////////////////////////////////
29   //
30   // init the HLT system in order to define the analysis chain below
31   //
32   AliHLTSystem* gHLT=AliHLTPluginBase::GetInstance();
33
34   ///////////////////////////////////////////////////////////////////////////////////////////////////
35   ///////////////////////////////////////////////////////////////////////////////////////////////////
36   ///////////////////////////////////////////////////////////////////////////////////////////////////
37   //
38   // define the analysis chain
39   //
40
41   // load TPCParam from OCDB
42   const char* cdbEntry="TPC/Calib/Parameters";
43   AliCDBManager* pMan=AliCDBManager::Instance();
44   AliTPCParam* pTPCParam=NULL;
45   if (pMan) {
46     if (!pMan->IsDefaultStorageSet()) {
47       pMan->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
48       pMan->SetRun(0);
49     }
50     AliCDBEntry *pEntry = pMan->Get(cdbEntry);
51     if (pEntry && 
52         pEntry->GetObject() &&
53         (pTPCParam=dynamic_cast<AliTPCParam*>(pEntry->GetObject()))) {
54     } else {
55       HLTWarning("can not load AliTPCParam from CDB entry %s", cdbEntry);
56     }
57   }
58
59   int iMinSlice=0; 
60   int iMaxSlice=35;
61   int iMinPart=0;
62   int iMaxPart=5;
63   TString mergerInput;
64   TString writerInput;
65   TString sinkClusterInput;
66   for (int slice=iMinSlice; slice<=iMaxSlice; slice++) {
67     TString trackerInput;
68     for (int part=iMinPart; part<=iMaxPart; part++) {
69       TString arg, publisher, cf;
70
71       // digit publisher components
72       arg.Form("-slice %d -partition %d", slice, part);
73       publisher.Form("DP_%02d_%d", slice, part);
74       AliHLTConfiguration pubconf(publisher.Data(), "TPCDigitPublisher", NULL , arg.Data());
75
76       // cluster finder components
77       arg="-timebins ";
78       if (pTPCParam) arg+=pTPCParam->GetMaxTBin()+1;
79       else arg+=446; // old simulated data
80       arg+=" -sorted ";
81       cf.Form("CF_%02d_%d", slice, part);
82       AliHLTConfiguration cfconf(cf.Data(), "TPCClusterFinderUnpacked", publisher.Data(), arg.Data());
83       if (trackerInput.Length()>0) trackerInput+=" ";
84       trackerInput+=cf;
85       if (sinkClusterInput.Length()>0) sinkClusterInput+=" ";
86       sinkClusterInput+=cf;
87     }
88     TString tracker;
89     // tracker finder components
90     tracker.Form("TR_%02d", slice);
91     AliHLTConfiguration trackerconf(tracker.Data(), "TPCSliceTracker", trackerInput.Data(), "-pp-run");
92
93     //add all trackers to writer input. Include if you would like all slice tracks written.
94     //if (writerInput.Length()>0) writerInput+=" ";
95     //writerInput+=tracker;
96
97     // add all clusterfinders to the writer input
98     if (writerInput.Length()>0) writerInput+=" ";
99     writerInput+=trackerInput;
100
101     if (mergerInput.Length()>0) mergerInput+=" ";
102     mergerInput+=tracker;
103
104   }
105
106   // GlobalMerger component
107   AliHLTConfiguration mergerconf("globalmerger","TPCGlobalMerger",mergerInput.Data(),"");
108
109   if (writerInput.Length()>0) writerInput+=" ";
110   writerInput+="globalmerger";
111
112   //////////////////////////////////////////////////////////////////////////////////////////
113   //
114   // output section
115   //
116
117   //////////////////////////////////////////////////////////////////////////////////////////
118   // sink1: id=sink-writeall write all blocks
119   AliHLTConfiguration sink1("sink-writeall", "FileWriter"   , writerInput.Data(), "-specfmt -subdir=event_%d -blcknofmt=_0x%x -idfmt=_0x%08x");
120
121
122   //////////////////////////////////////////////////////////////////////////////////////////
123   // sink2: id=sink-esd-file write ESD using the TPCEsdWriter
124   AliHLTConfiguration sink2("sink-esd-file", "TPCEsdWriter"   , "globalmerger", "-datafile AliHLTESDs.root");
125
126
127   //////////////////////////////////////////////////////////////////////////////////////////
128   // sink3: id=sink-esd add ESD to HLTOUT using the TPCEsdConverter
129
130   // the esd converter configuration
131   //AliHLTConfiguration sink3("sink-esd", "TPCEsdConverter"   , "globalmerger", "");
132   AliHLTConfiguration sink3("sink-esd", "TPCEsdConverter"   , mergerInput.Data(), "");
133
134
135   //////////////////////////////////////////////////////////////////////////////////////////
136   // sink4: id=sink-clusters add cluster data blocks to HLTOUT
137   AliHLTConfiguration sink4("sink-clusters", "BlockFilter"   , sinkClusterInput.Data(), "-datatype 'CLUSTERS' 'TPC '");
138
139   ///////////////////////////////////////////////////////////////////////////////////////////////////
140   ///////////////////////////////////////////////////////////////////////////////////////////////////
141   ///////////////////////////////////////////////////////////////////////////////////////////////////
142   //
143   // Init and run the HLT simulation
144   // All but HLT simulation is switched off
145   //
146   AliSimulation sim;
147  
148   // switch of simulation and data generation
149   // comment all that stuff to also simulate the events and data
150   sim.SetRunGeneration(kFALSE);
151   sim.SetMakeDigits("");
152   sim.SetMakeSDigits("");
153   sim.SetMakeDigitsFromHits("");
154   sim.SetMakeTrigger("");
155   sim.SetRunQA(":");
156   //sim.SetWriteRawData("HLT TPC", "raw.root", kTRUE);
157
158   // set the options for the HLT simulation
159   sim.SetRunHLT("libAliHLTUtil.so libAliHLTTPC.so loglevel=0x7c "
160                 "chains=sink-esd,sink-clusters");
161   sim.Run();
162 }