clas12root
Loading...
Searching...
No Matches
ccdb_reader.h
Go to the documentation of this file.
1#ifndef CCDB_READER_H
2#define CCDB_READER_H
3
4#include "region_particle.h"
5#ifdef CLAS_CCDB
6#include "CCDB/CalibrationGenerator.h"
7#include "CCDB/Calibration.h"
8#endif
9
10#include <string>
11#include <vector>
12#include <memory>
13
14namespace clas12 {
15
16 using TableOfDoubles_t = std::vector<std::vector<double>>;
17 using TableRecord_t = std::pair<std::string,TableOfDoubles_t>;
20
21 public:
22
23 // ccdb_reader(int runNb);
24 ccdb_reader(const std::string& path, int runNb=0);
25
26 bool check();
27 void close();
28 void open();
29
30 void setRun(int nb){_runNb=nb; _srunNb=std::to_string(nb);}
31 std::string nameWithRun(const std::string& tableName);
32
34
36 if(p->getRegion()!=FD) return 0.;
37 auto edep = p->getDetEnergy();
38 return edep/getMeanSF(edep);
39 }
40 double getMeanSF(float Edep){
41 return _sfPa*(_sfPb+(_sfPc/Edep)+(_sfPd/(Edep*Edep)));
42 }
43
44 private:
45
46 ccdb_reader()=default;
47
48
49 std::string _path;
50 std::string _srunNb;
51
52 int _runNb={0};
53
54 //ifdefs must go last , or can lead to issues with PROOF
55 //i.e. refences are slighty shifted
56
57
58 public:
59 const TableOfDoubles_t& requestTableDoubles(std::string tableName);
60 void updateTables();
61 int requestTableEntryFor(const std::string& item,const std::string& tableName);
62 double requestTableValueFor(int row,const std::string& item,const std::string& tableName);
63
64 private:
65
66 std::vector< TableRecord_t > _localTable;
67
68 // Photon Sampling Fraction Parameters
69 double _sfPa={0};
70 double _sfPb={0};
71 double _sfPc={0};
72 double _sfPd={0};
73
74#ifdef CLAS_CCDB
75
76 std::unique_ptr<ccdb::Calibration> _calib ={nullptr};
77
78#endif
79
80 };
81
82}
83#endif /* CCDB_READER_H */
const TableOfDoubles_t & requestTableDoubles(std::string tableName)
Definition ccdb_reader.cpp:88
void close()
Definition ccdb_reader.cpp:46
void open()
Definition ccdb_reader.cpp:43
void updateTables()
Definition ccdb_reader.cpp:109
double getMeanSF(float Edep)
Definition ccdb_reader.h:40
double requestTableValueFor(int row, const std::string &item, const std::string &tableName)
Definition ccdb_reader.cpp:53
int requestTableEntryFor(const std::string &item, const std::string &tableName)
Definition ccdb_reader.cpp:77
double getFDPhotonEnergy(region_particle *p)
Definition ccdb_reader.h:35
std::string nameWithRun(const std::string &tableName)
Definition ccdb_reader.cpp:127
bool check()
Definition ccdb_reader.cpp:49
ccdb_reader(const std::string &path, int runNb=0)
Definition ccdb_reader.cpp:8
void getSamplingFactionPars()
Definition ccdb_reader.cpp:133
void setRun(int nb)
Definition ccdb_reader.h:30
Definition region_particle.h:35
short getRegion() const
Definition region_particle.h:129
virtual double getDetEnergy() const =0
Definition calextras.cpp:10
const clas12::TableOfDoubles_t * CCDBTable
Definition ccdb_reader.h:18
std::vector< std::vector< double > > TableOfDoubles_t
Definition ccdb_reader.h:16
std::pair< std::string, TableOfDoubles_t > TableRecord_t
Definition ccdb_reader.h:17