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