4#include "FairRootManager.h"
11using namespace std::chrono;
12using namespace std::chrono_literals;
18 gSystem->ExpandPathName(fileName);
19 if (gSystem->AccessPathName(fileName.Data(), kFileExists) ==
true) {
21 cout <<
"ERROR: no specified file: " << fileName << endl;
24 if ((mode != kFileExists) && (gSystem->AccessPathName(fileName.Data(), mode) ==
true)) {
26 cout <<
"ERROR: no required permissions to access the file: " << fileName << endl;
37 gSystem->ExpandPathName(fileName);
38 TString dirName(gSystem->DirName(fileName.Data()));
39 if (gSystem->AccessPathName(dirName.Data(), kFileExists) ==
true) {
41 cout <<
"ERROR: no specified directory: " << dirName << endl;
44 if ((mode != kFileExists) && (gSystem->AccessPathName(dirName.Data(), mode) ==
true)) {
46 cout <<
"ERROR: no required permissions to access the directory: " << dirName << endl;
60 cout <<
"ERROR: the specified file name is empty" << endl;
67 cout <<
"ERROR: the directory of the specified file (\"" << fileName
68 <<
"\") does not provide required permissions" << endl;
72 TString dirName(gSystem->DirName(fileName.Data()));
74 if (status_parent < 0)
76 if (gSystem->MakeDirectory(dirName) != 0) {
78 cout <<
"ERROR: the directory of the specified file (\"" << fileName <<
"\") could not be created"
90 TFile* fRootFile =
nullptr;
92 FairRootManager* ioman = FairRootManager::Instance();
93 if (ioman ==
nullptr) {
94 LOG(error) <<
"isSimulationFile(): FairRootManager is not instantiated";
97 TTree* cur_tree = ioman->GetInTree();
98 if (cur_tree ==
nullptr) {
99 LOG(error) <<
"isSimulationFile(): There is no current tree opened";
103 fRootFile = cur_tree->GetCurrentFile();
105 gSystem->ExpandPathName(fileName);
106 if (gSystem->AccessPathName(fileName.Data()) ==
true) {
107 LOG(error) <<
"isSimulationFile(): no specified file: " << fileName;
111 fRootFile = TFile::Open(fileName.Data());
112 if (!fRootFile || fRootFile->IsZombie()) {
113 LOG(error) <<
"isSimulationFile(): opening the input file failed: " << fileName;
122 TObject* branch_list = fRootFile->Get(
"BranchList");
123 if (branch_list !=
nullptr) {
124 TObject* mctrack_find = branch_list->FindObject(
"MCTrack");
125 if (mctrack_find !=
nullptr) {
126 if (fileName !=
"") {
135 if (fileName !=
"") {
145 FileStat_t file_stat;
146 gSystem->GetPathInfo(path.Data(), file_stat);
147 if (R_ISDIR(file_stat.fMode))
155 Int_t nans = duration_cast<nanoseconds>(p.time_since_epoch()).count() % 1000000000;
156 Long64_t sec = duration_cast<nanoseconds>(p.time_since_epoch()).count() / 1000000000;
157 return TTimeStamp{time_t(sec), nans};
162 Int_t nans = t.GetNanoSec();
163 Int_t sec = t.GetSec();
164 return SysPoint{sec * 1s + nans * 1ns};
174 time_t tt = SysClock::to_time_t(p);
175 auto nans = duration_cast<nanoseconds>(p.time_since_epoch()).count() % 1000000000;
176 std::stringstream sst;
177 sst << std::put_time(std::gmtime(&tt),
"%a, %d %b %Y %T %z (%Z)");
179 sst <<
" +" << std::setw(9) << nans;
186 tm.tm_year = tdatime.GetYear() - 1900;
187 tm.tm_mon = tdatime.GetMonth() - 1;
188 tm.tm_mday = tdatime.GetDay();
189 tm.tm_hour = tdatime.GetHour();
190 tm.tm_min = tdatime.GetMinute();
191 tm.tm_sec = tdatime.GetSecond();
192 time_t t = std::time(
nullptr);
193 std::tm* local = std::localtime(&t);
194 int offset = local->tm_gmtoff;
195 return (SysClock::from_time_t(std::mktime(&tm) + offset) - 1h * timezoneOffsetHours);
static void PrintTimePoint(SysPoint p)
static int CreateDirectoryTree(TString &fileName, int iVerbose=0, EAccessMode mode=kWritePermission)
static SysPoint TDatime2GMT(TDatime &tdatime, Int_t timezoneOffsetHours=0)
static int CheckDirectoryExist(TString &fileName, int iVerbose=0, EAccessMode mode=kFileExists)
static std::string TimePoint2String(SysPoint p)
static int isSimulationFile(TString fileName="")
static SysPoint TimeStamp2TP(TTimeStamp p)
static bool isDirectory(TString path)
static TTimeStamp TimePoint2TS(SysPoint p)
static int CheckFileExist(TString &fileName, int iVerbose=0, EAccessMode mode=kFileExists)
std::chrono::time_point< SysClock > SysPoint