Project
Loading...
Searching...
No Matches
FairRun.cxx
Go to the documentation of this file.
1/********************************************************************************
2 * Copyright (C) 2014 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH *
3 * *
4 * This software is distributed under the terms of the *
5 * GNU Lesser General Public Licence (LGPL) version 3, *
6 * copied verbatim in the file "LICENSE" *
7 ********************************************************************************/
8// Modified for ALICE O2 in 2026: parts not used by O2 were removed (see README.md in this directory).
9// -------------------------------------------------------------------------
10// ----- FairRun source file -----
11// ----- Created 06/01/04 by M. Al-Turany -----
12// -------------------------------------------------------------------------
13
14#include "FairRun.h"
15
16#include "FairEventHeader.h" // for FairEventHeader
17#include "FairFileHeader.h" // for FairFileHeader
18#include "FairLinkManager.h" // for FairLinkManager
19#include "FairLogger.h" // for FairLogger, MESSAGE_ORIGIN
20#include "FairRootFileSink.h" // only temporary, should be removed after the move to FairSink is finished
21#include "FairRootManager.h" // for FairRootManager
22#include "FairTask.h" // for FairTask
23
24#include <TFile.h> // for TFile
25#include <TList.h> // for TList
26#include <TObject.h> // for TObject
27#include <cassert> // for... well, assert
28
29TMCThreadLocal FairRun* FairRun::fRunInstance = 0;
30
32
33FairRun::FairRun(Bool_t isMaster)
34 : TNamed()
35 , fNTasks(0)
36 , fTask(new FairTask("FairTaskList"))
37 , fRootManager(0)
38 , fSink(0)
39 , fUserOutputFileName()
40 , fRunId(0)
41 , fAna(kFALSE)
42 , fEvtHeader(nullptr)
43 , fFileHeader(new FairFileHeader())
44 , fGenerateRunInfo(kFALSE)
45 , fIsMaster(isMaster)
46 , fMarkFill(kTRUE)
47{
48 if (fRunInstance) {
49 Fatal("FairRun", "Singleton instance already exists.");
50 return;
51 }
52 fRunInstance = this;
53
55
56 new FairLinkManager();
57}
58
60{
61 LOG(debug) << "Enter Destructor of FairRun";
62 delete fTask; // There is another tasklist in MCApplication,
63 // but this should be independent
64 delete fEvtHeader;
65 LOG(debug) << "Leave Destructor of FairRun";
66}
67
69{
70 fTask->Add(task);
71 StoreTaskNames(task);
72}
73
75{
76 if (task) {
77 fFileHeader->AddTaskClassName(task->ClassName());
78 fNTasks++;
79
80 const TList* subtasks = task->GetListOfTasks();
81 if (subtasks) {
82 for (const auto subtask : *subtasks) {
83 StoreTaskNames(static_cast<FairTask*>(subtask));
84 }
85 }
86 }
87}
88
90{
91 delete fTask;
92 fTask = task;
93 fNTasks = 0;
94 TList* tasklist = fFileHeader->GetListOfTasks();
95 if (tasklist) {
96 tasklist->Clear();
97 StoreTaskNames(task);
98 }
99}
100
101void FairRun::CreateGeometryFile(const char* geofile) { fRootManager->CreateGeometryFile(geofile); }
102
103FairTask* FairRun::GetTask(const char* taskName)
104{
105 TList* taskList = fTask->GetListOfTasks();
106 TObject* task = taskList->FindObject(taskName);
107 return dynamic_cast<FairTask*>(task);
108}
109
111{
112 if (nullptr == fEvtHeader) {
114 }
115 return fEvtHeader;
116}
117
119
121{
122 LOG(warn) << "Function FairRun::SetWriteRunInfoFile(Bool_t) is depcrecated and will vanish in future versions of "
123 "FairRoot.\n";
124 LOG(warn) << "Please use FairRun::SetGenerateRunInfo(Bool_t) instead.";
125
126 fGenerateRunInfo = write;
127}
128
130{
131 LOG(warn)
132 << "Function FairRun::GetWriteRunInfoFile() is depcrecated and will vanish in future versions of FairRoot.\n";
133 LOG(warn) << "Please use FairRun::IsRunInfoGenerated() instead.";
134
135 return fGenerateRunInfo;
136}
137
138void FairRun::SetOutputFile(const char* fname)
139{
140 LOG(warning) << "FairRun::SetOutputFile() deprecated. Use FairRootFileSink.";
141 fSink = new FairRootFileSink(fname);
142 if (fRootManager)
144 fUserOutputFileName = fname;
145}
146
148{
149 LOG(warning) << "FairRun::SetOutputFile() deprecated. Use FairRootFileSink.";
150 fSink = new FairRootFileSink(f);
151 if (fRootManager)
153 if (f)
154 fUserOutputFileName = f->GetName();
155}
156
158{
159 LOG(warning) << "FairRun::SetOutputFileName() deprecated. Use FairRootFileSink.";
161 if (fRootManager)
164}
165
167{
168 LOG(warning) << "FairRun::GetOutputFile() deprecated. Use separate file to store additional data.";
169 auto sink = GetSink();
170 assert(sink->GetSinkType() == kFILESINK);
171 auto rootFileSink = static_cast<FairRootFileSink*>(sink);
172 return rootFileSink->GetRootFile();
173}
174
176
178
179void FairRun::AlignGeometry() const { fAlignmentHandler.AlignGeometry(); }
180
181void FairRun::AddAlignmentMatrices(const std::map<std::string, TGeoHMatrix>& alignmentMatrices, bool invertMatrices)
182{
183 fAlignmentHandler.AddAlignmentMatrices(alignmentMatrices, invertMatrices);
184}
185
std::ostringstream debug
ClassImp(FairRun)
@ kFILESINK
Definition FairSink.h:35
void AddTaskClassName(TString taskname)
TList * GetListOfTasks()
void SetUseFairLinks(Bool_t val)
void CreateGeometryFile(const char *geofile)
static FairRootManager * Instance()
void SetSink(FairSink *tempSink)
TString fUserOutputFileName
Definition FairRun.h:195
void AddAlignmentMatrices(const std::map< std::string, TGeoHMatrix > &alignmentMatrices, bool invertMatrices=false)
Definition FairRun.cxx:181
void CreateGeometryFile(const char *geofile)
Definition FairRun.cxx:101
virtual void StoreTaskNames(const FairTask *t)
Definition FairRun.cxx:74
void SetWriteRunInfoFile(Bool_t write)
Definition FairRun.cxx:120
TString GetUserOutputFileName() const
Definition FairRun.cxx:177
virtual void SetTask(FairTask *t)
Definition FairRun.cxx:89
static FairRun * Instance()
Definition FairRun.cxx:31
static TMCThreadLocal FairRun * fRunInstance
Definition FairRun.h:186
TFile * GetOutputFile()
Definition FairRun.cxx:166
FairEventHeader * GetEventHeader()
Definition FairRun.cxx:110
FairRootManager * fRootManager
Definition FairRun.h:191
FairSink * GetSink()
Definition FairRun.h:92
Bool_t GetWriteRunInfoFile()
Definition FairRun.cxx:129
FairTask * GetTask(const char *taskName)
Definition FairRun.cxx:103
virtual void SetOutputFile(const char *fname)
Definition FairRun.cxx:138
void SetUseFairLinks(Bool_t val)
Definition FairRun.cxx:118
FairTask * fTask
Definition FairRun.h:189
void SetUserOutputFileName(const TString &name)
Definition FairRun.cxx:175
FairSink * fSink
Definition FairRun.h:193
virtual ~FairRun()
Definition FairRun.cxx:59
FairEventHeader * fEvtHeader
Definition FairRun.h:203
virtual void AddTask(FairTask *t)
Definition FairRun.cxx:68
void SetOutputFileName(const TString &name)
Definition FairRun.cxx:157
FairFileHeader * fFileHeader
Definition FairRun.h:205
Bool_t fGenerateRunInfo
Definition FairRun.h:207
FairAlignmentHandler fAlignmentHandler
Definition FairRun.h:213
void AlignGeometry() const
Definition FairRun.cxx:179
FairRun(Bool_t isMaster=kTRUE)
Definition FairRun.cxx:33
GLuint const GLchar * name
Definition glcorearb.h:781
GLdouble f
Definition glcorearb.h:310
GLuint GLfloat * val
Definition glcorearb.h:1582
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"