30 #include "TBufferFile.h" 44 TString option = GetOption();
52 TString option = GetOption();
54 std::cout<<
"input list size = "<<fInput->GetEntries()<<std::endl;
55 for(
int i = 0; i < fInput->GetEntries(); ++i) {
56 std::cout<<fInput->At(i)->GetName()<<
": ";
57 fInput->At(i)->Print();
64 fPpg =
static_cast<TPPG*
>(fInput->FindObject(
"TPPG"));
66 std::cerr<<
"failed to find TPPG!"<<std::endl;
72 std::cerr<<
"failed to find TRunInfo!"<<std::endl;
76 if(fInput->FindObject(
"ParserLibrary") !=
nullptr) {
77 std::string library(fInput->FindObject(
"ParserLibrary")->GetTitle());
79 if(!library.empty()) {
83 std::cout<<
"no parser library!"<<std::endl;
88 const char* workingDirectory =
"";
89 if(fInput->FindObject(
"pwd") !=
nullptr) {
90 workingDirectory = fInput->FindObject(
"pwd")->GetTitle();
93 while(fInput->FindObject(Form(
"calFile%d", i)) !=
nullptr) {
94 const char* fileName =
static_cast<TNamed*
>(fInput->FindObject(Form(
"calFile%d", i)))->GetTitle();
95 if(fileName[0] == 0) {
96 std::cout<<
"Error, empty file name!"<<std::endl;
100 if(workingDirectory[0] != 0 && fileName[0] !=
'/') {
108 while(fInput->FindObject(Form(
"valFile%d", i)) !=
nullptr) {
109 const char* fileName =
static_cast<TNamed*
>(fInput->FindObject(Form(
"valFile%d", i)))->GetTitle();
110 if(fileName[0] == 0) {
111 std::cout<<
"Error, empty file name!"<<std::endl;
115 if(workingDirectory[0] != 0 && fileName[0] !=
'/') {
123 while(fInput->FindObject(Form(
"cutFile%d", i)) !=
nullptr) {
124 std::cout<<
"trying to open "<<Form(
"cutFile%d", i)<<std::flush<<
" = "<<fInput->FindObject(Form(
"cutFile%d", i))<<std::flush<<
" with title "<<
static_cast<TNamed*
>(fInput->FindObject(Form(
"cutFile%d", i)))->GetTitle()<<std::endl;
125 const char* fileName =
static_cast<TNamed*
>(fInput->FindObject(Form(
"cutFile%d", i)))->GetTitle();
126 if(fileName[0] == 0) {
127 std::cout<<
"Error, empty file name!"<<std::endl;
131 TFile* file =
nullptr;
132 if(workingDirectory[0] != 0 && fileName[0] !=
'/') {
133 file =
new TFile(Form(
"%s/%s", workingDirectory, fileName));
135 file =
new TFile(fileName);
137 if(file !=
nullptr && file->IsOpen()) {
138 TIter iter(file->GetListOfKeys());
140 while((key = static_cast<TKey*>(iter.Next())) !=
nullptr) {
141 if(strcmp(key->GetClassName(),
"TCutG") != 0) {
144 TCutG* tmpCut =
static_cast<TCutG*
>(key->ReadObj());
145 if(tmpCut !=
nullptr) {
146 fCuts[tmpCut->GetName()] = tmpCut;
150 std::cout<<
"Error, failed to open file "<<fileName<<
"!"<<std::endl;
155 for(
auto cut :
fCuts) {
156 std::cout<<cut.first<<
" = "<<cut.second<<std::endl;
160 std::cout<<
"No g-values!"<<std::endl;
189 static TFile* current_file =
nullptr;
190 if(current_file !=
fChain->GetCurrentFile()) {
191 current_file =
fChain->GetCurrentFile();
192 std::cout<<
"Starting to sort: "<<current_file->GetName()<<std::endl;
202 std::cout<<
DRED<<
"Exception in "<<__PRETTY_FUNCTION__<<
": "<<e.detail()<<
RESET_COLOR<<std::endl;
232 std::cout<<
"replaced null run info with:"<<std::endl;
239 std::string outputFileName;
240 if(runNumber != 0 && subRunNumber != -1) {
242 outputFileName = Form(
"%s%05d_%03d.root",
fOutputPrefix.c_str(), runNumber, subRunNumber);
243 }
else if(runNumber != 0) {
250 outputFile =
new TFile(outputFileName.c_str(),
"recreate");
251 if(!outputFile->IsOpen()) {
252 std::cerr<<
"Failed to open output file "<<outputFileName<<
"!"<<std::endl<<std::endl;
255 outputFileName = outputFileName.substr(0, outputFileName.find_last_of(
'.'))+
".log";
256 options->
LogFile(outputFileName.c_str());
257 std::cout<<
"Opened '"<<outputFile->GetName()<<
"' for writing:"<<std::endl;
262 if(
fPpg !=
nullptr) {
265 std::cerr<<
"failed to find TPPG, can't write it!"<<std::endl;
270 std::cout<<
"Closed '"<<outputFile->GetName()<<
"'"<<std::endl;
283 if(tree ==
nullptr) {
304 for(
const auto&& obj : *fOutput) {
305 TBufferFile b(TBuffer::kWrite, 10000);
306 obj->IsA()->WriteBuffer(b, obj);
308 std::cout<<
DRED<<obj->ClassName()<<
" '"<<obj->GetName()<<
"' too large to "<<usage<<
": "<<b.Length()<<
" bytes = "<<b.Length()/1024./1024./1024.<<
" GB, removing it!"<<
RESET_COLOR<<std::endl;
311 fOutput->Remove(obj);
static int ReadValFile(const char *filename="", Option_t *opt="replace")
void CheckSizes(const char *usage)
Function to check size of objects in output list.
TAnalysisOptions * fAnalysisOptions
! pointer to analysis options
Int_t Write(const char *name=nullptr, Int_t option=0, Int_t bufsize=0) override
void SlaveTerminate() override
static Int_t ReadCalFromFile(TFile *tempf, Option_t *opt="overwrite")
void Init(TTree *tree) override
virtual void CreateHistograms()=0
static TGRSIOptions * Get(int argc=0, char **argv=nullptr)
Do not use!
static TParserLibrary * Get(bool verbose=false)
Bool_t Process(Long64_t entry) override
static std::unordered_map< unsigned int, TChannel * > * GetChannelMap()
static int WriteToRoot(TFile *fileptr=nullptr)
static int LastRunNumber()
static int FirstSubRunNumber()
void Print(Option_t *opt="") const override
ClassImp(TGRSIMnemonic) void TGRSIMnemonic
static TAnalysisOptions * AnalysisOptions()
virtual void InitializeBranches(TTree *tree)=0
TRunInfo * fRunInfo
! pointer to the run info
void Print(Option_t *opt="") const override
static int SubRunNumber()
void ParserLibrary(std::string &library)
void SlaveBegin(TTree *tree) override
static int FirstRunNumber()
static Int_t ReadCalFile(const char *filename="")
void Terminate() override
virtual void FillHistograms()=0
void ReadFromFile(const std::string &file)
static int LastSubRunNumber()
bool WriteToFile(const std::string &file)
std::string fOutputPrefix
! pre-fix for output files
int64_t fEntry
! entry number currently being processed
TPPG * fPpg
! pointer to the PPG
void Load()
if necessary loads shared object library and sets/initializes all other functions ...
std::map< std::string, TCutG * > fCuts
! map of cuts