ROOT logo
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