changed SM range, splitted plotting section
[u/mrichter/AliRoot.git] / HLT / EMCAL / macros / hlt_rec.C
CommitLineData
9d6308d1 1void hlt_rec(const char* input="./") {
2
3 // For real data:
4 // AliCDBManager::Instance()->SetDefaultStorage("raw://");
5
6 gStyle->SetPalette(1);
7
8 if(!gSystem->AccessPathName("galice.root")){
9 cerr << "please delete the galice.root or run at different place." << endl;
10 return;
11 }
12
13 if (!input) {
14 cerr << "please specify input or run without arguments" << endl;
15 return;
16 }
17
18 //////////////////////////////////////////////////////////////////////////////////////////////////
19 //
20 // init the HLT system in order to define the analysis chain below
21 //
22
23 AliHLTSystem* gHLT=AliHLTPluginBase::GetInstance();
24
25 gHLT->LoadComponentLibraries("libAliHLTUtil.so");
26 gHLT->LoadComponentLibraries("libAliHLTRCU.so");
27 gHLT->LoadComponentLibraries("libAliHLTCalo.so");
28 gHLT->LoadComponentLibraries("libAliHLTEMCAL.so");
29 gHLT->LoadComponentLibraries("libAliHLTPHOS.so");
30 gHLT->LoadComponentLibraries("libAliHLTGlobal.so");
31
32 //////////////////////////////////////////////////////////////////////////////////////////////////
33 //
34 // define the analysis chain to be run
35 //
36
37 // Define which modules and RCUs to use
38 int moduleStart = 0;
a40b9693 39 int moduleEnd = 9;
9d6308d1 40 int rcuStart = 0;
41 int rcuEnd = 1;
42
43 // The number of RCUs per module in EMCAL (used for calculating data specification)
44
45 Int_t rcusPerModule = 2;
46 Int_t ddlOffset = 4608; // The DDL offset for EMCAL (for PHOS the number is 1792)
47
48 TString arg, fwInput, ecInput, dm;
49
50 // Loop over the modules/RCUs
51 for (int module = moduleStart; module <= moduleEnd; module++)
52 {
53 TString clInput;
54
55 for(int rcu = rcuStart; rcu <= rcuEnd; rcu++)
56 {
57 TString publisher, rawanalyzer, dm;
58
59 // Raw data publisher
60 publisher.Form("EMC-RP_%02d_%d", module, rcu);
61
62 arg.Form("-verbose -minid %d -datatype 'DDL_RAW ' 'EMCA' -dataspec 0x%x ", ddlOffset + module*(rcusPerModule) + rcu, 0x1 << (module*rcusPerModule + rcu));
63 AliHLTConfiguration pubConf(publisher.Data(), "AliRawReaderPublisher", NULL , arg.Data());
64 cout << arg.Data() << endl;
65
66 // Raw analyzer
67 arg = "";
68 rawanalyzer.Form("EMC-RA_%02d_%d", module, rcu);
69 AliHLTConfiguration rawConf(rawanalyzer.Data(), "EmcalRawCrude", publisher.Data(), arg.Data());
70
71 // If you want to have a component subscribing to all the raw analyzers this will be it's input
72 if(fwInput.Length() > 0) fwInput += " ";
73 fwInput+=rawanalyzer;
74 cout << ">>>>>>>>>> fwInput:" << fwInput << endl;
75
76 // digit maker components
77 dm.Form("EMC-DM_%02d_%d", module, rcu);
78 arg="";
7f6bd7c6 79 // HI-GAIN ~ 15/256 ------ CHECK LOW GAIN FACTOR
a40b9693 80 arg.Form("-highgainfactor 0.0167 -lowgainfactor 0.08");
9d6308d1 81 AliHLTConfiguration dmConf(dm.Data(), "EmcalDigitMaker", rawanalyzer.Data(), arg.Data());
82 if(clInput.Length() > 0) clInput += " ";
83 clInput+=dm;
84 cout << ">>>>>>>>>> clInput:" << clInput << endl;
85
86 } // end of RCU loop
87
88 TString cl, ca;
89
90 cl.Form("EMC-CL_%02d", module);
91 arg = "";
7f6bd7c6 92 // digitthreshold was 0.005
a40b9693 93 arg.Form("-digitthreshold 0.0167 -recpointthreshold 0.1");
9d6308d1 94 AliHLTConfiguration clConf(cl.Data(), "EmcalClusterizer", clInput.Data(), arg.Data());
95 if(ecInput.Length() > 0) ecInput += " ";
96 ecInput += cl;
97
98 } // end of module loop
99
7f6bd7c6 100 TString ec, test;
9d6308d1 101
102 // The call the histo maker
103 arg.Form("");
104 arg.Form("-pushfraction 5 -beverbose 1");
7f6bd7c6 105 test = ecInput + " " + fwInput + " ";
106 AliHLTConfiguration hfConf("emcalHisto","EmcalRawHistoMaker",test.Data(), arg.Data());
9d6308d1 107 ecInput += " emcalHisto";
7f6bd7c6 108 cout << ">>>>>>>>>> test:" << test << endl;
109
9d6308d1 110 ec.Form("ESD-CONVERTER");
111 arg = "";
112 AliHLTConfiguration esdcconf(ec.Data(), "GlobalEsdConverter" , ecInput.Data(), "");
113
114
115 // The filewriter
116// arg.Form("-datatype 'CHANNELT' 'EMCA' -datafile RAout.root -concatenate-blocks -concatenate-events");
117// AliHLTConfiguration fwConf("filewriter", "FileWriter", fwInput.Data(), arg.Data());
118
119 // The call the histo maker
120// arg.Form("");
121// arg.Form("-pushfraction 5 -beverbose 1");
122// AliHLTConfiguration hfConf("emcalHisto","EmcalRawHistoMaker",fwInput.Data(), arg.Data());
123
124 // Write the root file
125 //AliHLTConfiguration rwConf("rootFileHisto","ROOTFileWriter", "emcalHisto ESD-CONVERTER","-datafile roothisto.root -concatenate-events -overwrite");
126
127
128
129
130 //////////////////////////////////////////////////////////////////////
131 //
132 // Init and run the reconstruction
133 // All but HLT reconstruction is switched off
134 //
135 /////////////////////////////////////////////////////////////////////
136
137 TString option="libAliHLTUtil.so libAliHLTRCU.so libAliHLTCalo.so libAliHLTEMCAL.so libAliHLTGlobal.so chains=";
138 option+="ESD-CONVERTER";
139 //option+="rootFileHisto loglevel=0x5f";
140
141 AliReconstruction rec;
a40b9693 142
9d6308d1 143
144 // uncomment for simulation
145 rec.SetDefaultStorage("local://$ALICE_ROOT/OCDB");
146 rec.SetSpecificStorage("GRP/GRP/Data", Form("local://%s",gSystem->pwd()));
147
148 rec.SetRunReconstruction(":");
149 rec.SetEventRange(0,10);
150 rec.SetInput(input);
151
152 //rec.SetInput("raw.root");
153 rec.SetRunVertexFinder(kFALSE);
154
155 rec.SetRunReconstruction("HLT");
156 //rec.SetRunTracking(":");
157 rec.SetLoadAlignFromCDB(0);
158 rec.SetRunQA(":");
159
160 rec.SetOption("HLT", option);
161
162 rec.Run();
163
9d6308d1 164
165}