Vector Читать из ttree is void [закрыто]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Vector Читать из ttree is void [закрыто]

Сообщение Anonymous »

Я пытаюсь прочитать TTREE из корневого файла и скопировать некоторые переменные в плоское дерево.
И это отлично работает для множества переменных (как для Recoe_numu и Recoe_nue в примере ниже), но когда он приходит к вектору какого -то пользовательского класса, я в конечном итоге в конечном итоге. /> Вот сокращенная версия моего кода, которая имеет одинаковое поведение: < /p>

Код: Выделить всё

#include 
#include 
#include 
#include 

#include 
#include 

#include "caf__SRTrack.h"
#include "caf__SRFDInt.h"
#include "caf__SRFD.h"
#include "caf__SRFDBranch.h"

using std::vector, std::cout, std::endl;

TFile *outFile = nullptr;

TTree *cafTree = nullptr, *outTree = nullptr;

template 
void LinkBranches(const char* bname, const char* newbname, T *var){
cafTree->SetBranchAddress(bname,var);
outTree->Branch(newbname,var);
}

int main(int argc, const char *const argv[]){

outFile = new TFile("flatTree2.root","recreate");
TFile infile("caf_new_sum_weighted.root");

cafTree = (TTree*) infile.Get("cafTree");
outTree = new TTree("flatTree","flatTree");

outTree->SetDirectory(outFile);

Float_t recoE_numu; LinkBranches("common.ixn.pandora.Enu.lep_calo","recoE_numu",&recoE_numu);
Float_t recoE_nue; LinkBranches("common.ixn.pandora.Enu.e_calo","recoE_nue",&recoE_nue);

vector tracks; cafTree->SetBranchAddress("fd.hd.pandora.tracks",&tracks);
outTree->Branch("tracks",&tracks);
unsigned long ntracks; cafTree->SetBranchAddress("fd.hd.pandora.ntracks",&ntracks);

int cafEntries = 1000; // I test my code only on the first entries, so that it doesn't take too long
//int cafEntries =  cafTree->GetEntries();
for (int i = 0; i < cafEntries; i++){
cafTree->GetEntry(i);

if ( i%100 == 0 ) {
cout  vector tracks = {caf::SRTrack(), caf::SRTrack()}
< /code>
Но в результате я получаю постоянный вектор размера 2, а атрибуты 2 треков, которые он содержит, являются постоянными (независимыми от события) случайными значениями. Корень, кажется, просто не может переписать вектор. g ++

 

Подробнее здесь: [url]https://stackoverflow.com/questions/79768589/vectorsomeclass-read-from-ttree-is-void[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»