10 #include <ecl/calibration/eclWaveformTemplateCalibrationC4Algorithm.h>
13 #include <ecl/dataobjects/ECLElementNumbers.h>
14 #include <ecl/dbobjects/ECLDigitWaveformParameters.h>
27 using namespace Calibration;
30 eclWaveformTemplateCalibrationC4Algorithm::eclWaveformTemplateCalibrationC4Algorithm():
34 "Collects results from C3 to produce final payload, which contains new waveform templates"
45 std::vector<float> cellIDs;
46 std::vector<float> photonNorms;
47 std::vector<float> hadronNorms;
48 std::vector<float> diodeNorms;
58 B2INFO(
"eclWaveformTemplateCalibrationC4Algorithm i " << i <<
" " << first <<
" " << last);
65 for (
int j = first; j <= last; j++) {
66 B2INFO(
"Check Norm Parms CellID " << j);
67 B2INFO(
"P " << j <<
" " << tempexistingPhotonWaveformParameters->getPhotonParameters(j)[0]);
68 B2INFO(
"H " << j <<
" " << tempexistingHadronDiodeWaveformParameters->getHadronParameters(j)[0]);
69 B2INFO(
"D " << j <<
" " << tempexistingHadronDiodeWaveformParameters->getDiodeParameters(j)[0]);
72 photonNorms.push_back(tempexistingPhotonWaveformParameters->getPhotonParameters(j)[0]);
73 hadronNorms.push_back(tempexistingPhotonWaveformParameters->getHadronParameters(j)[0]);
74 diodeNorms.push_back(tempexistingPhotonWaveformParameters->getDiodeParameters(j)[0]);
76 float tempPhotonWaveformParameters[11];
77 float tempHadronWaveformParameters[11];
78 float tempDiodeWaveformParameters[11];
80 for (
int k = 0; k < 11; k++) {
81 tempPhotonWaveformParameters[k] = tempexistingPhotonWaveformParameters->getPhotonParameters(j)[k];
82 tempHadronWaveformParameters[k] = tempexistingHadronDiodeWaveformParameters->getHadronParameters(j)[k];
83 tempDiodeWaveformParameters[k] = tempexistingHadronDiodeWaveformParameters->getDiodeParameters(j)[k];
85 PhotonHadronDiodeParameters->
setTemplateParameters(j, tempPhotonWaveformParameters, tempHadronWaveformParameters,
86 tempDiodeWaveformParameters);
90 auto gphotonNorms =
new TGraph(cellIDs.size(), cellIDs.data(), photonNorms.data());
91 gphotonNorms->SetName(
"gphotonNorms");
92 auto ghadronNorms =
new TGraph(cellIDs.size(), cellIDs.data(), hadronNorms.data());
93 ghadronNorms->SetName(
"ghadronNorms");
94 auto gdiodeNorms =
new TGraph(cellIDs.size(), cellIDs.data(), diodeNorms.data());
95 gdiodeNorms->SetName(
"gdiodeNorms");
98 TFile* histfile =
new TFile(fName,
"recreate");
100 gphotonNorms->Write();
101 ghadronNorms->Write();
102 gdiodeNorms->Write();
107 B2INFO(
"eclWaveformTemplateCalibrationC4Algorithm: Successful, now writing DB PAyload");
108 saveCalibration(PhotonHadronDiodeParameters,
"ECLDigitWaveformParameters");
Base class for calibration algorithms.
void saveCalibration(TClonesArray *data, const std::string &name)
Store DBArray payload with given name with default IOV.
void setDescription(const std::string &description)
Set algorithm description (in constructor)
EResult
The result of calibration.
@ c_OK
Finished successfuly =0 in Python.
Class for accessing objects in the database.
const int c_NCrystals
Number of crystals.
Abstract base class for different kinds of events.