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