Belle II Software development
ARICHDatabaseImporter.h
1/**************************************************************************
2 * basf2 (Belle II Analysis Software Framework) *
3 * Author: The Belle II Collaboration *
4 * *
5 * See git log for contributors and copyright holders. *
6 * This file is licensed under LGPL-3.0, see LICENSE.md. *
7 **************************************************************************/
8#ifndef ARICHDATABASEIMPORTER_H
9#define ARICHDATABASEIMPORTER_H
10
11#include <TGraph.h>
12#include <TH1.h>
13#include <TH2F.h>
14#include <TH3F.h>
15#include <TTimeStamp.h>
16#include <map>
17#include <tuple>
18#include <vector>
19#include <iostream>
20#include <string>
21#include <framework/database/IntervalOfValidity.h>
22#include <arich/dbobjects/tessellatedSolidStr.h>
23
24namespace Belle2 {
31
35
36 public:
41 m_inputFilesFebTest(), m_iov(0, 0, -1, -1) {};
42
46 ARICHDatabaseImporter(const std::vector<std::string>& inputFilesHapdQA, const std::vector<std::string>& inputFilesAsicRoot,
47 const std::vector<std::string>& inputFilesAsicTxt, const std::vector<std::string>& inputFilesHapdQE,
48 const std::vector<std::string>& inputFilesFebTest);
49
53 ARICHDatabaseImporter(int experiment, int run);
54
55
60
64 void SetIOV(int experimentLow, int runLow, int experimentHigh, int runHigh);
65
69 void setExperimentAndRun(int experiment, int run);
70
71 // classes used in simulation/reconstruction software
72
77
82
83
88 void printSimulationPar(bool dump = false);
89
96 void importModulesInfo();
97
102 void printModulesInfo(bool dump = false);
103
107 void setHAPDQE(unsigned modID, double qe = 0.27, bool import = false);
108
113
118
123
128
133
140 void importChannelMask();
141
147 void importChannelMask(TH1* h);
148
149
155 void printChannelMask(bool makeHist = false, bool dump = false);
156
161
166 void printChannelMapping(bool dump = false);
167
172 void importFEMappings();
173
178 void printMergerMapping(bool dump = false);
179
184 void printCopperMapping(bool dump = false);
185
190 void printReconstructionPar(bool dump = false);
191
196 void printGeometryConfig(bool dump = false);
197
204 void dumpQEMap(bool simple = false);
205
209 void dumpHvMappings();
210
214 void printFEMappings();
215
219 void dumpMergerMapping(bool sn = true);
220
224 void dumpModuleNumbering();
225
231 void dumpAerogelOpticalProperties(std::string outRootFileName = "ARICH_AerogelOpticalProperties.root");
232
237
242
246 void importAeroTilesInfo();
247
251 void importAeroRayleighScatteringFit(std::string commentSingleWord = "");
252
256 int getAeroTileRing(int slot);
257
261 int getAeroTileColumn(int slot);
262
267 void printAeroTileInfo(bool dump = false);
268
273 void printGlobalAlignment(bool dump = false);
274
279 void printMirrorAlignment(bool dump = false);
280
285 void printAeroTilesAlignment(bool dump = false);
286
287 // DAQ classes
288
292 void importBiasMappings();
293
297 void importHvMappings();
298
303
308 void printBiasMappings(bool dump = false);
309
314 void printHvMappings(bool dump = false);
315
320 void printNominalBiasVoltages(bool dump = false);
321
326 void printNominalBiasVoltageForChannel(std::vector<int> channel);
327
334 void printHapdPositionFromCrateSlot(int crate, int slot, int channelID);
335
341 int getFebDaqSlot(unsigned febSlot);
342
343
344 // classes used in conditions DB
345
349 void importAerogelInfo(TString coreNameSuffix = "");
350
354 void exportAerogelInfo(int verboseLevel = 0);
355
359 void importAerogelMap();
360
364 void exportAerogelMap();
365
370
375
379 void importHapdQA();
380
384 void exportHapdQA();
385
389 void importAsicInfo();
390
394 void importAsicInfoRoot();
395
399 void exportAsicInfo();
400
405 TTimeStamp timedate(std::string enddate);
406
412 TTimeStamp getAsicDate(const std::string& asicSerial, const std::string& type);
413
417 std::vector<int> channelsList(std::string badCH);
418
422 void importFebTest();
423
427 void importFebTestRoot();
428
432 std::tuple<std::string, float, float, float> getFebLVtestData(int serial, int lvRun);
433
437 std::tuple<std::string, float> getFebHVtestData(int serial, int hvRun);
438
442 std::vector<int> getDeadChFEB(const std::string& dna);
443
448 TTimeStamp timedate2(std::string time);
449
453 std::pair<std::vector<float>, std::vector<float>> getSlopes(int serialNum, const std::string& runSCAN);
454
458 std::vector<std::pair<float, float>> getFwhm(int serialNum, const std::string& runSCAN);
459
463 std::vector<TH3F*> getFebTestHistograms(const std::string& dna, const std::string& run, int febposition);
464
468 TH2F* getFebTestPulse(const std::string& dna, const std::string& run, int febposition);
469
473 void exportFebTest();
474
478 void importHapdChipInfo();
479
483 void exportHapdChipInfo();
484
488 void importHapdInfo();
489
493 std::vector<int> channelsListHapd(std::string chlist, std::string chipDelay);
494
501 int getChannelPosition(const std::string& XY, const std::string& chip_2d, int chipnum);
502
512 TGraph* getGraphGainCurrent(const std::string& bomb_aval, const std::string& g_i, const std::string& chip_label, int i, float* HV,
513 float* gain_current);
514
522 TH2F* getBiasGraph(const std::string& chip_2d, const std::string& voltage_current, int* chipnum, float* bias_v_i);
523
527 void exportHapdInfo();
528
532 void importHapdQE();
533
537 void exportHapdQE();
538
543 void printBiasVoltagesForHapdChip(const std::string& serialNumber);
544
549 void printMyParams(const std::string& aeroSerialNumber);
550
555 std::map<std::string, float> getAerogelParams(const std::string& aeroSerialNumber);
556
560 void importFEBoardInfo();
561
565 void exportFEBoardInfo();
566
570 void importModuleTest(const std::string& mypath, const std::string& HVtest);
571
575 void exportModuleTest(const std::string& HVtest);
576
581
586
591
595 void exportSensorModuleMapInfo(int number);
596
600 void importMagnetTest();
601
605 void exportMagnetTest();
606
610 void exportAll();
611
612
613 private:
614
615 std::vector<std::string> m_inputFilesHapdQA;
616 std::vector<std::string> m_inputFilesAsicRoot;
617 std::vector<std::string> m_inputFilesAsicTxt;
618 std::vector<std::string> m_inputFilesHapdQE;
619 std::vector<std::string> m_inputFilesFebTest;
628 template <typename Container_t>
629 inline auto printContainer(const Container_t& rContainer, std::ostream& rStream = std::cout) noexcept -> void
630 {
631 if (rContainer.empty())
632 return void();
633
634 rStream << rContainer.front();
635 for (auto i = 1ul; i < rContainer.size(); ++i)
636 rStream << " - " << rContainer[i];
637 rStream << '\n';
638 }
639
640 };
641
643} // Belle2 namespace
644#endif
void exportHapdQE()
Export HAPD quantum efficiency from the database.
void importModulesInfo()
Import HAPD modules info from the xml file and database (2D QE maps) Goes through the list of install...
std::vector< std::string > m_inputFilesHapdQA
Input root files for HAPD QA.
void exportModuleTest(const std::string &HVtest)
Export module test results.
int getAeroTileColumn(int slot)
Get aerogel ring number from global indetifier.
void importAeroTilesInfo()
Import optical information of aerogel tiles into database.
void importHvMappings()
Imports mappings of power supply to high voltage cables.
void importChannelMapping()
Imports HAPD (asic) channel mappings from the xml file.
void importAeroTilesAlignment()
Import aerogel tiles alignment parameters from ARICH-AeroTilesAlignment.xml.
void exportMagnetTest()
Export results of magnet test.
void printMergerMapping(bool dump=false)
Prints merger to FEB mappings from the database.
void printCopperMapping(bool dump=false)
Prints Copper to merger mappings from the database.
void importSensorModuleInfo()
Import module sensor info classes.
int getChannelPosition(const std::string &XY, const std::string &chip_2d, int chipnum)
Get position of channel on HAPD.
std::vector< std::pair< float, float > > getFwhm(int serialNum, const std::string &runSCAN)
Returns lists of FWHM values&sigmas.
void dumpModuleNumbering()
Dumps module numbering scheme into root file (module position on the detector plane -> module number)
tessellatedSolidStr readTessellatedSolidVerticesFromDATfile(const std::string &inDATfile)
reads merger cooling bodies geometry from dat files
void importAeroRayleighScatteringFit(std::string commentSingleWord="")
Import optical information of aerogel tiles into database.
void importAerogelInfoEventDep()
Import intrarun dependant ARICH aerogel data in the database.
std::vector< std::string > m_inputFilesFebTest
Input root files from FEB test (coarse/fine offset settings, test pulse)
void printAeroTileInfo(bool dump=false)
Prints mapping of aerogel tiles and their optical properties.
void dumpHvMappings()
Dumps detector map of HAPD modules to HV cable channels.
virtual ~ARICHDatabaseImporter()
Destructor.
void printBiasMappings(bool dump=false)
Prints mappings of power supply to bias cables and cables to HAPDs and nominal values of bias voltage...
void importReconstructionParams()
Import reconstruction parameters (for now only initializes "default" values and imports)
void setHAPDQE(unsigned modID, double qe=0.27, bool import=false)
Example function for importing HAPD QE to database class (ARICHModulesInfo)
void importFEBoardInfo()
Import module test results.
void exportFEBoardInfo()
Export module test results.
void exportSensorModuleMapInfo(int number)
Export module sensor map info classes from database.
void importMagnetTest()
Import results of magnet test.
IntervalOfValidity m_iov
interval of validity
std::vector< int > channelsList(std::string badCH)
Get lists of problematic ASIC channels.
void SetIOV(int experimentLow, int runLow, int experimentHigh, int runHigh)
Set Interval of Validity.
void setExperimentAndRun(int experiment, int run)
Set experiment and run number.
void importSimulationParams()
Import simulation parameters from the xml file (QE curve, etc.)
TTimeStamp timedate2(std::string time)
Convert date (FEB) to TTimeStamp.
TH2F * getBiasGraph(const std::string &chip_2d, const std::string &voltage_current, int *chipnum, float *bias_v_i)
Get histograms for bias voltage and current.
void printHvMappings(bool dump=false)
Prints mappings of power supply to HV cables and cables to HAPDs from the database.
std::tuple< std::string, float > getFebHVtestData(int serial, int hvRun)
Returns data from high voltage test.
void dumpQEMap(bool simple=false)
Dumps 2D QE map of full detector surface from the database into root file (from ARICHModulesInfo)
void dumpMergerMapping(bool sn=true)
Dumps module - merger mapping into root file.
void importHapdInfo()
Import ARICH HAPD data in the database.
std::vector< int > getDeadChFEB(const std::string &dna)
Returns list of dead channels on FEB.
void printChannelMapping(bool dump=false)
Prints HAPD (asic) channel mapping from the database.
auto printContainer(const Container_t &rContainer, std::ostream &rStream=std::cout) noexcept -> void
printContainer used for debugging purposes...
void exportHapdInfo()
Export ARICH HAPD info and chip info data from the database.
void exportAerogelInfoEventDep()
Export intrarun dependant ARICH aerogel data from the database.
void printNominalBiasVoltageForChannel(std::vector< int > channel)
Prints nominal bias voltage for channel on power supply from the database.
void importHapdQE()
Import HAPD quantum efficiency in the database.
void printGlobalAlignment(bool dump=false)
Prints global alignment constants.
void importFEMappings()
Imports mappings of FE electronics from the xml file (ARICH-FrontEndMapping.xml) to the database Mapp...
void importNominalBiasVoltages()
Imports mappings of nominal values of bias voltages.
void printBiasVoltagesForHapdChip(const std::string &serialNumber)
Export ARICH HAPD chip info data from the database and calculate bias voltages for one HAPD.
std::vector< TH3F * > getFebTestHistograms(const std::string &dna, const std::string &run, int febposition)
Returns TH3F histograms - offset settings.
void printModulesInfo(bool dump=false)
Print HAPD modules info from the database (lightweight class for sim/rec=)
void importFebTest()
Import ARICH FEB test data in the database.
void importAerogelMap()
Import ARICH aerogel map in the database.
void exportSensorModuleMap()
Export module sensor map classes from database.
void importBiasMappings()
Imports mappings of power supply to bias cables and cables to HAPDs and nominal values of bias voltag...
ARICHDatabaseImporter()
Default constructor.
void printChannelMask(bool makeHist=false, bool dump=false)
Print channel mask of all HAPD modules from the database (lightweight class for sim/rec)
std::vector< std::string > m_inputFilesHapdQE
Input root files for HAPD quantum efficiency.
void printFEMappings()
Prints electronics mappings for all modules (merger ID + SN, merger port, copper, finnese)
void importAsicInfoRoot()
Import large histograms from ARICH ASICs data in the database.
void importGlobalAlignment()
Import global alignment parameters from ARICH-GlobalAlignment.xml.
std::map< std::string, float > getAerogelParams(const std::string &aeroSerialNumber)
Function that returns refractive index, thickness and transmission length of aerogel.
void printNominalBiasVoltages(bool dump=false)
Prints mappings of nominal values of bias voltages from the database.
int getAeroTileRing(int slot)
Get aerogel ring number from global indetifier.
void printMirrorAlignment(bool dump=false)
Prints mirror alignment constants.
void exportFebTest()
Export ARICH FEB test data from the database.
void printSimulationPar(bool dump=false)
Print simulation parameters from the database (QE curve, etc.)
void exportAsicInfo()
Export ARICH ASICs data from the database.
void exportAerogelMap()
Export ARICH aerogel map in the database.
void exportAerogelInfo(int verboseLevel=0)
Export ARICH aerogel data from the database.
TTimeStamp timedate(std::string enddate)
Convert date (ASICs) to TTimeStamp.
void importModuleTest(const std::string &mypath, const std::string &HVtest)
Import module test results.
std::pair< std::vector< float >, std::vector< float > > getSlopes(int serialNum, const std::string &runSCAN)
Returns lists of slopes (fine & rough)
std::vector< std::string > m_inputFilesAsicTxt
Input txt files for ASICs.
void importGeometryConfig()
Import geometry configuration parameters to the database.
void exportAll()
Export all the data.
void importAerogelInfo(TString coreNameSuffix="")
Import ARICH aerogel data in the database.
TTimeStamp getAsicDate(const std::string &asicSerial, const std::string &type)
Get date for ASIC measurement.
void importChannelMask()
Import channel mask for all HAPD modules from the database (list of dead channels) Goes through the l...
void importCosmicTestGeometry()
Import parameters of the cosmic test geometry configuration.
void importSensorModuleMap()
Import module sensor map classes.
TGraph * getGraphGainCurrent(const std::string &bomb_aval, const std::string &g_i, const std::string &chip_label, int i, float *HV, float *gain_current)
Get graphs for bombardment and avalanche gain and current.
void printReconstructionPar(bool dump=false)
Prints reconstruction parameters.
void importAsicInfo()
Import ARICH ASICs data in the database.
void printAeroTilesAlignment(bool dump=false)
Prints aerogel tiles alignment constants.
void exportHapdQA()
Export ARICH HAPD QA data from the database.
std::vector< std::string > m_inputFilesAsicRoot
Input root files for ASICs.
void printGeometryConfig(bool dump=false)
Prints geometry configuration parameters from the database.
void importFebTestRoot()
Import large histograms from ARICH FEB test data in the database.
void printHapdPositionFromCrateSlot(int crate, int slot, int channelID)
Prints HAPD position (sector, ring, azimuth) and merger connection (merger, feb slot) from the databa...
void importMergerCoolingGeo()
Import Merger cooling bodies geometry.
void printMyParams(const std::string &aeroSerialNumber)
Example that shows how to use data from the database.
TH2F * getFebTestPulse(const std::string &dna, const std::string &run, int febposition)
Returns TH2F histogram of pulse test.
void dumpAerogelOpticalProperties(std::string outRootFileName="ARICH_AerogelOpticalProperties.root")
Dumps aerogel tile properties (aerogel optical properties - AOP) into root file with arich/utility/AR...
int getFebDaqSlot(unsigned febSlot)
Returns feb daq position from feb slot.
void importHapdChipInfo()
Import ARICH HAPD chip data in the database.
void exportHapdChipInfo()
Export ARICH HAPD chip data from the database.
std::vector< int > channelsListHapd(std::string chlist, std::string chipDelay)
Get lists of problematic HAPD channels.
std::tuple< std::string, float, float, float > getFebLVtestData(int serial, int lvRun)
Returns data from low voltage test.
void importHapdQA()
Import ARICH HAPD QA data in the database.
void importMirrorAlignment()
Import mirror alignment parameters from ARICH-MirrorAlignment.xml.
A class that describes the interval of experiments/runs for which an object in the database is valid.
Abstract base class for different kinds of events.
Structure which holds apexes of the tessellation volumes.
Point.