3 FMD DA for online calibration of conditions
6 Link: fmd.nbi.dk/fmd/offline
9 Number of events needed: 1000
11 Output Files: peds.csv
12 Trigger types used: PEDESTAL
17 #include <AliFMDParameters.h>
18 #include <AliRawReader.h>
19 #include <TStopwatch.h>
20 #include <AliFMDPedestalDA.h>
21 #include <AliRawReaderDate.h>
22 #include <AliRawReaderRoot.h>
25 #include "TPluginManager.h"
32 int main(int argc, char **argv)
34 /* magic line from Rene - for future reference! */
35 gROOT->GetPluginManager()->AddHandler("TVirtualStreamerInfo",
40 gROOT->GetPluginManager()->AddHandler("ROOT::Math::Minimizer", "Minuit",
43 "TMinuitMinimizer(const char *)");
44 gROOT->GetPluginManager()->AddHandler("ROOT::Math::Minimizer",
46 "ROOT::Math::GSLMinimizer",
48 "GSLMinimizer(const char *)");
49 gROOT->GetPluginManager()->AddHandler("ROOT::Math::Minimizer",
51 "ROOT::Math::GSLNLSMinimizer",
52 "MathMore", "GSLNLSMinimizer(int)");
53 gROOT->GetPluginManager()->AddHandler("ROOT::Math::Minimizer",
55 "ROOT::Math::GSLSimAnMinimizer",
57 "GSLSimAnMinimizer(int)");
58 gROOT->GetPluginManager()->AddHandler("ROOT::Math::Minimizer",
62 "TLinearMinimizer(const char *)");
63 gROOT->GetPluginManager()->AddHandler("ROOT::Math::Minimizer",
67 "TFumiliMinimizer(int)");
72 Bool_t diagnostics = kFALSE;
74 std::cerr << "No input file given" << std::endl;
77 TString fileName(argv[1]);
78 if (fileName.Contains("--help")) {
79 std::cout << "Usage: " << argv[0] << " FILENAME [OPTIONS]\n\n"
81 << " --diagnostics=BOOL Make diagnostics ROOT file\n"
86 for (int i = 2; i < argc; i++) {
88 if (arg.Contains("--diagnostics=true")) diagnostics = kTRUE;
89 else if (arg.Contains("--help")) {
90 std::cout << "Usage: " << argv[0] << " FILENAME [OPTIONS]\n\n"
92 << " --diagnostics=BOOL Make diagnostics ROOT file\n"
97 std::cerr << "Unknown option: " << arg << "\n"
98 << "Try '" << argv[0] << " --help" << std::endl;
104 AliLog::EnableDebug(kFALSE);
105 AliFMDParameters::Instance()->Init(kFALSE,0);
106 AliFMDParameters::Instance()->UseCompleteHeader(old);
108 AliRawReader *reader = 0;
109 if (fileName.EndsWith(".root"))
110 reader = new AliRawReaderRoot(fileName.Data());
112 reader = new AliRawReaderDate(fileName.Data());
114 std::cerr << "Don't know how to make reader for " << fileName
120 AliFMDPedestalDA pedDA;
121 pedDA.SetSaveDiagnostics(diagnostics);
123 pedDA.SetMakeSummaries(kTRUE);
130 Int_t retvalConditions =
131 daqDA_FES_storeFile("conditions.csv",
132 AliFMDParameters::Instance()->GetConditionsShuttleID());
134 daqDA_FES_storeFile("peds.csv",
135 AliFMDParameters::Instance()->GetPedestalShuttleID());
137 if(retvalConditions!=0 || retvalPeds!=0)
138 std::cerr << "Pedestal DA failed" << std::endl;
142 amore::da::AmoreDA myAmore(amore::da::AmoreDA::kSender);
145 for (det = 1; det <= 3; det++)
146 if (pedDA.HasSeenDetector(det)) break;
147 if (det >= 1 && det <= 3) {
148 TObject* runNo = new TObject;
149 runNo->SetUniqueID(reader->GetRunNumber());
150 myAmore.Send(Form("pedRunNoFMD%d", det), runNo);
153 TIter next(&pedDA.GetSummaries());
155 while ((obj = next()))
156 myAmore.Send(obj->GetName(), obj);
158 catch (std::exception& e) {
159 std::cerr << "Failed to make AMORE instance: " << e.what() << std::endl;
163 if(retvalPeds != 0) return retvalPeds;
164 return retvalConditions;