First version
This commit is contained in:
parent
fd95f64811
commit
0150ac7a1f
|
@ -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 */
|
|
@ -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();
|
||||
}
|
|
@ -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;
|
||||
}
|
Loading…
Reference in New Issue