13 #include <calibration/CalibrationAlgorithm.h>
28 class CDCDedx2DCellAlgorithm :
public CalibrationAlgorithm {
77 if (nbin % 4 != 0)
return -1;
79 if (ibin <= nbin / 4) jbin = ibin + nbin / 2 ;
80 else if (ibin > 3 * nbin / 4) jbin = ibin - nbin / 2 ;
93 std::cout <<
"Please select global in multiple of 8 " << std::endl;
98 std::vector<int> nBinEnta0to25Per;
99 for (
int ibin = 0; ibin < nbin / 4; ibin++) {
100 if (ibin < nbin / 8) jbin++;
101 else if (TMath::Abs(ibin - nbin / 8) % 2 == 0)jbin++;
102 nBinEnta0to25Per.push_back(jbin);
105 std::vector<int> temp = nBinEnta0to25Per;
106 std::reverse(temp.begin(), temp.end());
108 std::vector<int> nBinEnta25to50Per;
109 for (
unsigned int it = 0; it < temp.size(); ++it)nBinEnta25to50Per.push_back(2 * jbin - temp.at(it) + 1);
111 std::vector<int> nBinEnta0to50Per = nBinEnta0to25Per;
112 nBinEnta0to50Per.insert(nBinEnta0to50Per.end(), nBinEnta25to50Per.begin(), nBinEnta25to50Per.end());
114 std::vector<int> nBinEnta50to100Per;
115 for (
unsigned int it = 0; it < nBinEnta0to50Per.size(); ++it) {
116 nBinEnta50to100Per.push_back(nBinEnta0to50Per.at(nBinEnta0to50Per.size() - 1) + nBinEnta0to50Per.at(it) + 1);
119 nBinEnta0to100Per = nBinEnta0to50Per;
120 nBinEnta0to100Per.insert(nBinEnta0to100Per.end(), nBinEnta50to100Per.begin(), nBinEnta50to100Per.end());
124 for (
unsigned int i = 0; i < nBinEnta0to100Per.size() - 1; ++i) {
125 if (nBinEnta0to100Per.at(i) < nBinEnta0to100Per.at(i + 1)) {
126 double binval = tempEnta->GetBinLowEdge(i + 1) + tempEnta->GetBinWidth(i + 1);
127 if (TMath::Abs(binval) < 10e-5)binval = 0;