pxar
 All Classes Namespaces Functions Variables Typedefs Friends
ConfigParameters.hh
1 #ifndef CONFIGPARAMETERS
2 #define CONFIGPARAMETERS
3 
4 #include "pxardllexport.h"
5 
7 #if ((defined WIN32) && (defined __CINT__))
8 typedef unsigned short int uint16_t;
9 typedef unsigned char uint8_t;
10 #undef __GNUC__
11 typedef char int8_t;
12 #else
13 
14 #ifdef __CINT__
15 #undef __GNUC__
16 typedef char __signed;
17 typedef char int8_t;
18 #endif
19 
20 #include <stdint.h>
21 #endif
22 
23 #include <string>
24 #include <sstream>
25 #include <vector>
26 
27 #include "api.h"
28 
30  double p0, p1, p2, p3;
31 };
32 
33 
34 class DLLEXPORT ConfigParameters {
35 public:
37  ConfigParameters(std::string filename);
38 
39  void initialize();
40  bool readConfigParameterFile(std::string filename);
41  void readAllConfigParameterFiles();
42  void readRocPixelConfig();
43  void readTbParameters();
44  void readRocDacs();
45  void readTbmDacs();
46  void readReadbackCal();
47 
48 
49  void writeAllFiles();
50  bool writeConfigParameterFile();
51  // NB: if you add a variable name after the second argument, the dictionary will not compile anymore??!?!
52  bool writeDacParameterFile(int iroc, std::vector<std::pair<std::string, uint8_t> > );
53  bool writeTrimFile(int iroc, std::vector<pxar::pixelConfig> );
54  bool writeTbmParameterFile(int itbm,
55  std::vector<std::pair<std::string, uint8_t> > ,
56  std::vector<std::pair<std::string, uint8_t> > );
57  bool writeTbParameterFile();
58  bool writeTestParameterFile(std::string test="all");
59  bool writeReadbackFile(int iroc, std::vector<std::pair<std::string, double> > v);
60  bool writeMaskFile(std::vector<std::vector<std::pair<int, int> > > v, std::string name = "");
61 
62  static ConfigParameters* Singleton();
63 
64  std::string getTBParameterFileName() {return fTBParametersFileName;}
65  std::string getDACParameterFileName() {return fDACParametersFileName;}
66  std::string getTbmParameterFileName() {return fTbmParametersFileName;}
67  std::string getTrimParameterFileName() {return fTrimParametersFileName;}
68  std::string getTestParameterFileName() {return fTestParametersFileName;}
69  std::string getGainPedestalParameterFileName() {return fGainPedestalParameterFileName;}
70  std::string getGainPedestalFileName() {return fGainPedestalFileName;}
71  std::string getTrimVcalSufix() {return fTrimVcalSuffix;}
72  std::string getRootFileName() {return fRootFileName;}
73  std::string getLogFileName() {return fLogFileName;}
74  std::string getMaskFileName() {return fMaskFileName;}
75  std::string getDebugFileName() {return fDebugFileName;}
76  std::string getDirectory() {return fDirectory;}
77  std::string getRocType() {return fRocType;}
78  std::string getTbmType() {return fTbmType;}
79  std::string getHdiType() {return fHdiType;}
80  std::string getTbName() {return fTBName;}
81 
82  std::vector<std::pair<std::string,uint8_t> > getTbParameters();
83  std::vector<std::pair<std::string,double> > getTbPowerSettings();
84  std::vector<std::pair<std::string,uint8_t> > getTbSigDelays();
85  std::vector<std::pair<std::string,uint8_t> > getTbPgSettings();
86  std::vector<std::vector<std::pair<std::string, uint8_t> > > getTbmDacs();
87  std::vector<std::vector<std::pair<std::string, uint8_t> > > getRocDacs();
88  std::vector<std::vector<std::pair<std::string, double> > > getReadbackCal();
89  std::vector<std::string> getDacs();
90  std::vector<std::pair<std::string, uint8_t> > readDacFile(std::string fname);
91  std::vector<std::pair<std::string, double> > readReadbackFile(std::string fname);
92  void readTrimFile(std::string fname, std::vector<pxar::pixelConfig>&);
93  std::vector<std::vector<std::pair<int, int> > > readMaskFile(std::string fname);
94  std::vector<std::vector<pxar::pixelConfig> > getRocPixelConfig();
95  std::vector<pxar::pixelConfig> getRocPixelConfig(int i);
96  bool customI2cAddresses() {return fI2cAddresses.size() > 0;}
97  std::vector<uint8_t> getI2cAddresses() {return fI2cAddresses;}
98 
99  bool setTbParameter(std::string, uint8_t, bool appendIfNotFound = false);
100  bool setTbPowerSettings(std::string, double);
101  bool setTbmDac(std::string var, uint8_t val, int itbm = -1);
102  bool setRocDac(std::string var, uint8_t val, int iroc = -1);
103  bool setTrimBits(int trim);
104 
105  void setProbe(std::string probe, std::string value);
106  std::string getProbe(std::string probe);
107 
108  void setTBParameterFileName(std::string filename) {fTBParametersFileName = filename;}
109  void setDACParameterFileName(std::string filename) {fDACParametersFileName = filename;}
110  void setTbmParameterFileName(std::string filename) {fTbmParametersFileName = filename;}
111  void setTrimParameterFileName(std::string filename) {fTrimParametersFileName = filename;}
112  void setTrimVcalSuffix(std::string name, bool nocheck = false);
113  void setTestParameterFileName(std::string filename) {fTestParametersFileName = filename;}
114  void setRootFileName(std::string filename) {fRootFileName = filename;}
115  void setLogFileName(std::string filename) {fLogFileName = filename;}
116  void setDebugFileName(std::string filename) {fMaskFileName = filename;}
117  void setMaskFileName(std::string filename) {fDebugFileName = filename;}
118  void setDirectory(std::string dirname) {fDirectory = dirname;}
119 
120  void setGuiMode(bool a) {fGuiMode = a;}
121 
122  unsigned int getNrocs() {return fnRocs;}
123  unsigned int getNtbms() {return fnTbms;}
124  std::vector<int> getSelectedRocs() {return fSelectedRocs;}
125  std::vector<int> getSelectedTbms() {return fSelectedTbms;}
126  void setSelectedRocs(std::vector<int> v) {fSelectedRocs = v;}
127  void setSelectedTbms(std::vector<int> v) {fSelectedTbms = v;}
128 
129  void readGainPedestalParameters();
130  void writeGainPedestalParameters();
131  void setGainPedestalParameters(std::vector<std::vector<gainPedestalParameters> >);
132  std::vector<std::vector<gainPedestalParameters> > getGainPedestalParameters();
133 
134  double getIa() {return ia;}
135  double getId() {return id;}
136  double getVa() {return va;}
137  double getVd() {return vd;}
138  bool getHvOn() {return fHvOn;}
139 
140  uint8_t getHubId() {return fHubId;}
141 
142  static bool bothAreSpaces(char lhs, char rhs);
143  void replaceAll(std::string& str, const std::string& from, const std::string& to);
144  void cleanupString(std::string& str);
145  void readNrocs(std::string line);
146 
147 private:
148 
149  bool fReadTbParameters, fReadTbmParameters, fReadDacParameters, fReadRocPixelConfig, fReadReadbackCal;
150  std::vector<std::pair<std::string, uint8_t> > fTbParameters;
151  std::vector<std::pair<std::string, double> > fTbPowerSettings;
152  std::vector<std::pair<uint16_t, uint8_t> > fTbPgSettings;
153  std::vector<std::vector<std::pair<std::string, uint8_t> > > fTbmParameters, fDacParameters;
154  std::vector<std::vector<std::pair<std::string, double> > > fReadbackCal;
155  std::vector<std::vector<pxar::pixelConfig> > fRocPixelConfigs;
156  std::vector<int> fSelectedRocs, fSelectedTbms;
157 
158  std::vector<std::vector<gainPedestalParameters> > fGainPedestalParameters;
159 
160  unsigned int fnCol, fnRow, fnRocs, fnTbms, fnModules, fHubId;
161  int fHalfModule;
162  std::vector<uint8_t> fI2cAddresses;
163  int fEmptyReadoutLength, fEmptyReadoutLengthADC, fEmptyReadoutLengthADCDual, fTbmChannel;
164  float ia, id, va, vd;
165  float rocZeroAnalogCurrent;
166  std::string fRocType, fTbmType, fHdiType;
167  std::string fDirectory;
168  std::string fTBName;
169  bool fHvOn, fTbmEnable, fTbmEmulator, fKeithleyRemote, fGuiMode;
170  std::string fProbeA1,fProbeA2, fProbeD1, fProbeD2;
171 
172  std::string fTBParametersFileName;
173  std::string fTrimVcalSuffix;
174  std::string fDACParametersFileName;
175  std::string fTbmParametersFileName;
176  std::string fTrimParametersFileName;
177  std::string fTestParametersFileName;
178  std::string fRootFileName;
179  std::string fLogFileName;
180  std::string fMaskFileName;
181  std::string fDebugFileName;
182  std::string fGainPedestalFileName, fGainPedestalParameterFileName;
183  std::string fReadbackCalFileName;
184 
185  static ConfigParameters* fInstance;
186 
187 };
188 
189 #endif