CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
TFileService.cc
Go to the documentation of this file.
8 #include "TFile.h"
9 #include "TROOT.h"
10 
11 #include <map>
12 #include <unistd.h>
13 
14 const std::string TFileService::kSharedResource = "TFileService";
16 
18  file_(nullptr),
19  fileName_(cfg.getParameter<std::string>("fileName")),
20  fileNameRecorded_(false),
21  closeFileFast_(cfg.getUntrackedParameter<bool>("closeFileFast", false))
22 {
24  "",
25  TFile::Open(fileName_.c_str(), "RECREATE"),
26  "");
28 
29  // activities to monitor in order to set the proper directory
35 
40 
45 
46  // delay writing into JobReport after BeginJob
48 }
49 
51  file_->Write();
52  if(closeFileFast_) gROOT->GetListOfFiles()->Remove(file_);
53  file_->Close();
54  delete file_;
55 }
56 
60  tFileDirectory_.descr_ = (tFileDirectory_.dir_ + " (" + desc.moduleName() + ") folder").c_str();
61 }
62 
65 }
66 
68  edm::ModuleCallingContext const* previous_mcc = mcc.previousModuleOnThread();
69  if(previous_mcc) {
70  setDirectoryName(*previous_mcc->moduleDescription());
71  }
72 }
73 
74 void
77 }
78 
79 void
81  edm::ModuleCallingContext const* previous_mcc = mcc.previousModuleOnThread();
82  if(previous_mcc) {
83  setDirectoryName(*previous_mcc->moduleDescription());
84  }
85 }
86 
88 
89  if(!fileName_.empty()) {
90  if(!fileNameRecorded_) {
92  fullName.reserve(1024);
93  fullName = getcwd(&fullName[0],1024);
94  fullName += "/" + fileName_;
95 
96  std::map<std::string, std::string> fileData;
97  fileData.insert(std::make_pair("Source","TFileService"));
98 
100  reportSvc->reportAnalysisFile(fullName,fileData);
101  fileNameRecorded_ = true;
102  }
103  }
104 }
void watchPostModuleGlobalEndLumi(PostModuleGlobalEndLumi::slot_type const &iSlot)
static const std::string kSharedResource
Definition: TFileService.h:76
void postModuleGlobal(edm::GlobalContext const &, edm::ModuleCallingContext const &)
Definition: TFileService.cc:80
void watchPreModuleGlobalBeginRun(PreModuleGlobalBeginRun::slot_type const &iSlot)
tuple cfg
Definition: looper.py:293
void watchPreModuleEvent(PreModuleEvent::slot_type const &iSlot)
void watchPreModuleConstruction(PreModuleConstruction::slot_type const &iSlot)
std::string const & moduleName() const
void watchPostModuleEvent(PostModuleEvent::slot_type const &iSlot)
void watchPostModuleGlobalBeginLumi(PostModuleGlobalBeginLumi::slot_type const &iSlot)
TFileService(const edm::ParameterSet &, edm::ActivityRegistry &)
constructor
Definition: TFileService.cc:17
#define nullptr
TFile * file_
pointer to opened TFile
Definition: TFileService.h:81
std::string const & moduleLabel() const
void watchPreModuleGlobalEndRun(PreModuleGlobalEndRun::slot_type const &iSlot)
static thread_local TFileDirectory tFileDirectory_
Definition: TFileService.h:79
std::string fileName_
Definition: TFileService.h:82
void setDirectoryName(const edm::ModuleDescription &desc)
Definition: TFileService.cc:57
ModuleDescription const * moduleDescription() const
void watchPreModuleEndJob(PreModuleEndJob::slot_type const &iSlot)
void watchPreModuleBeginJob(PreModuleBeginJob::slot_type const &iSlot)
void watchPreModuleGlobalBeginLumi(PreModuleGlobalBeginLumi::slot_type const &iSlot)
void postModuleEvent(edm::StreamContext const &, edm::ModuleCallingContext const &)
Definition: TFileService.cc:67
string fullName
void watchPostModuleGlobalEndRun(PostModuleGlobalEndRun::slot_type const &iSlot)
~TFileService()
destructor
Definition: TFileService.cc:50
void preModuleEvent(edm::StreamContext const &, edm::ModuleCallingContext const &)
Definition: TFileService.cc:63
std::string dir_
bool fileNameRecorded_
Definition: TFileService.h:83
ModuleCallingContext const * previousModuleOnThread() const
void reportAnalysisFile(std::string const &fileName, std::map< std::string, std::string > const &fileData)
Definition: JobReport.cc:559
bool closeFileFast_
Definition: TFileService.h:84
void watchPostModuleGlobalBeginRun(PostModuleGlobalBeginRun::slot_type const &iSlot)
void afterBeginJob()
Hook for writing info into JR.
Definition: TFileService.cc:87
volatile std::atomic< bool > shutdown_flag false
void preModuleGlobal(edm::GlobalContext const &, edm::ModuleCallingContext const &)
Definition: TFileService.cc:75
std::string descr_
void watchPreModuleGlobalEndLumi(PreModuleGlobalEndLumi::slot_type const &iSlot)
void watchPostBeginJob(PostBeginJob::slot_type const &iSlot)
convenience function for attaching to signal