Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <iostream>
- #include <fstream>
- #include <string>
- #include <vector>
- #include <sstream>
- #include <time.h>
- #include <math.h>
- #include <iomanip>
- #include <TTree.h>
- #include <TF1.h>
- #include <TApplication.h>
- #include "TH2.h"
- #include "TCanvas.h"
- using namespace std;
- int main()
- {
- TApplication tapp("Test", 0, nullptr);
- string fileName ="/home/kurbanov/dat-161208-230005.txt";
- //cout << "Enter the path to the file " << endl;
- //cin >> fileName;
- ifstream fileData(fileName);
- if (!fileData.is_open())
- {
- cout << "The file can not be opened, or it does not exist " << endl;
- exit(EXIT_FAILURE);
- }
- cout << "Start reading the file..." << endl;
- string currLine;
- stringstream currLineStream;
- vector<vector<double>> dataArr;
- vector<vector<double>> noiseArr;
- vector<vector<double>> prenoiseArr;
- int numC = 1;
- int tempBefore = 0;
- vector<double> sumHist;
- vector<double> rangStat;
- vector<double> meanVar;
- vector<double> meanRang;
- vector<double> premeanVar;
- vector<double> dispString;
- vector<vector<double>> calibr;
- int iter=1;
- calibr = {
- { 0.000351 , 1.091823 },
- { 0.000426 , 1.082093 },
- { 0.000724 , 1.992202 },
- { 0.000451 , 1.089559 },
- { 0.00048 , 1.993924 },
- { 0.000446 , 1.067797 },
- { 0.000601 , 1.986901 },
- { 0.000507 , 1.075548 },
- { 0.000768 , 1.966585 },
- { 0.000443 , 1.082903 },
- { 0.001169 , 1.966140 },
- { 0.000434 , 1.098456 },
- { 0.000609 , 2.002554 },
- { 0.000365 , 1.097464 },
- { 0.00051 , 2.027917 },
- { 0.000341 , 1.112693 },
- { 0.000555 , 2.011218 },
- { 0.000409 , 1.115200 },
- { 0.001046 , 1.965384 },
- { 0.000738 , 1.983089 },
- { 0.000824 , 1.995227 },
- { 0.000605 , 1.093794 },
- { 0.000609 , 2.038958 },
- { 0 , 0 },
- { 0.000488 , 1.104691 },
- { 0 , 0 } };
- TH1D *chHist[26];
- TH1* Hist =new TH1D("Sum", "Sum", 800, 0, 80);
- //TH1* Stat =new TH1D("Rang", "Rang", 26, 0, 26);
- //TH1D *Stat[100];
- for (int i = 0; i<26; i++)
- {
- char buf[100];
- sprintf(buf, "Channel %d", i);
- chHist[i] = new TH1D(buf, buf, 1000, 0, 100);
- }
- /*for (int i = 0; i<100; i++)
- {
- char buf[100];
- sprintf(buf, "String %d", i);
- Stat[i] = new TH1D(buf, buf, 26, 0, 26);
- }*/
- while (!fileData.eof())
- {
- while (numC != 3)
- {
- getline(fileData, currLine);
- if (fileData.eof())
- break;
- if (currLine[0] == '#' || currLine[0] == '\t')
- {
- continue;
- }
- double temp;
- vector<double> bufferData;
- vector<double> bufferNoise;
- currLineStream << currLine;
- currLineStream >> temp;
- currLineStream >> temp;
- currLineStream >> temp;
- int tempNow = temp;
- if (tempNow != tempBefore)
- {
- numC++;
- }
- tempBefore = temp;
- if (temp == 0)
- {
- while (!currLineStream.eof())
- {
- currLineStream >> temp;
- bufferData.push_back(temp);
- }
- dataArr.push_back(bufferData);
- }
- else
- {
- while (!currLineStream.eof())
- {
- currLineStream >> temp;
- bufferNoise.push_back(temp);
- }
- noiseArr.push_back(bufferNoise);
- }
- currLineStream.str("");
- currLineStream.clear();
- }
- //cout << dataArr << endl;
- if (numC == 3)
- {
- numC = 1;
- }
- //cout << noiseArr.size() << ebndl;
- if (noiseArr.size() > 1)
- {
- for (int j = 0; j < 26; j++)
- {
- double avgVar = 0;
- for (int i = 0; i < noiseArr.size(); i++)
- {
- avgVar += noiseArr[i][j];
- }
- avgVar /= noiseArr.size();
- meanVar.push_back(avgVar);
- }
- }
- if (prenoiseArr.size() != 0 && noiseArr.size() > 1)
- {
- for (int j = 0; j < 26; j++)
- {
- for (int i = 0; i < dataArr.size(); i++)
- {
- dataArr[i][j] = abs(dataArr[i][j] - meanVar[j] / 2. - premeanVar[j] / 2.);
- }
- }
- }
- if (noiseArr.size() > 1 && prenoiseArr.size() == 0)
- {
- for (int j = 0; j < 26; j++)
- {
- for (int i = 0; i < dataArr.size(); i++)
- {
- dataArr[i][j] = dataArr[i][j] - meanVar[j];
- }
- }
- }
- if (prenoiseArr.size() != 0 && noiseArr.size() < 2)
- {
- for (int j = 0; j < 26; j++)
- {
- for (int i = 0; i < dataArr.size(); i++)
- {
- dataArr[i][j] = dataArr[i][j] - premeanVar[j];
- }
- }
- }
- for (int i = 0; i < dataArr.size(); i++)
- {
- for (int j = 0; j < 26; j++)
- {
- if(dataArr[i][j] < 0)
- dataArr[i][j]=0;
- else
- dataArr[i][j] = dataArr[i][j] * calibr[j][0] + sqrt(dataArr[i][j])*calibr[j][1];
- //sum+=dataArr[i][j];
- //sum=sum/24.;
- //rangStat.push_back(dataArr[0][j]);
- }
- //sumHist.push_back(sum);
- }
- for(int j=0;j<dataArr.size();j++)
- {
- double mean=0;
- for(int i=0;i<26;i++)
- {
- if ( i == 23 || i == 25 )
- continue;
- mean+=dataArr[j][i];
- }
- mean=mean/24.;
- meanRang.push_back(mean);
- }
- for(int j=0;j<dataArr.size();j++)
- {
- double value=0;
- for(int i=0;i<26;i++)
- {
- if ( i == 23 || i == 25 )
- continue;
- value+=(dataArr[j][i]-meanRang[j])*(dataArr[j][i]-meanRang[j]);
- }
- value=sqrt(value/24.);
- dispString.push_back(value);
- }
- //for(int i=0;i<10;i++){ cout<<dispString[i]<<"\t"; }
- cout<<iter<<" Data pre "<<dataArr.size()<<endl;
- for(int i=0; i<dataArr.size();i++)
- {
- if(dispString[i]>0.6)
- {
- dataArr.erase(dataArr.begin() + i);
- dispString.erase(dispString.begin()+i);
- i--;
- }
- }
- cout<<" Data after "<<dataArr.size()<<endl;
- for(int j=0;j<dataArr.size();j++)
- {
- double value=0;
- for(int i=0;i<26;i++)
- {
- if ( i == 23 || i == 25 )
- continue;
- value+=dataArr[j][i];
- }
- value=value/24.;
- sumHist.push_back(value);
- }
- for (int i = 0; i<dataArr.size(); i++)
- {
- Hist->Fill(sumHist[i]);
- }
- //cout<<"size "<<dispString.size()<<endl;
- /*if(iter==1)
- {
- for (int i=0; i<24;i++)
- {
- for(int j=0;j<100;j++)
- {
- if(i==0)
- {
- //cout<<j<<" "<<dispString[j]<<endl; }
- Stat[j]->SetBinContent(i+1,dataArr[j][i]);
- }
- }
- }
- /*for (int i = 0; i < dataArr.size(); i++)
- {
- for (int j = 0; j < 8; j++)
- {
- cout << dataArr[i][j] <<'\t';
- }
- cout << endl;
- }
- for (Int_t i = 0; i<dataArr.size(); i++)
- {
- for (Int_t j = 0; j<26; j++)
- {
- chHist[j]->Fill(dataArr[i][j]);
- }
- }*/
- prenoiseArr = noiseArr;
- premeanVar = meanVar;
- sumHist.clear();
- meanVar.clear();
- dataArr.clear();
- noiseArr.clear();
- dispString.clear();
- meanRang.clear();
- iter++;
- //if(iter==10){ break; }
- }
- cout << "Reading file is complete." << endl;
- cout << "Data size " << dataArr.size() << endl;
- TCanvas c ( "test", "test" );
- /*chHist[0]->Draw();
- c.SetGridx();
- c.Print ( "/home/kurbanov/calibr.pdf(" );
- for ( int i = 1; i < 25; i++ )
- {
- chHist[i]->Draw();
- c.SetGridx();
- c.Print ( "/home/kurbanov/calibr.pdf" );
- }
- chHist[25]->Draw();
- c.SetGridx();
- c.Print ( "/home/kurbanov/calibr.pdf)" );*/
- Hist->Draw();
- c.SetGridx();
- c.Print ( "/home/kurbanov/sumcalibr.pdf");
- /*Stat[0]->Draw();
- c.SetGridx();
- c.Print ( "/home/kurbanov/rang.pdf(");
- for ( int i = 1; i < 99; i++ )
- {
- Stat[i]->Draw();
- c.SetGridx();
- c.Print ( "/home/kurbanov/rang.pdf" );
- }
- Stat[99]->Draw();
- c.SetGridx();
- c.Print ( "/home/kurbanov/rang.pdf)" );*/
- tapp.Run();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement