#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "TH2F.h" #include "TCanvas.h" #include "TPad.h" #include #include #include using namespace std; double SIGMA(double E, int j) { double A[2] = {0, 0}; double B[2] = {0.05, 0.05}; double C[2] = {0, 0}; return A[j] + B[j]*sqrt(E) + C[j]*E; } void sigmatree() { TRandom *r = new TRandom(); const int Ndet = 2; std::vector *e0 = new vector (); std::vector *e = new vector (); TFile *RootIn = TFile::Open("Sim.root","READ"); TTree *hIn = (TTree*) (RootIn->Get("Tree1")); TFile *RootOut = new TFile("SimRes.root","RECREATE"); TTree *hOut = new TTree("Tree1", "fwhm on"); hIn->SetBranchAddress("Edep", &e0); hOut->Branch("Edep", &e); long int NEvents = hIn->GetEntries(); double sigma; cout << "Number of Events: " << NEvents << endl; long int Step = (long int)(NEvents/10); for(long int i=0; iGetEntry(i); if (e0->size()>0){ for (int j=0; jsize(); j++) { sigma = SIGMA(e0->at(j),j); e->push_back(e0->at(j)+r->Gaus(0,sigma)); } } hOut->Fill(); } hOut->Write(); RootIn->Close(); RootOut->Close(); }