18int main(
int argc,
char *argv[])
21 const char *cHisFileName = argv[1];
22 std::cout <<
"Converting file " << cHisFileName << std::endl;
25 big = std::atoi(argv[2]);
28 std::string line, sListFileName, sHisFileName(cHisFileName), sRootFileName;
29 sListFileName = sHisFileName.substr(0, sHisFileName.length() - 3);
30 sListFileName.append(
"list");
31 sRootFileName = sHisFileName.substr(0, sHisFileName.length() - 3);
32 sRootFileName.append(
"root");
33 std::ifstream listFile;
34 listFile.open(sListFileName);
53 hisFile = std::fopen(cHisFileName,
"rb");
54 TFile *outFile =
new TFile(sRootFileName.c_str(),
"recreate");
56 while (std::getline(listFile, line)) {
61 std::cout <<
"processing line: " << line << std::endl;
62 HID = stoi(line.substr(0, 5));
63 dim = stoi(line.substr(5, 5));
64 hwpc = stoi(line.substr(10, 4));
66 minX = stoi(line.substr(31, 6));
67 maxX = stoi(line.substr(37, 6));
68 title = line.substr(54);
71 std::cout <<
"warning! more than 32 bit integer, expect bad behaviour" << std::endl;
74 std::getline(listFile, line);
77 minY = stoi(line.substr(31, 6));
78 maxY = stoi(line.substr(37, 6));
82 sHistName.Form(
"ID%d", HID);
83 TH2D *hist =
new TH2D(sHistName.Data(), title.c_str(), maxX - minX + 1, minX, maxX + 1, maxY - minY + 1,
87 for (
int iyChannel = 0; iyChannel <= maxY; iyChannel++) {
89 uint8_t data[bpc*(maxX+1)];
90 std::fread(&data[0], (
size_t)1, (
size_t)(bpc*(maxX+1)), hisFile);
92 for (
int ixChannel = 0; ixChannel <= maxX; ixChannel++) {
95 for (
int i=0; i<bpc; ++i) {
97 val += data[bpc*ixChannel+bpc-i-1]<<(8*i);
99 val += data[bpc*ixChannel+i]<<(8*i);
103 hist->SetBinContent(ixChannel+1, iyChannel+1, val);
104 hist->SetBinError(ixChannel+1, iyChannel+1, std::sqrt(val));
111 sHistName.Form(
"ID%d", HID);
112 TH1D *hist =
new TH1D(sHistName.Data(), title.c_str(), maxX - minX + 1, minX, maxX + 1);
116 uint8_t data[bpc*(maxX+1)];
117 std::fread(&data[0], (
size_t)1, (
size_t)(bpc*(maxX+1)), hisFile);
119 for (
int ixChannel = 0; ixChannel <= maxX; ixChannel++) {
122 for (
int i=0; i<bpc; ++i) {
124 val += data[bpc*ixChannel+bpc-i-1]<<(8*i);
126 val += data[bpc*ixChannel+i]<<(8*i);
130 hist->SetBinContent(ixChannel+1, val);
131 hist->SetBinError(ixChannel+1, std::sqrt(val));
139 if (first ==
"HID") {