void cloneAODTreeAndRemoveObject(const char *newFileName = "AliAOD_new.root", const char *orgFileName = "AliAOD.root") {
// This little macro takes an already created AOD file and clones it.
// After removing an old brach, the new TTree is written to a new file.
// open input file and get the TTree
TFile orgFile(orgFileName, "READ");
// get original TTree
TTree *orgAodTree = (TTree*)orgFile.Get("aodTree");
// switch off one branch (and its subbranches!)
orgAodTree->SetBranchStatus("tracks*", 0);
// open new output file
TFile *newFile = new TFile(newFileName, "RECREATE");
// clone old TTree (only clones branches that are switched on)
TTree *newAodTree = orgAodTree->CloneTree();
// get the event within the new TTree
AliAODEvent *evNew = new AliAODEvent();
evNew->ReadFromTree(newAodTree);
// remove TObject from the list
evNew->RemoveObject(evNew->GetTracks());
// delete old and write new UserInfo
newAodTree->GetUserInfo()->Clear();
newAodTree->GetUserInfo()->Add(evNew);
// write new TTree to file
newAodTree->Write();
// close files
newFile->Close();
delete newFile;
orgFile.Close();
}
cloneAODTreeAndRemoveObject.C:1 cloneAODTreeAndRemoveObject.C:2 cloneAODTreeAndRemoveObject.C:3 cloneAODTreeAndRemoveObject.C:4 cloneAODTreeAndRemoveObject.C:5 cloneAODTreeAndRemoveObject.C:6 cloneAODTreeAndRemoveObject.C:7 cloneAODTreeAndRemoveObject.C:8 cloneAODTreeAndRemoveObject.C:9 cloneAODTreeAndRemoveObject.C:10 cloneAODTreeAndRemoveObject.C:11 cloneAODTreeAndRemoveObject.C:12 cloneAODTreeAndRemoveObject.C:13 cloneAODTreeAndRemoveObject.C:14 cloneAODTreeAndRemoveObject.C:15 cloneAODTreeAndRemoveObject.C:16 cloneAODTreeAndRemoveObject.C:17 cloneAODTreeAndRemoveObject.C:18 cloneAODTreeAndRemoveObject.C:19 cloneAODTreeAndRemoveObject.C:20 cloneAODTreeAndRemoveObject.C:21 cloneAODTreeAndRemoveObject.C:22 cloneAODTreeAndRemoveObject.C:23 cloneAODTreeAndRemoveObject.C:24 cloneAODTreeAndRemoveObject.C:25 cloneAODTreeAndRemoveObject.C:26 cloneAODTreeAndRemoveObject.C:27 cloneAODTreeAndRemoveObject.C:28 cloneAODTreeAndRemoveObject.C:29 cloneAODTreeAndRemoveObject.C:30 cloneAODTreeAndRemoveObject.C:31 cloneAODTreeAndRemoveObject.C:32 cloneAODTreeAndRemoveObject.C:33 cloneAODTreeAndRemoveObject.C:34 cloneAODTreeAndRemoveObject.C:35 cloneAODTreeAndRemoveObject.C:36 cloneAODTreeAndRemoveObject.C:37