13 #include <reconstruction/dbobjects/CDCDedx1DCell.h>
14 #include <calibration/CalibrationAlgorithm.h>
15 #include <framework/database/DBObjPtr.h>
35 class CDCDedx1DCellAlgorithm :
public CalibrationAlgorithm {
80 if (nbin % 4 != 0)
return -1;
82 if (ibin <= nbin / 4) jbin = ibin + nbin / 2 ;
83 else if (ibin > 3 * nbin / 4) jbin = ibin - nbin / 2 ;
96 std::cout <<
"Please select global in multiple of 8 " << std::endl;
101 std::vector<int> nBinEnta0to25Per;
102 for (
int ibin = 0; ibin < nbin / 4; ibin++) {
103 if (ibin < nbin / 8) jbin++;
104 else if (TMath::Abs(ibin - nbin / 8) % 2 == 0)jbin++;
105 nBinEnta0to25Per.push_back(jbin);
108 std::vector<int> temp = nBinEnta0to25Per;
109 std::reverse(temp.begin(), temp.end());
111 std::vector<int> nBinEnta25to50Per;
112 for (
unsigned int it = 0; it < temp.size(); ++it)nBinEnta25to50Per.push_back(2 * jbin - temp.at(it) + 1);
114 std::vector<int> nBinEnta0to50Per = nBinEnta0to25Per;
115 nBinEnta0to50Per.insert(nBinEnta0to50Per.end(), nBinEnta25to50Per.begin(), nBinEnta25to50Per.end());
117 std::vector<int> nBinEnta50to100Per;
118 for (
unsigned int it = 0; it < nBinEnta0to50Per.size(); ++it) {
119 nBinEnta50to100Per.push_back(nBinEnta0to50Per.at(nBinEnta0to50Per.size() - 1) + nBinEnta0to50Per.at(it) + 1);
122 nBinEnta0to100Per = nBinEnta0to50Per;
123 nBinEnta0to100Per.insert(nBinEnta0to100Per.end(), nBinEnta50to100Per.begin(), nBinEnta50to100Per.end());
127 for (
unsigned int i = 0; i < nBinEnta0to100Per.size() - 1; ++i) {
128 if (nBinEnta0to100Per.at(i) < nBinEnta0to100Per.at(i + 1)) {
129 double binval = tempEnta->GetBinLowEdge(i + 1) + tempEnta->GetBinWidth(i + 1);
130 if (TMath::Abs(binval) < 10e-5)binval = 0;