clas12root
Loading...
Searching...
No Matches
HipoChain.h
Go to the documentation of this file.
1#pragma once
2
3
4#include "clas12reader.h"
5#include "TRcdbVals.h"
6
7#include <TNamed.h>
8#include <TChain.h>
9#include <TObjArray.h>
10#include <TString.h>
11#include <TSystem.h>
12
13
14
15namespace clas12root {
16
17
20 class HipoChain : public TNamed {
21
22
23 public :
24 HipoChain();
25 virtual ~HipoChain()=default;
26 HipoChain(const HipoChain& other) = delete; //Copy Constructor
27 HipoChain(HipoChain&& other) = delete; //Move Constructor
28
29 HipoChain& operator=(const HipoChain& other)=delete;
30 HipoChain& operator=(HipoChain&& other)=delete;
31
32
33 void Add(TString name);
34 Int_t GetNFiles() const {return _ListOfFiles->GetEntries();}
35 Long64_t GetNRecords();
36 TString CurrentFileName()const {
37 return _idxFile>0 ? GetFileName(_idxFile-1) : TString();
38 }
39 Int_t CurrentFileNumber() const{ return _idxFile;}
40
41 TString GetFileName(Int_t i)const{
42 if(i>=GetNFiles()) return TString();
43 return _ListOfFiles->At(_index[i])->GetTitle();
44 }
45
46 Int_t GetFileRecords(Int_t i)const{
47 if(i<GetNFiles()) return _fileRecords[i];
48 return 0 ;
49 };
50 Long64_t GetRecordsToHere(Int_t ifile);
51 Int_t GetFileFromRecord(Long64_t irec);
52
53 //Functions for sequential processing of chains of files
54 Bool_t Next();
55 Bool_t ReallyNextFile(){return NextFile();}//just in case someone needs to change file
56 void SetReaderTags(std::vector<long> tags){_readerTags=tags;}
57 std::vector<long> ReaderTags()const noexcept{return _readerTags;}
58
60 const std::unique_ptr<clas12::clas12reader>& C12ref()const {return _c12;}
61 const std::unique_ptr<clas12::clas12reader>* C12ptr()const {return &_c12;}
62
63 Double_t TotalBeamCharge() noexcept{
64
65 if(_db.qa()){
66 return _totBeamCharge=_db.qa()->getChargeForRunlist(GetRunNumbers());
67 }
68
69 return 0.;
70 }
71 Double_t GetTotalBeamCharge() const noexcept{return _totBeamCharge;}
72
73 void SetTotalBeamCharge(Double_t bc){_totBeamCharge=bc;}
74
75 std::set<int> GetRunNumbers() const {return _runNumbers;}
76 void InsertRunNumbers(const std::set<int>& ns ){
77 _runNumbers.insert(ns.begin(),ns.end());
78 }
79
80 clas12::clas12databases* db() {return &_db;}
81 void ConnectDataBases(){_c12->connectDataBases(&_db);}
82
84 void WriteRcdbData(TString filename);
85 // clas12::rcdb_vals FetchRunRcdb(const TString& datafile);
86
87 /* void SetRcdbFile(const TString& filename ){
88 //needs full path for PROOF
89 if(filename.BeginsWith("/")==kFALSE&&filename.BeginsWith("$")==kFALSE)
90 _rcdbFileName = TString(gSystem->Getenv("PWD"))+"/"+filename;
91 else _rcdbFileName=filename;
92 }*/
94
95 protected:
96 virtual Bool_t NextFile();
97 virtual Bool_t FirstFile();
98
99
100 private :
101
102 TChain _tchain;
103
104 TObjArray* _ListOfFiles{nullptr};
105
106
107 std::unique_ptr<clas12::clas12reader> _c12;
108
109 clas12::clas12reader* _c12ptr{nullptr};
110
111 clas12::clas12databases _db;
112
113 Long64_t _Nrecords{-1};
114 std::vector<Int_t> _fileRecords;
115
116 std::vector<long> _readerTags;
117 std::vector<int> _index;
118
119 Int_t _idxFile{-1};
120
121 Double_t _totBeamCharge{0};
122
123 std::set<int> _runNumbers;
124
125 TString _rcdbFileName;
126
127 ClassDef(clas12root::HipoChain,1);
128 };
129
130
131}
Definition clas12databases.h:23
Clas12root HIPO file reader.
Definition clas12reader.h:74
Int_t GetFileRecords(Int_t i) const
Definition HipoChain.h:46
void SetTotalBeamCharge(Double_t bc)
Definition HipoChain.h:73
const std::unique_ptr< clas12::clas12reader > & C12ref() const
Definition HipoChain.h:60
void Add(TString name)
Definition HipoChain.cpp:16
TString GetFileName(Int_t i) const
Definition HipoChain.h:41
Int_t CurrentFileNumber() const
Definition HipoChain.h:39
const std::unique_ptr< clas12::clas12reader > * C12ptr() const
Definition HipoChain.h:61
Double_t TotalBeamCharge() noexcept
Definition HipoChain.h:63
void SetReaderTags(std::vector< long > tags)
Definition HipoChain.h:56
HipoChain()
Definition HipoChain.cpp:9
void ConnectDataBases()
Definition HipoChain.h:81
void InsertRunNumbers(const std::set< int > &ns)
Definition HipoChain.h:76
TString CurrentFileName() const
Definition HipoChain.h:36
std::vector< long > ReaderTags() const noexcept
Definition HipoChain.h:57
Int_t GetNFiles() const
Definition HipoChain.h:34
Double_t GetTotalBeamCharge() const noexcept
Definition HipoChain.h:71
clas12::clas12databases * db()
Definition HipoChain.h:80
Bool_t ReallyNextFile()
Definition HipoChain.h:55
virtual Bool_t FirstFile()
Definition HipoChain.cpp:115
virtual Bool_t NextFile()
Definition HipoChain.cpp:97
clas12::clas12reader * GetC12Reader()
Definition HipoChain.cpp:140
Long64_t GetNRecords()
Definition HipoChain.cpp:29
void WriteRcdbData(TString filename)
Get the rcdb info for all the files in the chain.
Definition HipoChain.cpp:163
Int_t GetFileFromRecord(Long64_t irec)
Definition HipoChain.cpp:65
Long64_t GetRecordsToHere(Int_t ifile)
Definition HipoChain.cpp:57
virtual ~HipoChain()=default
HipoChain(HipoChain &&other)=delete
Bool_t Next()
Definition HipoChain.cpp:74
HipoChain & operator=(HipoChain &&other)=delete
std::set< int > GetRunNumbers() const
Definition HipoChain.h:75
HipoChain(const HipoChain &other)=delete
HipoChain & operator=(const HipoChain &other)=delete
Definition BankHist.cpp:6