#include ; void copytree5() { //Double_t JPSI_refittedMass; //Get old file, old tree and set top branch address TFile *f = new TFile("/tmp/gouighri/MergentupleCDFD6E1.root","READ"); TTree *inputtree = (TTree*)f->Get("BmesonntupleCDF"); vector *pvec1(0); vector *pvec2(0); vector *pvec3(0); inputtree->SetBranchAddress("MassBd",&pvec1); inputtree->SetBranchAddress("TauBd",&pvec2); inputtree->SetBranchAddress("LxyBd",&pvec3); // here is my new ttree TFile *outputfile = new TFile("/tmp/gouighri/test111.root","recreate"); TTree *outputtree = new TTree("tree","tree with doubles"); double MassBd1; double TauBd1; double LxyBd1; outputtree->Branch("MassBd1",&MassBd1,"MassBd1/D"); outputtree->Branch("TauBd1",&TauBd1,"TauBd1/D"); outputtree->Branch("LxyBd1",&LxyBd1,"LxyBd1/D"); for(Long64_t entry = 0; entry < inputtree->GetEntries(); ++entry) { inputtree->GetEntry(entry); std::vector::iterator iter1 = pvec1->begin(); std::vector::iterator iter2 = pvec2->begin(); std::vector::iterator iter3 = pvec3->begin(); assert( pvec1->size() == pvec2->size() && pvec2->size() == pvec3->size() ); // ( pvec1->size() == pvec2->size() && pvec2->size() == pvec3->size() && pvec2->size() == pvec4->size() ); for( ; iter1 != pvec1->end(); ++iter1, ++iter2, ++iter3) { MassBd1 = (*iter1); TauBd1 = (*iter2); LxyBd1 = (*iter3); outputtree->Fill(); } } outputfile->Write(); outputfile->Close(); }