BmnRoot
Loading...
Searching...
No Matches
BmnFileSource.h
Go to the documentation of this file.
1// -------------------------------------------------------------------------
2// ----- BmnFileSource header file -----
3// -------------------------------------------------------------------------
10#ifndef BMNFILESOURCE_H
11#define BMNFILESOURCE_H
12
13#include "FairEventHeader.h"
14#include "FairFileHeader.h"
15#include "FairFileSourceBase.h"
16#include "FairMCEventHeader.h"
17
18#include <TArrayI.h>
19#include <TChain.h>
20#include <TF1.h>
21#include <TFile.h>
22#include <TFolder.h>
23#include <TString.h>
24#include <TTree.h>
25#include <list> // for _List_iterator, list, etc
26#include <map> // multimap
27#include <memory>
28
29class BmnFileSource : public FairFileSourceBase
30{
31 public:
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);
36 // BmnFileSource(const BmnFileSource& file);
37 ~BmnFileSource() override;
38
39 Bool_t Init() override;
40 Int_t ReadEvent(UInt_t i = 0) override;
41 void Close() override;
42
44 Int_t CheckMaxEventNo(Int_t EvtEnd = 0) override;
46 void ReadBranchEvent(const char* BrName) override;
48 void ReadBranchEvent(const char* BrName, Int_t Entry) override;
49 void FillEventHeader(FairEventHeader* feh) override;
50
51 const TFile* GetRootFile() { return fRootFile; }
53 void AddFriend(TString FileName);
55 void AddFile(TString FileName);
56 void AddFriendsToChain();
57 void PrintFriendList();
58 void CheckFriendChains();
59 void CreateNewFriendChain(TString inputFile, TString inputLevel);
60 TTree* GetInTree() { return fInChain->GetTree(); }
61 TChain* GetInChain() { return fInChain; }
62 TFile* GetInFile() { return fRootFile; }
64 {
65 if (fRootFile) {
66 fRootFile->Close();
67 }
68 }
69 void SetInTree(TTree* tempTree);
70 TObjArray* GetListOfFoldersBmn() { return &fListFolderBmn; }
71 TFolder* GetBranchDescriptionFolder() { return fCbmroot; }
72 UInt_t GetEntries() { return fNoOfEntries; }
73
74 // TList* GetBranchNameList() {return fBranchNameList;}
75
76 void SetInputFile(TString name);
77
80 void SetBeamTime(Double_t beamTime, Double_t gapTime);
82 void SetEventTimeInterval(Double_t min, Double_t max);
84 void SetEventMeanTime(Double_t mean);
85 void SetEventTime();
86 Double_t GetDeltaEventTime();
87 void SetFileHeader(FairFileHeader* f) { fFileHeader = f; }
88 Double_t GetEventTime();
89
90 Bool_t ActivateObject(TObject** obj, const char* BrName) override;
91 Bool_t ActivateObjectAny(void**, const std::type_info&, const char*) override;
92
97 void SetEvtHeaderNew(Bool_t Status) { fEvtHeaderIsNew = Status; }
98 Bool_t IsEvtHeaderNew() { return fEvtHeaderIsNew; }
99
102 void SetCheckFileLayout(Bool_t enable) { fCheckFileLayout = enable; }
103
105 Bool_t SpecifyRunId() override;
106
108 void GetRunNumber(int& period_number, int& run_number);
110 Int_t GetFileType() { return fFileType; }
111
112 private:
114 TString fInputTitle;
116 TFile* fRootFile;
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;
124 TChain* fInChain;
126 TTree* fInTree;
128 TObjArray fListFolderBmn{16};
130 TFolder* fCbmout;
132 TFolder* fCbmroot;
133 /***/
134 UInt_t fSourceIdentifier;
136 UInt_t fNoOfEntries;
138 Bool_t IsInitialized;
139
141 BmnFileSource operator=(const BmnFileSource&);
142
144 FairMCEventHeader* fMCHeader;
145
147 FairEventHeader* fEvtHeader;
148
150 FairFileHeader* fFileHeader;
151
153 Bool_t fEventTimeInMCHeader;
158 Bool_t fEvtHeaderIsNew;
159
161 UInt_t fCurrentEntryNo;
163 UInt_t fTimeforEntryNo;
164
166 Double_t fEventTimeMin;
168 Double_t fEventTimeMax;
170 Double_t fEventTime;
172 Double_t fBeamTime;
174 Double_t fGapTime;
176 Double_t fEventMeanTime;
178 std::unique_ptr<TF1> fTimeProb;
182 Bool_t fCheckFileLayout;
183
185 int ExtractRunNumber();
187 Int_t fPeriodNumber = -1;
189 Int_t fRunNumber = -1;
191 Int_t fFileType = -1;
192
193 ClassDefOverride(BmnFileSource, 1);
194};
195
196#endif /* defined(BMNFILESOURCE_H) */
int i
Definition P4_F32vec4.h:22
friend F32vec4 min(const F32vec4 &a, const F32vec4 &b)
Definition P4_F32vec4.h:30
float f
Definition P4_F32vec4.h:21
friend F32vec4 max(const F32vec4 &a, const F32vec4 &b)
Definition P4_F32vec4.h:31
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
Double_t GetEventTime()
void SetEventTimeInterval(Double_t min, Double_t max)
void CreateNewFriendChain(TString inputFile, TString inputLevel)
TFolder * GetBranchDescriptionFolder()
void SetInTree(TTree *tempTree)
TTree * GetInTree()
TFile * GetInFile()
Int_t GetFileType()
void SetEventMeanTime(Double_t mean)
void SetFileHeader(FairFileHeader *f)
Bool_t Init() override
UInt_t GetEntries()
TChain * GetInChain()
~BmnFileSource() override
void AddFriend(TString FileName)
Bool_t IsEvtHeaderNew()
Int_t ReadEvent(UInt_t i=0) override
Bool_t ActivateObjectAny(void **, const std::type_info &, const char *) override
void Close() override
const TFile * GetRootFile()
void FillEventHeader(FairEventHeader *feh) override
Double_t GetDeltaEventTime()
void AddFile(TString FileName)
void ReadBranchEvent(const char *BrName) override