First version

This commit is contained in:
David Baranyai 2018-09-14 11:34:16 +02:00
parent fd95f64811
commit 0150ac7a1f
3 changed files with 244 additions and 0 deletions

65
include/DetectorData.hpp Normal file
View File

@ -0,0 +1,65 @@
//
// DetectorData.hpp
// sipm_root
//
// Created by Baranyai David on 2018. 09. 10..
//
#ifndef DetectorData_hpp
#define DetectorData_hpp
#include <stdio.h>
#include <iostream>
#include <vector>
struct position
{
unsigned int x;
unsigned int y;
};
struct Data
{
double x;
double y;
double e;
int sipm;
double time;
std::istream& operator >> (std::istream& is)
{
is >> x >> y >> e >> sipm >> time;
return is;
}
};
std::istream& operator >> (std::istream& is, Data &d);
class DetectorData
{
private:
std::string name;
std::vector<Data> data;
unsigned int dSize;
public:
DetectorData();
DetectorData(std::string name1);
~DetectorData();
void AddData(const Data&);
void SetName(std::string);
int GetSipm(unsigned int);
Data GetHit(unsigned int) const;
std::string GetName();
unsigned int Size();
const std::vector<Data>* GetDataPointer() const;
void Clear();
};
#endif /* DetectorData_hpp */

112
sipm.cpp Normal file
View File

@ -0,0 +1,112 @@
#include "iostream"
#include "TH1D.h"
#include "TFile.h"
#include "TTree.h"
#include "TCanvas.h"
#include "TApplication.h"
#include "TTreeReader.h"
#include "TList.h"
#include "DetectorData.hpp"
#include "TCanvas.h"
int main(int argc, char* argv[])
{
TApplication App("tapp", &argc, argv);
TFile *inFile = new TFile("data.root");
std::vector<int> non_null_tree_indexes;
std::vector<TH1D*> histo;
std::vector<TCanvas*> canvas;
int counter = 0;
std::vector<DetectorData> data;
if(inFile -> IsOpen())
{
std::cout << "File opened successfully" << std::endl;
}
TList *list = inFile -> GetListOfKeys();
TIter iterator(list -> MakeIterator());
while(TObject * obj = iterator())
{
TTree *ttreeHelper;
Data dataHelper;
TKey * theKey = (TKey*)obj;
ttreeHelper = (TTree*)inFile -> Get(theKey -> GetName());
std::cout << "TTree name: " << theKey -> GetName() << std::endl;
ttreeHelper -> SetBranchAddress("x", &dataHelper.x);
ttreeHelper -> SetBranchAddress("y", &dataHelper.y);
ttreeHelper -> SetBranchAddress("e", &dataHelper.e);
ttreeHelper -> SetBranchAddress("sipm", &dataHelper.sipm);
ttreeHelper -> SetBranchAddress("time", &dataHelper.time);
unsigned int entryNumber = ttreeHelper -> GetEntries();
if (entryNumber != 0)
{
/*
* SiPM Tree - Name
* - Data - Hits 0
* - Hits 1 ...
*/
DetectorData detectorDataHelper(theKey -> GetName());
data.push_back(detectorDataHelper);
for(int i = 0; i < entryNumber; i++)
{
ttreeHelper -> GetEntry(i);
std::cout << "x = " << dataHelper.x << std::endl
<< "y = " << dataHelper.y << std::endl
<< "e = " << dataHelper.e << std::endl
<< "sipm = " << dataHelper.sipm << std::endl
<< "time = " << dataHelper.time << std::endl;
data[counter].AddData(dataHelper);
}
counter++;
}
}
for(int i = 0; i < data.size(); i++)
{
const char * c = data[i].GetName().c_str();
//histo.push_back(new TH2D(c, c, 100, 0, 5, 100, 0, 0.000015));
//histo.push_back(new TH2D(c, c, 100, 0, 5, 100, 0, 0.000015));
histo.push_back(new TH1D(c, c, 100, 0, 5));
histo.push_back(new TH1D(c, c, 100, 0, 5));
canvas.push_back(new TCanvas(c, c, 800, 600));
std::vector<Data> data_helper = *data[i].GetDataPointer();
for(int j = 0; j < data_helper.size(); j++)
{
if(data_helper[j].sipm == 1)
{
histo[i*2] -> Fill(data_helper[j].time);
}
else if(data_helper[j].sipm == 2)
{
histo[i*2 + 1] -> Fill(data_helper[j].time);
}
}
canvas[i] -> Divide(2,1);
canvas[i] -> cd(1);
histo[i*2] -> Draw("colz");
canvas[i] -> cd(2);
histo[i*2+1] -> Draw("colz");
}
App.Run();
}

67
src/DetectorData.cpp Normal file
View File

@ -0,0 +1,67 @@
//
// DetectorData.cpp
// sipm_root
//
// Created by Baranyai David on 2018. 09. 10..
//
#include "DetectorData.hpp"
DetectorData::DetectorData()
{
}
DetectorData::DetectorData(std::string name1)
{
name = name1;
dSize = 0;
}
DetectorData::~DetectorData()
{
}
void DetectorData::AddData(const Data& d)
{
data.push_back(d);
dSize++;
}
void DetectorData::SetName(std::string name1)
{
name = name1;
}
Data DetectorData::GetHit(unsigned int n) const
{
return data[n];
}
std::string DetectorData::GetName()
{
return name;
}
unsigned int DetectorData::Size()
{
return dSize;
}
void DetectorData::Clear()
{
dSize = 0;
name.clear();
data.clear();
}
int DetectorData::GetSipm(unsigned int num)
{
return data[num].sipm;
}
const std::vector<Data>* DetectorData::GetDataPointer() const
{
return &data;
}