]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/cloneAODTreeAndRemoveObject.C
Updating ITS macros (Ruben)
[u/mrichter/AliRoot.git] / STEER / cloneAODTreeAndRemoveObject.C
index f7a911efbee92271d1fa1a08c8630bc7a89d6b15..f9ef6b8c46d1e704fec4cf3954c9740e8649cf69 100644 (file)
@@ -6,20 +6,25 @@ void cloneAODTreeAndRemoveObject(const char *newFileName = "AliAOD_new.root", co
   TFile orgFile(orgFileName, "READ");
   // get original TTree
   TTree *orgAodTree = (TTree*)orgFile.Get("aodTree");
-  // do your gymnastics with the old TTree
-  AliAODEvent *evOrg = new AliAODEvent();
-  evOrg->ReadFromTree(orgAodTree);
-
   // switch off one branch (and its subbranches!)
   orgAodTree->SetBranchStatus("tracks*", 0);
-  // remove TObject from the list
-  evOrg->RemoveObject(evOrg->GetTracks());
 
   // 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();