10#ifndef BMNFILESOURCE_H
11#define BMNFILESOURCE_H
13#include "FairEventHeader.h"
14#include "FairFileHeader.h"
15#include "FairFileSourceBase.h"
16#include "FairMCEventHeader.h"
32 BmnFileSource(TFile*
f,
const char* Title =
"InputRootFile", UInt_t identifier = 0);
33 BmnFileSource(
const TString* RootFileName,
const char* Title =
"InputRootFile", UInt_t identifier = 0);
34 BmnFileSource(
const TString RootFileName,
const char* Title =
"InputRootFile", UInt_t identifier = 0);
35 BmnFileSource(
const TString RootFileName,
int& period_number,
int& run_number);
39 Bool_t
Init()
override;
41 void Close()
override;
80 void SetBeamTime(Double_t beamTime, Double_t gapTime);
118 std::list<TString> fFriendFileList;
119 std::list<TString> fInputChainList;
120 std::map<TString, TChain*> fFriendTypeList;
121 std::list<TString> fInputLevel;
122 std::map<TString, std::multimap<TString, TArrayI>> fRunIdInfoAll;
128 TObjArray fListFolderBmn{16};
134 UInt_t fSourceIdentifier;
138 Bool_t IsInitialized;
144 FairMCEventHeader* fMCHeader;
147 FairEventHeader* fEvtHeader;
150 FairFileHeader* fFileHeader;
153 Bool_t fEventTimeInMCHeader;
158 Bool_t fEvtHeaderIsNew;
161 UInt_t fCurrentEntryNo;
163 UInt_t fTimeforEntryNo;
166 Double_t fEventTimeMin;
168 Double_t fEventTimeMax;
176 Double_t fEventMeanTime;
178 std::unique_ptr<TF1> fTimeProb;
182 Bool_t fCheckFileLayout;
185 int ExtractRunNumber();
187 Int_t fPeriodNumber = -1;
189 Int_t fRunNumber = -1;
191 Int_t fFileType = -1;
friend F32vec4 min(const F32vec4 &a, const F32vec4 &b)
friend F32vec4 max(const F32vec4 &a, const F32vec4 &b)
void SetEvtHeaderNew(Bool_t Status)
void SetBeamTime(Double_t beamTime, Double_t gapTime)
Int_t CheckMaxEventNo(Int_t EvtEnd=0) override
TObjArray * GetListOfFoldersBmn()
void SetCheckFileLayout(Bool_t enable)
void GetRunNumber(int &period_number, int &run_number)
Bool_t SpecifyRunId() override
void SetInputFile(TString name)
Bool_t ActivateObject(TObject **obj, const char *BrName) override
void SetEventTimeInterval(Double_t min, Double_t max)
void CreateNewFriendChain(TString inputFile, TString inputLevel)
TFolder * GetBranchDescriptionFolder()
void SetInTree(TTree *tempTree)
void SetEventMeanTime(Double_t mean)
void SetFileHeader(FairFileHeader *f)
~BmnFileSource() override
void AddFriend(TString FileName)
Int_t ReadEvent(UInt_t i=0) override
Bool_t ActivateObjectAny(void **, const std::type_info &, const char *) override
const TFile * GetRootFile()
void FillEventHeader(FairEventHeader *feh) override
Double_t GetDeltaEventTime()
void AddFile(TString FileName)
void ReadBranchEvent(const char *BrName) override